next up previous contents
Next: 6.4 Probleme und Hindernisse Up: 6. Der persönliche Softwareprozeß Previous: 6.2 Ansätze

Unterabschnitte

6.3 Ergebnisse

Der PSP hat zwei Schwerpunkte, nämlich Planungsgenauigkeit und Qualitätsverbesserung. Allgemein liegt außerdem noch das Prinzip der Disziplin zugrunde. Interessanterweise lassen sich die meisten Annahmen, die den PSP-Methoden zugrundeliegen, und auch die meisten Behauptungen, die über ihre Wirkung aufgestellt werden, schon im Rahmen der PSP-Kurse mit realen Daten belegen. Im folgenden werden wir das mit Beispielen aus den ersten zwei PSP-Kursen tun, die Humphrey quasi als Prototypen während der letzten Entwicklungsphase des PSP abgehalten hat.

6.3.1 Planung: Grundlagen und Effekte

Grundlage der Planung im PSP ist die Tatsache, daß die Größe eines Programms, das von einer einzelnen Person entwickelt wird, sich erstens recht genau schätzen läßt und zweitens gut mit der Entwicklungszeit korreliert. Letzteres ist in Abbildung 6.2 am Beispiel von C++ Code dargestellt.

\includegraphics[scale=1]{Bild/psploctimes.ps}

Die Korrelation zwischen LOC und Entwicklungszeit ist nicht bei allen Programmierern und in allen Fällen so gut wie hier gezeigt; hohe Abweichungen werden aber meist von ,,fiesen`` Fehlern hervorgerufen, deren Beseitigung sehr viel Zeit braucht und die in einem disziplinierten Prozeß sehr viel seltener sind als bei den meisten normalen Programmierern.

Interessanterweise läßt sich der gleiche Ansatz zur Planung auch auf ganz anderen Gebieten einsetzen. Zum Beispiel kann man auch die Zeit zum Entwurf einer größeren Anzahl von Bildschirmmasken gut aus dieser Anzahl vorhersagen oder die Zeit zum Schreiben eines Buches aus der Anzahl zu schreibender Seiten, wenn für einen Teil des Buches schon historische Daten vorliegen. Im letzteren Fall ist allerdings die Korrelation nicht so hoch, wie bei LOC, siehe Abbildung 6.3.

\includegraphics[scale=1]{Bild/psptexttimes.ps}

\includegraphics[scale=1]{Bild/pspsizeest.ps}

Eine interessante Beobachtung ist die, daß die Schätzabweichungen der einzelnen Kursteilnehmer nach oben und nach unten sich weitgehend aufheben, wie in Abbildung 6.4 zu sehen ist, so daß man die Teilnehmer zusammengenommen als ein gutes Schätzorakel betrachten kann. Dies zeigt, daß die Schätzfehler der einzelnen keine systematischen Fehler sind, sondern nur (erhebliche) Schwankungen. Diese zu verringern, läßt sich lernen -- und das ist ein Ziel des PSP.

6.3.2 Qualität: Grundlagen

Den Qualitätsmaßnahmen im PSP liegen einige Annahmen zugrunde, deren Zutreffen nicht selbstverständlich ist. Eine Annahme lautet zum Beispiel, daß jede Stufe der Fehlerentfernung nur einen gewissen Prozentsatz der Fehler findet, der sich auch mit stark erhöhter Mühe nur mäßig steigern läßt. Deshalb ist es erstens wichtig, möglichst wenig Fehler einzufügen (denn einen gewissen Prozentsatz der eingefügten Fehler werde ich immer am Schluß noch mit ausliefern). Zweitens ist es wichtig, möglichst viele Fehlerentfernungsstufen zu haben, und drittens sollten vor allem die frühen Stufen hinsichtlich der Ausbeute bei der Fehlerentdeckung optimiert werden, weil dort noch mehr Fehler vorhanden sind, die von einer prozentual gleichen Verbesserung erreicht werden. Das zentrale Maß des PSP in dieser Hinsicht ist die Ausbeute (yield), also der Prozentsatz von in Entwurf und Kodieren eingefügten Fehlern, die vor dem Übersetzen bereits wieder gefunden werden.

\includegraphics[scale=1]{Bild/pspyieldprod20.ps}

