Sie sind auf Seite 1von 14

eXamen.

press
eXamen.press ist eine Reihe, die Theorie und
Praxis aus allen Bereichen der Informatik für
die Hochschulausbildung vermittelt.
Dirk W. Hoffmann

Software-Qualität

123
Prof. Dr. Dirk W. Hoffmann
Hochschule Karlsruhe
Fakultät für Informatik
Moltkestrasse 30
76133 Karlsruhe
dirk.hoffmann@hs-karlsruhe.de

ISBN 978-3-540-76322-2 e-ISBN 978-3-540-76323-9

DOI 10.1007/978-3-540-76323-9

ISSN 1614-5216
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;
detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

© 2008 Springer-Verlag Berlin Heidelberg

Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Über-
setzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der Funksendung,
der Mikroverfilmung oder der Vervielfältigung auf anderen Wegen und der Speicherung in Datenver-
arbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung
dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen
Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in
der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig. Zuwiderhandlungen
unterliegen den Strafbestimmungen des Urheberrechtsgesetzes.

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk be-
rechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der
Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann
benutzt werden dürften.

Einbandgestaltung: KünkelLopka Werbeagentur, Heidelberg

Gedruckt auf säurefreiem Papier

987654321

springer.com
Vorwort

Computerabstürze, Rückrufaktionen, Sicherheitslecks: Das Phänomen Software-


Fehler hat sich zum festen Bestandteil unseres täglichen Lebens entwickelt. Mit
dem unaufhaltsamen Vordringen der Computertechnik in immer mehr sicherheits-
kritische Bereiche ist die Software-Qualitätssicherung zu einer tragenden Säule
der gesamten Informationstechnik herangereift. Doch warum ist die Qualität vie-
ler Software-Systeme heute eigentlich so schlecht? Und viel wichtiger noch: Stehen
wir der Misere hilflos gegenüber?
Auf den folgenden Seiten werde ich versuchen, eine Antwort auf die oben
gestellten Fragen zu geben. Neben einer Ursachenanalyse historischer Software-
Fehler werden die verschiedenen Methoden und Techniken diskutiert, die uns heu-
te zur Erreichung der kontinuierlich wachsenden Qualitätsanforderungen zur Ver-
fügung stehen. Ein besonderes Augenmerk habe ich dabei stets auf große, lang-
lebige Software-Systeme gelegt, die in einem professionellen Umfeld entwickelt
werden. Die hierfür erforderlichen technischen und organisatorischen Maßnahmen
werden in diesem Buch genauso behandelt wie die allgegenwärtige Problematik der
Software-Alterung.
Zwei Leitmotive durchdringen die nachfolgenden Kapitel wie ein roter Faden.
Zum einen habe ich mich bemüht, einen durchweg praxisnahen Zugang zu den oft
theoretisch geprägten Themen zu schaffen. So werden die verschiedenen Metho-
den und Verfahren stets anhand konkreter Problemstellungen eingeführt und dar-
aufhin untersucht, inwieweit sie für den produktiven Einsatz in der professionellen
Software-Entwicklung geeignet sind. Zum anderen war es mir ein großes Anliegen,
ein tiefergehendes Problembewusstsein für die Materie Software zu schaffen. Hier-
zu werden anhand zahlreicher Beispiele die klassischen Ursachen und Fallstricke
aufgezeigt, die in der Praxis für viele Software-Fehler verantwortlich zeichnen.
Auch hier gilt: Nur wer seine Feinde kennt, wird im Stande sein, sie zu besiegen.
In diesem Sinne wünsche ich Ihnen viel Vergnügen bei der Lektüre dieses Bu-
ches. Leider ist das Phänomen des Fehlers allgegenwärtig und macht auch vor Ma-
nuskripten keinen Halt. Für Hinweise oder Verbesserungsmöglichkeiten bin ich je-
dem aufmerksamen Leser ausdrücklich dankbar.

v
vi Vorwort

