Knigge_3Auflage.png

Dr. Peter Hruschka, Dr. Gernot Starke
Knigge für Softwarearchitekten. 3. überarbeitete und ergänzte Auflage

ISBN 978-3-86802-779-2
© 2018 entwickler.press

Ein Imprint der Software & Support Media GmbH

Bibliografische Information Der Deutschen Bibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen
Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Ihr Kontakt zum Verlag und Lektorat:
Software & Support Media GmbH
entwickler.press
Schwedlerstraße 8
60314 Frankfurt am Main
Tel.: +49 (0)69 630089-0
Fax: +49 (0)69 630089-89
lektorat@entwickler-press.de
http://www.entwickler-press.de

Lektorat/Korrektorat: Frauke Pesch, Jonas Bergmeister
Proofreader: Nicole Bechtel
Satz: Sibel Sarli
Umschlaggestaltung: Maria Rudi, Tobias Dorn
ePUB: Elisabeth Bernard
Titelbild: Lehrer Lämpel, Quelle: Wikipedia, https://bit.ly/lehrer-laempel

Belichtung, Druck & Bindung: Media-Print Informationstechnologie GmbH, Paderborn

Alle Rechte, auch für Übersetzungen, sind vorbehalten. Reproduktion jeglicher Art (Fotokopie, Nachdruck, Mikrofilm, Erfassung auf elektronischen Datenträgern oder anderen Verfahren) nur mit schriftlicher Genehmigung des Verlags. Jegliche Haftung für die Richtigkeit des gesamten Werks kann, trotz sorgfältiger Prüfung durch Autor und Verlag, nicht übernommen werden. Die im Buch genannten Produkte, Warenzeichen und Firmennamen sind in der Regel durch deren Inhaber geschützt.

Prolog

Knigge?

Der klassische Knigge1, Originaltitel „Über den Umgang mit Menschen“ beschreibt Umgangsformen unter Menschen, insbesondere die anzustrebenden „guten Manieren“: Sie sollen nicht mit vollem Mund bei Tisch sprechen, nicht die Finger ablecken, alten Damen über die Straße helfen und so weiter.

Damit machen Sie sich im täglichen Leben beliebt und können Eindruck schinden. Zur Berufslaufbahn „Softwarearchitekt“ hingegen schweigt die klassische Benimmliteratur.

image

Der Schriftsteller Freiherr Adolph Knigge (1752-1796)


1 Wikipedia zu „Umgangsformen“: http://de.wikipedia.org/wiki/Umgangsformen

image

Vorwort und Danksagung

In unserem Berufsleben durften wir Systeme in unterschiedlichen Branchen und bei vielen verschiedenen Kunden entwerfen und begleiten. Dazu gehörten Embedded Systems, Informationssysteme, Anlagen- und Produktionssteuerung, Web- und Data-Warehouse-Anwendungen, entwickelt und betrieben auf Mainframes, Client-/Server-Clustern bis zu Standalone-Anwendungen. Dabei haben wir Licht und Schatten erlebt, sowohl hervorragend produktive als auch grausig schlechte Projekte, mit und teilweise auch ohne zugehörige Architekten. In diesem Buch stellen wir unsere Beobachtungen von SoftwarearchitektInnen und deren Verhalten in Form von „Mustern“ dar. Organisationsmuster für andere Bereiche der IT finden Sie in vielen anderen Werken dargestellt.1

Wir gehen einen etwas anderen Weg als der alte Freiherr von Knigge, indem wir bewusst sowohl gutes wie auch schlechtes Verhalten von Softwarearchitekten vorstellen.

Sie lernen, wie man durch Erfolgsmuster bessere Systeme konstruiert und schlechte Architekturmanieren (Antipatterns) vermeidet.

Gute Architekten bauen gute Systeme

Wir sehen als wesentliches Merkmal guter Architekten, dass sie unter den jeweiligen Umständen die bestmöglichen Systeme konstruieren und deren Entwicklung begleiten. Systeme, die verständlich, langlebig, wartbar, funktional, performant und sicher sind. Systeme, die robust auf Fehler reagieren und ihre jeweiligen Stakeholder positiv erstaunen, statt zu nerven. Kurz gesagt: Gute Architekten liefern hohe Qualität.

