Post on 09-Jun-2020
transcript
17.01.2017
1
WPS - Workplace Solutions GmbH //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG
Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen
Dr. Carola Lilienthal, cl@wps.de, @cairolali
www.wps.de
17.01.2017
2
„Business-Software
die Spaß macht“
17.01.2017
3
17.01.2017
4
„Business-Software
die Spaß macht“
17.01.2017
5
17.01.2017
6
17.01.2017
7
17.01.2017
8
17.01.2017 //// Seite 21WPS - Workplace Solutions GmbH
Dr. Carola Lilienthal
Geschäftsführerin
cl@wps.de
www.wps.de
+49 40 229 499-0
+49 40 229 499-299
+49 170 184 77 11
Diplom-Informatikerin
@cairolali
a @cairolali
cl@wps.de
www.llsa.de
17.01.2017
9
17.01.2017 //// Seite 22WPS - Workplace Solutions GmbH
Expertise zu Architekturanalyse
17.01.2017 //// Seite 24WPS - Workplace Solutions GmbH
17.01.2017
10
17.01.2017 //// Seite 29WPS - Workplace Solutions GmbH
Ausmaß an
technischen Schulden
Funktionalität
pro Zeiteinheit
Refactorings
Architekturerneuerung
Architekturerosion
Wartung und Erweiterung
hohe
Schulden
geringe
Schulden
Gleichbleibender
Aufwand für Wartung
Hoher, unplanbarer
Aufwand für Wartung
17.01.2017 //// Seite 31WPS - Workplace Solutions GmbH
Architekturziele für Langlebigkeit
Architekturziel 1: Wartbarkeit
• schnelle Fehleranalyse
• schnelle Anpassungen
• Handlungssicherheit
• Stabilität
Architekturziel 2: Flexibilität
• Varianten von Geschäftsprozessen
• Geänderte Anforderungen
• Serviceorientierung und Skalierbarkeit
• Baukastenprinzip
17.01.2017
11
17.01.2017 //// Seite 32WPS - 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
17.01.2017 //// Seite 33WPS - Workplace Solutions GmbH
Mob Architecting – Architekturanalyse im Team
17.01.2017
12
17.01.2017 //// Seite 34WPS - Workplace Solutions GmbH
70%
20%
10%
Code verstehen
Problem lösen
Code schreiben
Womit verbringen wir unsere Zeit? - revisited
17.01.2017 //// Seite 36WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
17.01.2017
13
17.01.2017 //// Seite 37WPS - Workplace Solutions GmbH
17.01.2017 //// Seite 40WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
Modularität
17.01.2017
14
17.01.2017 //// Seite 42WPS - Workplace Solutions GmbH
Modularität
Hohe Kohäsion und
lose Kopplung
Separation of Concerns
Single Responsibility Principle
17.01.2017 //// Seite 43WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
Modularität
17.01.2017
15
17.01.2017 //// Seite 44WPS - Workplace Solutions GmbH
Hierarchien
17.01.2017 //// Seite 46WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität
17.01.2017
16
17.01.2017 //// Seite 51WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
17.01.2017 //// Seite 52WPS - Workplace Solutions GmbH
User Interface
Domain
Application
Hierarchien in Architekturebene: Schichten und Module
Fachliches
Modul B
Fachliches
Modul A
Fachliche Schichtung
Tech
nis
ch
e S
ch
ich
tun
g
Fachliches
Modul C
17.01.2017
17
17.01.2017 //// Seite 53WPS - 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
17.01.2017 //// Seite 54WPS - Workplace Solutions GmbH
Fachliche Schichtung misslungen
Technische Schichtung Keine fachliche Schichtung
Wenige
Schichten-
verletzungen
Fast alle 90
fachlichen
Komponenten
brauchen sich
gegenseitig
17.01.2017
18
17.01.2017 //// Seite 55WPS - Workplace Solutions GmbH
Hierarchien auf Klassenebene
Auswirkung auf:
Wartbarkeit
Austauschbarkeit
Testbarkeit
Modularität
Musterkonsistenz
Hierarchien auf allen Ebenen einführen
17.01.2017 //// Seite 60WPS - Workplace Solutions GmbH
119 Klassen aus 4 Komponenten
+ 28 weitere Klassen
17.01.2017
19
17.01.2017 //// Seite 61WPS - Workplace Solutions GmbH
Große Zyklen sichtbar machen
327 Klassen aus 8 Komponenten
brauchen sich gegenseitig
17.01.2017 //// Seite 62WPS - Workplace Solutions GmbH
17.01.2017
20
17.01.2017 //// Seite 63WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
17.01.2017 //// Seite 64WPS - Workplace Solutions GmbH
Uneven Modules
9 Komponenten = 17 Subsysteme
17.01.2017
21
17.01.2017 //// Seite 65WPS - 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
17.01.2017 //// Seite 66WPS - Workplace Solutions GmbH
128 Build Units mit Anzahl Klassen
3 Mio von 9 Mio LOC
1/3 des Systems
17.01.2017
22
17.01.2017 //// Seite 67WPS - Workplace Solutions GmbH
5.270 Klassen in einem Zyklus in einer BuildUnit
17.01.2017 //// Seite 68WPS - Workplace Solutions GmbH
Modularität: Ausgewogene Größenverhältnisse
Typische Metriken:
LOC pro Methode, Klasse, Package, Komponenten
Duplizierter Code
Zyklomatische Komplexität
Ist das System auf den verschiedenen Ebenen ausgewogen?
Welche Code-Abschnitte fallen durch ihre Größe besonders auf?
Anti-Pattern„Godclass“
17.01.2017
23
17.01.2017 //// Seite 70WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
17.01.2017 //// Seite 71WPS - Workplace Solutions GmbH
Muster auf Architekturebene: Vier Module
Modul
GrünModul
LilaModul
OrangeModul
Blau
17.01.2017
24
17.01.2017 //// Seite 72WPS - Workplace Solutions GmbH
Musterkonsistenz: Was finden wir?
Ist die Abbildung der Architektur in der Struktur des Codes zu erkennen?
17.01.2017 //// Seite 73WPS - Workplace Solutions GmbH
Muster sinnvoll eingesetzt
17.01.2017
25
17.01.2017 //// Seite 74WPS - Workplace Solutions GmbH
Muster auf Klassenebene: Entwurfsmuster und Mustersprachen
User Interface
Domain
Application
Fachliches Modul
Window
GUI
Model
ViewControl
ValueObject
Service
BusinessObject
Sch
ich
tun
g d
urc
h M
uste
r
17.01.2017 //// Seite 75WPS - Workplace Solutions GmbH
Gute umgesetzte Mustersprache
90% des Sourcecodes lässt sich den Mustern zuordnen
0,1% Verletzungen in den Mustern
Eventer
ProcessesService
17.01.2017
26
17.01.2017 //// Seite 77WPS - Workplace Solutions GmbH
Entdeckung einer Mustersprache
80% des Sourcecodes lässt sich den 23 Mustern zuordnen
4% Verletzungen in den Mustern
17.01.2017 //// Seite 78WPS - Workplace Solutions GmbH
Fehlende und unbekannte Muster
Fachliches Modul
Model
View
Control
ValueObject
Service
BusinessObject
SelectionSupporter??
?
17.01.2017
27
17.01.2017 //// Seite 79WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
HierarchienChunking
Aufbau von
Schemata
HierarchisierungModularität Musterkonsistenz
Einheitliche und
durchgängige
Muster Zyklenfreiheit auf
allen Ebenen
Zuständigkeit
Kopplung
Größenverhältnisse
Schnittstellen
17.01.2017 //// Seite 80WPS - 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
17.01.2017
28
17.01.2017 //// Seite 81WPS - Workplace Solutions GmbH
Kommerzielle Produkte
Axivion Bauhaus: Java, C#, C/C++, Ada, VB und Cobol
Lattix: Java, .Net, C/C++, Ada, Delphi und DB-Systeme
Structure101: Java, C++, Ada
SotoArc und Sonargraph: Java, C#, C/C++, ABAP, PHP
Teamscale: C#, Java
Seerene: Java, C#, C/C++, ABAP
17.01.2017 //// Seite 83WPS - Workplace Solutions GmbH
Qualität von Softwarearchitekturen- Java, C#, C++, ABAP, PHP -
17.01.2017
29
17.01.2017 //// Seite 85WPS - Workplace Solutions GmbH
Dr. Carola Lilienthal
Geschäftsführerin
cl@wps.de
www.wps.de
+49 40 229 499-0
+49 40 229 499-299
+49 170 184 77 11
Diplom-Informatikerin
@cairolali
a @cairolali
cl@wps.de
www.llsa.de
Schulungen zu
Architektur und Domain-Driven Design
wps.de/schulung