usus - njks.de · zentrale begriffe •metrik ist eine eigenschaft oder der wert dieser eigenschaft...
TRANSCRIPT
![Page 1: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/1.jpg)
Usus.NETVisual Studio-Erweiterung zur statischen Code-Analyse
Manuel Naujoks
23.11.2013 1
![Page 2: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/2.jpg)
Agenda
1. Anforderungen
2. Usus für Java
3. Technologie Evaluierung
4. Usus.NET Visual Studio-Erweiterung
5. Clean Code Unterstützung
6. andrena-Softwarequalitätsindex
7. Evaluation
8. Zusammenfassung
9. Ausblick
08.06.2010 2
![Page 3: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/3.jpg)
Zentrale Begriffe
• Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt.
Metrik
• Statische Code-Analyse bezeichnet die Analyse eines Softwareprogramms, ohne das dieses ausgeführt werden muss. Als Ergebnis wird ein Bericht, beispielsweise über Metriken, erstellt.
Statische Code-Analyse
• Clean Code bezeichnet strukturierteren, wartbareren und verständlicheren Quellcode. „Clean Code“ ist der Titel von Robert C. Martin's Buch.
Clean Code
08.06.2010 3
![Page 4: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/4.jpg)
ANFORDERUNGEN
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 4
![Page 5: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/5.jpg)
Anforderungen / Aufgabe
23.11.2013 5
• Visual Studio-Erweiterung (Usus für Eclipse als Vorlage)
• direktes Feedback anhand von Softwaremetriken
• Softwareentwickler unterstützen bei Clean Code-Entwicklung
• Heuristiken der Histogramme erkennen
• Softwarequalitätsindex (SQI) berechnen
• Evaluierung von Beispielaufgabe (andrena-Kurs)
![Page 6: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/6.jpg)
Anforderungen / Ziele
23.11.2013 6
Einsicht in die Codebasis
Erkennen von Problemfällen
Förderung von Clean Code
Interpretation der
Softwarequalität
![Page 7: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/7.jpg)
Anforderungen / Architektur
23.11.2013 7
![Page 8: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/8.jpg)
USUS FÜR JAVA
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 8
![Page 9: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/9.jpg)
Usus für Java / Allgemein
• Usus (lat. „das, was üblich ist“)
• Eclipse Plugin
– Installation über Software Sites
– http://projectusus.googlecode.com/svn/updates/
• Analyse pro Speichervorgang
23.11.2013 9
![Page 10: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/10.jpg)
Usus für Java / Fenster
23.11.2013 10
![Page 11: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/11.jpg)
Projektübergreifend
• Durchschnittliche Komponentenabhängigkeit (ACD)
• Durchschnittliche Klassengröße
• Durchschnittliche zyklomatische Komplexität
• Durchschnittliche Methodenlänge
• Klassen mit nicht-statischen öffentlichen Feldern
• Pakete mit zyklischen Abhängigkeiten
Pro Klasse
• Klassengröße
• Kumulierte Komponentenabhängigkeit (CCD)
Pro Methode
• Zyklomatische Komplexität
• Methodenlänge
Usus für Java / Metriken
23.11.2013 11
![Page 12: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/12.jpg)
Usus für Java / Metriken / Pro Methode
23.11.2013 12
• Zyklomatische Komplexität
– Anzahl der unabhängigen Möglichkeiten eine Methode zu durchlaufen
– Anzahl aller entscheidungstreffenden Stellen in der Methode
• Methodenlänge
– Anzahl der Anweisungen
![Page 13: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/13.jpg)
Usus für Java / Metriken / Pro Klasse
23.11.2013 13
• Klassengröße
– Anzahl der Instanzmethoden,
– der Klassenmethoden
– und der Konstruktoren
• Kumulierte Komponentenabhängigkeit
– Anzahl der direkten
– und indirekten Abhängigkeiten
![Page 14: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/14.jpg)
Usus für Java / Metriken / Projektübergreifend
23.11.2013 14
• Durchschnittliche Komponentenabhängigkeit
– Durchschnitt der kumulierten Komponentenabhängigkeiten aller Klassen
• Durchschnittliche Klassengröße
• Durchschnittliche zyklomatische Komplexität
• Durchschnittliche Methodenlänge
• Klassen mit nicht-statischen öffentlichen Feldern
• Pakete mit zyklischen Abhängigkeiten
![Page 15: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/15.jpg)
Usus für Java / Hotspots
23.11.2013 15
• Kumulierte Komponentenabhängigkeit
– Schwellwertfunktion anhand einer Menge an Klassen
• Klassengröße (Schwellwert 12)
• Zyklomatische Komplexität (Schwellwert 4)
• Methodenlänge (Schwellwert 9)
• Klassen mit nicht-statischen öffentlichen Feldern (Schwellwert 0)
• Pakete mit zyklischen Abhängigkeiten (Größe des Kreis) (Schwellwert 1)
![Page 16: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/16.jpg)
Usus für Java / Zusammenfassung
23.11.2013 16
Einsicht in die Codebasis
Erkennen von Problemfällen
Förderung von Clean Code
Interpretation der
Softwarequalität
![Page 17: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/17.jpg)
TECHNOLOGIE EVALUIERUNG
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 17
![Page 18: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/18.jpg)
Technologie Evaluierung / Kriterien
• Metrik-Informationen bestimmbar?
• Verfügbar?
• Kostenfrei?
• Einfach einsetzbar?
• Für alle .NET-Versionen?
• Unabhängige Komponente?
• Tauglich für unvollständige Software?
• Für C# und VB.NET?
• Für Assembly?
• Für Code?
23.11.2013 18
![Page 19: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/19.jpg)
Technologie Evaluierung / FxCop
• Assembly-Analyse
• FxCop nutzt Regeln
• Eigene Regel
• Ergebnisse weiterverarbeiten?
23.11.2013 19
![Page 20: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/20.jpg)
Technologie Evaluierung / Common Compiler Infrastracture
CCI Metadata
CCI Code and AST
Components
• Assembly-Analyse
• von Microsoft
• Einfach
• Direkt
• FxCop nutzt CCI
23.11.2013 20
![Page 21: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/21.jpg)
Technologie Evaluierung / NRefactory
• Assembly-Analyse (mit Mono.Cecil)
• Quellcode-Analyse
• von IC#code
• Teil von SharpDevelop
• Aktuell nur für C#
• Semantische Analyse (Method Binding) erforderlich -> kompilieren
23.11.2013 21
![Page 22: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/22.jpg)
Technologie Evaluierung / Project Roslyn
• Quellcode-Analyse
• von Microsoft
• Neue .NET-Compiler APIs
• Semantische Analyse (Method Binding) erforderlich -> kompilieren
• Workspace API
– Syntaxbaum und semantische Analyse auf Solution-Ebene
– wenn in Visual Studio alles automatisch
– neue Möglichkeiten Erweiterung zu entwickeln
• Aktuell nur CTP (Community Technology Preview)
23.11.2013 22
![Page 23: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/23.jpg)
Technologie Evaluierung / Zusammenfassung
23.11.2013 23
![Page 24: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/24.jpg)
USUS.NET VISUAL STUDIO-ERWEITERUNG
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 24
![Page 25: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/25.jpg)
Usus.NET Visual Studio-Erweiterung / Allgemein
• Addin oder VSIX-Erweiterung?
• Assembly-Analyse mit CCI nach jedem Kompiliervorgang
23.11.2013 25
![Page 26: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/26.jpg)
Usus.NET Visual Studio-Erweiterung / Core
//var metrics = Analyze.PortableExecutables(assemblyToAnalyze);
var metrics = Analyze.Me();
foreach (var method in metrics.Methods)
{
Console.WriteLine("Signature: " + method.Signature);
Console.WriteLine("CC: " + method.CyclomaticComplexity);
}
23.11.2013 26
CODE
DEMO
![Page 27: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/27.jpg)
Usus.NET Visual Studio-Erweiterung / Fenster
23.11.2013 27
![Page 28: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/28.jpg)
Usus.NET Visual Studio-Erweiterung / Fenster
23.11.2013 28
![Page 29: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/29.jpg)
Usus.NET Visual Studio-Erweiterung / Fenster
23.11.2013 29
![Page 30: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/30.jpg)
Usus.NET Visual Studio-Erweiterung / Integration
• Visual Studio-Kontext ermitteln (in einer Fensteroberklasse)
– var dt2 = base.GetService(typeof(SDTE)) as EnvDTE80.DTE2;
• Oberfläche dem Visual Studio-Fenster zuweisen
– base.Content = ViewFactory.CreateCockpit(ViewHub.Instance);
• Auf Events reagieren und Analyse starten
– BuildSuccessfull += files => ViewHub.Instance.TryStartAnalysis(files);
23.11.2013 30
![Page 31: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/31.jpg)
CLEAN CODE UNTERSTÜTZUNG
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 31
![Page 32: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/32.jpg)
Clean Code Unterstützung / Bekannte Metriken
• CRAP
– Kombination von Testabdeckung und zyklomatischer Komplexität
• The Braithwaite Correlation
– nutzt logarithmische Skalen, lineare Regression und Pareto-Verteilung
• Neue Metrik?
– Bedeutung von CRAP oder Braithwaite Correlation?• Bezug zu Clean Code? Nicht offensichtlich
– Grundlegende Clean Code-Metriken -> kleine Metriken
– Bsp. Funktionen: „Small!“ („Clean Code“ Seite 34)
– Lambda der geometrischen Verteilung
23.11.2013 32
![Page 33: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/33.jpg)
Clean Code Unterstützung / Metrik-Histogramm
• Approximation der geometrischen Verteilung
23.11.2013 33
Je größer das λ, desto eher
entsprechen die Werte der
betrachteten Metrik dem Clean Code-Paradigma.
![Page 34: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/34.jpg)
Clean Code Unterstützung / Metrik-Histogramm
• Annäherung mit der Maximum Likelyhood-Methode
– Schätzer
– Reziproker Mittelwert aller Werte des Histogramms
• Lambda der geometrischen Verteilung
– Neue Metrik mit direktem Bezug zu Clean Code
– Mehr kleinere Metriken, größeres Lambda• Bsp.: kleine Methodenlängen von Robert C. Martin
explizit befürwortet!
– Veränderungen des λ klassifizieren Refactorings• λ-verbessernde Refactorings fördern Clean Code
23.11.2013 34
Je größer das λ, desto eher
entsprechen die Werte der
betrachteten Metrik dem Clean Code-Paradigma.
![Page 35: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/35.jpg)
Clean Code Unterstützung / Zusammenfassung
23.11.2013 35
Einsicht in die Codebasis
Erkennen von Problemfällen
Förderung von Clean Code
Interpretation der
Softwarequalität
![Page 36: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/36.jpg)
ANDRENA-SOFTWAREQUALITÄTSINDEX
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 36
![Page 37: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/37.jpg)
andrena-Softwarequalitätsindex / Allgemein
• Werte des Usus.NET Cockpit erfordern viel manuelle Interpretation
• Einschätzungen, Gewichtungen und Vergleiche basieren auf Erfahrung
– Automatisierbar?
23.11.2013 37
![Page 38: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/38.jpg)
andrena-Softwarequalitätsindex / Allgemein
• Ein einziger transparenter Wert erleichtert Interpretation
– andrena-Softwarequalitätsindex von Dr. Eberhard Kuhn
• Aktuelle Bestimmung
– Software kompilieren
– Externes Tool für statische Code-Analyse starten (NDepend)
– Ergebnisbericht (Metriken) aufbereiten und in Isis importieren
• Isis verwaltet und visualisiert die Softwarequalitätsindizes
• Zu viele Context Switches erforderlich
23.11.2013 38
![Page 39: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/39.jpg)
andrena-Softwarequalitätsindex / Fenster
23.11.2013 39
![Page 40: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/40.jpg)
andrena-Softwarequalitätsindex / Berechnung
• Testabdeckung in Prozent
• Anzahl der Namespaces in Zyklen
• Anzahl der komplizierten Methoden
• Durchschnittliche Komponentenabhängigkeit in Prozent
• Anzahl der großen Klassen
• Anzahl der großen Große Methoden
• Anzahl der Compiler-Warnungen
23.11.2013 40
![Page 41: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/41.jpg)
andrena-Softwarequalitätsindex / Berechnung
• Gewichtete Softwarequalitätsniveaus für jeden Parameter m
– (außer Testabdeckung)
• Summe aller gewichteten Softwarequalitätsniveaus
23.11.2013 41
![Page 42: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/42.jpg)
andrena-Softwarequalitätsindex / Zusammenfassung
23.11.2013 42
Einsicht in die Codebasis
Erkennen von Problemfällen
Förderung von Clean Code
Interpretation der
Softwarequalität
![Page 43: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/43.jpg)
EVALUATION
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 43
![Page 44: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/44.jpg)
Evaluation / Laufzeiten
23.11.2013 44
![Page 45: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/45.jpg)
Evaluation / Laufzeiten
23.11.2013 45
![Page 46: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/46.jpg)
Evaluation / Refactoring-Übung aus ASE-Kurs (vorher)
23.11.2013 46
![Page 47: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/47.jpg)
Evaluation / Refactoring-Übung aus ASE-Kurs (nachher)
23.11.2013 47
![Page 48: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/48.jpg)
Evaluation / Usus.NET
23.11.2013 48
![Page 49: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/49.jpg)
Evaluation / Zusammenfassung
23.11.2013 49
Einsicht in die Codebasis
Erkennen von Problemfällen
Förderung von Clean Code
Interpretation der
Softwarequalität
![Page 50: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/50.jpg)
ZUSAMMENFASSUNG
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 50
![Page 51: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/51.jpg)
Zusammenfassung
• Usus.NET - Visual Studio-Erweiterung zur statischen Code-Analyse
• Berechnung aller Softwaremetriken von Usus für Java pro Build
• Fast alle Funktionen von Usus für Java
• Clean Code-Unterstützung
• Berechnung des andrena-Softwarequalitätsindex
• Evaluierung der Refactoring-Übung des ASE-Kurs
23.11.2013 51
![Page 52: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/52.jpg)
AUSBLICK
Usus.NET
Visual Studio-Erweiterung zur statischen Code-Analyse
23.11.2013 52
![Page 53: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/53.jpg)
Ausblick
• Visualisierung des Klassen- und Namespace-Graph
• Kleinster Zyklus in einem Namespace-Zyklus finden
• Testabdeckung automatisiert bestimmen (SQI, CRAP)
• Mehr Verteilungen (Pareto (The Braithwaite Correlation), Poisson)
• Refactoring-Vorschläge
• Automatisierte Refactorings
• Usus.NET als Grundlage weitere Trends zu implementieren/auszuprobieren
23.11.2013 53
![Page 54: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/54.jpg)
Realistischer Ausblick
• Visual Studio 2013 Portierung
• Analysis-Engine für Evaluierung auf Roslyn umbauen
• Klassen- und Methoden-Metriken besser visualisieren
• Ein- und Ausschalten der Analyse, ohne VS neuzustarten
23.11.2013 54
![Page 55: Usus - njks.de · Zentrale Begriffe •Metrik ist eine Eigenschaft oder der Wert dieser Eigenschaft und wird für Methoden, Typen oder Namespaces bestimmt. Metrik](https://reader035.vdokument.com/reader035/viewer/2022062505/5d58d55388c9939c608bce61/html5/thumbnails/55.jpg)
</präsentation>
23.11.2013 55