Gutes Verhalten macht gute Architekten

Wir glauben fest daran, dass der Unterschied zwischen guten und schlechten Softwarearchitekten hauptsächlich in deren Verhalten begründet liegt, in ihrer Vorgehensweise oder Methodik.

Technologie, Frameworks oder Tools beeinflussen die Qualität von Lösungen erheblich weniger, obwohl Softwarearchitekten sie natürlich kennen und können müssen. Daher haben wir technische Themen in diesem Buch komplett ausgespart. Wir gehen (optimistisch, aber durch langjährige Beobachtung gestützt) davon aus, dass Softwarearchitekten ihr IT-technisches Handwerkszeug in der Regel ziemlich gut beherrschen.

HINWEIS

In farbigen Textkästen geben wir Ihnen ernst gemeinte Ratschläge zur praktischen Umsetzung.

WAR STORY

In manchen Kapiteln erzählen wir Ihnen beispielhafte Erlebnisse aus unseren Projekten – optisch gekennzeichnet wie dieser Absatz. Diese haben wir bei Bedarf mit unseren Namenskürzeln (PH und/oder GS) versehen.

Danksagung

Wir bedanken uns bei unseren zahlreichen Kunden, bei denen wir das Verhalten von Softwarearchitekten beobachten durften. Dort, im Dschungel der Projektpraxis, haben wir am eigenen Leib die hier geschilderten Muster und Verhaltensweisen erlebt und erlitten – danke dafür! Dank auch an die vielen Seminarteilnehmer, an denen wir unsere Thesen ausgetestet haben – und oftmals erstauntes, aber kopfnickendes Feedback auf unsere Interpretation der Aufgaben eines Softwarearchitekten bekommen haben.

Viele Mitglieder des iSAQB e. V., insbesondere Prof. Dr. Andreas Rausch und Prof. Dr. Arne Koschel haben uns mit intensiven, inhaltlichen Diskussionen rund um die Rolle von Softwarearchitekten unterstützt.

Weiterhin danken wir Claudia Fröhling, Sebastian Burkart und Theresa Vögle vom Software & Support Media Team für ihren Optimismus und ihre Unterstützung bei den ersten Auflagen, Martina Raschke für den Support bei der dritten.

Gernot: Uli, Lynn und Per: Ihr seid super, die beste Familie im Universum! Zeit mit euch ist immer zu kurz. Danke auch an meine kundigen Kollegen der innoQ (Christian Albrecht, Thomas Bandholtz, Philipp Ghadir, Martin Huber, Arnd Kleinbeck, Andreas Krüger, Till Schulte-Coerne, Christopher Stolle, Stefan Tilkov) für eure gründlichen (und manchmal gnadenlosen...) Reviews.

Peter: Mein besonderer Dank gilt meiner Traumfrau Monika, die ein weiteres Buchprojekt nicht nur toleriert, sondern durch Kommentare aus einer Nicht-IT-Sicht wesentlich bereichert hat.


1 Zum Beispiel: Coplien, Jim; Harrison, Neil: „Organizational Patterns of Agile Software Development“. Prentice-Hall, 2004; DeMarco, Tom et al.: „Adrenalin-Junkies und Formular-Zombies“, Carl Hanser Verlag, 2007

1 Der Proaktive

Verantwortungsbewusste Softwarearchitekten gehen aktiv auf alle Projektbeteiligten zu, um Chancen und Risiken rechtzeitig zu erkennen und geeignete Maßnahmen einleiten zu können. Sie übernehmen die Initiative, starten notwendige Aktivitäten aus eigenem Antrieb und ohne explizite Aufforderung. Anstatt passiv oder reaktiv abzuwarten, bis jemand anderes mit einer ungelösten Aufgabe zu ihnen kommt, gehen Aktive diese Aufgaben selbstständig an.

In diesem Sinne ähnelt proaktives Verhalten dem erfolgreicher Unternehmer: Stets auf der Suche nach passenden, erfolgversprechenden Betätigungen.

image

Den negativen Gegenpol bezeichnen wir als Unterlasser oder reaktiv: Diese Menschen warten, bis ihnen jemand eine Aufgabe gibt. Reaktive werden frühestens nach Aufforderung tätig.

