Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests - 24. April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 1 Workshop Mehr Qualität.

Ähnliche Präsentationen


Präsentation zum Thema: "Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests - 24. April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 1 Workshop Mehr Qualität."—  Präsentation transkript:

1 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 1 Workshop Mehr Qualität und schnellere Marktreife durch effiziente Softwaretests Technologiepark Offenburg 24. April 2008 Wie senkt man die Fehleranfälligkeit?

2 Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 2 Inhalt 1.Motivation 2. Software-Metriken 2.1 Code-Metriken 2.2 Anwendung von Code-Metriken 3. Code-Metriken im Detail 3.1 Lines of Code 3.2 Halstead 3.3 McCabe 3.4 Maintainability Index 4. Beispiel Linux Kernel

3 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 3 1. Motivation Klassische Produkte Qualitätssicherung Bewertung Kennzahlen Software va_list args; char module_name[MODULE_NAME_LEN]; unsigned int max_modprobes; int ret; char *argv[] = { modprobe_path, "-q", "--", module_name, NULL }; static char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin ", NULL }; static atomic_t kmod_concurrent = ATOMIC_INIT(0); #define MAX_KMOD_CONCURRENT 50 static int kmod_loop_msg; va_start(args, fmt); Qualitätssicherung Bewertung Software-Metriken Vergleich

