- Softwarearchitektur
-
Eine Softwarearchitektur ist eine der Architekturtypen in der Informatik und beschreibt die grundlegenden Komponenten und deren Zusammenspiel innerhalb eines Softwaresystems.
Inhaltsverzeichnis
Definition
Eine Definition von Helmut Balzert beschreibt den Begriff als „eine strukturierte oder hierarchische Anordnung der Systemkomponenten sowie Beschreibung ihrer Beziehungen“ (Literatur: Balzert, S. 716). Die Architekturkomponenten bilden eine Zerlegung des Gesamtsystems, was bedeutet, dass jedes Softwareelement mindestens einer Architekturkomponente zugeordnet ist.
Dabei enthält eine Beschreibung der Software-Architektur nicht nur Informationen über die Struktur („Komponentisierung“) eines Software-Systems, sondern auch Informationen über die Kommunikation zwischen Komponenten, sowie deren Abbildung auf Hardware- oder Software-Ressourcen (Verteilung und Deployment).
Software-Architektur-Beschreibungen können über den gesamten Lebenszyklus eines Software-Systems genutzt werden. Dazu gehören neben der Entwicklung insbesondere auch Software-Evolution, Software-Installation und Software-Betrieb. Ebenso profitieren neben technischen Tätigkeiten auch Projektmanagement-Tätigkeiten, wie Kostenschätzung, Meilensteinplanung, Planung projektübergreifender Software-Wiederverwendung und die Organisation verteilter Software-Entwicklung von einer guten Architekturbeschreibung.
Die Softwarearchitektur ist Teil des Softwareentwurfs (siehe SWEBOK), innerhalb dessen sie als Grobgliederung der Komponenten entsteht. Während der Softwareentwurf sich auch auf lokale Aspekte innerhalb des architektonischen Rahmens der Software bezieht und deshalb sehr detailliert sein kann, ist die Softwarearchitektur eine globale Eigenschaft des Gesamtsystems.
Im Rahmen der Softwareentwicklung repräsentiert die Softwarearchitektur die früheste Softwaredesign-Entscheidung (Architekturentwurf). Sie wird wesentlich durch Softwarequalitätskriterien, also nicht-funktionale Eigenschaften wie Modifizierbarkeit, Wartbarkeit, Sicherheit oder Performance bestimmt (siehe beispielsweise FURPS). Eine einmal eingerichtete Softwarearchitektur ist später nur mit hohem Aufwand abänderbar. Die Entscheidung über ihr Design ist somit einer der kritischsten und wichtigsten Punkte im Entwicklungsprozess einer Software.
Zur grafischen Visualisierung von Softwarearchitekturen werden unterschiedliche Werkzeuge eingesetzt. Beispielsweise:
Der Wert von rein grafischen Darstellungen von Softwarearchitekturen ist ebenso umstritten wie der Wert von rein textuellen Darstellungen.
Mit der Bewertung von Softwarearchitekturen befasst sich die Softwarearchitekturbewertung. Ein wichtiges Qualitätsmerkmal von Softwarearchitektur ist ihre Stetigkeit in Bezug auf Änderungen an dem durch die Software zu lösenden Problem. Kleine Änderungen am Problem sollen zu nur kleinen Änderungen in der Softwarearchitektur führen. Das zentrale Qualitätsmerkmal für die Arbeit eines Softwarearchitekten aus wirtschaftlicher Sicht aber ist, ob er in nützlicher Frist eine Softwarearchitektur definiert, mit der sich zum einen das gestellte Problem lösen lässt, und welche zum anderen die für die Realisierung der Lösung real verfügbaren Softwareentwickler dazu befähigt, zu besseren Ergebnissen zu kommen als ohne die Hilfe des Softwarearchitekten.
Beispiel
Eine Architekturbeschreibung umfasst etwa im Falle einer Web-Anwendung den Aufbau des Systems aus Datenbanken, Web-/Application-Servern, E-Mail- und Cachesystemen − siehe etwa Wikipedia selbst.
Kontext der Softwarearchitektur
Eine Softwarearchitektur ist in ihrer wirtschaftswissenschaftlichen Perspektive sehr stark von den Aspekten eines Software-Projekts abhängig, welche die Softwarearchitektur umgeben. Deswegen benötigt eine Softwarearchitektur, um erfolgreich funktionieren zu können, eine geeignete Abstimmung mit den wichtigsten übrigen Faktoren des Software-Projekts. Auf der Seite der Benutzer und der Betroffenen des Software-Projekts gibt eine gut konstruierte Softwarearchitektur leicht ein grundlegendes Verständnis des Systems für alle Betroffenen.
Wichtige Faktoren, die auf die Eignung der Softwarearchitektur Einfluss nehmen, sind:
- Projektplanung
- Risikoanalyse
- Organisation
- Entwicklungsprozess
- Arbeitsabläufe
- Hardware
- Qualitätssicherung
- Anforderungen
Abwägungen bei Entwicklung und Aufbau einer Softwarearchitektur
Bei der Entwicklung und dem Aufbau einer Softwarearchitektur in einem Unternehmen sind im Allgemeinen unter anderem folgende Abwägungen durchzuführen:
Form Funktion Interne Anforderungen Externe Anforderungen Strenge Kontrolle Flexible Änderungen Geld- und Zeitkosten Zusätzliche Funktionen Komplexität Verständlichkeit Neue Technologien Bewährte Technologien Top-Down-Planung Bottom-Up-Planung Fortlaufende Verbesserung Stabilität Knappe Integration Wenige Interfaces Siehe auch
Literatur
- Helmut Balzert: Lehrbuch der Software-Technik. 2. Auflage. Spektrum Akademischer Verlag, Heidelberg 2001, ISBN 3-8274-0301-4.
- Band 1: Software-Entwicklung. ISBN 3-8274-0480-0.
- Band 2: Software-Management, Software-Qualitätssicherung, Unternehmensmodellierung. ISBN 3-8274-0065-1
- Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice. Addison Wesley, Reading 1998, ISBN 0-201-19930-0.
- Torsten Posch, Klaus Birken, Michael Gerdom: Basiswissen Softwarearchitektur. dpunkt Verlag, Heidelberg 2004, ISBN 3-89864-270-4.
- Ralf Reussner, Wilhelm Hasselbring: Handbuch der Software-Architektur. 2. Auflage. dpunkt Verlag, Heidelberg 2008, ISBN 978-3-89864-559-1.
- Johannes Siedersleben: Moderne Software-Architektur. dpunkt Verlag, Heidelberg 2004, ISBN 3-89864-292-5.
- Gernot Starke: Effektive Software-Architekturen: Ein praktischer Leitfaden. 3. Auflage. Carl-Hanser-Verlag, München 2008, ISBN 978-3-446-41215-6.
- Oliver Vogel, Ingo Arnold, Arif Chughtai, Markus Völter: Software-Architektur. Grundlagen - Konzepte - Praxis. Spektrum Akademischer Verlag, Heidelberg 2005, ISBN 3-8274-1534-9.
Weblinks
- http://www.fg-swa.gi-ev.de/ (Fachgruppe Software-Architektur der Gesellschaft für Informatik)
Wikimedia Foundation.