Cover

Gernot Starke

Effektive Softwarearchitekturen

Ein praktischer Leitfaden

9., überarbeitete Auflage

Der Autor:

Dr. Gernot Starke, Köln
INNOQ Fellow
www.gernotstarke.de

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.
Ebenso übernehmen Autor und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek:
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt.
Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Print-ISBN:         978-3-446-46376-9
E-Book-ISBN:    978-3-446-46589-3
E-Pub-ISBN:      978-3-446-46690-6

Inhalt

Titelei

Impressum

Inhalt

Vorwort

Vorwort zur neunten Auflage

1 Einleitung

1.1 Softwarearchitekt(inn)en

1.2 Effektiv, agil und pragmatisch

1.3 Wer sollte dieses Buch lesen?

1.4 Wegweiser durch das Buch

1.5 Webseite zum Buch

1.6 Weiterführende Literatur

1.7 Danksagung

2 Architektur und Architekten

2.1 Was ist Softwarearchitektur?

2.2 Die Aufgaben von Softwarearchitekten

2.3 Wie entstehen Architekturen?

2.4 In welchem Kontext steht Architektur?

2.5 Weiterführende Literatur

3 Vorgehen bei der Architekturentwicklung

3.1 Informationen sammeln

3.2 Anforderungen klären

3.2.1 Was ist die Kernaufgabe des Systems?

3.2.2 Welche Kategorie von System?

3.2.3 Wesentliche Qualitätsanforderungen ermitteln

3.2.4 Relevante Stakeholder ermitteln

3.2.5 Fachlichen und technischen Kontext ermitteln

3.3 Einflussfaktoren und Randbedingungen ermitteln

3.4 Entwerfen und kommunizieren

3.5 Umsetzung begleiten

3.6 Lösungsstrategien entwickeln

3.7 Weiterführende Literatur

4 Entwurf: Grundlagen, Methoden und Muster

4.1 Grundlagen

4.1.1 Grundsätze des Entwurfs (Maxime)

4.1.2 Prinzipien

4.1.3 SOLID-Prinzipien des objektorientierten Entwurfs

4.1.3.1 Offen-Geschlossen-Prinzip

4.1.3.2 Liskov-Substitutionsprinzip (LSP)

4.1.3.3 Interface Segregation Principle (ISP)

4.1.3.4 Dependency Inversion Principle (DIP)

4.2 Heuristiken

4.3 Entwurfsmethoden

4.3.1 Domain-Driven Design (Entwurf nach Fachlichkeit)

4.3.2 Quality-Driven Software Architecture

4.3.3 Top-down und Bottom-up

4.4 Schnittstellen entwerfen

4.4.1 Anforderungen an Schnittstellen

4.4.2 Worauf müssen Sie achten?

4.4.3 Tipps zum Entwurf von Schnittstellen

4.5 Architekturstile und -muster

4.5.1 Datenflussarchitekturstil

4.5.1.1 Architekturstil Batch-Sequentiell

4.5.1.2 Architekturstil Pipes und Filter

4.5.2 Datenzentrierter Architekturstil

4.5.2.1 Repository

4.5.2.2 Blackboard

4.5.3 Hierarchische Architekturstile

4.5.3.1 Master-Slave

4.5.3.2 Schichten (Layer)

4.5.3.3 Architekturstil Ports-und-Adapter

4.5.4 Architekturstile verteilter Systeme

4.5.4.1 Client-Server

4.5.4.2 Command Query Responsibility Segregation

4.5.4.3 Broker

4.5.4.4 Peer-to-Peer

4.5.5 Ereignisbasierte Systeme – Event Systems

4.5.5.1 Ungepufferte Event-Kommunikation

4.5.5.2 Message- oder Event-Queue-Architekturen

4.5.5.3 Message-Service-Architekturen

4.5.6 Interaktionsorientierte Systeme

4.5.6.1 Model-View-Controller

4.5.6.2 Presentation Model

4.5.7 Weitere Architekturstile und -muster

4.6 Entwurfsmuster

4.6.1 Entwurf mit Mustern

4.6.2 Adapter

4.6.3 Beobachter (Observer)

4.6.4 Dekorierer (Decorator)

4.6.5 Stellvertreter (Proxy)

4.6.6 Fassade

4.6.7 Zustand (State)

4.7 Weiterführende Literatur

5 Kommunikation und Dokumentation von Architekturen

5.1 Architekten müssen kommunizieren und dokumentieren

5.2 Effektive Architekturdokumentation

5.2.1 Anforderungen an Architekturdokumentation

5.2.2 Regeln für gute Architekturdokumentation

5.3 Typische Architekturdokumente

5.3.1 Zentrale Architekturbeschreibung

5.3.2 Architekturüberblick

5.3.3 Dokumentationsübersicht

5.3.4 Übersichtspräsentation der Architektur

5.3.5 Architekturtapete

5.4 Sichten

5.4.1 Sichten in der Softwarearchitektur

5.4.2 Vier Arten von Sichten

5.4.3 Entwurf der Sichten

5.5 Kontextabgrenzung

5.5.1 Elemente der Kontextabgrenzung

5.5.2 Notation der Kontextabgrenzung

5.5.3 Entwurf der Kontextabgrenzung

5.6 Bausteinsicht

5.6.1 Elemente der Bausteinsicht

5.6.2 Notation der Bausteinsicht

5.6.3 Entwurf der Bausteinsicht

5.7 Laufzeitsicht

5.7.1 Elemente der Laufzeitsicht

5.7.2 Notation der Laufzeitsicht

5.7.3 Entwurf der Laufzeitsicht

5.8 Verteilungssicht

5.8.1 Elemente der Verteilungssicht

5.8.2 Notation der Verteilungssicht

5.8.3 Entwurf der Verteilungssicht

5.9 Dokumentation von Schnittstellen

5.10 Dokumentation technischer Konzepte

5.11 Werkzeuge zur Dokumentation

5.12 TOGAF zur Architekturdokumentation

5.13 Weiterführende Literatur

6 Modellierung für Softwarearchitekten

6.1 Modelle als Arbeitsmittel

6.1.1 Grafische oder textuelle Modellierung

6.2 UML 2 für Softwarearchitekten

6.2.1 Die Diagrammarten der UML 2

6.2.2 Die Bausteine von Architekturen

6.2.3 Schnittstellen

6.2.4 Die Bausteinsicht

6.2.5 Die Verteilungssicht

6.2.6 Die Laufzeitsicht

6.2.7 Darum UML

6.2.8 Darum nicht UML

6.3 Tipps zur Modellierung

6.4 Weiterführende Literatur

7 Technische Konzepte und typische Architekturaspekte

7.1 Persistenz

7.1.1 Motivation

