# Softwarearchitekt

Softwarearchitekt ist eine Rolle in einem Softwareentwicklungsteam. Ein Softwarearchitekt entwirft den Aufbau von Softwaresystemen und trifft grundlegende Entscheidungen über das Zusammenspiel ihrer diversen Komponenten.
Ein Softwarearchitekt betrachtet das Softwaresystem von einer abstrakteren Ebene als ein Programmierer, welcher mit der Implementierung des vom Architekten erstellten Entwurfs betraut ist. Je nach Team können die Rollen des Softwarearchitekten und des Programmierers von verschiedenen oder auch von denselben Personen wahrgenommen werden.

## Aufgaben

Trotz Fehlens einer gemeinhin akzeptierten Definition der Rolle eines Softwarearchitekten kann davon ausgegangen werden, dass diese üblicherweise für einen Teil der Prozesse der Softwaretechnik zuständig sind:

### Planung

Bei der Planung von Softwareentwicklungsprojekten sind Architekten üblicherweise bei der Erstellung von Pflichtenheften, insbesondere der Findung, Beschreibung und Begründung der für die Umsetzung gewählten technischen Ansätze, beteiligt. Darüber hinaus werden Architekten oft federführend in der Aufwandsschätzung und Bestimmung des Vorgehensmodelles eingesetzt.

### Analyse

Bei der Analyse kommen Softwarearchitekten üblicherweise nur bei der etwaig notwendigen Erstellung von Mock-ups zum Einsatz. Diese dienen dazu bestimmte Techniken und Technologien der Architektur genauer kennenzulernen, um entscheiden zu können, inwieweit diese praktikabel sind.

### Entwurf

Softwarearchitekten sind üblicherweise für alle Prozesse des Entwurfes verantwortlich. Insbesondere verantworten sie die Erstellung, Beschreibung und Kommunikation der Softwarearchitektur, beispielsweise unter Verwendung der Unified Modeling Language und geeigneten Entwurfsmustern. Architekten haben meist noch ein Mitspracherecht bei der zu verwendenden Laufzeitumgebung, selten auch bei der Plattform. In den wenigsten Fällen befassen sich Architekten aber mit der Systemarchitektur der Hardware.

### Programmierung

Bei der Programmierung verantworten Architekten üblicherweise die korrekte Umsetzung der definierten Architektur sowie den geeigneten Einsatz von Programmbibliotheken und Frameworks. Zudem sind sie oft für den zu verwendenden Programmierstil verantwortlich und geben die zu verwendenden Tools für die Entwicklung wie IDE, Build-Management-Tool, Versionsverwaltungs-Tool vor, bzw. haben bei deren Auswahl ein bedeutendes Mitspracherecht. Dabei sind die Softwarearchitekten für die Umsetzbarkeit und nicht für die Umsetzung selbst verantwortlich.

### Test

Im Rahmen des Tests verantworten Architekten meist den Modultest und seltener auch den Integrationstest. System- und Akzeptanztests unterstützen sie zumeist nur durch Entwurf und Umsetzung von Testtreibern und -Schnittstellen.

### Unterstützungsprozesse

Bei den Unterstützungsprozessen der Softwaretechnik sind Architekten meist nur für einzelne technische Aufgaben und nie für ganze Prozesse verantwortlich. Meistens sind Architekten für die Statische Code-Analyse, die Software- und Technische Dokumentation sowie das Betriebshandbuch verantwortlich.

## Arten von Softwarearchitekten

