2012st.inf.tu-dresden.de/files/teaching/ws11/ring/lean architecture dokument 2012.pdf · besser...
TRANSCRIPT
Lean Architecture
2012 Lean Architecture oder auch Schlanke Architektur ist ein Lösungsansatz, der die Aufgabe adressiert, das richtige Maß an Architektur zu finden und die richtigen Elemente in die Architekturplanung einzubeziehen.
Lean Architecture 2012
2
Inhaltsverzeichnis
1 Abstract ........................................................................................................................................... 4
2 Begriffe ............................................................................................................................................ 5
2.1 Architektur ............................................................................................................................... 5
2.2 Lean ......................................................................................................................................... 5
2.3 Lean Architecture .................................................................................................................... 8
3 Vorgehensmethoden in der Softwareentwicklung ....................................................................... 11
3.1 Plangetriebene Methoden am Beispiel Wasserfall ............................................................... 11
3.1.1 Die Vorgehensweise ...................................................................................................... 11
3.1.2 Wasserfallmodell und Architektur ................................................................................ 12
3.1.3 Auswirkung auf die Architektur ..................................................................................... 13
3.2 Agile Methoden am Beispiel Scrum ...................................................................................... 14
3.2.1 Die Vorgehensweise ...................................................................................................... 14
3.2.2 Scrum und Architektur .................................................................................................. 15
3.2.3 Auswirkung auf die Architektur ..................................................................................... 16
3.3 Artefakte und Regeln............................................................................................................. 17
4 Ansätze .......................................................................................................................................... 20
4.1 Angemessenheit der Geschäftsprozesse ............................................................................... 20
4.2 Refactoring ............................................................................................................................ 22
4.3 Evolutionäres Design ............................................................................................................. 23
4.3.1 Divide, Conquer and Integrate ...................................................................................... 24
4.3.2 Inkrementelles Design ................................................................................................... 24
4.3.3 Rapid Prototyping .......................................................................................................... 25
4.4 Tools haben kaum Auswirkung auf Qualität der Architektur ................................................ 25
4.5 Architektur-Dokumentation .................................................................................................. 26
4.6 YAGNI vs. BFUD ..................................................................................................................... 27
4.7 Minimale Transaktionskosten ............................................................................................... 28
5 Fazit – Wie kann Lean Architecture erreicht werden .................................................................... 30
6 Quellen .......................................................................................................................................... 32
7 Forschung und Lehre leben vom Gedankenaustausch, dabei helfen klare Vereinbarungen ....... 34
Lean Architecture 2012
3
Tabellenverzeichnis
Tabelle 1: Die 14 Lean Prinzipien ............................................................................................................ 7
Tabelle 2: Die 14 Lean Prinzipien im Kontext Architektur ..................................................................... 10
Tabelle 3: Artefakte und Regeln je Vorgehensmethode ...................................................................... 17
Tabelle 4: Lean Prinzipien in plangetriebenen und agilen Vorgehensmethoden ................................. 18
Abbildungsverzeichnis
Abbildung 1: Phasenübergänge im Wasserfallmodell .......................................................................... 12
Abbildung 2: Wie häufig werden Features eines Systems durchschnittlich genutzt [Standish Group
1994] ...................................................................................................................................................... 21
Abbildung 3: Koevolutionsmodell des Designs nach Maher, Poon und Boulanger von 1996
[BROOKS11, S. 79] ................................................................................................................................. 23
Abbildung 4: Kosten der Softwareentwicklung [nach Lui 2008] ........................................................... 27
Abbildung 5: Gegenüberstellung von YAGNI und BUFD (siehe [COPLIEN11]) ...................................... 28
Abbildung 6: Erweiterung der Vorgehensmodelle hin zu Lean Prinzipien ............................................ 31
Lean Architecture 2012
4
1 Abstract
In der Ära der plangetriebenen Methoden befassten sich Softwarearchitekten mit langwierigem Big
Front-Up Design. Dessen Ergebnisse neigten dazu, schon bei kleinen Umweltveränderungen oder gar
Design-Fehlern auseinanderzufallen. Was verstärkend hinzukommt, ist, dass die Ära der
plangetriebenen Methoden noch lange nicht vorbei ist.
In der agilen Welt wird Architekturplanung häufig gar nicht in Betracht bezogen. Hier scheint der
Fokus einzig auf schnellem Geschäftserfolg zu liegen. Kurzfristig funktioniert dies zumeist, auf lange
Sicht wirkt sich die Vernachlässigung der Architektur eines Softwaresystems eher nachteilig aus.
Meine These lautet, das, wenn weder Big Front-Up Design noch Vernachlässigung von
Architekturplanung funktionieren, ein Lösungsweg in einer Mischung zwischen plangetriebenen und
agilen Vorgehensmethoden liegen könnte.
Lean Architecture oder auch Schlanke Architektur ist solch ein Lösungsansatz, der die Aufgabe
adressiert, das richtige Maß an Architektur zu finden und die richtigen Elemente in die
Architekturplanung einzubeziehen.
Lean Architecture 2012
5
2 Begriffe
In den folgenden Abschnitten sollen grundlegende Begriffe bekannt gemacht werden.
2.1 Architektur
Der Architekturbegriff ist für IT-Systeme nicht eindeutig definiert. Grundsätzlich werden hier unter
Architektur die Fundamente und tragenden Säulen eines Software-Systems verstanden. Sie
beschreibt
die grundlegenden Bestandteile eines Systems und deren Funktion
die Beziehungen (Schnittstellen) dieser Bestandteile untereinander
die Umwelt des Systems, also z.B. seine Partnersysteme
die Beziehungen (Schnittstellen) zwischen System und Umwelt
Die Architektur liefert darüber hinaus einen Überblick über die Komplexität eines Systems.
Implementierungsdetails des Systems gehören nicht zu dessen Architektur (siehe [Vogel08, S. 8ff]).
Architektur liegt nicht auf der Straße, sie wird entweder mühsam aus Anforderungen und
Rahmenbedingungen gewonnen oder unter Nutzung von Erfahrungen aus vergangenen Projekten,
z.B. unter Einbeziehung von Entwurfsmustern oder Referenzarchitekturen, hergeleitet. Dabei ist der
Anspruch, nicht einfach eine Architektur zu entwerfen, sondern vielmehr eine gute und
angemessene Architektur, die den Anforderungen und Rahmenbedingungen gerecht wird.
Also entwickeln wir eine gute Architektur. Laut James Shore zeichnet sich gute Architektur dadurch
aus, leicht verständlich zu sein und die sie beschreibende Software mit vertretbarem Aufwand
erstell- und anpassbar zu machen, während die Software ein angemessenes Laufzeitverhalten zeigt
(siehe [SHORE06]).
Das die leichte Änderbarkeit einer Software eine wichtige Eigenschaft ist, die von ihrer Architektur
unterstützt werden muss, zeigt sich daran, dass die Kosten einer Software durchschnittlich zwischen
40 und 90 Prozent während ihrer Wartungsphase entstehen, also wenn die Software bereits
produktiv eingesetzt wird (POPPENDIEC07, S. 20).
Wodurch unterstützt eine Architektur eine leichte Änderbarkeit der Software, die sie beschreibt? Die
Antwort auf diese Frage folgt später.
2.2 Lean
Lean bzw. Lean Management ist ein System zur Optimierung von Wertschöpfungsketten aus Sicht
von Kunden und Anbietern, wobei überflüssige Tätigkeiten vermieden werden. Ergebnis der
Optimierung sind effiziente Prozesse, die flexibel auf Veränderung reagieren können.
Lean Management hat seinen Ursprung bei Toyota, bzw. genauer im Toyota Produktionssystem
(TPS), das seinen größten Entwicklungsschub während des Ölschocks 1973 hatte, als Toyota praktisch
alle Einzelteile und Rohstoffe für seine Produktion importieren musste (siehe LIKER04, S. 15ff).
Zu den Zielen von Lean zählen beispielsweise beste Qualität, geringste Kosten, nachhaltig kurze
Durchlaufzeiten und größter Kundennutzen. Dabei basiert Lean auf zwei Grundpfeilern:
Lean Architecture 2012
6
Wertschätzung für die am Prozess beteiligten Menschen und der Wille, den Prozess ständig zu
verbessern.
Ohne kompetente Mitarbeiter, die gern ihrer Tätigkeit nachgehen, ist die Einführung von Lean oder
das Ausleben der Prinzipien von Lean nicht denkbar. Um einen Prozess verbessern zu können, muss
ich mich damit auseinandersetzen und das tue ich lieber, wenn ich dafür von meinen Kollegen
Wertschätzung erhalte und dafür aber auch meinen Kollegen dieselbe Wertschätzung zu teil werden
lasse. Dabei darf es keine Rolle spielen, ob ich Manager oder Architekt oder Entwickler bin.
Kontinuierliche Prozessverbesserung kann auf vielfältige Art und Weise durchgeführt werden. Bei
Lean wird beispielsweise aktives Wissensmanagement betrieben und mit den Mitarbeitern
Retrospektiven durchgeführt, deren Ergebnisse wiederum in die Prozessverbesserung einfließen. Bei
Problemen wird beispielsweise Root-Cause-Analysis1 durchgeführt. Prozessverbesserung im Kontext
Lean meint hier Kaizen2, nicht den Kontinuierlichen Verbesserungsprozess (KVP)3 in deutschen
Unternehmen und Behörden.
Eine wichtige Grundlage dafür, dass Lean bzw. Lean Management in einer Organisation funktioniert,
ist die langfristige, tatkräftige Unterstützung des Lean Ansatzes durch das Management der
Organisation.
Ähnlich den Prinzipien hinter dem Agilen Manifest gibt es Lean Prinzipien, mit deren Hilfe die Ziele
von Lean erreicht werden können. Im Folgenden werden diese 14 Prinzipien kurz beschrieben.
Weiterführende Informationen können [LARMAN08, S. 65ff] entnommen werden.
Lean Prinzip Interpretation
Workflow visualisieren
Bilde den durchgeführten Prozess grafisch so einfach wie möglich ab. Stelle ihn so dar, wie er tatsächlich gelebt wird und nicht, wie er eigentlich sein sollte. Das ist eine der Regeln in Kanban (siehe [ANDERSON11, S. 44f]).
Einsatz der richtigen Werkzeuge
Die Software-Werkzeuge, die den Prozess und die Mitarbeiter bei ihrer Arbeit unterstützen, sollten auch eingesetzt werden. Erinnert mich an den Joel-Test in [SPOLSKI07]: 9. Do you use the best software money can buy?
Gleichmäßige Aufgabenverteilung
Ziel dieses Prinzips ist es, ein Arbeitstempo zu finden, das von den Mitarbeitern über einen langen Zeitraum eingehalten werden kann, ohne die Mitarbeiter zu überlasten, aber auch ohne sie zu unterfordern. Korreliert mit dem Prinzip Pull statt Push.
Pull statt Push Anstatt von Managementseite vorzugeben, wie viel einer Aufgabe bis zu einem Termin fertiggestellt sein muss (Push), werden die am Prozess Beteiligten dazu angehalten, selbst festzulegen, wie viel bis zu diesem Termin geschafft werden kann (Pull). Eine implizite Konsequenz dieses Vorgehens ist eine nachhaltige Geschwindigkeit im Prozess. Zum besseren Verständnis sind an dieser Stelle Ausflüge in die Warteschlangentheorie und zu Kanban empfohlen. Der Einfachheit halber verweise ich auf [Goldratt90] und [ANDERSON11]. In Pull statt Push steckt implizit noch ein weiteres Paradigma: „Entscheide so spät wie möglich.“ Plane und führe Aufgaben genau zur richtigen Zeit4
1 Mehr Informationen zur Root-Cause-Analysis siehe [BELLINGER04]
2 Siehe [BRUNNER08, S. 11ff]
3 KVP stellt durch seine Schwerfälligkeit eher einen Kontinuierlichen Verbesserungs-Verhinderungsprozess dar.
4 Just in Time
Lean Architecture 2012
7
Lean Prinzip Interpretation
aus und nicht deutlich vorher, da sich Anforderungen und Rahmenbedingungen bis dahin geändert haben können, deine Arbeit wertlos wird und es dadurch zu Verschwendung von Ressourcen kommt.
Wertflussoptimierung Hier geht es darum, den Kundenauftrag zum frühesten möglichen Zeitpunkt zu erfüllen, zum einen, um den Kunden zufrieden zu stellen und nicht unwichtiger, zum frühesten möglichen Zeitpunkt Feedback vom Kunden zu erhalten und dieses Feedback in den Wertschöpfungsprozess einfließen zu lassen.
Entscheidungen mit langfristigem Fokus treffen
Auf den ersten Blick kollidiert dieses Paradigma mit Wertflussoptimierung und Pull statt Push. Es gilt, für Entscheidungen nicht nur das aktuell relevante Problem zu beachten, sondern mindestens die bis jetzt absehbaren künftigen Aufgaben in den Entscheidungsprozess mit einzubeziehen.
Probleme zuerst lösen Kommt es zu Fehlern oder Problemen, soll nach der Ursache gesucht werden. Erst dann darf mit der eigentlichen Aufgabe fortgefahren werden.
Menschen und Teams weiterentwickeln
Ist ein Team der Ansicht, dass eine bestimmte Vorgehensweise den Prozess besser unterstützt als die bisher genutzte Methode, soll das Team dazu bevollmächtigt werden, die Vorgehensweise auszuprobieren und ausreichend Unterstützung bekommen, sein Ziel zu erreichen. Im Idealfall tritt die Prozessverbesserung tatsächlich ein. Ist die Vorgehensweise wider Erwarten nicht zielführend, hat das Team dennoch wichtige Erfahrungen gesammelt.
Entscheider aus dem Team
Idealerweise werden Entscheider aus den eigenen Mitarbeitern rekrutiert. Sie kennen das Aufgabenumfeld und sind durch ihre konkrete Erfahrung eher in der Lage, die richtigen Entscheidungen zu treffen.
Selbst kümmern Dieses Prinzip korreliert mit den Prinzipien Entscheider aus dem Team, Probleme zuerst lösen und Menschen und Teams weiterentwickeln. Das Team muss bevollmächtigt sein, sich eigenständig um Probleme und um Prozessverbesserung zu kümmern.
Entscheidungen im Konsens treffen
Ein bevollmächtigtes Team trifft Entscheidungen im Idealfall im Konsens. Die anschließende Umsetzung dieser Entscheidung kann dann effektiver/schneller erfolgen, da alle Teammitglieder hinter der Entscheidung stehen.
Lean weitertragen Dort wo Lean erfolgreich ist, sollte es an die Umgebung weitergegeben werden. Setzen Partner und Kunden Lean ein? Bringt ihnen Lean Vorteile bei der eigenen Prozessgestaltung?
Kontinuierliche Verbesserung
Es reicht uns nicht, zu verstehen, warum Dinge sind wie sie sind. Wir gehen weiter: Müssen die Dinge sein, wie sie sind? Gibt es bessere Lösungen, die die anderen Prinzipien von Lean besser unterstützen? Suche im Fehlerfall den Grund des Fehlers, nicht den Schuldigen.
Regeln gemeinsam definieren
Das Prinzip meint die Festlegung von Regeln mit denen der Prozess eingehalten bzw. die Prozesserfüllung gemessen werden kann. Die am Prozess beteiligten Mitarbeiter stimmen die Regeln ab (siehe Entscheidungen im Konsens treffen).
Tabelle 1: Die 14 Lean Prinzipien
An Lean Interessierte seien auf [LARMAN08, S. 44ff] verwiesen. Hier ist mit dem Lean Thinking House
das Modell hinter Lean, Lean Management und Lean Thinking trefflich beschrieben. Wem dies noch
nicht reicht, kann sich die empfohlener Literatur in [LARMAN08, S. 90f] zu Gemüte führen.
Lean Architecture 2012
8
Die Prinzipien hinter dem Agilen Manifest weisen mehrere Überschneidungen mit den Prinzipien von
Lean auf. Eine Folge davon ist, dass Lean bzw. Lean Management bereits auf die eine oder andere Art
und Weise in den verschiedenen Agilen Methoden integriert ist.
2.3 Lean Architecture
Wenn ich versuche, ein Problem auf die einfachste mögliche Art und Weise zu lösen, ist die Lösung
bezogen auf das konkrete Problem optimal, auf der anderen Seite aber bei sich veränderten
Anforderungen schwer anpassbar. Wer einmal die Erfahrung gemacht hat und Anforderungen, die
ursprünglich nicht vorgesehen waren, in ein System zu planen oder umzusetzen, weiß, wie aufwändig
dies sein kann. Wer diese Erfahrung mehr als einmal gemacht hat, lernt recht schnell, seine Software
so zu entwerfen und zu bauen, dass sie für ungeplante Änderungen offen ist. Diese Änderbarkeit
kommt allerdings nicht kostenlos ins System.
Hooks bieten eine Möglichkeit, einen Softwareentwurf offen für Änderungen zu gestalten. Dabei
schätzt der Architekt oder der Entwickler die Wahrscheinlichkeit von Änderungen innerhalb einer
Komponente im Voraus ab und sieht dafür „Haken“ vor, also leere Methoden mit vorgegebenen
Rückgabewerten und Parametern, in die Funktionalität bei Bedarf integriert werden kann, ohne den
Rest des Entwurfs zu verändern. Nun können wir nur schwer vorhersagen, an welchen Punkten eines
Entwurfs künftig Änderungen auftreten könnten, also werden Hooks an beliebig vielen Stellen
vorgesehen. Der Nachteil dieses Ansatzes ist eine Architektur, die komplexer ist, als die aktuellen
Anforderungen verlangen würden. Die Kunst ist, den Mittelweg zwischen Planung bisher nicht
vorgesehener Änderungen und starren, unflexiblen Systemen zu finden.
In Abschnitt 2.2 wurden die 14 Prinzipien von Lean kurz beschrieben. Wir versuchen, diese Prinzipien
in einen Kontext mit Softwarearchitektur zu bringen und so eine Definition für Lean Architecture zu
finden.
Lean Prinzip Lean Prinzip auf Softwarearchitektur angewendet
Workflow visualisieren Es existiert eine Reihe von Architekturmanagement-Frameworks im Kontext von Enterprise Architektur, die einen Prozess vorgeben. In Softwareprojekten wird in der Regel nach einem Vorgehensmodell verfahren, das den Prozess vorgibt. Der Architekturentwurf ist häufig in diesen Prozess eingebettet und mit sehr wenigen eigenen Regeln ausgestattet.
Einsatz der richtigen Werkzeuge Welche Werkzeuge stehen zur Unterstützung eines Architekturentwurfs zur Verfügung? Aus meiner Sicht gibt es kein Werkzeug für den Architekturentwurf, dass gegenüber anderen Tools herausragt, also unbedingt eingesetzt werden muss. Wenn Toolunterstützung zur Verfügung steht, sollte sie auch genutzt werden. Wenn allerdings Tools zum Selbstzweck eingesetzt werden, leidet die Architektur in der Regel darunter.
Gleichmäßige Aufgabenverteilung Korreliert mit dem Prinzip Pull statt Push. Wenn der sich in Arbeit befindliche Architekturentwurf andere Teammitglieder behindert, weil er bezogen auf ein konkretes Problem noch nicht fertig ist, müssen die Teammitglieder beim
Lean Architecture 2012
9
Lean Prinzip Lean Prinzip auf Softwarearchitektur angewendet
Entwurf unterstützen. Prinzipiell steckt in jedem Entwickler ein Architekt. Alternativ entsteht bei den Architekten Überlastung und die Qualität des Entwurfs lässt zu wünschen übrig.
Pull statt Push Ich beschreibe die Architektur nicht vollständig im Voraus, sondern kümmere mich nur um den Teil, der für mein aktuelles Problem erforderlich ist. Sinnvollerweise betrachte ich auch die in der nahen Zukunft geplanten Anforderungen und versuche, sie bei der Lösung meines aktuellen Problems zu berücksichtigen. Warum ist ein vollständiger Entwurf nicht sinnvoller? Unter Umständen ist mein Entwurf veraltet, wenn ich endlich an den kritischen Stellen ankomme. Bereits geleisteter Aufwand wäre verschwendet und das ist bei Lean Management verpönt.
Wertflussoptimierung Eine Softwareauslieferung an den Kunden erfolgt, sobald sie für ihn nutzbar ist und nicht erst, wenn sie vollständig fertig ist. Der Kunde hat so Gelegenheit, die Software zu nutzen bzw. zu prüfen und mir Feedback zu geben. Als Konsequenz daraus kann ich sein Feedback in die Architektur des Systems einfließen lassen und bei der Weiterentwicklung des Systems berücksichtigen. Im Kontext Architektur ist das Feedback von größerer Relevanz als die frühzeitige Auslieferung der Software an den Kunden. Wichtig ist hier das iterative Vorgehen – das Feedback muss regelmäßig kommen, also muss regelmäßig geliefert werden.
Entscheidungen mit langfristigem Fokus treffen
Dieses Prinzip kommt dem Bedarf nach Architekturplanung sehr entgegen. Es reicht nicht aus, Architekturentscheidungen für das aktuelle Problem zu treffen. Sinnvollerweise werden die Probleme, die in der nahen Zukunft bearbeitet werden sollen, in den Planungsprozess einbezogen (siehe Pull statt Push).
Probleme zuerst lösen Treten Fehler in der Architektur auf, muss der tiefere Grund gesucht werden. Ein im Kontext Lean empfohlenes Mittel ist die Root-Cause-Analyse. Frage bis zu fünf Mal, Warum ein Problem besteht, um dem eigentlichen Problem auf den Grund zu gehen.
1. Warum trägt die Architektur nicht?
Weil sie den neuen Anforderungen des Kunden nicht mehr gerecht wird.
2. Warum wird die Architektur den neuen Anforderungen des Kunden nicht mehr gerecht?
Weil seine neuen Anforderungen eine Services bedingen und diese mit der aktuellen Architektur nicht abgebildet werden können.
3. Warum kann die Architektur keine Services abbilden?
Weil die Architektur bisher auf Client-Server basiert hat und dort keine Services vorgesehen sind.
Ach so!
Menschen und Teams weiterentwickeln
Den Architekten wird wie den anderen Teammitgliedern auch, Freiraum eingeräumt, Methoden, Frameworks, Muster
Lean Architecture 2012
10
Lean Prinzip Lean Prinzip auf Softwarearchitektur angewendet
daraufhin zu untersuchen, ob sie für die Architektur eines Systems eine Verbesserung darstellen. Ist die Evaluierung erfolgreich, profitiert das gesamte Team.
Entscheider aus dem Team Idealerweise sind die Architekten die erfahrensten Mitarbeiter der jeweiligen Problemdomäne. Durch ihr tiefes Wissen sind sie in der Lage, konkrete Probleme leichter zu erfassen und zu lösen als domänenfremde Kollegen. Der Ansatz birgt natürlich auch Probleme; je nach Situation kann domänenfremde Erfahrung ebenfalls von Vorteil sein.
Selbst kümmern Genau wie jedes andere Teammitglied gehen Architekten aktiv auf Probleme und Herausforderungen zu. Geschieht dies nicht, besteht die Gefahr, dass die Architektur technische Schulden aufhäuft und unflexibel wird.
Entscheidungen im Konsens treffen
Konsens in Bezug auf die Architektur erreiche ich als Architekt, wenn ich meine Entwicklerkollegen als Kunden verstehe und die Architektur das Produkt ist, mit dem sie arbeiten wollen / müssen. Ich hole Feedback ein und lasse dieses Feedback, wo es möglich und sinnvoll ist, in die Architektur einfließen.
Lean weitertragen Wenn die Lean Prinzipien im Kontext Softwarearchitektur in meinem Projekt bzw. für mein Produkt funktionieren, können sie auch in Nachbarprojekten funktionieren. Architekten neigen ohnehin dazu, sich mit Kollegen auszutauschen.
Kontinuierliche Verbesserung Ich habe eine Architektur vorliegen und hinterfrage sie immer wieder, um sie zu optimieren bzw. an geänderte Bedingungen anzupassen.
Regeln gemeinsam definieren Im Kontext Architektur kann dies bedeuten, dass Architekten und Entwickler vereinbaren, welche Artefakte in welcher Detailtiefe von den Architekten zur Verfügung gestellt werden sollen, damit Architektur für die Entwickler greifbar wird.
Tabelle 2: Die 14 Lean Prinzipien im Kontext Architektur
Eine aus meiner Sicht naheliegende Annahme ist, dass aus dem Maß der Anwendbarkeit bzw.
Anwendung der Lean Prinzipien auf die mit der Erstellung und Pflege einer Softwarearchitektur
verbundenen Tätigkeiten und Regeln ableitbar ist, ob in einem konkreten Projekt eine Lean
Architecture vorliegt bzw. realisierbar ist.
Lean Architecture 2012
11
3 Vorgehensmethoden in der Softwareentwicklung
In der heutigen Welt der Softwareentwicklung können wir grundsätzlich zwei Arten von
Vorgehensmethoden5 beobachten: plangetriebene und agile Methoden. Mischformen beider
Methoden sind, abgesehen von der Anwendung von Extreme Programming-Praktiken in
plangetriebenen Vorgehensmethoden, eher ungebräuchlich.6
Plangetriebene Methoden zeichnen sich durch abgeschlossene, aufeinanderfolgende Projektphasen
aus, in denen jeweils bestimmte Prozesse eingehalten, Artefakte erstellt und Regeln erfüllt sein
müssen, bevor die nächste Phase begonnen werden kann. Zu den klassischen, plangetriebenen
Methoden zählen beispielsweise
Wasserfallmethode, weiterführende Informationen siehe [ROYCE87]
V-Modell XT, siehe [VMODEL10] und
Rational Unified Process (RUP), siehe [RUP11]
Agile Methoden zeichnen sich durch zeit- oder aufgabengesteuertes, iterativ-inkrementelles
Vorgehen aus. In ihrem Mittelpunkt stehen Personen und Kommunikation. Agile Methoden sind
unter anderen
Scrum, weiterführende Informationen siehe [Pichler08],
Crystal, siehe [COCKBURN05],
Feature-Driven Development (FDD), siehe [PALMER02] und
Extreme Programming, siehe [BECK05]
In den folgenden Abschnitten wird der Umgang mit Architektur in plangetriebenen und agilen
Vorgehensmethoden am Beispiel von Wasserfallmethode und Scrum beschrieben.
3.1 Plangetriebene Methoden am Beispiel Wasserfall
3.1.1 Die Vorgehensweise
Mit plangetriebenen Vorgehensmodellen zu erstellende Systeme starten mit einer Analysephase, in
der Anforderungen7 an das System erhoben werden. In der Konzeptionsphase wird beschrieben, was
getan werden muss, damit das System diesen Anforderungen gerecht wird, während in der
Entwurfsphase festgelegt wird, wie die Anforderungen umzusetzen sind. Wenig überraschend
werden Anforderungen in der Implementierungsphase gemäß dem Entwurf, also dem „Wie“
umgesetzt und in der Testphase die korrekte Realisierung des Systems gemäß dem „Was“ aus der
Konzeptionsphase geprüft. Ist diese Prüfung erfolgreich, kann das System mit der abschließenden
Einführungsphase seinem Bestimmungszweck zugeführt und benutzt werden.
5 Ich verwende die Begriffe Vorgehensmodell und Vorgehensmethode synonym.
6 Wer jetzt über V-Modell XT mit Scrum nachdenkt, betrachte bitte den Fokus beider Methoden?
Angenommen, es soll die Leistungsfähigkeit einer Autobahn festgestellt werden, dann liefert V-Modell XT die Anzahl der Autos, die auf der Autobahn geparkt werden kann. Scrum hingegen liefert die Anzahl der Autos, die die Autobahn pro Zeiteinheit passieren können. Die erste Zahl ist mit der zweiten in keiner Weise vergleichbar und so verhält es sich auch mit den beiden Modellen. 7 Es wird in der Regel zwischen funktionalen und nicht-funktionalen Anforderungen sowie Rahmenbedingungen
unterschieden (siehe [VOGEL08, Seite 107ff]).
Lean Architecture 2012
12
Im Wasserfallmodell sind Phasenübergänge in beiden Richtungen nur zur zwischen benachbarten
Phasen zugelassen (siehe Abbildung 1). Eine neue oder geänderte Anforderung muss zwingend über
die Analysephase in das System einfließen und Schritt für Schritt die folgenden Phasen bis zur
Einführung durchlaufen. Ein im Betrieb des Systems entdeckter Fehler in einer Anforderung muss
schrittweise über alle vorangehenden Phasen an den jeweiligen Vorgänger übergeben werden. Die
fehlerhafte Anforderung wird in der Anforderungsanalyse korrigiert und die erforderliche Anpassung
über die nachgelagerten Phasen nachgezogen.
In jeder Phase des Wasserfallmodells müssen zwingend Artefakte erstellt werden, deren Existenz und
Qualität Bedingung8 für den Start der jeweils nächsten Phase ist, z.B. der Anforderungskatalog in der
Analysephase, das Grobkonzept in der Konzeptionsphase, das Feinkonzept in der Entwurfsphase, die
Programmierdokumentation in der Implementierungsphase usw. Bei einer neuen oder geänderten
Anforderung müssen alle von der Änderung betroffenen Artefakte angepasst werden und die
Qualität dieser Artefakte erneut bewertet werden.
3.1.2 Wasserfallmodell und Architektur
Die Software- und Systemarchitektur im Wasserfallmodell wird während der Konzeptions- und
Entwurfsphase definiert. Während in der Konzeptionsphase die Grobarchitektur beschrieben werden
soll, muss in der Entwurfsphase die Feinarchitektur festgelegt werden. Dabei gilt es, die Architektur
so vollständig wie möglich zu beschreiben. Architekturaspekte, die in dieser Phase nicht vorhanden
bzw. nicht bereits in allgemeingültigen Dokumenten z.B. für Referenz- oder
Unternehmensarchitektur beschrieben sind, stehen für die Implementierungsphase nicht zur
Verfügung und können nicht umgesetzt werden. Wird eine solche Lücke während der
Implementierung entdeckt, muss der fehlende, falsche oder unvollständige Architekturaspekt
ergänzt/korrigiert werden. Die Implementierung des Architekturaspekts darf erst
begonnen/fortgesetzt werden, wenn die entsprechende Dokumentation zur Verfügung steht.
In plangetriebenen Vorgehensmodellen wird häufig zwischen fachlicher und technischer Architektur
unterschieden und diese beiden Architektursichten in getrennten Dokumenten festgeschrieben. Die
technische Architektur ist dabei in der Regel von der fachlichen Architektur abhängig. Im Idealfall
8 Der Abschluss einer Phase kann z.B. durch Passieren sogenannter Quality Gates geprüft und dokumentiert
werden (siehe [AARON09]).
Analyse
Konzeption
Entwurf
Implementierung
Test
Einführung
Abbildung 1: Phasenübergänge im Wasserfallmodell
Lean Architecture 2012
13
steht die fachliche Architektur bereits fest, wenn mit der Beschreibung der technischen Architektur
begonnen wird.
Die im vorangegangenen Abschnitt beschriebene Prüfung von Artefakten gilt auch für
Architekturartefakte. Big Picture, Grob- und Feinarchitektur aus fachlicher und technischer Sicht
müssen in ausreichender Qualität vorhanden sein, bevor die Implementierungsphase begonnen
werden darf.
3.1.3 Auswirkung auf die Architektur
Die Software- und Systemarchitektur in mit plangetriebenen Methoden durchgeführten Projekten
kann monolithische Strukturen aufweisen und auf Grund der Mächtigkeit der Methode schwer
änderbar sein.9 Eine Ursache hierfür ist die Annahme, dass die Anforderungen, die mit der Software-
und Systemarchitektur erfüllt werden sollen, vollständig beschrieben sind. Entsprechend wird
Änderungen oder Änderbarkeit der Software auf Architekturebene wenig bis kein Raum gewährt.
Kommt es trotzdem zu Änderungen, sind häufig hohe Kosten bei Planung und Durchführung von
Änderungen die Folge.
Eine weitere Ursache für die Schwerfälligkeit gegenüber Änderungen ist in der umfangreichen
Konzeption und Dokumentation der Architektur zu finden. Um dem Prozess der plangesteuerten
Methode gerecht zu werden, ist eine hohe Anzahl von architekturrelevanten Artefakten zu erstellen.
Diese Artefakte gehören teilweise nur indirekt zur Architektur, sind aber für deren Beschreibung im
Rahmen der Methode zwingend erforderlich. Werden diese Architektur-Artefakte nicht in
ausreichender Qualität zur Verfügung gestellt, werden Quality Gates der plangetriebenen Methode
nicht erfüllt und das Softwareprojekt darf nicht fortgeführt werden. Zu diesen Architekturartefakten
können folgende Dokumente gezählt werden.
Big Picture bzw. Architekturüberblick
Grobkonzept oder Grobarchitektur
Feinkonzept oder Detailarchitektur
Schnittstellenverträge und -beschreibungen
Serviceverträge und -beschreibungen
Sicherheitskonzept
Formal müssen unabhängig vom Zeitpunkt eines Änderungsbedarfs alle diese Dokumente angepasst
werden, bevor die Änderung durchgeführt werden darf. In der Realität werden die Anpassung der
Dokumente und die Änderung am System oft parallel vorgenommen, da aus den Dokumenten heraus
teilweise schwer ersichtlich ist, welche Änderung am System durchgeführt werden müssen, damit
der Änderungsbedarf erfüllt werden kann. Damit wird zum einen die plangetriebene Methode
konterkariert und eher ein iteratives Vorgehen wie in Abschnitt 4.3 beschrieben durchgeführt, zum
anderen gezeigt, dass die gewählte plangetriebene Vorgehensmethode in ihrer Reinform schwer
anwendbar ist.
Wenn sich ein Vorgehensmodell nicht für Änderungen eignet, warum sollte es dann überhaupt für
die Durchführung eines Softwareprojekts angewendet werden? Sind die Agilen Methoden nicht
9 Die Einschränkung ist keine seltene Ausnahme, gilt aber nicht für jeden Architekturentwurf. Es sind durchaus
Systeme denkbar, bei denen monolithische Architekturen nicht als Nachteil betrachtet werden.
Lean Architecture 2012
14
ohnehin die bessere Wahl für die Softwareentwicklung? Ja und Nein. Es kommt darauf an, welchen
Fokus die Software, die entwickelt werden soll, hat.
Besteht die Gefahr, dass durch Fehler im System Leben auf dem Spiel steht oder große Summen
Geldes verloren gehen können, gleichzeitig aber die Änderungswahrscheinlichkeit von
Anforderungen an das System gering ist oder diese Änderungen nicht zeit-, finanz- und lebenskritisch
sind, ist eine plangetriebene Vorgehensmethode durchaus die bessere Wahl.
Besteht die Gefahr, dass durch die Schwerfälligkeit einer plangetriebenen Methode Änderungen am
System nicht rechtzeitig durchgeführt werden können und dadurch Leben oder große Geldbeträge
auf dem Spiel stehen, tendiere ich eher zur Anwendung von Agilen Methoden.
Die Steuerungssoftware eines Satelliten oder eines Raumschiffes beispielsweise wird eher mit Hilfe
einer klassischen, plangetriebenen Vorgehensmethode erstellt werden. In [Boehm04, S. 54ff] sind
fünf kritische Faktoren beschrieben, an Hand derer abgewogen werden kann, ob für eine konkrete
Aufgabenstellung plangetriebene oder agile Methoden angewendet werden sollen. Die Architektur
spielt bei der Abwägung eine eher untergeordnete Rolle, da die Architektur der gewählten Methodik
folgt.
3.2 Agile Methoden am Beispiel Scrum
3.2.1 Die Vorgehensweise
Scrum ist eine agile Vorgehensmethode, die unter anderem für die Durchführung von
Softwareprojekten genutzt werden kann. Scrum legt dabei Wert auf die Menschen im Umfeld des
Projekts und die Kommunikation dieser Personen untereinander. Scrum kennt im Gegensatz zu
plangetriebenen Methoden nur sehr wenige Regeln und Artefakte, was die Methode zu einem
Prozessleichtgewicht macht. Die Vorgehensweise ist iterativ-inkrementell, d.h. innerhalb eines
vorgegebenen Zeitfensters von zwei bis sechs Wochen soll ein vereinbarter Funktionsumfang zur
Verfügung gestellt werden und in diesem Zeitfenster alle für die Erstellung der vereinbarten
Funktionalität erforderlichen Tätigkeiten durchgeführt werden. Scrum kennt nur drei Projektrollen:
Scrum Master, Product Owner und Scrum Team. Scrum kennt weder Projektleiter, noch Risiko- oder
Release Manager, allerdings auch keinen Architekten.
Scrum zeichnet sich wie alle Agilen Methoden dadurch aus, leichter auf geänderte Anforderungen
oder Umweltbedingungen reagieren zu können als dies mit plangetriebenen Vorgehensmodellen
möglich ist. Dadurch, dass ein System oder eine Software nicht erst komplett geplant und nach
diesem Plan umgesetzt wird, sondern in kleinen Schritten vorgegangen wird und nach jedem Schritt
geprüft wird, ob sich die Entwicklung noch in die richtige Richtung bewegt, fällt es leichter, den
Abgrund oder den reißenden Fluss zu erkennen, der sich plötzlich vor dem System auftut.10
Die Prüfung, ob sich das Projekt noch in die richtige Richtung bewegt, wird durch den Product Owner
im Sprint Review Meeting im Idealfall im Beisein von Kunden vorgenommen. Das Scrum Team
präsentiert die für den Sprint vereinbarte Funktionalität; der Product Owner bewertet live, ob die
Funktionalität der Vereinbarung entspricht. Vielleicht entscheidet der Product Owner, dass eine
Funktionalität zwar umgesetzt wurde, er aber eine Ergänzung wünscht, die gleich im nächsten Sprint
10
In klassischen Vorgehensmodellen werden diese plötzlich auftretenden Abgründe und Flüsse in der Regel erkannt, wenn sich das Projekt im freien Fall oder im Wasser befindet.
Lean Architecture 2012
15
geliefert werden soll oder dass jetzt, wo eine bestimmte Funktionalität bereit gestellt wurde, eine
ähnliche Funktionalität, die auf der eben gelieferten aufsetzt, angefordert werden kann.11
3.2.2 Scrum und Architektur
Oberflächlich betrachtet wird in Scrum-Projekten kein Augenmerk auf Architektur gelegt. So gibt es
keine Regel, die festlegt, wann und in welchem Umfang Architektur geplant oder berücksichtigt
werden muss. Die Verantwortung für die Architektur liegt beim Scrum Team.
Während der Vorbereitung auf ein Scrum-Projekt, in der Regel im Sprint 0 (die allererste
Iteration) sollen grundlegende Architekturentscheidungen getroffen werden
bei der Planung jedes weiteren Sprints im Sprint Planning Meeting muss für jede User Story
geprüft werden, inwiefern ihre Realisierung Auswirkungen auf die bereits bestehende
Architektur hat oder inwiefern die Architektur des Systems angepasst werden muss, um die
User Story sinnvoll umsetzen zu können.
„Muss“ und „soll“ wurde hier bewusst gewählt; die Realität sieht leider etwas anders aus. User
Stories, die Anforderungen in Scrum, müssen den Geschäftswert einer Software bzw. eines Systems
für den Kunden erhöhen.
„Als Sachbearbeiter benötige ich eine Übersicht über meine offenen Aufgaben, um ihre
zeitgerechte Erledigung gewährleisten zu können.“
Aktivitäten, die den Geschäftswert einer Software nicht direkt erhöhen, werden je nach Projekt nicht
ausgeführt oder vor dem Kunden versteckt. Die Umstellung des Komponentenschnitts einer Software
erhöht den Geschäftswert nicht und wird deswegen entweder nicht durchgeführt, was z.B. die
Änderbarkeit der Software in der Zukunft behindern kann, oder heimlich ausgeführt. Der Kunde
wundert sich vielleicht, dass eine User Story während der Umsetzung aufwändiger ist, als sie ihm
erscheint. Da der Kunde seine Funktionalität letztlich wie gewünscht geliefert bekommt, spielt der
Aufwand für ihn nur eine untergeordnete Rolle. Eine User Story wie die folgende würde heute beim
Agilen Kunden einen Sturm der Empörung hervorrufen.
„Als Systemeigentümer möchte ich eine leicht wartbare Software, um mit vertretbarem
Aufwand auf Änderungen reagieren zu können.“
In dieser User Story ist für den Kunden auf den ersten Blick kein Geschäftswert erkennbar, sollte man
denken. Vielleicht ist es in der Agilen Welt an der Zeit, den Kunden den Geschäftswert leicht
wartbarer Software zu erklären, in der neue oder geänderte Anforderungen untergebracht werden
können, ohne die Software komplett umbauen zu müssen oder neu zu schreiben. Der Aufwand einer
Änderung ist ein Geschäftswert, der minimiert werden kann.
Im Gegensatz zu plangetriebenen Vorgehensmethoden wird bei Scrum-Projekten kein expliziter Wert
auf Architekturdokumentation gelegt. Scrum selbst kennt keine Regel die die Dokumentation einer
Software oder gar der Architektur festschreibt. Zur Einhaltung entsprechender Regeln müssen eher
11
In klassischen Vorgehensmodellen sieht der Kunde in der Regel erst nach Fertigstellung der Software, wie und ob seine Anforderungen erfüllt wurden. Frühes Kundenfeedback wie bei den agilen Methoden ist in plangesteuerten Modellen eher unüblich.
Lean Architecture 2012
16
das Agile Manifest12 oder parallel zu Scrum betriebene Agile Methoden wie Extreme Programming13
herhalten.
3.2.3 Auswirkung auf die Architektur
In meiner Wahrnehmung fällt das Los der Architektur in Agilen Projekten in zwei Kategorien:
Berücksichtigung und Vernachlässigung.
Ein Teil der Agilen Projekte neigt in der Realität dazu, Architekturaspekte zu vernachlässigen oder
deren Berücksichtigung vor den Kunden zu verstecken (siehe Abschnitt 3.2.2). Eine Folge dieses
Verhaltens sind Systeme, deren Änderbarkeit mit steigender Lebensdauer immer stärker abnimmt. Je
stärker das System geändert wurde, desto länger dauert es, eine Änderung vorzunehmen. Zwingend
notwendige Refactorings (siehe Abschnitt 4.2) werden nicht durchgeführt, weil sie den
Geschäftswert der Software nicht erhöhen. Werden neben der Architektur auch noch automatische
Tests außer Acht gelassen, steigt unter Umständen auch die Fehlerhäufigkeit und die
Fehleranfälligkeit im System. Der Endzustand eines solchen Verhaltens ist ein nicht wartbares
System, dessen Schicksal eine Neuentwicklung ist. Im schlechtesten möglichen Fall werden bei dieser
Neuentwicklung dieselben Fehler wiederholt.
In der idealen Scrum-Welt, die glücklicherweise häufig genug auch die reale Welt streift, werden
Architekturaspekte entsprechend aktueller Anforderungen sehr wohl berücksichtigt. Was diesen
Projekten jedoch fehlt ist der ganzheitliche Architekturansatz. Anstatt Architektur vorausschauend zu
planen, wird sie aufgabenbezogen berücksichtigt. Eine Folge ist, dass metaphorisch zehnmal ein
Schritt gemacht wird statt einmal fünf, um zum selben Ergebnis im Kontext der Architektur zu
kommen. Mit vorausschauender Planung meine ich nicht den Architekturansatz der plangetriebenen
Vorgehensmethoden, sondern Architekturplanung für die nächsten drei bis fünf Iterationen. Diese
Vorgehensweise widerspricht in gewissem Maß den Prinzipien von Scrum. Scrum hat allerdings nicht
den Anspruch allgemeingültig zu sein; Anpassungen am Prozess sind sehr wohl zulässig, sofern sie
notwendig sind.14 Eine wichtige Voraussetzung für die vorausschauende Architekturplanung in Scrum
ist ein gut gepflegte Product Backlog und ein Product Owner, der genug Weitblick für die nächsten
Iterationen im Projekt hat.
Architektur muss in Scrum dokumentiert werden, allerdings wird in einem agilen Projekt niemand auf
die Idee kommen, die Systemarchitektur vollständig nach zu dokumentieren. Dies würde bedeuten,
einen wichtigen Vorteil agiler Methoden, Reaktionsfähigkeit auf Änderungen, zu verspielen, denn in
dem Moment, wo eine umfangreiche Dokumentation vorhanden ist, muss sie auch (aufwändig)
gepflegt werden.
Wichtig aus meiner Sicht ist, in Architekturentscheidungen festzuhalten, warum die Architektur an
einer bestimmten Stelle das Entwurfsmuster X enthält und warum man sich gegen Alternative Y
entschieden hat. Verfügt das System dazu noch über ein Big Picture, das den aktuellen Zustand der
12
Siehe http://agilemanifesto.org/ 13
Siehe [BECK04] 14
Eine Anwendung, bei dem in Scrum vorausschauend geplant wird, sind Projekte mit mehreren Teams, wenn zwischen den Teams Abhängigkeiten entstehen, z.B. ein Team eine Zulieferung für ein anderes Team macht und dieses andere Team mit einer Aufgabe erst dann beginnen kann, wenn diese Zulieferung erfolgt ist (siehe [LARMAN09, S. 289ff]).
Lean Architecture 2012
17
Systemarchitektur widerspiegelt, steht dem System aus Architektursicht eine lange Lebensdauer
bevor.
3.3 Artefakte und Regeln
Alle Vorgehensmodelle, egal ob RUP, Scrum, Kanban oder V-Modell XT, haben eine Gemeinsamkeit:
Um das jeweilige Vorgehensmodell zu erfüllen, müssen Regeln eingehalten und Artefakte gepflegt
werden. Je nach Anzahl der zu erfüllenden Regeln bzw. erforderlichen Artefakte wird zwischen
schwer- und leichtgewichtigen Modellen unterschieden. Die nachfolgende Tabelle stellt beispielhaft
einige Vorgehensmodelle gegenüber.
Vorgehensmodell Regeln und Artefakte
Rational Unified Process (RUP) ca. 120
V-Modell XT 70 bis 100, je nach Konsequenz der Regelauslegung
Scrum 13
Extreme Programming (XP) 13
Kanban 4
Hacking 0 Tabelle 3: Artefakte und Regeln je Vorgehensmethode
Je mehr Regeln eingehalten und Artefakte erstellt/gepflegt werden müssen, desto aufwändiger ist es,
Änderungen durchzuführen und dabei den Prozess einzuhalten. Die Komplexität der Artefakte und
die Beziehungen der Artefakte untereinander z.B. über Querverweise oder Versionen von Artefakten,
erhöhen den Aufwand von Änderungen noch mehr.
Die Leichtgewichtigkeit von agilen Methoden wie Scrum oder XP suggeriert weniger Aufwand bei der
Durchführung von Änderungen. Scrum kennt vier durch die Methode vorgegebene Artefakte:
Product Backlog, Sprint Backlog, Taskboard und Burndown Chart. Besteht das Projekt aus mehreren
Teams, gibt es pro Team ein Sprint Backlog, Taskboard und Burndown Chart. Das Product Backlog
verwenden alle Teams, die am Produkt arbeiten, gemeinsam.
In Abschnitt 2.2 ist eine Übersicht der 14 Lean Prinzipien aufgeführt. Im Folgenden versuche ich,
diese Lean Prinzipien auf plangetriebene und agile Vorgehensmethoden anzuwenden. Meine
Annahme ist, dass die vielen Artefakte und Regeln der plangetriebenen Vorgehensmethoden im
Gegensatz zu agilen Methoden die Anwendbarkeit der Lean Prinzipien erschweren, wenn nicht sogar
verhindern.
Wird ein Prinzip von einer der Methoden weder unterstützt noch behindert, ist die entsprechende
Zelle grau markiert. Unterstützt eine Methode ein Lean Prinzip, ist der Hintergrund der Zelle grün,
behindert sie ein Prinzip, ist sie rot hinterlegt.
Lean Prinzip Plangetriebene Methode Agile Methode
Workflow visualisieren Anwendung möglich. Anwendung möglich.
Einsatz der richtigen Werkzeuge
Anwendung möglich. Anwendung möglich.
Gleichmäßige Aufgabenverteilung
Plangetriebene Methoden legen konkret fest, welche Aufgaben in welchem Zeitraum erledigt werden müssen.
Anwendung je nach Methode möglich.
Pull statt Push Siehe vorheriger Punkt. Anwendung möglich.
Lean Architecture 2012
18
Lean Prinzip Plangetriebene Methode Agile Methode
Wertflussoptimierung Eine Prozessoptimierung bedingt Plananpassungen. Dies ist in plangetriebenen Methoden unerwünscht. Plangetriebene Methoden neigen dazu, gegen Optimierung resistent zu sein.
Anwendung möglich.
Entscheidungen mit langfristigem Fokus treffen
Anwendung möglich. Anwendung möglich.
Probleme zuerst lösen Fokus ist die Planerfüllung. Für Aufgaben außerhalb des Plans müssen Puffer vorgesehen werden, sonst scheint eine Planerfüllung schwer möglich.
Anwendung möglich.
Menschen und Teams weiterentwickeln
Eher von der Organisationskultur als von der Methode abhängig.
Eher von der Organisationskultur als von der Methode abhängig.
Entscheider aus dem Team
Siehe vorhergehender Punkt Siehe vorhergehender Punkt
Selbst kümmern Klare Vorgaben für Rollen und Aufgaben. Proaktives Handeln wird eher verhindert als unterstützt.
Anwendung möglich.
Entscheidungen im Konsens treffen
Entscheidungen werden durch das Management getroffen bzw. sind bereits durch die Methode vorgegeben.
Anwendung möglich.
Lean weitertragen Anwendung scheint nicht möglich Anwendung möglich.
Kontinuierliche Verbesserung
Eine Prozessoptimierung bedingt Plananpassungen. Dies ist in plangetriebenen Methoden unerwünscht. Plangetriebene Methoden neigen dazu, gegen Optimierung resistent zu sein.
Anwendung möglich.
Regeln gemeinsam definieren
Regeln werden durch die Methode und das Management festgelegt.
Anwendung möglich.
Tabelle 4: Lean Prinzipien in plangetriebenen und agilen Vorgehensmethoden
Aus dieser Gegenüberstellung lassen sich aus meiner Sicht die folgenden Schlüsse ziehen.
Plangetriebene Vorgehensmethoden sind für die Anwendung der Lean Prinzipien ungeeignet.
Überall dort, wo Interaktionen mit Projektteilnehmern erforderlich sind, sind durch die
Methode klare Regeln vorgegeben.
Agile Methoden unterstützen die Lean Prinzipien. Dort, wo keine explizite Unterstützung
vorliegt, werden die Prinzipien zumindest nicht behindert.
Aus diesen beiden Feststellungen lassen sich folgende Schlüsse für Architekturaspekte in Projekten
mit plangetriebenen und agilen Methoden ziehen.
In einem mit agilen Vorgehensmethoden durchgeführten Projekt kann durch die Anwendung
der Lean Prinzipien eine Lean Architecture erreicht werden. Voraussetzung dafür ist, dass die
Regeln der Methode in Bezug auf die Architektur um die Lean Prinzipien erweitert werden.
Lean Architecture 2012
19
In Projekten mit plangetriebenen Vorgehensmethoden ist dies wegen fehlender
Unterstützung der Lean Prinzipien nicht denkbar.
Lean Architecture 2012
20
4 Ansätze
In den Abschnitten 3.2.2 und 3.2.3 wurde beschrieben, dass architekturgetriebene Tätigkeiten bei
Anwendung agiler Methoden, konkret am Beispiel Scrum, eher vernachlässigt oder versteckt werden.
Mit Abschnitt 3.3 wurde abgeleitet, dass agile Vorgehensmethoden gut geeignet sind, Lean Prinzipien
und ihre Ausprägungen im Zusammenhang mit Architektur zu unterstützen. Hier besteht insofern ein
Widerspruch dass Eignung für Lean Prinzipien nicht automatisch zu deren tatsächlicher Verwendung
führt. Was augenscheinlich fehlt, sind Methoden, die den konkreten Lean Prinzipien Anwendung
verschaffen.
In den folgenden Abschnitten werden mehrere Ansätze beschrieben, die die Einhaltung der Lean
Prinzipien bei der Erstellung und Pflege von Softwarearchitektur unterstützen oder darüber hinaus
wichtige Denkanstöße liefern können. Zu jedem der Ansätze werden der oder die
korrespondierenden Lean Prinzipien genannt.
4.1 Angemessenheit der Geschäftsprozesse
Ein häufig beobachtetes Muster bei der Implementierung eines Systems ist das fehlende
Hinterfragen der Angemessenheit der zu implementierenden Features. Wenn die Klärung z.B.
folgender Punkte nicht stattfindet, besteht eine hohe Wahrscheinlichkeit, dass die Features des
Systems dem in Abbildung 2 dargestellten Schema entsprechen.
Sind die Prozesse optimal geschnitten?
Befasst sich das System mit mehr als einer Aufgabenstellung?
Enthalten die Prozesse überflüssige Features oder fehlen Features?
Ist das System klar von seiner Umwelt abgegrenzt?
Lean Architecture 2012
21
Abbildung 2: Wie häufig werden Features eines Systems durchschnittlich genutzt [Standish Group 1994]
Die Erhebung aus dem Jahr 1994 in Abbildung 2 mag veraltet erscheinen, die enthaltenen Zahlen sind
aus eigener Erfahrung aktuell. Im Kontext Lean Architecture erscheint folgende Interpretation
angebracht.
64 Prozent der Features einer Software sind unwichtig, da sie nicht oder nur selten genutzt
werden; von einer Realisierung muss aus Kostengründen abgesehen werden
20 Prozent der Features sind wichtig; diese Features müssen umgesetzt werden
16 Prozent der Features werden manchmal genutzt; die Realisierung muss für jedes der
betroffenen Features genau abgewogen werden
Im Ergebnis werden durchschnittlich zwischen 20 und 36 Prozent der Features eines Systems wirklich
benötigt. Nur diese Features sind wichtig, über die Realisierung der restlichen 64 bis 80 Prozent der
Features darf gar nicht erst nachgedacht werden. Die Komplexität des Systems reduziert sich auf
etwa ein Drittel der Gesamtmenge der Features, was jedoch nicht mit einem Drittel des
angenommenen Umfangs verwechselt werden darf. Diese verringerte Komplexität beeinflusst
hoffentlich die Architektur des betroffenen Systems, da sie mit dem Wissen um die wichtigen
Features ebenfalls weniger komplex ausfällt.
Leider lässt sich der Schnitt zwischen wichtigen und unwichtigen Features im Vorfeld zur
Implementierung eines Systems nur selten zuverlässig ermitteln. Es gibt mindestens zwei denkbare
Vorgehensweisen
inkrementelles Vorgehen, bei dem nach jedem Inkrement erneut abgewogen wird, ob und
welche weiteren wichtigen Features im System noch fehlen (siehe Abschnitt 4.3)
45
19
16
13
7
Niemals
Selten
Manchmal
Oft
Immer
Lean Architecture 2012
22
irrtümlich als wichtig betrachtete Features werden wieder aus dem System entfernt und
damit Abhängigkeiten im System verringert (siehe Abschnitt 4.2)
Der in diesem Abschnitt beschriebene Abstraktionslevel „System und seine Features“ ist nur ein
Beispiel für das hier beschriebene Prinzip. Die Regel kann analog auf die Funktionalität einer
einzelnen Komponente oder die Gesamtheit der Systeme einer Organisation angewendet werden.
Eine Komponente neigt zu Funktionalität, die künftig „ganz sicher gebraucht wird“, letztlich aber nie
verwendet und irgendwann zurückgebaut wird. Auf der Ebene der Systeme einer Organisation
wiederum tauchen zwischen den Systemen sich häufig überschneidende Funktionsumfänge auf.
Die Prüfung der Angemessenheit einer Lösung / eines Systems unterstützt implizit die Lean Prinzipien
Kontinuierliche Verbesserung, Entscheidungen mit langfristigem Fokus treffen und
Wertflussoptimierung an.
4.2 Refactoring
Unter Refactoring oder auch Refaktorisierung wird ein Prozess zur Anpassung der inneren Struktur
bzw. des inneren Verhaltens einer Software verstanden, während das äußere Verhalten der Software
unverändert bleibt. Die interne Anpassung der Software erfolgt zur Verbesserung ihres Designs
(siehe [FOWLER05, S. XVIII]).
Ändern sich Anforderungen oder kommen neue Anforderungen hinzu, muss bestehender Code
häufig angepasst werden, damit das System diesen neuen oder geänderten Anforderungen gerecht
werden kann. Wird dabei ausschließlich Wert auf die Realisierung der Anforderungen gelegt, leidet
die Qualität des Codes. Die Wartbarkeit der Software verschlechtert sich. Änderungen können im
Lauf der Zeit nur mit immer größeren Aufwänden vorgenommen werden. Die Entwickler hinterlassen
im System technische Schulden.
Spätestens jetzt sind Refactorings zwingend erforderlich, um die Software wieder in einen wartbaren
Zustand zu überführen. Das äußere Verhalten der Software wird mit Hilfe automatischer Tests
festgestellt und nach der Anpassung mit Hilfe derselben Tests verifiziert. Verfügt die Software über
keine automatischen Tests, ist ein Refactoring praktisch nicht möglich, da nicht sichergestellt werden
kann, dass das äußere Verhalten der Software nach dem Refactoring unverändert geblieben ist.
Verbesserung des Designs einer Software meint im Kontext Refactoring auch eine Verbesserung der
Architektur. Weiterführende Informationen zum Refactoring auf Code- und Designebene können
beispielsweise [FOWLER05] entnommen werden.
Refactoring auf die Code- und Designebene zu beschränken, greift aus meiner Sicht zu kurz. Die
Konsolidierung der Anwendungslandschaft einer Organisation oder die Aktualisierung eines
Standards kann ich durchaus als Refactoring interpretieren. Auf dieser Abstraktionsebene sind
allerdings automatische Tests schwer erzeugbar. Die Beibehaltung des äußeren Verhaltens muss
durch ein anderes Konstrukt überprüft werden können.
In Abschnitt 4.1 wurde beschrieben, dass durchschnittlich 64 bis 80 Prozent der Features einer
Software nicht oder nur selten verwendet werden. Wenn ein System mit 100 Prozent der Features
entwickelt wurde, weil alle Features aus Kundensicht hohe Priorität hatten, lohnt sich die Erhebung
der Häufigkeitsklassen im Nachhinein immer noch. Wenn wir es schaffen, dem Kunden die Erkenntnis
Lean Architecture 2012
23
der nicht verwendeten Features zu vermitteln, können diese Features im Rahmen eines Refactoring
entfernt und die Flexibilität der Software für künftige Änderungen erhöht bzw. wieder hergestellt
werden.
Refactoring zielt implizit auf die Lean Prinzipien Kontinuierliche Verbesserung, Probleme zuerst lösen,
Selbst kümmern und Wertflussoptimierung ab.
4.3 Evolutionäres Design
Evolutionäres Design zeichnet sich durch einen regelmäßigen Abgleich zwischen Problem- und
Lösungsdomäne aus. Unter Problemdomäne kann im Kontext mit Architektur der Verbund aus
Anforderungen und Rahmenbedingungen verstanden werden; die Lösungsdomäne umfasst alle
Aktivitäten, die mit der Erfüllung dieser Anforderungen verbunden sind.
Zur Verdeutlichung des Abgleichs zwischen Problem- und Lösungsdomäne zeigt Abbildung 3 das
Koevolutionsmodell des Designs nach Maher, Poon und Boulanger. Nach diesem Modell kommt es
während des Designs nicht darauf an, ein Problem vollständig zu beschreiben und anschließend eine
Lösung für dieses Problem zu suchen, sondern vielmehr darum, Problem und Lösung kontinuierlich
zu entwickeln und so dafür zu sorgen, dass sich Problem- und Lösungsraum mit fortschreitender
Entwicklung immer mehr annähern [BROOKS11, S. 79f].
Abbildung 3: Koevolutionsmodell des Designs nach Maher, Poon und Boulanger von 1996 [BROOKS11, S. 79]
Bei evolutionärem Design wird grundsätzlich zwischen drei Ansätzen unterschieden.
Divide, Conquer and Integrate (DCI)
Inkrementelles Design
Rapid Prototyping
In den folgenden Abschnitten werden diese drei Ansätze beschrieben. Der Kontext zu den Lean
Prinzipien wird für jeden der Ansätze hergestellt.
Lean Architecture 2012
24
4.3.1 Divide, Conquer and Integrate
Im Rahmen der Methode Divide, Conquer and Integrate (DCI) werden Anforderungen in
überschaubare Portionen aufgeteilt, verfeinert und implementiert. Nach der Implementierung
werden die umgesetzten Teilanforderungen miteinander integriert und in die eventuell bereits
produktive Anwendung eingebaut. Der Kunde kann zu jedem Zeitpunkt neue Anforderungen stellen.
Sie werden nach Priorität umgesetzt und integriert [siehe LUI08].
Die Aufteilung der Anforderungen kann neben der Orientierung an der Größe (Arbeitsaufwand) so
durchgeführt werden, dass resultierende Aufgaben parallel durch mehrere Entwickler/Architekten
durchgeführt werden können. Divide & Conquer Strategien kommen ursprünglich aus der Welt der
Parallelrechner und sind beispielsweise in [NIEUWPOO00] beschrieben.
Auf den ersten Blick scheint Scrum diesen Ansatz zu vertreten. Im Rahmen von einem Sprint auf den
nächsten kann sich ein Kunde entscheiden, welche Anforderungen er im nächsten Sprint umgesetzt
sehen will. Die Anforderungen werden, wenn der Aufwand in den Sprint passt, in handhabbare
Pakete unterteilt, umgesetzt und anschließend miteinander integriert – DCI.
Die Aufteilung eines Problems in Teilprobleme und deren parallele Bearbeitung ist beim
Architekturentwurf nicht in jedem Fall möglich, aber durchaus üblich und erstrebenswert.
Im DCI-Ansatz kommen die Lean Prinzipien Gleichmäßige Aufgabenverteilung, Pull statt Push,
Wertflussoptimierung und Probleme zuerst lösen zur Anwendung.
4.3.2 Inkrementelles Design
Inkrementelles Design kommt in seiner Reinform aus dem Extreme Programming (XP) Umfeld. Ein
zentrales Paradigma in XP lautet, Designentscheidungen im letzten verantwortbaren Moment zu
treffen. Hintergrund ist weniger, dass Vorausplanung beim Design grundsätzlich schlecht ist, sondern
dass zeitnahes Design eine höhere Effizienz aufweist: Designentscheidungen, die weit in der
Vergangenheit liegen, neigen dazu, veraltet und nicht mehr angemessen zu sein.
Die Investition ins Design darf nicht so gering wie möglich gehalten werden, sondern darf sich in
einem gesunden Verhältnis mit dem Gesamtaufwand einer Anpassung oder Neuentwicklung
bewegen.15 Meine Annahme lautet, je intensiver in das Design investiert wurde desto leichter fallen
potentiell künftige Anpassungen und Erweiterungen.
Designänderungen sollen bei inkrementellem Design in kleinen, überschaubaren Schritten
vorgenommen werden, damit für jeden dieser Schritte konkrete Auswirkungen erkannt und bei
Bedarf gegengesteuert werden kann. Im Idealfall kann ein solcher kleiner Schritt im System
umgesetzt und über automatische Tests und kontinuierliche Integration geprüft werden.
Ein recht einfacher, erster Schritt, dass Design eines Systems zu verbessern, ist, Dubletten zu
eliminieren. Logik, die sich nur an einer Stelle im Code befindet, neigt dazu, leicht änderbar zu sein.
Die Alternative, also Duplikate, bedeutet, bei Änderungen oder Ergänzungen, Anpassungen an
mehreren Stellen im Code vorzunehmen.
15
Meine Interpretation von angemessen lautet: etwa Drittel bis die Hälfte des Implementierungsaufwands.
Lean Architecture 2012
25
Der Code trifft hierbei wohl nur die unterste Stufe inkrementellen Designs. Dubletten sind
üblicherweise auch auf Klassen-, Paket-, Bibliotheks- oder Anwendungsebene vorhanden und dürfen
dort gern eliminiert werden.
Designverbesserungen auf Codeebene lassen durch die Eliminierung von Code Smells finden.
Duplizierter Code (siehe weiter oben in diesem Abschnitt) ist ein typischer Code Smell. Weitere
typische Vertreter sind zu große Methoden und Klassen, exzessive Überladung oder parallele
Vererbungshierarchien.
Was Code Smells auf Codeebene sind, sind Anti-Patterns auf Komponenten-, Bibliotheks- oder
Anwendungsebene. Weiterführende Informationen zu Code Smells können [CUNNINGH00] und
[FOWLER05] entnommen werden. Architektur-Anti-Patterns sind gut16 in [BUCKLER08] beschrieben.
Inkrementelles Design wird in [BECK04, S. 51ff] beschrieben.
Inkrementelles Design beinhaltet die Lean Prinzipien Kontinuierliche Verbesserung, Pull statt Push,
Wertflussoptimierung und weitere.
4.3.3 Rapid Prototyping
Rapid Prototyping bzw. Schneller Modellbau gehört in der IT ebenfalls in die Kategorie Iteratives
Design. Beim Rapid Prototyping wird iterativ eine Musterlösung entworfen und implementiert, bis
das Ziel des Prototyps erreicht ist oder als nicht erreichbar erkannt wird. Der Prototyp wird im
Anschluss für das Projekt/Produkt nicht weiterverwendet bzw. weiterentwickelt. Argument gegen die
Weiterentwicklung ist häufig mangelhafte Qualität oder Erweiterbarkeit des Prototyps, so dass eine
Neuentwicklung kostengünstiger erscheint. Ich versuche Rapid Prototyping zu vermeiden.
Natürlich kann argumentiert werden, dass der Erkenntnisgewinn aus dem Prototyp keine
Verschwendung darstellt. Dann muss allerdings auch belegbar sein, dass die Erkenntnis ohne
Prototyp, z.B. nur durch Überlegung, nicht gewonnen werden konnte.
Weiterführende Informationen zu Rapid Prototyping können [MCCONNELL96 S. 433f] entnommen
werden.
Rapid Prototyping unterstützt die Lean Prinzipien Kontinuierliche Verbesserung und
Wertflussoptimierung.
4.4 Tools haben kaum Auswirkung auf Qualität der Architektur
Softwareentwicklung und damit auch der Architekturentwurf spielt sich in einer Welt voller Tools ab.
Hinter Tools stehen häufig kommerzielle Anbieter, die uns als Kunden davon überzeugen wollen,
dass ihr Tool dasjenige ist, dass wir schon immer haben wollten und unsere Anforderungen zu
mindestens 110 Prozent erfüllt.
Im Normalfall stehen mir für ein Problem mindestens zehn Tools zur Verfügung, deren nutzbare
Funktionalität sich mehr oder weniger aufhebt. Etwa die Hälfte der Werkzeuge sind Open Source
oder unterliegen einer vergleichbaren Lizenz. Dabei hat jedes Werkzeug, egal ob Open Source oder
16
und kurz
Lean Architecture 2012
26
kommerziell seine Schwächen und Eigenheiten, die eine sinnvolle Nutzung auf die eine oder andere
Art behindern17.
Daher bleibt dem Architekten aus meiner Sicht wenig anderes übrig, als den eigenen Verstand für die
Lösung von Problemen beim Architekturentwurf zu nutzen. Im Kontext Lean und Lean Architecture
ist das kein schlechter Ansatz, hat Lean doch den Anspruch, Dinge zu hinterfragen und Optimierung
voranzutreiben. Legt man zu viel Wert auf den Einsatz von Tools, besteht die Gefahr, die
Einschränkungen des Werkzeugs als die Grenzen der Anpassungsfähigkeit eines Prozesses, einer Idee
oder einer Methode zu begreifen.
James Coplien18, Autor eines Buches zu Lean Architecture, meint dazu recht treffend:
Lean doesn’t mean less work but more thinking.
Welche Lean Prinzipien unterstützt der Ansatz, seinen eigenen Verstand einzusetzen? Ich denke alle.
4.5 Architektur-Dokumentation
Ein beträchtlicher Teil der Kosten von Softwareentwicklungsprojekten entsteht bei deren
Dokumentation, wobei ich hier unter Dokumentation entwicklungsnahe Dokumentation wie Grob-
oder Feinkonzept verstehe. Dokumentation der Software- bzw. Systemarchitektur wie Big Picture
oder Architekturübersicht, Grobarchitektur- und Detailarchitekturbeschreibung zähle ich ebenfalls
dazu. Je besser Software dokumentiert ist, desto leichter kann sie potentiell von einem neuen
Entwickler oder Architekten verstanden werden.
Ist eine Software mangels Dokumentation hingegen nicht leicht verständlich, steigt der
Kommunikationsaufwand, um die fehlende Dokumentation auf anderem Weg zu erlangen. Entweder
wird die Dokumentation nachgeholt oder der Kommunikationsaufwand entsteht bei der Einarbeitung
jedes neuen Entwicklers oder Architekten erneut. Werden Architekturentscheidungen nicht
festgehalten, besteht das Risiko, dass für gleichartige Probleme jedes Mal erneut abgewogen wird,
welcher Weg eingeschlagen werden soll.
17
Ich suche seit etwa zehn Jahren ein UML-Tool, das seine Artefakte versionieren kann. 18
Siehe [COPLIEN10]
Lean Architecture 2012
27
Dokumentation beinhaltet entwicklungsfremde Kosten. Je mehr Aufwand in entwicklungsfremde
Kosten gesteckt wird, desto geringer wird aus meiner Sicht der erforderliche
Kommunikationsaufwand.
Auf der anderen Seite stellt Dokumentation, die nicht benutzt wird, Verschwendung dar, die nicht
nur im Kontext von Lean vermieden werden muss. Ziel muss es sein, nur Architekturdokumentation
zu erzeugen, für die Bedarf besteht. Es muss für jedes Projekt abgewogen werden, mit welchem
Aufwand Architekturdokumentation betrieben werden muss.
Lean Prinzipien sind hier Wertflussoptimierung, Kontinuierliche Verbesserung und Regeln gemeinsam
definieren.
4.6 YAGNI vs. BFUD
You Ain’t Gonna Need It – Du wirst es nicht brauchen – ist ein relative altes agiles Prinzip, dass
empfiehlt, keine Annahmen über die zukünftige Entwicklung einer Software zu treffen. Wir tun uns
erfahrungsgemäß schwer, Annahmen zu treffen, besonders, wenn diese Annahmen die Zukunft
betreffen. Aussagen wie „Die Anforderung kommt garantiert im nächsten Release, also können wir
sie auch gleich vorsehen.“ habe ich in den vergangenen Jahren zu häufig gehört, um sie noch ernst
nehmen zu können.
Abbildung 4: Kosten der Softwareentwicklung [nach Lui 2008]
Code Benutzermasken
Dokumente Diagramme
Ko
sten
Code Benutzermasken --------------------> Entwicklungskosten
Gesamtkosten
Kommunikations-kosten
Entwicklungsfremde Kosten
Lean Architecture 2012
28
Hinter dem Anti-Pattern Swiss Army Knife verbirgt sich beispielsweise eine Klasse, eine Bibliothek
oder ein System, dass „alles“ kann. Es ist natürlich auch geeignet, ohne Anpassung zukünftige
Anforderungen abzudecken. In der Realität verbirgt sich hinter einer solchen Komponente
hochkomplexer, unwartbarer Code, den ein Architekt, ein Entwickler oder ein ganzes Team in einem
Rausch von kreativer Planung und/oder Entwicklung verursacht hat und für den es nur zwei künftige
Visionen gibt: Refactoring (siehe Abschnitt 4.2) mit hohem Aufwand oder Entsorgung.
Mit viel Fantasie kann ich ein Swiss Army Knife als Big Up-Front Design interpretieren und natürlich
steckt in einem solchen Konstrukt eine Menge Aufwand. Aufwand steckt allerdings auch hinter dem
YAGNI-Ansatz. In dem Moment, in dem ein konkretes, aktuelles Problem bearbeitet wird, entsteht
unter Umständen Mehraufwand, der mit etwas vorausschauender Planung hätte minimiert werden
können (siehe Abbildung 5).
Abbildung 5: Gegenüberstellung von YAGNI und BUFD (siehe [COPLIEN11])
Über einen längeren Zeitraum macht es sich bezahlt, einen Mittelweg zwischen BFUD und YAGNI zu
finden. Aus meiner Sicht ist das ideale Maß aus vorausschauender Planung und kurzfristiger
Entscheidung vom konkreten Problem abhängig und kann nicht pauschal bemessen/benannt
werden.
Die Differenzierung von YAGNI und BFUD entspricht Wertflussoptimierung, Kontinuierliche
Verbesserung, Pull statt Push und Entscheidungen mit langfristigem Fokus treffen.
4.7 Minimale Transaktionskosten
Unter Transaktionskosten wird bei der Erstellung einer Software der Aufwand verstanden, ein
Inkrement oder ein Release der Software zusammenzustellen und zu liefern.
Lean Architecture 2012
29
Ein naheliegender Anspruch sollte sein, diese Transaktionskosten so gering wie möglich zu halten. Die
Lieferungskosten einer Software gehört zu deren Änderung dazu. Wenn eine Software leicht
änderbar sein soll, muss sie auch leicht lieferbar sein.
Nehmen wir an, in einer Software wurde ein kritischer Fehler entdeckt. Die Aufwände für die
Behebung des Fehlers und der Test zur Validierung der Behebung betragen zwei Arbeitstage. Wenn
der Aufwand für die Erstellung des neuen Release und seine Lieferung dagegen 14 Arbeitstage
beträgt, z.B. weil
kein automatischer Build möglich ist
die Software manuell installiert werden muss
kein automatischer Regressionstest möglich ist
der Lieferprozess viele Formalismen und Beteiligte enthält
Hier liegt ein deutliches Missverhältnis zwischen Änderungsaufwand und Transaktionskosten vor. Die
Kosten für den gesamten Prozess sind aus meiner Sicht unvertretbar hoch.
Ziel muss es sein, durch ein automatisiertes Build, die automatische Installation der Software und
durch automatische Regressionstests minimale Transaktionskosten zu erreichen. Für die Erstellung
eines neuen Release halte ich einen Zeitaufwand von zehn Minuten für erstrebenswert. Die
Transaktionskosten fallen bei jeder Lieferung an. Welcher Aufwand erscheint hierfür eher
erstrebenswert: jedes Mal 14 Tage oder jedes Mal zehn Minuten?
So weit so gut. Wo besteht hier der Zusammenhang zu Architektur oder zu Lean Prinzipien? Die
leichte Lieferung einer Software steht aus meiner Sicht in Beziehung zu leichter Änderbarkeit. Der
Build- und Lieferprozess setzt dabei auf Artefakten auf, die direkt oder indirekt aus der vorliegenden
Architektur entstanden sind. Der Architekturentwurf muss bereits berücksichtigen, in welcher Form
eine Software für ihre Nutzung zur Verfügung gestellt werden kann.
Die durch die minimalen Transaktionskosten unterstützten Lean Prinzipien sind
Wertflussoptimierung, Einsatz der richtigen Werkzeuge und gleichmäßige Aufgabenverteilung.
Weiterführende Informationen zu minimalen Transaktionskosten können [ANDERSON11]
entnommen werden.
Lean Architecture 2012
30
5 Fazit – Wie kann Lean Architecture erreicht werden
Plangetriebene Vorgehensmodelle sind nicht de-facto schlecht. Je größer ein Projekt ist bzw. je mehr
Mitarbeiter ein Projekt hat, desto ausgeprägter müssen die Spielregeln im Projekt sein. Wird dies
vernachlässigt, können die Kommunikationskosten im Projekt so weit ansteigen, dass das Projekt
zum Stillstand kommt. Schlecht ist nach meiner Erfahrung die Konsequenz, mit der Regeln
vorgegeben werden. Was mir in plangetriebenen Projekten häufig fehlt, ist eine Prüfung der
Angemessenheit der Projektspielregeln.19
Entgegen der aus Tabelle 4 abgeleiteten weitestgehenden Nichtanwendbarkeit der Lean Prinzipien
auf plangetriebene Methoden halte ich die Lean Prinzipien hier für anwendbar, wenn die Spielregeln
im Projekt angemessen ausgewählt und angewendet werden. Bei der Regelanwendung sollte
Pragmatismus vor Konvention stehen. Als Konsequenz daraus kann sich für die Architektur
ausreichend Freiraum bieten, einer Lean Architecture näher zu kommen, als dies in plangetriebenen
Projekten normalerweise der Fall ist.
Wo plangetriebene Vorgehensmodelle zu viele Regeln aufweisen, neigen agile Vorgehensmodelle
dazu, zu wenig Regeln zu verwenden, um eine angemessene Architektur zu unterstützen. Nach
meiner Erfahrung werden Aktivitäten im Zusammenhang mit Architektur eher vernachlässigt – es
droht ein Architekturchaos. Hier kommt es aus meiner Sicht darauf an, das Regelset agiler Verfahren
um Hilfsmittel zu erweitern, die Architekturentwurf und –pflege unterstützen (siehe Abschnitt 4).
Konsequenz kann eine Architektur sein, die den Lean Prinzipien in ihrer Gänze entspricht. Da Agile
Vorgehensmethoden die Lean Prinzipien nach Tabelle 4 unterstützen, bietet sich die Möglichkeit der
Erweiterung der Methoden, ohne die bereits enthaltenen Regeln zu verletzen.
Meine These, vom Anfang dieses Dokuments muss insofern angepasst werden, dass eine Lösung hin
zu angemessenen Architekturentwürfen unter Berücksichtigung der Lean Prinzipien nur indirekt
zwischen Agilität und plangetriebenen Verfahren liegt. Die Regeln plangetriebener Verfahren müssen
aufgeweicht, die Regeln agiler Verfahren erweitert werden, um zu einem Architekturentwurf zu
kommen, der die Kriterien guter Architektur20 erfüllt. Agile und plangetriebene Verfahren müssen
sich im Kontext Architektur annähern, allerdings ohne den Anspruch zu haben, je aufeinander
abbildbar zu sein (siehe Abbildung 6).
19
Wenn ein Webservice-Projekt ein Quality Gate nicht passieren darf, weil kein GUI-Konzept vorliegt, wurden die Projektspielregeln deutlich zu eng gefasst. Webservices haben laut Standard keine Oberfläche. 20
Siehe Abschnitt 2.1
Lean Architecture 2012
31
Der Ehrgeiz, plangetriebene Vorgehensmodelle generell durch agile zu ersetzen, besteht aus meiner
Sicht ohnehin nicht. Auch in zwanzig Jahren wird hoffentlich niemand auf die Idee kommen, eine
Satelliten- oder Flugzeugsteuerung mit einem agilen Vorgehensmodell umzusetzen, vielleicht aber
mit einem Modell, dass zumindest einige agile Ansätze übernimmt, um mit vertretbaren Kosten
anpassbar zu sein.
Erweiterung zur
Unterstützung der
Lean Prinzipien
Chaos Ordnung
Plan-
getriebene
Vorgehens-
modelle
Agile
Vorgehens-
modelle
Abbildung 6: Erweiterung der Vorgehensmodelle hin zu Lean Prinzipien
Lean Architecture 2012
32
6 Quellen
AARON09 John Aaron: Quality Gates: A PRIMMS Tutorial,
http://milestoneplanning.net/whitepapers/Quality%20Gates%20A%20Tutorial.pdf,
2009
ANDERSON11 David J. Anderson: Kanban – Evolutionäres Change Management für IT-
Organisationen, dpunkt.Verlag, 2011
BECK04 Kent Beck, Cynthia Andres: Extreme Programming Explained, Addison-Wesley, 2004
BELLINGER04 Gene Bellinger: Root Cause Analysis, http://www.systems-
thinking.org/rca/rootca.htm, 2004
BOEHM04 Barry Boehm, Richard Turner: Balancing Agility and Discipline – A Guide for the
perplexed, Addison-Wesley, 2004
BROOKS11 Frederick P. Brooks - Erfolgreiches Design, MITP Heidelberg, 2011
BRUNNER08 Franz J. Brunner: Japanische Erfolgsrezepte: Kaizen, KVP, Lean Production
Management, Total Productive Maintenance, Shopfloor Management, Toyota
Production Management, Hanser Verlag, 2008
BUCKLER08 Christoph Buckler: Software Architecture Anti-Patterns, http://www.cs.uni-
paderborn.de/fileadmin/Informatik/AG-Wehrheim/Lehre/SS08/Seminar/Buckler.pdf,
2008
COCKBURN05 Alistair Cockburn: Crystal Clear – A Human-Powered Methodology for Small Teams,
Addison-Wesley, 2005
COPLIEN10 James Coplien: Lean Architecture for Agile Software Development, Wiley & Sons,
2010
CUNNINGH00 Ward Cunningham: Code Smell, http://c2.com/cgi/wiki?CodeSmell, 2000
FOWLER05 Martin Fowler: Refactoring oder: wie Sie das Design vorhandener Software
verbessern, Addison-Wesley, 2005
GOLDRATT90 Eliahu M. Goldratt: What is this thing called Theory of Constraints and how should it
be implemented, North River Press, 1990
LARMAN09 Craig Larman, Bas Vodde: Scaling Lean & Agile Development – Thinking and
Organizational Tools for Large-Scale-Scrum, Addison-Wesley, 2009
LIKER04 Jeffrey K. Liker: The Toyota way: 14 Management principles from the world largest
manufacturer, McGraw-Hill Professional, 2004
LUI08 Kim Man Lui, C. C. Chan: Software Development Rhythms: Harmonizing Agile
Practices for Synergy; Wiley & Sons, 2008
Lean Architecture 2012
33
MCCONNELL96 Steve McConnell: Rapid Development - Taming wild software schedules, Microsoft
Press, 1996
NIEUWPOO00 Rob V. van Nieuwpoort, Thilo Kielmann, Henri E. Bal: Satin: Efficient Parallel Divide-
and-Conquer in Java, http://www.springerlink.com/content/6nb781jqrkafxc18/, 2000
PALMER02 Stephen R. Palmer, John M. Felsing: A practical guide to Feature-Driven
Development, Prentice Hall, 2002
PICHLER08 Roman Pichler: Scrum – Agiles Projektmanagement erfolgreich einsetzen, d.punkt
Verlag, 2008
POPPENDIEC07 Mary Poppendieck, Tom Poppendieck: Implementing Lean Software Development –
From Concept To Cash, Addison-Wesley, 2007
ROYCE87 Winston W. Royce: Managing the development of large software systems,
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf, 1987
RUP11 IBM RUP: Rational Unified Process, http://www-
01.ibm.com/software/awdtools/rup/, 2011
SHORE06 James Shore: Quality With a Name, http://jamesshore.com/Articles/Quality-With-a-
Name.html, 2006
SPOLSKI07 Joel Spolski: Smart & Gets Things Done, Springer-Verlag, 2007
VMODEL10 V-Modell XT Autoren und andere: V-Modell XT, http://ftp.tu-
clausthal.de/pub/institute/informatik/v-modell-xt/Releases/1.3/Dokumentation/V-
Modell%20XT%20HTML/index.html, 2006
VOGEL08 Oliver Vogel et al: Software-Architektur: Grundlagen - Konzepte - Praxis, Springer-
Verlag, 2008
Lean Architecture 2012
34
7 Forschung und Lehre leben vom Gedankenaustausch, dabei helfen klare
Vereinbarungen
Die Inhalte dieses Dokuments (u.a. Texte, Grafiken, Fotos, Logos etc.) sowie die Präsentation selbst
sind urheberrechtlich geschützt. Alle Rechte stehen, soweit nicht anders gekennzeichnet,
Capgemini zu.
Capgemini gestattet ausdrücklich die öffentliche Zugänglichmachung kleiner Teile der Präsentation
zu Zwecken der nicht kommerziellen Lehre und Forschung.
Jede darüber hinausgehende Nutzung ist nur mit ausdrücklicher, schriftlicher Einwilligung
von Capgemini zulässig.
Haftungsausschluss
Auch wenn diese Präsentation und die damit zusammenhängenden Ergebnisse nach bestem Wissen
und sorgfältig erstellt wurden, übernimmt weder Capgemini, noch der/die Autoren,
eine Haftung für deren Verwendung.
Bei Fragen wenden Sie sich bitte an:
Ramon Anger
Master of Computer Science
Technischer Architekt
Capgemini Deutschland GmbH
Kürfürstendamm 22
10719 Berlin
0151/4025 1902
ramon.anger [at] capgemini.com