Software in Zahlen 

 1. September 2010

Die Wartung oder Weiterentwicklung eines Softwaresystems können Sie nur gut planen, wenn Sie Ihr System genau kennen, in Zahlen erfassen und bewerten können. Das ist nur ein Beispiel für den Nutzen von Metriken. Eine gute Inventarisierung und Bewertung Ihrer Software – in Bezug auf Quantität, Qualität und Komplexität – ist eine wichtige Voraussetzung für so gut wie alle Arten von Softwareprojekten.
In diesem Praxisbuch finden Sie Methoden und Metriken, wie Sie Software messen und dabei die drei Dimensionen Quantität, Komplexität und Qualität berücksichtigen. Alle Messansätze, die präsentiert werden, sind in der Praxis erprobt und basieren auf jahrzehntelanger Erfahrung in der Messung von Softwareprodukten und Softwareprozessen (einschließlich Entwicklung, Wartung, Evolution und Migration).
Die vorgestellten Metriken und Ansätze helfen Ihnen dabei, Projekte planbarer zu machen, einen Überblick über Produkte und Altsysteme zu bekommen und den Projektverlauf besser zu steuern.

Autoren: Harry Sneed, Richard Seidl, Manfred Baumgartner

Verlag: Carl Hanser Verlag

ISBN: 978-3-446-42175-2

Edition: 1. Auflage

Inhaltsverzeichnis

1 Softwaremessung

1.1 Das Wesen von Software
1.2 Sinn und Zweck der Softwaremessung
1.2.1 Zum Verständnis (Comprehension) der Software
1.2.2 Zum Vergleich der Software
1.2.3 Zur Vorhersage
1.2.4 Zur Projektsteuerung
1.2.5 Zur zwischenmenschlichen Verständigung
1.3 Dimensionen der Substanz Software
1.3.1 Quantitätsmetrik von Software
1.3.2 Komplexitätsmetrik von Software
1.3.3 Qualitätsmetrik von Software
1.4 Sichten auf die Substanz Software
1.5 Objekte der Softwaremessung
1.6 Ziele einer Softwaremessung
1.7 Zur Gliederung dieses Buches

2 Softwarequantität

2.1 Quantitätsmaße
2.2 Codegrößen
2.2.1 Codedateien
2.2.2 Codezeilen
2.2.3 Anweisungen
2.2.4 Prozeduren bzw. Methoden
2.2.5 Module bzw. Klassen
2.2.6 Entscheidungen
2.2.7 Logikzweige
2.2.8 Aufrufe
2.2.9 Vereinbarte Datenelemente
2.2.10 Benutzte Datenelemente bzw. Operanden
2.2.11 Datenobjekte
2.2.12 Datenzugriffe
2.2.13 Benutzeroberflächen
2.2.14 Systemnachrichten
2.3 Entwurfsgrößen
2.3.1 Strukturierte Entwurfsgrößen
2.3.2 Datenmodellgrößen
2.3.3 Objektmodellgrößen
2.4 Anforderungsgrößen
2.4.1 Anforderungen
2.4.2 Abnahmekriterien
2.4.3 Anwendungsfälle
2.4.4 Verarbeitungsschritte
2.4.5 Oberflächen
2.4.6 Systemschnittstellen
2.4.7 Systemakteure
2.4.8 Relevante Objekte
2.4.9 Objektzustände
2.4.10 Bedingungen
2.4.11 Aktionen
2.4.12 Testfälle
2.5 Testgrößen
2.5.1 Testfälle
2.5.2 Testfallattribute
2.5.3 Testläufe
2.5.4 Testskriptebzw. Testprozeduren
2.5.5 Testskriptzeilen
2.5.6 Testskriptanweisungen
2.5.7 Fehlermeldungen
2.6 Abgeleitete Größenmaße
2.6.1 Function-Points
2.6.2 Data-Points
2.6.3 Object-Points
2.6.4 Use-Case-Points
2.6.5 Testfall-Points

3 Softwarekomplexität