Enterprise-Architekten treffen organisationsweite, meist Software-System-übergreifende Software-Entscheidungen. Diese Entscheidungen betreffen meist mehrere Entwicklungsteams bzw. Standorte. Beispiele für solche Entscheidungen sind:
* Einführung von systemübergreifenden Architekturen wie Serviceorientierte Architektur
* Entscheidung für den Einsatz von systemübergreifenden Entwicklungsumgebungen oder Frameworks
Applikationsarchitekten treffen architektonische Entscheidungen für eine bestimmte Applikation und somit genau ein Entwicklungsteam. Beispiele für solche Entscheidungen sind:
* Entscheidung für einen bestimmten OR-Mapper (so diese Entscheidung nicht global vom Enterprise-Architekten vorgegeben ist)
* Definition der Applikationsarchitektur
Ähnliche Stellenbeschreibungen sind im Umlauf, so beispielsweise:
* Solutions-Architekt, beschreibt meist die Rolle einer Person, die eine bestimmte Business-Lösung über mehrere Softwaresysteme hinweg betreut.
* System-Architekt, wird meist als Synonym für Applikationsarchitekt verwendet.
* Systems Architect (Plural), wird meist als Synonym für Enterprise Architekt oder Solutions Architekt verwendet.
Die folgende Tabelle zeigt die meisten der Unterschiede zwischen den unterschiedlichen Arten von Softwarearchitekten:
| Art | Strategische Ausrichtung | System-Interaktionen | Kommunikation | Design |
| Enterprise-Architekt | projektübergreifende Architekturen | hoch abstrakt | organisationsweit | wenn, dann High-level-Design |
| Solutions-Architekt | Architekturen für eine Lösung | detailliert | über mehrere Teams | grobes bis detailliertes Design |
| Applikationsarchitekt | Komponenten, Wiederverwendung, Wartbarkeit | auf eine Applikation fokussiert | innerhalb eines Projektes | detailliertes Design |
In der Praxis sind die Bereiche der unterschiedlichen Architekten oft unklar getrennt. Daher gibt es häufig unterschiedliche Auffassungen bezüglich der Ziele der Architekten.

## Ausbildung

Wegen des hohen Abstraktionsgrads ist die Regelvoraussetzung für den Berufseinstieg als Softwarearchitekt ein absolviertes Informatikstudium mit dem Schwerpunkt Softwaretechnik bzw. Softwarearchitektur an einer Universität oder Fachhochschule. Auch ein Studium in einem ingenieur- bzw. naturwissenschaftlichen Studiengang bietet bei entsprechender Studienrichtung gute Einstiegsmöglichkeiten.
Auch Berufsakademien, teils sogar Berufsfachschulen, Fachschulen für Datenverarbeitung und Organisation oder Berufskollege, die informationstechnische Ausbildungsberufe z. B. zum Fachinformatiker für Anwendungsentwicklung anbieten, treten in der Werbung damit auf, Softwarearchitekten zu qualifizieren. Eine solche Ausbildung alleine befähigt jedoch noch nicht zur Ausübung des Berufsbildes, sondern erfordert zumindest jahre- bis jahrzehntelange Praxiserfahrung, bevor damit die Rolle des Softwarearchitekten in größeren Entwicklungsprojekten wahrgenommen werden kann.

## Beschränkungen

Die Tätigkeit als Softwarearchitekt umschreibt in der Regel die Berufliche Funktion von Mitarbeitern in Projekten und Unternehmen.
In Deutschland ist „Softwarearchitekt“ keine Berufsbezeichnung. Gemäß Landesarchitektengesetzen darf den Titel Architekt, sprachliche Abwandlungen oder fremdsprachliche Übersetzungen („Architect“) davon nur führen, wer in die Architektenliste einer Architektenkammer eingetragen ist, ähnliches gilt in Österreich, wo er Ziviltechnikern (Paragraph 292 der österreichischen Zivilprozessordnung) vorbehalten ist.
In der Schweiz ist die Verwendung des Begriffs „Softwarearchitekt“ keinen Restriktionen unterworfen und von keiner Berufsordnung oder Gesetzgebung geschützt.

## Metapher

Der Begriff Softwarearchitekt wurde Anfang der 2000er Jahre auch außerhalb der IT-Welt bekannt, als sich Bill Gates, damals President und CEO von Microsoft, auf die Rolle Chief Software Architect zurückzog. Dieser Titel reflektierte seine neue Aufgabe als Überwacher und Berater für viele Softwareentwicklungsprojekte bei Microsoft, Aufgaben, die sonst einem Chief Technical Officer zufallen.