7.1.2 Einflussfaktoren und Entscheidungskriterien

7.1.2.1 Art der zu speichernden Daten

7.1.2.2 Konsistenz und Verfügbarkeit (ACID, BASE oder CAP)

7.1.2.3 Zugriff und Navigation

7.1.2.4 Deployment und Betrieb

7.1.3 Lösungsmuster

7.1.3.1 Persistenzschicht

7.1.3.2 DAO: Eine Miniatur-Persistenzschicht

7.1.4 Bekannte Risiken und Probleme

7.1.5 Weitere Themen zu Persistenz

7.1.6 Zusammenhang zu anderen Aspekten

7.1.7 Praktische Vertiefung

7.1.8 Weiterführende Literatur

7.2 Geschäftsregeln

7.2.1 Motivation

7.2.2 Funktionsweise von Regelmaschinen

7.2.3 Kriterien pro & kontra Regelmaschinen

7.2.4 Mögliche Probleme

7.2.5 Weiterführende Literatur

7.3 Integration

7.3.1 Motivation

7.3.2 Typische Probleme

7.3.3 Lösungskonzepte

7.3.4 Entwurfsmuster zur Integration

7.3.5 Zusammenhang mit anderen Aspekten

7.3.6 Weiterführende Literatur

7.4 Verteilung

7.4.1 Motivation

7.4.2 Typische Probleme

7.4.3 Lösungskonzept

7.4.4 Konsequenzen und Risiken

7.4.5 Zusammenhang mit anderen Aspekten

7.4.6 Weiterführende Literatur

7.5 Kommunikation

7.5.1 Motivation

7.5.2 Entscheidungsalternativen

7.5.3 Grundbegriffe der Kommunikation

7.5.4 Weiterführende Literatur

7.6 Grafische Oberflächen (GUI)

7.6.1 Motivation

7.6.2 Einflussfaktoren und Entscheidungskriterien

7.6.3 GUI-relevante Architekturmuster

7.6.4 Struktur und Ergonomie von Benutzeroberflächen

7.6.5 Bekannte Risiken und Probleme

7.6.6 Zusammenhang zu anderen Aspekten

7.7 Geschäftsprozess-Management: Ablaufsteuerung im Großen

7.7.1 Workflow-Sprachen

7.7.2 Vorhersagbarkeit

7.7.3 Zweck der Ablaufsteuerung

7.7.4 Lösungsansätze

7.7.5 Integration von Workflow-Systemen

7.7.6 Mächtigkeit von WfMS

7.7.7 Weiterführende Literatur

7.8 Sicherheit

7.8.1 Motivation – Was ist IT-Sicherheit?

7.8.2 Sicherheitsziele

7.8.3 Lösungskonzepte

7.8.4 Security Engineering mit Patterns

7.8.5 Weiterführende Literatur

7.9 Protokollierung

7.9.1 Typische Probleme

7.9.2 Lösungskonzept

7.9.3 Zusammenhang mit anderen Aspekten

7.9.4 Weiterführende Literatur

7.10 Ausnahme- und Fehlerbehandlung

7.10.1 Motivation

7.10.2 Fehlerkategorien schaffen Klarheit

7.10.3 Muster zur Fehlerbehandlung

7.10.4 Mögliche Probleme

7.10.5 Zusammenhang mit anderen Aspekten

7.10.6 Weiterführende Literatur

7.11 Skalierbarkeit

7.11.1 Was bedeutet Skalierbarkeit?

7.11.2 Skalierungsstrategien

7.11.3 Elastizität

7.11.4 Scale-Up-Strategie

7.11.5 Vertikale Scale-Out-Strategie

7.11.6 Horizontale Scale-Out-Strategie

7.11.7 Der Strategiemix

7.11.8 Allgemeine Daumenregeln

7.11.9 CPU-Power

7.11.10 GPU-Power

7.11.11 RAIDs, SANs und andere Speichersysteme

7.11.12 Bussysteme für die Speicheranbindung

7.11.13 Geringere Bandbreite im Netz

7.12 Blockchain und dezentralisierte Architektur

7.12.1 Definition und Abgrenzung

7.12.2 Technische Grundlagen von Blockchains

7.12.3 Smart Contracts

7.12.4 Blockchains in nichtöffentlichen Kontexten

7.12.5 Architekturabwägungen

7.12.6 Architekturmuster

8 Analyse und Bewertung von Softwarearchitekturen

8.1 Qualitative Architekturbewertung

8.2 Quantitative Bewertung durch Metriken

8.3 Werkzeuge zur Bewertung

8.4 Weiterführende Literatur

9 Systematische Verbesserung und Evolution

9.1 Wege in den Abgrund

9.2 Systematisch verbessern

9.3 Bewährte Praktiken und Muster

9.4 Analyse: Probleme identifizieren

9.5 Evaluate: Probleme und Maßnahmen bewerten

9.6 Improve: Verbesserungsmaßnahmen planen und durchführen

9.6.1 Maxime für Verbesserungsprojekte

9.6.2 Kategorien von Verbesserungsmaßnahmen

9.7 Crosscutting: phasenübergreifende Praktiken

9.8 Mehr zu AIM42

9.9 Weiterführende Literatur

10 Microservices

10.1 Was sind Microservices?

10.2 Warum Microservices?

10.3 Eigenschaften von Microservices

10.4 Microservices und die Organisation

10.5 Für welche Systeme eignen sich Microservices?

10.6 Herausforderungen bei Microservices

10.6.1 Überblick über viele Services behalten

10.6.2 Microservices effektiv entwickeln

10.6.3 Service Discovery

10.6.4 UI-Integration

10.6.5 Dezentralisierte Daten

10.6.6 Versionierung von Microservices

10.6.7 Laufzeitumgebungen und Infrastruktur verwalten

10.7 Beispiele für Microservices

10.8 Weiterführende Literatur

11 Enterprise-IT‑Architektur

11.1 Wozu Architekturebenen?

11.2 Aufgaben von Enterprise-Architekten

11.2.1 Management der Infrastrukturkosten

11.2.2 Management des IS-Portfolios

11.2.3 Definition von Referenzarchitekturen

11.2.4 Weitere Aufgaben

11.3 Weiterführende Literatur

12 Beispiele von Softwarearchitekturen

12.1 Beispiel: Datenmigration im Finanzwesen

12.2 Beispiel: Kampagnenmanagement im CRM

13 Werkzeuge für Softwarearchitekten

13.1 Kategorien von Werkzeugen

13.2 Typische Auswahlkriterien

14 iSAQB Curriculum

14.1 Standardisierte Lehrpläne für Softwarearchitekten

14.1.1 Grundlagenausbildung und Zertifizierung Foundation-Level

14.1.2 Fortgeschrittene Aus- und Weiterbildung (Advanced-Level)