Sicherlich kommt proaktives Herangehen vielen Menschen und Rollen zugute. Innerhalb von IT-Projekten ist proaktives Herangehen bei Softwarearchitekten besonders wichtig. Sehen wir uns dazu einige Beispiele an.

Verbesserungsmöglichkeiten suchen

Softwarearchitekten suchen ständig aktiv und an allen ihnen zugänglichen Stellen nach Verbesserungsmöglichkeiten – ohne explizite Aufforderung von außen. Sie schauen dabei deutlich über den Tellerrand ihres eigenen Arbeitsbereichs hinaus.

Konkret übernehmen Softwarearchitekten proaktiv Aufgaben in Anforderungsanalyse und -management, im Build- und Testmanagement sowie im Risikomanagement. Manchmal unternehmen sie Ausflüge in die Chefetagen, um den Managern die technische Lösung zu erklären oder Schwächen im Projektmanagement zu kompensieren. Als verantwortungsbewusster Softwarearchitekt müssen Sie (wiederum selbstständig und aus eigener Initiative) entscheiden, wann solche Ausflüge angemessen und notwendig sind, damit sie von Ihren Mitmenschen nicht als Einmischung empfunden werden. Hier tritt die Schwierigkeit bezüglich der Soft Skills zum ersten Mal auf. Die erwähnen wir in diesem Buch noch öfter.

Annahmen und Voraussetzungen klären

Gute Softwarearchitekten klären von sich aus jegliche (ansonsten versteckte oder implizite) Annahmen oder Voraussetzungen auf. Entwurf und Implementierung der technischen Lösung sollten auf Tatsachen beruhen, nicht nur auf Vermutungen, Mutmaßungen und Betriebsblindheit.

WAR STORY

Wir haben Pflichtenhefte und andere Anforderungsdokumente erhalten, in denen jede Menge implizite Annahmen versteckt waren. Insbesondere die Qualitätsanforderungen blieben oftmals unerwähnt. Architekturentscheidungen auf solcher Treibsandbasis sind gefährlich. Hätten wir uns in diesen Fällen passiv verhalten, wären die Unzulänglichkeiten wahrscheinlich erst im Betrieb aufgefallen. Wir haben stattdessen durch aktives Nachfragen bei verschiedenen Stakeholdern die Anforderungen ergänzt und implizit durch explizit ersetzt. Nachfragen ist immer besser als raten! (PH + GS)

Auf andere zugehen

Proaktive Softwarearchitekten suchen von sich aus den regelmäßigen Kontakt zu anderen Stakeholdern im Projekt. Nicht, weil sie gerne grünen Tee trinken, sondern weil sie (richtig, aktiv!) Rückmeldung einholen und geben wollen. Genau das Gegenteil von „Abwarten und Tee trinken“: Initiativ Eindrücke und Meinungen der anderen erfragen, nach Hindernissen, erkannten Problemen oder Risiken suchen.

Gerne dürfen sie auch loben und sich loben lassen. Hierdurch können Softwarearchitekten eine Menge über ihre Lösungsansätze und deren Auswirkung auf die Projektrealität lernen. Gleichzeitig erhalten sie damit die Möglichkeit, ihre eigene Meinung zu Arbeitsergebnissen, Entscheidungen oder sonstigen Dingen im Projekt zu kommunizieren.

HINWEIS

Je mehr Enthusiasmus Sie für Ihr System oder Projekt an den Tag legen, desto eher und lieber wird man Ihnen zuhören.

Sie sollten als Softwarearchitekt keinesfalls als Nörgler auftreten und jede Kleinigkeit bemäkeln. Rückmeldungen zum umständlichen Bugtracking-Prozess mit Excel können Sie beispielsweise erst einmal für sich behalten, wenn Sie mit Ihren Auftraggebern und dem Team gerade an fundamentalen Architekturentscheidungen arbeiten.

Aufgaben selbst bestimmen

Softwarearchitekten suchen aus eigener Initiative nach dem jeweils effektivsten (d. h. im Sinne der Zielerreichung optimalen) Einsatz der eigenen Zeit: Ob sie gerade Code schreiben, refaktorisieren oder testen sollen, ob sie Schnittstellen definieren oder Anforderungen klären sollen, ob sie Mitarbeiter coachen sollen oder ob die Dokumentation ein Update vertragen kann – das entscheiden sie proaktiv, ohne dass Projektleiter das erst vorgeben müssen.

