StartseiteSitemapDownloadsHilfeImpressum Chat


Startseite

Einführung

Was versteht man unter Entwurf?

Nachdem es in Zusammenhang mit dem Pflichtenheft zum Vertrag gekommen ist, kann die eigentliche Softwareproduktion beginnen. Der Softwareproduzent beginnt in Anlehnung an das Pflichtenheft mit dem Entwurf.
In dieser Phase entsteht ein Dokument, welches alle Diagramme, also den vollständigen Plan des neuen Produkts, enthält. Im Entwurf wird die zugrundeliegende Architektur der Zielsoftware festgelegt. Dabei beschäftigt man sich hauptsächlich mit den Fragen: Der Softwareproduzent verwendet beim Entwurf so genannte Entwurfsmuster (Design−Patterns), welche abstrakte Lösungen zu häufig auftretenden Entwurfsaufgaben darstellen. Die dabei begleitende Methode ist stets das Teile und Herrsche Prinzip (divide−and−conquer).
Die Kunst liegt darin, alle Punkte des Pflichtenheftes in den Entwurf vollständig und möglichst redundanzfrei aufzunehmen, ohne dabei umständlich in der Modellierung zu werden.
Das Entscheidende beim Entwurf ist, dass die gesamte Struktur der Software durch die im Pflichtenheft angegebenen Anforderungen bestimmt, nicht jedoch wie in den Frühzeiten der Softwareentwicklung durch die Implementierung festgelegt wird. D. h. die Punkte des Pflichtenhefts bestimmen die Softwarestruktur, jedoch nicht mehr der Programmierer bei der Fertigung.

Der Gedanke des Entwurfes

Das planmäßige Entwerfen findet seinen Ursprung in der (Gebäude−) Architektur, die Baukunst. Laut [BROCKHAUS1977] stehe sie am Anfang der bildenden Künste und sei die am meisten zweckgebundene Kunst.
Beim ‚Software Entwurf’ ist die Zweckgebundenheit der wichtigere Aspekt, nicht etwa die künstlerische Gestaltung. Trotzdem kann der Informatiker einiges vom (Gebäude−) Architekten lernen!
Beim Gebäudeentwurf (Beispiel Einfamilienhaus) muss der Architekt viele Details einbeziehen: Die Gebäudestruktur insbesondere die Anordnung der Räume werden von der Benutzung und von den Bedürfnissen künftiger Bewohner bzw. Benutzer geprägt. Alltägliche Abläufe müssen im voraus bedacht und im Entwurf einbezogen werden, so dass diese potentiell häufig auftretenden Abläufe möglichst optimal und effizient passieren können. Beispielsweise liegen das Bad sowie das WC in der Nähe des Schlafzimmers, welches sich wiederum fern vom Besucherbereich befinden sollte. So kann die Intimsphäre gewahrt und die allmorgendliche Toilette erleichtert werden. Ähnliche Szenarien muss sich der Architekt auch für andere Räumlichkeiten vorstellen wie zum Beispiel für die Küche, das Esszimmer, die Terrasse und den Eingangsbereich.
Die Räumlichkeiten müssen zweckgebunden gruppiert werden. Jedoch kommt es bei der Gruppierung oft zu Überlappungen, welche zu Kompromissen zwingen. Das WC muss zum Beispiel auch für den Besucher zur Verfügung stehen, oder reichen die finanziellen Mittel auch für ein Gäste-WC, oder können an anderer Stelle Kosten eingespart werden, um nicht auf das Gäste-WC verzichten zu müssen, und und und. So läuft die geistige Arbeit eines Architekten in etwa ab.
Das Entwerfen ist als eine umfangreiche Suche nach einer harmonischen Lösung des Gesamtwerkes zu verstehen!
Für einen optimalen Entwurf müssen natürlich alle Anforderungen bekannt sein, damit diese auch in den Entwurf einbezogen werden können. Ist der Entwurf einmal fertiggestellt, lassen sich weitere Anforderungen, sei es ein Hubschrauberlandeplatz oder eine Tiefgarage, eher schwerlich in den bereits vorhandenen Entwurf integrieren.



Werkzeuge

UML

