Session D-PATT

Anwendung von Mustern (Patterns) in der OO-Analyse

Ulli Gellesch
Starbright Software


Einführung

Es hat sich in der Praxis gezeigt, daß es in der Analyse, genauso wie beim Softwaredesign, immer wiederkehrende Problemstellungen und bereits dafür vorhandene Lösungen gibt. Um schneller und effektiver zu Lösungen zu kommen, ist es sinnvoll nicht immer wieder das Rad von vorne zu entwickeln. So wie man sich Bibliotheken im Softwaredesign anlegt, die fertige Lösungen für bestimmte Probleme respektive Problembereiche enthalten, so kann man auch auf fertige Muster in der Analyse zurückgreifen.

Martin Fowler und Altmeister Peter Coad haben sich hier besonders hervorgetan und der 'Gemeinde' fertige Muster zur Verfügung gestellt.

Muster

Ein Muster (pattern) ist ganz allgemein ausgedrückt eine Idee oder Sache die sich in einem definierten Zusammenhang als erfolgreich und nützlich erwiesen hat. Das heißt, daß ein Muster irgendwo bereits real existiert. Um Muster zu kategorisieren, damit sie für andere nutzbar werden ist es wichtig die folgenden Angaben über das Muster zu machen:

  • Angabe des Kontextes in dem das Muster genutzt wird
  • Angabe des Problems, das durch das Muster gelöst wird
  • Angabe der Kräfte die bei der Lösung behandelt werden müssen
  • Angabe des Lösungsweges der zum geforderten Ergebnis führt

Interessant werden Muster aber erst, wenn sie einen gewissen Abstraktionsgrad haben und damit eine Problemlösung für eine Menge ähnlicher Probleme darstellen. Wenn diese Abstraktion gegeben ist, dann läßt sich das Muster als standardisierte Lösung von bestimmten Problemen einsetzen. Je nach Abstraktionsgrad kann man unterscheiden zwischen allgemeinen Mustern und anwendungsspezifischen Mustern.

Beispiele für Muster nach H. Balzert

Liste

Kontext: Jede Liste hat einen Listenkopf und eine Anzahl Listenelemente

Gelöstes Problem: Rechnung -> Rechnungspositionen

Eigenschaften:

    Komposition

    Nur eine Teilklasse

    Teil-Objekte bleiben Aggregatobjekte fest zugeordnet

    Attribute des Aggregatobjektes gelten für jedes Teilobjekt

Exemplartyp

Kontext: Alle Exemplare haben mindestens ein gleiches Attribut

Gelöstes Problem: Bibliothek

Eigenschaften:

    Einfache Assoziation

    Keine Änderung der Verbindung, nur löschen möglich

    Attribut kann ohne Exemplar bestehen

Baugruppe

Kontext: Alle Teile gehören zu einem Objekt

Gelöstes Problem: Auto -> Motor, Räder,Lenkrad,Karosserie...

Eigenschaften:

    Teile sind physische Objekte

    Komposition

    Objekt nur vollständig wenn alle Teile existent

Stückliste

Kontext: Alle Objekte bestehe aus Gruppen von Einzelteilen oder Einzelteilen

Gelöstes Problem: Dateiverwaltung

Eigenschaften:

    Komposition

    Aggregat und Teilobjekte müssen sowohl als Einheit

    als auch als Einzelnes Objekt behandelt werden können

    Teil-Objekte können anderen Aggregatobjekten zugeordnet werden

Koordinator

Kontext: Merkt sich 'WER WEN KENNT'

Gelöstes Problem: Prüfungsbeleg an Schule

Eigenschaften:

    Einfache Assoziation

    Koordinator ersetzt Assoziationen mit assoziativer Klasse

Rollen

Kontext: Assoziatives Objekt nimmt gegenüber anderen Objekten verschieden Rollen ein

Gelöstes Problem: Konferenz -> Sprecher ist Sprecher und Teilnehmer

Eigenschaften:

    Zwischen zwei Klassen bestehen mehrere Assoziationen

    Objekt kann in Bezug auf andere Objekte verschieden Rollen einnehmen

    Objekte können verschiedene Rollen einnehmen, haben aber immer dieselben Methoden

Wechselnde Rollen

Kontext: Objekt ist zu verschiedenen Zeiten ein anderes Objekt

Gelöstes Problem: Personalverwaltung

Eigenschaften:

    Objekt kann zu verschiedenen Zeiten verschiedene Rollen spielen

    In jeder Rolle verschieden Eigenschaften und Methoden

    Unterschiedliche Rollen werden geerbt

Historie

Kontext: Aktivitäten eines Objektes zeitbezogen speichern

Gelöstes Problem: Reederei ->Schiffsbewegungen

Eigenschaften:

    Es liegt einfache Assoziation vor

    Für jeden Vorgang ist der Zeitraum festzuhalten

Gruppe

Kontext: Mehrere Objekte gehören zu einem übergeordneten Objekt

Gelöstes Problem: Personalverwaltung

Eigenschaften:

    Es liegt einfache Assoziation vor

    Mehrere Objekte gehören zum gleichen Zeitpunkt zum selben Objekt

    Objektverbindungen können auf- und abgebaut werden

Gruppenhistorie

Kontext: Dokumentation der Gruppenzugehörigkeit über einen Zeitraum

Gelöstes Problem: Personalverwaltung

Eigenschaften:

    Objekt gehört zu verschiedenen Zeiten verschiedenen Objekten an



Literaturhinweise:

Analysemuster
Martin Fowler
1999
Addison Wesley

Lehrbuch der Objektmodellierung
1999
Spektrum

Pattern orientierte Software Architektur
1998
Addison Wesley