Yearly Archives

2019

Stefan Zörner live beim Special Day „Architektur“ der Java User Group Hamburg

By | Publikationen, Vorträge | No Comments

Architektur auf dem Bierdeckel – Eure Lösung in kurz und knackig

duke_JUG_Hamburg

„Architektur auf dem Bierdeckel – Eure Lösung in kurz und knackig“
Sprecher: Stefan Zörner
Special Day „Architektur“ der Java User Group Hamburg
Donnerstag, 19. September 2019, 14:00 bis 20:00
COYO GmbH, Gasstraße 6A, 22761 Hamburg

Foliendownload (PDF)

 

Viele interessieren sich für Eure Softwarelösung oder zumindest für Teilaspekte Eurer Lösung: Neue im Team, teamfremde Kollegen, Manager, Kooperationspartner … – Wie gebt Ihr diesen Leuten einen prägnanten Einstieg?

In dieser Session erfahrt Ihr, wie Ihr Schritt für Schritt einen prägnanten Architekturüberblick anfertigt. Ich diskutiere, was mindestens dazu gehört, welche Konzepte helfen, und welche Formate, Notationen und Werkzeuge sich in unterschiedlichen Situationen bewähren. Ihr lernt wie Ihr Euren Überblick aktuell haltet und in welchen Situationen Ihr besser mehr parat habt als das Minimum.

Der Vortrag ist gespickt mit Erfahrungswissen, Rezepten und Beispielen. Als Schmankerl zeige ich, wie ein methodisch clever gemachter Überblick es nicht nur ermöglicht, Eure Architektur wirkungsvoll zu kommunizieren. Sondern sie auch zu reflektieren und Risiken aufzudecken. Ob wir dabei mit den 107mm Durchmesser eines Bierdeckels auskommen, lasse ich hier mal offen …

follow us on Twitter – @embarced

Workshop auf dem Software Architektur Summit 2019 in Berlin

By | Publikationen, Vorträge | No Comments

„Softwarearchitektur automatisiert testen“
Sprecher: Sandra Parsick und Stefan Zörner
Software Architecture Summit 2019
Montag, 16. September 2019, 10:15 – 13:00 Uhr
H4 Hotel Berlin Alexanderplatz
@SoftwArchSummit #SoftwareArchitectureSummit

Source- Code & Demoanwendung auf Github
Foliendownload (PDF)

Nicht-manuelle Tests stellen die Qualität einer Softwarelösung auf effiziente Weise sicher und sind Standard in der Software-Entwicklung. Auch weil die Automatisierung in der Regel zu Fehlern und anderen Unschönheiten früher Rückmeldung gibt. Der Ansatz ist auf verschiedenen funktionalen Ebenen gängig — Unit-Tests, Modul-Tests, Integrationstests…

Wäre es nicht toll, auch Aspekte Eurer Softwarearchitektur automatisch testen zu können? Was heißt es überhaupt, Eure Architektur zu testen? In diesem Workshop diskutieren wir zunächst kurz verschiedene Ansatzpunkte und Möglichkeiten dazu. Und wir räumen mit Mythen und Missverständnissen auf. So ist eine Überprüfung, ob eine Implementierung bestimmte Vorgaben einhält, zwar für einzelne Aspekte problemlos möglich, wenn aber die Vorgaben nichts taugen ist das Ergebnis gleichzeitig uninteressant (und die Tests sind Verschwendung). Konsequenterweise konzentrieren wir uns anschließend auf effektive Ansätze aus dem Chaos Engineering und Fitness Functions. Denn diese können bei richtiger Anwendung die Wirksamkeit Eurer Architekturansätze langfristig absichern. Sie erlauben zudem eine zielgerichtete Weiterentwicklung Eurer Softwarelösung. Anders als typische Literatur über Evolutionäre Architekturen hören wir nicht da auf, wo es konkret wird, sondern zeigen Real World-Beispiele und Implementierungsoptionen im Freiflug. Interaktive Elemente und die Anwendung der Konzepte auf Eure Softwarelösungen runden den Workshop ab.

