Während mit Requirements Engineering und Spezifikation beschreibende Kernaktivitäten im Vordergrund standen, sind die Aktivitäten der Architektur (auch: Design) konstruktive Aktivitäten: Hier werden aufbauend auf den ermittelten fachlichen Anforderungen und der technischen Spezifikation erstmals konkrete Festlegungen getroffen, wie das zu erstellende System diese Anforderungen erfüllt.
In der Literatur und der praktischen Verwendung der Begriffe Architektur und Design hat sich bis heute keine allgemein anerkannte Definition oder Begriffsbildung durchgesetzt. Als Konsequenz wird insbesondere der Begriff "Architektur" je nach Organisation, persönlicher Prägung und Vorliebe anders verwendet. So kann der Begriff der IT-Architektur eingesetzt werden, um - ähnlich dem klassischen Architekturbegriff - folgende Dinge zu bezeichnen:
Sowohl Architektur als auch Design sind Aktivitäten, in denen entschieden wird, wie das zukünftige System strukturiert und
aufgebaut ist. Oft wird mit Architektur auch der "Grobentwurf" eines Softwaresystems bezeichnet und mit Design der "Feinentwurf". Verglichen
mit der Architektur eines Hauses bedeutet das, dass mit der Architektur die Grundstruktur, Form, Art des Daches, Anzahl der Zimmer sowie
Anordnung und Form der Fenster festgelegt wird. Wie die Wasserhähne aussehen, welche Farbe die Fliesenfugen haben und in welche
Richtung sich welche Tür öffnet, wird im Design festgelegt. Allerdings wird auch diese Bezeichnung nicht einheitlich verwendet.
Hier wird der Begriff Architektur für alle Festlegungen und Entscheidungen über das System verwendet, die vor der Implementierung
getroffen werden. Also als Sammelbegriff für alles, was an anderer Stelle auch als Entwurf, Design, Grobentwurf oder Feinentwurf
bezeichnet wird.
Die Einbettung der Aktivitäten in die Architektur ist in untenstehender Abbildung dargestellt: Die Architektur bezeichnet die
Überführung der Menge aller Anforderungen an ein System (den Problemraum) in ein konkretes, ausführbares Softwaresystem
(den Lösungsraum).