3.1 Komplexität in der Softwaremetrik
3.1.1 Software Komplexität nach dem IEEE-Standard
3.1.2 Softwarekomplexität aus der Sicht von Zuse
3.1.3 Softwarekomplexität nach Fenton
3.1.4 Komplexität als Krankheit der Softwareentwicklung
3.1.5 Komplexitätsmessung nach Ebert und Dumke
3.1.6 Die Alpha-Komplexitätsmetrik
3.2 Steigende Softwarekomplexität
3.2.1 Codekomplexität – Warum Java komplexer als COBOL ist
3.2.2 Entwurfskomplexität – Warum verschiedene Entwurfsansätze im Endeffekt gleich komplex sind
3.2.3 Anforderungskomplexität – Warum die zu lösenden Aufgaben immer komplexer werden
3.3 Allgemeingültige Maße für die Softwarekomplexität
3.3.1 Sprachkomplexität
3.3.2 Strukturkomplexität
3.3.3 Algorithmische Komplexität

4 Die Messung der Softwarequalität

4.1 Qualitätseigenschaften nach Boehm
4.1.1 Verständlichkeit nach Boehm
4.1.2 Vollständigkeit nach Boehm
4.1.3 Portabilität nach Boehm
4.1.4 Änderbarkeit nach Boehm
4.1.5 Testbarkeit nach Boehm
4.1.6 Benutzbarkeit nach Boehm
4.1.7 Zuverlässigkeit nach Boehm
4.1.8 Effizienz nach Boehm
4.2 Gilb und die Quantifizierung der Qualität
4.2.1 Funktionalitätsmessung nach Gilb
4.2.2 Performance-Messung nach Gilb
4.2.3 Zuverlässigkeitsmessung nach Gilb
4.2.4 Datensicherungsmessung nach Gilb
4.2.5 Effizienzmessung nach Gilb
4.2.6 Verfügbarkeitsmessung nach Gilb
4.2.7 Wartbarkeitsmessung nach Gilb
4.3 McCalls Qualitätsbaum
4.4 Eine deutsche Sicht auf Softwarequalität
4.4.1 Qualitätsbegriff
4.4.2 Qualitätsklassifizierung
4.4.3 Qualitätsmaße
4.4.4 Qualitätsgrößen
4.5 Automatisierte Softwarequalitätssicherung
4.5.1 Automatisierte Messung der Anforderungsqualität
4.5.2 Automatisierte Messung der Entwurfsqualität
4.5.3 Automatisierte Messung der Codequalität
4.5.4 Automatisierte Messung der Testqualität
4.6 Zielgerichtete Softwarequalitätssicherung
4.6.1 Qualitätszielbestimmung
4.6.2 Qualitätszielbefragung
4.6.3 Qualitätszielbemessung
4.7 IEEE- und ISO-Standards für Softwarequalität
4.7.1 Funktionalität nach ISO 9126
4.7.2 Zuverlässigkeit nach ISO 9126
4.7.3 Benutzbarkeit nach ISO 9126
4.7.4 Effizienz nach ISO 9126
4.7.5 Wartbarkeit nach ISO 9126
4.7.6 Portabilität nach ISO 9126
4.8 Folgen fehlender Qualitätsmessung

5 Anforderungsmessung

5.1 Tom Gilbs Anstoß der Anforderungsmessung
5.2 Weitere Ansätze zur Anforderungsmessung
5.2.1 Der Boehm-Ansatz
5.2.2 N-Fold Inspektion
5.2.3 Parnas & Weis Anforderungsprüfung
5.2.4 Abgleich der Anforderungen nach Fraser und Vaishnavi (Anforderungsprüfung)
5.2.5 Verfolgung der Anforderungen nach Hayes
5.2.6 Bewertung der Anforderungen nach Glinz
5.2.7 ISO-Standard 25030
5.2.8 Das V-Modell-XT als Referenzmodell für die Anforderungsmessung
5.3 Eine Metrik für Anforderungen von C. Ebert
5.3.1 Zahl aller Anforderungen in einem Projekt
5.3.2 Fertigstellungsgrad der Anforderungen
5.3.3 Änderungsrate der Anforderungen
5.3.4 Zahl der Änderungsursachen
5.3.5 Vollständigkeit des Anforderungsmodells
5.3.6 Anzahl der Anforderungsmängel
5.3.7 Anzahl der Mängelarten
5.3.8 Nutzwert der Anforderungen
5.4 Die Sophist-Anforderungsmetrik
5.4.1 Eindeutigkeit der Anforderungen
5.4.2 Ausschluss der Passivform bei den Anforderungen
5.4.3 Klassifizierbarkeit der Anforderungen
5.4.4 Identifizierbarkeit der Anforderungen
5.4.5 Lesbarkeit
5.4.6 Selektierbarkeit
5.5 Werkzeuge für die Anforderungsmessung
5.5.1 Anforderungsmessung in den früheren CASE-Werkzeugen
5.5.2 Anforderungsmessung im CASE-Tool SoftSpec
5.5.3 Anforderungsmessung in den gegenwärtigen Requirements Management Tools
5.5.4 Anforderungsmetrik aus dem Werkzeug TextAudit
5.5.5 Darstellung der Anforderungsmetrik
5.6 Gründe für die Anforderungsmessung

