Es ist mittlerweile unbestritten, dass Modellierung ein fester Bestandteil des Repertoires eines Anforderungsexperten sein sollte. Software-Designer arbeiten vorwiegend mit Modellen. Ihr Verhältnis zu Anforderungen ist nicht immer ungetrübt und die Zusammenarbeit von Anforderungsexperten und Designern damit nicht immer leicht.

Ein gutes Modell hat eine klare Struktur und ist leicht zu verstehen, es nutzt Software -Design Patterns und reduziert damit Komplexität. Design Patterns sind ein Ansatzpunkt, den wir nutzen, um die Kommunikation zwischen Anforderungsexperten und Designern zu fördern.

Design Patterns für die Softwareentwicklung werden gemäß des Buches „Design Patterns“ (Erich Gamma et al., Addison Wesley 1995) in natürlicher Sprache und mit Hilfe von Diagrammen beschrieben. Die Dokumentation solcher Patterns folgt typischerweise dem Muster:

  • Intent
  • Applicability
  • Structure

Dabei liefert der Abschnitt „Intent“ eine abstrakte Beschreibung des Ziels, das ein Design Pattern erreichen will. Der Abschnitt „Applicability“ liefert durch die Nennung möglicher verfeinerter Ziele unterschiedliche mögliche Abstrakte Problembeschreibungen und der Abschnitt „Structure“, gefolgt von weiteren ergänzenden Abschnitten, stellt eine konkrete Lösungsbeschreibung dar.

Design Patterns vereinen daher die Warum-, Was- und Wie-Anforderungen aus unserem Informationsmodell (siehe Abbildung Informationsmodell).

Abbildung: Informationsmodell

Sie erleichtern die Ableitung von Lösungen aus Problembeschreibungen. Damit sollte es möglich sein, Begriffe und Ausdrücke in Anforderungen zu identifizieren, die Hinweise auf die Anwendung von Patterns geben. Zwei Beispiele sollen dies verdeutlichen:

Proxy Pattern

Ein Stellvertreter (Proxy) ist eine Klasse, die stellvertretend und damit als Schnittstelle zu einer anderen Klasse, einem anderen Subjekt, auftritt. Dies kann eine Ressource, ein „teures“ Objekt im Speicher, eine Netzwerkverbindung oder eine Datei sein. Über den Stellvertreter kann der Zugriff auf das Subjekt gesteuert werden. Ausdrücke wie

  • “Zugriff muss transparent sein”
  • “darf kein direkter Zugriff auf”
  • „verteilter Zugriff“
  • „kontrollierter Zugriff“

geben einen Hinweis darauf, daß die Anwendung des Proxy Pattern hilfreich sein könnte.

Abbildung: Proxy Pattern

Abstract Factory Pattern

Wenn ein System eine Produktfamilie unterstützen soll, wenn es unabhängig davon sein soll, wie seine Produkte erzeugt, zusammengesetzt oder dargestellt werden, wenn die aktuelle Technologie seiner Produkte sich in Zukunft wahrscheinlich ändern wird, wenn allso Ausdrücke wie

  • “unabhängig vom Hersteller”
  • “unabhängig vom Gerät”
  • “muss eine Produktfamilie unterstützen”

in den Anforderungen auftauchen, dann wäre es wahrscheinlich eine gute Idee, das Abstract Factory Pattern in Betracht zu ziehen.

Abbildung: Abstract Factory Pattern

Ähnlich, wie ein Katalog von Weak Words zur Verbesserung der Anforderungsqualität benutzt werden kann, kann ein Katalog von Begriffen gebildet werden, deren Verwendung in Anforderungen die Möglichkeit des Einsatzes von Design Patterns anzeigt und damit einen reibungsloseren Übergang von der Analyse zum Design ermöglicht.

Autoren: Uwe Valentini, Philip Stolz