Bei der Arbeit mit einem Softwarepaket fiel die Bemerkung dass man den ganzen Mist wegwerfen und neu entwickeln sollte. Mir fiel dazu ein dass es ein Tool gibt mit dem die Entwicklungskosten für Softwareprojekte abgeschätzt werden kann: ohloh.net berücksichtigt dazu im wesentlichen die Anzahl der Quellcodezeilen, das darunterliegende COCOMO-Modell, das zwar nicht völlig aus der Luft gegriffen ist, effektiv aber wohl auch nicht viel mehr bringt als eine Glaskugel.
Trotzdem: die Zahlen die dabei rausfallen sind schon beeindruckend. Selbst wenn man nur die Anzahl der Codezeilen ansieht, nicht die daraus folgenden Kosten (die mit $55k pro Personenjahr angesetzt werden):
Projekt | Codebase Size | Estimated Effort | Estimated Cost |
---|---|---|---|
Apache HTTP Server | 2.268.153 Zeilen | 645 Personenjahre | 35.476.462 Dollar |
Apache OpenOffice | 23.105.092 Zeilen | 7361 Personenjahre | 404.853.843 Dollar |
Gimp | 728.523 Zeilen | 201 Personenjahre | 11.034.951 Dollar |
GNU Compiler Collection | 6.435.383 Zeilen | 1956 Personenjahre | 107.585.880 Dollar |
Linux Kernel | 16.411.777 Zeilen | 5321 Personenjahre | 292.631.874 Dollar |
MySQL | 12.566.154 Zeilen | 4009 Personenjahre | 220.473.614 Dollar |
Nagios | 240.833 Zeilen | 61 Personenjahre | 3.334.334 Dollar |
Perl | 5.422.092 Zeilen | 1664 Personenjahre | 91.502.061 Dollar |
PHP | 2.281.573 Zeilen | 653 Personenjahre | 35.901.501 Dollar |
Python Programming Language | 908.412 Zeilen | 251 Personenjahre | 13.822.126 Dollar |
Samba | 1.554.832 Zeilen | 442 Personenjahre | 24.330.106 Dollar |
Zabbix | 279.878 Zeilen | 73 Personenjahre | 4.036.481 Dollar |
Wie gesagt: alles nur Glaskugel, und sicher gibt es tausend Unwägbarkeiten wie autogenerierten Code, oder unterschiedliche Kosten für unterschiedlich qualifizierte Programmierer.
Für 300 Millionen Dollar würde ich persönlich aber durchaus anfangen einen Kernel zu schreiben… selbst wenn ich damit rechne bis zur Rente noch 30 Jahre hacken zu müssen, müsste der rechnerisch bis dahin ja nur 0,56% der Funktionalität bringen ((1 / 5321) * 30 * 100 = approx. 0.5638038)… wenn ich mir die richtigen 0,56% raussuche passt das schon…