|
|
|
|
|
In dieser Phase wird die Aufgabenstellung analysiert, um die
Bedürfnisse des Kunden besser verstehen zu können.
In einer Prioritätenliste werden
Muß- und Wunschkriterien
aufgestellt, die durch das zu erstellende Programm realisiert werden
sollen. Anhand von Use-Case-Diagrammen wird aufgezeigt,
welche Personen agieren und welche Dienste des Programms sie in
Anspruch nehmen sollen. Im Anschluß daran findet das
Kundengespräch statt, in dem die festgelegten
Funktionen des Programms mit dem Kunden abgesprochen und ggf.
an seine Wünsche angepaßt werden.
Mit Hilfe von CRC-Karten werden erste
Klassenkandidaten aufgestellt und in einem Klassendiagramm
miteinander in Beziehung gesetzt.
Die veränderte Prioritätenliste und die CRC-Karten
sind Grundlage für die Erstellung eines
Pflichtenheftes. Einige Sequenzdiagramme zur
Darstellung komplizierter Anwendungsfälle bilden den
Abschluß der Analyse-Phase.
|
|
|
|
Am Anfang des Projektes wird die Aufgabenstellung analysiert. Diese
liegt meist in Prosa vor und die Wünsche des Kunden kommen
oft nicht eindeutig zum Ausdruck. Mit Hilfe der Analyse versucht man
die Wünsche des Kunden herauszufiltern, zu präzisieren und
stichpunktartig in einer Prioritätenliste
zusammenzufassen.
Dabei wird vom Team entschieden, welche Anforderungen als
Muß-, und welche als Wunschkriterien
aufgelistet werden. Mußkriterien umfassen die zentralen
Funktionen des Programms, die auf jeden Fall realisiert werden
müssen, um das Programm lauffähig zu machen. Unter
Wunschkriterien werden die Punkte zusammengefaßt, die eher
die Ausbaumöglichkeiten des Programm beschreiben. Das Team sollte
sich bemühen sowohl die Muß-, als auch die Wunschkriterien
in der Implementationsphase zu realisieren. In Analyse und Entwurf
sind alle Kriterien zu berücksichtigen!
|
|
|
Die Aufgabenstellung für das Restaurant gliedert sich in
drei große Bereiche: die Kunden, die
Kellner und die Verwaltung. Aus den
einzelnen Bereichen werden die Anforderungen herausgesucht und in
eines der zwei Kriterien einsortiert.
|
|
|
Es wird mit den Kunden begonnen. Sie sollen Speisen und
Getränke bestellen können. Ohne diese Funktion wird
das Restaurant nicht seinen Zweck erfüllen, deshalb wird der
Punkt in die Mußkriterien aufgenommen. Die
Identifizierung der Speisen und Getränke durch
Nummern zählt ebenfalls zu den wichtigen Bestandteilen
des Programms. Die geforderte freie Zusammenstellung der
Speisen ist weniger wichtig. Ein Programm kann auch
ohne diese Flexibilität arbeiten. Das mag wenig kundenfreundlich
sein, aber der Punkt wird trotzdem in die Wunschkriterien aufgenommen.
Um ein funktionierendes Abrechnungssystem bei den
Bestellungen zu schaffen, ist folgender
Punkt unerlässlich: Tische und ggf. Kunden werden durch
Nummern identifiziert. Das Erstellen der
Rechnung ist ebenfalls ein Mußkriterium, da das
Restaurant sonst in kurzer Zeit Konkurs anmelden muß.
|
Die Kunden
|
|
Die Prioritätenliste sieht nach diesem Schritt wie folgt aus:
|
Die Prioritätenliste
|
|
 |  |  |
 |
Mußkriterien:
- Kunden bestellen Speisen und Getränke
- Speisen und Getränke werden durch Nummern identifiziert
- Bestellung pro Tisch(nummer) bzw. pro Kunde
(Tischnummer/Kundennummer) mit Weiterleitung an die
Küche
- Rechnungserstellung durch den Kellner
Wunschkriterien:
|  |
 |  |  |
