Was ist Softwarearchitektur?

Erfahre hier, was hinter dem Begriff steckt und wie der Berufsalltag einer Softwarearchitektin aussieht.

April 10, 2024

Headerbild vom Artikel

In diesem kurzen Artikel erklärt euch Mina, was alles zum Feld der Softwarearchitektur gehört und wie das Berufsbild einer Softwarearchitektin aussieht. Grundsätzlich geht es dabei um einen essentiellen Grundbaustein bei Softwareprojekten, welcher zukünftige Aktivitäten wie das Deployment, Integrationen oder die Wartbarkeit beeinflusst.

Software und Architektur - Passt das zusammen?

Wie bei vielen großen Konzepten in der IT, gibt es auch bei dem Begriff “Softwarearchitektur” keine allgemeingültige Definition. Grundsätzlich geht es um die Strukturierung der Systeme, sowie die Beziehungen zwischen den einzelnen Komponenten untereinander. Man bezeichnet die Architektur eines Softwaresystems auch als Summe aller Entscheidungen (sogenannten Design Decisions), auf die sich das Entwicklungsteam gemeinsam mit allen relevanten Parteien einigt, um eine Software zu entwickeln. Hierbei umfassen die Entscheidungen verschiedenste Bereiche der Software, wie die grundlegende Infrastruktur, in welche Komponenten die Software unterteilt wird, wie einzelne Elemente untereinander kommunizieren oder auch was für Qualitätsziele erreicht werden sollen. Um eine Architektur für ein kommendes Softwareprodukt festzulegen, kommen daher viele verschiedene Abteilungen zusammen und müssen viele Entscheidungen treffen, damit das Projekt ohne Probleme realisiert werden kann.

Softwarearchitektur ist dabei ein Feld, welches häufig bei der Entwicklung übersehen oder nur stiefmütterlich behandelt wird. Es zeigt sich jedoch, dass ad hoc Entscheidungen und besonders nicht-dokumentierte Strukturen ein großer Blocker für Projekte sein können, was viele hohe Kosten und Restrukturierungen verursachen kann. Dies tritt häufig dann auf, wenn nach dem Developmentstart noch weitere Anforderungen an die Software aufkommen, für welche existierende Strukturen angepasst werden müssen und neue Abhängigkeiten geschaffen werden. Diese Herausforderung wird bei einem Beispiel aus der Architektur besonders deutlich: Wenn man sich nach Start der Bauphase eines Gebäudes entscheidet, dass dieses auch einen Keller haben soll, kann dies nur mit hohem Aufwand und Kosten angepasst werden und gegebenenfalls hat diese Änderung auch Auswirkungen auf Rohrleitungen und verwendete Materialien. Entsprechend ist es besonders wichtig, vorausschauend zu planen und Entscheidungen sowie Abhängigkeiten gut zu dokumentieren, um eine gute Grundlage für ein erfolgreiches Projekt zu schaffen.

Was sind Kernelemente im Bereich Softwarearchitektur?