Bevor wir endgültig in die Tiefen der verschiedenen Methoden und Verfahren
der Software-Qualitätssicherung eintauchen, möchte ich an dieser Stelle all denje-
nigen meinen Dank aussprechen, die mich bei der Durchführung dieses Projekts
unterstützt und damit maßgeblich zum Gelingen dieses Buches beigetragen haben.

Karlsruhe, im November 2007 Prof. Dr. Dirk W. Hoffmann


Inhaltsverzeichnis

1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Aufbruch in das ubiquitäre Computerzeitalter . . . . . . . . . . . . . . . . . . . 1
1.2 Was ist Software-Qualität? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Warum ist Software eigentlich so schlecht? . . . . . . . . . . . . . . . . . . . . . 12
1.4 Gibt es Licht am Ende des Tunnels? . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.1 Produktqualität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.2 Prozessqualität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2 Software-Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.1 Lexikalische und syntaktische Fehlerquellen . . . . . . . . . . . . . . . . . . . . 27
2.2 Semantische Fehlerquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3 Parallelität als Fehlerquelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4 Numerische Fehlerquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5 Portabilitätsfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.6 Optimierungsfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.7 Von tickenden Zeitbomben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.8 Spezifikationsfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.9 Nicht immer ist die Software schuld . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.10 Fehlerbewertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

3 Konstruktive Qualitätssicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1 Software-Richtlinien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1.1 Notationskonventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.1.2 Sprachkonventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.2 Typisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.2.1 Typsysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.2.2 Grenzen der Typisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.3 Vertragsbasierte Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.3.1 Vor- und Nachbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.3.2 Invarianten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.3.3 Zusicherungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

vii
viii Inhaltsverzeichnis

3.4 Fehlertolerante Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98


3.4.1 Software-Redundanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.4.2 Selbstüberwachende Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.4.3 Ausnahmebehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.5 Portabilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.5.1 Portabilität auf Implementierungsebene . . . . . . . . . . . . . . . . . . 110
3.5.2 Portabilität auf Sprachebene . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
3.5.3 Portabilität auf Systemebene . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.6 Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
3.6.1 Spezifikationsdokumente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
3.6.2 Implementierungsdokumente . . . . . . . . . . . . . . . . . . . . . . . . . . 149

4 Software-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.2 Testklassifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
4.2.1 Prüfebenen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
4.2.2 Prüfkriterien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
4.2.3 Prüftechniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
4.3 Black-Box-Testtechniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
4.3.1 Äquivalenzklassentest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
4.3.2 Grenzwertbetrachtung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
4.3.3 Zustandsbasierter Software-Test . . . . . . . . . . . . . . . . . . . . . . . . 183
4.3.4 Use-Case-Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
4.3.5 Entscheidungstabellenbasierter Test . . . . . . . . . . . . . . . . . . . . . 190
4.3.6 Paarweises Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
4.3.7 Diversifizierende Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
4.4 White-Box-Testtechniken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
4.4.1 Kontrollflussmodellierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
4.4.2 Anweisungsüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
4.4.3 Zweigüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
4.4.4 Pfadüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
4.4.5 Bedingungsüberdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
4.4.6 McCabe-Überdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.4.7 Defs-Uses-Überdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
4.4.8 Required-k-Tupel-Überdeckung . . . . . . . . . . . . . . . . . . . . . . . . 227
4.5 Testmetriken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
4.5.1 Überdeckungsmetriken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
4.5.2 Mutationstest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
4.6 Grenzen des Software-Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

5 Statische Code-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247


5.1 Software-Metriken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
5.1.1 LOC und NCSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.1.2 Halstead-Metriken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
5.1.3 McCabe-Metrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Inhaltsverzeichnis ix

5.1.4 Objektorientierte Metriken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262


5.1.5 Visualisierung von Messwerten . . . . . . . . . . . . . . . . . . . . . . . . 267
5.2 Konformitätsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.2.1 Syntax-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
5.2.2 Semantik-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
5.3 Exploit-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
5.3.1 Buffer Overflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
5.3.2 Gegenmaßnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
5.4 Anomalienanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
5.4.1 Kontrollflussanomalien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
5.4.2 Datenflussanomalien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
5.5 Manuelle Software-Prüfung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
5.5.1 Walkthroughs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
5.5.2 Reviews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
5.5.3 Inspektionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

