|
|
|
||
|
"Wenn zwei Menschen immer dasselbe denken, ist einer von ihnen überflüssig." SpezifikationsmusterWenn während der Analyse der Anforderungen die konzeptionelle Sicht auf die Fachlichkeit erledigt ist und die Anwendungsfälle alle im Rohbau stehen, wird es Zeit, sich über Prototypen oder Prosatexte für die genauere Spezifikation als Vorgabe für die Implementierung der Programmpräsentation Gedanken zu machen. Hier kommt es zu solchen Diskussionen zwischen Analytiker und Kunde: "Wie wird denn bei Ihnen eigentlich eine Stückliste erstellt?" "Wir nehmen ein neues Stücklistenformular, tragen eine neue Nummer ein und ordnen dieser Liste verschiedene Artikel zu." "Und wie viele Artikel kann eine Stückliste umfassen?" "Oh, das ist ganz verschieden - aber mindestens zwei, sonst ist es keine Stückliste." "Und wir erfolgt die Zuordnung?" "Wir tragen einfach die Nummern der Artikel in das Formular ein." Dieses Beispiel zeigt die Verwendung typischer Begriffe: Liste, erstellen, Formular, eintragen, zuordnen. Solche Worte kommen immer wieder vor und führen in der Regel auch zu einer ähnlichen Implementierung. Statt einer langen detaillierten Prosabeschreibung oder einem Prototypen für die Bildschirmdarstellung könnte man im obigen Beispiel auch einfach schreiben: "Die Nummer der Stückliste wird eingegeben und die Artikel werden zugeordnet." Wenn Analyst und Kunde einmal definiert haben, was "eingeben" und "zuordnen" bedeutet, ist dieser eine Satz schon eine sehr genaue Spezifikation. Immer wieder vorkehrende Elemente, Begriffe oder Konstellationen werden auch als "Muster" bezeichnet. In diesem Fall dienen die erkannten Muster zur Vereinfachung der Spezifikation, daher bezeichne ich sie als "Spezifikationsmuster" (englisch Specification Patterns). Ich muss allerdings betonen, dass es sich hierbei jetzt nicht um ein allgemein bereits anerkanntes oder gar genormtes Instrument handelt. Betrachten Sie diese Art der Muster als Vorschlag meinerseits. Ich verwende sie derzeit in einem recht großen Projekt und alle Beteiligten kommen sehr gut damit klar. Ich unterscheide zwischen Spezifikationsmustern zur "Ablaufsteuerung", mit denen der Bedienfluss innerhalb der Software gesteuert wird und Mustern zur "Inhaltssteuerung", mit denen die Erfassung und Darstellung von Informationen gesteuert wird. Da die Visualisierung der Muster bei einem Windows-Programm anders ist als bei einer Internetseite oder auf einem WAP-Handy, versuche ich, die optische Darstellung so neutral wie möglich zu beschreiben und eine Form zu wählen, für die es bei jeder erdenklichen Oberfläche eine Implementierungsmöglichkeit gibt. Auf jeden Fall sind die Spezifikationsmuster von der Fachlichkeit des Kunden unabhängig, so dass sie für alle neuen Kunden, Branchen und Projekte wieder verwendet werden können. Die Spezifikationsmuster sind teilweise sehr einfach und atomar, teilweise aber auch sehr komplex und setzen sich aus weiteren Spezifikationsmustern zusammen oder verwenden weitere Muster in variabler Anzahl und Kombination. Spezifikationsmuster zur AblaufsteuerungEin Assistent führt den Anwender schrittweise durch einen programmierten Ablauf und sammelt auf seinem Weg Informationen ein, nimmt Einstellungen vor oder führt abhängige Arbeiten aus. Ein Assistent besteht typischerweise aus einer oder mehreren "Flächen". Das Spezifikationsmuster "Assistent" kann für das Analysemuster "Arbeitsprozess" angewandt werden. Beispiele Eine Fläche dient zur Aufnahme weiterer Spezifikationsmuster und führt damit einerseits zur Kapselung dieser Muster und andererseits zur Isolation dieser Muster gegen andere. Dadurch wird die Widerverwendbarkeit von bestimmten Muster-Konstellationen vereinfacht. Ein Fenster (bei einer Windows-Anwendung) oder eine Seite (bei einer Internet-Anwendung) besteht in der Regel aus einer Fläche und einem zusätzlichen Satz von "Aktionen" wie beispielsweise OK und Abbrechen oder vor und zurück. Die Datenerfassung gruppiert mehrere Spezifikationsmuster auf einer "Fläche" zur Erfassung eines bestimmten Satzes von Daten. Dabei kann es sich beispielsweise um ein automatisch generiertes Formular zur Pflege einer Datenbanktabelle handeln. Auf einer Internetseite wird dieses Muster typischerweise auch als form implementiert. Beispiele Eine Aktion wird immer auf die gleiche Art ausgeführt und präsentiert sich dem Anwender als feste Programmfunktion. Dieses Muster wird typischerweise als Schaltfläche implementiert, ein Steuerelement, das es bei nahezu allen Entwicklungsumgebungen gibt. Beispiele An vielen Stellen soll der Anwender die Möglichkeit haben, zu einer Information eine Detaillierung durchzuführen, also weitere Details abzurufen. Es handelt sich hier eigentlich um eine "Aktion", aber um eine sehr gebräuchliche, die noch dazu fest mit dem Inhalt gekoppelt ist. Bei vielen Oberflächen ist es möglich, die zu detaillierende Information selbst besonders hervorzuheben und mit einer speziellen "Aktion" fest zu verdrahten. Ein gutes Beispiel ist der Hyperlink im Internet: er zeigt immer auf die Seite, die den Begriff, der als Link dargestellt ist, detailliert. Beispiele Ein Menü bietet immer eine Auswahl an Programmfunktionalität und unterscheidet sich dadurch deutlich von der "Liste", die ausschließlich Werte (Daten) enthält. Das "Menü" wird in der Regel mehrstufig aufgebaut sein und sich inhaltlich von Stufe zu Stufe verfeinern. In jedem Softwaresystem sollte nur ein einziger Menübaum existieren. Beispiele Die Kaskade ist von Wasserfällen her bekannt, wo das Wasser in mehreren Stufen bis auf das tiefste Niveau fällt. Es gibt in Softwaresystemen häufig Inhaltsbereiche, die sich stufig innerhalb einer "Fläche" ergeben. Oft sind zwischen diesen einzelnen Stufen "Aktionen" des Anwenders erforderlich. Ein "Menü"baum kann auch als "Kaskade" betrachtet werden; das passt allerdings nicht ganz, weil ein "Menü" ausschließlich Funktionalitäten des Programms enthält, wogegen eine "Kaskade" sich vorrangig mit Daten beschäftigt. Beispiele Spezifikationsmuster zur InhaltssteuerungFester, statischer Text auf einer "Fläche" dient der reinen Ausgabe einer Beschreibung, Bezeichnung oder Information. Der "Text" kann nicht durch den Anwender geändert werden kann. Beispiele Eine Eingabe dient dem Anwender zum spezifizieren des Datenteils einer Information. Im Gegensatz zum "Text" kann die "Eingabe" vom Anwender geändert werden. Eine "Eingabe" kann auch leer sein, das Programm muss darauf entsprechend reagieren. Wenn ein Anwender nicht das Recht zum ändern hat, so sollte die "Eingabe" deutlich sichtbar gesperrt werden oder besser gleich stattdessen als "Text" angezeigt werden. Beispiele Die Voreinstellung (englisch default) dient der Software als fest eingestellter Vorschlag für eine bestimmte noch leere "Eingabe" bei deren erster Verwendung. Es handelt sich also um einen in der Regel vom Kunden festgelegten Startwert. Beispiele Oft soll der Anwender die Möglichkeit der Wahl eines Wertes aus einer Menge von mehreren Werten haben. Dabei wird diese Menge möglichst nur kurz angezeigt und der gewählte Wert bleibt stehen. Eine typische Implementierung mit VisualBasic ist die Combobox, mit HTML der Select. Eine Erweiterung ist die "Wahleingabe" und eine besondere Rolle spielt die "Ja/Nein-Wahl" sowie die "Optionen-Wahl". Beispiele Eine Liste enthält eine lineare Anordnung (Aufzählung) von "Detaillierungen". Jeder einzelne Punkt dieser "Liste" ist also ein Spezifikationsmuster für die Ablaufsteuerung, aber die "Liste" selbst dient als Ganzes der Darstellung von Inhalt. Beispiele Die Festlegung ähnelt sehr stark der "Liste", aber zusätzlich gibt es zu jeder "Detaillierung" noch die Zusatzaussage, ob das Element ausgewählt ist für Irgendwas oder nicht. Damit ergänzt die "Festlegung" die "Liste" um eine Art Filter. In der Regel wird hier festgelegt, welche Elemente für bestimmte "Aktionen" benutzt werden sollen und welche nicht. Bevor der Anwender die Elemente festlegt, kann er sich anhand der "Detaillierung" noch über die einzelnen Elemente informieren. Beispiele Eine Tabelle ist eine Matrixanordnung von Daten, also so etwas wie eine zweidimensionale "Liste", also eine Übersicht von einem Wertetyp über einem anderen. Ein Teil der "Tabelle" kann auch wie eine "Liste", als einzelne "Detaillierung", als "Eingabe" oder einfach als "Text" ausgeprägt sein. Beispiele Die Zuordnung ist quasi eine "Wahl" einiger Elemente aus vielen (die "Wahl" selbst kann nur genau eins aus vielen wählen). Der Anwender hat nicht wie bei der "Liste" die Möglichkeit, sich über die einzelnen Elemente zu informieren, weil diese nicht als "Detaillierung" ausgeprägt sind. Dafür kann der Anwender aber aus einem Vorrat beliebig viele Elemente einzeln wählen und einzeln abwählen. Ideal ist es, wenn der Anwender dabei eine Gegenüberstellung der bereits gewählten (links) und der noch wählbaren (rechts) Elemente sieht. Beispiele Die Einstellung ist deutlich mehr als die "Eingabe". Sie wird immer dann genutzt, wenn ein Wert nicht einfach so eingetippt werden kann, sondern erst eine Ermittlung des Wertes erfolgen muss. Daher bietet die "Einstellung" eine separate "Fläche" zur Spezifikation des Wertes über die "Suche" oder prüft vor Akzeptanz des Wertes erst noch Plausibilitäten oder führt noch komplexe Zusatzaktionen aus. Die "Einstellung" eines Wertes wird häufig auch einmalig für mehrere "Aktionen" gleichzeitig durchgeführt, um den Dialog mit der Software zu vereinfachen. Beispiele Anhand der Suche können Werte recht aufwändig ermittelt werden. Hier können mehrere andere Spezifikationsmuster kombiniert werden, um dem Anwender einen gewissen Komfort zu bieten. Die "Suche" kann auch bei der "Einstellung" mitbenutzt werden. Beispiele Weitere GedankenSie erhalten durch diese Spezifikationsmuster ggf. die Möglichkeit, mit einem einzigen Prosasatz den Prototyp für eine ganze Funktion darzustellen. Es könnten Ihnen als Analytiker also passieren, dass Sie irgendwann einen Anruf vom Kunden erhalten und folgenden Satz hören: "Können wir den Assistenten von Anwendungsfall 85 noch so ergänzen, dass er auf der Seite 1 eine absteigende Liste von Jahreszahlen mit Detaillierungen zum Wechseln auf Seite 2 und eine Aktion "Ändern" zum Wechseln auf eine neue Seite 4 enthält?" Beide haben dann automatisch das gleiche Bild vor Augen und können präzise Funktionalität und Aufwand aushandeln - und zwar am Telefon! Spezifikationsmuster helfen beim Erlangen der Implementierungssicherheit für das zu erstellende Softwaresystem, denn die Implementierbarkeit eines solchen Musters ist sicherlich auf allen gängigen Systemen gegeben. Wenn sich also ein Anwendungsfall weitgehend anhand der Spezifikationsmuster beschreiben lässt, so steht der Implementierung eigentlich nichts mehr im Wege. Im ersten Moment könnte man denken, dass Spezifikationsmuster sich nur auf den Presentation Tier beziehen, weil sie die Interaktion zwischen Anwender und Software beschreiben und stets sehr gut helfen, sich einfacher ein Bild zu verschaffen als durch den Bau eines Prototyps. Aber bei vielen dieser Muster sind Business Tier und Data Tier sehr wohl beteiligt: wenn beispielsweise im Gewächshaus die Messwerte mehrerer Fühler in mehreren Kaskaden mit Zusatzinfos erfasst werden, so muss bei jeder Kaskade eine Interaktion mit dem Business Tier stattfinden, um den Messwert des nächsten Fühlers zu holen, und nachdem der Wert mit Zusatzinfos versehen ist, muss er vom Business Tier nochmals validiert und an den Data Tier zur permanenten Speicherung weiter gereicht werden. |
|
|