14.2 iSAQB‑Foundation‑Level‑Lehrplan

14.2.1 Können, Wissen und Verstehen

14.2.2 Voraussetzungen und Abgrenzungen

14.2.3 Lernziele des iSAQB Foundation Level

14.2.4 Zertifizierung gemäß iSAQB

14.3 Beispielfragen zur Foundation Level Prüfung

15 Nachwort: Architektonien

15.1 In sechs Stationen um die (IT-)Welt

15.2 Ratschläge aus dem architektonischen Manifest

16 Literatur

Vorwort

Haben Sie jemals einen dummen Fehler zweimal begangen?
– Willkommen in der realen Welt.
Haben Sie diesen Fehler hundertmal hintereinander gemacht?
– Willkommen in der Software-Entwicklung.

Tom DeMarco,
in: „Warum ist Software so teuer?“

Wenn Sie sich für Baukunst interessieren, dann erkennen Sie sicherlich die „Handschrift“ berühmter Architekten wie Frank Lloyd Wright, Le Corbusier oder Mies van der Rohe immer wieder, egal, wo auf der Welt Sie auf Bauwerke dieser Meister stoßen. Die Funktionalität des Guggenheim Museums in New York oder des Opernhauses in Sydney gepaart mit deren Schönheit und Ästhetik sind unvergessliche Eindrücke. Das erwarten wir heute auch von unseren IT-Systemen: Funktionalität gepaart mit Stil!

Seit mehr als zwanzig Jahren versuche ich, Systementwicklern die Kunst des Architekturentwurfs nahezubringen. Die Erfahrung hat mich gelehrt, dass man jede Person, die mit gesundem Menschenverstand ausgestattet ist, zu einem guten Systemanalytiker ausbilden kann. Softwarearchitekten auszubilden, ist wesentlich schwieriger.

Früher waren viele unserer Systeme so einfach, dass einzelne Personen die Struktur leicht im Kopf behalten konnten. Heutzutage gehört mehr dazu, um die Struktur eines Systems zu beherrschen, die Auswirkungen von Technologieentscheidungen vorauszusehen und die Vielzahl von Hilfsmitteln wie Generatoren, Frameworks, Libraries und Entwicklungswerkzeuge kosteneffizient und zielführend einzusetzen.

Viele Jahre war ich davon überzeugt, dass nur Erfahrung in der Erstellung großer Systeme und selbst gemachte Fehler gute Architekten hervorbringen. Wir wussten einfach zu wenig über Wirkungen und Folgewirkungen von Designentscheidungen. In den letzten Jahren ist die Entwicklung von Architekturen mehr und mehr zur Ingenieursdisziplin herangereift.

Gernot Starke ist es gelungen, die Essenz dieser Disziplin auf den Punkt zu bringen. Die Tipps und Tricks, die er in diesem Buch zusammengetragen hat, vermitteln Ihnen eine Fülle von Praxiserfahrungen. Selbst wenn Sie zu den Veteranen der Branche gehören, werden Sie neben vielen Déjà-vu-Erlebnissen sicherlich noch die eine oder andere Perle entdecken. Wenn Sie gerade Ihre ersten Sporen als Architekt(in) verdienen, dann können Sie sich mit den Empfehlungen den einen oder anderen Holzweg ersparen.

Trotz aller Fortschritte in der IT bleiben Konstruktion und Ausgestaltung von Architekturen dauerhaft eine Domäne für kreative Gestaltungsarbeit von Menschen und Teams. Softwarearchitekt ist daher ein Beruf mit sicherer Zukunft!

Aachen, im September 2013

Peter Hruschka

Vorwort zur neunten Auflage

Seit der ersten Auflage 2002 sind 18 Jahre vergangen – in denen „Softwarearchitektur“ aus den Kinderschuhen zu einer volljährigen Disziplin der Softwareentwicklung reifen konnte.

Unsere Branche hat viel gelernt, Agilität und iterativ-inkrementelle Entwicklung sind endlich im Mainstream angekommen, schnelles Feedback eher Normalität denn Ausnahme, beispielsweise durch automatisiertes Testen.

Architekturaufgaben und technische Entscheidungen liegen oftmals beim Entwicklungsteam oder werden zumindest von mehreren Personen nach Rücksprache mit den Teams getroffen – und nicht mehr von Einzelpersonen „diktiert“.

Dafür sind allerdings die Anforderungen an unsere Systeme signifikant gestiegen: Benutzerzahlen von Online-Systemen gehen oft in die Millionen, Datendurchsatz oder -volumen messen wir in Tera oder Giga, nicht mehr in Kilo … Benutzungsschnittstellen müssen hochgradig ergonomisch sein und auf multiplen Endgeräten laufen – zero-downtime gehört (fast) zur Selbstverständlichkeit. Embedded- und Informationssysteme müssen oftmals sicherheitskritische Entscheidungen treffen. Ach ja – Entwicklungskosten für solche komplexen IT-Systeme sollen tendenziell sinken und neue Features am besten in kürzester Zeit zur Verfügung stehen. Für solche (krassen!) Herausforderungen benötigen Entwicklungsteams fundierte Architekturkompetenz – und genau dafür habe ich dieses Buch geschrieben.

Zur neunten Auflage: Seit der achten Auflage (2017) haben viele gründliche Leserinnen und Leser einige Dutzend kleine Fehler gefunden, die in der vorliegenden Auflage (hoffentlich) behoben sind. Ich danke allen, die mich netterweise auf diese Dinge hingewiesen haben.

Die Aktualisierungen des iSAQB-CPSA-F-Lehrplans sind komplett eingeflossen, und das Kapitel über Microservices ist von den Altlasten der SOA befreit ☺.

Meinen Kollegen Dr. Lars Hupel konnte ich dazu gewinnen, einen kleinen (aber spannenden) Exkurs zum Thema „Blockchain“ beizusteuern.