|
|
|
Der Bereich der Kunden ist damit abgedeckt. Der nächste Schritt
führt zu Funktionen, die das Programm für die Kellner
bieten soll.
|
|
|
Jede Kellner verwaltet seinen eigenen
Geldbeutel. Bezahlen die Kunden ihre Rechnung, fließt
das Geld inklusive der Trinkgelder dort hinein. Für die
Kontrolle der Kellner und eine Abgrenzung ihres Arbeitsbereichs
untereinander ist dieser Punkt genauso wichtig, wie die
personengebundene Abrechnung am Schichtende.
Die Prioritätenliste wird wie folgt erweitert:
|
Die Kellner
|
|
 |  |  |
 |
Mußkriterien:
- Kunden bestellen Speisen und Getränke
- Speisen und Getränke werden durch Nummern identifiziert
- Bestellung pro Tisch(-nummer) bzw. pro Kunde
(Tischnummer/Kundennummer) mit Weiterleitung an die
Küche
- Rechnungserstellung durch den Kellner
- Kellner besitzen ihren eigenen Geldbeutel (enthält
Einnahmen, Trinkgeld und Wechselgeld)
- personengebundene Abrechnung am Schichtende
Wunschkriterien:
|  |
 |  |  |
|
|
|
Der letzte Bereich, der in die Prioritätenliste einfließen
soll, ist die Verwaltung des Restaurants.
|
|
|
Die Aufgabenstellung des Kunden sieht vor, beim
Tagesabschluß die Vorräte
an Speisen und Getränken wieder aufzufüllen. Ohne
diesen Schritt könnte das Restaurant bald schließen, denn
in der Küche können ohne die Zutaten keine Gerichte
angefertigt werden. Der Punkt wird in die Mußkriterien
aufgenommen. Zusätzlich soll der Umsatz ermittelt
werden. Der Besitzer des Restaurants sieht an diesen
Zahlen zwar wie gut sein Geschäft läuft, es hat aber
keine Auswirkungen auf die Lauffähigkeit der Anwendung.
Deshalb wird die Umsatzermittlung ein Wunschkriterium.
Der letzte Wunsch des Kunden ist, daß jederzeit
Veränderungen in der Speisekarte vorgenommen
werden können. Diese Funktion ist sehr wichtig, da Lebensmittel
verderben bzw. die Vorräte erschöpft sein können.
Die betroffenden Gerichte sollten dann sofort aus dem Angebot
genommen werden.
|
Die Verwaltung
|
|
 |  |  |
 |
