Systematische Softwareentwicklung


Analysemuster (engl. analysis patterns)



Yüklə 441,68 Kb.
səhifə13/22
tarix20.08.2018
ölçüsü441,68 Kb.
#73132
1   ...   9   10   11   12   13   14   15   16   ...   22

5.6Analysemuster (engl. analysis patterns)


"Was man zu verstehen gelernt hat, fürchtet man nicht mehr."
(Marie Curie)

"Analysemuster" (engl.: "analysis patterns") sind - wie der Name schon sagt - Muster, also wiederkehrende Konstellationen von Irgendwas, die während der Analyse der Anforderungen hochkommen bzw. angewandt werden. Dies kann beispielsweise eine Beziehung zwischen Lieferanten und Kunden sein, die beispielsweise in Form von Ärzten und Patienten, Beratern und Mandanten, Wohnungsverwaltern und Mietern oder schlicht Produzenten und Konsumenten in der Fachlichkeit auftauchen. Typischerweise handelt es sich hier immer um eine 1:n-Beziehung (ein Rechtsanwalt hat viele Mandanten) und beide haben eine Adresse, die die gleiche Struktur hat und deshalb letztendlich in der gleichen Datenbanktabelle geführt wird. Hier kommt es zu einer "Eltern-Kind"-Beziehung (engl.: "Parent-Child"), die gewissen Regeln gehorcht und auf eine bestimmte Art im Datenmodell dargestellt wird. Ein ganz ähnliches Muster findet sich zwischen Organisationseinheiten, seien es Abteilungen oder Niederlassungen eines Unternehmens.


5.7Anwendungsfälle


"Es ist nicht genug zu wissen; man muss es auch anwenden.
Es ist nicht genug zu wollen, man muss es auch tun."
(Johann Wolfgang von Goethe)

Leistungsbeschreibung, Szenarien

einzelne Leistungsmerkmale
Anwendungsfälle (Use Cases)
casual, fully dressed, Sequenzdiagramm, Prototyp (s.u.)
Merkmal-Schnittstellen

Zerlegung des AF in Seiten oder Dialogfenstern, allgemein "Flächen" zur Darstellung von Aspekten einer bestimmten Anwender-PC-Kommunikation. Diese Assistenten sorgen für gleichmäßige Fragmentierung der AF.



Alistair Cockburn, Humans and Technology


Im Buch "Writing Effective Use Cases" zitiert Alistair Cockburn sehr passend ein kleines Gedicht des Iren Jonathan Swift:

So, naturalists observe, a flea
Hath smaller fleas that on him prey
And these have smaller still to bite 'em
And so proceed ad infinitum.

Ich betone hier deutlich, dass ich aus meiner Erfahrung heraus NICHT mit Cockburn darin übereinstimme, dass es zwei Stile für die Beschreibung von Anwendungsfällen (nämlich casual und fully dressed) gibt und man sich im Projekt für einen der beiden Stile entscheiden wird (S. 9). Vielmehr habe ich festgestellt, dass es Sinn macht, für jede Anwendungsfallbeschreibung einzeln zu entscheiden, welche Form man wählt. Ich halte es manchmal für sehr sinnvoll, einen Anwendungsfall als Sequenzdiagramm oder als Screenshot aus dem Prototypen (s.u.) zu beschreiben. Das sagt manchmal viel mehr aus als jede fully dressed Beschreibung.

Akzeptanzkriterien für Anwendungsfälle (mindestens eins) (Rösch Consulting)
s. auch "Systematische Tests"
z.B. konkretes Beispiel
konkrete Ziele definieren
abnahmefähig (juristisch stabil)

fachlich fehlerfrei! Kundenverantwortung

Anwendungsfallfragmente zur Wiederverwendung von Fachlichkeiten

Aspektorientierte Programmierung (AOP)

Mit den Anwendungsfällen sollten sofort auch die Testfälle erstellt werden.

5.8Spezifikationsmuster


"Wenn zwei Menschen immer dasselbe denken, ist einer von ihnen überflüssig."
(Winston Churchill)

