jdienst

Architecture Decision Records Teil 3 - Im Kontext von arc42

Nachdem ich im letzten Artikel das Was und Wie von Architecture Decision Records erläutert habe, geht es diesmal darum Architekturentscheidungen in den Kontext des arc42-Templates einzubetten.

arc42 - Von oben nach unten auszufüllen?

Die Gliederung von arc42 sieht auf den ersten Blick angenehm und logisch aus (aus arc42):

  • 1 Einführung und Ziele

  • 2 Randbedingungen

  • 3 Kontextabgrenzung

  • 4 Lösungsstrategie

  • 5 Bausteinsicht

  • 6 Laufzeitsicht

  • 7 Verteilungssicht

  • 8 Querschnittliche Konzepte

  • 9 Entwurfsentscheidungen

  • 10 Qualitätsanforderungen

  • 11 Risiken und technische Schulden

  • 12 Glossar

Das liegt daran, dass diese Struktur für Lesende ist!

Lesende interessiert nicht, welche Qualitätsanforderungen an ein System gestellt wurden und wie diese zur vorhandenen Softwarearchitektur geführt haben. Für sie ist nur das Ergebnis wichtig. Außer es gibt Probleme mit dieser Lösung, dazu aber später mehr.

Wie erstelle ich die Dokumentation als Schreibende*r

Wird die Architekturdokumentation gerade erstellt, sollte anders vorgegangen werden. Ralf und ich haben dazu im weiter unten verlinkten Talk die folgende Bearbeitungsreihenfolge für die Kapitel vorgeschlagen:

1 → 2 → 3 → 10 → 9 → …​

Kapitel 1-3 sind notwendig, um festzulegen WAS gebaut werden soll, WELCHE Randbedingen nicht änderbar sind und in WELCHEM Kontext das zu bauende System operiert. Im Grund genommen ist es der Vertrag, der mit Kunden geschlossen wird.

Bevor nun die Architektur entworfen werden kann, ist es sinnvoll die Qualitätsanforderungen abzuklären. Das Ergebnis sollte ein gewichteter Qualitätsattributbaum sein, der die maximal fünf höchstpriorisierten Qualitätsattribute enthält. Die folgende Abbildung zeigt einen Ausschnitt eines solchen Baumes für ein System, das ich betreut habe.

Gewichteter Qualitätsattributbaum mit den Qualitätsattributen Usability und Sicherheit und den Prioritäten hinter den Attributen.

Für das System dieses Qualitätsattributsbaumes waren die Qualitätsattribute sehr klar, dank zweier Fachexpert*innen, die sich in ihrem Bereich und mit dem abzulösenden Altsystem sehr gut auskannten. In den meisten Fällen wird es eher darauf hinauslaufen mit unklaren Qualitätsanfordungen wie "Das System mus performant sein!" konfrontiert zu werden. Oder es werden mehrere sich widersprechende Qualitätsattribute gefordert. Hier hilft es Vergleiche mit anderen Systemen heranzuziehen. Im Falle von Performanz kann von Kundenseite zum Beispiel ein System benannt werden, dass als performant empfunden wird.

Entscheidungen treffen im Hinblick auf Qualitätsanforderungen

Erst jetzt kann ich daran gehen die Architektur zu entwerfen und die Entwurfsentscheidungen als ADRs zu dokumentieren. Es empfiehlt sich am Ende eines jeden ADRs eine weitere Überschrift einzufügen in der die, von der Entscheidung betroffenen, Qualitätsattribute aus Kapitel 10 verlinkt werden.

Note
Hin und wieder kommt es vor, dass eine Entscheidung auf kein Qualitätsattribut einzahlt. Hier ist zu überprüfen, ob sie architekturrelevant ist und in arc42 dokumentiert werden sollte. Eventuell ist es auch eine Randbedingung.

Warum Qualitätsattribute und Entwurfsentscheidungen in so späten Kapiteln?

Lesende interessieren sich normalerweise nicht dafür auf welcher Grundlage ein System gebaut wurde. Viel interessanter ist doch zu sehen WIE es aufgebaut ist. Architekturdiagramme wie die Microservicearchitektur von Netflix zum Beispiel wirken imposant und eindrucksvoll. Die Kompromisse im Betrieb und die Komplexität im Entwicklungs- und Deploymentprozess treten in den Hintergrund.

Für Softwarearchitekturschaffende oder falls es Probleme gibt sind Kapitel neun und zehn aber hochinteressant. Denn dort steht im besten Fall nachvollziehbar WARUM ein System so gebaut ist und welche Entwurfsentscheidungen dazu geführt haben, dass ein gewisses Problem aufgetreten ist. Nicht selten sind unklare Qualitätsanforderungen die wahre Ursache für Schwächen des Systems!

Wie geht es weiter?

In diesem Blog habe ich beschrieben, welche Bedeutung Architekturentscheidungen im Kontext von arc42 einnehmen und wie die Bearbeitungsreihenfolge bei der Erstellung eines Systems aussehen sollte.

Im nächsten Post gehen wir endlich auf die Technik ein, mit der Architekturentscheidungen effizient gesammelt und verwaltet werden können.

Wer lieber ein Video zu arc42 und Architekturentscheidungen angucken will dem empfehle ich schamlos meinen Vortrag mit Ralf: