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.