Software in Zahlen - Die Vermessung von Applikationen
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.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.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.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.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.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.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.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.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.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.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.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