Architekturdokumentation & -Kommunikation

#gleichrichtigmachen

Unbeliebte Arbeit, aber riesiger Mehrwert für Teams und System

Die Entwicklung von Softwaresystemen sind große und herausfordernde Vorhaben. Es müssen komplexe Strukturen und Lösungskonzepte entworfen werden, diese umgesetzt und die Systeme qualitätsgesichert, betrieben und gewartet werden. Teams, die an der Konstruktion und Umsetzung eines Softwaresystems arbeiten, müssen ein gutes Verständnis und gemeinsames Bild des Systems haben, denn nur so ist ein Ergebnis von hoher Qualität möglich. Eine Dokumentation der Architektur des Systems bildet dafür die Grundlage. Sie dient sowohl als persistenter Informationsspeicher, hilft Ideen zu präzisieren und dient als Kommunikationsmedium zwischen Teammitgliedern. Das macht Architekturdokumentation unverzichtbar.

Dennoch wird Architekturdokumentation in Projekten häufig vernachlässigt. Das liegt sowohl daran, dass unter Zeitdruck gerne Dokumentation geopfert wird, um gefühlt schneller ans Ziel zu kommen, als auch daran, dass viele Personen mit technischem Hintergrund einfach lieber Code als Dokumentation schreiben. Insgesamt leider eine wenig nachhaltige und mittelfristig sehr teure Praxis.

Das Gute ist, eine unpassende Architekturdokumentation lässt sich sehr viel schneller verbessern als eine unpassende Architektur. Und die Investition in sauberes Engineering und eine gute Dokumentation lohnt sich, denn die Vorteile durch eine zielgerichtetere Umsetzung und durch ein langlebigeres System auf Basis durch klare Strukturen und durchdachten Ansätzen wiegen die Zeitinvestition vielfach auf.

Leider fällt es vielen Menschen schwer, eine gute Architekturdokumentation zu schreiben. Zwar gibt es Vorlagen, die den Start erleichtern sollen, dennoch bleiben dadurch viele Fragen offen und die Umsetzung für das eigene System häufig eine Herausforderung. Wir helfen unseren Kunden, die Architekturen ihrer Systeme herauszuarbeiten und so zu dokumentieren, dass sie einen möglichst großen Mehrwert für das Vorhaben entfalten. Über unsere Erfahrungen, Tipps und Tricks für Architekturdokumentation schreiben wir regelmäßig Beiträge für unseren Blog. Diese erstrecken sich von den Grundlagen über die Strukturierung bis zu Details von einzelnen Diagrammelementen. So wollen wir anderen helfen, gut geeignete Architekturdokumentationen zu schreiben und im Projekt besser voranzukommen.

Architekturdokumentation aus der Praxis: Warum Dokumentation?

Wenn Ihr jetzt noch nicht überzeugt seid, dass gute Architekturdokumentationen eine absolute Notwendigkeit sind, dann lest unsere Brandrede für Architekturdokumentation. Hier berichten wir von unseren Beobachtungen zum Zustand von Architekturdokumentation, motivieren ausführlich, warum es gute Architekturdokumentationen braucht, und geben einige Tipps zur Arbeit an Architekturdokumentationen. Außerdem appellieren wir an unser Arbeitsethos als Software-Ingenieure, Dokumentation als wichtigen Teil unserer Arbeit anzusehen. So muss sich unser Qualitätsanspruch an unsere Arbeitsergebnisse, eben auch auf Architekturdokumentation erstrecken. Also, los geht’s, Architekturdokumentation ab jetzt in gut.

uch wenn wir uns dafür stark machen, Architekturdokumentation als Teil der Arbeit von Software-Ingenieuren zu begreifen, sehen wir ein, dass Dokumentation zu schreiben nicht jedermanns Sache ist (was nicht heißt, dass man es dann lassen sollte). Insbesondere der Anfang, wo es darum geht, eine solide Struktur aufzubauen und die wichtigsten Konzepte und Funktionsweisen präzise und kohärent zu beschreiben, fällt Vielen schwer.

Deswegen schlagen wir eine Rolle vor, die in solchen Projektsituationen helfen kann: Den „Architektur-Phantombildzeichner“. Angelehnt an Phantombildzeichner aus der Kriminalistik spricht sie mit den unterschiedlichen Stakeholdern im Projekt, findet die wichtigsten, architekturrelevanten Informationen heraus und erstellt basierend darauf eine Architekturdokumentationen, die die Grundlage für die künftige, gemeinsame Arbeit daran bildet. Der Artikel stellt die Rolle des Architektur-Phantombildzeichners ausführlich vor, beschreibt dessen Aufgaben und notwendige Skills und gibt konkrete Tipps zum Vorgehen. Es ist bestimmt keine Rolle für jede:n, aber eine mit großem Einfluss und Mehrwert; und die Freude und Dankbarkeit des Teams kann einem fast sicher sein.

Gute Doku, dankbares Team: Phantombildzeichner für Softwarearchitektur!

System schlägt Template: Wider Schema F bei Architektur-Dokumentationen

Eine der zentralen Eigenschaften einer guten Architekturdokumentation ist eine klare und gut verwendbare Struktur. Um die Angst vor dem weißen Blatt zu überwinden und eine Inspiration für eine Struktur zu bekommen, gibt es unterschiedliche Vorlagen, die man als Startpunkt verwenden kann. Leider erleben wir in unseren Projekten aber immer wieder eine totale Überfokussierung auf solche Templates, so dass das hauptsächliche Augenmerk darauf liegt, dass in allen Kapiteln etwas steht, anstatt die Architektur des Systems möglichst gut zu vermitteln. Deswegen empfehlen wir, sich bei der Strukturierung der Architekturdokumentation am System selbst zu orientieren, die Besonderheiten des Systems herauszuarbeiten und eine verständliche, nachvollziehbare Story zu erzählen, unterstützt durch sinnvolle Views und Diagramme. Im Artikel motivieren wir die Erstellung von spezifischen Strukturen für Architekturdokumentationen und diskutieren einige Prinzipien, die uns bei der Arbeit an Architekturdokumentationen leiten.
Eine Sicht auf Berge mit einer Bank zum Hinsetzen.