6 Entwurfsmessung

6.1 Erste Ansätze zu einer Entwurfsmetrik
6.1.1 Der MECCA-Ansatz von Tom Gilb
6.1.2 Der Structured-Design-Ansatz von Yourdon und Constantine
6.1.3 Der Datenflussansatz von Henry und Kafura
6.1.4 Der Systemgliederungsansatz von Belady und Evangelisti
6.2 Entwurfsmessung nach Card und Glass
6.2.1 Entwurfsqualitätsmaße
6.2.2 Entwurfskomplexitätsmaße
6.2.3 Erfahrung mit der ersten Entwurfsmetrik
6.3 Die SOFTCON Entwurfsmetrik
6.3.1 Formale Vollständigkeits- und Konsistenzprüfung
6.3.2 Technische Qualitätsmaße für den Systementwurf
6.4 Objektorientierte Entwurfsmetrik
6.4.1 Die OO-Metrik von Chidamer und Kemerer
6.4.2 MOOD-Entwurfsmetrik
6.5 Entwurfsmetrik in UMLAudit
6.5.1 Entwurfsquantitätsmetrik
6.5.2 Entwurfskomplexitätsmetrik
6.5.3 Entwurfsqualitätsmetrik
6.5.4 Entwurfsgrößenmetrik
6.6 Entwurfsmetrik für Webapplikationen

7 Codemetrik

7.1 Programmaufbau
7.2 Ansätze zur Messung von Codekomplexität
7.2.1 Halsteads Software Science
7.2.2 McCabe‘s Zyklomatische Komplexität
7.2.3 Chapins Q-Komplexität
7.2.4 Elshofs Referenzkomplexität
7.2.5 Prathers Verschachtelungskomplexität
7.2.6 Weitere Codekomplexitätsmaße
7.3 Ansätze zur Messung von Codequalität
7.3.1 Der Codequalitätsindex von Simon
7.3.2 Der Maintainability-Index von Oman
7.3.3 Zielorientierte Codequalitätsmessung
7.4 Codemetrik im SoftAudit-System
7.4.1 Codequantitätsmetrik
7.4.2 Codekomplexität
7.4.3 Codequalität
7.5 Werkzeuge für die Codemessung
7.5.1 Die ersten Codemessungswerkzeuge
7.5.2 Codemessungswerkzeuge der 90er Jahre
7.5.3 Heutige Codemessungswerkzeuge
7.6 Beispiel einer Codemessung

8 Testmetrik

8.1 Testmessung in der früheren Projektpraxis
8.1.1 Das ITS-Projekt bei Siemens
8.1.2 Das Wella-Migrationsprojekt
8.2 Testmetrik nach Hetzel
8.3 Testmetrik bei IBM Rochester
8.4 Maßzahlen für den Systemtest
8.4.1 Testzeit
8.4.2 Testkosten
8.4.3 Testfälle
8.4.4 Fehlermeldungen
8.4.5 Systemtestüberdeckung
8.4.6 Empfehlungen von Hutcheson
8.4.7 Test-Points
8.5 Testmetrik im GEOS-Projekt
8.5.1 Messung der Testfälle
8.5.2 Messung der Testüberdeckung
8.5.3 Messung der Fehlerfindung
8.5.4 Auswertung der Testmetrik
8.6 Testmetrik nach Sneed und Jungmayr
8.6.1 Testbarkeitsmetrik
8.6.2 Testplanungsmetrik
8.6.3 Testfortschrittsmetrik
8.6.4 Testqualitätsmetrik

9 Produktivitätsmessung von Software

