Richard Seidl Logo

Software in Zahlen - Die Vermessung von Applikationen

Software in Zahlen - Die Vermessung von Applikationen
September 2010
Carl Hanser Verlag

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 mit 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

Erhältlich im Buchhandel und bei Amazon

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