Kernbegriffe, die häufig im Kontext mit Softwarearchitektur fallen sind: Komponenten, Patterns und Dokumentation, welche im folgenden Teil anschaulich erklärt werden. Komponenten, oder auch Bausteine genannt, sind häufig in sich abgeschlossene Teile der Software, die man definiert, um die Entwicklung zu strukturieren und Abhängigkeiten zwischen den einzelnen Elementen aufzuzeigen. Das hilft dabei, um sich innerhalb des Teams klar zu sein, welche verschiedenen Funktionalitäten einzelne Teile berücksichtigen. Ziel ist es hierbei häufig, wenig Redundanzen im Code zu haben (keine Wiederholungen in den Funktionalitäten) und gleichzeitig eine lose Kopplung der Komponenten zu erzielen. Letzteres bedeutet, dass man den Code so aufbaut, dass man sich an Standards hält und wenig eins zu eins Beziehungen zwischen Elementen schafft und stattdessen jedes Element die Chance hat, mit jedem zu kommunizieren und Daten auszutauschen. Patterns sind geläufige Strategien, um auf bestimmte Problematiken zu reagieren, die sich für häufig auftretende Anwendungsfälle in der Praxis etabliert haben. Man kann sie als eine klassische Bauanleitung sehen, die man befolgt, um ohne Schwierigkeiten bestimmte Qualitätsziele, wie Usability, sowie weitre Funktionalitäten zu erreichen. Ein Beispiel hierzu ist die sogenannte dreischichtige Architektur, in welcher die Software in 3 Schichten aufgeteilt wird, um wartbarer ihre Funktionen bereitzustellen. Die unterste Schicht ist dabei die Datenschicht, in der sich die Rohdaten befinden (bspw. Temperatur der einzelnen Tage im Mai). Die oberste Schicht entgegen ist die Benutzeransicht, auf welche die Nutzer:innen zugreifen und beispielsweise Analysen in einem Dashboard einsehen können. Dazwischen befindet sich die Logikschicht, welche die Rohdaten in interpretierbare Datenpunkte umwandelt (bspw. Durchschnittstemperatur im Mai), sodass die Nutzersicht einfacher kreiert werden kann. Dokumentation ist eine der Kern Thematiken in der Softwarearchitektur und sollte auf keinen Fall unberücksichtigt bleiben. Im Projektalltag wechseln häufig Ansprechpartner:innen, neue Teammitglieder kommen hinzu oder Diskussionen werden nach einiger Zeit, trotz Beschluss neu eröffnet. Daher ist es wichtig einen zentralen Ort aufzubauen, wo sich alle Informationen zu der Architektur wiederfinden und wo anschaulich und anhand von Diagrammen verdeutlicht wird, wie einzelne Komponenten aufgeteilt sind oder funktionieren.

Wie sieht der Alltag einer Softwarearchitektin aus?

Als Softwarearchitektin bist du hauptverantwortlich für die Grundstrukturen und insbesondere für alle nötigen Absprachen zwischen den Interessengruppen. Je nach Projektphase variiert der Anteil der unterschiedlichen Tätigkeiten, du kannst dabei vier Kerntätigkeiten voneinander abgrenzen:

Absprachen der Interessengruppen vorantreiben. Zu den Interessengruppen gehören in der Regel das Development Team, Endnutzer:innen, Product Owner / das Management, externe Unternehmen, oder andere interne Teams, wie die IT Administration. Hier ist es wichtig, dafür zu sorgen, dass alle Parteien über die Auswirkungen von Entscheidungen im Bilde sind sowie die nötigen Informationen teilen, um entsprechende Entscheidungen treffen zu können.

Softwarearchitektur dokumentieren. Als Softwarearchitektin ist man dafür zuständig, dass alle Entscheidungen und Inhalte der Architektur sauber und verständlich dokumentiert sind, um dem Team und weiteren Interessengruppen stetig zur Verfügung zu stehen. Häufig verwendet man hierfür ein internes Projekt Wiki, wie beispielsweise Confluence und visualisiert dabei verschiedene Bausteine und ihr Verhalten in unterschiedlichsten Diagrammen und weiteren Darstellungsmöglichkeiten.

Expertise teilen. Natürlich fungiert man als Softwarearchitektin als zentraler Anlaufpunkt für Nachfragen bezüglich der Architektur und sollte das Wissen in erste Machbarkeitsanalysen von Business Teams oder anderen Interessengruppen zur Verfügung stellen.

Entscheidungsgrundlagen schaffen. Die Ziele im Bereich der Softwarearchitektur sind häufig langfristig angelegt als klassische Projekt- oder Produktziele. Im Idealfall möchte man alle Software-Qualitätsziele (wie Wartbarkeit oder Ausbaufähigkeit) erreichen und gleichzeitig langfristig in stabile Strukturen investieren, die langfristig sinnvoll sind. Daher ist ein zentraler Aspekt in der Softwarearchitektur auch das Abwägen von Kosten und Nutzen in infrastrukturellen Entscheidungen.

Tipps für deinen Einstieg in die Softwareentwicklung findest du im Artikel von Laura, Auszubildende Fachinformatik.

Verpasse keinen Artikel mehr.