Welche Bedeutung hat die System- und
Software-Architektur in einem objektorientierten Softwareprojekt?
Um Systeme und Komponenten stabil entwickeln zu
können, ist eine früh überprüfbare und für mehrere Anwendungssysteme
nutzbare System- und Software-Architektur anzustreben. Die Architektur ist der
Koordinationsblock für eine sichere Entwicklung und die Integration von
aufeinander abgestimmten Komponenten und Systemen. Die Architektur lebt im Code,
in ergänzenden Entwicklungsdokumenten und in Objektmodellen.
Wie die Entwicklung einer objektorientierten
Anwendung erfolgt auch die Entwicklung der Architektur nach einem iterativen und
inkrementellen objektorientierten Vorgehensmodell. Prototypen der Architektur
werden früh entwickelt, so dass die Risiken der eingesetzten Technologien früh
erkannt und beherrscht werden.
Bei der Entwicklung der Architektur ist von
Anfang an auf die Performance zu achten. Die Objektkommunikation und die
Objektverteilungsmechanismen sind für das Antwortzeitverhalten und die
Partitionierbarkeit von Objekten kritisch.
Darüber hinaus sollte die Architektur die
explizite Formulierung der fachlichen Anwendungslogik, unabhängig von der
Präsentation und der Datenhaltung ermöglichen. Damit wird die Basis für
wiederverwendbare fachliche Komponenten und die leichte Anpassbarkeit der
Systeme gesetzt.
Ein leistungsfähiges Architekturmodell erreicht
man durch die Trennung folgender Schichten: grafische Interaktionslogik,
Anwendungslogik im Bereichsmodell, Persistenzmechanismen zur Abbildung von
Objekten auf relationale Datenbanken, Mechanismen zur Objektverteilung und zur
Kommunikation, Datenbanklogik und getrennte Datenbankzugriffe.
Für die Spezialaufgaben der technische Architektur empfehle ich ein kleines
Architekturteam mit folgenden koordinierenden und integrierenden Rollen im Projekt:
- Definition, Integration und Weiterentwicklung der Architekturmodelle
- Definition und Qualitätssicherung der technischen Komponenten
- Bewertung und Beherrschung der Projektrisiken
- Vorgaben der Iterationsziele (Inhalte und Reihenfolge)
- Beherrschung variabler Client/Server-Architekturen mit Objekt-Anwendungsservern, Internet-Architekturen und integrierten Mainframes.
|