Angeregt durch die Lektüre des Werks “Software Estimation: Demystifying the Black Art” von Steve McConnell will ich mich hier mal mit den Schlussfolgerungen aus seinen Gedanken zum Thema “Disecononmies of Scale” beschäftigen. Steve McConnell ist auch der Autor des für jeden Software-Entwickler zur Pflicht-Lektüre gehörenden “Code Complete”. Im hier besprochenen Kapitel beschäftigt er sich mit der Effektivität von Software-Teams in Abhängigkeit der Größe des jeweiligen Projekts.
Steve McConnell schreibt:
Project size is easily the most significant determinant of effort, cost, and schedule.
Und er fügt hinzu:
People naturally assume that a system that is 10 times as large as another system will require something like 10 times as much effort to build. But the effort for a 1,000,000-LOC system is more than 10 times as large as the effort for a 100,000- LOC system, as is the effort for a 100,000-LOC system compared to the effort for a 10,000-LOC system.
Und schließlich folgert er:
[Using common productivity average values], the 10,000-LOC system would require 13.5 staff months. If effort increased linearly, a 100,000-LOC system would require 135 staff months, but it actually requires 170 staff months.
Obwohl laut McConnell neben der Größe des Projekts auch die Art der Software, die entwickelt wird, als auch persönliche Faktoren eine Rolle spielen, kann man doch erkennen, dass sie den größten Einfluss auf den Erfolg hat. Wenn Du also möchtest, dass Dein Software-Projekt nicht scheitert, hast Du nur eine Wahl:
Halte Dein Projekt klein!
Laut Untersuchungen steigt der Aufwand in Software-Projekten in größerem Maße, als die Zahl der Code-Zeilen wächst. Anders ausgedrückt:
Mit der Zahl der Codezeilen steigt der Aufwand exponentiell an. Die Effektivität des Teams sinkt dementsprechend.
McConnell führt dazu in seinem Buch eine Tabelle an. Die Daten der zugrunde liegenden Untersuchungen sind “Measures for Excellence” (Putnam and Meyers 1992), “Industrial Strength Software” (Putnam and Meyers 1997), “Software Cost Estimation with Cocomo II” (Boehm et al. 2000), und “Software Devel- opment Worldwide: The State of the Practice” (Cusumano et al. 2003). Die in der Tabelle dargestellten Untersuchungsergebnisse zeigen, dass mit jeder Verzehnfachung der Code-Basis eines Software-Projekts die durchschnittliche Produktivität eines einzelnen Entwicklers (ausgedrückt in Lines-Of-Code) sinkt.
| Projekt-Größe (in Lines Of Code) |
Lines Of Code per Staff (Cocomo II Nominal in Parantheses) |
| 10k |
2,000 – 25,000 (3,200) |
| 100k |
1,000 – 20,000 (2,600) |
| 1M |
700 – 10,000 (2,0000) |
| 10M |
300 – 5,000 (1,600) |
Sicherlich hat diese Betrachtungsweise auch einen Haken. Wie messe ich denn die Größe eines Projekts? Hier angeführt wurde immer das Maß der “Lines Of Code”. Das Bestimmen eines neutralen Werts ist hierbei nicht so einfach. Einerseits wird die verwendete Programmiersprache eine Rolle spielen. So können 100 Zeilen Erlang bis zu viermal soviel Code-Zeilen in C++ entsprechen. Ähnlich wird es sich mit dem Vergleich von Scala zu Java verhalten. Außerdem gibt es eine Grauzone: WIe misst man Kommentarzeilen? Wie geht man mit verschiedenen Code-Formatierungen um? (Vergleiche: Wikipedia LOC und LLOC). Mir geht es aber hier nicht um das Messverfahren. Bei Interesse sollte man sich das Kapitel “Role of Lines of Code in Size Estimation” in Steve McConnells Buch durchlesen. Dort kommt er zu der Schlussfolgerung:
My personal conclusion about using lines of code for software estimation is similar to Winston’s Churchill’s conclusion about democracy: The LOC measure is a terrible way to measure software size, except that all the other ways to measure size are worse. For most organizations, despite its problems, the LOC measure is the workhorse technique for measuring size of past projects and for creating early-in-the-project estimates of new projects. The LOC measure is the lingua franca of software estimation, and it is nor- mally a good place to start, as long as you keep its limitations in mind.
Man muss sich beim Start eines neuen Projekts oder immer dann, wenn Entscheidungen bezüglich Architektur und Design eines Software-Projekts anstehen, bewusst machen, dass das Wachstum der Codebasis die Effektivität verringern wird. Für den erfolgreichen Abschluss eines Projekts ist es eine Bedingung, dass man die Größe gering hält.
Angeregt durch die Lektüre des Werks "Software Estimation: Demystifying the Black Art" von Steve McConnell will ich mich hier mal mit den Schlussfolgerungen aus seinen Gedanken zum Thema "Disecononmies of Scale" beschäftigen. Steve McConnell ist auch der Autor des für jeden Software-Entwickler zur Pflicht-Lektüre gehörenden "Code Complete". Im hier besprochenen Kapitel beschäftigt er sich ...