Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Code wartbar: Qualität
messen, Metriken
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Inhalt
• Qualitätsbegriff
• Typische Probleme
• Ansätze zum Vermeiden dieser
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Qualität
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Typische Probleme
• Implementationsebene
– Handwerklich schlechte Codierung
•
•
•
•
riesige, komplexe Methoden
unsorgfältige Fehlerbehandlung
unleserliche Formatierung
Reuse by Editor
– Falsche Verwendung der Technologie
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Typische Probleme
• Designebene
– Schlecht strukturierte Klassenknäuel
– Gottklassen
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Typische Probleme
• Architekturebene
– Fehlende Architektur
– Degenerierte Architektur
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Big Ball of Mud Pattern
A BIG BALL OF MUD is haphazardly structured, sprawling, sloppy, ducttape and bailing wire, spaghetti code jungle. We’ve all seen them.
These systems show unmistakable signs of unregulated growth, and
repeated, expedient repair. Information is shared promiscuously among
distant elements of the system, often to the point where nearly all the
important information becomes global or duplicated. The overall
structure of the system may never have been well defined. If it was, it
may have eroded beyond recognition.
Brian Foot and Joseph Yoder, http://www.laputan.org/mud/
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Ansätze zur Verbesserung
• Foote and Yoder:
– One of mud's most effective enemies is
sunshine.
– > Expose your code to daylight!
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Ansätze zur Verbesserung II
• Kommunikation, Ausbildung, Kontrolle
– Code Reading, Pair Programming
– Regelprüfung auf Implementationsebene
– Software Metriken
– Regelprüfung auf Design- und
Architekturebene
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Regelprüfung auf Code-Ebene
• Regelbeispiele
–
–
–
–
–
–
–
–
Abstract types should not have constructors
Assemblies should have valid strong names
Avoid empty interfaces
Avoid excessive parameters on generic types
Avoid namespaces with few types
Avoid out parameters
Collections should implement generic interface
Consider passing base types as parameters
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Regelprüfung auf Code-Ebene II
• Prüfung
– In der IDE
– Evtl. auch in einem Monitoring-Werkzeug zur
zentralen Überwachung
• Erfahrung
–
–
–
–
Gut zum Kennenlernen einer neuen Kultur
Einigung auf Regelsatz im Team häufig schwierig
Findet bei erfahrenen Entwicklern kaum Probleme
Kann in seltenen Fällen relevante Probleme
identifizieren
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Regelprüfung auf Code-Ebene III
• Einfacher Einstieg mit FxCop
– von Microsoft (gratis)
• Code analysis tool that checks .NET assemblies for
conformance to the Microsoft .NET Framework Design
Guidelines. It uses reflection, MSIL parsing, and call
graph analysis to inspect assemblies for more than 200
defects in the following areas: naming conventions,
library design, localization, security, and performance.
The package includes both GUI and command line
versions of the tool, as well as the SDK to create your
own rules.
– Mehr als 100 vordefinierte Regeln
– http://www.gotdotnet.com/team/fxcop/
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Software Metriken
• Typische Kategorien mit Beispielen
– Größe
• Anzahl öffentliche Methoden ohne Getter und Setter
• Anzahl Zeilen einer Methodenimplementation
– Kopplung
• Anzahl verwendeter Artefakte
– Komplexität
• Cyclomatic Complexity, größte Verschachtelungstiefe
– Bad Smells
• Gottklassen, unbenutzte Artefakte
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Software Metriken II
• Erfahrung
–
–
–
–
–
Liefert Werte, die interpretiert werden müssen
Identifiziert viele Probleme, die keine sind
Gut geeignet zum Identifizieren von Extremfällen
Gut geeignet als Input für Qualitätsanalysen
Metriken können erfolgreich zu Regeln befördert
werden.
• Z.B. keine Methodenimplementierung darf mehr als 100
Zeilen haben.
– Metriken sind hauptsächlich als Zusatzinformation
nützlich.
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Software Metriken III
• Einfacher Einstieg mit Vil
–
–
–
–
–
Einfach bedienbare Metrikberechnungsengine
Gratis für Assemblies mit < 100 Klassen
Sinnvolle Standardmetriken
Vil ermöglicht einen schnellen Einstieg.
Wer den Metrikansatz seriös verfolgen will sollte
sich nachher professionellere Werkzeuge
anschauen.
– http://www.1bot.com/
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Architekturebene
• Was kann man messen?
– Zyklische Beziehungen auf allen
Abstraktionsebenen
– Grosse duplizierte Code-Blöcke
– Strukturelle Architekturkonformität der
Implementierung
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Zyklische Beziehungen
• Wieso sind zyklische Beziehungen
problematisch?
– Artefakte die zyklisch gekoppelt sind können nicht
einzeln getestet werden.
– Artefakte die in verschiedenen Zyklen gebraucht
werden spielen dabei häufig mehrere Rollen, was
sie schlecht verständlich macht.
– Artefakte die in verschiedenen Zyklen gebraucht
werden können nicht mehr einfach ausgetauscht
werden.
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Zyklenbeispiel
• JDK 1.5: 1315 Klassen in 229 Packages hängen alle
direkt oder indirekt von einander ab
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Duplizierter Code
• Wieso ist duplizierter Code
problematisch?
– Je mehr Code desto schwieriger wird es
die Übersicht zu behalten
– Fehler müssen an verschiedenen Stellen
mehrfach geflickt werden
• Erfahrung in riesigen Projekten zeigt
– bis zu 70% des Codes sind Duplikate
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Architekturkonformität
• Voraussetzung um diese Messen zu
können
– Explizite Repräsentation der Architektur
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Abstraktionsebene Namespace/Verzeichnis /Paket
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Abstraktionsebene Subsystem
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Subsystemschnittstellenverletzung
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Grapharchitekturen
Erlaubte Beziehung
Verbotene Beziehung
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Schichtenarchitekturen
Strikte Schichtung
durchbrochen
(optional)
Oberfläche
Interface
Fachlogik
Aufwärtsreferenz:
Immer illegal
Datenhaltung
Illegale Benutzungsbeziehungen:
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Anwendung von Schichtenarchitekturen
Hauptschichtenmodell
Vertikale Schichten
z.B. für Produktlinien
Prozess- und LibrarySchichtenmodelle
Verfeinern einer
Schicht
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Architekturprüfung
• Einfacher Einstieg mit "Sotograph for
Architects"
–
–
–
–
–
–
Mächtige intuitive Architekturmodellierung
Virtuelles Reengineering
Strukturelles Verstehen
Zyklenanalyse
Während der Prerelease-Phase gratis
Anfragen an [email protected]
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Werkzeugübersicht
• http://sharptoolbox.com/categories/code
-analysers-standards-verifiers
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Wichtig für Praktischen Einsatz
• Monitoring
– Einfach und schnell
• Prüfen von relativ wenigen zentralen Regeln
– Trendunterstützung
– Prüfung in der IDE wo sinnvoll
– Visualisierung der Entwicklung über die Zeit für
die Erfolgskontrolle
• Tiefenanalysen
– So viel Information wie möglich
– Erklären der Ursachen von Problemen
– Visualisierung im Kontext der Gesamtanwendung
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Wichtig für praktischen Einsatz II
• Reengineeringplanung
– Virtuelles refactoring
– Überwachung der Umsetzung
– Externe Spezialisten können eingefahrene
Ideen hinterfragen
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Wichtig für praktischen Einsatz III
• Voraussetzungen
– Low-level Regelprüfung
• Muss in der IDE funktionieren
– Metriken
• Trend, Reports, Erklärungen
– Architekturprüfung
• Umgang mit Problemen, die nicht sofort
behoben werden können
– Unterscheidung alte vs. neue Probleme
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Werkzeugfamilie für Monitoring
Reporting Add-ons
Sotoreport
Sotoweb
Web Browser
HTML and PDF Reports
Schnelle Übersicht über die
Veränderung relevanter
Qualitätsaspekte für Gruppen
von Softwaresystemen
HTML-GUI
Schneller interaktiver Zugriff
auf Information über Metriken
und Regelverletzungen,
ihre Veränderung über die
Zeit und Hineinzoomen bis
zum Quelltext
Sotograph
Repository
(RDBMS)
Sotograph
Client
Swing-GUI
Erstellen der Architektur und
Metrik Modelle
Visualisierung
What-if-analysen
Ad-hoc-abfragen
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Nutzen des Qualitätsmonitoring
• Ohne Architekturmonitoring
– Publizierte Studien zeigen Einsparungen
im Bereich von 10-30% der
Wartungskosten
• Mit Architekturmonitoring
– Die Einsparungen bei Erweiterungen
müssten langfristig deutlich größer sein
Dr. Walter Bischofberger
Code wartbar: Qualität messen, Metriken
Software-Tomography GmbH
Cottbus, München, Zug
www.software-tomography.com

Code wartbar: Qualität messen, Metriken