Software erlangte in den vergangenen Jahren eine immer größer werdende Bedeutung für unsere Gesellschaft. In immer stärkerem Maße übernehmen Softwaresysteme Aufgaben, die früher durch Hardware oder mechanische Elemente gelöst wurden. Mittlerweile wird Software verstärkt auch in Bereichen eingesetzt, wo ein Versagen nicht nur zu wirtschaftlichen Verlusten führt, sondern auch Menschenleben gefährdet sind.
Um den stetig wachsenden Anforderungen zu genügen, werden bei der Software-Entwicklung verschiedene Ziele verfolgt, die auch als Spannungsdreieck der Software-Entwicklung bekannt geworden sind [ Basiswissen Softwarearchitektur]:
Verkürzung der Entwicklungszeiten
Reduzierung der Wartungs- und Entwicklungskosten
Verbesserung der Qualität.
Erreicht werden soll dies in erster Linie durch einen erhöhten Grad an Wiederverwendung und eine Verbesserung der Entwicklungsprozesse. Die Software-Architektur spielt sowohl bei der Wiederverwendung als auch bei der Prozessverbesserung eine wichtige Rolle. Sie beschreibt die wesentlichen Mechanismen und Strukturen der Software auf den oberen Hierarchieebenen und entstand aus der Notwendigkeit, immer größer und komplexer werdende Softwaresysteme zu beherrschen. Erste Arbeiten wurden in den 1960er bis 1980er Jahren von Parnas [Par72], Brooks [Bro75], Dijkstra [Dij68] und anderen veröffentlicht. Weitreichende Aufmerksamkeit erlangte das Thema jedoch erst in den 1990er Jahren, als große Systeme zunehmend die Regel wurden.
Im Abschnitt "Grundlagen" wird der Begriff der Software-Architektur aus verschiedenen Blickwinkeln betrachtet und es wird erläutert, welche Aufgaben die Architektur erfüllen muss. Darüber hinaus wird dargelegt, warum Software-Architektur so wichtig ist und welche Vorteile die Entwicklung einer "guten" Software-Architektur mit sich bringt. Der Software-Architekt ist verantwortlich für die Erstellung und Umsetzung der Architektur. Dieser Schlüsselposition wird durch die gesonderte Darstellung der wichtigsten Aufgaben des Architekten im Entwicklungsprozess Rechnung getragen.
Der Abschnitt "Erstellung der Software-Architektur" gibt einen Überblick über die Erstellung der Architektur während des Software-Entwicklungsprozesses. Die Erstellung der Architektur ist ein inkrementeller und iterativer Prozess, der sich vereinfacht in
Vorbereitung
Entwurf, Dokumentation und Bewertung
Umsetzung
unterteilen lässt.
Die Entwicklung großer Softwaresysteme ist mit einem hohen Zeit- und Kostenaufwand verbunden. Die Entwicklungskosten bei Folgeprojekten können signifikant gesenkt werden, wenn das in der Software-Architektur dokumentierte Wissen wieder verwendet wird. Im Abschnitt "Wiederverwendung im Software-Entwurf" wird auf verschiedene Möglichkeiten der Wiederverwendung von Wissen im Entwurfsprozess Bezug genommen. Der Schwerpunkt des Kapitels liegt dabei auf der Betrachtung Architektonischer Muster und Stile.
Literatur:
[Bro75]
Frederick Brooks: The Mythical Man-Month – Essays on Software Engineering, Addison-Wesley, 1975.
[Dij68]
Edsger Dijstra: The Structure of the T.H.E. Multiprogramming System, In: Communications of the ACM, Vol. 18, No. 8, 1968.
[Par72]
David L. Parnas: On the Criteria to be Used in Decomposing Systems into Modules, In: Communications of the ACM, Vol. 15, No. 12, S. 1053-1058, 1972.