6 Software-Verifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
6.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
6.2 Deduktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
6.2.1 Vor- und Nachbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
6.2.2 Das Hoare-Kalkül . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
6.3 Modellprüfung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
6.3.1 Temporallogik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
6.3.2 Verifikation temporaler Eigenschaften . . . . . . . . . . . . . . . . . . . 356
6.4 Abstrakte Interpretation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
6.4.1 Fixpunktiteration nach Floyd, Park und Clarke . . . . . . . . . . . . 362
6.4.2 Datenabstraktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

7 Software-Lebenszyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
7.1 Wenn Software altert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
7.2 Gründe der Software-Alterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
7.2.1 Bewegliche Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
7.2.2 Auch Software setzt an . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
7.2.3 Kaschieren statt Reparieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
7.2.4 Rückwärtskompatibilität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
7.2.5 Wissen ist flüchtig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
7.3 Ist die Software-Alterung unumgänglich? . . . . . . . . . . . . . . . . . . . . . . 395
7.3.1 Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
7.3.2 Redesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

8 Software-Infrastruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
8.1 Versionsverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
8.1.1 Anforderungen und Konzeption . . . . . . . . . . . . . . . . . . . . . . . . 419
8.1.2 Revisionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
8.1.3 Entwicklung in großen Teams . . . . . . . . . . . . . . . . . . . . . . . . . . 428
x Inhaltsverzeichnis

8.1.4 Algorithmische Grundlagen der Versionskontrolle . . . . . . . . . 443


8.2 Build-Automatisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
8.2.1 Bedingte Compilierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
8.2.2 Verteilte Compilierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
8.3 Testautomatisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
8.3.1 Regressionstests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
8.3.2 Oberflächentests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
8.4 Defektmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
8.4.1 Fehlerdatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
8.4.2 Crash Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