Zum Buch gibt es eine (responsive design) Website, die ich mittels Github1, Jekyll und Docker pflege (http://esabuch.de).

Möge dieses Buch helfen, bessere Software zu entwickeln!

Köln, Juni 2020

Gernot Starke


1 Für Insider oder falls Sie Verbesserungsvorschläge haben: https://github.com/gernotstarke/esabuch.de-site

1 Einleitung

Wir bauen Software wie Kathedralen:
Zuerst bauen wir – dann beten wir.

Gerhard Chroust

Bitte erlauben Sie mir, Sie mit einer etwas bösartigen kleinen Geschichte zur weiteren Lektüre dieses Buchs zu motivieren.

Eine erfolgreiche Unternehmerin möchte sich ein Domizil errichten lassen. Enge Freunde raten ihr, ein Architekturbüro mit dem Entwurf zu betrauen und die Erstellung begleiten zu lassen. Nur so ließen sich die legendären Probleme beim Hausbau (ungeeignete Entwürfe, mangelnde Koordination, schlechte Ausführung, Pfusch bei Details, Kostenexplosion und Terminüberschreitung) vermeiden.

Um die für ihr Vorhaben geeigneten Architekten zu finden, beschließt sie, einigen namhaften Büros kleinere Testaufträge für Einfamilienhäuser zu erteilen. Natürlich verrät sie keinem der Kandidaten, dass diese Aufträge eigentlich Tests für das endgültige Unterfangen sind.

Nach einer entsprechenden Ausschreibung in einigen überregionalen Tageszeitungen trifft unsere Bauherrin folgende Vorauswahl:

Image       Wasserfall-Architektur KG, Spezialisten für Gebäude und Unterfangen aller Art,

Image       V&V Architektur GmbH & Co. KG, Spezialisten für Regierungs-, Prunk- und Profanbauten,

Image       Extremarchitekten AG.

Alle Büros erhalten identische Vorgaben: Ihre Aufgabe besteht in Entwurf und Erstellung eines Einfamilienhauses (EFH). Weil unsere Unternehmerin jedoch sehr häufig, manchmal fast sprunghaft, ihre Wünsche und Anforderungen ändert, beschließt sie, die Flexibilität der Kandidaten auch in dieser Hinsicht zu testen.

Wasserfall-Architektur KG

Die Firma residiert im 35. Stock eines noblen Bürogebäudes. Dicke Teppiche und holzvertäfelte Wände zeugen vom veritablen Wohlstand der Firmeneigner.

Image

Foto von Wolfgang Korn

„Wir entwerfen auch komplexe technische Systeme“, erklärt ein graumelierter Mittfünfziger der Bauherrin bei ihrem ersten Treffen. Sein Titel „Bürovorsteher“ prädestiniert ihn wohl für den Erstkontakt zu dem vermeintlich kleinen Fisch. Von ihm und einer deutlich jüngeren Assistentin wurde sie ausgiebig nach ihren Wünschen hinsichtlich des geplanten Hauses befragt.

Als sie die Frage nach den Türgriffen des Badezimmerschranks im Obergeschoss nicht spontan beantworten kann, händigt man ihr ein Formblatt aus, das ausführlich ein Change-Management-Verfahren beschreibt.

Das Team der Wasserfall-Architektur KG legte nach wenigen Wochen einen überaus detaillierten Projektplan vor. Gantt-Charts, Work-Breakdown-Struktur, Meilensteine, alles dabei. Die nächsten Monate verbrachte das Team mit der Dokumentation der Anforderungsanalyse sowie dem Entwurf.

Pünktlich zum Ende dieser Phase erhielt die Unternehmerin einen Ordner (zweifach) mit fast 400 Seiten Beschreibung eines Hauses. Nicht ganz das von ihr Gewünschte, weil das Entwicklungsteam aus Effizienzgründen und um Zeit zu sparen einige (der Bauherrin nur wenig zusagende) Annahmen über die Größe mancher Räume und die Farbe einiger Tapeten getroffen hatte. Man habe zwar überall groben Sand als Bodenbelag geplant, könne das aber später erweitern. Mit etwas Zement und Wasser vermischt, stünden den Hausbewohnern später alle Möglichkeiten offen. Im Rahmen der hierbei erwarteten Änderungen habe das Team vorsorglich die Treppen als Rampe ohne Stufen geplant, um Arbeitern mit Schubkarren den Weg in die oberen Etagen zu erleichtern. Das Begehren unserer Unternehmerin, doch eine normale Treppe einzubauen, wurde dem Change-Management übergeben.

Die nun folgende Erstellungsphase (die Firma verwendete hierfür den Begriff „Implementierungsphase“) beendete das Team in 13 statt der geplanten acht Monate. Die fünf Monate Zeitverzug seien durch widrige Umstände hervorgerufen, wie ein Firmensprecher auf Nachfrage erklärte. In Wirklichkeit hatte ein Junior-Planning-Consultant es versäumt, einen Zufahrtsweg für Baufahrzeuge zu planen – das bereits fertiggestellte Gartenhaus musste wieder abgerissen werden, um eine passende Baustraße anlegen zu können.

Ansonsten hatte das Implementierungsteam einige kleine Schwächen des Entwurfs optimiert. So hatte das Haus statt Treppe nun einen Lastenaufzug, weil sich die ursprünglich geplante Rampe für Schubkarren als zu steil erwies. Das Change-Management verkündete stolz, man habe bereits erste Schritte zur Anpassung des Sandbodens unternommen: Im ganzen Haus seien auf den Sand Teppiche gelegt worden. Leider hatte ein Mitglied des Wartungsteams über den Teppich dann, in sklavischer Befolgung der Planungsvorgaben, Zement und Wasser aufgebracht und mit Hilfe ausgeklügelt brachialer Methoden zu einer rotgrauen zähen Paste vermischt. Man werde sich in der Wartungsphase darum kümmern, hieß es seitens der Firma.

Die zu diesem Zeitpunkt von den Wasserfall-Architekten ausgestellte Vorabrechnung belief sich auf das Doppelte der ursprünglich angebotenen Bausumme. Diese Kostensteigerung habe die Bauherrin durch ihre verspätet artikulierten Zusatzwünsche ausschließlich selbst zu verantworten.

V&V Architektur GmbH & Co. KG

Die V&V Architektur GmbH & Co. KG (nachfolgend kurz V&V) hatte sich in den vergangenen Jahren auf Regierungs-, Prunk- und Profanbauten spezialisiert. Mit dem unternehmenseigenen Verfahren, so wird versichert, könne man garantiert jedes Projekt abwickeln. Der von V&V ernannte Projektleiter überraschte unsere Unternehmerin in den ersten Projektwochen mit langen Fragebögen – ohne jeglichen Bezug zum geplanten Haus. Man müsse unbedingt zuerst das Tailoring des Vorgehensmodells durchführen, das Modell exakt dem geplanten Projekt anpassen. Am Ende dieser Phase erhielt sie, in zweifacher Ausfertigung, mehrere Hundert Seiten Dokumentation des geplanten Vorgehens.

Dass ihr Einfamilienhaus darin nicht erwähnt wurde, sei völlig normal, unterrichtete sie der Projektleiter. Erst jetzt, in der zweiten Phase, würde das konkrete Objekt geplant, spezifiziert, realisiert, qualitätsgesichert und konfigurationsverwaltet.

Der Auftraggeberin wurde zu diesem Zeitpunkt auch das „Direktorat EDV“ der Firma V&V vorgestellt. Nein, diese Abteilung befasste sich nicht mit Datenverarbeitung – die Abkürzung stand für „Einhaltung Des Vorgehensmodells“.

Image

Foto von Ralf Harder

Nach einigen Monaten Projektlaufzeit stellte unsere Bauherrin im bereits teilweise fertiggestellten Haus störende signalrote Inschriften auf sämtlichen verbauten Teilen fest. Das sei urkundenechte Spezialtinte, die sich garantiert nicht durch Farbe oder Tapete verdecken ließe, erklärte V&V stolz. Für die Qualitätssicherung und das Konfigurationsmanagement seien diese Kennzeichen unbedingt notwendig. Ästhetische Einwände, solche auffälligen Markierungen nicht in Augenhöhe auf Fenster, Türen und Wänden anzubringen, verwarf die Projektleitung mit Hinweis auf Seite 354, Aktivität PL 3.42, Paragraph 9 Absatz 2 des Vorgehensmodells, in dem Größe, Format, Schrifttyp und Layout dieser Kennzeichen verbindlich definiert seien. Die Bauherrin hätte bereits beim Tailoring widersprechen müssen, nun sei es wirklich zu spät.

Extrem-Architekten AG

Die Extrem-Architekten laden unsere Unternehmerin zu Projektbeginn zu einem Planungsspiel ein. Jeden Raum ihres geplanten EFH soll sie dabei der Wichtigkeit nach mit Gummibärchen bewerten. Die immer nur paarweise auftretenden Architekten versprechen ihr eine erste funktionsfähige Version des Hauses nach nur sechs Wochen. Auf Planungsunterlagen würde man im Zuge der schnellen Entwicklung verzichten.

Image

„Gummibär-Tango“ von Klaus Terjung

Zu Beginn der Arbeiten wurde das Team in einer Art Ritual auf die gemeinsame Vision des Hauses eingeschworen. Wie ein Mantra murmelten alle Teammitglieder ständig mit seltsam gutturaler Betonung die Silben „Einfa-Milien-Haus“, was sich nach einiger Zeit zu „Ei-Mi-Ha“ abschliff. Mehrere Außenstehende wollen gehört haben, das Team baue einen bewohnbaren Eimer. Sie stellten eine überdimensionale Tafel am Rande des Baugeländes auf. Jeder durfte darauf Verbesserungsvorschläge oder Änderungen eintragen. Dies gehöre zu einem Grundprinzip der Firma: „Kollektives geistiges Eigentum: Planung und Entwurf gehören allen.“

Nach exakt sechs Wochen laden die Extrem-Architekten die Unternehmerin zur Besichtigung der ersten funktionsfähigen Version ein. Wieder treten ihr zwei Architekten entgegen, jedoch erkennt sie nur einen davon aus dem Planungsspiel wieder. Der andere arbeitet jetzt bei den Gärtnern. Der ursprüngliche andere Gärtner hilft dem Elektriker, ein Heizungsbauer entwickelt dafür die Statik mit. Auf diese Weise verbreite sich das Projektwissen im Team, erläutern beide Architekten eifrig.

Man präsentiert ihr einen Wohnwagen. Ihren Hinweis auf fehlende Küche, Keller und Dachgeschoss nehmen die Extrem-Architekten mit großem Interesse auf (ohne ihn jedoch schriftlich zu fixieren).

Weitere sechs Wochen später hat das Team eine riesige Grube als Keller ausgehoben und den Wohnwagen auf Holzbohlen provisorisch darüber befestigt. Das Kellerfundament haben ein Zimmermann und ein Statiker gegossen. Leider blieb der Beton zu flüssig. Geeignete Tests seien aber bereits entwickelt, dieser Fehler käme garantiert nie wieder vor.

Mehrere weitere 6-Wochen-Zyklen gehen ins Land. Bevor unsere Unternehmerin das Projekt (vorzeitig) für beendet erklärt, findet sie zwar die von ihr gewünschte Küche, leider jedoch im Keller. Ein Refactoring dieses Problems sei nicht effektiv, erklärte man ihr. Dafür habe man im Dach einen Teil der Wohnwagenküche verbaut, sodass insgesamt die Zahl der Küchen-Gummibären erreicht worden sei.

Das immer noch flüssige Kellerfundament hat eines der Teams bewogen, auf die Seitenwände des Hauses auf Dauer zu verzichten, um die Lüftung des Kellers sicherzustellen. Im Übrigen besitzt das Haus nur ein Geschoss, das aktuelle Statik-Team (bestehend aus Zimmermann und Gärtner) hat dafür die Garage in drei Kinderzimmer unterteilt.

Weil das Team nach eigenen Aussagen auf die lästige und schwergewichtige Dokumentation verzichtet hatte, waren auch keine Aufzeichnungen der ursprünglichen Planung mehr erhalten.

Im Nachhinein beriefen sich alle Projektteams auf ihren Erfolg. Niemand hatte bemerkt, dass die Bauherrin keines der „implementierten“ Häuser wirklich akzeptierte.

Chaos nur am Bau?

Keineswegs! Ähnlichkeiten mit bekannten Vorgehensweisen bei der Softwareentwicklung sind ausdrücklich gewollt, denn nicht nur beim Hausbau herrscht Chaos.1 Auch andere Ingenieurdisziplinen erleben turbulente Situationen, obwohl der Maschinenbau über mehr als 200 Jahre Erfahrung verfügt. In der Softwarebranche geht es mindestens ebenso schlimm zu.

Der regelmäßige Chaos-Report der Standish-Group zeigt eine seit Jahren gleichbleibende Tendenz: Über 30 % aller Softwareprojekte werden (erfolglos) vorzeitig beendet, in über 50 % aller Softwareprojekte kommt es zu drastischen Kosten- oder Terminüberschreitungen.2

1.1 Softwarearchitekt(inn)en
Image

Liebe Softwarearchitektinnen – ich meine überall auch Sie – obwohl ich im weiteren Buch durchgängig die maskuline (weil kürzere) Form „Softwarearchitekt“ verwende. Ich meine grundsätzlich Softwarearchitektinnen und Softwarearchitekten – verzichte aber auf künstliche Konstrukte wie Softwarearchitekt*innen.
Danke für Ihr Verständnis!

Image

Softwarearchitekten allein können diese Probleme nicht lösen. Stakeholder mit klaren Zielvorstellungen, ein motiviertes Entwicklungsteam und ein effektives, flexibles und (hoffentlich) agiles Management bilden wichtige Voraussetzungen für erfolgreiche Softwareentwicklung3.

Die Rolle „Softwarearchitektur“ kommt in Softwareprojekten besondere Bedeutung zu:

Image

Softwarearchitekten bilden die Schnittstelle zwischen Analyse, Entwurf, Implementierung, Management und Betrieb von Software.

Image

Architekten als Anwälte der Kunden

Diese verantwortungsvolle Schlüsselrolle bleibt in vielen Projekten oft unbesetzt oder wird nicht angemessen ausgefüllt. Architekten sollten als „Anwälte der Kunden“ arbeiten. Sie sollen sicherstellen, dass die Anforderungen der Kunden einerseits umsetzbar sind und andererseits auch umgesetzt werden.

Langfristigkeit

Softwarearchitekten denken langfristig – auf die gesamte Lebensdauer von IT-Systemen bezogen. Sie ermöglichen kurzfristige Änderungen, sichern gleichzeitig die Langlebigkeit und Nachhaltigkeit von Software.

Konzeptionelle Integrität

Softwarearchitekten verfolgen konzeptionelle Integrität (auch genannt Konsistenz): Die gesamte Konstruktion von Software sollte einem einheitlichen Stil folgen. Insbesondere sollten ähnliche Aufgabenstellungen in Systemen ähnlich gelöst werden. Dies erleichtert das Verständnis und die langfristige Weiterentwicklung.

Das Buch gibt aktiven und angehenden Softwarearchitekten praktische Ratschläge und Hilfsmittel, diese komplexe Aufgabe effektiver zu erfüllen. Es unterbreitet konkrete Vorschläge, wie Sie als Softwarearchitekt in der Praxis vorgehen sollten. Auch wenn Sie in anderen Funktionen in Softwareprojekten arbeiten, kann dieses Buch Ihnen helfen. Sie werden verstehen, welche Bedeutung Architekturen besitzen und wo die Probleme beim Entwurf von Architekturen liegen.

1.2 Effektiv, agil und pragmatisch

Effektivität, Agilität und Pragmatismus prägen die Grundhaltung erfolgreicher Softwarearchitekten.

Agilität ist notwendig

Software wird in vielen Projekten immer noch als starres, unveränderliches Produkt betrachtet, obwohl Anwender und Auftraggeber laut nach hochgradig flexiblen Lösungen rufen. In der Praxis ähnelt die Softwareentwicklung leider oftmals eher dem Brückenbau: Eine Rheinbrücke bleibt auch in den kommenden Jahren eine Rheinbrücke. Weder verändert sich der Flusslauf noch wird aus einer Eisenbahnbrücke eine Startbahn für Passagierflugzeuge. Für Software stellt sich die Lage ganz anders dar: Hier kann aus einem abteilungsinternen Informationssystem schnell eine global genutzte Internet-E-Business-Lösung entstehen.

Langjährige Untersuchungen ergeben, dass sich 10 bis 25 % der Anforderungen an Software pro Jahr ändern (Quelle: Peter Hruschka). Management und Architekten von Softwareprojekten müssen sich durch flexible und bedarfsgerechte Vorgehensweisen darauf einstellen. Das Schlüsselwort lautet „Agilität“.

Agilität und flexibles Vorgehen wird in Softwareprojekten an vielen Stellen dringend benötigt:

Image       Requirements Manager müssen in Projekten flexibel mit Änderungen von Anforderungen umgehen.

Image       Softwarearchitekturen müssen stabile Grundgerüste bereitstellen, die die Umsetzung neuer und geänderter Anforderungen ermöglichen. In der heutigen Marktsituation müssen solche Änderungen schnell und effektiv erfolgen – oder sie sind wirkungslos.

Image       Projekt- und Produktmanager müssen in der Lage sein, während der Erstellung eines Systems flexibel auf neue Anforderungen, neue Technologien oder aktualisierte Produkte zu reagieren. Hier bietet agiles Vorgehen und risikobasiertes Projektmanagement viele Vorteile gegenüber den strikt am Vorgehensmodell orientierten konventionellen Methoden.

Image       Dokumentation muss sich an spezifischen Projektbedürfnissen orientieren statt an fix vorgegebenen Ergebnistypen. Inhalt ist in flexiblen Projekten wichtiger als Form.

Image       Agilität erfordert allerdings auch hohe Qualifikation und Professionalität der Beteiligten. Wenn Sie in einem agilen Projekt arbeiten, müssen Sie in allen Belangen mitdenken und Verantwortung übernehmen.

Insgesamt zählt in einem Projekt nur das Ergebnis. Selten kümmern sich Anwender oder Auftraggeber im Nachhinein um die Einhaltung starrer Vorgehensmodelle.

Softwarearchitekten müssen in ihrer Funktion als Schnittstelle zwischen den Projektbeteiligten diesen Ansatz der Agilität aufnehmen und in der Praxis umsetzen.

Image

Handeln Sie agil!

Von Peter Hruschka

Agil heißt beweglich und flexibel sein. Mitdenken statt „Dienst nach Vorschrift“ und Dogma.

Kein Vorgehensmodell passt für alle Arten von Projekten. Eine agile Vorgehensweise beurteilt das jeweilige Risiko der unterschiedlichen Aufgaben bei der Softwareentwicklung und wählt dann die geeigneten Maßnahmen. Folgende Schwerpunkte werden dabei gesetzt:

Image       offen für Änderungen statt Festhalten an alten Plänen,

Image       eher ergebnisorientiert als prozessorientiert,

Image       „miteinander darüber reden“ statt „gegeneinander schreiben“,

Image       eher Vertrauen als Kontrolle,

Image       Bottom-up „Best Practices“ austauschen und etablieren statt Top-down-Vorgaben diktieren.

Trotzdem heißt „Agilität“ nicht, Anarchie zuzulassen:

Image       Agile Vorgehensmodelle haben Ergebnisse, nur unterscheiden sich diese für unterschiedliche Projekte in Anzahl, Tiefgang und Formalismus.

Image       Agile Entwicklung kennt Prozesse, nur lassen diese mehr Spielraum für Alternativen und Kreativität.

Image       Agile Methoden setzen auf Verantwortung; es werden nur notwendige Rollen besetzt.

Image       Agile Methoden basieren auf Feedback und Iterationen. Fordern und geben (push und pull) Sie Rückmeldung zu Ergebnissen – nur so können Teams und Ergebnisse besser werden.

Das Risiko entscheidet: Jeder Projektleiter, Systemanalytiker, Architekt, Tester und Entwickler überprüft ständig Risiken und entscheidet in seinem Umfeld über notwendige Maßnahmen, damit aus Risiken keine Probleme werden.

Dr. Peter Hruschka (hruschka@b-agile.de) ist unabhängiger Trainer und Methodenberater. Er ist Prinzipal der Atlantic Systems Guild, eines internationalen Think Tank von Methodengurus, deren Bücher den State of the Art wesentlich mitgestaltet haben (www.systemsguild.com).

Image

Effektiv = Ziele erreichen

Weil das Begriffspaar „effektiv und effizient“ immer wieder für Missverständnisse sorgt, möchte ich die Bedeutung beider Wörter hier kurz gegenüberstellen.

Effizient = hoher Wirkungsgrad

Eine Lexikondefinition des Begriffs „Effizienz“ lautet „Wirkungsgrad“, also das Verhältnis von Aufwand zu Ertrag. Wenn Sie Aufgaben effizient erledigen, dann arbeiten Sie also mit hohem Wirkungsgrad. Sie investieren für den gewünschten Ertrag einen minimalen Aufwand. Spitzensportler etwa vermeiden in ihren Disziplinen überflüssige Bewegungen oder Aktionen, was in hochgradig effizientem Ausführen der jeweiligen Sportart resultiert.

Prägnant ausgedrückt, bedeutet das:

Effizient = Dinge richtig machen

Effektiv = zielorientiert

„Effektiv“ bedeutet zielorientiert. Sie arbeiten effektiv, wenn Sie Dinge erledigen, die zur Erreichung Ihrer konkreten Ziele notwendig sind. Auch für diesen Begriff wieder eine prägnante Definition:

Effektiv = die richtigen Dinge machen

Es ist viel wichtiger, die richtigen Dinge zu erledigen, als irgendwelche Dinge besonders effizient zu tun.

Softwarearchitekten müssen in hohem Maße effektiv arbeiten. Kunden und Auftraggeber bestimmen Ziele, Architekten müssen sicherstellen, dass diese Ziele auch erreicht werden.

Effektiv = agil und angemessen

Effektiv bedeutet auch, angemessen und bedarfsgerecht zu agieren. Auf die Entwicklung von Software angewandt, heißt das, sich permanent an den Bedürfnissen der Kunden und Auftraggeber zu orientieren (und nicht starr an den Buchstaben eines formalen Vorgehensmodells). Ich plädiere in diesem Buch für Agilität in diesem Sinne.

Effektive Softwarearchitektur bedeutet, das (für Kunden und Auftraggeber) richtige System zu konstruieren und zu bauen – mit technisch und organisatorisch angemessenen Mitteln.

Effektiv = pragmatisch

Projekterfolg wird grundsätzlich vom Auftraggeber beurteilt, nicht vom Architekten. Auftraggeber wollen in erster Linie ein produktives System erhalten und nicht die Einhaltung eines starren Vorgehensmodells erzwingen. Architekten müssen daher den Zweck des Systems im Auge behalten.

Pragmatisches Vorgehen bedeutet:

Image       auf Dogmen und starre Vorschriften zu verzichten, wo sie nicht angemessen sind,

Image       zielorientiert (= effektiv) Lösungen im Sinne der Kunden zu entwickeln,

Image       auf Perfektionismus zu verzichten. 80 % des Ertrags erreicht man mit 20 % des Aufwands.

1.3 Wer sollte dieses Buch lesen?

Grundsätzlich können alle Stakeholder4 von diesem Buch profitieren und erhalten Antworten auf zentrale Fragen.

Image       Softwarearchitekten

Image       Was sind die Methoden und Werkzeuge unserer Zunft?

Image       Wie gehen Sie beim Entwurf von Architekturen sinnvoll vor?

Image       Welche praktisch erprobten Heuristiken und Ratschläge gibt es?

Image       Wie meistern Sie externe Einflussfaktoren, die den Entwurf von Architekturen erschweren?

Image       Welche Sichten auf Architekturen benötigen Sie in der Praxis?

Image       Softwareentwickler(innen)

Image       Wie hängen Architektur und Implementierung zusammen?

Image       Wie kann das gesamte Entwicklungsteam bei Entwurf und Pflege der Architektur konstruktiv mitwirken?

Image       Welche allgemeinen Prinzipien von Softwarearchitektur und -entwurf sollten Sie bei der Implementierung unbedingt befolgen?

Image       Alle Personen, die sich auf die Prüfung zum „Certified Professional for Software Architecture – Foundation Level“ (CPSA-F) des iSAQB e. V. vorbereiten

Image       Technische Manager(innen)

Image       Warum sollen Sie für Architektur Geld ausgeben? Warum ist Softwarearchitektur wichtig?

Image       Product-Owner, Scrum-Master, Projektleiter(innen)

Image       Was genau bewirkt Architektur in Entwicklungsprojekten?

Image       Welche Aufgaben erfüllen Softwarearchitekten?

Image       Welche Bedeutung hat die Dokumentation von Architekturen („Was bedeuten all diese Symbole?“)?

Image       Welche grundlegenden Lösungsansätze gibt es für Architekturen?

Image       Business-Analysten und Requirements-Engineers

Image       Was bedeuten all diese Begriffe, die das Entwicklungsteam und die Architekten ständig verwenden?

Image       Wie können Sie bei der Architekturentwicklung konstruktiv beitragen?

1.4 Wegweiser durch das Buch

Image

Wegweiser

Kapitel 2 erläutert die Begriffe „Architektur und Architekt“. Es beantwortet die Fragen nach dem Was, Warum und Wer von Softwarearchitekturen.

Kapitel 3 legt den Grundstock für eine flexible und systematische Vorgehensweise zum Entwurf von Softwarearchitekturen. Es beschreibt die wesentlichen Aktivitäten bei der Architekturentwicklung, das Vorgehen „im Großen“. Insbesondere erfahren Sie, wie Sie aus den Faktoren, die eine Architektur beeinflussen, angemessene Lösungsstrategien ableiten können.

Kapitel 4 widmet sich dem Entwurf von Systemen. Sie lernen hier die Grundlagen des Entwurfs, geltende Prinzipien und erprobte Heuristiken. Sie finden neben Methoden für die Strukturierung Ihrer Systeme und Bausteine sowie der Gestaltung von Schnittstellen auch die wichtigsten Architektur- und Entwurfsmuster, die Sie in unterschiedlichen Bereichen der Softwareentwicklung anwenden können. Dieses Kapitel gibt Ihnen die methodischen Werkzeuge für zielgerichtete Entwurfsentscheidungen an die Hand.

arc42 Template

Kapitel 5 beschreibt, wie Sie mit praxisorientierten Sichten Ihre Softwarearchitekturen kommunizieren und dokumentieren. Jede Sicht beschreibt das System aus einer anderen Perspektive. Außerdem finden Sie hier einige Hinweise für gute Architekturdokumentation sowie das bekannte Architekturtemplate arc42.

Passend dazu fasst Kapitel 6 die Grundlagen der Modellierung für Softwarearchitekten zusammen. Sie finden u. a. einige Basiskonstrukte der UML, abgestimmt auf die Bedürfnisse von Softwarearchitekten.

(technische) Konzepte

Kapitel 7 enthält einen Katalog häufig benötigter technischer Konzepte. Hierzu zählen Persistenz (Datenspeicherung), Integration, Verteilung, Kommunikation, Sicherheit, grafische Benutzeroberflächen, übergreifende Ablaufsteuerung (Workflow Management), Ausnahme- und Fehlerbehandlung sowie Management von Geschäftsregeln.

Kapitel 8 erklärt Ihnen die qualitative und szenariobasierte Bewertung von Softwarearchitekturen.

Evolution

Kapitel 9 beleuchtet Änderung, Modernisierung und Evolution von Software – womit Softwareentwickler vermutlich 80 % ihrer beruflichen Zeit verbringen.

Microservices

In Kapitel 10 stelle ich Ihnen die Grundlagen von Microservices vor, sowohl von der technischen wie auch organisatorischen Seite. Sie finden hier einige Hinweise auf praktische Beispiele von Microservice-Systemen.

Schließlich hebt Kapitel 11 Ihren Blick über den Tellerrand reiner Software- und Systemarchitekturen hinaus und führt Sie in die Unternehmens-IT-Architektur ein – neudeutsch Enterprise-IT-Architektur.

Beispiele von Architekturen

Kapitel 12 enthält Beispiele von Softwarearchitekturen, beschrieben nach der Strukturvorlage arc42 (die Sie in Kapitel 5 kennengelernt haben).

Kapitel 13 stellt einige Kategorien von nützlichen Werkzeugen vor sowie mögliche Kriterien für deren Auswahl.

Vorbereitung auf CPSA-F

Kapitel 14 erläutert Ihnen, wie der standardisierte Lehrplan des International Software Architecture Qualification Board (ISAQB) inhaltlich mit diesem Buch zusammenhängt. Dieses Kapitel hilft Ihnen bei der Vorbereitung zur CPSA-F-Prüfung.5

In Kapitel 15 finden Sie eine etwas andere Zusammenfassung in Form eines Reiseberichts durch die IT-Welt.

Jedes Kapitel bietet kommentierte Literaturverweise, die Ihnen Hinweise und Empfehlungen für die Vertiefung des jeweiligen Themas geben.

Tipps, Ratschläge, Heuristiken und Regeln
Image

Dieses Buch enthält viele praktische Tipps, Ratschläge, Heuristiken und Regeln. Damit Sie diese Regeln leichter auffinden können, sind sie typografisch durch graue Schattierung hervorgehoben.

Image

1.5 Webseite zum Buch

Website: www.esabuch.de

Auf der Website www.esabuch.de finden Sie Informationen, die aus Platzgründen ins Internet weichen mussten. Dazu gehören aktuelle Literaturhinweise und Links sowie sonstige Hilfsmittel für Softwarearchitekten zum Download.

https://arc42.de

Sie können unter www.arc42.de den aktuellen Stand des praxisnahen und umfassend erprobten Architekturtemplates herunterladen – hilfreich für Entwurf, Entwicklung und Dokumentation von Softwarearchitekturen.

1.6 Weiterführende Literatur

[DeMarco+07] beschreiben (äußerst humorvoll und gnadenlos wahr) mehr als 80 hilfreiche „Verhaltensmuster“ aus IT-Projekten – die meiner Meinung nach alle ITler kennen sollten.

Ebenfalls in Form informeller Muster nehmen Peter Hruschka und ich im [Knigge] diverse typische positive und negative Verhaltensweisen rund um Softwarearchitektur ins Visier.

Falls Sie Softwarearchitektur an realen Beispielen „erleben“ möchten (und Ihnen Kapitel 12 dieses Buchs nicht genügt) – unter https://leanpub.com/arc42byexample finden Sie sechs solcher Beispiele (u. a. eine Schach-Engine und ein Portal für Radsport).

Da die Ursache der meisten Krankheiten in Softwareprojekten in menschlichen statt technischen Problemen liegt, lege ich Ihnen eine eingehende Beschäftigung mit „Soft-Skills“ nahe – was besser durch Praxis als durch Literaturstudium funktioniert.

1.7 Danksagung

Danke an meine Traumfrau, Cheffe Uli, für Engelsgeduld, Motivation und tolle gemeinsame Zeit auf Bergen, Rädern, Yogamatten und Sofas sowie seit einigen Monaten auch an Hanteln. Du sorgst für mein glückliches Leben!

Danke an meine Diskussionspartner und Reviewer, dank deren Kommentaren und Ergänzungen das Buch Form (und Inhalt) annehmen konnte: Julia Conradt, Stefan Densow, Khalid Dermoumi, Karl Eilebrecht, Ralf Engelschall, Wolfgang Keller (alias Mr. Review-Torture), Klaus Kiehne, Holger Kreißl, Jürgen Krey, Christian (CK) Küster, Andreas Krüger, Dr. Carola Lilienthal, Michael Mahlberg, Prof. Erwin Mathis, Thekla Müller-Schenker, Alexander Nachtigall, Axel Noellchen, Michael Perlin, Robert Reimann, Lothar Piepmeyer, Peter Roßbach, Jan Schenk, Till Schulte-Coerne, Simon Sippert, Manuel Stahl, Thomas Walz, Stefan Zörner, Marco Zurbriggen.

Danke an Martin Bartonitz, Phillip Ghadir, Tobias Hahn, Alexander Heusingfeld, Lars Hupel, Wolfgang Korn, Tammo van Lessen, Stefan Tilkov und Oliver Wolf für ihre Beiträge.

Danke an das großartige Team der INNOQ – ihr seid die Besten!

Ich habe ungemein von den Diskussionen und Arbeiten mit Peter Hruschka rund um arc42 profitiert. Peter hat mich ursprünglich motiviert, dieses Buch überhaupt zu schreiben.

Lynn und Per, für die wirklichen Prioritäten.

Zu guter Letzt vielen Dank an meine Kunden, dass ich in Ihren/euren Projekten so viel über Softwarearchitekturen erfahren und erleben durfte.


1 Viele Grüße nach Berlin. Ähnlichkeiten mit gescheiterten Flughafenprojekten sind rein zufällig.

2 Quelle: The Standish Group Chaos Report. Erhältlich unter www.standishgroup.com

3 Eine gute Voraussetzung für Projekterfolg ist es, im Team die Eigenschaften Kompetenz, Energie und Verantwortung zu bündeln – danke an Dierk König (@mittie) für diese Formulierung.

4 Im Verlaufe des Buchs benutze ich den Begriff Stakeholder für Personen oder Organisationen, die bei der Erstellung des Systems mitwirken, es beeinflussen oder am entwickelten System ein fachliches, technisches oder kommerzielles Interesse haben.

5 CPSA-F: Certified Professional for Software Architecture

2 Architektur und Architekten