follow us on Twitter – @embarced

embarc echo – September 2019

By | Allgemein, echo | No Comments

Impulse aufgreifen – embarc echo

Lassen Sie sich von unseren aktuellen Konferenzbeiträgen und Publikationen im Web & in gebundener Form inspirieren. Wir haben Tipps für Ihren Einstieg in das Thema Machine Learning und Referenzwissen für ein modernes Web-Frontend direkt zum Download. Außerdem stellen wir Ihnen unsere neue Kollegin vor und werfen einen Blick auf künftige Termine & Veranstaltungen. Finden Sie in gewohnt kurzer Form frische Anregungen für Ihre Projekte!

Download embarc echo September 2019 (PDF, 8 Seiten)

follow us on Twitter – @embarced

Buch Vorgehensmuster für Softwarearchitektur, 3. Auflage

By | Bücher, Publikationen | No Comments

Stefan Toth stellt leichtgewichtige Bausteine guter Architekturarbeit vor, die problemorientiert eingesetzt werden können um das eigene Projekt zu verbessern. Es gibt kein „tailoren“, keine mehrere hundert Seiten dicke Spezifikation oder unpassende Checklisten. In der bewährten Struktur von Mustern wird ein übliches Problem aus dem Projektalltag geschildert und mit einer methodischen Lösung versehen.

Read More

CONNECT: Verbinden (5C Design, Teil 5)

By | Allgemein, Inhaltliches | No Comments

Durch Verwendung einer Schnittstelle eines anderen Bausteins kommt es immer zu Abhängigkeiten. Plane explizit zwischen welchen Bausteinen es welche Art von Abhängigkeit geben soll.

  1. Software-Entwurf: Ein Blick zurück und nach vorn
  2. CUT: Richtig schneiden
  3. CONCEAL: Verbergen
  4. CONTRACT: Schnittstelle festlegen
  5. CONNECT: Verbinden
  6. CONSTRUCT: Aufbauen
  7. Its a Wrap: Zusammenfassung

Damit ein System, das in seine Einzelteile zerlegt wurde, in Summe das gewünschte große Ganze ergibt, müssen seine Einzelteile miteinander interagieren. Diese Interaktionen erzeugen Verknüpfungen, die wiederum die einzelnen Teile in Abhängigkeiten zueinander bringen. Vereinfacht gesagt sind bei Änderungen, die nach außen wirksam sind, die angebundenen Module immer zu berücksichtigen. Diesen Aspekt gilt es möglichst klein zu halten. Die Abhängigkeiten können unterschiedliche Bereiche betreffen:

  • Daten und Formate: Ein Consumer muss das Format des Providers einer Schnittstelle verstehen. Bei Änderungen daran ist der Consumer ebenfalls betroffen.
  • Zeit: Wenn der Consumer seine Arbeit nur abschließen kann, wenn der Provider im selben Moment auch gerade verfügbar ist, so ist seine Verfügbarkeit auf Zeiten limitiert, in denen der Provider ebenfalls verfügbar ist. In dem Fall kommt es zu einer zeitlichen Abhängigkeit zwischen den Modulen.
  • Technologie: Ist der Consumer in der technologischen Auswahl seiner Implementierung auf irgendeine Weise eingeschränkt? Ein Netzwerkprotokoll wie Java RMI wirkt beispielsweise einschränkender als eine REST-Integration auf Basis des HTTP-Protokolls.
  • Ausführungsort: Ist es zur Interaktion nötig, dass die Module auf derselben (virtuellen) Maschine laufen, so sind sie was den Ausführungsort angeht eingeschränkt. Bei Kommunikation innerhalb der Grenzen des eigenen Prozesses ist dies beispielsweise so.

Diese technischen Abhängigkeiten ziehen in weiterer Folge Abhängigkeiten auf der organisatorischen Ebene nach sich. Ein Unternehmen, das zur Weiterentwicklung seiner Software überdurchschnittlich viele Meetings benötigt wäre ein Beispiel, wo sich diese Auswirkungen zeigen. Das und ein gezwungenermaßen hohes Maß an Bürokratie sind Indizien dafür, dass man die Abhängigkeiten innerhalb der Software nicht mehr im Griff hat.

