Software-Entwurf Softwarearchitektur bewerten und pflegen

Autor / Redakteur: Seth Hallem* / Martina Hafner

Eine tadellose und gepflegte Anwendungsarchitektur gilt heute als Schlüssel für eine ökonomische Softwareentwicklung. Dieser Artikel erklärt Grundlegendes zu Software-Architekturen, ihren Fallstricken, Metriken und Tools.

Anbieter zum Thema

Die Software-Architektur ist die Blaupause oder der Bauplan für die Software. Sie stellt die diversen Teile des Softwaresystems dar und schreibt deren Interaktion vor. In der Architektur ist enthalten, wie Teile des Codes voneinander abhängen, und wie Daten durch das System fließen und gespeichert werden. Sie kann auch bestimmen, auf welche Weise der Code durch eine oder viele Design-Patterns implementiert werden sollte.

Ein anderer Ansatz definiert die Architektur als die Art, in der die Codelines, die die Codebasis bilden, in übergeordneten Abstraktionsebenen wie Funktionen, Klassen, Dateien und Packages organisiert sind. Dies ermöglicht die visuelle Darstellung von Code und das Nachvollziehen der abhängigen Beziehungen zwischen diskreten Codekomponenten. Verstehen Entwickler das beabsichtigte Design, können sie es während der Entwicklung des Codes einhalten und damit ungewollte Abhängigkeiten oder Spaghetti-Code vermeiden.

Typische Probleme mit Software-Architekturen

Eine Softwarearchitektur kann nicht einfach zu Beginn entwickelt und dann nicht mehr beachtet werden. Sie betrifft den gesamten Entwicklungszyklus, um die Gesamtintegrität einer gegebenen Codebasis sicherzustellen, Komponenten wieder zu verwenden und eine durchgängige Struktur in großen Softwaresystemen durchzusetzen. Die Architektur entwickelt sich parallel zum Code weiter. Oft geht das Systemdesign während des Anwendungs-Lebenszykluses verloren. Zwar stecken Softwarearchitekten viel Aufwand in das Design eines Softwaresystems vor seiner Implementierung. Aber die Architektur wird nicht automatisch zum lebendigen Teil des Softwaresystems.

20066200

So gerät die ursprüngliche Architektur in Vergessenheit. Noch schlimmer: Sie wird mit der Weiterentwicklung des Codes äußerst komplex und fehleranfällig. Zudem lassen sich neue Features nur schwer liefern, wenn der zugrunde liegende Code mit Abhängigkeiten übersät ist, die unvorhersagbares Verhalten auslösenkönnen.

20066220

Die größte Herausforderung, die Architektur durchzusetzen und zu analysieren, ist ihre Einsehbarkeit. Ähnlich wie Architekten, die ein Gebäude planen, brauchen Softwarearchitekten die Möglichkeit, ihre komplexe Anwendung auf Codelevel zu visualisieren, wenn sie die Abhängigkeiten zwischen den Code-Blöcken verstehen und optimieren möchten. Auch benötigen Entwicklungsteams eine Möglichkeit, Kontrolle über die Codebasen wiederzuerlangen, die über mehrere Iterationen entstanden und von der beabsichtigten Architektur abgewichen sind.

Gefährliche Software-Abhängigkeiten

Abhängigkeiten zwischen Softwarekomponenten gefährden die Gesamtqualität und Aufrechterhaltung eines Software-Systems. Dabei lassen sich folgende Typen nennen:

Zyklische Abhängigkeiten:

  • Zwei oder mehr Komponenten eines Softwaresystems sind voneinander abhängig.
  • Entwickler können Komponenten nicht extrahieren und erneut in anderen Teilen des Systems einsetzen.

Aufwärts gerichtete Abhängigkeiten:

  • tritt auf, wenn eine Softwarekomponente aus einem niedrigen Systemlevel von einer Komponente aus einem höheren Level abhängig ist.

(ID:331782)