Ein Softwarearchitekt strukturiert Software mithilfe von Bausteinen, definiert Schnittstellen und beschreibt das Zusammenspiel der Bausteine. Auch Querschnittsthemen wie Verteilung, Zugriffssicherheit und Datenhaltung müssen behandelt werden. Das Fällen von Entscheidungen gehört zum Alltag eines Softwarearchitekten. Viele Entscheidungen sind schwerwiegend und haben langfristige Auswirkungen. So hat die Struktur einer Software Einfluss darauf, ob bei steigender Nutzerzahl die Software auf mehrere Knoten verteilt werden kann. Die Auswahl von Programmiersprache, Plattformen und Frameworks schränkt möglicherweise die Systeme ein, auf denen das Softwaresystem zukünftig benutzt werden kann.
Viele Entscheidungen des Softwarearchitekten können nur mit hohen Kosten revidiert werden. Daher ist es wichtig, die Qualität von Softwarearchitekturen frühzeitig und regelmäßig zu prüfen.
Die Qualität von Softwarearchitekturen lässt sich mit quantitativen und qualitativen Methoden bewerten.
Quantitative Methoden nutzen Metriken, um riskanten Code zu finden. Eine wichtige Metrik ist die Kopplung. Sie gibt an, wie stark ein Baustein mit seiner Umgebung verbunden ist. Falls Wartbarkeit ein Architekturziel ist, soll die Kopplung gering sein. Denn je weniger Verbindungen es gibt, desto leichter lässt sich ein Baustein austauschen. Auch zur Überwachung von Architekturmustern lässt sich die Kopplung heranziehen, wie das Beispiel 3-Schichten-Architektur zeigt: Eine Regel für dieses Architekturmuster besagt, dass eine obere Schicht nur mit der direkt darunterliegenden Schicht kommunizieren darf - ein Überspringen ist verboten. Statische Codeanalysewerkzeuge können anhand der Kopplung solche Regelverletzungen aufdecken.
Weitere Metriken sind Kohäsion, Größe (Anzahl von Codezeilen oder Kommentaren), Komplexität, Abstraktheit, Instabilität und Distanz.
Qualitative Methoden zeigen, ob nichtfunktionale Anforderungen ausreichend umgesetzt wurden. Die bekannteste ist die Architekturbewertungsmethode ATAM (Architecture Tradeoff Analysis Method). Auf Basis von Geschäfts- und Projektzielen definieren die Stakeholder Szenarien für nichtfunktionale Anforderungen (Effizienz, Zuverlässigkeit, Benutzbarkeit, Änderbarkeit, Übertragbarkeit, …). Ein Bewertungsteam prüft anschließend, ob die aktuelle Architektur die Anforderungen erfüllt. Als Ergebnis erhält man Risiken, Nicht-Risiken, kritische Punkte (müssen laufend beobachtet werden, da leichte Änderungen große Auswirkungen haben) und Wechselwirkungen (beispielsweise wirkt sich eine höhere Wartbarkeit oft negativ auf die Performanz aus). Mit Wachstums- und Extremszenarien wirft man einen Blick auf eine mögliche Zukunft und ermittelt die Grenzen der aktuellen Architektur.
Die Bewertung der Qualität von Softwarearchitekturen gehört zu den kostengünstigsten und effizientesten Qualitätssicherungsmaßnahmen. Für quantitative Methoden sind lediglich Lizenzkosten für eine auf Architekturmetriken spezialisiertes statisches Codeanalysewerkzeug notwendig. Eingebunden in Continuous Integration profitiert man ständig von aktuellen Messwerten. Für die qualitative Architekturbewertung mit ATAM sind 2 Workshop-Tage einzuplanen. Sie soll regelmäßig (z. B. jährlich oder beim Start einer großen Entwicklungsiteration) durchgeführt werden.