Komponentenbasierte & generative Software-Entwicklung von Olaf Zwintzscher | Generierung komponentenbasierter Software aus erweiterten UML-Modellen | ISBN 9783937137506

Komponentenbasierte & generative Software-Entwicklung

Generierung komponentenbasierter Software aus erweiterten UML-Modellen

von Olaf Zwintzscher
Buchcover Komponentenbasierte & generative Software-Entwicklung | Olaf Zwintzscher | EAN 9783937137506 | ISBN 3-937137-50-5 | ISBN 978-3-937137-50-6

Komponentenbasierte & generative Software-Entwicklung

Generierung komponentenbasierter Software aus erweiterten UML-Modellen

von Olaf Zwintzscher
Trotz konjunktureller Schwankungen wächst die Softwareindustrie kontinuierlich. Gleichzeitig wachsen die zu realisierenden Softwaresysteme stetig in Umfang und Komplexität. Dennoch sollen sie einfach zu bedienen und leicht verständlich sein. Der zunehmende Einsatz von Software in unternehmenskritischen Bereichen steigert zusätzlich die Anforderungen an die Zuverlässigkeit und Bedienbarkeit von Software. Häufig sind diese Umstände dafür verantwortlich, dass Software nicht termingerecht fertig gestellt werden kann und teurer wird als geplant.
Andere Industriezweige haben auf Kostendruck und Komplexitätszuwachs durch die Etablierung eines Herstellungsprozesses reagiert, der auf einem systematischen, ingenieurmäßigen Ansatz beruht: Wo das Ganze zu komplex ist, wird es in kleine, leichter zu verstehende und wartbare Teile zerlegt, die in hoher Stückzahl kostengünstig produziert werden und möglichst automatisch durch Dritte zum Ganzen zusammengesetzt werden können. Auch in der Softwaretechnik ist dieses Konzept nicht neu: Ein Ziel der komponentenbasierten Softwareentwicklung ist seit längerer Zeit, ein ähnliches Vorgehen in der Softwareindustrie zu etablieren. Hieraus sind viele interessante Ansätze entstanden, die zunächst in den ersten Kapiteln dieser Arbeit vorgestellt und vom eigenen Ansatz des Autors abgegrenzt werden.
Obwohl die komponentenbasierte Softwareentwicklung in einigen Bereichen, wie z. B. bei der Entwicklung von Benutzungsoberflächen, sehr erfolgreich praktiziert wird, hat sie sich insgesamt jedoch nur mäßig etabliert. Ein Grund hierfür ist in erster Linie in der Komplexität der jeweiligen Komponententechniken zu sehen. Vor allem die Komposition von Softwarekomponenten sollte jedoch so einfach wie möglich sein, denn gerade dieses Prinzip stellt einen entscheidenden Erfolgsfaktor für den Einsatz einer Komponententechnik dar, wie das Beispiel der Benutzungsoberflächen belegt.
Das Ziel dieser Arbeit ist es daher, einen Ansatz zu realisieren, mit dessen Hilfe Komponenten auf einfache Art und Weise in ein Softwaresystem integriert werden können. Die Grundidee hierbei ist, den generativen Ansatz mit dem komponentenbasierten zu kombinieren: Komponenten werden in ein leicht zu verstehendes Modell auf hohem Abstraktionsniveau eingefügt und anschließend auf Knopfdruck in das Softwaresystem hineingeneriert. Hierzu wurde zunächst eine Notation entwickelt, die es ermöglicht, UML-Modelle um kompositorische Aspekte zu erweitern, denn bisher bietet die UML, die sich mittlerweile als Standardnotation in der Industrie etabliert hat, in diesem Bereich keine ausreichenden Ausdrucksmittel an.
Da moderne Anwendungssysteme in der Regel aus mehreren Schichten bestehen, die auf unterschiedlichen Computersystemen ablaufen und über das Netzwerk miteinander kommunizieren, ist es auch häufig erforderlich, eine Komponente entsprechend dieser Architektur in Teilkomponenten aufzuteilen. Da Komponenten dieser Art in der Regel einen kompletten Geschäftsprozess oder ein Geschäftsobjekt in Benutzungsoberfläche, Fachkonzept und Datenhaltung realisieren, werden sie daher als Business Components bezeichnet.
Während sich die übrigen generativen Ansätze auf die Betrachtung einer Schicht beschränken, wird in dieser Arbeit ein Ansatz realisiert, mit dessen Hilfe Business Components als Ganzes in die Einzelteile -- Client und Server -- einer dreischichtigen Anwendung hineingeneriert werden können.
Ein weiterer Grundgedanke dieser Arbeit ist es, dass auch Funktionalität existiert, die sich nicht sauber in einer Komponente lokalisieren lässt. Von der aspektorientierten Programmierung beeinflusst wurde daher eine Generatorkomponente entwickelt, die durch Generierungsschablonen und Weaving Points parametrisiert werden kann.
Zusätzlich wird hierdurch das Problem gelöst, dass auch für Komponenten mit einer spezifischen, benutzerdefinierten Schnittstelle eine Anbindung generiert werden kann: Der Komponentenentwickler realisiert neben der Komponente eine Generierungsschablone, die zusammen mit der Komponente ausgeliefert wird. Wird die Komponente in das Modell eingefügt und der Generierungsprozess angestoßen, liest der Generator die Generierungsschablone ein und erzeugt eine für die jeweilige Komponente spezifische Anbindung.