Die Architekturdefinition ist der Versuch, den durch die Systembeschreibung definierten Problemraum zu verstehen und durch Entscheidungen und Einschränkungen den Lösungsraum für das Produkt zu beschreiben. Qualitätsmerkmale der Software und nicht-funktionale Aspekte sind solche Einschränkungen. Wichtige weitere Einschränkungen ergeben sich aus Vorgaben und Richtlinien für Software-Projekte.

Die Architekturdefinition ist der Sammelbegriff für technischer Aspekte der Produktdokumentation. Sie besteht aus dem Architekturentwurf und der Beschreibung der Systemstruktur. Der Code des Produktinkrementes spielt hier eine wesentliche Rolle bei der exakten Spezifikation von Schnittstellen und Datenstrukturen. Zur Vermeidung von redundanten Beschreibungen werden Konfigurationen, Skripte, Schemadefinitionen und andere Beschreibungssprachen der Entwickler als gültige Dokumente betrachtet und in den Bausteinen im Wiki nur referenziert.

Die wichtigsten Kriterien für die Architekturdefinition sind:

Besonderes Augenmerk bei der Architekturdefinition liegt in der Darstellung der Ergebnisse der Realisierung. Im Code steckt die Wahrheit zum Produkt. Jede Beschreibung und Darstellung muss sich am Code orientieren. Abweichungen im Code gegenüber der Architekturdefinition sind entweder ein Hinweis auf einen Mangel in der Dokumentation oder eine technische Schuld im Code des Produktinkrementes. Sprachliche Richtigkeit (Orthographie, Grammatik, Ausdruck) der Texte wird in der Projektsprache vorausgesetzt.

Vollständigkeit ist ebenfalls ein Ziel, jedoch ohne Anspruch auf Vollständigkeit, was die Darstellung von technische Details des Systems betrifft. Nur durch die Einbeziehung von Code und Test wird eine Architekturdefinition vollständig.

Eine klare, übersichtliche Darstellung der Inhalte steigert den Wert der Architekturdefinition für das cross-funktionale Team. Eine richtige und vollständige Architekturdefinition nützt einem Entwickler nicht viel, wenn er die benötigten Informationen nur mühsam und umständlich mit erheblichem Zeitaufwand finden kann. Die Architekturdefinition im Wiki spiegelt auf übersichtliche Art und Weise Konzepte und die Struktur des Produktinkrementes.

Eine Architekturdefinition ist dann verständlich, wenn der Leser die richtig und vollständig und auch in übersichtlicher Form dargestellten Inhalte gut versteht. Die Beschreibungen orientieren sich dabei an der Sachkenntnis der Entwickler.

Es gibt eine Reihe von Ansätzen, die Software-Architektur quasi als wissenschaftliche Disziplin betrachten, Kernaufgaben des Architekturentwurfs definieren und Vorlagen für die Dokumentation zur Verfügung stellen. Ein sehr bekannter Ansatz ist ARC42. Ein anderer ist TOGAF.


Wikipedia: Softwarearchitektur

Eine Softwarearchitektur […] beschreibt die grundlegenden Komponenten und deren Zusammenspiel innerhalb eines Softwaresystems.


SWEBOK: Software Design

Design is defined as both “the process of defining the architecture, components, interfaces, and other characteristics of a system or component” and “the result of [that] process”. [..] In its strict sense, a software architecture is “the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both”. [..] An architectural style is “a specialization of element and relation types, together with a set of constraints on how they can be used”.