Proaktiv ist die Ausnahme

Falls Sie glauben, diese aktive Einstellung sei eine Selbstverständlichkeit, dann willkommen in Phantasia: Proaktives Handeln, ja selbst proaktives Denken, erleben wir in unserer Praxis eher als die Ausnahme denn als Regel. Es bedarf nämlich einer gehörigen Portion Mut und Courage, um sich über etablierte Konventionen hinwegzusetzen und sich um Dinge zu kümmern, die einen angeblich nichts angehen, die aber für den Erfolg von Projekten immens wichtig sind. Im schlimmsten Fall kann es passieren, dass Ihre Vorgesetzten Proaktivität als Einmischung verstehen und Ihr Verhalten als vorwitzig oder übertrieben ablehnen.

Wir möchten Sie zumindest verbal bei diesem Mut zur Aktion unterstützen: Langfristig wird sich für Sie aktives Herangehen an andere Projektbeteiligte, aktives Suchen nach Verbesserung und aktives Infragestellen zweifelhafter Konventionen lohnen – in Form höherer Zufriedenheit, besserer Projektergebnisse und dankbarer KollegInnen. Und dafür lohnt sich der Einsatz!

HINWEIS

Denken und handeln Sie wie ein Unternehmer. Gehen Sie aktiv auf Ihre Stakeholder zu und fordern benötigte Dinge ein oder geben interessante Dinge bekannt!

Gehen Sie Ihre Aufgaben aktiv an. Warten Sie nicht, bis Sie jemand auf offene Punkte hinweist. Sie selbst als Softwarearchitekt bestimmen, wann welche Aufgaben angemessen erledigt werden sollen!

Manchmal stecken hinter Zögern, Zaudern und Ängsten Ihrer Stakeholder auch Erfahrungen, die diese Menschen haben, Sie selbst aber noch nicht.

HINWEIS

Seien Sie bereit, von Ihren Stakeholdern zu lernen. Akzeptieren Sie berechtigte Kritik und lehnen unberechtigte höflich, aber bestimmt ab.

Verwandte Muster

Der Proaktive nutzt den „Blick in den Rückspiegel“ (Kapitel 6): Als proaktiver, vorausschauender Softwarearchitekt suchen Sie Risiken, bevor sie eintreten können. Bereits in frühen Entwurfs- oder Entwicklungsphasen begeben Sie sich auf die Suche nach Verbesserungsmöglichkeiten. Sie bewerten, bevor Sie jemand anders auf Probleme (= eingetretene Risiken) hingewiesen hat!

2 Der Elfenbeinturm

image

In der Abgeschiedenheit, fernab der Praxis, brütet ein verschrobenes Grüppchen Lösungsvorschläge aus, die niemand umsetzen möchte, denen es an Alltagstauglichkeit mangelt und deren „Genialität“ nur wenige zu würdigen wissen. Wo wir Ihnen im vorigen Kapitel die aktiven Softwarearchitekten als klassisches Erfolgsmuster vorgestellt haben, soll nun ein krasses Gegenstück folgen: Der Elfenbeinturm gilt in vielen Disziplinen als der Inbegriff der Praxisferne, das Eldorado derjenigen, die forschen, ohne anzuwenden.

Als Kontrapunkt dazu lautet der Spruch der Praktiker „Eat your own Dogfood“: Wende die Dinge gefälligst selbst an, die du uns beizubringen versuchst. Dabei hilft es Organisationen und Projekten ja durchaus, einen gewissen Aufwand in Erforschung und Prototyping neuer Technologien oder Methoden zu investieren, um überhaupt Innovation in Systeme oder Projekte einbringen zu können.

Risiko steigt mit Team- oder Projektgröße

Wir finden den Elfenbeinturmarchitekten häufig in größeren Projekten – ab 20 Personen aufwärts. Diese Projektgröße rechtfertigt eine volle Architektenstelle für die vielseitigen Entwurfsaufgaben und Kommunikation über technische Fragestellungen.

