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.