Wenn 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.


5.8.1Spezifikationsmuster zur Ablaufsteuerung


Ein 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.

Einen "Assistent" zeichne ich sehr gerne mit Microsoft Visio als UML-Diagramm vom Typ "Aktivitätsdiagramm". Dabei stellen die einzelnen Zustandskästchen "Flächen" dar und die Kontrollflusspfeile die Schritte beim Übergang von einem Zustand zum anderen (in der Regel ausgelöst durch "Aktionen" oder "Detaillierungen").

Das hier gezeigte Beispiel stammt aus einem umfangreichen Intranetprojekt; die "Flächen" sind also Webseiten und die typische Abfolge ist 1-2-3. Die vierte Seite wird in einem zweiten Browserfenster als reine Infoseite angezeigt (da gibt es als Navigation nur die Möglichkeit, den Browser zu schließen; Infoseiten wurden in diesem Projekt in den Assistentendiagrammen immer grau dargestellt). Die Seiten 5 und 6 sind in diesem Beispiel alternative Pfade für Anwender mit höheren Berechtigungsstufen. Der Endzustand wird in diesem Beispiel typischerweise durch Ausstieg aus Seite 3 erreicht, indem der Browser dort geschlossen wird.

Inhaltlich geht es hier darum, dass in den Seiten 1 und 2 inhaltlich erst zwei Angaben spezifiziert werden, wodurch ein Thema so eingekreist wird, dass dessen Daten auf Seite 3 zur Bearbeitung zur Verfügung gestellt werden können. Seite 5 dient zum Erfassen neuer Themen und der Weg von 3 nach 2 beschreibt das Löschen eines Themas. Ein gelöschtes Thema kann durch Neuerfassen in 6 reaktiviert (bzw. reanimiert) werden (es wird nämlich nicht endgültig gelöscht, sondern nur zum Löschen markiert).

In der Anforderungsanalyse wird bei dem Anwendungsfall genau dieses Diagramm dargestellt und jede einzelne Seite beschrieben. Die Beschreibung erfolgt dabei tabellarisch und bezieht sich auf die Nummern im Diagramm:

1. erste Angabe spezifizieren



Input

-

-

Output

1

erste Angabe

Datenbank

-

Beschreibung

"Suche" erste Angabe
eine "Aktion" zum Wechseln auf Seite 2

2. zweite Angabe spezifizieren



Input

1

erste Angabe

Output

1

erste Angabe

2

zweite Angabe

Datenbank

-

Beschreibung

Input 1 als "Text"
"Suche" zweite Angabe
eine "Aktion" zum Wechseln auf Seite 3
eine "Aktion" Neu zum Wechseln auf Seite 5

...


Ein "Assistent" kann also zum Installieren eines Druckers in mehreren Schritten genauso benutzt werden wie für eine Hilfe in einem Helpdesk-System, das Erstellen eines Serienbriefes in einer Textverarbeitung oder das Anlegen einer Stückliste in einer Warenwirtschaft. Allgemein formuliert ist dieses Spezifikationsmuster immer sinnvoll, wenn der Anwender in mehreren Schritten durch einen komplexen Ablauf geführt werden soll.

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. Dieses Beispiel zeigt die "Datenerfassung" eines Beleges:

Hier ein äußerst komplexes Beispiel zur täglichen "Datenerfassung" von Dosierungen bei einem Herzmedikament (in diesem Fall habe ich allerdings statt der Prosabeschreibung mit Spezifikationsmustern einen Prototyp in Visual Basic entworfen):



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.

Bei einigen Oberflächen gibt es frei programmierbare Tasten: für Microsoft Windows gibt es Tastaturen mit kleinen Displays in den Tastenkappen, die von Anwendungen frei belegt werden können und bei Mobiltelefonen (in Deutschland Handys genannt) gibt es häufig direkt unter dem Display zwei Tasten, deren Bedeutung vom Programm situationsabhängig definiert und am unteren Rand des Displays in der Nähe der Tasten erläutert wird.

