- Agilität (95)
- Allgemein (11)
- Ankündigungen (29)
- Buchtipp (13)
- Crystal (7)
- it-agile-blog-planet (9)
- Konferenzen (23)
- Kunden (5)
- Lean Software Development (1)
- Management (37)
- Planung (20)
- Politik (14)
- Praktiken (7)
- Refactoring (11)
- Scrum (15)
- Software Design (10)
- Surftipp (28)
- Testgetriebene Entwicklung (8)
- Werkzeuge (7)
- Zitate (8)
- 4.2.2012: Selbstorganisation bei it-agile
- 4.2.2012: Reanimation meines Blogs
- 21.1.2010: it-agile und Coldewey Consulting gehen zusammen
- 11.12.2009: Aufspalten einer User Story
- 6.11.2009: Vortrag auf der W-Jax zu langfristiger agiler Planung
- 2.10.2009: Alistair Cockburns Keynote "I come to bury Agile, not to praise it" als Video
- 22.9.2009: Apple und die Macht einer Vision
- 21.9.2009: Pair Programming in der New York Times
- 10.9.2009: Neue XING-Gruppe zu Lean Software Development
- 9.9.2009: CSM+Crystal Kurse mit Alistair Cockburn
- Februar 2012
- Januar 2010
- Dezember 2009
- November 2009
- Oktober 2009
- September 2009
- August 2009
- Juli 2009
- Juni 2009
- Mai 2009
- April 2009
- März 2009
- Februar 2009
- Januar 2009
- Dezember 2008
- November 2008
- Oktober 2008
- September 2008
- Juli 2008
- Juni 2008
- Mai 2008
- April 2008
- März 2008
- Februar 2008
- Januar 2008
- Dezember 2007
- November 2007
Architektur und Agilität
Will man einmal richtig Spaß haben, so werfe man in eine Gruppe von “Agilisten” und “Traditionalisten” das Stichwort “Architektur”: Als hätte man ein Zündholz in einen Strohhaufen geworfen entflammt sofort eine äußerst emotionale Diskussion, deren Randbereiche zwei Statements markieren: “Ohne eine saubere Anfangsanalyse und solide Anfangsarchitektur kommt kein ernsthaftes Projekt aus” und “Wir brauchen keinen Architekten, die Architektur entsteht beim Programmieren”. Zwischen diesen beiden Extremen findet man fast jede denkbare Zwischenposition.
Ich habe viele dieser Diskussionen verfolgt und bin mittlerweile zu dem Schluss gelangt, dass hier mindestens drei verschiedene Themen munter durchmischt werden:
- Wann wird die Architektur erstellt? Ist die Architektur eine eigene Phase zu Projektbeginn, wird sie zu Beginn jeder Iteration erstellt, oder entsteht Sie während des Programmierens durch Refaktorisieren?
- Wie wird die Architektur repräsentiert? Existiert ein eigenes Dokument oder repräsentiert der Code die Architektur — wobei dann oft Werkzeuge eingesetzt werden, um grafische Darstellungen aus dem Code zu extrahieren und wichtige Eigenschaften zu prüfen, zum Beispiel automatisierte Test, um Abhängigkeiten zu prüfen.
- Wer ist für die Architektur verantwortlich? Gibt einen oder mehrere Architekten? Als Entscheider oder als Moderatoren? Oder ist das Entwicklungsteam gemeinsam verantwortlich?
Ich denke, auf welche “Seite” man sich bei diesen drei Fragen schlägt, hängt entscheidend von der Frage ab, was man sich von der Architektur erwartet. Die Antwort darauf wird oft stillschweigend als “selbstverständlich” vorausgesetzt, ohne zu sehen, dass dort der eigentliche Konflikt liegt:
In traditioneller Sicht soll die Architektur Änderungen an bestehendem Code vermeiden. Sie sollte also so flexibel sein, dass zukünftige oder absehbare Anforderungen möglichst schon abgedeckt sind und ohne Änderungen an bestehendem Code oder zumindest der Architektur implementiert werden können. Architektur versucht die zukünftige Entwicklung vorauszusehen.
In agiler Interpretation soll Architektur Änderungen des Codes und ihrer selbst ermöglichen. Eine gute Architektur kann schnell an neue funktionale und nicht-funktionale Anforderungen angepasst werden. Sie ermöglicht möglichst viele zukünftige Entwicklungen. Änderbarkeit ist daher das Leitmotiv agiler Praktiken wie einfaches Design, testgetriebene Entwicklung, Refaktorisieren und Redundanzvermeidung.
Steht man auf dem Standpunkt, Änderungen an der Architektur seien schlecht und zu vermeiden, so wird man fast zwangsläufig zu dem Ergebnis kommen, dass die Architektur vor der Realisierung von einem starken Architekten erstellt werden müsse und daher nicht im Code repräsentiert werden kann.
Sieht man Änderungen als willkommenes Designwerkzeug, kann man die drei Fragen deutlich entspannter angehen. Die Antworten können sich nach anderen Faktoren richten, wie Kritikalität, Team- und Führungskultur und Erfahrung in der Domäne. Fast alle Kombinationen sind hier möglich; viele von ihnen auch in bestimmten Situationen sinnvoll.
In meinen Projekten kamen einige Teams ohne Architekten aus, andere ernannten irgendwann ein Mitglied zum Hüter der Architektur. Immer waren durch Refaktorisieren entstehende Architekturen in fast allen Qualitätsmerkmalen den zu Beginn erstellten Architekturen deutlich überlegen — und dazu auch noch wesentlich billiger. Zudem halte ich mir gerne Optionen offen.
2.5.2008 bei 07:35
Es geht nicht darum, Änderungen zu vermeiden. Sondern darum, mit mit erträglichem Aufwand dafür zu sorgen, dass das System konsistent ist. Nur dadurch kann man die üblichen -ilities sicherstellen. Änderungen sind jederzeit ok - aber idealerweise von einem konsistenten Zustand in einen anderen.