Diese Arbeit betrachtete die aufkommenden Software-Entwurfsmuster unter dem besonderen Aspekt der Wiederverwendung. Dazu wurde zunachst die Bedeutung der Wiederverwendung für umfangreiche Softwareprojekte anhand der Aspekte Produktivitatssteigerung, Markteinführungszeit, Softwarekosten und Softwarequalitat herausgestellt und verschiedene Gründe genannt, die bisher den erhoften Erfolg verhindern.
Vorbereitend für die Betrachtung der Entwurfsmuster auf den Aspekt der Wiederverwendung wurden einige der verbreiteten "klassischen" Wiederverwendungsmethoden und -techniken, wie z.B. Quellcode-Komponenten und Frameworks dargestellt. Wiederverwendung findet hier auf der Ebene der Programmierung statt, die in der Granularitat von Hochsprachenkonstrukten bis hin zu variablen Klassenstrukturen reichen. Die Erfolgreiche Anwendung dieser Methoden und Techniken setzen weitreichende Kenntnisse aus dem Softwareentwurf voraus. Zum Beispiel ist die Umsetzung der Software-Architektur Model-View-Controller in eine funktionierende Anwendung, die den Aspekt der Trennung der Belange umsetzt, nicht trivial. Entwurfsmuster sollen das Expertenwissen komprimiert in Form von Problem-Lösungpaaren darstellen.
Muster und Musterpsrachen decken mittlerweile fast alle Bereiche des Softwareentwurfs ab, von den Coding Patterns für "guten" Programmcode, über Entwurfsmusterkataloge für die Konstruktion von Frameworks, bis hin zu Management- und Organisationsmuster. Im nachfolgenden Abschnitt wird daher kurz über die Möglichkeit eines vollstandigen Software-Entwicklungsvorgangs mit Entwurfsmustern nachgedacht, ohne naher auf dessen Realisierung eingehen zu wollen.
"The use of frameworks, architectures and high level patterns are helping making large scale domain reuse a reality."
[Palepu, 1995]
In den vorangegangenen Kapiteln wurden eine Reihe verschiedener Methoden zur Wiederverwendung aufgezeigt. Dies begann mit der Wiederverwendung in weiten Bereich der Softwarekomponenten, wie z.B. Hochsprachen, Klassen, und Frameworks. Diese technischen, mehr auf die Programmierung bezogenen Elemente, werden durch die Entwurfsmuster in der Wiederverwendung von Wissen erganzt. Wiederverwendung durch Komponenten oder Wiederverwendung von Wissen schließen sich nicht gegenseitig aus, sondern erganzen sich zu einem Ganzen. Zum Beispiel ist die korrekte und gute Verwendung der Idiome einer Programmiersprache nicht ohne das entsprechende Hintergrundwissen möglich (siehe Coding Patterns in Abschnitt 3.3. Die Verwendung des Model-View-Controler Frameworks wird durch die Entwurfsmuster nach Gamma et al. wesentlich vereinfacht (siehe Entwurfsmusterkataloge in Abschnitt 3.4).
Mittlerweile decken die Muster und Mustersprachen fast alle Abschnitte des Softwareentwicklungszyklus ab und liefern Expertenwissen in Form von kompakten Mustern. Was liegt nun naher, als diese verschiedenen Muster aus allen Bereich der Softwareentwicklung, wie Analyse, Entwurf, Codierung, Organisation etc. systematisch zu organisieren und zu einem Gesamtsystem zur Softwareentwicklung mit Mustern zusammenzufassen. Ein vollstandiges musterbasiertes System zur Softwareentwicklung konnte die Vorteile der einzelnen Muster und Mustersprachen verbinden. Zum Beispiel betrachtet James Coplien die Generative Development Process Pattern Language als Teil eines größeren Gesamtsystems. "This language builds a system which is part of a larger system: a development culter in a corporate environment." [Coplien,1994]
In Abbildung 23: wird dieser Gedanke in eine symbolhafte Darstellung gebracht. In einem hypothetischen Softwareentwicklungsvorhaben würde die dort dargestellte Development Process Pattern Language als Vorgehensmodelltreiber verwendet, der den Einsatz der spezialisierten Mustersprachen steuert. Dies könnte folgendermaßen ablaufgen:

Abbildung 23: Vorschlag für eine Development Process Pattern Language
Allerdings gibt es diese gemeinsame Entwurfsprozeßmustersprache noch nicht. Wohl aber alle dort involvierten Mustersprachen. Diese sind als Monographien, in Zeitschriftenartikeln, in Tagungsbanden und vor allem im Internet publiziert worden. Vor allem das Internet18 ist prädestiniert für die Veröffentlichung und Diskussion der Muster. Die Development Process Pattern Language soll an dieser Stelle nur als Anregung für kommende Forschungsprojekte dienen und einem kurzen Blick in eine mögliche Zukunft des Softwareentwurfs mit Mustern und Mustersprachen geben.
Wie kurz im Vorwort erwahnt, steht diese Arbeit über Entwurfsmuster nicht im leeren Raum, sondern ist in den Forschungsschwerkunpt Entwurfsmuster der Fachgruppe Technische Informatik19 an der Universitat Siegen eingebettet. Dort beschaftigt man sich seit 1994 mit Entwurfsmustern in Software und Hardware20. Dabei werden Entwurfsmuster nicht nur zum Entwurf benutzt, sondern dienen auch als neue Dokumentationsform, sowohl zur Dokumentation wahrend des Entwurfs, als auch zur Nachdokumentation von bestehenden Systemen. Entwurfsmuster bilden dabei eine zusatzliche Ebene der Systembeschreibung. In Abbildung 24 werden die Ebenen der Systembeschreibung als hierarchiches Hypertextdokument dargestellt.

Abbildung 24: Ebenen der Systembeschreibung [Odenthal & Quibeldey-Cirkel]
In diesem Rahmen ist auch meine, an diese Arbeit anschließende Diplomarbeit zu sehen. Sie befaßt sich mit der Konzeption und Implementierung eines Softwaresystems zur rechnergestützen Stundenplangenerierung. Meine Diplomarbeit baut dabei auf den Prototypen einer Projektgruppe21 auf, die das Problem der Stundenplanerstellung an der Universitat Siegen analysiert hat. Mit Hilfe eines Systems zur Constraint-Propagierung wurde dann das Problem gelöst und prototypisch implementiert.
Diese Programm soll nun unter Verwendung der hier vorgestellten Entwurfsmustern entworfen und dokumentiert werden, unter der besonderen Berücksichtigung der softwareergonomischen Aspekte hochgraphischer Anwendungen und der Client/Server-Datenhaltung. Langfristig ist die Erweiterung bis hin zu einem allgemeinen Framework zur Zeit- & Resourcenplanung geplant.