5. 02.03.2011 5
Was? - Softwarequalität
„Unter Softwarequalität versteht man die
Gesamtheit der Merkmale und Merkmalswerte
eines Softwareprodukts, die sich auf dessen
Eignung beziehen, festgelegte oder vorausgesetzte
Erfordernisse zu erfüllen“
(wikipedia)
6. 02.03.2011 6
Was? - Softwarequalität
• An jedes Softwaresystem gibt es Anforderungen
– Funktionale Anforderungen
„Der Benutzer muss xyz können“
– Nicht-funktionale Anforderungen
„Das System muss leicht erweiterbar sein“
„SQ beschreibt, wie gut eine Software die an sich
gestellten Anforderungen erfüllt“
7. 02.03.2011 7
Wie? - Softwarequalität
• Maßnahmen zur Qualitätssicherung
– Konstruktiv
z.B. Richtlinien, Werkzeuge, Standards,…
– Analytisch
z.B. Profiling, Unit-Tests, Code Coverage,…
9. 02.03.2011 9
VS 2010 und Softwarequalität
Visual Studio 2010 ermöglicht es uns mit analytischen
Tools und Addins die Softwarequalität in der
Implementierungsphase zu messen und zu steigern.
11. Unit-Tests
• Was sind Unit-Tests?
„Beim Unit-Testing werden unabhängige Module
(Klasse, Komponenten, etc.) in einem dedizierten
Testkontext auf die korrekte Einhaltung von
zuvor spezifizierten Anforderungen getestet.“
16. 02.03.2011 16
Unit-Tests
• Weiteres zu dem Thema
– Datengetriebene Tests
– Testinput generieren (Pex)
– Check-In Policy im Team Foundation Server
– Coded UI-Tests
– Test Impact Analysis
– Unit-Tests für Datenbanken
– Und…
18. Code Coverage
• Metrik wie viel Code von Tests ausgeführt wird
• Kann aussagekräftig sein (muss aber nicht)
Zu Beginn 0% Überdeckung
Test 1: Typ(1,2,2) => 4 Zeilen (57%)
Test 2: Typ(1,1,2) => 5 Zeilen (71%)
Test 3: Typ(1,2,3) => 6 Zeilen (85%)
Test 4: Typ(0,0,0) => 7 Zeilen (100%)
20. Hält sich der Entwickler an die Abmachungen?
Code Analysis
21. 02.03.2011 21
Code Analysis
• Coding Guidelines
– Beschreiben wie Code geschrieben werden soll
– Erleichtern Verständnis im Team
– Können Fehler verhindern
– Nicht einfach durchsetzbar
• Microsoft .NET Framework Design Guidelines for
Class Library Developers
http://msdn.microsoft.com/en-us/library/czefa0ke(v=vs.71).aspx
22. 02.03.2011 22
Code Analysis
• Coding Guidlines werden oft nicht von allen
Entwicklern eingehalten
• Microsoft verwendet intern seit langem FxCop
• Seit VS 2005 Team System integriert als
Managed Code Analysis
• Durch eigene Regeln erweiterbar
• Seit VS 2010 umbenannt in Code Analysis
25. 02.03.2011 25
Code Metrics
• Eigenschaften von Code durch Zahlen
ausgedrückt
• VS 2010 unterstützt „nur“ fünf Metriken
– Maintainability Index
– Cyclomatic Complexity
– Depth of Inheritance
– Class Coupling
– Lines of Code
26. 02.03.2011 26
Code Metrics
• Maintainability Index
Gibt an, wie gut Code in
Zukunft gewartet werden kann.
MAX(0,(171-5,2*ln(Halstead Volume) – 0.23*(Cyclomatic Complexity)-16,2*ln(Lines of Code)*100/171)
• Wert nicht linear, daher farbliche Visualisierung
– Grün: Hohe Wartbarkeit (Wert 20 – 100)
– Gelb: Mittlere Wartbarkeit (Wert 10-20)
– Rot: Niedrige Wartbarkeit (Wert 0-9)
27. 02.03.2011 27
Code Metrics
• Cyclomatic Complexity
misst strukturale Komplexität des Codes
– If
– For/While/Do-While
– Switch
– Try/Catch (Seit VS 2010)
Niedrige Werte sind besser
28. 02.03.2011 28
Code Metrics
• Depth of Inheritance
Gibt die Tiefe der Vererbungs-
struktur an
Niedrige Werte
sind besser
29. 02.03.2011 29
Code Metrics
• Class Coupling
Anzahl der Abhängigkeiten zu anderen Klassen
Niedrige Werte
sind besser
30. 02.03.2011 30
Code Metrics
• Lines of Code
Anzahl Zeilen Code in einer Methode auf Basis
des IL-Codes
Keine Kommentare, Klammern, usw.
Niedrige Werte
sind besser
35. 02.03.2011 35
Visual Studio 2010 – Die Versionen
Feature Ultimate Premium Professional Express
Code Metrics
Profiling
Unit Tests
Code Coverage
Code Analysis
Quelle: http://www.microsoft.com/germany/visualstudio/products/features.aspx
36. 02.03.2011 36
Weiter SQ-Tools in Visual Studio 2010
• Intelli Trace
• Load Tests
• Manual Testing
• Coded UI Testing
• Lab Management
• Visual Studio Test Professional 2010
• Team Foundation Server 2010