Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller...
Transcript of Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller...
![Page 1: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/1.jpg)
Erkennen und Verhindern von struktureller Erosion
Ingmar Kellner
hello2morrow GmbH
Mai 2012
Continuous Architecture Management
![Page 2: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/2.jpg)
Agenda
Motivation des Software Architekten
Ursachen und Folgen struktureller Erosion
Lösungsansätze
Entwicklungsprozess
© 2012, hello2morrow GmbH 2
![Page 3: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/3.jpg)
Motivation
Als Software Architekt will ich …
… dass meine Software eine hohe Qualität hat
… wissen, wie die interne Struktur wirklich aussieht
… strukturelle Erosion verhindern
… wissen, wo aktuell die Problemstellen sind
… eine aktuelle Dokumentation der Architektur
… existierende Software Module wiederverwenden
© 2012, hello2morrow GmbH 3
![Page 4: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/4.jpg)
Und dennoch sieht es oft so aus:
© 2012, hello2morrow GmbH 4
![Page 5: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/5.jpg)
Offensichtliche Widerstände
Zeitdruck
Was bedeutet gute Qualität?
Es ist zu kompliziert Metriken zu berechnen und sinnvolle
Schwellenwerte zu definieren
Es ist aufwändig, die Architekturdokumentation mit der
Entwicklung abzugleichen
Die Abhängigkeiten zwischen Teilen der Software manuell zu
überprüfen ist nicht machbar
Fehlende Toolunterstützung, z.B. zeigt die IDE keine Warnung
an, wenn eine unerlaubte Abhängigkeit eingebaut wird.
© 2012, hello2morrow GmbH 5
![Page 6: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/6.jpg)
Realitätscheck
Gibt es bei Ihnen verbindliche Qualitätsregeln?
Werden diese Regeln täglich automatisch geprüft?
Gibt es eine formelle Architekturdefinition?
Wird der Code automatisch und täglich auf Einhaltung der
Architekturdefinition geprüft?
Denken Sie, dass in diesem Bereich mehr zu tun ist?
© 2012, hello2morrow GmbH 6
![Page 7: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/7.jpg)
Motivation
Ursachen und Folgen der strukturellen Erosion
Lösungsansätze
Entwicklungsprozess
© 2012, hello2morrow GmbH 7
![Page 8: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/8.jpg)
8
Einige Gründe für die strukturelle Erosion
Wissen und Fähigkeiten im Team sind ungleich verteilt
Kopplung und Komplexität wachsen schnell
Vielfach gibt es keine (aktuelle) formale Architektur
Mythos der agilen Superhelden
In den meisten Projekten wird die Qualität am Schluss betrachtet
Desinteresse an Qualität: Management betrachtet die Software
als “black box”
Das Gesetz der Software Entropy [Lehmann]
Eine Software, die benutzt wird, wird verändert werden.
Wenn eine Software verändert wird, steigt die Komplexität, es sei
denn, man arbeitet aktiv dagegen.
© 2012, hello2morrow GmbH
![Page 9: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/9.jpg)
© 2012, hello2morrow GmbH 9
Symptome der Erosion (Robert C. Martin)
Rigidity – The system is hard to change because every change
forces many other changes.
Fragility – Changes cause the system to break in conceptually
unrelated places.
Immobility – It's hard to disentangle the system into reusable
components.
Viscosity – Doing things right is harder than doing things wrong.
Opacity – It is hard to read and understand. It does not express
its intent well.
Overall: “The software starts to rot like a bad piece of meat”
![Page 10: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/10.jpg)
Was ist technische Qualität?
Unsere Definition: “Technical quality of software can be defined as the level of
conformance of a software system to a set a set of rules and guidelines derived from
common sense and best practices. Those rules should cover software architecture,
programming in general, testing and coding style.”
Technische Qualität lässt sich nicht allein durch Testen erreichen
Technische Qualität manifestiert sich in jeder Codezeile
Vier Aspekte technischer Qualität:
Architektur (inkl. Abhängigkeitsstruktur)
Software Metriken
Programmierregeln
Testbarkeit und Testabdeckung
Welcher dieser Aspekte hat den größten Einfluss auf die Gesamtkosten?
Messung der Qualität über Metriken und Zählung von Regelverletzungen
© 2012, hello2morrow GmbH 10
![Page 11: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/11.jpg)
Kosten struktureller Erosion
© 2012, hello2morrow GmbH 11
![Page 12: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/12.jpg)
Motivation
Ursachen und Folgen der strukturellen Erosion
Lösungsansätze
Entwicklungsprozess
© 2012, hello2morrow GmbH 12
![Page 13: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/13.jpg)
Architektur - Definition
“The architecture represents the software structures that form the
skeleton of the application.” [ASD]
Architecture is the fundamental organization of a system
embodied in its components, their relationships to each other,
and to the environment, and the principles guiding its design
and evolution. [IEEE 1471]
© 2012, hello2morrow GmbH 13
![Page 14: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/14.jpg)
14
Presentation
Domain
Persistence
Erstellen einer Logischen Architektur
• Schritt 1: Teile horizontal in technische Aspekte
• Schritt 2: Teile vertikal in fachliche Aspekte
Con
tract
Custo
me
r
Use
r
Com
mo
n
• Schritt 3: Definiere erlaubte Abhängigkeiten
© 2012, hello2morrow GmbH
Softwaresystem
![Page 15: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/15.jpg)
Etwas komplexere Logische Architektur
© 2012, hello2morrow GmbH 15
![Page 16: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/16.jpg)
16
Metrik für den Kopplungsgrad [LSD]
Depends upon = Die Anzahl von Komponenten, von der eine
Komponente direkt und indirekt abhängt (+1 für sich selbst).
ACD (Average Component Dependency) = Die Summe aller
“depends upon” Werte, geteilt durch die Anzahl aller
Komponenten
6
3 3
1 1 1
ACD = 15/6 = 2,5
3
1 1
2 3 2
Dependency Inversion
ACD = 12/6 = 2
6
6 6
1 6 1
Cycles
ACD = 26/6 = 4,33
16
© 2012, hello2morrow GmbH
![Page 17: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/17.jpg)
Der Effekt von zyklischen Abhängigkeiten
Zyklische Abhängigkeiten haben u.a. einen negativen Einfluss auf:
Testbarkeit
Verständlichkeit
Wiederverwendung
Erweiterbarkeit
Build & Release Management
Team building
“Cyclic physical dependencies in large, low-level subsystems have
the greatest capacity to increase the overall cost of maintaining a
system“ [John Lakos in LSD]
© 2012, hello2morrow GmbH 17
![Page 18: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/18.jpg)
Strukturelle Erosion am Bsp des JDK 1.6
© 2012, hello2morrow GmbH 18
Zyklengruppe von 29 Packages
![Page 19: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/19.jpg)
Strukturelle Erosion am Bsp des JDK 1.6
© 2012, hello2morrow GmbH 19
Zyklengruppe von 50 Packages
![Page 20: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/20.jpg)
Strukturelle Erosion am Bsp des JDK 1.6
© 2012, hello2morrow GmbH 20
Zyklengruppe von 250 Packages
![Page 21: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/21.jpg)
Bsp für das Auflösen eines Zyklus
© 2012, hello2morrow GmbH 21
![Page 22: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/22.jpg)
Umkehrung der Abhängigkeit durch ein Callback
Interface
© 2012, hello2morrow GmbH 22
![Page 23: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/23.jpg)
Regeln für die Mikro Ebene
Methoden implementieren Verhalten Beschränkung der Komplexität (Cyclomatic Complexity)
Beschränkung von Parametern
Klassen gruppieren Methoden Zyklen sollten vermieden werden
Beschränkung der Größe (LOC, Anzahl Methoden)
Kopplungsgrad im Auge behalten
Packages gruppieren Klassen Zyklen sollten verboten sein
Beschränkung der Anzahl enthaltener Klassen
23 © 2012, hello2morrow GmbH
![Page 24: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/24.jpg)
Motivation
Ursachen und Folgen der strukturellen Erosion
Lösungsansätze
Entwicklungsprozess
© 2012, hello2morrow GmbH 24
![Page 25: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/25.jpg)
Prinzipien aus dem Agile Manifesto:
“[…] Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the
items on the left more.”
Trugschluss: Man braucht keine Prozesse, Werkzeuge,
Architekturdefinitionen, etc.
© 2012, hello2morrow GmbH 25
![Page 26: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/26.jpg)
Verbesserungen erfordern Transparenz
© 2012, hello2morrow 26
Define
Measure
Analyze Improve
Control
![Page 27: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/27.jpg)
Architektur Workflow
© 2012, hello2morrow GmbH 27
Definiert Architektur,
Schwellenwerte und
Aufgaben
Implementieren Use
Cases und Aufgaben
unter Beachtung der
Architektur und
Schwellenwerten
Überprüft die
Einhaltung der Regeln
BUILD Server
DEVELOPERS ARCHITECT
![Page 28: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/28.jpg)
Architecture Workflow with Sonargraph
28
BUILD
DEVELOPER
TASK MANAGEMENT METRIC HISTORY
Version Control System ARCHITECT
Reports
© 2012, hello2morrow GmbH
![Page 29: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/29.jpg)
Take away: Wenige Regeln können viel bewirken
Definition einer Zyklen-freien logische Architektur und einer
konsistente Package Namenskonvention. Alle Packages müssen
logischen Architekturelementen zugeordnet werden.
Keine Zyklen zwischen Packages
Kontrolle des Kopplungsgrades (ACD und NCCD mit
vernünftigen Schwellenwerten)
Beschränkung der Größe von Java Sourcen (700 Zeilen)
Beschränkung der Zyklomatischen Komplexität von Methoden
(z.B. 20)
Regelmäßige, automatische Überprüfung der Regeln
Qualität muss als Zielvorgabe von allen Managementebenen
mitgetragen werden!
29 © 2012, hello2morrow GmbH
![Page 30: Continuous Architecture Management - Entwicklertag · Erkennen und Verhindern von struktureller Erosion Ingmar Kellner hello2morrow GmbH Mai 2012 Continuous Architecture Management](https://reader036.fdocuments.net/reader036/viewer/2022081523/60154fe0de7b3736e82659e6/html5/thumbnails/30.jpg)
30
Weitere Informationen
Whitepaper, DZone RefCard, etc. auf unserer Web-Seite:
http://www.hello2morrow.com
Meine e-mail: [email protected]
Referenzen
[MMM] The Mythical Man-Month, F. P. Brooks, Addison-Wesley, 1975, 1995
[GOF] Design Patterns, Gamma et al., Addison-Wesley 1994
[LSD] Large-Scale C++ Software Design, John Lakos, Addison-Wesley 1996
[EXP] Extreme Programming, Kent Beck, Addison-Wesley 1999
[AUP] Applying UML and Patterns, Craig Larman, Prentice Hall 2000
[TOS] Testing Object-Oriented Systems, Beizer, Addison-Wesley 2000
[ASD] Agile Software Development, Robert C. Martin, Prentice Hall 2003
© 2012, hello2morrow GmbH