Beim Entwurf der Softwarearchitektur zu Beginn eines Projekts bringen die Architekten i.d.R. all ihre Erfahrung und ihr Knowhow ein und stellen eine Architektur-Blaupause für die Entwicklung bereit. Aber während der Implementierung weichen die Entwickler ungewollt mehr und mehr von diesen Vorgaben ab: Einerseits macht der Projektdruck Abweichungen notwendig, andererseits entstehen die Abweichungen ungewollt und unbemerkt. Die Architektur des Systems erodiert und es werden Schritt für Schritt technische Schulden aufgebaut. Wartung und Erweiterung der Software werden immer teurer bis zu dem Punkt, an dem jede Änderung zu einer schmerzhaften Anstrengung wird.
In diesem Vortrag berichte ich von meinen Erfahrungen der letzten zehn Jahre mit der Analyse von Softwarearchitekturen in Java (60 Systeme), C# (10 Systeme), C++(6 Systeme): Die Zuhörer wissen nach meinem Vortrag, welche Fehler sie in ihren Softwareprojekten bei der Umsetzung der Architektur nicht machen sollten, welche Prinzipien Sie einhalten sollen, um technische Schulden nicht entstehen zu lassen, welche Tools helfen, technische Schulden aufzuspüren, und wie technische Schulden abgebaut werden können.
5. 11.03.2016 //// Seite 5WPS - Workplace Solutions GmbH
Maßnahmen gegen technische Schulden
Kontinuierliche Architekturdiskussion
Weiterbildung der Architekturen und Entwickler
Automatisches Testen und Refactoring
Regelmäßige Architekturanalyse und -Erneuerung
6. 11.03.2016 //// Seite 6WPS - Workplace Solutions GmbH
Architekturanalyse: Was ist das?
Findet sich die geplante Architektur (Soll-Architektur) in der
Strukturen der implementierten Software (Ist-Architektur) wieder?
Soll-Architektur Ist-Architektur
≠ Sourcecode
Plan mit
Klassen =
Directories
Packages
Namespaces
Subsysteme
Komponenten
Module
Schichten
7. 11.03.2016 //// Seite 7WPS - Workplace Solutions GmbH
Zwei Architekturziele für Langlebigkeit
Architekturziel 1: Wartbarkeit
• schnelle Fehleranalyse
• schnelle Anpassungen
• Analysierbarkeit und Verständlichkeit
• Reduktion von Komplexität
Architekturziel 2: Flexibilität
• Varianten von Geschäftsprozessen
• Geänderte Anforderungen
• Serviceorientierung und Skalierbarkeit
• Baukastenprinzip
8. 11.03.2016 //// Seite 8WPS - Workplace Solutions GmbH
Expertise zu Architekturanalyse
Architektur-Review und Bewertungen mit Qualitätsgutachten
Analyse und Priorisierung von technischen Schulden
Beratung zu Architekturverbesserung und Refactorings
Einführung und Weiterentwicklung von Architekturstile
Unsere Dienstleistungen
9. 11.03.2016 //// Seite 9WPS - Workplace Solutions GmbH
70%
20%
10%
Code verstehen
Problem lösen
Code schreiben
Womit verbringen wir unsere Zeit?
10. 11.03.2016 //// Seite 11WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
11. 11.03.2016 //// Seite 15WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
Modularität
12. 11.03.2016 //// Seite 16WPS - Workplace Solutions GmbH
Modularität
Hohe Kohäsion und lose Kopplung
Responsibility Driven Design
Separation of Concerns
Single Responsibility Principle
13. 11.03.2016 //// Seite 17WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
Modularität
15. Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität
16. Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
17. 11.03.2016 //// Seite 26WPS - Workplace Solutions GmbH
User Interface
Domain
Application
Hierarchien in Architekturebene: Schichten und Module
Fachliches
Modul B
Fachliches
Modul A
Fachliche Schichtung
TechnischeSchichtung Fachliches
Modul C
18. 11.03.2016 //// Seite 27WPS - Workplace Solutions GmbH
Zwei Dimensionen einer Architektur
Technische Schichtung Fachliche Schichtung
Leicht zu
behebende
Verletzungen
Schwer zu
behebende
Verletzungen
Eine
Komponente
verursacht die
Probleme
Eine
Komponente
verursacht die
Probleme
19. 11.03.2016 //// Seite 28WPS - Workplace Solutions GmbH
Fachliche Schichtung misslungen
Technische Schichtung Keine fachliche Schichtung
Wenige
Schichten-
verletzungen
Fast alle 90
fachlichen
Komponenten
brauchen sich
gegenseitig
20. 11.03.2016 //// Seite 29WPS - Workplace Solutions GmbH
Hierarchien auf Klassenebene
Auswirkung auf:
Wartbarkeit
Austauschbarkeit
Testbarkeit
Modularität
Musterkonsistenz
Hierarchien auf allen Ebenen einführen
23. 11.03.2016 //// Seite 34WPS - Workplace Solutions GmbH
119 Klassen aus 4 Komponenten
+ 28 weitere Klassen
24. 11.03.2016 //// Seite 35WPS - Workplace Solutions GmbH
Große Zyklen sichtbar machen
327 Klassen aus 8 Komponenten
brauchen sich gegenseitig
25. 11.03.2016 //// Seite 36WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
26. 11.03.2016 //// Seite 37WPS - Workplace Solutions GmbH
Uneven Modules
Ein großer Monolith mit vielen kleinen Satelliten
950.860 LOC
84.808 LOC
Häufige Ursache: Build-System, das Zyklen verbietet
28. 11.03.2016 //// Seite 43WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
29. 11.03.2016 //// Seite 44WPS - Workplace Solutions GmbH
Muster auf Architekturebene: Vier Module
Modul
Grün
Modul
Lila
Modul
Orange
Modul
Blau
30. 11.03.2016 //// Seite 45WPS - Workplace Solutions GmbH
Musterkonsistenz: Was finden wir?
Ist die Abbildung der Architektur in der Struktur des Codes zu erkennen?
32. 11.03.2016 //// Seite 47WPS - Workplace Solutions GmbH
Muster auf Klassenebene: Entwurfsmuster und Mustersprachen
User Interface
Domain
Application
Fachliches Modul
Window
GUI
Model
View
C
o
n
t
r
o
l
ValueObject
Service
BusinessObject
SchichtungdurchMuster
33. 11.03.2016 //// Seite 48WPS - Workplace Solutions GmbH
Gute umgesetzte Mustersprache
90% des Sourcecodes lässt sich den Mustern zuordnen
0,1% Verletzungen in den Mustern
Eventer
Processes
Service
34. 11.03.2016 //// Seite 49WPS - Workplace Solutions GmbH
Entdeckung einer Mustersprache
80% des Sourcecodes lässt sich den 23 Mustern zuordnen
4% Verletzungen in den Mustern
35. 11.03.2016 //// Seite 50WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
HierarchisierungModularität Musterkonsistenz
Einheitliche und
durchgängige
Muster
Zyklenfreiheit auf
allen Ebenen
Zuständigkeit
Kopplung
Größenverhältnisse
Schnittstellen
36. 11.03.2016 //// Seite 51WPS - Workplace Solutions GmbH
Kostenfreie Werkzeuge
• SonarQube:
• Leitstand für Qualitätsmetriken
• Plattform für vielfältige Plugins
• JDepend:
• wenige Metriken
• einfache Abhängigkeitsanalyse
• JDepend + Google Architecture Rules:
• einfache Architekturbeschreibung
• Ndepend/CDepend:
• Metriken
• Abhängigkeitsanalyse
• XRadar:
• Analyse von Java-Projekten via maven
• Reports bezüglich Komplexität und Architekturverletzungen
• Moose
• Code City
38. 11.03.2016 //// Seite 59WPS - Workplace Solutions GmbH
Vorgehen bei der Architekturanalyse und Verbesserung
39. 11.03.2016 //// Seite 63WPS - Workplace Solutions GmbH
Leitstand für Verbesserungen im laufenden Betrieb
Die Architekturziele sind im ganzen Team präsent und werden verfolgt.
Softwarewartung und –Änderung ist einfacher und kostengünstig.
Die Software ist stabil, flexibel und langlebig.
Neue Mitarbeiter können nach kurzer Zeit produktiv mitentwickeln.
Ergebnis
Tatsächliches
Problem?24%
34%
44%
54%
64%
74%
84%
94%
v1.0 v1.1_b1 v1.1_b2 v1.1_b3 v1.1 v1.2_b1 v1.2 v2.0_b1 v2.0_b2 v2.0
Architekturqualität
Feinentwurfsqualität
Implementierungsqualität
Testabdeckung
40. Vielen Dank für Ihre Aufmerksamkeit!
www.langlebige-softwarearchitektur.de
Dr. Carola Lilienthal
Mitglied der
Geschäftsleitung
cl@wps.de
www.wps.de
+49 170 184 77 11
Diplom-Informatikerin
@cairolali