9 Managementprozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
9.1 Vorgehensmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
9.1.1 Wasserfallmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
9.1.2 V-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
9.1.3 Rational Unified Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
9.1.4 Extreme Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
9.2 Reifegradmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
9.2.1 Historische Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
9.2.2 CMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
9.2.3 CMMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
9.2.4 ISO 15504 (SPICE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
9.2.5 Bewertung und Kritik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547

Sachverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Abkürzungsverzeichnis

ACM Association for Computing Machinery


ACQ Aquisition Process Group
ALU Arithmetic Logic Unit (Arithmetisch-logische Einheit)
ANSI American National Standards Institute
API Application Programming Interface
ARC Appraisal Requirements for CMM
ASCII American Standard Code for Information Interchange
BCD Binary Coded Decimal
BDD Binary Decision Diagram
BIOS Basic Input Output System
BP Base Pointer
BSD Berkeley Software Distribution
BSS Blank Storage Space
CAN Controller Area Network
CIFS Common Internet File System
CIL Common Interface Language
CISC Complex Instruction Set Computing
CLI Command Line Interface oder Common Language Infrastructure
CM Configuration Management
CMM Capability Maturity Model
CMMI Capability Maturity Model Integration
CPU Central Processing Unit
CRC Cyclic Redundancy Check
CTL Computation Tree Logic
CV Class Variables (Metrik)
CVS Concurrent Versions System
DIN Deutsches Institut für Normung
DOI Depth Of Inheritance (Metrik)
DOS Disc Operating System oder Denial of Service
DVD Digital Versatile Disc
ENG Engineering Process Group

xi
xii Abkürzungsverzeichnis

EOF End Of File


ESA European Space Agency
FIFO First In First Out
FP Frame Pointer
FPU Floating Point Unit
GB Gigabyte (109 )
GByte Gigabyte (109 )
GiB Gigabyte (230 )
GHz Gigahertz
GCC Gnu Compiler Collection
ggT größter gemeinsamer Teiler
GNU Gnu is Not Unix
GPL GNU General Public License
GTO Geotransfer Orbit
GUI Graphical User Interface
HOL Higher-Order Logic
HW Hardware
Hz Hertz
IDE Integrated Development Environment
IEC International Electrotechnical Commission
IEEE Institute of Electrical and Electronics Engineers
I/O Input/Output
IP Intellectual Property oder Internet Protocol
IPD Integrated Product Development
IPPD Integrated Product and Process Development
ISO International Organization for Standardization
ISR Interrupt Service Routine
IT Information Technology
IVT Intel Virtualization Technology
JDK Java Development Kit
JIT Just-In-Time (Compiler)
JNI Java Native Interface
KPA Key Process Area
KB Kilobyte (103 )
KByte Kilobyte (103 )
KiB Kilobyte (210 )
KHz Kilohertz
LALR LookAhead Left to right Rightmost derivation (parser)
LCOM Lack of COhesion in Methods (Metrik)
LGT Längste gemeinsame Teilfolge
LIFO Last In First Out
LOC Lines Of Code
LSF Load Sharing Facility
LTL Linear Time Logic
MB Megabyte (106 )
Abkürzungsverzeichnis xiii

MByte Megabyte (106 )


MiB Megabyte (220 )
MHz Megahertz
MFLOPS Million Floating Point Operations per Second
MIPS Million Instructions per Second
MISRA Motor Industry Software Reliability Association
MMX Multimedia Extension
MOST Media Oriented Systems Transport
MSDN Microsoft Developer Network
MTBF Mean Time Between Failures
MULTICS MULTiplexed Information and Computing Service
MVFS MultiVersion File System
NCSS Non-Commented Source Statements
NFS Network File System
NOA Number of Attributes (Metrik)
NOD Number of Descendants (Metrik)
NORM Number of Redefined Methods (Metrik)
NOP NO Operation
OPE Operation Process Group
OS Operating System
OV Object Variables (Metrik)
PAC Process Area Category
PC Personal Computer oder Program Counter
PDA Personal Digital Assistant
PDF Portable Document Format
PIM Process Improvement Process Group
POSIX Portable Operating System Interface
QA Quality Assurance
QMMG Quality Management Maturity Grid
RAID Redundant Array of Independent Disks
RAM Random Access Memory
RCS Revision Control System
REC Receive Error Counter
ROM Read-Only Memory
REQM Requirements Management
RET Return (address)
REU Reuse Process Group
RIN Ressource and Infrastructure Process Group
RISC Reduced Instruction Set Computing
RM Risk Management
RTCA Radio Technical Commission for Aeronautics
RUP Rational Unified Process
SA Software Acquisition
SBP Save Base Pointer
SCAMPI Standard CMMI Assessment Method for Process Improvement
xiv Abkürzungsverzeichnis

SCCS Source Code Control System


SDK Software Development Kit
SE Software Engineering
SEI Software Engineering Institute
SEPG Software Engineering Process Group
SP Stack Pointer
SPARC Scalable Processor ARChitecture
SPICE Software Process Improvement and Capability Determination
SPL Supply Process Group
SRT-Division Sweeny-Robertson-Tocher-Division
SSH Secure Shell
SSL Secure Sockets Layer
SW Software
TB Terabyte (1012 )
TByte Terabyte (1012 )
TiB Terabyte (240 )
TCP Transmission Control Protocol
TEC Transmit Error Counter
TMR Triple-Modular Redundancy
TSL Test Script Language
UI User Interface
UML Unified Modeling Language
URL Uniform Resource Locator
UTC Universal Time Coordinated
VDM Vienna Development Method
VLIW Very Long Instruction Word
VLSI Very-Large-Scale Integration
WAC Weighted Attributes per Class (Metrik)
WebDAV Web-based Distributed Authoring and Versioning
WER Windows Error Reporting
WMC Weighted Methods per Class (Metrik)
XML Extensible Markup Language
XT eXTended