Architektur

Um größere Projekte zu bewältigen, müssen diese nach dem Prinzip Teile und Herrsche in Teilprojekte und Arbeitspakete aufgeteilt werden (siehe Projektstrukturplan).

Entscheidend für die Architektur sind die nicht-funktionalen Anforderungen (siehe nicht-funktionale Anforderungen).

Bei Software-Projekten wird das zu erstellende Produkt deshalb in

• Paragraphen, Segmente
• Prozeduren, Funktionen, Methoden
• Module, Pakete, Klassen und
• Teilsysteme,

ganz allgemein in Bausteine aufgeteilt. Jeder Baustein kann dabei in verschiedenen Zuständen existieren: spezifiziert, entworfen, implementiert und validiert.

Bei der Zerlegung des Gesamtsystems in Teile ist zu beachten, dass die entstehende Architektur die folgenden Ziele verwirklicht:

• Ebeneneinteilung (siehe Schichtenarchitektur),
• Information Hiding (abstrakte Datentypen),
• möglichst wenige Relationen (z.B. A ruft B auf, A wird vor B ausgeführt, A liefert Daten an B, A enthält B, A beauftragt B) zwischen den Teilen und
• möglichst großer Zusammenhalt innerhalb der Teile.

Die Schnittstellen der Bausteine müssen definiert werden, damit mehrere Mitarbeiter unabhängig von einander an einem Projekt arbeiten können, sowie aus Dokumentationsgründen. Dabei wird die Syntax und die Semantik der Schnittstelle berücksichtigt.

Die Exportsyntax wird z.B. formal durch die Zuordnung von Charakteristiken zu Operationsbezeichnern beschreiben (siehe Signatur).

Die Semantik der Operationen kann auf mehrere verschiedene Arten spezifiziert werden.