Phantomanforderungen
Die Gründe, welche zur Verwendung von Objektorientierung angeführt werden, lauten z.B. Wiederverwendbarkeit, Wartbarkeit, Änderbarkeit, Erweiterbarkeit, Testbarkeit, Code-Verständlichkeit.
Interessanterweise wird nie als Grund für Objektorientierung angeführt, dass der eigentliche Zweck einer Software schneller und einfacher erreicht werden kann.
Jede Software hat einen Anwendungszweck. Das ist der Grund, warum sie überhaupt entwickelt wird. Eine Buchhaltungssoftware dient zur Buchhaltung, ein Textverarbeitungsprogramm zum Texte schreiben usw.
Das ist der eigentliche Zweck einer Software.
Eine Software wird nicht entwickelt, damit sie wiederverwendbar ist. Sie wird entwickelt, damit sie einen Nutzen für den Anwender erfüllt.
Und nun werden diesem Nutzen aber weitere Anforderungen hinzugefügt:
Wiederverwendbarkeit, Wartbarkeit, Änderbarkeit, Erweiterbarkeit, Testbarkeit, Code-Verständlichkeit
Diese Anforderungen betreffen NICHT den eigentlichen Anwendungszweck einer Software.
Es sind zusätzliche Anforderungen, die dem eigentlichen Zweck hinzugefügt werden.
Ich nenne diese Anforderungen "Phantomanforderungen".
Die Informatik nimmt nun an, dass diese Phantomanformderungen einen zusätzlichen Aufwand und zusätzliche Kompliziertheit rechtfertigen.
Anders gesagt lautet die Annahme:
"Wenn wir jetzt bei der Entwicklung nicht EXTRA etwas unternehmen (für Wiederverwendbarkeit usw.), dann werden wir später einmal Probleme bekommen."
Es ist eine Hypothek auf die Zukunft - eine Zukunft, die man aber noch nicht genau kennt.
Man kann die Annahme der Informatik auch anders formulieren:
"Die einfachste Lösung, die sich einfach nur auf den unmittelbaren Anwendungszweck konzentriert, ist nicht wiederverwendbar, erweiterbar usw."
Und genau das stimmt nicht. Genau das ist ein Irrtum, wie er größer gar nicht sein könnte.
Die Annahme, dass ich HEUTE einen Mehraufwand über den eigentlichen Anwendungszweck hinaus leisten muss, um mir eine (heute noch unbekannte) Weiterentwicklung MORGEN nicht zu verbauen, stimmt nicht.
Der Mehraufwand für die Phantomanforderungen HEUTE macht die Software komplexer. Und eine komplexere Software ist auch schwieriger weiterzuentwickeln, zu verstehen usw.
Ganz zu schweigen von der Tatsache, dass dieser Mehraufwand und die zusätzliche Komplexität dem eigentlichen Zweck HEUTE gar nicht zu Gute kommt.
Phantomanforderungen erschweren nicht nur die aktuelle Entwicklung, sondern sie bieten auch nicht den zukünftigen Nutzen, der ihnen eigentlich zugeschrieben wird.
Objektorientierung rechtfertigt sich aus den Phantomanforderungen und NICHT aus dem eigentlichen Anwendungszweck.
Ein solches Vorgehen erwächst aus einem Fehlverständnis heraus, wie genau und vor allem warum der menschliche Geist Lösungen produziert:
Immer dann, wenn eine echte, konkrete Anforderung für eine Software vorliegt, wird die Kreativität des menschlichen Geistes aktiviert, um konkrete Lösungen für genau dieses Problem hervorbringen.
Der emotionale Wunsch, ein Problem zu lösen, produziert diese Lösungen. Es spielt dafür gar keine Rolle, was in der Vergangenheit an vorsorglichen Vorkehrungen dafür getroffen wurde.
Kreativität und wirkliche Lösungen basieren auf Emotionen: Es ist der Wunsch, ein bestimmtes Problem zu lösen, einen Nutzen zu stiften und Menschen zu helfen.
Die Phantomanforderungen dienen diesem Ziel nicht, sondern sie erschweren dieses Vorhaben sogar. Sie führen zu einem Verlust an Freude bei der Entwicklung, weil sie das Erreichen des eigentlich lohnenswerten Zieles in weitere Ferne rücken.
Das lässt die natürliche Kreativität versiegen und dann meint man plötzlich, auf Methoden wie Objektorientierung angewiesen zu sein.