Objektorientierung und Produktivität

Stefan - 4. Oktober 2007

Es ist eine quasi unumstößliche Annahme, dass Objektorientierung zu produktiverer Software-Entwicklung führt. Ich war nie ein großer Freund von OOP, auch wenn ich natürlich selbst oft genug objektorientiert programmiert habe – vor allem mit Delphi und Java; aber irgendwie hab ich stets im Hinterkopf: Mit Objektorientierung könnte ich mit meinem Entwicklerteam viel produktiver sein.

Nun bin ich über einen höchst interessanten Artikel gestolpert, der sich dem möglichen Produktivitätsgewinn durch Objektorientierung widmet: Productivity Analysis of Object-Oriented Software Developed in a Commercial Environment. Die Autoren untersuchen darin bereits vorhandene Studien zur Produktivität von OOP und führen selbst eine Erhebung auf Basis von knapp zwanzig Softwareprojekten eines IBM-Entwicklerlabors durch.

Dabei kommt die Studie zum Ergebnis, dass die Projekte, die neu begonnen wurden, keinen Produktivitätsunterschied zwischen prozeduraler und objektorientierter Programmierung aufweisen. Lediglich die Projekte, die der Portierung bestehender Anwendungen auf eine andere Plattform dienten, wiesen eine deutlich höhere Produktivität auf. Ein Befund, der kaum verwundert, können bei einer Portierung doch große Teile eines Projekts nahezu unverändert übernommen werden.

Das führt uns geradezu zum Killer-Argument für Objektorientierung schlechthin: Die Wiederverwendbarkeit von Komponenten ist es ja, die regelmäßig angeführt wird, wenn’s um die großen Vorteile von OOP geht. Diese Studie zeigt nun aber, dass in den untersuchten Daten keinerlei Anzeichen dafür zu finden waren, dass tatsächlich Programmteile in größerem Maßstab wiederverwendet worden wären. Dabei hatten die Software-Manager von IBM sogar eine Belohnung eingeführt für Programmierer, deren Komponenten in anderen Projekte wiederverwendet wurden! Offensichtlich ist es mit der Wiederverwendbarkeit von Softwarekomponenten in der Praxis nicht so weit her wie die OOP-Lehrbücher das gerne Glauben machen.

Abgelegt in: BusinessIT Stuff

Ein Kommentar:

Ob und wie stark Komponenten wiederverwendet werden hängt nicht von OOP oder prozedural ab, sondern davon, wie die API ist und ob die Komponente bekannt ist.

Ein gutes Beispiel dafür ist CPAN! Hier gibt es ca 12.000 Module, wobei viele OOP und viele prozedural programmiert werden. Diese Komponenten werden alle verwendet – zumindest die meisten davon. Die nicht verwendet werden, haben andere Schwächen: Schlechte API, fehlerhafter Code,…!

Was bringt mir die beste Komponente in OOP wenn sie bei einem auf dem Rechner versauert? Dann nehme ich halt die prozedurale Komponente, die auf CPAN ist!

Schreibe einen Kommentar
benötigt
benötigt (wird nicht angezeigt)
optional

Suchen