Softwarearchitekten sollten den Überblick über die gesamte Lösung und deren technische Entscheidungen besitzen. Gerade in großen Teams sollten Softwarearchitekten als technische Berater und Ansprechpartner für alle Entwickler bereitstehen. Wer als Architekt diese technische Führung den Projektleitern überlässt, landet schnell im Elfenbeinturm. Bei kleineren Teams passiert das weniger oft, weil der Architekt oft selbst kritische Teile programmiert und daher mitten im Tagesgeschehen der Entwicklung steckt.

Risiko: Streben nach Perfektion

Manchmal erleben wir, dass die Bewohner des Elfenbeinturms nach Perfektion streben, und deswegen (uns) Praktikern mit Unverständnis begegnen: Praktiker akzeptieren nämlich Fehler und Wandel als Normalfall, bemühen sich in iterativen Prozessen um schrittweise Verbesserung. Praktiker wissen schon lange, dass Perfektion unerreichbar und unbezahlbar ist. Elfenbeintürmler sehen das anders: Sie verachten Fehler und schätzen langfristige Planung. Kurze Iterationen lehnen sie als unprofessionell ab und behaupten, mit langem Nachdenken alle Probleme auch ohne diesen Feedbackfirlefanz lösen zu können. Wir, bekennende Agilisten, halten das in den meisten Fällen für unrealistisch. Ausnahmen gelten für sicherheitskritische Bereiche, etwa Medizin-, Luft- oder Raumfahrttechnik. Dort kann Streben nach Perfektion helfen, Leben zu retten. Allerdings sind dort oftmals die Projektbudgets etwas größer als im Rest der Welt.

Risiko: Überlastung

Gute Architekten sind eine seltene Spezies. Manche Organisationen setzen ihre seltenen Exemplare daher in mehreren Projekten gleichzeitig ein. Diese Überlastung führt manchmal dazu, dass diese Architekten Lösungen vorschlagen, ohne dem Team deren Hintergründe, Risiken oder Feinheiten erklären zu können. Aus Sicht der Teams arbeiten die Architekten im Elfenbeinturm, obwohl ihre Ideen brauchbar wären – aber die Entwickler nicht wirklich erreichen.

Falls Sie als Architekt ständig unter Überlast und im „Parallel Processing Mode“ arbeiten müssen, dann achten Sie ganz besonders auf gute Kommunikation mit Ihren Teams (oder lernen Sie, Nein zu Ihren Vorgesetzten zu sagen – aber das haben Sie sicherlich schon versucht)!

HINWEIS

Überlastung kann ein Zeichen von mangelnder Delegation sein. Machen Sie nicht alles selbst.

Risiko: Architekten bauen Frameworks

WAR STORY

In einem sehr großen Projekt hatte ich es mit folgender Situation zu tun:

  • Mehrere parallele Teilprojekte (genannt „Produkte“)
  • Ähnliche fachliche Ausrichtung
  • Identische Basistechnologie (beispielsweise UI-Framework, Persistenzschicht, Logging, Monitoring, Rollen- und Berechtigungskonzept), die eine eigenständige Gruppe für die Produkte als „Framework“ bereitstellen sollte.

Das Framework sollte die Produktteams von der darunter liegenden Technologie befreien, sodass sie sich auf die fachlichen Details ihrer Produkte konzentrieren konnten. Das klingt erst einmal vernünftig, weil man so Mehrfachentwicklung vermeiden kann.

Allerdings waren in meinem Projekt die Frameworkarchitekten und -entwickler absolute „Generiker“ und arbeiteten völlig entkoppelt von den Produktteams. Das resultierte in einem klassischen Elfenbeinturmproblem: Die Features der Frameworks passten nicht zu den Anforderungen der konkreten Produkte. Die Produktteams konnten viele fachliche Aufgaben nur lösen, indem sie am Framework „vorbei“ programmierten (GS).

HINWEIS

Führen Sie „Dienstleistungsorientierung“ ein. Falls Sie Frameworks entwickeln, dann betrachten Sie Ihre Fachprojekte als Kunden (die Ihre Frameworks begeistert einsetzen sollen). Lassen Sie Framework- und Fachprojekte intensiv zusammenarbeiten.

Risiko: Realitätsverzerrung