Zur Vermeidung von Missverständnissen: Wenn Interaktion nötig ist, ist es nicht möglich, Abhängigkeiten völlig zu vermeiden. Und: Interaktion wird nötig sein. Es gilt die negativen Auswirkungen von Abhängigkeiten durch geschickten Architekturentwurf im Zaum zu halten. Ein bekanntes Entwurfsprinzip, dessen Befolgung dabei hilft, ist das Prinzip der azyklischen Abhängigkeiten. In einem Entwurf wo Module zyklisch voneinander abhängig sind, sind diese Module von jedem anderen in diesem Zyklus direkt oder indirekt abhängig. Diese Situation birgt hohe Risiken von unerwünschten Seiteneffekten bei Änderungen. Daher der Grundsatz Strukturzyklen möglichst zu vermeiden.

Kaskadierende Abhängigkeiten

Ebenfalls problematisch sind sogenannte Kaskadierende Abhängigkeiten. Dabei pflanzt sich ein und dieselbe Abhängigkeit, über die jeweiligen Modulgrenzen hinaus über weitere Abhängigkeiten zu weiteren Modulen fort. Mit anderen Worten: Was auch immer diese Abhängigkeit betrifft, sei es ein Datenformat oder eine Technologie, man wird sie nur ändern oder entfernen können indem man Änderungen am gesamten System vornimmt. Die folgende Grafik illustriert das:

Das Schnittstellenformat, das Baustein A anbietet, wird von den Bausteinen B und C selber wiederum intern benützt. Weiters kommen einzelne Aspekte dieser Schnittstelle in den externen Schnittstellen der Bausteine B und C wieder vor, wodurch sie sich auf deren Consumer (in diesem Fall D, E, F und G) ausbreiten. Eine Änderung der Schnittstelle des Bausteins A zieht dann eine Kaskade an Änderungen nach sich, die schließlich das gesamte System betreffen. Um so etwas zu verhindern bietet sich die Anwendung des Integrationgsmusters Anti-Corruption Layer aus dem Domain-Driven-Design an, das in der folgenden Grafik dargestellt ist. Dabei kommuniziert ein Consumer nur über einen solchen Layer mit seinem Provider, der das Modell des Providers in sein eigenes Format konvertiert.

Wenn Sie den Empfehlungen dieser Blog-Serie beim Entwurf Ihres Systems bis hierhin gefolgt sind kann es sein, dass Ihr Entwurf bereits aus einer sehr großen Zahl an Modulen besteht. Eine hohe Anzahl an Modulen kann, auch wenn diese jeweils wunderbar gekapselt sind, wiederum unübersichtlich werden. Sie tun dann gut daran, wiederum dieselben Regeln anzuwenden, allerdings eine Abstraktionsebene höher. Dies bringt uns zum nächsten Beitrag dieser Reihe: „CONSTRUCT: Aufbauen“.

Moin Moin!

By | Allgemein | No Comments

Ich bin als Organisationsentwicklerin im Bereich neue Arbeitswelten, Selbstorganisation und (IT-)Strategie unterwegs. Und seit Mitte August bei embarc mit an Bord! Wenn ich mit Menschen arbeite, die selbst etwas bewegen wollen..

Read More

Moderne Frontend Architektur – auf dem Java Forum Nord 2019

By | Vorschau | No Comments
„Moderne Frontend-Architektur für Single-Page Applications“

Logo Java Forum Nord
Moderne Frontend-Architektur für Single-Page Applications
Sprecher: Oliver Zeigermann
Vortrag auf dem Java Forum Nord 2019
Donnerstag, 24. September 2019
Hannover Congress Centrum, Theodor-Heuss-Platz 1-3, 30175 Hannover
@JavaForumNord

Architektur verstehen wir als Summe wichtiger Entscheidungen. Entscheidungen, die ein Projekt scheitern lassen können.

