Definition „Software Architecture“ Was ist eine Softwarearchitektur?

Von Gedeon Rauch

An jeder Stelle eines Softwareprojektes gibt es Entscheidungen von großer Tragweite, doch kaum eine ist so essenziell wie die Softwarearchitektur. Denn eine bestehende Softwarearchitektur zu ändern, ist extrem komplex.

Die Softwarearchitektur beinhaltet die wichtigsten Entscheidungen zur Organisation, Struktur und Hierarchie eines Systems.
Die Softwarearchitektur beinhaltet die wichtigsten Entscheidungen zur Organisation, Struktur und Hierarchie eines Systems.
(Bild: ItNeverEnds / Pixabay)

Wie genau ein Softwaresystem arbeitet, ist auf grundlegender Ebene eine Frage der verschiedenen Komponenten und deren Zusammenspiels – wie diese strukturiert sind, in welcher Hierarchie die Elemente angeordnet sind und wie sie zueinander in Beziehung stehen, das wird in der Softwarearchitektur festgelegt. Bereits hierbei ist ersichtlich, dass es sich bei der Definition einer Softwarearchitektur um eine strukturell derartig weitläufige Aufgabe handelt, dass dies mit der Grundsteinlegung eines Hauses vergleichbar ist.

Nun mag die Softwarearchitektur aufgrund dieses allgemeinen Überblicks zu den weniger präzisen Definitionen innerhalb eines Softwareprojektes gehören, doch als grobe Überordnung feinerer Pläne ist sie extrem wichtig. Denn nachträglich eine Softwarearchitektur zu ändern, erfordert einen tiefen Eingriff in Elemente und Beziehungen, eine gute geplante Softwarearchitektur hingegen kann die Ausrichtung des gesamten Projektes adäquat wiedergeben.

Mit der Softwarearchitektur ein System organisieren

Die Softwarearchitektur steht am Anfang eines Softwareprojektes und fällt organisatorisch in die Entwurfsphase, sie ist gewissermaßen eine strukturierte Niederschrift des geplanten Entwurfes und ist ein erster Plan für die Organisation eines Systems.

In der Softwarearchitektur werden nur die wichtigsten Entscheidungen zur Organisation, Struktur und Hierarchie eines Systems angegeben, was einen für die Softwareentwicklung und das Projektmanagement interessanten Widerspruch mit sich zieht: Welche Entscheidungen die Organisation maßgeblich beeinflussen, zeigt sich oftmals erst im Laufe eines Softwareprojektes.

Eine wohl strukturierte Softwarearchitektur ist durchaus als Zeichen der Erfahrung eines Projektteams zu verstehen. Das Design als visuell leicht lesbares Diagramm oder aber die detailliert ausgeführte Dokumentation sind die beiden wichtigsten Darstellungsformen der Softwarearchitektur und – abhängig vom Projekt – beide üblich.

Weil die Softwarearchitektur auch als Ausarbeitung zur Erfüllung der geforderten Spezifikationen zu sehen ist, gibt sie strategische Grundsatzentscheidungen wieder, hilft dem Entwicklungsteam, kann jedoch auch der Kundschaft oder anderen Stakeholdern als Hilfsmittel dienen. Vor der Erstellung einer Softwarearchitektur sollte im Projektteam geklärt werden, ob diese vor allem den Programmiererinnen und Programmieren als Grundriss der Arbeit dienen oder aber diese hauptsächlich von Geschäftsleitung, Controlling oder Stakeholdern gelesen werden soll.

Vor allem nicht-funktionale Eigenschaften sind in der Softwarearchitektur entscheidend – Modifizierbarkeit, Sicherheit, Wartbarkeit oder Performance (Softwarequalitätskriterien) prägen die Softwarearchitektur als früheste Designentscheidung im Softwareprojekt sehr stark und resultieren in dem leicht lesbaren Aufbau der Softwarearchitektur. Eine funktionierende Softwarearchitektur sollte nicht zu genau ausgearbeitet sein, sondern leicht lesbar.

Was ist relevant für eine Softwarearchitektur?

Innerhalb einer Softwarearchitektur müssen verschiedene Punkte definiert werden, hierzu gehören beispielsweise:

  • Die Wahl zwischen komponentenorientiertem und objektorientierten Softwareentwurf.
  • Die Wahl der Strukturelemente und der Beziehungen und Schnittstellen zu- und miteinander.
  • Das in der Zusammenarbeit der Elemente spezifizierte Verhalten.
  • Zusammenfassung der Elemente und Beziehungen zu Subsystemen.
  • Die Wahl der Programmiersprache.
  • Die Wahl des Frameworks.
  • Die Suche nach einer funktionalen dem Projekt angemessenen Datenbank.
  • Die Entscheidung für das richtige Team.

Die Softwarearchitektur abseits des Programmierens

Die Softwarearchitektur selbst fällt nicht rein in die Disziplin der IT, sondern ist in der Schnittstelle zwischen Programmieren und Projektmanagement anzusiedeln. Folgerichtig stellen sich auch hier interessante interdisziplinäre Fragen.

Sollte die Definition der Softwarearchitektur beispielsweise ausschließlich die Bedürfnisse der Developer berücksichtigen und den Coding-Prozess optimieren oder sollte die Programmierung als Teil eines Services verstanden werden? In letzterem Falle wäre es auch Aufgabe der Architektur, die Effizienz des Entwicklungsprozesses zu gewährleisten (beispielsweise durch die geplante Nutzung von Libraries) oder aber die Wartbarkeit der Software zu garantieren.

Die Erarbeitung einer Softwarearchitektur und der darin festgelegten Strukturen ist stark projektabhängig und ist nicht einfach als Schema anzugeben. Bereits die Suche nach den relevanten Strukturen zu Beginn eines Projektes, ist eine spannende Herausforderung für das Management eines Softwareprojektes.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Spätere Varianten der Softwarearchitektur

Auch wenn die Softwarearchitektur in der Regel vor allem in der Entwurfsphase eingesetzt wird, wird der Grundriss von Development-Teams und dem Projektmanagement auch tiefer im Softwareprojekt weiterhin genutzt, um feinere Strukturen darzustellen.

Dabei sind auch die verschiedenen Softwarearchitekturen durchaus hierarchisch zu verstehen. So kann eine Grobarchitektur eine Software auf Komponentenebene abstrahiert abbilden, diese lässt sich in einem Feinentwurf klassenhierarchisch, in Modulararchitektur oder in Quelltext detailliert ausarbeiten.

Entwürfe, Planung und Effizienz

Qualität und Langlebigkeit in Softwareprojekten basieren auf taktischen Entscheidungen in Coding und Design und einer wohl durchdachten strategischen Ausrichtung basierend auf Anforderungsanalysen, Spezifikationskatalogen und Softwarearchitektur. Besonders die grundlegende Planung ist es, die Softwareprozesse einfacher und effizienter gestalten kann und die die wichtigsten Funktionen klärt.

Hier sind neben technischen auch organisatorische Aspekte zu berücksichtigen wie die Organisation, Teamplanung, Risikoanalyse oder Qualitätssicherung, Ein Zitat Eoin Woods (CTO bei Endava) fasst die Relevanz der Softwarearchitektur ganz charmant zusammen: „Architektur ist die Menge der Entwurfsentscheidungen, die – wenn falsch getroffen – ein Projekt scheitern lassen.“

(ID:47951610)