Ein "Assistent" endet oft mit einer "Fläche", in der eine "Aktion" zum permanenten Speichern der Information angeboten wird. Diese "Aktion" sollte nur den Speichervorgang selbst durchführen und keine Navigation zu einer anderen "Fläche" irgendeiner Form vornehmen. Wenn dies gewünscht ist, sollte die "Aktion" anders lauten, z.B. Speichern und Beenden, Speichern und Weiter oder OK.

"Aktionen" wie Neu hingegen implizieren einen Wechsel zu einer anderen "Fläche", so dass diese Zusatzaktion nicht separat mit genannt werden muss.

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.

Bei der "Detaillierung" wird also eine einzelne inhaltliche Information angeboten, die weiter detailliert werden kann. Ein Beispiel dafür ist die Suche nach Stücklisten, die einen bestimmten Artikel enthalten: das Ergebnis wird wahrscheinlich mehrere Stücklisten umfassen und es soll wahrscheinlich die Möglichkeit geben, zu jeder dieser Stücklisten den Inhalt (also weitere Details) abzurufen, um prüfen zu können, welche die richtige ist. Jede Stückliste wird also sicherlich als "Detaillierung" dargestellt.

Bei einer Intra-/Extra-/Internet-Applikation würde hier die Wahl der Darstellung sicherlich auf einen Link fallen, wie folgendes Beispiel aus www.ebay.de bei der Suche nach "Nikon 24" zeigt (dies ist nur ein Beispiel, daher sind die links selbst hier ohne Funktion):

Objektive (Autofokus) (31)
Foto-Zubehör (14)
Spiegelreflex-Kameras (4)
Objektive (Manueller Fokus) (2)

Das gleiche Beispiel finden Sie übrigens bei dem Spezifikationsmuster "Liste", weil dieses sich aus "Detaillierungen" zusammensetzt.

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. Menüs kommen in jeder Software vor, die eine graphische Oberfläche hat, da es sich hierbei um die gängigste Form des Angebots der Funktionalität handelt. Nebenstehend ein Ausschnitt des Microsoft Internet Explorers mit aufgeklappten Menüs.

Im Internet werden ebenfalls Menüs für die Wahl des Inhalts einer Website angeboten. Dabei wird häufig das Verhalten von Software mit graphischer Oberfläche nachgebaut wie nebenstehendes Beispiel sehr schön zeigt.

Hier werden die Menüpunkte "Kläranlagen" und "Pumpwerke / Deiche" erst eingeblendet, wenn der Anwender auf den Menüpunkt "Erklärte Technik" klickt. Die farbliche Veränderung zeigt dem Anwender in diesem Fall stets, wo er zuletzt geklickt hat.

A
uch ein extrem großer Inhalt lässt sich mit gewissem Geschick vernünftig in ein Menü packen. Dies ist das Hauptmenü von www.microsoft.com, sicherlich eine der größten Websites, die es gibt:

Letztendlich ist auch das Inhaltsverzeichnis eines Buchs oder meiner Abhandlung, in der Sie momentan lesen, eine Art von Menü, da Sie eine Auswahl über den Inhalt bekommen und mit den Augen im Inhaltsverzeichnis so lange weiter verzweigen, bis Sie die gewünschte Inhaltsangabe gefunden haben. Nichts anderes tun Sie mit der Maus in einem Programm-Menü, wenn Sie eine Funktion des Programms suchen. Hier bietet sich allerdings der technische Vorteil, dass die Menüs von Ebene zu Ebene dynamisch geöffnet werden können, so dass nicht das gesamte Angebot auf einmal zu sehen sein muss.

Auch bei zeichenorientierten (d.h. nicht-graphischen) Programmen gibt - oder besser: gab - es Menüs. Wie der Screenshot nebenan zeigt, werden hier die Funktionen natürlich nicht mit der Maus gewählt, sondern durch die Eingabe eines entsprechenden Buchstabens.

