Modellgetriebene Architekturvalidierung mit Eclipse & Co.

Architektur/Methoden  –  Kommentare

Eine Architekturspezifikation ist nicht in allen Projekten vorhanden oder wird im Verlauf von Projekten oft unbemerkt verletzt. Ein modellgetriebener Ansatz zur Architekturverifikation kann sowohl für Entwickler als auch für Architekten ein entscheidendes Werkzeug zur Gewährleistung von Softwarequalität sein. Unter Zuhilfenahme einer Toolkette zeigt die Integration in einen Gesamtprozess die Vorteile des Vorgehens auf.

Gutes Architektur-Management ist entscheidend für den Erfolg komplexer Softwareprojekte. Erscheint dem Entwicklungsteam der Anwendungsfall zunächst überschaubar, so wachsen in der Regel Komplexität und Kopplungsgrad der Software im Laufe der Entwicklung. Wenn eine initiale Architekturspezifikation fehlt, implementieren Entwickler häufig falsche Abhängigkeiten zwischen Systemkomponenten. Das erschwert Änderungen erheblich, da mit hoher Wahrscheinlichkeit unerwünschte Seiteneffekte auftreten.

Umgekehrt ist das Vorhandensein einer durchdachten Soll-Architektur kein Garant für fehlerfreie und einfach zu wartende Software. Selbst bei modellgetriebener Softwareentwicklung (MDSD), die mit einer Architekturdefinition startet, können beabsichtigte und tatsächliche Architektur während der Entwicklung auseinander klaffen. Gerade manuelle Anteile oder unbedachte lokale Änderungen der Templates können die Gesamtarchitektur negativ beeinflussen. Das Auseinanderdriften von Soll- und Ist-Architektur heißt "Erosion" von Software. Weitere Gründe hierfür sind nach [1] zum Beispiel:

  • Je komplexer die Software, desto schwieriger sind Abweichungen von der geplanten Architektur zu erkennen.
  • Mit wachsender Entwicklerzahl steigt der Aufwand, das gesamte Team über Architekturvorgaben zu unterrichten.
  • Es gibt praktisch keine Projekte, die frei von "Dirty Code" sind. Fehlt dem Entwickler die Zeit, den unter Termindruck produzierten Code wieder aufzuräumen, schleichen sich Fehler ein, die erfahrungsgemäß schnell in Vergessenheit geraten können.
Drei-Schichten-Architektur aus dem Java-EE-Umfeld (Abb. 1)

Um solchen negativen Entwicklungen eines Sofwareprojekts entgegenzuwirken, kann man sprichwörtlich "unter" dem Entwicklungsteam ein Sicherheitsnetz aus Architekturverifikationen aufspannen. Verletzen Entwickler die definierte Architektur, werden diese Verstöße aufgefangen und ihnen gemeldet. Auf diese Weise sind schleichende Erosionen der Software zu verhindern. Voraussetzung dieses Ansatzes ist eine initiale Architekturspezifikation. Abbildung 1 zeigt eine typische Beispielarchitektur aus dem Java-EE-Umfeld.

Es handelt sich um eine einfache Drei-Schichten-Architektur mit definierten Schnittstellen zwischen den einzelnen Komponenten sowie Schichten. Anhand der Zielarchitektur sei im Folgenden ein Eclipse-Plug-in vorgestellt, dass modellgetriebene Architekturverfikation durchführt. Die Vorteile der Umsetzung lassen sich wie folgt zusammenfassen:

  • Mit einem grafischen Editor können Softwarearchitekten die beabsichtigte Struktur ihrer Projekte komfortabel spezifizieren. Die initiale Architekturerstellung sowie die projektbegleitende Verifikation, zum Beispiel durch Architektur-Audits, finden durch diesen Unterstützung.
  • Die grafische Darstellung erleichtert zudem die Designentscheidungen zwischen Architekten und Entwicklern.
  • Entwickler können sowohl ihren Code als auch – bei MDSD-Projekten – Generator-Templates indirekt über den Code auf hoher Abstraktionsebene anhand von Spezifikationen prüfen und somit Architekturverletzungen entdecken.