Mußkriterien:
- Kunden bestellen Speisen und Getränke
- Speisen und Getränke werden durch Nummern identifiziert
- Bestellung pro Tisch(nummer) bzw. pro Kunde
(Tischnummer/Kundennummer) mit Weiterleitung an die
Küche
- Rechnungserstellung durch den Kellner
- Kellner besitzen ihren eigenen Geldbeutel (enthält
Einnahmen, Trinkgeld und Wechselgeld
- personengebundene Abrechnung am Schichtende
- Auffüllen der Vorräte beim Unterschreiten gewisser
Grenzen durch Bestellungen bei Zulieferern
- Veränderungen in der Speisekarte
Wunschkriterien:
- Sonderwünsche
- Umsatzermittlung
|  |
 |  |  |
|
|
|
|
Im Anschluß an die Prioritätenliste werden die
Use-Case-Diagramme erstellt. UML unterstützt
die Anforderungsdefinition durch Anwendungsfälle
(engl. use cases). Ein Anwendungsfall beschreibt
ein Stück des Systemverhaltens aus Sicht des Benutzers. Er stellt
eine typische Interaktion dar. So wird noch einmal verdeutlicht welche
Teile des Programms für welche Nutzer benötigt werden bzw.
wie einzelne Teile der Anwendung zusammenarbeiten.
|
|
|
Ein zentraler Bestandteil der Anwendung ist das Bestellen von
Speisen und Getränken durch den Kunden. Hat der Kunde
seine Auswahl getroffen, gibt er bei einem Kellner seine
Bestellung auf. Um dem Kunden eine korrekte Rechnung erstellen
zu können, werden alle Kunden in einer Liste (z.B. einem
Katalog) verwaltet. Ihnen werden die entsprechenden
Bestellungen zugeordnet. Betritt ein neuer Kunde das
Restaurant und möchte etwas bestellen, wird er in der Liste
angelegt.
|
Die Bestellung
|
|
Der Zutatenbestand wird auf die Verfügbarkeit aller zur
Zubereitung benötigten Bestandteile
überprüft. Erst wenn alle Zutaten vorhanden sind, gilt die
Bestellung als angenommen. Der Kellner leitet die Bestellung
an die Küche, hier durch den Koch repräsentiert, weiter.
Das folgende Use-Case-Diagramm verdeutlicht diese
Zusammenhänge:
|
|
|
Abbildung 4.1:
Die Bestellung/Nachbestellung
|
|
|
Es kann vorkommen, daß ein Kunde z.B. einen wichtigen
Anruf erhält und das Restaurant sofort verlassen
möchte. In diesem Fall hat er die Möglichkeit seine
Bestellung zu stornieren. Wurde die Speise schon gekocht, wird
sie als Verlust gemeldet. Anderfalls wird der Koch informiert,
daß er die Speise nicht mehr zubereiten muß:
|
Bestellung stornieren
|
|
Abbildung 4.2:
Eine Bestellung stornieren
|
|
|
Will ein Kunde seine Rechnung bezahlen, wird er sie beim
zuständigen Kellner anfordern. Dieser stellt sie zusammen
und überreicht sie dem Kunden. Der Kunde begleicht seine
Rechnung und kann aus der Kundenliste entfernt werden:
|
Rechnung bezahlen
|
|
Abbildung 4.3:
Die Rechnung erstellen
|
|
|
Damit die Einnahmen der Kellner individuell abgerechnet werden
können, müssen sie sich im Restaurant an- und
abmelden können. Ein Kellner kann sich nur abmelden, wenn
er keine Tische mehr bedient, d.h. an keinem Tisch von ihm
angenommene Bestellungen noch nicht bezahlt wurden. Kann sich
der Kellner abmelden, gilt seine Schicht als beendet und seine
Einnahmen werden abgerechnet. Das folgende Diagramm stellt
die An- und Abmeldung vom Kellner graphisch dar:
|
An- und Abmeldung der Kellner
|
|
Abbildung 4.4:
Die An- und Abmeldung von Kellnern
|
|
|
Die Kellner selbst werden vom Manager des Restaurants
eingestellt und entlassen:
|
Angestelltenverwaltung
|
|
Abbildung 4.5:
Der Manager stellt Kellner ein und entläßt sie
|
|
|
Beim Zubereiten von Speisen werden die Zutaten aus dem Lager
langsam aufgebraucht. Der Manager des Restaurants kann bei
Zulieferern die Zutaten bestellen, die benötigt
werden. Um ihm die Arbeit etwas zu erleichtern besitzen alle
Zutaten als Attribute eine Mindest- und eine Maximalanzahl. Der
erste Wert gibt an, wieviel dieser Zutat mindestens benötigt
wird, um den Betrieb des Restaurants sicherzustellen. Wird er
unterschritten, wird die Zutat automatisch in die Wunschliste
aufgenommen. Mit Hilfe der Maximalanzahl, die angibt wieviel
dieser Zutat maximal im Lager sein sollte, wird die zu
bestellende Menge errechnet. Diese Liste kann vom Manager auch
verändert werden um ggf. auf Sonderaktionen, wie
"Spargelwochen", einzugehen. Werden
die gewünschten Zutaten bestellt, werden sie in die
Bestelltliste übernommen. Erfolgt die (Teil-)Lieferung
der Zutaten werden sie aus der Bestelltliste entfernt und zum
den Lagerbestand hinzugefügt. Bei der Verwaltung des
Lagers besteht zusätzlich die Möglichkeit, die
Attribute der Zutaten, wie z.B. den Verkaufspreis, zu
verändern und verfallene Zutaten zu entfernen.
|
Lagerverwaltung
|
|
Abbildung 4.6:
Die Lagerverwaltung
|
|
|
Der Manager kann weiterhin einen Tagesabschluß machen,
wenn er das Restaurant am Ende des Arbeitstages
schließen möchte. Beim Tagesabschluß kann auf
die Lagerverwaltung zugegriffen werden und verschiedene
Statistiken können abgefragt werden. Außerdem wird
überprüft, ob sich alle Kellner abgemeldet haben.
|
Tagesabschluß
|
|
Abbildung 4.7:
Der Tagesabschluß
|
|
|
Die Statistiken selbst können angezeigt werden und
für geschlossene Zeiträume gelöscht werden:
|
Statistik
|
|
Abbildung 4.8:
Die Statistik
|
|
|
|
Mit der so erstellten Prioritätenliste und den Use-Case-Diagrammen
findet das Kundengespräch statt. Zweck dieser
Zusammenkunft ist es, mit dem Kunden die Dokumente
durchzusprechen. Dabei wird deutlich, ob es dem Team gelungen ist,
alle Wünsche des Kunden aus seiner Aufgabenstellung zu
berücksichtigen bzw. ob noch Erweiterungen notwendig sind.
Außerdem wird klar, ob der Kunde mit der Aufteilung der
einzelnen Punkte in die Muß- und Wunschkriterien einverstanden
ist. Am Ende des Gesprächs sollte der Rahmen des Projekts klar
umrissen sein. Das Pflichtenheft wird als "Vertrag" zwischen
dem Kunden und den Programmierern erarbeitet.
|
|
|
An dieser Stelle wird auf mögliche Veränderungen, die aus
dem Kundengespräch hervorgehen können verzichtet.
|
|
|
|
Mit Hilfe der CRC-Karten-Methode werden erste Klassenkandidaten
identifiziert und ihre Aufgaben in der Anwendung
festgelegt. Im folgenden sind die enstandenen CRC-Karten aufgelistet.
Da die CRC-Karten selbsterklärend sind, wird an dieser Stelle auf
weitere Erläuterungen verzichtet.
|
|
|
Abbildung 6.1:
CRC-Karte: Restaurant
|
|
|
|
|
|
Abbildung 6.2:
CRC-Karte: Kunde
|
|
|
Abbildung 6.3:
CRC-Karte: Bestellung
|
|
|
Abbildung 6.4:
CRC-Karte: Rechnung
|
|
|
Abbildung 6.5:
CRC-Karte: Mitarbeiter
|
|
|
Abbildung 6.6:
CRC-Karte: Kellner
|
|
|
Abbildung 6.7:
CRC-Karte: Koch
|
|
|
Abbildung 6.8:
CRC-Karte: Manager
|
|
|
Abbildung 6.9:
CRC-Karte: Tagesabschluß
|
|
|
Abbildung 6.10:
CRC-Karte: Lager
|
|
|
Abbildung 6.11:
CRC-Karte: Zutat
|
|
|
Abbildung 6.12:
CRC-Karte: Speise
|
|
|
Abbildung 6.13:
CRC-Karte: Sonderwunsch
|
|
|
|
Mit Hilfe der Prioritätenliste und den Use-Case-Diagrammen
kann das Pflichtenheft erstellt werden.
|
|
|
 |  |  |
 |
1 Zielbestimmung
Entwicklung einer Software für den Betrieb eines Restaurants
im Rahmen des Softwaretechnik-Praktikums
1.1 Mußkriterien
- Kunden bestellen Speisen und Getränke
- Kellner nehmen die Bestellung entgegen
- Rechnungserstellung durch den Kellner
- Abrechnung einer Bedienungskraft mit dem Restaurant am Ende
einer Schicht
- Tagesabschluß des Restaurants
- Veränderungen in der Speisekarte
- Nachbestellung von Zutaten
- Editieren von Zutaten und Speisen bzw. Getränken
- Zugriffsrechte
1.2 Wunschkriterien
- Erstellung von Statistiken
- Sonderwünsche
1.3 Abgrenzungskriterien
- keine Echtzeitanwendung
- keine Beachtung von Wechsel- und Trinkgeldern
- keine Zuordnung der Nachbestellung zu bestimmte Lieferanten
2 Produkteinsatz
2.1 Anwendungsbereiche
2.2 Zielgruppen
- Mitarbeiter eines Restaurants
2.3 Betriebsbedingungen
- Restaurantumgebung bzw. PC des Managers
3 Produktumgebung
Das Programm läuft auf einem Arbeitsplatzrechner
3.1 Software
- Windows NT bzw. 95 (und höher) oder Unix-Betriebssysteme
- JDK 1.3
- Framework SalesPoint v3.0
3.2 Hardware
4 Produktfunktionen
4.1 Kundebereich
/F10/ | Kunden bestellen Speisen und Getränke |
/F20/ | Identifizierung von Speisen und Getränken durch Nummern
|
/F30/ | die Speisekarte beinhaltet Standardspeisen und Getränke
|
/F40W/ | Erfassung von Sonderwünschen bei Zusammenstellung der
Speisen |
/F50W/ | Stornierung der Bestellung möglich |
4.2 Kellner- und Küchenbereich
/F60/ | Bestellungsaufnahme mittels Tisch-/Kundennummer |
/F70/ | Abfrage, ob benötigte Zutaten für die Zubereitung
der Speise im Lager |
/F80/ | Anzeige bei Eingabe der Bestellung, ob es möglich ist
das Gericht bzw. Getränk anzufertigen/auszuliefern |
/F90W/ | änderbarer Preisvorschlag für Sonderwünsche
|
/F100/ | Weiterleitung der Bestellung an die Küche und Entfernen
der entsprechenden Zutaten aus dem Lager |
/F110/ | Rechnungszusammenstellung nach Tisch-/Kundennummer mit
Festhalten der Kellnernummer |
/F120W/ | Stornierung der Rechnung und Meldung als Verlust (wenn die
Speise schon zubereitet wurde)
|
/F130/ | Anmeldung des Kellners bei Beginn der Schicht mit eigener
Kellnernummer |
/F140/ | Abmeldung des Kellners mit automatischer Abrechnung seiner
Schicht |
/F150W/ | letzte Abmeldung nur möglich, wenn alles ausgeliefert
und alle Bestellungen bezahlt sind |
/F160/ | das Wechselgeld des Kellners verbleibt in seinem Geldbeutel
|
4.3 Verwaltungsbereich
/F170/ | die Anzahl der Tische ist bekannt
|
/F180/ | pro Tisch laufende ID für unterschiedliche Kundengruppen
|
/F190/ | es exisitert ein Lager für die Zutaten
|
/F200/ | Restaurantbesitzer nimmt den Lagerbestand auf und verwaltet
diesen |
/F210/ | Zutaten können hinzugefügt, gelöscht und
in ihren Attributen verändert werden
|
/F220/ | die Speisen setzen sich aus Zutaten zusammen |
/F230/ | Speisen können verändert bzw. völlig neu
zusammengestellt werden, solange es der Lagerbestand
zuläßt |
/F240/ | die Preise für Standardspeisen ergeben sich aus der
Summe der Verkaufspreise der einzelnen Zutaten,
können aber verändert werden |
/F250/ | Veränderungen in der Speisekarte sind jederzeit
möglich
|
/F260/ | Tagesabschluß des Restaurants möglich
|
/F270W/ | Sonderwünsche werden nicht in der Speisekarte angezeigt
und nach Tagesabschluß gelöscht
|
/F280W/ | entfernen verfallener Zutaten aus dem Lager bei
Tagesabschluß |
/F290W/ | Umsatzstatistik verschiedener Zeiträume |
/F300/ | Verkaufsstatistik |
/F310W/ | Festlegung einer unteren und einer oberen Grenze je Zutat im
Lagerbestand |
/F320W/ | bei Unterschreitung der unteren Grenze, Aufnahme in
Bestellwunschliste |
/F330W/ | Kontrolle bei Aufnahme der Zutaten in die Wunschliste, ob
Zutat schon in der Bestelltliste vorhanden und
ob untere Grenze auch mit der noch
nachzuliefernden Menge unterschritten ist |
/F340W/ | Bestellwunschliste kann auf Wunsch angezeigt und editiert
werden |
/F350W/ | bestellte Zutaten werden aus der Wunschliste entfernt und
in der Bestelltliste vermerkt |
/F360W/ | gelieferte Zutaten werden aus der Bestelltliste entfernt
und zum Lager hinzugefügt |
/F370W/ | die Lieferkosten der Zutaten werden in der Umsatzstatistik
berücksichtigt |
/F380/ | Realisierung von Zugriffsrechten
|
5 Produktdaten
5.1 Kundendaten
/D10/ | ein Kunde besitzt eine Kundennummer
|
/D20/ | der Kundennummer wird ein Liste mit den Bestellungen des
Kunden zugeordnet |
5.2 Zutaten
/D30/ | eine Zutat besitzt einen Namen, eine Mengeneinheit, eine
Anzahl, eine Min- und Maxanzahl, einen Einkaufs- und einen
Verkaufspreis
|
/D40/ | eine Speise besitzt eine Nummer, einen Namen, eine
Menge von Zutaten, aus denen sie besteht und einen
Verkaufspreis |
5.3 Kellner
/D50/ | Keller werden durch ihre ID eindeutig gekennzeichnet
|
/D60/ | jeder Kellner besitzt einen eigenen Geldbeutel
|
6 Produktleistungen
7 Benutzungsoberfläche
/B10/ | standardgemäß ist eine menüorientierte
Bedienung vorgesehen |
/B20/ | die Bedienungsoberfläche ist auf Mausbedienung
ausgelegt, eine Bedienung ohne Maus soll aber ebenfalls
möglich sein |
8 Globale Testfälle
Folgende Funktionssequenzen sind zu überprüfen:
/T10/ | Kellner durch den Manager einstellen, Kellner anmelden und
abmelden, Kellner entlassen |
/T20/ | Bestellung eines Kunden inklusive Sonderwunsch durch einen
Kellner aufnehmen,
einen Teil der Bestellung stornieren, Essen kochen (Koch),
Rechnung durch einen Kellner erstellen, Kunde
verläßt das Restaurant. |
/T30/ | Tagesabschluß durchführen, Zutatenliste für
die Nachbestellung editieren, Zutaten bestellen, Tag
weiterschalten, Zutaten werden
geliefert |
/T40/ | Statistiken einsehen |
|  |
 |  |  |
|
|
|
|
Die Sequenzdiagramme zeigen das Zusammenspiel der Klassen.
|
Funktion
|
|
Abbildung 8.1:
Sequenzdiagramm: Bestellung eines Kunden
|
|
|
Abbildung 8.2:
Sequenzdiagramm: Rechnung erstellen
|
|
|
|
Das Ergebnis der Analysephase ist ein erstes Klassendiagramm
(Abbildung 9.1), in dem
voraussichtliche Klassen miteinander in Beziehung gesetzt werden.
Die Klassen des Frameworks spielen in dieser Phase noch keine Rolle.
|
|
|
Abbildung 9.1:
Das erste Klassendiagramm
|
|
|
Das Restaurant stellt den zentralen Punkt der Anwendung dar. Es
beschäftigt Mitarbeiter, die verschiedene Aufgaben zu
erfüllen haben. Da sie sich alle durch eine ID und ein Passwort
identifizieren
müssen, besitzen sie eine gemeinsame Oberklasse. Kunden
tätigen Bestellungen und bezahlen Rechnungen in Anwesenheit eines
Kellners. Der Manager verwaltet die Bestände und führt einen
Tagesabschluß durch. Das Restaurant besitzt ein Lager, in welchem
alle vorhandenen Zutaten aufbewahrt werden. Die Speisen setzen sich aus
Zutaten zusammen. Werden bestimmte Mindestmengen bei den Zutaten
unterschritten, können sie nachbestellt werden.
|
Restaurant
|
|
|
|