\includegraphics[scale=1]{Bild/pspyieldlochr12.ps}

Abbildung 6.5 belegt, daß eine höhere Ausbeute auch zu höherer Gesamtproduktivität führen kann und Abbildung 6.6 belegt, daß sich die Ausbeute steigern läßt, indem mehr Zeit auf Durchsichten verwendet wird. Die Effekte sind nicht immer so deutlich, wie hier an zwei Kursteilnehmern gezeigt, sind aber stets vorhanden, wenn eine disziplinierte Arbeitsweise vorliegt und genug Daten vorhanden sind.

Eine zweite Annahme des PSP besagt, daß jeder Fehler schädlich ist, selbst ein trivialer. Dies läßt sich mit einer Graphik belegen, die eine positive Korrelation zeigt zwischen der Zahl der Fehler, die vom Übersetzer gefunden werden, und der Zahl der Fehler, die in der Testphase gefunden werden; siehe das Beispiel zweier Studenten in den Abbildungen 6.7 und 6.8.

\includegraphics[scale=1]{Bild/pspcomptestdef1.ps}

\includegraphics[scale=1]{Bild/pspcomptestdef20.ps}

Eine dritte Annahme besagt, daß Durchsichten zum Fehlerfinden nicht nur effektiv sind, sondern auch effizient. Dies kann durch Auftragen der Fehlerfindungsgeschwindigkeiten über die 10 Übungsprogramme belegt werden, wobei man die Fehlerfindungsmethoden Übersetzen, Durchsicht und Test unterscheidet. Siehe Abbildung 6.9.

\includegraphics[scale=1]{Bild/pspremrates.ps}

6.3.3 Qualität: Effekte

Die positiven Effekte hinsichtlich der Programmqualität, die sich im Verlauf des PSP-Kurses einstellen, bedürfen kaum einer längeren Kommentierung: Das diszipliniertere Vorgehen und die Durchsichten führen zu einem dramatischen Absinken des Zeitanteils, der auf die Kompilation des Programms verwendet werden muß (Abbildung 6.10).

\includegraphics[scale=1]{Bild/pspcomptime.ps}

Die Durchsichten führen tatsächlich mit wachsender Übung zu einer steigenden Fehlerausbeute (Abbildung 6.11)

\includegraphics[scale=1]{Bild/pspyield3.ps}

Die im Laufe des Kurses eingeführten Qualitätsmanagementmaßnahmen reduzieren tatsächlich die Anzahl von Fehlern, die überhaupt in das Programm eingefügt werden (Abbildungen 6.12 und 6.13).

\includegraphics[scale=1]{Bild/pspcodedef.ps}

\includegraphics[scale=1]{Bild/pspdsgndef.ps}

Als Ergebnis dieser Effekte sinkt die Zahl der Fehler, die im Test gefunden werden, obwohl die Gründlichkeit der Tests über den Kurs hinweg ansteigt (Abbildung 6.14).

\includegraphics[scale=1]{Bild/psptestdef.ps}

Und schließlich: Trotz all des Verwaltungsaufwands und der zusätzlichen Arbeitsschritte, die durch den PSP bedingt werden, nimmt die Produktivität (gemessen in LOC pro Stunde) nicht ab. Das belegt die Behauptung, daß hohe Prozeßqualität auch produktivitätsfördernd ist (Abbildung 6.15). Vermutlich ist bei umfangreicheren Programmen, bei denen die Verwaltungskosten relativ weniger ins Gewicht fallen, der Effekt noch ausgeprägter; erst recht, wenn die PSP-Techniken erst einmal richtig eingeübt sind, denn während des Kurses sind die Teilnehmer darin ja alle noch Anfänger.

\includegraphics[scale=1]{Bild/pspprod.ps}

Wie schon weiter oben gesagt, sehen die Effekte nicht immer genau so aus, wie hier dargestellt, aber typischerweise stellen sie sich etwa in der beschriebenen Weise ein, wenn der Kurs von den Teilnehmenden wirklich ernstgenommen wird.


next up previous contents
Next: 6.4 Probleme und Hindernisse Up: 6. Der persönliche Softwareprozeß Previous: 6.2 Ansätze
Lutz Prechelt
1999-04-13