Fazit

In dieser Arbeit wurde der objektorientierte Programmierstil vorgestellt und Methoden zur OOP entwickelt. Aus dieser weitgehenden Beschränkung auf die OO-Theorie sollte jedoch keine Kritik an anderen Konzepten für die Programmierung geübt werden. Diese anderen Konzepte ermöglichen jeweils auch effizientere Programmierung, sie können oft auch kombiniert mit der OOP angewandt werden und stehen so nicht in Konkurrenz.

Bewertung der OOP

Die vorgestellten Methoden der OOP leisten in der Softwareentwicklung recht gute Dienste. Sie ermöglichen einen effektiven Vorgehensprozeß, in dem kaum Spezifizierungen von Teilproblemen übersehen werden. Und mit der UML ist eine - nach genügender Einarbeitung - weitgehend intuitive Notationsweise gefunden. Einzig die automatische Unterstützung der einzelnen Schritte durch Programmierwerkzeuge fehlt gegenwärtig noch. Durch solche Utilities würde sich die Programmierung noch weit mehr rationalisieren lassen. Eine Sprachunabhängigkeit, die mit einer hohen Flexibilität (auch Genericity) erreicht würde, steckt mit der IDL noch immer in den Kinderschuhen. Mit modernen Utilities sollte es möglich sein, für jedes Modul des OO-Designs separat entscheiden zu können, aufgrund welcher Programmiersprache es entwickelt wird. So könnten auch die verschiedenen Vorzüge der jeweiligen Sprache optimal ausgenutzt werden. Jedoch unterstützen heutige Utilities dies nur mit einem hohen zusätzlichen Programmieraufwand, der selten ökonomisch zu rechtfertigen ist.

Während der Realisierung des Beispielprojekts wird deutlich, daß die theoretischen Möglichkeiten genügend gut ausgenutzt werden und die Methoden auf erstaunlich einfache Weise zu einem brauchbaren und vollständigen Ergebnis führen. Obwohl die in der Theorie getrennten Phasen und Methodenschritte in der Praxis leicht miteinander verschwimmen. Bei kleineren Projekten muß hier eingeräumt werden, daß es für die letztendliche Implementierung nicht abschlägig ist, wenn das Ergebnis einer Phase schon durch die vorhergehenden besteht. Schließlich ist dies einer der Gründe dafür, überhaupt solche Methoden aufzustellen.

Kritik an OOP und Methoden

Objektorientierte Programmierung ist ein theoretisches Fundament, auf dem aufbauend ein noch höheres Abstraktionsniveau erreicht werden muß, um nicht nur ein Objekt und dessen Eigenschaften, sondern auch sein gesamtes externes Verhalten (besonders Interaktion mit anderen Objekten, Assoziationen und parallele Aktivität) ausreichend beschreiben zu können. Dieses bieten würde eine noch mehr auf das Verhalten und die Beziehungen zwischen Objekten ausgelegte Programmiersprache. Ansätze, solche Neuerungen in bereits vorhandene Sprachen nachträglich zu integrieren, sind unter anderem mit den sogenannten Design Patterns geboten, die aber meist darauf beruhen, Objekten bestimmte Konventionen aufzudrängen statt die Zusätze durch Syntaxerweiterungen zu ermöglichen. Eine Art verhaltensorientierter Programmierung könnte hier zukunftsweisend sein, die Effektivität der OOP zu erhöhen. Eventuelle könnte Programmierung solcher Art auch in einem extensiven Gebrauch von 5Gl-Sprachen gipfeln, wenn diese in Zukunft mit einem solideren theoretischen Fundament unterlegt werden.

Effektivität

Obwohl die OOP, wenn die OO-Methoden angewandt werden, Softwareentwicklung rationell durchführbar macht, verbessert OOP alleine noch nicht alle drei Eckpfeiler effektiver Programmierung:
Reusability:
Die Wiederverwendbarkeit von Modulen wird mit der OOP zwar prinzipiell ermöglicht, aber auch nicht automatisiert. Die Entwicklung wiederverwendbarer Programmteile erfordert schon in deren Planung große Änderungen, die häufig als momentan unwirtschaftlich angesehen werden, da sie inerhalb eines Projekts meist doch nur einmal verwendet werden. Innerhalb größerer Firmen könnten hier die Möglichkeiten verbessert werden, wenn die Konzepte aller geplanten Programmmodule einem für Wiederverwendbarkeit zuständigen Experten vorgelegt werden, der alle Entwürfe gegebenenfalls an spätere oder andere Projekte anpaßt und sie verallgemeinert.
Genericity:
Die nachträgliche einfache Änderung von Teilaspekten eines Programms, wird von der OOP auch nicht direkt unterstützt, sondern erfordert Konzeptmodifikationen. Diese sind jedoch meistens auf das aktuelle Projekt begrenzt, sollten also aus fortschrittlicheren OO-Methoden hervorgehen. Die hier vorgestellten Vorgehensweisen der OOP bieten hierfür nur ansatzweise Hilfe.
Extendability:
Programme nachträglich zu warten, um sie an Anforderungsänderungen anzupassen, wird mit der OOP dagegen stark vereinfacht. Weil die Modularisierung in der OOP durch die OO-Methoden erzwungen wird, lassen sich Modulfunktionen leichter ändern und die Programmfunktionalität neu festlegen (siehe Modularität). Dadurch, daß Module intern, von außen unbemerkt, verändert werden können (siehe Verkapselung), kann jedes einzelne Modul in größeren Teilen nachträglich noch zur Disposition stehen. Auch muß durch das hohe Maß an Abstraktion ein Wartungsprogrammierer nicht alle Details der Implementierung verstehen um einzelne Änderungen durchzuführen.

Ausblick auf zukünftige Möglichkeiten (Utilities)

In Zukunft realisierbare Programmierutilities könnten mit OOD entworfene Projekte automatisch implementieren, sowie den Programmierer interaktiv durch die Phasen der Softwareentwicklung hindurch unterstützen. Auch die Analyse- und Designmethoden können teilweise interaktiv gestaltet werden. So könnte beispielsweise durch eine grammatikalische Untersuchung der Forderungsspezifikation auf die verwendeten Objekte und deren Attribute geschlossen werden. Die Testphasen könnten vollständig automatisiert werden, wenn die theoretische Informatik die Möglichkeiten zur semantischen Verifikation von Programmteilen verbessert.