Upload
carola-lilienthal
View
2.510
Download
0
Embed Size (px)
WPS - Workplace Solutions GmbH //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG
Langlebige Softwarearchitekturen - technische Schulden beherrschen und abbauen
Dr. Carola [email protected], @cairolaliwww.wps.de
07.02.2016 //// Seite 2WPS - Workplace Solutions GmbH
Die WPS – Workplace Solutions GmbH
Anwendungsorientierung
Kompetenz
Qualität
Software-Architektur
Anforderungs-ermittlung
Leitstand und Interaktion
Individual-software
Business-Software,die Spaß macht!
07.02.2016 //// Seite 3WPS - Workplace Solutions GmbH
07.02.2016 //// Seite 4WPS - Workplace Solutions GmbH
Technische Schulden ≠ Langlebigkeit
07.02.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
07.02.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?
Plan mit
Klassen =
Soll-Architektur Ist-Architektur
≠ Sourcecode
DirectoriesDirectoriesPackagesNamespaces
Subsysteme KomponentenModule
Schichten
07.02.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
07.02.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
07.02.2016 //// Seite 9WPS - Workplace Solutions GmbH
70%
20%
10%
Code verstehen
Problem lösen
Code schreiben
Womit verbringen wir unsere Zeit?
07.02.2016 //// Seite 11WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
07.02.2016 //// Seite 12WPS - Workplace Solutions GmbH
07.02.2016 //// Seite 15WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
Einfache, einheitliche Architektur
Modularität
07.02.2016 //// Seite 16WPS - Workplace Solutions GmbH
Modularität
�Hohe Kohäsion und lose Kopplung
�Responsibility Driven Design
�Separation of Concerns
�Single Responsibility Principle
07.02.2016 //// Seite 17WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
Einfache, einheitliche Architektur
Modularität
07.02.2016 //// Seite 18WPS - Workplace Solutions GmbH
Hierarchien
� �
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
Einfache, einheitliche Architektur
HierarchisierungModularität
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
Einfache, einheitliche Architektur
HierarchisierungModularität Musterkonsistenz
07.02.2016 //// Seite 26WPS - Workplace Solutions GmbH
User Interface
Domain
Application
Hierarchien in Architekturebene: Schichten und Module
Fachliches Modul B
Fachliches Modul B
Fachliches Modul A
Fachliches Modul A
Fachliche Schichtung
Tech
nis
che
Sch
ich
tun
gFachliches
Modul CFachliches
Modul C
07.02.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
07.02.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
07.02.2016 //// Seite 29WPS - Workplace Solutions GmbH
Hierarchien auf Klassenebene
Auswirkung auf:
� Wartbarkeit
� Austauschbarkeit
� Testbarkeit
� Modularität
� Musterkonsistenz
� Hierarchien auf allen Ebenen einführen
07.02.2016 //// Seite 30WPS - Workplace Solutions GmbH
Einfache Zyklengruppe
07.02.2016 //// Seite 31WPS - Workplace Solutions GmbH
Schwierige Zyklengruppe
07.02.2016 //// Seite 34WPS - Workplace Solutions GmbH
119 Klassen aus 4 Komponenten+ 28 weitere Klassen
07.02.2016 //// Seite 35WPS - Workplace Solutions GmbH
Große Zyklen sichtbar machen
327 Klassen aus 8 Komponentenbrauchen sich gegenseitig
07.02.2016 //// Seite 36WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
Einfache, einheitliche Architektur
HierarchisierungModularität Musterkonsistenz
07.02.2016 //// Seite 37WPS - Workplace Solutions GmbH
Uneven Modules
9 Komponenten = 17 Subsysteme
07.02.2016 //// Seite 38WPS - 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
07.02.2016 //// Seite 41WPS - 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“
07.02.2016 //// Seite 42WPS - Workplace Solutions GmbH
Beispiel: Größenverhältnis und Kopplungsgrad
� Große Steuerungsklassen benutzen bis zu 100 – 500 andere Klassen
� Ausgewogene Größenverhältnisse führen zu geringerer Kopplung
07.02.2016 //// Seite 43WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
Einfache, einheitliche Architektur
HierarchisierungModularität Musterkonsistenz
07.02.2016 //// Seite 44WPS - Workplace Solutions GmbH
Muster auf Architekturebene: Vier Module
Modul
Grün
Modul
LilaModul
Orange
Modul
Blau
07.02.2016 //// Seite 45WPS - Workplace Solutions GmbH
Musterkonsistenz: Was finden wir?
� Ist die Abbildung der Architektur in der Struktur des Codes zu erkennen?
07.02.2016 //// Seite 46WPS - Workplace Solutions GmbH
Muster sinnvoll eingesetzt
07.02.2016 //// Seite 47WPS - Workplace Solutions GmbH
Muster auf Klassenebene: Entwurfsmuster und Mustersprachen
User Interface
Domain
Application
Fachliches ModulFachliches Modul
Window
GUI
Model
ViewControl
ValueObject
Service
BusinessObject
Sch
ich
tun
g d
urc
h M
ust
er
07.02.2016 //// Seite 48WPS - Workplace Solutions GmbH
Gute umgesetzte Mustersprache
☺ 90% des Sourcecodes lässt sich den Mustern zuordnen
☺ 0,1% Verletzungen in den Mustern
�������
�����������
07.02.2016 //// Seite 49WPS - Workplace Solutions GmbH
Entdeckung einer Mustersprache
☺ 80% des Sourcecodes lässt sich den 23 Mustern zuordnen
☺ 4% Verletzungen in den Mustern
07.02.2016 //// Seite 50WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von Hierarchien
ChunkingAufbau von Schemata
HierarchisierungModularität Musterkonsistenz
� Einheitliche und durchgängige Muster
� Zyklenfreiheit auf allen Ebenen
� Zuständigkeit� Kopplung� Größenverhältnisse� Schnittstellen
07.02.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
07.02.2016 //// Seite 52WPS - Workplace Solutions GmbH
Kommerzielle Produkte
� Axivion Bauhaus: Java, .Net, C/C++, Ada, VB und Cobol
� Lattix: Java, .Net, C/C++, Ada, Delphi und DB-Systeme
� Structure101: Java, C++, Ada
� SotoArc und Sonargraph: Java, .Net, C/C++, ABAP, PHP
• Teamscale• Seerene
07.02.2016 //// Seite 59WPS - Workplace Solutions GmbH
Vorgehen bei der Architekturanalyse und Verbesserung
07.02.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ächlichesProblem?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
Vielen Dank für Ihre Aufmerksamkeit!
www.langlebige-softwarearchitektur.de
Dr. Carola LilienthalMitglied der
Geschäftsleitung
www.wps.de
+49 170 184 77 11
Diplom-Informatikerin
@cairolali