Wie wär’s mit weiteren Beispielen, in denen realitätsferne Elfenbeintürmler gravierende Probleme verursachten (Ähnlichkeit mit Projekten Ihrer persönlichen Vergangenheit oder Gegenwart wären zufällig, aber erwartet)? Nennen wir die verschiedenen Varianten hier mal Elfen[0] ... Elfen[3]1:

Wir möchten Sie ermutigen, auf jegliche Praxisferne frühzeitig hinzuweisen. Nutzen Sie die Zusammenarbeit zwischen Theorie und Praxis, um Innovation und Verbesserung entstehen zu lassen.

HINWEIS

„Elfenbeintürme“ entstehen meistens aufgrund mangelnder Kommunikation.

  • Reden (!) Sie mit Ihren Stakeholdern, statt über Dokumente oder E-Mails zu kommunizieren. Direkte Kommunikation von Angesicht zu Angesicht ist erheblich wirkungsvoller als indirekte.
  • Fordern Sie aktiv Feedback von anderen Projektbeteiligten ein.
  • Konsolidieren Sie Feedback und lassen es in Ihre Entwürfe, Entscheidungen und Dokumentation einfließen.

Verwandte Muster

Ein „Blick in den Rückspiegel“ (Kapitel 6) hilft Ihnen, Ihre Praxisnähe zu verbessern und aus dem Elfenbeinturm zu entkommen.


1 Ihnen ist klar, dass wir in einem Informatikbuch manche Aufzählungen bei Null beginnen müssen – wo schon unsere Textverarbeitung mit der Zählung von Fußnoten immer bei Eins loslegt ...

2 Möglicherweise angelehnt an den IEEE/TUC-Standard 94-IDONTKNOW, den kein Entwickler vorher jemals gesehen hat.

3 Es könnte auch Cobol oder Haskell gewesen sein – wir können uns nicht genau erinnern ...

4 Vielerlei Gesetze legen unseren Entwürfen Randbedingungen auf: Datenschutz, rechtlich gesicherter Umgang mit Kreditkartendaten, Signaturgesetz, Telekommunikationsüberwachungsverordnung, SOX-Compliance, Basel II etc. pp.

3 Der Vielsehende

Erfolgreiche Architekten nutzen verschiedene Sichten auf Systeme, um unterschiedliche Aspekte in den Vordergrund zu rücken. Sie wechseln je nach Bedarf diese Sichten, um ein gegebenes Problem aus mehreren Perspektiven zu beleuchten und so zu einer tragfähigen Lösung zu kommen.

Versetzen Sie sich in die Lage des Regisseurs einer Fernsehshow. Sie sitzen im Kontrollraum, wo die Bilder vieler Kameras zusammenlaufen. Sie haben ständig eine große Auswahl unterschiedlicher Perspektiven und können frei entscheiden, welche dieser Aufnahmen die momentane Situation am besten wiedergibt: mal die Totale, mal die Großaufnahme des Stars von der tragbaren Handkamera neben der Bühne.

image

Diese Möglichkeiten eines Fernsehregisseurs nutzen auch Softwarearchitekten – nur dass es sich bei ihren Möglichkeiten nicht um Kamerabilder handelt, sondern um verschiedene Darstellungen oder Abstraktionen des Systems, an dem sie gerade arbeiten. Die Grundgedanken hat Philippe Kruchten bereits 1995 in kurzer Form veröffentlicht.1 Weitere, verständliche und praxisnahe Darstellungen finden Sie in aktuelleren Werken.2 Leider aber mangelt es in der Praxis immer noch an Akzeptanz dieser einfachen Idee. Das könnte mit deren düsterer Vergangenheit zu tun haben: Schon 1987 stellte der Amerikaner John Zachman die Idee mehrerer Sichten im IBM Systems Journal unter dem Titel „A Framework For Information Systems Architecture“3 vor. Unserer Ansicht nach eine der praxisfernsten Publikationen unter der Sonne: Zachman empfiehlt sage und schreibe 30 (in Worten: dreißig) verschiedene Sichten auf Architekturen4.

Wir haben die 4+1 Sichten von Philippe Kruchten etwas „pragmatisiert“: Das „+1“ bezieht sich – wie im Original – auf die funktionalen Anforderungen (Geschäftsprozesse, Anwendungsfälle), die Sie im System implementieren müssen.