Anhand von typischen Anforderungen an ein Single-Page Application (SPA) Projekt gehen wir in dieser interaktiven Session durch die Auswahl des Frameworks (oder keines) und klären wie man einen Anwendungsteil in Komponenten aufteilt und diese zusammensetzt.

Anschließend sehen wir uns an, wie man für eine Anwendung im größeren Stil eine SPA in möglichst unabhängige Teile zerlegen und dann wieder zu einem möglichst konsistenten Ganzen zusammenführen kann.

Du lernst einen Prozess kennen, mit dem du die Anforderungen einer SPA erfasst und dazu die passende Architektur bestimmst.

Java Forum Nord 2019

Evolutionäre Architekturen und Fitness Functions – Rene Weiß auf der Basta!

By | Vorschau | No Comments

Am 26. September 2019 gibt René Weiß Einblicke & Ansätze, wie der Einsatz von Fitness Functions bei der Softwareentwicklung helfen kann:

Evolutionäre Architekturen und Fitness Functions – ein pragmatischer Zugang!

„Evolutionäre Architekturen und Fitness Functions – ein pragmatischer Zugang!“
Sprecher: René Weiß
Basta!
Donnerstag, 26. September 2019, 17:00 – 18:00 Uhr
Rheingoldhalle Mainz (Anfahrt)
@BASTAcon

Evolutionäre Architekturen? Fitness Functions? Wie können diese Ansätze bei der (Weiter-) Entwicklung von Software helfen? Moderne Software-Systeme werden iterativ entwickelt und im Betrieb aktiv erweitert und verbessert. Dabei ist es essentiell wichtig zu wissen, ob das System die geforderten Qualitäten, wie z.B. Performance, Sicherheit, Wartbarkeit, Fehlertoleranz usw. erfüllt. Fitness Functions ermöglichen die Software-Architektur dahingehend zu testen und gezielt und inkrementell weiterzuentwickeln.

René Weiß geht in seinem Vortrag auf mögliche Einsatzbereiche von klein & pragmatisch bis hin zu den großen Tools im Bereich des Chaos Engineerings bei Netflix & Co ein. Praktische Beispiele mit live Coding zeigen zudem Umsetzungsmöglichkeiten in CI/CD Pipelines, evolutionäre Experimente mit A/B Testing auf Code-Ebene oder Mini-Chaos-Engineering.

Dieser Talk richtet sich an Entwickler und -Architekten, die praktische Ideen für den Einsatz von Fitness Functions kennenlernen möchten.

Zur Basta! 2019

follow us on Twitter – @embarced

JUG Darmstadt: Die neue Schule der Softwarearchitektur

By | Vorschau | No Comments

Die neue Schule der Softwarearchitektur

JUG_darmstadt_logo

„Die neue Schule der Softwarearchitektur“
Sprecher: Stefan Toth
Vortrag bei der Java User Group Darmstadt
26. September 2019, 18.30 – 20.00 Uhr
Accso GmbH, Berliner Allee 58, 64295 Darmstadt (Anfahrtsbeschreibung)
@JUG_DA

In der heutigen Architekturpraxis sind unterschiedliche Denkschulen und Hintergründe anzutreffen. Vertreter der klassischen Architektursicht gehen dabei drastisch anders mit Architekturproblemen um als es Vertreter der neuen Schule machen, die in Start-ups und IT-First-Unternehmen zu finden sind.

In dieser Session stellt Stefan Toth die Sichtweisen, Konzepte, technischen und organisatorischen Prinzipien der beiden Ansätze einander gegenüber und diskutiert die Auswirkungen und wichtigsten Vorteile sowie Nachteile. Evolutionäre Architekturansätze, Eventual Integrity, geringe Zähigkeit als Möglichkeit der weichen Governance, Servant-Leadership-Modelle für Architekten, breite Verantwortung und Crowd-Sourcing-Ideen für technische Teilaspekte sind ein Thema. Stefan möchte auch diskutieren, inwiefern Themen der klassischen Architekturschule aufgeweicht werden – konkret Konzepte wie Zentralisierung und Wiederverwendung.

Zur Veranstaltung