Der Architecture Communication Canvas
Kurz, kürzer, Canvas: Sparsame Dokumentation, neu gedacht
Sie glauben, Architekturdokumentation sei umständlich und dauere viel zu lange? Hier beweisen wir Ihnen das Gegenteil.
Die Grundidee: auf kleinstem Raum strukturierte Informationen zu einem spezifischen Thema sammeln und visualisieren. Dieser Ansatz hat vor einigen Jahren mit dem Business Model Canvas (BMC) Aufsehen erregt [1]. Das Buch dazu wurde millionenfach verkauft und gilt als Klassiker für moderne Unternehmen und Start-ups. Ein Grund für diesen Erfolg liegt in der Reduktion auf ein Minimum an Informationen: Der BMC lässt einfach keinen Platz für viel Text und zwingt Sie zur Konzentration auf das Wesentliche.
Seit dem BMC im Jahre 2010 sind eine Reihe weiterer Canvas-Modelle hinzugekommen, etwa der Lean UX Canvas, der Product Design Canvas oder der für Fans von Domain-driven Design hilfreiche Bounded Context Canvas (s. Abb. 1) [2].
Was ist überhaupt ein Canvas?
In der Softwareentwicklung, insbesondere in der Entwicklung grafischer Systeme, ist der Begriff "Canvas" durch UI-Frameworks (wie Java2D, JavaFX, WPF, wxPython oder HTML5) als Zeichenfläche bekannt, auf dem grafische Elemente gezeichnet bzw. programmiert werden können. Für unser Thema "kompakte Dokumentation" erklären wir den Canvas deswegen etwas anders:
Ein Canvas ist eine strukturierte Aufbereitung von Schlüsselelementen eines Themas.
Veranschaulichen wir diese Definition noch genauer:
Canvas: Strukturierte Aufbereitung...
"Strukturierte Aufbereitung" meint die grafische Anordnung bestimmter Informationskategorien. Betrachten Sie Abb. 2, in der wir ein paar Informationskategorien (wie Geographie, Wirtschaft, Kultur etc.) über Städte und Länder "strukturiert angeordnet" haben.
... von Schlüsselelementen eines Themas
"Schlüsselelemente" sind wichtige Informationen zu einem Thema. Das können Geschäftsmodelle sein, wie beim Business Model Canvas, oder eben wichtige Informationen zu einem Softwaresystem. Die Konzentration auf wesentliche Elemente kennen wir auch als "Abstraktion" oder Modellbildung – also dem Weglassen von Details. Solche Modelle dienen einem konkreten Zweck und welche Elemente ein Modell jeweils hervorhebt, hängt genau von diesem Zweck ab. Für das Beispiel der Städte und Länder haben wir die Geschichte, berühmte Persönlichkeiten, volkswirtschaftliche Kennzahlen und vieles anderes weggelassen.
Der Vorgänger: Steckbrief
Die Idee solcher Verkürzung haben sich schon frühere Generationen zunutze gemacht und sogenannte "Steckbriefe" verfasst. Ursprünglich dienten diese dazu, eines Verbrechens verdächtige Personen zu finden. Heute nutzen wir Steckbriefe als Zusammenfassung wesentlicher Fakten über Personen, Orte oder Ereignisse. Wie so etwas aussehen könnte, haben wir in Abb. 3 beispielhaft skizziert.
Aber zurück zu Software und IT. Dort können Sie einen Canvas und im Speziellen den Architecture Communication Canvas für die technische Dokumentation Ihrer Systeme verwenden.
Dafür gibt es doch schon arc42?!
Natürlich können Sie das arc42-Template für die Beschreibung Ihrer Systeme verwenden, schließlich ist es ja genau dafür gedacht [3]. Sicherlich können Sie arc42 auch sparsam einsetzen und damit kompakte Dokumentation produzieren. In der Praxis kommt arc42 jedoch meist als ein umfangreiches Dokument oder Wiki daher; das erscheint manchen Teams oder Menschen zu viel oder zu umständlich.
Wir haben in der Praxis häufiger den Ruf nach "noch kürzer" gehört und mit verschiedenen Teams aus unterschiedlichen Branchen an noch kompakteren Versionen von Dokumentation gearbeitet. Lange Zeit haben wir die Ergebnisse allerdings in der (klassischen) Form des Templates abgelegt. Das funktioniert an sich gut, hat aber nicht den Steckbriefcharakter, den ein Canvas mit sich bringt.
Was die anderen Disziplinen können, schaffen wir in der Softwarearchitektur auch: In super-kompakter Form die wesentlichen Highlights eines Systems in strukturierter Form darzustellen – mit dem Architecture Communication Canvas.
In typischer arc42-Manier steht dieser Canvas unter einer liberalen Open-Source-Lizenz, d. h., Sie dürfen ihn auch im kommerziellen/beruflichen Umfeld verwenden. Canvas und Dokumentation sowie die zugehörige Website [4] werden in einem öffentlichen Github-Repository gepflegt [5]. Am Ende des Artikels haben wir für Sie die verschiedenen Formate aufgelistet, in welchen der Canvas verfügbar ist.
Schlüsselelemente von IT-Systemen
Um die wesentlichen inneren Details von IT-Systemen wirklich zu verstehen, benötigen wir Antworten auf drei Kernfragen:
- Welche Aufgabe löst das System? Was sind die Anforderungen daran?
- Wie sieht die Lösung aus? Was sind die wesentlichen Aspekte der Architektur?
- Welche Probleme gibt es?
Wenn wir diese drei Fragen etwas spezifischer formulieren, gelangen wir zu folgender Liste von "Schlüsselelementen", über die wir bei IT-Systemen Bescheid wissen sollten:
- Was ist der Business-Case dieses Systems? Warum gibt es dieses System?
- Was sind die wesentlichen Fähigkeiten oder Funktionen dieses Systems?
- Was sind die wesentlichen Qualitätsanforderungen an das System, etwa Skalierbarkeit, Sicherheit, Zuverlässigkeit oder Benutzungsfreundlichkeit?
- Wer sind die wesentlichen Stakeholder?
- In welchem Umfeld existiert unser System?
- Was sind die wichtigsten oder prägnantesten Entscheidungen, die getroffen wurden – gute wie schlechte?
- Was sind die wesentlichen Bestandteile (aka Komponenten, Bausteine, Module) des Systems?
- Was sind die wesentlichen Technologien?
- Was sind die wesentlichen Risiken und Probleme?
All diese Informationen finden Sie auch im bekannten arc42-Template, aber manchmal benötigen Sie eben eine besonders kompakte Fassung. Genau da kommt der Canvas ins Spiel.
Platz für Anforderungen und Lösung
Der Canvas beantwortet die drei oben genannten Kernfragen (Anforderungen in Abb. 4 mit grünlichem Hintergrund, Lösung mit blauem Hintergrund, Probleme mit rotem Hintergrund).
Der Business Context (fachliche Kontextabgrenzung) bildet den Übergang von Anforderungen zur Lösung, darum verläuft dieser Teil von grün nach blau.
Beispiele statt Details
Erstmal möchten wir den Canvas lediglich kurz vorstellen, ohne auf die detaillierte Bedeutung der einzelnen Elemente einzugehen. Diese können Sie bei Bedarf in der Online-Dokumentation nachlesen [6]. Stattdessen zeigen wir Ihnen ein paar Beispiele, damit Sie den Architecture Communication Canvas (wie er vollständig heißt) mal in "fertig" erleben können. Weiter unten finden Sie den Canvas als leeres Diagramm und auch ein paar Download-Links, mit denen Sie direkt loslegen können.
Statusseite für arc42.org
- Die Status- und Statistik-Subdomain von arc42 zeigt tabellarisch Statistiken von Besucher:innen und Seitenaufrufen der wesentlichen arc42-Domains. Dahinter steht eine in Go implementierte API, die verschiedene externe Auskünfte aggregiert.
- Eine Besonderheit dieses Systems ist die Kombination aus statisch generierter Website (auf Basis Jekyll und GitHub-Pages) mit dynamischem Content sowie einer geografisch verteilten Datenhaltung.
System zur Verwaltung von Gehältern
- gehalt.io ist die INNOQ-interne Anwendung für die Verwaltung von Gehältern.
- Das System wurde von vier Personen entwickelt, mit Java und Spring Boot. Eine klassische Web-Anwendung.
Massenmarkt CRM-System
- MaMa (für "Massenmarkt") ist eines der (zahlreichen) Systeme zum Management der elektronischen Gesundheitskarte. Die Kernaufgabe liegt in Beschaffung und Transfer der biometrischen Fotos der versicherten Personen, die auf diesen Karten aufgedruckt werden.
- Diese Version des Canvas stammt aus dem Juni 2023 – da waren die Größenverhältnisse der Schlüsselelemente (etwa: Stakeholder, Business-Context, Quality-Requirements) noch leicht anders als in der aktuellen Fassung.
System zur Rezeptempfehlung
- Selbst in Forschung und Lehre findet der Architecture Communication Canvas mittlerweile Anwendung. Hier das Beispiel einer Bachelor-Arbeit der Universität Osnabrück TheSta-24[7].
- Die Arbeit untersuchte die Wirksamkeit von Algorithmen eines "Recommendation Systems", konkret am Beispiel für personalisierte Empfehlungen für Kochrezepte.
- Die python-basierte Anwendung vergleicht, welche Kategorie von Recommender-Algorithmen besser den persönlichen Geschmack von Usern trifft.
Tool zur Überprüfung von HTML-Links
- Kleines Tool, welches die Links in einem HTML-Dokument hinsichtlich Gültigkeit und Dopplung überprüft
- Entwickelt von einer einzigen Person – Sie sehen, der Canvas eignet sich durchaus auch für kleine Projekte.
Erfahrungsberichte und Anwendungsgebiete, oder: Wozu das Ganze?
Vielleicht fragen Sie sich noch, wozu Sie einen Canvas überhaupt einsetzen können, was also vernünftige Anwendungsgebiete sein könnten. Wir haben den Canvas in verschiedenen Situationen und Projekten für folgende Arten von Aufgaben eingesetzt:
- Als Keimzelle oder Ausgangspunkt weiterer Dokumentation, speziell wenn zu bestehenden Systemen jegliche systematische Dokumentation gefehlt hat. Der Canvas hat dabei geholfen, das Blank-Paper-Syndrom zu vermeiden und dem Entwicklungsteam ein schnelles Erfolgserlebnis zu verschaffen [8]. Mit überschaubarem Aufwand können Sie so einen Katalog von Canvases für Ihre gesamte Systemlandschaft erstellen.
- Als Notlösung, wenn das Team wirklich (!!) keine Zeit hat, weitere Dokumentation zu erstellen. Vermutlich haben Sie solche ausweglosen Situationen auch bereits kennengelernt.
- Als Startpunkt für Reviews oder Bestandsaufnahmen. Ein Canvas ist dafür ein großartiger Start, der allen Beteiligten eine gemeinsame Kommunikationsbasis und ein Grundverständnis liefert [9].
- Als Einstieg in das Thema Architekturdokumentation, wenn bei Teilnehmenden kein oder nur wenig Wissen diesbezüglich vorhanden ist.
Unabhängig von den Anwendungsfällen haben wir immer wieder folgende Erfahrungen gemacht:
- Sie sitzen oder stehen mit einer kleinen Gruppe von Stakeholdern (ideal: aus dem Entwicklungsteam) zusammen und diskutieren die neun Schlüsselthemen des Canvas. Innerhalb von circa einer Stunde entsteht dabei ein Stück Dokumentation, das echten Wert liefert.
- Diese Gruppenarbeit führt zu Aha-Momenten und fördert vergessengeglaubte Informationen zutage. Mehrere Teams haben uns währenddessen gesagt, dass diese Art der Dokumentation sogar Spaß macht.
- Das Beschreiben eines Systems mit dem Canvas ist ein schneller Einstieg in die Dokumentation von Softwarearchitekturen, insbesondere wenn Teams oder Personen damit bisher wenig Erfahrung besitzen. Ein positiver erster Berührungspunkt mit dem Thema Architekturdokumentation ist wertvoll.
- Einige der Teams waren so begeistert, dass sie die Informationen anschließend in das arc42-Template überführten und dort ihre Systeme noch ausführlicher dokumentierten – freiwillig und mit Freude.
- Mehrfach bekamen wir auch aus den Fachbereichen positives Feedback, da die Personen dort sehr schnell einen Überblick über ein System erlangen konnten, ohne großes technisches Verständnis besitzen zu müssen.
Noch am Anfang?
Falls Sie bisher nur wenige Architekturentscheidungen getroffen haben, sich also noch in der Findungs- oder Planungsphase für ein System befinden, kann Ihnen der Architecture Inception Canvas helfen [4]. Dieser fokussiert auf neue IT-Systeme und kümmert sich primär um deren Anforderungen.
Mehr Technik?
Falls Sie mehr über die verwendete Technologie oder das Technologie-Portfolio Ihres Systems zusammentragen möchten, empfehlen wir Ihnen den Tech Stack Canvas [10]. Unbedingt mal anschauen – das ist eine prima Ergänzung zum hier gezeigten Architecture Communication Canvas.
Und nun: Wie erstelle ich einen Canvas?
Wir haben es als großartiges Teamwork erlebt, den Canvas für ein System gemeinsam in einer Gruppe motivierter und kundiger Menschen zu erstellen. Das funktioniert sehr low tech, mit einem Flipchart, ein paar Stiften und Sticky-Notes:
- Hängen Sie ein leeres Flipchart-Blatt mit der rein weißen Seite nach oben im Querformat an die Wand.
- Übertragen Sie grob die einzelnen Segmente des Canvas auf dieses Blatt und beschriften Sie sie entsprechend.
- Schon kann's losgehen: Beginnen Sie oben links mit den Business-Zielen des Systems.
- Die anderen Segmente befüllen Sie in beliebiger Reihenfolge.
Apropos "Business-Ziele": Schon einige Male haben wir im praktischen Einsatz des Canvas gemerkt, dass Entwicklungsteams für die meisten Teile des Canvas passende Antworten oder Skizzen erstellen können – außer bei der Value Proposition, also den übergeordneten Business-Zielen:
- Manchen fällt es lediglich schwer, diese Ziele kompakt zu formulieren.
- Andere wissen tatsächlich nicht so genau, was die übergeordneten (geschäftlichen) Ziele des Systems sind.
Wir finden diesen Aspekt sehr wichtig, damit Sie vernünftige Architekturentscheidungen treffen können, die letztlich dann auf diese Ziele hinwirken.
Abb. 11 zeigt ein Beispiel mitten aus einer solchen interaktiven Session: Das Team hatte gemeinsam eine Architektur-Kata durchgeführt und den Canvas dabei als zentralen Sammelpunkt für Vorschläge und Entscheidungen verwendet.
Falls Sie lieber elektronisch oder online arbeiten, gibt es den Canvas in folgenden Formaten:
Fazit
Worauf warten Sie noch? Mal schnell zum Stift (oder Zeichenwerkzeug) gegriffen und ein paar Stichworte zu Ihrem System auf den Canvas gebracht. Erfolgserlebnis (fast) garantiert. Übrigens können Sie Ihren Canvas auch gerne der Öffentlichkeit zugänglich machen: Erstellen Sie einen Pull-Request im Canvas-Repository [16].
Danksagung
Danke an Patrick Roos und einige unserer Kunden für Feedback zum Canvas.
- Business Model Canvas (BMC)
- Lean UX Canvas
Product Design Canvas
Bounded Context Canvas - arc42-Template
- Software Architecture Canvas
- Github-Repository
- Architecture Communication Canvas
- Per Starke: Recipe Recommender - My Bachelor Thesis
- Blank Page Syndrome And How To Beat It
- Gernot Starke: The Art of Software Reviews: Probleme und Risiken zielsicher identifizieren
Gernot Starke: The art of software reviews – Probleme und Risiken in Software zielsicher identifizieren - TechStack Canvas
- Miro, rtb-Format
- Mural, Template-Gallery
- Powerpoint-Version, dabei liegen die Strukturelemente im Folienmaster. Gut geeignet für Meetings, in denen neben dem Entwicklungsteam auch fachliche Stakeholder mitarbeiten.
- draw.io/diagrams.net
- Pull-Request im Canvas-Repository