Sichtbar bessere Architekturdokumentationen

Alle Softwaresysteme, mit denen wir es in unserer täglichen Arbeit zu tun haben, sind so komplex, dass es nicht möglich ist, eine Darstellung zu finden, die alle Aspekte des Systems hinreichend erfasst, so dass man noch sinnvoll damit arbeiten kann. Stattdessen verwenden wir Sichten, in denen wir uns auf bestimmte Aspekte konzentrieren und ganz absichtlich andere Aspekte, sowie tiefergehende Details weglassen, weil die uns gerade nicht interessieren. In diesem Artikel geben wir Tipps und Hinweise zur Arbeit mit Sichten in Architekturdokumentationen, darunter beispielsweise die Verwendung von Sichten zur Beschreibung von Architekturkonzepten, Umgang mit der Model-Code-Gap oder die Unterscheidung von Laufzeit und Entwicklungszeit. So können Sichten helfen, klar fokussiert zu vermitteln, was das System ausmacht und wie es funktioniert.
In unseren Projekten sehen wir sehr häufig zu wenig Architekturdokumentation; manchmal gibt es aber auch den Fall, dass Unmengen an Dokumentation existieren, die zwar fachlich korrekt, aber total unspezifisch für das betreffende System ist. Da wird über dutzende Seiten erklärt, was Microservices sind, was Event-Orientierung ausmacht oder wie REST funktioniert. Das ist natürlich nicht Sinn der Sache und ein absolutes Anti-Pattern. In diesem Artikel erklären wir, warum dieses Vorgehen so schädlich ist und wie man vermeidet, dass dieses Anti-Pattern bei einem selbst zuschlägt. Architekturdokumentation kann man nicht aus Büchern abschreiben, denn nur spezifische Architekturdokumentationen bringen echten Mehrwert.

Architekturdokumentation niemals aus Büchern abschreiben!

In unseren Artikeln widmen wir uns auch konkreten Inhalten und einzelnen Kapiteln der Architekturdokumentation. In diesem Artikel befassen wir uns mit der Kontextabgrenzung. Die Kontextabgrenzung ist eines der ersten lösungsorientierten Kapitel der Architekturdokumentation und zeigt das System als Black Box in seinem Kontext mit interagierenden Nutzer-Gruppen und Systemen. In diesem Artikel zeigen wir ein konkretes Beispiel für eine Kontextabgrenzung, zusammen mit einigen hilfreichen Empfehlungen für deren Gestaltung. Darunter beispielsweise die darzustellenden Systemteile, Organisationsgrenzen, Größenordnungen oder zu verwendende Pfeile. So holt man das meiste aus den Kontextabgrenzungen heraus.

Architekturdokumentation aus der Praxis: Kontextabgrenzung

Dein Konzepte-Kapitel ist zu kurz. Arbeite dran.

In den meisten Architekturdokumentationen, die wir so sehen, werden (wenn es gut läuft) die Kapitel der Initialzerlegung des Systems (Bausteinsicht, Verhaltenssicht, Verteilungssicht) bearbeitet; der Bereich für Architekturkonzepte wird meist nur rudimentär gefüllt. Das ist ungünstig, denn der Bereich für Architekturkonzepte ist der lebendige Teil der Architekturdokumentation, der während der Entwicklung kontinuierlich wächst, indem sukzessive neue Konzepte für die zahlreichen Herausforderungen und Anforderungen unterschiedlichster Art entstehen. In diesem Artikel geben wir zahlreiche Tipps für die Gestaltung des Kapitels und konkrete Beispiele für die Beschreibung von Architekturkonzepten. Denn die Initialzerlegung ist nur die halbe Miete, die eigentliche Musik im Design des Systems spielt im Kapitel Architekturkonzepte.

Hier bekommt ihr Tipps bis auf die Detailebene. In diesem Artikel diskutieren wir Pfeile und deren Verwendung in Architekturdiagrammen. Es geht um Pfeil-Arten, Beschriftungen, Pfeilrichtungen, Pfeilquellen und -Ziele. Anhand von zahlreichen Beispielen geben wir Tipps und Hinweise, wie Pfeile in Architekturdiagrammen so verwendet werden können, dass ihre Bedeutung deutlich wird und sie damit zu einer klaren Beschreibung des Systems beitragen.

Ein schlecht auf die Straße geklebter Pfeil

Wie man einen Pfeil malt

Wenn es einen Artikel zu Pfeilen gibt, muss es natürlich auch einen Artikel zu Kästchen geben. Kästchen repräsentieren die unterschiedlichen Einheiten, aus denen Systeme aufgebaut sind, während der Laufzeit, bei der Entwicklung und für das Deployment und den Betrieb. In diesem Artikel geben wir Hinweise zur Verwendung von Kästchen in Architekturdiagrammen, zur Art und Kennzeichnung von Kästchen, Kardinalitäten, logischen und manifestierten Kästchen und zu unterschiedlichen Darstellungsarten.

Wie man Kästchen malt

Du möchtest mit uns über Architektur, Dokumentation und Kommunikation sprechen? Dann melde dich bei uns.