Der Screenshot zeigt übrigens auch, dass es sehr wohl unter zeichenorientierten Systemen (z.B. MSDOS oder alten Unix) schon fensterorientierte Programme gab (davon habe ich sogar mehrere Jahre gelebt!), denn die Rahmenzeichen boten die Möglichkeiten, auf dem Bildschirm "Flächen" abzustecken. So wurde hier bei der Auswahl eines Menüpunkts teilweise versetzt ein weiteres Menüfenster geöffnet, in dem eine weitere Auswahl stattfinden konnte.

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.


5.8.2Spezifikationsmuster zur Inhaltssteuerung


Fester, 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. "Text" ist wohl das einfachste Spezifikationsmuster, schon allein deshalb, weil es statisch ist, also keine weitere Funktionalität besitzt (es passiert nichts!). Sie erfassen "Text" in Ihrer Textverarbeitung und Sie lesen "Text" in einem Buch oder einer Zeitschrift. 90% des Internets besteht aus "Text". Dieser Absatz, den Sie momentan lesen, besteht übrigens aus purem "Text".

Der "Text" Straße: dient hier zur Beschreibung der "Eingabe":



Straße:

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. Die "Eingabe" ermöglicht es dem Anwender, in einem dafür vorgesehen reservierten Flächenbereich einen dynamischen Text zu erfassen. Dies kann der Name des Anwenders sein, ein Kennwort, eine Angabe für eine Schriftgröße, ein Straßenname, eine Projektnummer oder irgendeine andere Angabe. Der Anwender erkennt den gewünschten Typ der Angabe durch einen Bezeichnungstext, der über oder links neben der "Eingabe" angezeigt wird.

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. Eine "Voreinstellung" (englisch default) dient dem Setzen eines Standardwertes. Wenn der Anwender keinen anderen Wert definiert, wird dieser in der Software voreingestellte Wert genommen. Die Voreinstellungen in der Software müssen sehr sorgfältig während der Analysephase definiert werden, damit sie von den Entwicklern (möglichst konfigurierbar) implementiert werden können und dem Anwender zur Verfügung stehen. Wenn sich also Ihr Analysedokument durch detaillierte Angaben in eine Spezifikation wandelt, sollten die "Voreinstellungen" darin genannt werden.

Beispiele für "Voreinstellungen" in Programmen sind das Verzeichnis für Speichern unter in einer Textverarbeitung und die am meisten benötigte Mehrwertsteuer in einer Warenwirtschaft genauso wie die gebräuchlichsten Antworten in Fragebögen und das Folgejahr des aktuellen Wirtschaftsjahres für die Budgetplanung.

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".

Mit der "Wahl" kann der Anwender einen Punkt aus vielen wählen. Dies ist häufig erforderlich, um das Programm fortsetzen zu können: ein Projekt muss gewählt werden können, damit die Daten zum Projekt erfasst werden können, eine Zugverbindung von vielen muss gewählt werden, damit die Buchung erfolgen kann und ein Standort von allen möglichen muss gewählt werden, damit das passende Kassenbuch geöffnet werden kann.

Standardmäßig werden die einzelnen Elemente, die zur "Wahl" stehen, aufsteigend sortiert (also nach unten wachsend); wenn absteigende Sortierung gewünscht ist, sollte dies bei der Nutzung des Musters in Klammern angegeben werden. Findet für die "Wahl" eine Einschränkung der Gesamtmenge statt, so sollte dies ebenfalls in der Spezifikation angezeigt werden (beispielsweise: "Wahl aus allen Projekten vom aktuellen Jahr an absteigend").

Die "Wahleingabe" ist die Erweiterung der "Wahl" um eine "Eingabe". Während bei der reinen "Wahl" nur aus den vorhandenen Elementen der Wertemenge gewählt werden kann und bei der "Eingabe" immer ein individueller Wert eingegeben werden muss, kann bei der "Wahleingabe" entweder ein Wert aus der Menge gewählt werden oder auch individuell ein Wert eingegeben werden, der nicht in den Vorschlägen der Menge enthalten ist.