4 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 4 1. Motivation Komplexe Softwaresysteme Höhere Fehleranfälligkeit Eingeschränkte Testbarkeit Geringere Wartbarkeit Kosten Produktqualität 1993Windows NT Windows NT Windows NT Windows 2000> Windows XP Windows Vista Beta 250 Beispiel (aus Millionen LOC Komplexität der Software t

5 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 5 2. Software-Metriken Klassifikation Software-Metriken Produkt-Metriken (Produktqualität) Metriken zu Anforderungen Design-Metriken Code-Metriken Test-Metriken (C0, C1, …) … Prozess-Metriken (Prozessqualität) Softwareentwicklungsprozesse Projektmetriken Reifegradmodelle (CMMI, …) … Inhalt dieses Vortrages: Code-Metriken Siehe auch: [FP07], [LZ06], [Lig02]

6 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Code-Metriken Übersicht wichtiger Code-Metriken Lines of Code LOC McCabe v(G) Halstead V, N, n, … Maintainability Index MI Diese Code-Metriken sind auch auf objektorientierte Sprachen anwendbar

7 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Code-Metriken Verwendung und empirische Studien Jede Code-Metrik bewertet jeweils einen Teilaspekt der Software Code-Metriken dienen als Basis, um Aussagen bezüglich Fehleranfälligkeit, Testbarkeit und Wartbarkeit zu machen. Code-Metriken liefern Hinweise quantitativ und reproduzierbar Studie aus [Wa89]: Korrelation von 0.8 zwischen McCabe Code-Metrik und Fehlerdichte (HP, Waltham Division) Weitere Studien zur McCabe Code-Metrik sind in [WC96] zu finden. Neuere Studien: [FO00] und [CS00] Eine Vergleichbarkeit der Studien ist nur eingeschränkt möglich

8 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Code-Metriken Generierung Sourcen werden nur geparst Keine Testumgebung notwendig Tests werden nicht ausgeführt Bsp. Linux-Kernel Funktionen (C) Dauer 4 Sekunden Parser *.c *.cpp *.h

9 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Anwendung von Code-Metriken Szenarien Code SW- Entwicklung SW- Entwicklung SW- Entwicklung SW- Entwicklung Ausführbares Programm Build Inhouse Outsourcing Offshoring Refactoring Wartung Neuimplementierung von Funktionen Eingangs- Kontrolle Code-Metriken müssen innerhalb vorgegebener Grenzen liegen Statische Testverfahren Kritische Funktionen können einer Inspektion (Review) unterzogen werden. Dynamische Testverfahren Intensiveres Testen kritischer Funktionen (Testprinzip: Test besonderer Werte) Dokumentation Audits usw.

10 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Code-Metriken im Detail 3.1 Lines of Code LOC 3.3 McCabe v(G)3.2 Halstead V, N, n, … 3.4 Maintainability Index MI

11 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Lines of Code Prinzip Die Anzahl der Programmzeilen (Lines of Code LOC) pro Funktion oder Modul liefert einen Hinweis auf deren Komplexität LOC Code-Metriken LOCphy:Gesamtanzahl der Zeilen (physical lines) LOCpro:Anzahl der Programmzeilen (program lines) LOCcom:Anzahl der Zeilen mit Kommentar (commented lines) LOCbl:Anzahl der Leerzeilen (blank lines) Empfehlungen aus [CL07]: LOCphy pro Funktion <40 LOCphy pro Datei <400 LOCcom/LOCphy sollte zwischen 0,3 und 0,75 liegen

12 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Halstead Prinzip Halstead-Metriken [Hal77] berücksichtigen verschiedene Eigenschaften der Software. Nach [Lig02] wurden diese Code-Metriken mit Erfolg empirisch validiert. N 1 : Gesamtanzahl der verwendeten Operatoren n 1 : Anzahl der unterschiedlichen Operatoren N 2 : Gesamtanzahl der verwendeten Operanden n 2 : Anzahl der unterschiedlichen Operanden void test (int a, int b) { if (a%b == 1) printf("case2"); else printf("case3"); } Operatoren %1 ()3,1 ;2 ==1 else1 if1 { }1 N 1 = 11 n 1 = 8 Operanden case21 case311 a2 b2 int2 printf 2 test1 void1 N 2 = 13 n 2 = 9

13 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Halstead Halstead Code-Metriken Empfehlungen aus [CL07]: V einer Funktion sollte im Bereich zwischen 20 und 1000 liegen V einer Datei sollte im Bereich zwischen 100 und 8000 liegen Größe des Vokabulars: Länge der Implementierung: Programmgröße: Schwierigkeitsgrad: Programmniveau Aufwand: Implementierungszeit: Anzahl ausgelieferter Fehler:

14 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg McCabe Prinzip Die Komplexität nach McCabe v(G) [McC76] beruht auf dem Kontrollflussgrafen G. Knoten (nodes) Kanten (edges) e: Anzahl der Kanten n: Anzahl der Knoten p: Anzahl der Komponenten Wird v(G) einer Funktion bestimmt, so ist p = 1 zu setzen. Wird v(G) eines Programms / Moduls bestimmt, so ist p gleich der Anzahl der Funktionen. Kontrollflussgraf G einer Funktion

15 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg McCabe Beispiele Vier Basis-Kontrollstrukturen ia = ib + 1; *pi = ia; if (a == 10) b = 5; else b = 10; while (a < 10) { a = a + 2; } do { a = a + 2; } while (a < 10); v(G) =

16 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg McCabe Beispiele Bestimmung von v(G): 1.Gleichung 2.Regionenmethode Graf ist kreuzungsfrei. v(G) entspricht der Anzahl eingeschlossener Regionen + 1 v(G) =

17 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg McCabe Beispiele if (a == 10 && c < 10) { b = 5; } if (a == 10) { if (c < 10) { b = 5; } Zeichnen Sie die beiden Kontrollflussgrafen und bestimmen Sie jeweils v(G)! Erkenntnis bezüglich zusammengesetzter Kontrollstrukturen:

18 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg McCabe Interpretation von v(G) Empfehlungen v(G) einer Funktion sollte begrenzt sein v(G) <= 15 [CL07] v(G) <= 10 [McC76] Ursache für hohes v(G) obwohl die betrachtete Funktion übersichtlich ist: Mehrere catch-Blöcke beim Exception-Handling (jedes catch erhöht v(G) um 1) switch–Kontrollstruktur mit vielen case-Blöcken Was tut man, wenn v(G) die vorgegebenen Grenzen übersteigt? Funktion ist in mehrere kleinerer Funktionen aufzuteilen! Diese sind danach wartbarer, testbarer und fehlerunanfälliger.

19 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Maintainability Index Prinzip Der Maintainability Index MI setzt sich aus anderen Code-Metriken zusammen. Anwendbar auf Funktionen, Module und Programme! Empfehlungen aus [CL07]: MI >= 85: Gute Wartbarkeit MI im Bereich zwischen 65 und 85: Mäßige Wartbarkeit

20 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux Grundlage der Untersuchungen Linux Kernel Unterverzeichnis /kernel Funktionen (C) Werkzeug CMT++ Dargestellte Code-Metriken als Verteilung LOCpro (Program Lines of Code) McCabe v(G) Halstead-Metrik V Maintainability-Index MI Abhängigkeiten LOCpro = f (v(G)) LOCpro = f (V) V = f(v(G))

21 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux Empfehlung [CL07]

22 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux Empfehlung [CL07]

23 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux Empfehlung [CL07]

24 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux Empfehlung [CL07]

25 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux

26 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux

27 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg Beispiel Linux

28 Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 28 Zusammenfassung Quantitative und reproduzierbare Metriken (Kennzahlen) sind notwendig Anwendungsszenarien und empirische Studien Code-Metriken im Detail - Lines of Code - Halstead - McCabe - Maintainability Index Code-Metriken angewendet auf Linux Kernel Die meisten Funktionen erfüllen die Vorgaben - Korrelation zwischen LOCpro und v(G) erkennbar


Herunterladen ppt "Wie senkt man die Fehleranfälligkeit? Workshop Softwaretests - 24. April 2008 Prof. Dr.-Ing. Daniel Fischer Hochschule Offenburg 1 Workshop Mehr Qualität."

Ähnliche Präsentationen


Google-Anzeigen