9.1 Produktivitätsmessung – Ein umstrittenes Thema
9.2 Softwareproduktivität im Rückblick
9.2.1 Dokumentenmessung mit dem Fog-Index
9.2.2 Produktivitätsmessung bei der Standard Bank of South Africa
9.2.3 Die Entstehung der Function-Point-Methode
9.2.4 Das COCOMO-I-Modell von Boehm
9.2.5 Putnams Softwaregleichung
9.2.6 Die Data-Point-Methode
9.2.7 Die Object-Point-Methode
9.2.8 Die Use-Case-Point-Methode
9.3 Alternative Produktivitätsmaße
9.4 Produktivitätsberechnung anhand der Softwaregröße
9.5 Aufwandserfassung
9.6 Softwareproduktivitätsarten
9.6.1 Programmierproduktivität
9.6.2 Designproduktivität
9.6.3 Analyseproduktivität
9.6.4 Testproduktivität
9.6.5 Gesamtproduktivität
9.7 Produktivitätsstudien
9.7.1 Studien über Softwareproduktivität in den USA
9.7.2 Studien über Softwareproduktivität in Europa
9.7.3 Probleme beim Produktivitätsvergleich
9.8 Produktivitätsmessung nach Wertbeitrag

10 Die Messung der Wartungsproduktivität

10.1 Frühere Ansätze zur Messung der Wartbarkeit von Software
10.1.1 Stabilitätsmaße von Yau und Collofello
10.1.2 Maintenance-Umfrage bei der U.S. Air Force
10.1.3 Die Wartbarkeitsstudie von Vessey und Weber
10.1.4 Bewertung der Softwarewartbarkeit nach Berns
10.1.5 Die Wartungsuntersuchung von Gremillion
10.1.6 Wartungsmetrik bei Hewlett-Packard
10.1.7 Wartungsmessung nach Rombach
10.1.8 Messung der Wartbarkeit kommerzieller COBOL Systeme
10.1.9 Der Wartbarkeitsindex von Oman
10.2 Ansätze zur Messung der Wartbarkeit objektorientierter Software
10.2.1 Erste Untersuchung der Wartbarkeit objektorientierter Programme
10.2.2 Chidamer/Kemerers OO-Metrik für Wartbarkeit
10.2.3 MOOD-Metrik als Indikator der Wartbarkeit
10.2.4 Eine empirische Validation der OO-Metrik für die Schätzung des Wartungsaufwands
10.2.5 Der Einfluss einer zentralen Steuerung auf die Wartbarkeit eines OO-Systems
10.2.6 Kalkulation vom Wartungsaufwand aufgrund der Programmkomplexität
10.2.7 Vergleich der Wartbarkeit objektorientierter und prozeduraler Software
10.2.8 Zur Änderung der Wartbarkeit im Laufe der Softwareevolution
10.3 Wartungsproduktivitätsmessung
10.3.1 Erste Ansätze zur Messung von Wartungsproduktivität
10.3.2 Messung von Programmwartbarkeit im ESPRIT-Projekt MetKit
10.3.3 Wartungsproduktivitätsmessung in der US-Marine
10.3.4 Messung der Wartungsproduktivität bei Martin-Marietta
10.3.5 Vergleich der Wartungsproduktivität repräsentativer Schweizer Anwender

11 Softwaremessung in der Praxis

11.1 Dauerhafte Messverfahren
11.1.1 Beteiligung der Betroffenen
11.1.2 Aufbauen auf vorhandener Metrik
11.1.3 Transparenz des Verfahrens
11.2 Beispiele dauerhafter Messverfahren
11.2.1 Die Initiative von Hewlett-Packard zur Softwaremessung
11.2.2 Prozess- und Produktmessung in der Siemens AG
11.2.3 Die eingebaute Softwaremessung im GEOS-Projekt
11.3 Übergreifende Software-Cockpits und Dashboards
11.3.1 Aufbau und Funktionalität des Software-Cockpits
11.3.2 Dashboard
11.3.3 Scorecard
11.3.4 Interaktive Analysen und Berichte
11.4 Einmalige Messverfahren
11.4.1 Vereinbarung der Messziele
11.4.2 Auswahl der Metrik
11.4.3 Bereitstellung der Messwerkzeuge
11.4.4 Übernahme der Messobjekte
11.4.5 Durchführung der Messung
11.4.6 Auswertung der Messergebnisse
11.5 Beispiel einer einmaligen Messung