Verwenden Sie folgende Sichten (Abb. 3.1):

  1. Als wichtigste die Bausteinsicht, die Sie unbedingt brauchen.
  2. Dazu die Verteilungssicht, hauptsächlich bei verteilten Systemen.
  3. Die Laufzeitsicht, zur Beschreibung wichtiger Interaktionen und zum Präzisieren oder Verifizieren der Bausteine.
  4. Und ergänzen Sie bei Bedarf die Sichten durch übergreifende, querschnittliche, technische Konzepte.
image

Abb. 3.1: Sichten auf Systeme

Die Bausteinsicht

Sie zeigt die statische Sicht auf den Quellcode in unterschiedlichen Abstraktionsebenen, also die Bausteine des Systems. Die oberste Ebene – sozusagen die Totale über den ganzen Saal – zeigt unser System als eine Blackbox, eingebettet in seine Nachbarsysteme. Wenn wir näher an den Quellcode heranzoomen, erkennen wir vielleicht die Schichten des Systems oder – bei einer Pipe-und-Filter-Architektur – die wichtigsten Programmteile (die Filter) und die Verbindungen zwischen ihnen (die Pipes). Wie nahe Sie als Architekt dem Code kommen wollen, hängt von Ihren Zielen ab. Wollen Sie aus Abstraktionen oder Diagrammen automatisch Sourcecode generieren, dann werden Sie bis zu Klassen und Operationen verfeinern. Wenn Sie Programmcode hauptsächlich manuell in einer Entwicklungsumgebung pflegen, dann genügt meistens eine abstraktere Stufe.

WAR STORY

Teile eines Systems haben wir mithilfe eines Generators aus einem UML-Modell generiert (genauer: die gesamte Persistenzschicht inklusive der DB-Tabellen). Diese Generierung betraf ausschließlich die fachlichen Bausteine (Entitäten) des Systems – diese mussten wir daher bis auf Attributebene modellieren.

An anderen Stellen desselben Systems waren alle Beteiligten damit zufrieden, dass wir auf sehr grober Ebene die Subsysteme mit ihren Schnittstellen beschrieben haben. (PH)

Die Laufzeitsicht

Die Laufzeitsicht klärt die Dynamik des Systems – das dynamische Zusammenspiel (von Instanzen) der Bausteine. Sie beschreibt, wie eine Komponente eine andere aufruft, was sie dabei übergibt und wie der Ablauf von hier aus weitergeht.

Sie können hierbei ebenfalls auf unterschiedlichen Abstraktionsebenen argumentieren: Zeigen Sie Interaktionen „im Großen“ zwischen Bausteinen hoher Abstraktionsebene, um Überblick zu bieten. Beschreiben Sie Abläufe „nahe am Code“, wenn es Ihnen um Details geht.

HINWEIS

Speziell in der Laufzeitsicht hilft es oftmals, Bausteine unterschiedlicher Abstraktionsebenen in konkreten Abläufen zusammenzubringen. Da darf ein großer, abstrakter Baustein (Beispiel: die „UI-Schicht“ oder das „SAP-FI-Modul“) gerne mit sehr feingranularen Bausteinen zusammenarbeiten.

Die Verteilungssicht

Eine dritte Sicht hilft Architekten oft noch: die Darstellung, welche Teile der Software auf welcher Hardware oder Infrastruktur ablaufen. Wir nennen das Verteilungs- oder Deployment-Sicht. Oftmals sind Architektur- und Entwurfsentscheidungen schon durch die beteiligten Rechner, Chips oder durch geografische Verteilung vorgegeben. Dann hilft es, diese Infrastruktur grafisch darzustellen (Abb. 3.2) und zu überlegen, welche Auswirkungen sie auf die Bausteinsicht oder die Laufzeitsicht hat.

image

Abb. 3.2: Drei wichtige Perspektiven: Baustein-, Laufzeit- und Verteilungssicht

Technische Konzepte

Auch technische Konzepte wie das Logging-Konzept oder die technischen Grundlagen der Implementierung der grafischen Oberfläche bilden eine (weitere!) Perspektive eines Systems. Diese Konzepte sind oft übergreifender Natur, wirken teilweise auf mehrere Bausteine eines Systems.