Mit der "Ja/Nein-Wahl" kann der Anwender eine Entscheidung treffen. So kann er kennzeichnen, ob er eine Datei, deren Name in der Nähe der Ja/Nein-Wahl steht, löschen möchte, oder ob er die Seiten in umgekehrter Reihenfolge drucken möchte, oder dass er die AGB vor der Bestellung gelesen hat. In einer Internet-Applikation kann die Ja/Nein-Wahl wie folgt aussehen:

Protokoll beim Schließen versenden

Bei einer "Optionen-Wahl" kann der Anwender wie bei der reinen "Wahl" eine einzige Option aus mehreren Möglichkeiten wählen. Während die reine "Wahl" in der Regel für Daten gilt, wird eine "Optionen-Wahl" in der Regel für Funktionalitäten oder Programmkonstanten genutzt. So könnte die Entscheidung für ein Papierformat vor dem Drucken (A4, A5, Letter) über eine "Optionen-Wahl" getroffen werden, oder die Benachrichtigungsmethode des Administrators bei einem Netzwerkfehler (Pieper, Handy, eMail, Fax), oder die Art der Zahlung beim Online-Kauf (Kreditkarte, Barnachnahme, Vorabüberweisung). In einer Internet-Applikation kann die "Optionen-Wahl" wie nebenstehend aussehen.

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.

Eine "Liste" ist oft das Ergebnis einer Suche oder dem allgemeinen Abruf von Informationen. Die Liste stellt jedes Element als "Detaillierung" dar. Dabei wird typischerweise jede "Detaillierung" in einer eigenen Zeile dargestellt, so dass die "Liste" sich von oben nach unten aufbaut.

Standard ist aufsteigend (also nach unten wachsend); wenn absteigend gewünscht ist, sollte dies bei der Nutzung des Musters in Klammern angegeben werden. Dies kann beispielsweise bei einem Archiv der Fall sein, wo die neuesten Dokumente zuerst (also oben) gelistet werden sollen.

Folgendes Beispiel aus www.ebay.de zeigt als Ergebnis der Suche nach "Nikon 24" folgende "Liste" (dies ist nur ein Beispiel, daher sind die "Detaillierungen" selbst hier ohne Funktion):

Objektive (Autofokus) (31)
Foto-Zubehör (14)
Spiegelreflex-Kameras (4)
Objektive (Manueller Fokus) (2)

Das gleiche Beispiel finden Sie übrigens bei dem Spezifikationsmuster "Detaillierung", weil die "Liste" sich ja aus "Detaillierungen" zusammensetzt.

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.

Die "Festlegung" als mehrzeilige Kombination der "Liste" (die aus "Detaillierungen" besteht) und der "Ja/Nein-Wahl" kann in einer Internet-Applikation beispielsweise wie folgt aussehen:



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.

Eine "Tabelle" ist hervorragend zur Eingabe oder Darstellung von Rabattstaffeln für Warengruppen oder Verkaufsstatistiken von Produkten oder Fragebogenantworten verschiedener Probanden oder monatlich abgegebenen Leistungsstandprognosen oder Parametern von Standorten (Niederlassungen) geeignet. In dieser Abhandlung benutze ich eine "Tabelle" beispielsweise zur Darstellung der Buchreferenzen (s. Links)

Oft werden "Tabellen" in Datenbanken gespeichert; dann stellt eine Zeile der "Tabelle" meistens einen Datensatz dar und jede Spalte einer Zeile ein Feld innerhalb des Datensatzes. Zur Eingabe oder Bearbeitung einer "Tabelle" kann die "Kaskade" zum Einsatz kommen.

Auf einer Internet-Seite wird eine Tabelle mit dem entsprechenden HTML-Element (...
) gebildet, in Microsoft Visual Basic beispielsweise mit einem DataGrid-Objekt.

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.



