Rezension: Facts and Fallacies of Software Engineering

Softwareentwicklung besteht aus technischem Know-How und Verständnis für die Abläufe und Prozesse, die sich um die technische Umsetzung herum gebildet haben. Robert L. Glass nimmt in seinem Buch Facts and Fallacies of Software Engineering zweiteres unter die Lupe und fasst zusammen, welche Aussagen (Facts) und Trugschlüsse (Fallacies) er in der Community wahrnimmt.

Buch-Cover

Jede Aussage und jeden Trugschluss benennt Glass mit einem kurzen Satz. Darauf folgt eine Diskussion der Aussage, die auch gegenteilige Standpunkte nicht auslässt. Abgerundet wird jede Aussage mit einer Liste von Quellen, die diese Aussage belegen.

Einige der Aussagen lernt man mittlerweile auf der Uni kennen, wie zum Beispiel “Adding people to a late project makes it later.” Es ist allgemein bekannt, dass das Hinzufügen von Mitarbeitern zu einem Projekt zu Beginn mehr Einschulungskosten verursacht, als die neuen Mitarbeiter produktiv an Nutzen beitragen können. Als wichtigsten Faktor in der Softwareentwicklung sieht er die Qualität von Programmierern und stellt fest, dass die besten Entwickler mehr als zehnmal produktiver sind als die schlechtesten. Das erste Kapitel dreht sich daher um People.

Im zweiten Kapitel geht es um den sinnvollen oder gehypten Einsatz von Tools and Techniques. Sehr interessant finde ich Kapitel 3 zu Schätzungen (Estimation). Hier sehe ich einen eklatanten Gegensatz zwischen der Realität und den Schlüssen, die man aus Robert Glass’ Aussagen treffen müsste. Fast schon amüsant ist Aussage 14: The answer to a feasability study is almost always ‘yes’. Weiter geht es mit Kapiteln über Reuse (Code-Wiederverwendung), Requirements,  DesignCoding, Error Removal und Testing. Zu Code-Wiederverwendung nennt er unter anderem die Dreier-Regel:

  • Es ist dreimal so schwierig eine wiederverwendbare Komponente zu entwickeln als eine Komponente, die an nur einer Stelle verwendet wird.
  • Eine wiederverwendbare Komponente muss in drei verschiedenen Applikationen getestet werden, bevor sie allgemein genug für eine Komponentenbibliothek ist.

Reviews and Inspections sind für ihn ebenfalls ein wichtiges Element der Softwareentwicklung, was mich in meiner Meinung bestätigt. Maintenance(Wartung und Erweiterung) macht 40-80% der Softwarekosten aus, darf also nicht vernachlässigt werden. Abgeschlossen werden die Aussagen mit Definitionsversuchen zu QualityReliability und Efficiency sowie einem Kapitel zu Research.

Anschließend an diese 55 Aussagen folgen 10 Trugschlüsse wie zum Beispiel “You can’t manage what you can’t measure”. Wer neugierig ist, warum das ein Trugschluss ist, der wird in diesem Buch fündig.

Ich habe mir erspart alle 55 Aussagen und 10 Trugschlüsse aufzulisten, da sie nur einen Link weit entfernt sind. Von mir bekommt das Buch definitiv eine Empfehlung. Was sagst du zu diesen Aussagen und Trugschlüssen?