Software Architekturprüfung in Java

Architekturprüfung und Softwarequalität

Softwarearchitektur bildet die wichtigsten Entscheidungen in Form von Strukturen, Komponenten, Schnittstellen und Beziehungen in der Software ab. Sie beschreibt im Weiteren die Umsetzung der qualitativen Anforderungen in die Software. Softwarearchitektur ist aktuell in aller Munde und Unternehmen, welche in ihrer Software diese nötige Qualität nicht erreichen, merken die Konsequenzen sehr schnell. Die ersten Indikatoren dafür sind:

  • Die Umsetzung von neuen Features dauert sehr lange
  • Neue Features haben eine hohe Issue Rate
  • Bereits behobene Fehler kommen mit neuen Updates wieder ins System

Doch wie entstehen solche Probleme? Oftmals ist es so, dass die Softwareentwicklung mit der Umsetzung von fachlichen Anforderungen ausgelastet ist. Für die Umsetzung oder Prüfung der Softwarequalität bleibt wenig bis keine Zeit. Bleibt eine Prüfung der Abhängigkeiten und des Architekturmodells aus, verschlechtert sich die Qualität der Software zunehmend und technische Schulden bauen sich auf.
Dr. Carola Lilienthal beschreibt dies in Ihrem Buch „Langlebige Softwarearchitekturen“: Wenn eine kontinuierliche Prüfung des Modells fehlt, erfolgt automatisch eine Erosion der Architektur.

Wie messe ich Software-Qualität?

Heute erwarten die Auftraggeber, dass Software möglichst geringe Wartungs- und Erweiterungskosten verursacht. Die technischen Schulden müssen so gering wie möglich gehalten werden. Dies erreiche ich im ersten Schritt durch eine Messung. Oder anders formuliert:

You can’t control what you can’t measure.
Tom DeMarco

Sobald wir ein Messverfahren beispielsweise für ein Qualitätsmerkmal “Wartbarkeit” gefunden haben, können Maßnahmen zur Kontrolle durchgeführt werden.

 

Erosion und Wartung (aus LIL)

Bei der Evaluierung verschiedener Werkzeuge bin ich auf Sonargraph Architekt gestoßen. Das Tool benutzt eine einfache Sprache, um Architekturvorgabe zu erstellen. Diese Vorgaben werden dann zur Qualitäts-Messungen einer Java Codebasis benutzt.

Architekturdefinition mit dem Sonargraph Architect

Typische Architektur-Verletzungen

Im Laufe der zahlreichen Code-Reviews der letzten Jahre sind mir immer wieder 2 Arten der Verletzungen von Architekturrichtlinien aufgefallen.

Verletzung von technischen Architekturvorgaben

  • Verletzung der Abhängigkeiten eines Schichtenmodell
  • Große Klassen mit vielen Abhängigkeiten (“Gott Klassen”, Helper, Utility oder Manager)
  • Nicht Einhaltung von Abbildungsregeln wie Logik in den falschen Schichten

Im folgenden Bild sieht man wie Abhängigkeiten in der Software welche auf einem MVVM Muster basieren sollte, verletzt wurden.

Verletzung von technischen Architekturvorgaben

Diese Verletzungen können „relativ“ einfach behoben werden. “Einfach” bedeutet, diese können parallel zur aktuellen Entwicklung behoben werden.

Fachliche Verletzungen

Zum anderen und viel aufwändiger in der Behebung ist eine fehlende oder falsche fachliche Trennung von Komponenten in Module.

Die Abhängigkeiten von fachlichen auf unterschiedlichen Schichten benötigt ein tiefes fachliches Verständnis der Anwendung. Dies führt zu einer engen Kopplung und eine Auftrennung wird somit massiv erschwert.
In einer Produktentwicklung verhindert dies eine fachliche Komponentenbildung, getrennte Versionierung und vieles mehr.

Der Weg, der aus diesem Dilemma der technischen Schulden herausführt, ist die Architekturqualität rückwirkend zu verbessern. Dadurch kann das System Schritt für Schritt wieder in den Korridor geringer technischer Schulden zurückgebracht werden (s. rote aufsteigende Pfeile in Abbildung 1). Dieser Weg ist anstrengend und kostet Geld – ist aber eine sinnvolle Investition in die Zukunft. Schließlich sorgt man dafür, dass die Wartung in Zukunft weniger anstrengend und billiger wird. Bei Softwaresystemen, die einmal eine gute Architektur hatten, führt dieses Vorgehen in der Regel schnell zum Erfolg.

 


Quellen:
LIL … Langlebige Softwarearchitekturen von Carola Lilienthal ISBN: 978-3-86490-292-5
H2M … Sonargraph Architekt https://www.hello2morrow.com/

Seminar zum Thema

Alexander Simon / Alexander Simon

Alexander Simon ist seit 2003 Geschäftsführer und Leiter der Softwareentwicklung der emax-it Informationstechnologie GmbH. Sein Arbeitsumfeld umfasst WebCommerce Umgebungen und die Integration von heterogenen Systemlandschaften. Seine langjährige Erfahrung in der Softwareentwicklung liegt im JavaEE Bereich und Typescript Frontend Entwicklung. Zusätzlich fungiert er als IT Professional bei Virtualisierungsprojekten, Cloud-Lösungen und Appliance-Integration für PaaS, SaaS und XaaS. Er selbst lebt in Österreich und arbeitet für unterschiedliche Großkunden in ganz Europa und stellt sein Wissen regelmäßig als Fachautor, Berater und Coach zur Verfügung.

Schreibe einen Kommentar