Mitarbeiter können Abteilungen zugeordnet werden, Anwendungsfälle können Akteuren zugeordnet werden, Rechte können Anwendern zugeordnet werden (vielleicht auch anders herum), Artikel können Stücklisten zugeordnet werden, Wohneinheiten können Objekten zugeordnet werden, Belege können Kassenbüchern zugeordnet werden, Verträge können Kunden zugeordnet werden, Stückgut kann LKWs zugeordnet werden, Bachläufe können Gebieten zugeordnet werden, Turnierpferde können Prüfungen zugeordnet werden, etc. etc. etc.

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.

Bei nebenstehendem Diagramm sehen Sie oben und unten die gleiche Internetseite, oben vor und unten nach der "Einstellung". Die "Einstellung" selbst erfolgt in der anderen Seite, die hier in der Mitte dargestellt ist. Zur Vereinfachung wird hier die "Einstellung" nur über eine "Eingabe" vorgenommen. In Wirklichkeit würde hier sicherlich ein kompliziertes Prozedere, beispielsweise verbunden mit einer "Suche", durchgeführt.

Beispielsweise kann auch über mehrere voneinander abhängige "Wahlen" zu einem Auto erst die Marke, dann die Baureihe, dann die Karosserieform und schließlich die Motorleistung gewählt werden, nur um letztendlich anhand dieser "Wahlen" automatisch berechnet die Typklasse für die Versicherung "einzustellen".

Das Ergebnis der "Einstellung" kann dann auf der Ursprungsseite auch mit einer "Detaillierung" verbunden sein, über die der Anwender weitere Informationen zum festgelegten Wert erhalten kann.

Aber auch die hier gezeigte "Eingabe" kann als separate "Einstellung" Sinn machen, wenn damit beispielsweise nicht nur das Projekt "eingestellt", sondern ggf. auch ein neues Projekt generiert werden kann. Dann müssen sicherlich noch weitere Informationen beim Anwender erfragt werden.

Bei einem Archivsystem wird vielleicht einfach nur ein Dokument zur weiteren Bearbeitung eingestellt, aber dabei auch gleichzeitig von einer Bildplatte eines Archivturms gelesen und dort mit einem neuen Barcode als entnommen gekennzeichnet.

Eine "Einstellung" erfolgt häufig auch für einen gewissen Zeitraum. Wenn ein Projektleiter etliche Daten für ein Projekt erfassen und verschiedenste Funktionen dafür aufrufen muss, so wird er dankbar sein, wenn er die Projektnummer einmal "einstellen" kann und alle folgenden Aktionen dann automatisch für diese Projektnummer erfolgen.

Ich finde den Begriff "Einstellung" sehr passend, weil die Anwender damit häufig mechanische "Einstellungen" über Rädchen und Tasten verbinden; solche Einstellungen gelten auch immer für einen gewissen Zeitraum. So denken viele an die "Einstellung" der Zündung an ihrem Auto oder die "Einstellung" ihrer Heizung oder die optimale "Einstellung" ihres PC-Monitors. Alle diese "Einstellungen" müssen leider auch regelmäßig wieder vorgenommen oder geändert werden.

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.

Eine "Suche" erfolgt in der Regel mehrstufig oder nach mehreren Kriterien. Im nebenstehenden Beispiel wird ein passender Projektleiter für ein neues Projekt "gesucht". Dafür werden erste einige Kriterien vorgegeben und über die "Aktion" suchen wird dann die "Wahl" gefüllt. Hieraus kann der Anwender mit einem einzelnen Klick einen gewünschten Projektleiter bestimmen, der letztendlich als "Detaillierung" dargestellt wird; darüber kann der Anwender noch einige Informationen zum Projektleiter abrufen, um sich endgültig zu vergewissern, den Richtigen gefunden zu haben.

Sie kennen ähnliche "Suchen" vielleicht von Internetseiten der DB (Zugverbindung), Teleauskunft (Telefonnummer), Expedia (Hotel) oder Wetter (Vorhersage) (alle jeweils www.x.de).


5.8.3Weitere Gedanken


Sie erhalten durch diese Muster 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.


Yüklə 441,68 Kb.

Dostları ilə paylaş:
1   ...   9   10   11   12   13   14   15   16   ...   22




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin