Fast jedes Softwaresystem wird mit guten Vorsätzen aber unter schwierigen Bedingungen entwickelt. Deadlines, unterschiedliche Qualifikationen und Missverständnisse im Entwicklungsteam führen dazu, dass die Architektur des Systems erodiert und Schritt für Schritt technische Schulden aufgebaut werden. Bis das ganze System zu einem unordentlichen großen Knäul verwoben ist und jede Anpassung zu einer unkalkulierbaren Kostenschraube wird. Weder den Entwicklungsteam, noch dem Management macht ein System in einem solchen Zustand Freude.
In diesem Vortrag zeige ich Ihnen, wie Sie Ihren Sourcecode organisieren und weiterentwickeln können, um das Entstehen und Ansteigen von technischen Schulden zu verhindern. Dabei werden Sie sehen, welche Prinzipien helfen, technische Schulden zu vermeiden und wie sie durch geeignete Refactoring aus der Welt geschaffen werden können. Basis aller Empfehlungen werden Beispiele aus den nunmehr über 100 Analysen sein, die ich an unterschiedlichsten Softwaresystemen durchführen durfte.
Technische Schulden tun weh! Wie man sie erkennt und beseitigt
1. WPS - Workplace Solutions GmbH //// Hans-Henny-Jahnn-Weg 29 //// 22085 HAMBURG
Technische Schulden tun weh!
Wie man sie erkennt und beseitigt.
Dr. Carola Lilienthal, cl@wps.de, @cairolali
www.wps.de
2.
3. 10.04.2017 //// Seite 4WPS - Workplace Solutions GmbH
Software-
Architektur
Anforderungs-
ermittlung
Leitstand und
Interaktion
Individual-
software
Business-Software,
die Spaß macht!
WPS – Workplace Solutions GmbH
9. 10.04.2017 //// Seite 11WPS - Workplace Solutions GmbH
70%
20%
10%
Code verstehen
Problem lösen
Code schreiben
Womit verbringen wir unsere Zeit?
10. 10.04.2017 //// Seite 12WPS - 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
11. 10.04.2017 //// Seite 13WPS - Workplace Solutions GmbH
Mob Architecting – Architekturanalyse im Team
12. 10.04.2017 //// Seite 18WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
14. 10.04.2017 //// Seite 23WPS - Workplace Solutions GmbH
class XYManager
{
function register_service($service) {…}
function get_service : Service {…}
function initialize_service_registry() {…}
function send_event($event) {…}
function initialize_printer_queue() {…}
function print_document($doc) {…}
}
15. 10.04.2017 //// Seite 24WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
Modularität
16. 10.04.2017 //// Seite 26WPS - Workplace Solutions GmbH
Modularität
Hohe Kohäsion und
lose Kopplung
Separation of Concerns
Single Responsibility Principle
17. 10.04.2017 //// Seite 27WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
Modularität
19. 10.04.2017 //// Seite 30WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität
20. 10.04.2017 //// Seite 35WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
21. 10.04.2017 //// Seite 36WPS - 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
22. 10.04.2017 //// Seite 37WPS - Workplace Solutions GmbH
Typische bei jungen Systemen
Gute technische Schichtung Unfertige fachliche Struktur
Technische Struktur
Fachliche Struktur ist unklar
23. 10.04.2017 //// Seite 38WPS - 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
24. 10.04.2017 //// Seite 40WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
26. 10.04.2017 //// Seite 42WPS - 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
27. 10.04.2017 //// Seite 43WPS - Workplace Solutions GmbH
128 Build Units mit Anzahl Klassen
3 Mio von
9 Mio LOC
1/3 des
Systems
28. 10.04.2017 //// Seite 44WPS - Workplace Solutions GmbH
5.270 Klassen in einem Zyklus
in einer BuildUnit
29. 10.04.2017 //// Seite 47WPS - Workplace Solutions GmbH
Komplexe Strukturen verstehen = Zeitgewinn!
Kognitive Mechanismen
Bildung von
Hierarchien
Chunking
Aufbau von
Schemata
Einfache, einheitliche
Architektur
HierarchisierungModularität Musterkonsistenz
30. 10.04.2017 //// Seite 48WPS - Workplace Solutions GmbH
Muster auf Architekturebene: Vier Module
Modul
Grün
Modul
Lila
Modul
Orange
Modul
Blau
31. 10.04.2017 //// Seite 49WPS - Workplace Solutions GmbH
Musterkonsistenz: Was finden wir?
Ist die Abbildung der Architektur in der Struktur des Codes zu erkennen?
33. 10.04.2017 //// Seite 51WPS - Workplace Solutions GmbH
Muster auf Klassenebene: Entwurfsmuster und Mustersprachen
User
Interface
Domain
Application
Fachliches
Modul A
Fachliche Schichtung
Fachliches
Modul C
Fachliches Modul B
Window
GUI
Model
View
C
o
n
t
r
o
l
ValueObject
Service
BusinessObject
SchichtungdurchMuster
34. 10.04.2017 //// Seite 52WPS - Workplace Solutions GmbH
Kaputte Muster führen zu Zyklen
35. 10.04.2017 //// Seite 53WPS - Workplace Solutions GmbH
119 Klassen aus 4 Komponenten
+ 28 weitere Klassen
36. 10.04.2017 //// Seite 54WPS - Workplace Solutions GmbH
Große Zyklen sichtbar machen
327 Klassen aus 8 Komponenten
brauchen sich gegenseitig
38. 10.04.2017 //// Seite 56WPS - Workplace Solutions GmbH
Gute umgesetzte Mustersprache
90% des Sourcecodes lässt sich den Mustern zuordnen
0,1% Verletzungen in den Mustern
Eventer
Processes
Service
39. 10.04.2017 //// Seite 60WPS - 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
40. 10.04.2017 //// Seite 64WPS - Workplace Solutions GmbH
Qualität von Softwarearchitekturen
- Java, C#, C++, ABAP, PHP -
41. 10.04.2017 //// Seite 65WPS - Workplace Solutions GmbH
Vielen Dank für Ihre Aufmerksamkeit!