3 Konfigurationsmöglichkeiten von Software

3.2.4 Programmierkonzepte



3.2.4.1 Entwurfsmuster106

Entwurfsmuster „sind Beschreibungen zusammenarbeitender Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen. Ein Entwurfsmuster benennt, abstrahiert und identifiziert die relevanten Aspekte einer allgemeinen Entwurfsstruktur“107, hilft bei der Komponentenentwicklung und stellt wiederum selbst universelle Komponenten dar, die flexibel wiederverwendet werden können. Sie bieten einfache und elegante Lösungen für spezifische Probleme des objektorientierten Softwareentwurfs, indem sie einfache und konzentrierte Problemlösungen darstellen.
Entwurfsmuster sind durch die Überlegung entstanden, dass sich in jeder gut strukturierten, objektorientierten Architektur Muster finden lassen müssen. Daraus resultieren weniger umfangreiche und leichter verständliche Architekturen, die bereits erfolgreich Anforderungen umgesetzt haben, und konzentrieren das Wissen und die Erfahrungen der Programmierer so, dass immer wiederkehrende Probleme nicht neu gelöst werden müssen. Sie bestehen objektorientiert aus Objekten, Klassen, Schnittstellen und Vererbungshierarchien.
Der Katalog nach Gamma enthält 23 Muster in 3 verschiedenen Kategorien108: Erzeugungsmuster, Strukturmuster und Verhaltensmuster, die sich jedoch häufig ähneln. Sie beinhalten grundlegende Elemente wie

Mustername: Als knappe Bezeichnung des Problems und Verdeutlichung des Vokabulars. Problemabschnitt: Als Problem- und Kontextbeschreibung mit Bedingungen für den Einsatz eines Musters (Motivation, Zweck, Grundprinzip, Fragestellungen, Anwendungsdiagramme). Lösungsabschnitt: Als abstrakte Beschreibung der Elemente, Beziehungen, Zuständigkeiten und Interaktionen und Anordnungen der Elemente des Entwurfs als eine Schablone, hier gehört auch ein Beispielcode dazu.

Konsequenzabschnitt: Als Beschreibung der Vor- und Nachteile bei Verwendung, z.B. Speicherplatzverbrauch, Ausführungszeit, Sprach- und Implementierungsaspekte, Einfluss auf Flexibilität, Erweiterbarkeit und Portabilität eines Systems, Variantenmöglichkeiten, Fallen, Tipps und Techniken für die Implementierung, verwandte Muster und bekannte Anwendungsfälle und welche Muster zusammen verwendet werden können.
Beispielhaft sei hier das Strukturmuster für einen Adapter bzw. Wrapper erläutert106.
Das Muster dient der Schnittstellenimplementierung zwischen inkompatiblen Klassen ohne dass die Klassen selbst geändert werden müssen. So ist eine Wiederverwendung von Klassen einer Klassenbibliothek möglich, was sonst nicht der Fall wäre. Die Vorgehensweise ist Abbildung 9 zu entnehmen:


Dabei greift der Client auf die Zielklasse zu und möchte eine Operation ausführen, die die Klasse nicht bietet, aber von der adaptierten Klasse angeboten wird. Auf direkten Wege kann diese Operation aus z.B. Inkompatibilitätsgründen nicht erfolgen, deswegen wird in diesem Entwicklungsmuster eine neue Klasse „Adapter“ eingeführt, die beide Methoden von den Oberklassen vererbt bekommt, die Berechnung ausführt und das Ergebnis an den Client zurückgibt. Vor- und Nachteile von Entwurfsmustern seien hier zusammengefasst:

Bewertung von Entwurfsmustern110
Vorteile Nachteile
  • Fördern das Verständnis und die Identifizierung von Objekten, auch solchen die nicht in der Realität vorkommen, aber für die zu erstellende Software nötig sind
  • Praxisorientierung und Hilfestellung durch umfangreiche Informationen
  • Wissenstransport erfahrener Programmierexperten
  • Vereinfachte Kommunikation
  • Erleichterung der Sichtweise auf komponentenbasierte Software-Entwicklung und Wiederverwendung
  • Gute Wartbarkeit durch geringe Anzahl der Klassen
  • Flexible Erweiterbarkeit und Kosteneinsparung
  • Sehr bekannt und häufige Anwendung durch hohe Akzeptanz
  • Höhere Abstraktion bei Entwurf, Dokumentation und Forschung
  • Vereinfachte Wartung
  • Entwicklungsmuster können nicht alle Probleme abdecken
  • Einige Muster sind schwer verständlich und werden selten genutzt
  • Verhindern selbständiges kreatives Problemlösen
  • Einfachere Lösungen werden teilweise nicht mehr angestrebt, Effizienzeinbußen sind die Folge
  • Hoher Lern- und Suchaufwand
  • Sehr hoher Entwicklungsaufwand neuer Muster
  • Keine Automatisierbarkeit


  • Neben dem Entwurfsmuster gibt es unter anderem Architekturmuster, die prinzipiell das gleiche Ziel verfolgen, nämlich ein spezifisches Problem durch eine bestehende Schablone zu lösen. Architekturmuster sind hierbei wesentlich weitgreifender, da sie ein komplettes Grundgerüst für die Anordnung von Elementen in einem Softwaresystem vorgeben.


     


    Top| Home| << Zurück | Nächste >>
    " TARGET="_blank"> >> Home Page <<