View Full Version : [Frage] übung 3 - aufgabe 2 (lösung)
michi204
06-12-2003, 15:48
hallo!
hier meine bisherige lösung.
bin wie immer dankbar für tipps und so
http://stud4.tuwien.ac.at/~e0225848/oaeue3a2.jpg
lg michi
supporter
06-12-2003, 17:20
Die Identifizierung des Benutzers und die Überprüfung auf eine Sperre
sind doch Vorbedingungen für den Anwendungsfall "Buch entlehnen".
Wenn nun genau dieser Anwendungsfall im Aktivitätsdiagramm modelliert werden soll, ist es dann notwendung auch die vorhergehenden Anwendungsfälle wie bspw. "Benutzer identifizieren" im selben Diagramm zu modellieren?
michi204
06-12-2003, 17:23
Die Identifizierung des Benutzers und die Überprüfung auf eine Sperre
sind doch Vorbedingungen für den Anwendungsfall "Buch entlehnen".
Wenn nun genau dieser Anwendungsfall im Aktivitätsdiagramm modelliert werden soll, ist es dann notwendung auch die vorhergehenden Anwendungsfälle wie bspw. "Benutzer identifizieren" im selben Diagramm zu modellieren?
muss man die vorbedingungen nicht überprüfen?
lg michi
ich würde auch sagen, dass man das nicht überprüfen muss - schließlich ist die vorbedingung eine voraussetzung für "buch entlehnen", also das was modelliert werden soll
soll die beschreibung des fehlersituation 1 mit (Tippfehler) eigentlich darauf hindeuten, dass man dann optional zum "exemplar identifizieren" kann?
die aktuelle Vormerkung kann auch nur dann entfernt werden, wenn eine solche existiert...
michi204
06-12-2003, 18:32
@psycho:
thx für die hints, hier mein kommentar:
ad 1: wer prüft dann die vorbedingungen bzw. wo wird das geprüft?
ad 2: versteh nicht ganz was du hier meinst
ad 3: ja, aber zu 'Vormerkung auflösen' kommst du nur dann, wenn eh schon eine existiert (siehe die bedingung neben dem pfeil der dort hinführt)
lg michi
ad 1.
ich hätt gesagt, dass diese voraussetzung zuvor sichergestellt wird, also bevor "buch entlehnen" 'aufgerufen' wird... bin mir da aber auch nicht so sicher...
ad 2.
in der beschreibung des fehlerzustands 1 steht ja
"1. Exemplar nicht vorhanden (Tippfehler?)"
ich würde das so interpretieren, dass man dann eine neue eingabe machen kann, also optional zum "Exemplar identifizieren" zurückkommen kann.
ad 3.
du hast da ja "Auf Vormerkungen überprüfen"
und gehst unter der bedingung "[Aktiver Vormerkung für diesen Benutzer OR keine Vormerkung]" zu "akt. Vormerkung entfernen"
also kann da auch eine Vormerkung entfernt werden, wenn es keine gibt...
michi204
06-12-2003, 18:55
ad 2: versteh was du meinst.. aber ich hab ja keine möglichkeit hier zu sagen dass eine neue eingabe erfolgen soll oder? ich hab es hier so gemacht wie ich es bei klassen machen würde, dass der fehler 'nach oben' zurückgemeldet wird.
es ist irgendwie schwer sich den anw-fall praktisch vorzustellen... kann es nicht so sein, dass die daten in eine maske eingegeben werden, und dann, nach klick auf ok zb wird der anwendungsfall gestartet?
ich glaube eigentlich gehört ein/ausgabe schon dazu, nur irgendwie fehlen da die konkreten methoden das zu modellieren (vermutlich weil es wenig sinn macht).
ad 3: sorry da hast du natürlich recht. hab wieder mal nicht geschaut...
lg michi
Thousand
06-12-2003, 21:12
Hier ist mal meine Lösung. Hab, glaub ich, so ungefähr alles berücksichtigt. Wer Fehler findet, bitte posten ;)
http://stud4.tuwien.ac.at/~e0025867/bsp3_2.jpg
fehler 3 is eine sackgasse
Thousand
07-12-2003, 13:24
Danke, sonst noch was?
hi
wozu braucht man nach "Bestellung Prüfen" eigentlich das else?
ich meine mit dem else kommt man dann nach vormerkung prüfen.
und ist vormerkung das gleiche wie bestellung?
cu
hi
wozu braucht man nach "Bestellung Prüfen" eigentlich das else?
ich meine mit dem else kommt man dann nach vormerkung prüfen.
und ist vormerkung das gleiche wie bestellung?
cu
Hm, im Allgemeinen ist eine Vormerkung != Bestellung, aber hier braucht man kein ELSE nach "Bestellung Prüfen". Oder, noch genauer gesagt, braucht man einen ELSE-Zweig, der aber zum Fehler 2 führt. Ich sehe das so:
Prüfe Bestellung:
1) es gibt eine Bestellung vom aktuellen Benutzer, sie ist aber verfallen --> Fehler 4.
2) es gibt eine Bestellung vom aktuellen Benutzer --> OK, löse die Bestellung auf und markiere dann Exemplar als entlehnt.
3) es gibt keine Bestellung vom aktuellen Benutzer (ELSE) --> dann sag ihm dass er das Exemplar nicht entlehnen kann --> Fehler 2
<edit>
@Thousand
Nach "Vormerkung Prüfen" kommt man, wenn es eine Vormerkung vom aktuellen Benutzer gibt oder wenn es gar keine Vormerkungen gibt in den Zustand "löse die aktuelle Vormerkung auf". Wie kann man eine Vormerkung auflösen, die gar nicht existiert? Meiner Meinung nach sollte man da drei Fälle unterscheiden: keine Vormerkungen, eine Vormerkung von einem anderen Benutzer und eine Vormerkung vom aktuellen Benutzer.
</edit>
@psycho:
thx für die hints, hier mein kommentar:
ad 1: wer prüft dann die vorbedingungen bzw. wo wird das geprüft?
lg michi
auf den folien steht das diese punkte schon im anwendungsfall der davor ausgeführt wird überprüft werden
würde also auch sagen das sie in diesem anwendungsfall nicht mehr überprüft werden müssen
Thousand
07-12-2003, 16:02
Der else Zweig bei Bestellung prüfen ist notwendig, da es ja den Fall gibt, das wer anderer das Exemplar ausgeliehen hat. Dann kann man selber nicht mehr bestellen, sondern sich nur mehr vormerken lassen (oder hab ich da die Angabe falsch verstanden?). Und das muss man prüfen, wenn es keine Bestellung gibt.
@Frule: danke für den tipp, werd ich bei gelegenheit ändern
Ich glaub nicht, dass man den else-Zweig da braucht, da es hier ja nur ums Entlehnen selbst geht. Wenn jemand anders schon ausgeliehen hat reicht es meiner Meinung nach, wenn man auf den Fehlerfall 2 verweist.
michi204
07-12-2003, 19:07
@thousand:
die synchronisationsbalken darfst du aber glaub ich nur verwenden, wenn 2 sachen gleichzeitig passieren, und nicht bei einer verzweigung. siehe Buch S. 166 unten [Gehen einer Gabelung alternative Abläufe voraus, ..., so müssen diese ... zunächst durch eine Verbindungsstelle zusammengefasst werden, bevor sie in die Gabelung münden können, da ...]
lg michi
michi204
07-12-2003, 19:37
Der else Zweig bei Bestellung prüfen ist notwendig, da es ja den Fall gibt, das wer anderer das Exemplar ausgeliehen hat. Dann kann man selber nicht mehr bestellen, sondern sich nur mehr vormerken lassen (oder hab ich da die Angabe falsch verstanden?). Und das muss man prüfen, wenn es keine Bestellung gibt.
wie auch seth schon geschrieben hat, denke ich auch, dass man ja ein buch nur dann ausleiht wenn es auch da ist... ist es nicht da, kann ich es eh nicht ausleihen, das heißt aber nicht automatisch, dass ich vorgemerkt werden will.
EDIT:
hab jetzt alle fehlermeldungen und so eingearbeitet. danke für die tipps! hier ist meine neueste version...
http://stud4.tuwien.ac.at/~e0225848/ue3a2v2k.jpg
lg michi
ich hoffe die frage hat noch keiner gestellt ...
aber warum habt ihr das "auf Vormerkung prüfen" als eigene Aktion modelliert?
gehört das nicht zu dem Punkt "Exemplarzustand prüfen" ?
oder warum hat eine Vomerkung weniger mit dem Exemplarzustand zu tun als eine Entlehnung?
bzw. wäre das ja eine Aktivität (oder?)... aber ich hab leider nicht ganz verstanden wie ich eine Aktivität darstellen muss... vielleicht kann mir jemand das erklären...
danke
sebi
repomaxx
07-12-2003, 20:29
wie auch seth schon geschrieben hat, denke ich auch, dass man ja ein buch nur dann ausleiht wenn es auch da ist... ist es nicht da, kann ich es eh nicht ausleihen, das heißt aber nicht automatisch, dass ich vorgemerkt werden will.
EDIT:
hab jetzt alle fehlermeldungen und so eingearbeitet. danke für die tipps! hier ist meine neueste version...
http://stud4.tuwien.ac.at/~e0225848/ue3a2v2k.jpg
lg michi
Hmmm... Fehlerzustand 2 kann nur eintreten, falls das Buch aus dem Freihandbereich ist - also kanns keine Transition von 'Bestellung prüfen' auf 'Fehler 2' geben.
Hmmm... Fehlerzustand 2 kann nur eintreten, falls das Buch aus dem Freihandbereich ist - also kanns keine Transition von 'Bestellung prüfen' auf 'Fehler 2' geben.
Würd ich so nicht sagen: Ein Buch aus dem Magazin, das zuvor nicht bestellt wurde, wird auch nicht rausgegeben, ist in dem Sinn also auch nicht entlehnbar. Ist zwar eine sehr allgemeine Sichtweise dieses Fehlerfalls, aber wenn mans nicht so macht kommt man mit den 4 vorgegebenen Fehlerfällen einfach nicht aus.
repomaxx
07-12-2003, 20:54
Würd ich so nicht sagen: Ein Buch aus dem Magazin, das zuvor nicht bestellt wurde, wird auch nicht rausgegeben, ist in dem Sinn also auch nicht entlehnbar. Ist zwar eine sehr allgemeine Sichtweise dieses Fehlerfalls, aber wenn mans nicht so macht kommt man mit den 4 vorgegebenen Fehlerfällen einfach nicht aus.
Nach meinem Verständnis ist 'nicht entlehnbar' eine optionale Eigenschaft eines Exemplars aus dem Freihandbereich. Wenn man die textuelle Beschreibung des Bibliotheks-Informationssystems liest, steht bei den verschiedenen Entlehnmodalitäten im Punkt 1: "Manche Exemplare, die im Freihandbereich stehen, sind nicht entlehnbar".
Das mit den Bestellungen ist für mich in anderer Hinsicht ein Problem, denn in der textuellen Kurzbeschreibung des Use-Cases steht: "..., oder holen ein zuvor bestelltes Magazinexemplar ab." Für mich heisst das, das dies eine Vorbedingung für den Use Case sein muss und daher sowieso erfüllt sein muss (wurde das Buch nicht bestellt, dann kann der Anwendungsfall gar nicht durchgeführt werden, da das Exemplar gar nicht aus dem Magazin geholt wurde).
Nach meinem Verständnis ist 'nicht entlehnbar' eine optionale Eigenschaft eines Exemplars aus dem Freihandbereich. Wenn man die textuelle Beschreibung des Bibliotheks-Informationssystems liest, steht bei den verschiedenen Entlehnmodalitäten im Punkt 1: "Manche Exemplare, die im Freihandbereich stehen, sind nicht entlehnbar".
Ich habe es anders verstanden. Nicht entlehnbar == aus irgendeinem Grund kann man dieses Exemplar nicht entlehnen (auch deswegen, weil es schon entlehnt ist und also physisch nicht in der Bibliothek steht, aber nicht nur!). Ob das der Fall ist, wird in "Prüfe Exemplarzustand" geprüft und wenn ja --> Fehler 2 --> Endzustand. Wenn nein, wird fortgesetz, abhängig davon, ob es um ein FHB (oder LBS) Exemplar oder um ein Exemplar aus dem Bereich "Magazin".
Das mit den Bestellungen ist für mich in anderer Hinsicht ein Problem, denn in der textuellen Kurzbeschreibung des Use-Cases steht: "..., oder holen ein zuvor bestelltes Magazinexemplar ab." Für mich heisst das, das dies eine Vorbedingung für den Use Case sein muss und daher sowieso erfüllt sein muss (wurde das Buch nicht bestellt, dann kann der Anwendungsfall gar nicht durchgeführt werden, da das Exemplar gar nicht aus dem Magazin geholt wurde).
Du meinst also, dass es bei Bestellungen nur zwei Möglichkeiten gibt: entweder ist eine Bestellung (vom aktuellen Benutzer) verfallen und Fehler 3 tritt auf, oder ist sie nicht und das Exemplar kann entlehnt werden (und die Bestellung wird gleichzeitig aufgelöst)? Ok, aber was wenn folgendes Szenario passiert: ein Benutzer hat zwar das Exemplar nicht bestellt, versucht aber es zu entlehnen? Meiner Meinung nach sollte dann Fehler 2 (Exemplar nicht entlehnbar) auftretten.
Vorbedingung für diesen Anwendungsfall ist nur dass der Benutzer identifiziert ist und sein Account nicht gesperrt ist und _nicht_ dass der Benutzer ein konkretes Exemplar vom Magazin bestellt hat.
downforme
07-12-2003, 22:12
ich hab da mal eben ne frage: muß so ein aktivitätsdiagramm kreisfrei sein?
ich mein, man könnte doch den fehlerfall 1 doch so modellieren, das danach kein endknoten kommt, sondern wieder zu exemplar identifizeiren verzweigt wird.
oder was denkt ihr sollen wir mit dem hinweis (Tippfehler ?) anfangen?
altferdi
07-12-2003, 22:18
@michi
du hast den fall vergessen, das ein exemplar des fhb nicht entlehnbar sein kann.
ich hab einfach "entlehnbar" statt "nicht entlehnt" geschrieben.
downforme
07-12-2003, 22:27
bis auf das oben beschriebene problem sieht meine lösung folgendermaßen aus:
michi204
07-12-2003, 22:30
du hast den fall vergessen, das ein exemplar des fhb nicht entlehnbar sein kann.
ich hab einfach "entlehnbar" statt "nicht entlehnt" geschrieben.
du hast recht. aber entlehnbar kann man nicht statt dessen schreiben, denn es könnte ja auch entlehnbar, aber schon entlehnt sein. ich würde den fall [Exemplar aus LBS oder FHB UND nicht entlehnt] in [Exemplar aus LBS oder FHB UND entlehnbar UND nicht entlehnt] umbenennen.
lg michi
michi204
07-12-2003, 22:33
ich hab da mal eben ne frage: muß so ein aktivitätsdiagramm kreisfrei sein?
ich mein, man könnte doch den fehlerfall 1 doch so modellieren, das danach kein endknoten kommt, sondern wieder zu exemplar identifizeiren verzweigt wird.
oder was denkt ihr sollen wir mit dem hinweis (Tippfehler ?) anfangen?
was bringt es wenn du das nicht vorhandene exemplar noch mal und noch mal und immer wieder identifizierst? so würde ich dein diagramm lesen. es ist halt nur die frage, wo man sich da die eingabe vorstellt, wenn die eingabe erst bei identifizieren wäre, dann wäre das sicher eine möglichkeit...
lg michi
downforme
07-12-2003, 22:35
was bringt es wenn du das nicht vorhandene exemplar noch mal und noch mal und immer wieder identifizierst? so würde ich dein diagramm lesen. es ist halt nur die frage, wo man sich da die eingabe vorstellt, wenn die eingabe erst bei identifizieren wäre, dann wäre das sicher eine möglichkeit...
lg michi
klar, man kommt leicht in eine endlosschleife, aber mich stört dieser hinweis von wegen tippfehler und ich weiß nicht wie ich das einbauen soll. vielleicht mach ich mir ja auch schon wieder zu viele gedanken und sollte es einfach so lassen...
michi204
07-12-2003, 22:38
klar, man kommt leicht in eine endlosschleife, aber mich stört dieser hinweis von wegen tippfehler und ich weiß nicht wie ich das einbauen soll. vielleicht mach ich mir ja auch schon wieder zu viele gedanken und sollte es einfach so lassen...
ich denke, das ist nur so beschrieben, um zu verdeutlichen, wie dieser fehler entstehen kann, und hat keine weitere semantik :D wie unsere liebe vortragende das ausdrücken würde (dh. kann uns wurscht sein).
lg michi
mien lösungssansatz
hätte mal eine frage, kann man die beiden übergänge bestellung auflösen oder verlauf auflösen eigentlich auch so modellieren wie ich es modelliert habe???
Thousand
08-12-2003, 13:12
Also, ich bin noch nicht ganz überzeugt, wieso meine Lösung mit dem else nicht so geht. Folgendes Scenario:
1) Ben. A bestellt und entlehnt ein Exemplar E aus dem Magazin
2) Ben. B möchte es auch bestellen, kann dies aber nicht, da E bereits entliehen ist
3) Daher lasst sich B für E vormerken
4) A gibt E zurück
5) B möchte sich E abholen. Jetzt hat niemand eine Bestellung auf E, aber B hat eine Vormerkung auf E -> mein else Zweig.
Ist dieses Scenario nicht angabekonform? Hab ich was übersehen?
PS: Hab mein Diagramm oben mal auf den aktuellsten Stand gebracht
Thousand
08-12-2003, 13:14
@Myself: Ich glaub, da machst dus dir zu einfach
Also, ich bin noch nicht ganz überzeugt, wieso meine Lösung mit dem else nicht so geht. Folgendes Scenario:
1) Ben. A bestellt und entlehnt ein Exemplar E aus dem Magazin
2) Ben. B möchte es auch bestellen, kann dies aber nicht, da E bereits entliehen ist
3) Daher lasst sich B für E vormerken
4) A gibt E zurück
5) B möchte sich E abholen. Jetzt hat niemand eine Bestellung auf E, aber B hat eine Vormerkung auf E -> mein else Zweig.
Ist dieses Scenario nicht angabekonform? Hab ich was übersehen?
Hm... gute Frage. Ich weiss nicht...
Aber, so wie du es modelliert hast, kann auch folgendes Szenario passieren:
1. prüfe Exemplarzustand: es geht um ein Magazinexemplar und es ist entlehnbar.
2. prüfe Bestellung: es gibt keine Bestellungen, also dein else-Zweig, und man kommt in den Zustand "prüfe Vormerkung"
3. prüfe Vormerkung: es gibt keine Vormerkung. Da aber das Exemplar aus Magazin ist, wird "else" ausgeführt und das Programm spuckt den Fehler 3 aus. "Es gibt eine aktuelle Vormerkung von jemand anders". Was ja offensichtlich falsch ist. Hier sollte also noch eine Bedingung "[ist Magazin und es gibt keine Vormerkung]" stehen, die in den Zustand "Fehler 2" führt.
Aber, ist das ganze dann nicht ein bisschen zu kompliziert?
Noch was: schau dir das Zustandsdiagramm auf den Folien (S. 9). Ein Exemplar aus dem Magazin geht nie aus dem Zustand "nicht entlehnt, nicht bestellt" in den Zustand "entlehnt" direkt über, egal ob es Vormerkungen gibt oder nicht. Deswegen bin ich mir nicht sicher, ob dein oben beschriebenes Szenario angabekonform ist oder nicht.
Thousand
08-12-2003, 14:25
Hm... gute Frage. Ich weiss nicht...
Aber, so wie du es modelliert hast, kann auch folgendes Szenario passieren:
1. prüfe Exemplarzustand: es geht um ein Magazinexemplar und es ist entlehnbar.
2. prüfe Bestellung: es gibt keine Bestellungen, also dein else-Zweig, und man kommt in den Zustand "prüfe Vormerkung"
3. prüfe Vormerkung: es gibt keine Vormerkung. Da aber das Exemplar aus Magazin ist, wird "else" ausgeführt und das Programm spuckt den Fehler 3 aus. "Es gibt eine aktuelle Vormerkung von jemand anders". Was ja offensichtlich falsch ist. Hier sollte also noch eine Bedingung "[ist Magazin und es gibt keine Vormerkung]" stehen, die in den Zustand "Fehler 2" führt.
Hm... muss ich mir noch anschauen
Noch was: schau dir das Zustandsdiagramm auf den Folien (S. 9). Ein Exemplar aus dem Magazin geht nie aus dem Zustand "nicht entlehnt, nicht bestellt" in den Zustand "entlehnt" direkt über, egal ob es Vormerkungen gibt oder nicht. Deswegen bin ich mir nicht sicher, ob dein oben beschriebenes Szenario angabekonform ist oder nicht.
Stimmt, hab ich übersehen. Also ist mein Scenario wahrscheinlich nicht konform. Vermutlich muss B E noch bestellen, bevor er es abholen darf. Was sagst du dazu?
Thousand
08-12-2003, 14:34
Update meines Diagramms
Update meines Diagramms
Thousand:
eine anfänger frage: ist damit gemeint, dass die jpg datei aus dem posting vom 06.12.2003 auf dem neuesten stand?
danke
Thousand
08-12-2003, 16:56
@Shitty
jupp!
@Thousand
Wie hast du es eigentlich mit den 1.1..... in Rational rose hinbekommen????
Thousand
08-12-2003, 18:26
Hier (http://hades.gothic.at/iforum/showthread.php?t=13828) ist eine Beschreibung, wie man die automatische Nummerierung ausschaltet. Dann hab ichs einfach händisch nummeriert.
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.