Kapitel 8 - Software-Metriken
|
Inhalt
|
- indirektes und direktes Messen
- Messen von Softwarequalität
- Metriken und Testen
- Metriken für den Entwurf
|
Software-Metriken
- Messen von verschiedenen Aspekten, um diese verständlicher darzustellen
- Metriken für Produktivität
- Versucht Voraussagen zu erleichten
- Wie war die Produktivität bei vorangegangenen Projekten?
- Wie kann vergangene Produktivität auf aktuelle Projekte extrapoliert werden?
- Helfen den technischen Prozess der für Produktion verwendetet wird und das Produkt selbst, zu verstehen
- Messungen finden statt um das Produkt zu verbessern
- Notwendig für Planung, Kosten -> Abschätzungen möglich
Gründe fürs Messen
- Qualität eines Produktes bestimmen
- Produktivität der Angestellten überprüfen
- Den Nutzen neuer SE-Tools und Vorgehensweisen untersuchen
- Baseline für Abschätzungen schaffen
Direktes und indirektes Messen
Direktes Messen
- Lines Of Code (LOC or KLOC)
- Ausführungsgeschwindigkeit
- Speicherverbrauch
- Gemeldete Defekte / Zeitperiode
Indirektes Messen
- Funktionalität
- Qualität
- Komplexität
- Wartung
Kategorien von Software-Metriken
- Produktivitäts-Metriken (Fokus auf SE Prozess)
- Qualitäts-Metriken (Wie nah ist Produkt an Kundenanforderungen)
- Technische Metriken (Fokus auf Produkt selbst, z.B. Modularität)
- Größen-Orientierte Metriken( Direkte Messwerte)
- Funktionsorientierte Metriken (Indirektes Metriken)
- Meschenorientierte Metriken (Informationen über die Arbeitnehmer die es produzieren)
Größe-orientierte Metriken
- Direkte Messungen welche mit Entwicklung korrespondieren
- Produktivität = KLOC / person-month
- Qualität = Fehler / KLOC
- Kosten = $ / KLOCK
- Dokumentation = Seitenanzahl / KCLOC
- Vorteil: einfach zu messen
Probleme:
- Nicht als bester Weg zum Messen aktzeptiert
- Sprachabhängig
- Planer muss LOC abschätzen, lange vor Analyse abgeschlossen ist
Funktionsorientierte Metriken
- Indirekte Messungen der Software und des Prozesses mit Fokus auf Programmfunktionalität
- Empirische Beziehungen basieren auf zählbaren Messungen
Beispiel: (pro Messung ein Count und 3 Wichtungen, wie simple, average und complex)
- Number Of Inputs
- Number Of Outputs
- Number Of Files
- Number Of External Interfaces
- Ergebnis: Total Count
Function-Points-Methode
- FP = Gesamtanzahl * [ 0.65 + 0.01 Sum(1..14)(Fi)]
- Fi sind Faktoren zwischen 0 und 5, welche die Semantik und Komplexität des Problems beschreiben
- 0.65 und 0.01 sind empirische Konstanten
- 1 bis 14 sind 14 verschiedene Aspekte wie z.B
- F1 : Benötigt das System Backup und Revovery
- F2 : Ist die Performance kritisch?
- F3 : Soll der Code wiederverwendbar sein?
- Produktivität = FP / Person-Month (Analog zu Size-Orienten direktem Messen)
Feature-Points-Methode
- Erweiterung der Function-Point-Methode in zusätzlicher algorithmischer Betrachtung
- Count-Total beinhaltet außerdem eine Abschätzung der Algorithmenkomplexität
- Sprachunabhängig und basiert auf Daten früh aus der Evolution
Nachteil:
- Subjektive Abschätzungen
- keine dirkte physikalische Bedeutung
- Daten schwer sammelbar sind
Metriken und Sprachen
Abschätzungen wieviel LOF für einen Funktionspunkt durchschnittlich benötigt werden
BSP:
- Assembler (300)
- FORTRAN (100)
- Pascal (90)
- Code Generatoren (15)
Argumente für Software-Metriken
Ohne würde es keinen Anhaltspunkt geben, auf denen Verbesserungen entstehen können.
Es sind Antworten auf folgende Fragen möglich:
- Welche Nutzeranforderungen ändern sich am häufigsten?
- Welche Module im System sind am Fehleranfälligsten?
- Wieviel Testzeit muss für jedes Modul eingeplant werden?
- Wieviele Fehler kann ich beim Testen durchschnittlich erwarten?
- Schwierigste Part ist das Datensammeln
Wie kann die Qualität von Software definiert werden?
- Konformität zu vorher spezifizierter Funktionalität und Performanceanforderungen
- Qualität wird also über die Anforderungen gemessen
- Standards geben heute vor, welche Aspekte immer erfüllt sein müssen
- Implizite Qualitätsanforderungen auch wichtig (wie z.B. gute Wartbarkeit)
Faktoren der Software-Qualität
- KLOC (direktes Messen)
- Nutzbarkeit, Wartbarkeit... (Indirekte Messwerte)
Messen der Qualität
- Jede Softwarequalitätsmessung kann nur unvollständig sein
- Die Wortanzahl einer verbalen Beschreibung der Funktionaliät kann als Indikator für Komplexität benutzt werden(Umso mehr Wörter, desto schwerer zu Komplexer)
- Wie viele Sprünge im Code? -> Wie ist der Testaufwand?
- Modulaufrufe anderer Module -> Wartbarkeit
- Zugriff auf globale Daten oder lokale Variablen geben Auskunft über Verständlichkeit des Codes
- Anzahl an nicht standartisierten Features -> Portabilität
Testplan
- Für Qualitätskontrolle wird Testplan benötigt
- Kontrakt zwischen Kunden und Entwickler und Entwickler und Qualitätssicherungsteam
Audit
- Qualitätssicherungsleute prüfen das Tests sinnvoll durchgeführt
"Systematische, unabhängige Untersuchung, um festzustellen, ob die qualtitätsbezogenen
Tätigkeiten und die damit zusammenhängenden Ergebnisse den geplanten Anordnungen entsprechen und
ob diese Anordnungen wirkungsvoll verwirklicht und geeignet sind, die Ziele zu
erreichen." [ISO 8402]
Software-Reviews
- Reviews werden an verschiedenen Punkten in Entwicklungsprozess gemacht
- Sollen Fehler aufdecken, um diese so früh wie möglich eliminieren zu können
- 50-60 % aller fehler entstehen schon im Entwurf (Reviews reparieren bis zu 75 % dieser Fehler)
Kosten von Fehlern in der Software
- Steigen exponentiell mit Fortschreiten der Entwicklung
- Kosten während Entwuf = 1, während Tests 15 und nach Release 60-100
Fehlervermehrung im Lauf der Softwareentwicklung
- Fehler aus jeder Phase werden an die nächste weitergegeben
- In dieser entstehen nun wieder neue Fehler
- Ohne Reviews kaum Fehler in Spezifikation und Entwurf entdeckt
- Mit Reviews werden ¾ der Fehler erkannt und behoben, da schon im Entwurf "getestet" wird
Qualitätszertifikat
- ISO 9001 ist nicht industriebezogen
- ISO 9003 von 9001 für Software abgeleitet
- 20 Hauptmerkmale werden behandelt, wie Document control, Design control, Process control, Training, Contract review, Quality system
- Zertifikat welches Kunden versichert, daß Firma nach Standarts arbeitet
Software-Metriken und Software-Qualität
- Immer unvollständig
- Teilweise individuelle Einschätzung
- Zum Teil nur indizierte, abgeleitete Angaben über Qualität
BSP:
- Anzahl von Branches -> Testbarkeit
- Zugriff auf globale Variablen -> geringe Wartbarkeit des Systems
- Anzalh lokaler Variablen -> aufwendiges Debuggen
- Nicht-standart-Features -> Portabilität
McCabe's zyklomatische Komplexität
- Hypothese: Komplexität hängt von Komplexität des Kontrollflußgraphen ab (Program Graph)
- Experimente zeigen Beziehungen zwischen McCabe's Metrik und Anzahl an Fehlern im Source Code (und der Zeit diese zu korrigieren)
- V(G) ist Indikator für maximale Modulgröße und sollte bestimmten Wert nicht überschreiten, sonst schwer zu testen
- Problem: Metrik sehr spät im Software Projekt gemessen
- Deshalb müssen Metriken gefunden werden, die schon im Entwurf messen können
Metriken für den Entwurf
- Grundidee ist, daß externe Komplexität eines Moduls in Verbindung mit Anzahl an Flüssen (in/export) zwischen Modul und Umwelt steht
- Interne Kompexität = LOC
Lokale Flüsse
- Direkt => Modul A gibt parameter zu B
- Indirekt => Modul A gibt Wert zu B zurück
Globale Flüsse
- Modul A schreibt DS und Modul B liest vom DS
- Fan-In / Fan-Out (alles was reingeht und rauskommt egal ob lokal oder global)
- Complexity = length * (fi * fo)2
Anwendung von Metriken
- Filter, welcher die komplexesten Module identifiziert
- Zum Untersuchen von Entwicklermethoden
- Untersuchen der steigenden Komplexität während der Wartung
- Die Teile / Module finden die die meisten Fehler / Arbeit machen -> Redesign + Reimplementation
|
|
|
|
|
| Kapitel 1 | Einleitung |
|
Einführung, Geschichte...
|
| Kapitel 2 | Eigenschaften |
|
Filtern und Trennen, Modularisierung...
|
| Kapitel 3 | Strukturierte Analyse |
|
Strukturierte und OO-Analyse, Petri-Netze
|
| Kapitel 4 | Spezifikation |
|
Risikoanalyse, Modellierungshilfen, Spezifikationen
|
| Kapitel 5 | Entwurfsprozess |
|
Entwurf, DFD, Tests, UI...
|
| Kapitel 6 | Prozessmodelle |
|
Softwarekrise, Lebenszyklusmodelle...
|
| Kapitel 7 | CASE und PM |
|
CASE, Projektmanagement...
|
| Kapitel 8 | Software-Metriken |
|
Softwarequalität, Entwurfsmetriken...
|
| Kapitel 9 | Programmierungskonzepte |
|
Legacy Systeme, Reengineering...
|
|
|
|
|
|
|
Quellen:
|
Petr Kroha
Softwaretechnologie
|
Prof. Kroha
Vorlesungsskript
|
L. Rosenhainer
Vorlesungsskript
|
Word Wide Web
Verschiedenste Seiten
|
|
|
|
|
|
|