Software-Architektur

Event Storming aus der Sicht eines Testers

Event Storming ist im Domain-driven Design eine gute Methode, ein gemeinschaftliches Verständnis aller Projektbeteiligter bezüglich der Anwendungsdomäne zu erlangen und dabei ein Prozessmodell zu erstellen. Oft wird dabei aber außer Acht gelassen, dass die dabei entwickelten Informationen nur mit wenig Aufwand direkt in automatisierbare Testfälle transformiert werden können. Daher soll hier die Frage beantwortet werden, wie die verschiedenen Modellierungspattern des Event Stormings in sinnhafte Behavior-driven-Design-Testfälle umgesetzt werden können.

Hearts ist Trumpf! Entwurf einer funktionalen Softwarearchitektur

Der Entwurf von nachhaltigen Softwarearchitekturen ist eine Herausforderung: Mit der Größe steigt in vielen klassisch objektorientierten Softwareprojekten die Komplexität überproportional an. Durch viel Disziplin und regelmäßige Refaktorisierungen lässt sich das Problem eine Weile in Schach halten, aber die wechselseitigen Abhängigkeiten und komplexen Abläufe von Zustandsveränderungen nehmen mit der Zeit trotzdem zu. Die funktionale Softwarearchitektur geht an die Strukturierung großer Systeme anders heran als objektorientierte Ansätze und vermeidet so viele Quellen von Komplexität und Wechselwirkungen im System.

Von der Entstehung eines Monolithen und dem Versuch, ihn zu zerlegen

Bei der Entwicklung von Softwaresystemen und -architekturen gibt es verschiedene Ansätze und Paradigmen, die jeweils kontextabhängige Vor- und Nachteile haben. Zu gerne folgen wir bei der Beurteilung von Architekturen entweder unseren persönlichen Vorlieben oder wir verurteilen Lösungen, die nicht mehr State of the Art oder zu komplex sind, um sie mit überschaubarem Aufwand zu überblicken. Eine objektive Beurteilung einer gewachsenen Architektur kann aber nur auf einer strukturierten und sachlichen Analyse basieren.

Ubiquitous Language: Warum ist Sprache so wichtig?

Ein Element, das in der gesamten Domain-driven-Design-Literatur querschnittlich präsent ist, ist die Ubiquitous Language, die allgegenwärtige Sprache. Allgegenwärtig bezieht sich darauf, dass es sich hierbei um eine Sprache handelt, die von Softwareentwickler*innen und Fachexpert*innen gemeinsam gesprochen wird. Diese Sprache soll dann auch die Basis für die Entwicklung des Softwaremodells sein. Im Rahmen dieses Artikels gehen wir erst auf die Motivation für die Etablierung einer Ubiquitous Language ein, bevor schließlich das Potenzial und die Möglichkeiten für die Arbeit mit einer solchen Sprache vorgestellt werden. Weiterhin werden noch kurz die Vorgehensweisen zur Herleitung einer Ubiquitous Language erläutert.

JavaScript, eine Buchrezension und Softwarearchitektur – Unsere Top-Themen der Woche

Die vergangene Woche haben wir wieder eine Fülle an Interviews zum Thema „25 Jahre Java“ veröffentlicht. Begleitet wurden sie von einer Buchrezension zu „Java Performance“ und spannenden Artikeln zu Softwarearchitektur. Aber auch JavaScript hat bei uns seinen Platz bekommen und wartete mit einem Tutorial für Einsteiger auf. Unsere Top-Themen der Woche.

Revolution oder Evolution in der IT: Warum manchmal eine Modernisierung reicht

Heute ist oft von digitaler Transformation oder der vierten industriellen Revolution die Rede. Doch sind revolutionäre Umbrüche der richtige Weg zu einer zeitgemäßen IT? Sollte man gut funktionierende Legacy-Systeme einfach über Bord werfen? Dieser Artikel stellt die Modernisierung bestehender Systeme als pragmatische, risikoarme und günstige Alternative vor.

Algorithmen in der Java-Praxis: Sortier- und Suchalgorithmen

Sortier- und Suchalgorithmen gehören zu den Basisalgorithmen und sind in vielen Klassenbibliotheken implementiert. Muss man sehr umfassende Datenbestände sortieren oder in diesen suchen, spielt die Vorgehensweise aus Gründen der Performance eine wichtige Rolle. Parallel Computing kann das Sortieren beschleunigen. Auch diese Verfahren basieren auf den Basisverfahren. Es gibt also genügend Gründe, diesen auf den Grund zu gehen.

Algorithmen als Kernelemente des Programms – Definition und Klassen

Am Anfang der Ausbildung oder des Studiums hat man sich intensiv mit Algorithmen beschäftigt. Man hat etwas über formale Anforderungen gehört und die Verfahren in Lösungsklassen eingeteilt. Danach rücken die Fragen rund um Algorithmen meist in den Hintergrund, obwohl deren Anwendung und Entwicklung der Kern einer jeden Software sind. Zeit, die Grundlagen und neuere Entwicklungen auf den aktuellen Stand zu bringen.

Infrastrukturen und Organisation

Im ersten Teil dieser Serie haben wir ein Projekt vorgestellt, das ein Antragsverfahren für Bürger beinhaltet, und die Gründe für die Architekturentscheidungen für Microservices und Workflow-Engine beschrieben. Diesmal stellen wir die im Rahmen des Projekts verwendete bzw. entstandene Infrastruktur vor und beleuchten organisatorische Aspekte.

Gegen den Trend: Plädoyer für mehr ganzheitliche Architekturarbeit in der IT

Architekturarbeit in der IT ist seit vielen Jahren ein schwieriges und häufig missverstandenes Thema. Dazu kommt, dass die Effekte der Hyperspezialisierung und Technologieexplosion dazu führen, dass IT-Architekturen die eigentliche Problemstellung oft immer schlechter unterstützen. Man findet immer häufiger One-Size-fits-all-Lösungen oder rein hypegetriebene Architekturen. Trotzdem deutet nichts auf eine Umkehr dieses Negativtrends hin. Zeit für eine Bestandsaufnahme und einen Blick auf die daraus resultierenden Probleme für die Architekturarbeit.

Aufbau von evolutionären Architekturen

Die einzige Garantie in der Softwareentwicklung ist der Wandel. Viele der heutigen Tools, Technologien und Geschäftsmodelle werden bald nicht mehr existieren, sondern durch neuere ersetzt werden. Doch wie lässt sich in diesen sich ständig ändernden Zeiten in Sachen Architektur langfristig planen? Evolutionäre Architektur kann hierbei die Lösung sein, sagt Patrick Kua (N26) in seiner Session auf der W-JAX 2019 und erklärt, was es damit auf sich hat.

Einführung in Quarkus, Gradle 6.0 & Verkauf von Docker Enterprise – Unsere Top-Themen der Woche

Ein Wal, ein Elefant & ein neuer JEP – in der vergangenen Woche ging es auf JAXenter wieder hoch her! Das Unternehmen Docker, Inc. hat die Enterprise-Sparte inklusive des 300-köpfigen Teams und der 750 Kunden an das Cloud-Unternehmen Mirantis verkauft. Das Build Tool Gradle hat Version 6.0 erreicht und mit JEP 369 wird GitHub die Hosting-Plattform für Java.

  • 1
  • 2