Meta-Architektur-Dokument
# Meta-Architektur-Dokument

Ein Meta-Architektur-Dokument (MAD) ist in der Softwareentwicklung ein projektübergreifendes, aber pragmatisches Dokument, das allgemeingültige, architekturrelevante Informationen zusammenfasst. Das Hauptziel des MAD ist die Auslagerung von allgemeingültigen Prinzipien aus den Projektspezifischen Architektur-Dokumenten (PADs) und so die Erhöhung der Wartbarkeit und Reduzierung des Aufwands für die Erstellung von Architektur-Dokumentation.

## Idee

Die Hauptidee des MAD ist die Auslagerung von allgemeingültigen, architekturrelevanten Informationen in ein projektübergreifendes, aber pragmatisches Dokument. Direktes Ziel: die Minimierung des Aufwands für die Dokumentation von Software. Das indirekte Ziel: Standardisierung von Architekturen und Erhöhung der Wartbarkeit. Ein MAD beschreibt möglichst knapp, redundanzfrei und pragmatisch eine unternehmensspezifische Referenzarchitektur mit Designvorgaben, Namenskonventionen und Code-Beispielen.

## Einleitung

Bei der Entwicklung von Software sind wiederkehrende Muster erkennbar. Neben allgemeinen Vorgehensweisen wie Trennung der Zuständigkeiten, Abstraktion oder Bildung von Schichten können Muster und insbesondere Architekturen weiter konkretisiert und effizient erfasst werden, indem ihre Anwendungskategorie berücksichtigt wird. So lassen sich im Falle einer verteilten Architektur noch zusätzliche Aspekte wie z. B. Transaktionalität, Granularität der Schnittstellen oder Verteilung festhalten. Für einen klassischen Fat Client können dagegen stärker Aspekte wie Objektorientierung, Object-Relational Mapping oder die Synchronisierung/Aktualisierung der Clients beleuchtet werden.

Die Muster, Ansätze, Namenskonventionen und Best Practices werden pro Anwendungskategorie (Beispiele: Fat Client, Thin Client, SOA, Smart Client, Rich Internet Application) und projektübergreifend dokumentiert. Eine unternehmensweite Standardisierung solcher Architekturen wäre zwar nützlich, lässt sich aber in der Praxis kaum umsetzen.

## Definition

In einem MAD werden allgemein gültige Konzepte, Architektur-, Designpatterns und Code-Beispiele einer Anwendungskategorie gesammelt. Die Unterteilung in Anwendungskategorien ist hilfreich, da dadurch die Architektur eines MADs exakter definiert werden kann. Ziel dieses Dokuments: Vermeidung von Redundanzen in projektspezifischen Dokumenten und Erhöhung der Wartbarkeit durch die Standardisierung des Designs und Codes. Die abstrakten Ideen eines MADs werden mit der Hilfe eines POCs oder einer einfachen Beispielanwendung demonstriert. Ein MAD wird im PAD konkretisiert und verfeinert.

## Beispiel

Ein MAD beschreibt im Kontext des EJB-3-Programmiermodells nicht nur die Kategorisierung der Jakarta EE-Muster, sondern auch ihre konkrete Anwendung (mit möglichst wenig Variationen) und erlaubte Kombination. Ein MAD ist praxisorientiert, sodass konkrete Vorgaben wie z. B. Namenskonventionen, Transaktionalität, Logging, Verteilung oder die Konfiguration des Buildprozesses usw. unmissverständlich und knapp beschrieben werden.