Das heutzutage populärste Beschreibungsmittel einer Systemarchitektur ist UML (Unified Modelling Language), wenn es sich um einen objektorientierten Entwurf handelt. Gerade mit dieser Sprache kann man gemäß der oben gestellten Fragen im großen Umfang Softwaresysteme modellieren.
UML ist kein Prosatext, sondern eine objektorientierte Darstellung eines Systems.

ER−Diagramm

Für den Datenbestand im Zusammenhang mit einer relationalen Datenbank empfiehlt sich das Modellieren (Entwerfen) mittels ER−Diagrammen (Entity-Relationship-Diagrammen).



Entwurfsmuster

Typische Entwurfsmuster

(englisch: „design patterns”) werden je nach Anwendungsfall nicht neu erfunden, sondern einfach nach Bedarf aus einem normbehafteten Pool geschöpft. Jahrzehntelange Erfahrungen in der Softwareentwicklungsbranche trugen dazu bei, viele häufig wiederkehrende Entwurfsmuster zu klassifizieren. Softwareproduzenten, die etwas auf sich halten und mit der Zeit gehen, verwenden streng die unten angegebenen Entwurfsmuster und sparen somit viel Zeit beim Entwurf neuer Software.
Ein wesentlicher Vorteil der Entwurfsmuster liegt in der abstrakten Beschreibung der Software, d. h. mit den Entwurfsmustern kann man unabhängig von Programmiersprachen neue Software-Systeme entwerfen.
Entwurfsmuster sind auf Flexibilität und Wartungsfreundlichkeit ausgerichtete Systeme von Klassen und Objekten. Die Muster sind untereinander kombinierbar.
Es gibt drei Kategorien an Entwurfsmuster:
  1. Erzeugungsmuster
    Bei den Erzeugungsmustern wird der Erzeugungsprozess von Klassen bzw. von Objekten verborgen gehalten. Das System läuft weitgehend unabhängig davon wie die Objekte zusammengesetzt sind und repräsentiert werden.
    • Abstrakte Fabrik (Abstract Factory, Kit)
      ist ein objektbasiertes Erzeugungsmuster, welches eine abstrakte Schnittstelle zum Erzeugen von Familien verwandter Objekte, ohne ihre konkreten Unterklassen zu benennen, bietet.
      Die abstrakte Fabrik wird beispielsweise verwendet, wenn man das sogenannte Look and Feel realisieren möchte, also austauschbare Repräsentationen ein und der selben Information. Da man ausschließlich nur auf abstrakte Schnittstellen zugreift, ist es völlig egal welche Repräsentation nun tatsächlich verwendet wird.
    • Erbauer (Builder)
      ist ein objektbasiertes Erzeugungsmuster, mit dem man den Zustand eines Objektes in unterschiedliche Repräsentationen überführen kann. Dabei wird der Konstruktionsprozess vom zugrundeliegenden Objekt entkoppelt.
      Zum Beispiel möchte man aus einer Textdatei zum einen eine HTML-Datei und zum anderen eine PDF-Datei konstruieren können.
    • Fabrikmethode (Factory Method)
      ist ein klassenbasiertes Erzeugungsmuster, mit welchen man Objekte erzeugt, deren Klasse man nicht kennt, nur die Unterklassen entscheiden, von welcher Klasse die erzeugten Objekte sind.
    • Prototyp
      ist ein objektbasiertes Erzeugungsmuster, mit dem man Objekte durch Klonen des Prototypen erzeugt.
    • Singleton
      ist ein objektbasiertes Erzeugungsmuster, welches zu einer Klasse genau einen einzigen Repräsentanten zulässt.
  2. Strukturmuster
    Bei den Strukturmustern steht die Handhabung und Erweiterbarkeit unterschiedlicher Objekte einer Objektstruktur im Vordergrund.
    • Adapter (Wrapper)
      ist ein Strukturmuster, das man dazu braucht die Schnittstellen von Klassen oder von Objekten anzupassen und gegebenenfalls um Funktionalität zu erweitern.
    • Brücke (Bridge)
      ist ein objektbasiertes Strukturmuster, das die Trennung von Abstraktion und der dazugehörigen Implementierung erleichtert.
    • Dekorierer (Decorator)
      ist ein objektbasiertes Strukturmuster, mit dem man Objekte dynamisch um Funktionalität erweitern bzw. dekorieren kann.
    • Fassade (Facade)
      ist ein objektbasiertes Strukturmuster, welches je nach Aspekt die wichtigsten Schnittstellen eines Subsystems zu einer einzigen Schnittstelle zusammenfaßt. So werden umfangreiche und kompliziert wirkende Libs übersichtlicher gemacht.
    • Fliegengewicht (Flyweight)
      ist ein objektbasiertes Strukturmuster, mit dem viel Speicherplatz gespart werden kann. Anstatt viele gleiche Objekte in einer Objektstruktur zu halten, werden nur noch viele Referenzen auf ein und dasselbe Objekt verweisen.
    • Kompositum (Composite)
      ist ein objektbasiertes Strukturmuster, mit dem Objekte einer rekursiven Objektstruktur lediglich über eine einheitliche Schnittstelle angesprochen werden. Somit werden Basiskomponenten und zusammengesetzte Komponenten einheitlich behandelbar.
    • Stellvertreter (Proxy, Surrogate)
      ist ein objektbasiertes Strukturmuster, mit dem Zugriffe auf eine Objektstruktur mittels vorgelagerten Stellvertreter kontrolliert werden können.
  3. Verhaltensmuster
    • Befehl (Command)
      ist ein objektbasiertes Verhaltensmuster, welches einen Befehl kapselt. So können zum Beispiel Befehlsfolgen zu einem späteren Zeitpunkt leichter wiederholt werden.
    • Beobachter (Observer)
      ist ein objektbasiertes Verhaltensmuster, welches dazu verwendet wird, andere von einem Objekt abhängige Objekte zu informieren, wenn sich der Objektzustand von dem besagten Objekt zum Beispiel ändert.
    • Besucher (Visitor)
      ist ein objektbasiertes Verhaltensmuster, welches Operationen für eine Objektstruktur kapselt. Die Objektstruktur selbst wird dadurch stark entlastet und bleibt somit besser überschaubar.
    • Interpreter
      ist ein objektbasiertes Verhaltensmuster, welches gemäß einer Grammatik Textphrasen auswertet.
    • Iterator (Cursor)
      ist ein objektbasiertes Verhaltensmuster, welches einen sequentiellen Zugriff auf Objektstrukturen ermöglicht.
    • Memento
      ist ein objektbasiertes Verhaltensmuster, mit dem man fremde Objektzustände zum Beispiel für Undo-Operationen sichern kann.
    • Schablonenmethode (Template Method)
      ist ein objektbasiertes Verhaltensmuster, mit dem das Skelett eines Algorithmus in der Oberklasse implementiert wird, wobei einzelne Operationen des Algorithmus in den Unterklassen implementiert werden müssen.
    • Strategie (Strategy, Policy)
      ist ein objektbasiertes Verhaltensmuster, mit dem man Algorithmen austauschbar machen kann.
    • Vermittler (Mediator)
      ist ein objektbasiertes Verhaltensmuster, welches das Zusammenspiel von mehreren Objekten regelt.
    • Zustand (State)
      ist ein objektbasiertes Verhaltensmuster, welches einem Objekt ermöglicht, sein Verhalten je nach seinem internen Zustand zu ändern.
    • Zuständigkeitskette (Chain of Responsibility)
      ist ein objektbasiertes Verhaltensmuster, welches eine Aufgabe an eine Kette von Empfängern weiterleitet.
Ausführliche und detailierte Beschreibungen zu den hier aufgelisteten Entwurfsmustern können Sie beispielsweise in [ENTWURFSMUSTER] nachlesen.



Info

stefan−baur.de / Entwurf
  • besucht am Donnerstag, den 11. März 2010 um 20:43 Uhr
  • geändert am Sonntag, den 26. April 2009 von Stefan K. Baur
  • ähnliche Seiten:

[BROCKHAUS1977]  Der große Brockhaus,  F. A. Brockhaus,  18. Auflage,  1977,  ISBN 3−7653−0039−X.  12 Bände

[ENTWURFSMUSTER]  Erich Gamma,  Richard Helm,  Ralph Johnson,  John Vlissides:  Entwurfsmuster,  Addison−Wesley (Deutschland) GmbH,  1996,  ISBN 3−89319−950−0.  Deutsche Übersetzung von Dirk Riehle







Startseite

Copyright © 2004-2009 Stefan K. Baur − Druck20042005200620072008200920102011