Beginnend mit dem RE wird analysiert und anschließend spezifiziert, was vom System verlangt wird. Bei der Implementierung wird die Menge von Bedingungen und Vorgaben an ein konkretes System in ausführbaren Programmcode übersetzt. Zwischen RE/Spezifikation und Implementierung ist die Architektur angesiedelt. Der IT-Architekt muss die Bedürfnisse der Stakeholder analysieren und verstehen, gegeneinander abwägen und durch eine Menge von Entscheidungen und Gestaltungsaktivitäten eine Architekturbeschreibung entwickeln. Die Architekturbeschreibung (auch: Architekturdefinition) stellt die Verbindung von Lösungsraum und Problemraum dar. Sie dient dem Entwicklerteam als Vorlage und Rahmenwerk für die Aktivitäten zur Implementierung.
Die Aktivitäten der Architekturerstellung, also der Prozess, der zu einer Architekturbeschreibung führt, lassen sich in drei Kernaktivitäten einteilen:
Das Ergebnis der Gestaltungsaktivitäten eines IT-Architekten ist die Architekturbeschreibung. Die eigentliche Architektur des Systems manifestiert sich jedoch erst während der Implementierung des Systems. Jedes System hat eine Architektur, auch wenn kein Softwarearchitekt eine Architekturbeschreibung erstellt hat. Architektur ist also systemimmanent. Man kann auch ein Haus bauen, ohne einen Architekten hinzuzuziehen. Das fertige Haus hat dann ebenfalls eine "Architektur", auch wenn diese vielleicht nicht sehr schön oder praktisch ist. Dieses Bild ist auf Softwaresysteme übertragbar. Grundsätzlich kann ein System auch ohne Architekt implementiert werden. Jedoch ist die Gefahr - wie beim Hausbau -, dass wichtige Elemente vergessen oder ungeschickt platziert werden oder die Grundstruktur des Systems den tatsächlichen Belastungen - zum Beispiel durch hohe Nutzerzahlen - nicht standhält, groß.
IT-Architekturen können auf unterschiedliche Weise dokumentiert werden. Für erste Ideen werden oft einfache Skizzen und
PowerPoint-Grafiken erstellt. Diese können zwar schnell angefertigt werden, sind jedoch ohne festgelegte Semantik und lassen einen oft
gefährlich großen Interpretationsspielraum zu. Für Personen, die am Erstellungsprozess nicht beteiligt sind, ist diese Art der
Darstellung in der Regel nicht zu verstehen. Daher sollten Architekturbeschreibungen immer mit strukturierten Softwaremodellen (z. B. UML)
dokumentiert werden. Deren Notationselemente haben eine festgelegte Bedeutung (Semantik) und sind weltweit verbreitet.
Darüber hinaus gibt es auch spezifische Architekturbeschreibungssprachen (ADL), die in der Forschung zu Softwarearchitekturen
eingesetzt werden. Diese ADLs zeichnen sich daher zwar durch eine formal definierte Semantik ihrer Notationselemente aus, sind jedoch
für praktische Zwecke oft nicht geeignet.
Eine weitere Möglichkeit Architekturentscheidungen zu dokumentieren bietet direkt der Programmcode. Auf diese Weise ist die
Architekturbeschreibung immer aktuell und konsistent zum erzeugten Programmcode. Jedoch erlaubt diese Dokumentationsform keinen einfachen
Überblick mehr und sie ist nur von Programmierexperten lesbar.
Eine große Herausforderung im Umgang mit Architekturbeschreibungen stellt die Divergenz der dokumentierten Design-Entscheidungen in Form der Architekturbeschreibung und der tatsächlichen Systemarchitektur dar. Softwareentwickler sind weder physikalisch noch logisch an die Vorgaben des Architekten gebunden. Es gibt bei der Programmierung grundsätzlich keine Einschränkungen, sodass jederzeit die Ausdrucksstärke einer Programmiersprache durch die Entwickler ausgenutzt weden kann - auch wenn sie den ursprünglichen Architekturvorgaben widersprechen.
Grundlegend lassen sich zwei verschiedene Einsatzmöglichkeiten von Architekturdokumentationen unterscheiden:
A priori Dokumentation, also die Erstellung einer Architekturbeschreibung vor der Umsetzung des Systems auf Grundlage von Designaktivitäten und -entscheidungen. In diesem Fall wird die Architekturdokumentation verwendet, um Vereinbarungen über die Gestaltung des Systems zu explizieren und zu dokumentieren. Sie legt den Rahmen fest, in dem die Entwicklerteams eigenständige Entscheidungen treffen dürfen, und damit den Soll-Zustand der Softwarearchitektur. Die a priori Dokumentation bildet auch den Ausgangspunkt für die Validierung der Eignung einer Architektur zur Unterstützung geforderter Qualitätseigenschaften und Randbedingungen.
Ex post Dokumentation, also die Erstellung der Architekturbeschreibung nach der Umsetzung des Systems auf Grundlage des implementierten Programmcodes. Sie dient dem Darstellen und Dokumentieren der tatsächlich implementierten Architektur. Eine so erzeugte Architekturbeschreibung stellt den Ist-Zustand der Softwarearchitektur dar. Sie kann entweder für den Vergleich der geplanten Architektur und der implementierten Architektur oder als Ausgangspunkt für die Architekturbewertung hinsichtlich der Einhaltung von Normen, Richtlinien oder Gesetzen genutzt werden.
Grundsätzlich lassen sich im Software Engineering Architekturen auf verschiedenen Ebenen erstellen. Von der Übersicht über fachliche Konzepte und Zusammenhänge mit einer Facharchitektur über die Darstellung von Struktur und Aufbau einzelner Softwaresysteme mit einer Softwarearchitektur bis hin zur Darstellung der gesamten Unternehmens-IT in einer IT-Unternehmensarchitektur gibt es verschiedene IT-Architekturen. Grundsätzlich kann für jeden relevanten Teilbereich beziehungsweise jede Spezialsicht auf ein Softwaresystem eine spezifische Architektur erstellt werden, zum Beispiel eine Sicherheitsarchitektur oder eine Kommunikationsarchitektur. In nachstehender Tabelle werden die verschiedenen Ebenen der IT-Architekturen (Facharchitektur, Softwarearchitektur und IT-Unternehmensarchitektur) gegenübergestellt.
| Gegenüberstellung verschiedener Ebenen von IT-Architekturen | |||
|---|---|---|---|
| Facharchitektur | Softwarearchitektur | IT-Unternehmensarchitektur | |
| Gegenstand | Dokumentation von fachlichen Elementen, Akteuren und Abläufen sowie deren Abhängigkeiten und Beziehungen zueinander |
|
|
| Elemente | Fachliche Entitäten (Daten, Geschäftsobjekte), Anwendungen (Services), Akteure, Geschäftsprozesse | Technische Entitäten (Daten, Geschäftsobjekte, Schnittstellen, Systeme, Komponenten), Anwendungen (Webservices, Subsysteme), Technische Abläufe innerhalb von Systemen, Frameworks | Anwendungen, Fachliche Entitäten, Geschäftsprozesse, IT-Infrastruktur (Rechenzentrum, Netze), Prozesse und Gremien des Architekturmanagements |
| Einsatzgebiet | Projektorganisation, Requirements Engineering, Schulung, Dokumentation | Architektur, Design, Implementierung und Dokumentation von SW-Systemen, inklusive Reengineerin und Weiterentwicklung | Ausrichtung der IT an Unternehmensziele, Management des IT-Anwendungsportfolios, Vorgabe von Rahmenbedingungen zur Erstellung/Beschaffung von Softwaresystemen |
| Beschreibungs- mittel |
Box-and-Lines Diagramme, geschäftsprozessuale Beschreibungen (BPMN), ggf. UML | UML (Klassen- und Komponenten-, Aktivitäts-, Sequenzdiagramme), Box-and-Lines Diagramme, ggf. ADL | Box-and-Lines Diagramme, Prozesslandkarten, Geschäftsprozesse, Anwendungshandbuch |