WAR STORY

Der Auftraggeber eines sehr innovativen und architektonisch anspruchsvollen Systems war ein Rechenzentrum, das mit starkem Fokus auf den Betrieb und die Administration des Systems agierte. Für diese Auftraggeber waren Verteilungssichten und Betriebshandbücher essenzielle Bestandteile der Lieferung, die zu jedem Release erwartet wurden und ohne die es keine Abnahme gab.

Unser Projekt musste zusätzlich einem technischen Lenkungskreis monatlich die wichtigen Entscheidungen, Strukturen und Konzepte berichten.

Für diese beiden Stakeholdergruppen haben wir im Projekt aus unserem (gut gepflegten) Wiki5 nach jeder Iteration sämtliche notwendigen Dokumente generiert – ohne dass wir Informationen doppelt pflegen mussten. (GS)

Spezielle Perspektiven nach Bedarf

In vielen unserer Projekte konnten wir mit nur drei Sichten (Bausteine, Laufzeitszenarien, Deployment/Verteilung) sowie den technischen Konzepten alle Beteiligten versorgen.

Manchmal jedoch benötigen Stakeholder weitere Sichten auf ein System. Gehen Sie in solchen Fällen pragmatisch vor: Erfragen Sie die Wünsche dieser Menschen und suchen Sie nach passenden Darstellungen. Sorgen Sie primär für Verständlichkeit, Akzeptanz und leichte Pflegbarkeit („Wartbarkeit“) in Ihren Modellen und Dokumenten. Einige Beispiele sollen Ihnen diese abstrakten Vorschläge konkretisieren:

In der Mischung liegt die Kraft

Die Bausteinsicht ist unserer Erfahrung nach die wichtigste Perspektive, so wie für den Regisseur diejenige Kamera, mit der er von der Totalen bis hin zum kleinsten Detail zoomen kann. Oftmals unterstützen die anderen Sichten Architekten dabei, Durchblick im Dickicht komplexer Strukturen zu gewinnen. Wechseln von Perspektiven macht Architekturen schneller stabil, weil verschiedene Einflussfaktoren besser ans Tageslicht kommen.

Lernen Sie als „Ablaufdenker“ einmal mehr in statischen Strukturen zu denken, aber als „Bausteinmensch“ mehr in Abläufen und Verteilung.

HINWEIS

Verwenden Sie bewusst verschiedene Perspektiven auf Ihr System.

Verwandte Muster

Sie nutzen „strukturierte Faulheit“ (Kapitel 4) mit Augenmaß: Verwenden Sie nur die Sichten oder Perspektiven, die für Ihre Stakeholder bzw. zur Erreichung Ihrer Ziele wirklich angemessen sind – mit dem dringenden Ziel der Sparsamkeit in allen Belangen.


1 Kruchten, Phillipe: „Architectural Blueprints. The “4+1” View Model of Software Architecture”, IEEE Software 12 (6), 1995, S. 42-50

2 Rozanski, Nick; Woods, Eoin: „Software Systems Architecture with Stakeholders using Viewpoints and Perspectives”, Addison-Wesley, 2005; Starke, Gernot: „Effektive Softwarearchitekturen. Ein praktischer Leitfaden“, 8. Auflage, Carl Hanser Verlag 2017

3 Als PDF online verfügbar unter: http://old.zachmaninternational.com/images/stories/ibmsj2603e.pdf

4 Zugegeben: Zachmann hat seinen Ansatz primär für Enterprise-Architekten konzipiert. Dennoch ist aus unserer Sicht hier der Begriff „Elfenbeinturm“ angebracht.

5 Unser Dokumentenexport im Wiki basierte auf include-Befehlen, mit denen wir flexibel diejenigen Informationen in Dokumente aufnehmen und strukturieren konnten, die unsere Leser benötigten.

6 Zum Beispiel: Evans, Eric: „Domain-Driven Design: Tackling Complexity in the Heart of Software“, Addison-Wesley, 2003. Insbesondere aber Nilsson, Jimmy: „Applying Domain-Driven Design and Patterns“, Addison-Wesley, 2006 – dieses ist viel praxisnäher als das Originalwerk von Evans, mit vielen Codebeispielen. Großartige Lektüre!