inf1050_uke10_losnin.. - IfI
inf1050_uke10_losnin.. - IfI
inf1050_uke10_losnin.. - IfI
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Oppgaver til kap. 9 med løsningsforslag<br />
Oppgave 1. Et bilutleiefirma ønsker et informasjonssystem for utleie av biler. Vanligvis<br />
reserverer kunden en bil, henter den og returnerer den etter en tids bruk. Når bilen hentes,<br />
kan kunden velge om hun ønsker forsikring. Når bilen returneres, mottar kunden en<br />
regning. Regningen er avhengig av hvor langt kunden har kjørt, om det er skader på bilen<br />
og om det mangler bensin på tanken.<br />
a. Identifiser aktører (primære og sekundære) og beskriv disse aktørenes mål. Aktører<br />
og mål kan med fordel settes opp i en tabell.<br />
Legg merke til at denne beskrivelsen fungerer som en systemavgrensning: Hvem er<br />
brukere av dette systemet, og hvilke oppgaver ønsker de å få løst?<br />
b. Lag et bruksmønsterdiagram for systemet<br />
c. Spesifiser bruksmønsteret "returner bil" (el.l.) med normal hendelsesflyt og<br />
variasjoner. Diskuter om spesifikasjonen indikerer behov for endringer i<br />
bruksmønsterdiagrammet fra oppgave b).<br />
d. Spesifiser andre bruksmønstre med normal hendelsesflyt og variasjoner<br />
© Erik Arisholm
1a. Identifiser aktører (primære og sekundære) og beskriv disse aktørenes mål.<br />
Litt av poenget med oppgave 1 er å avgrense systemet ved å identifisere primære og<br />
sekundære aktører. Jeg har valgt en systemgrense hvor kun ”kundebehandler” er primær<br />
aktør. ”Kunde” anser jeg som sekundær aktør på alle bruksmønstrene.<br />
1b. Lag et bruksmønsterdiagram for systemet<br />
© Erik Arisholm
1c. Spesifiser bruksmønsteret "returner bil" (el.l.) med normal hendelsesflyt og<br />
variasjoner. Diskuter om spesifikasjonen indikerer behov for endringer i<br />
bruksmønsterdiagrammet fra oppgave b).<br />
Oppgaven ber om å spesifisere et bruksmønster som heter ”Returner bil”, som jeg med<br />
vilje har gitt et litt tvetydig navn i forhold til hvem som kan være primær aktør.<br />
Siden jeg har valgt kundebehandler som primær aktør synes jeg det var naturlig å døpe<br />
om ”returner bil” til ”behandle retur av bil”.<br />
Navn: ”Behandle retur av bil<br />
Aktør: Kundebehandler<br />
Trigger: Kunde ønsker å returnere bil<br />
Pre-betingelse: Ingen<br />
Post-betingelse: Bilen er levert tilbake og regningen er betalt<br />
Normal Hendelsesflyt:<br />
1. Kundebehandler oppgir reg.nr<br />
2. Systemet finner leiekontrakten<br />
3. Kundebehandler oppgir hvor langt bilen har kjørt<br />
4. Kundebehandler oppgir tanknivå<br />
5. Kundebehandler oppgir info om skader<br />
6. Kundebehandler ber om regning<br />
7. Systemet beregner betalingssum basert på kjørelengde, tanknivå, skader osv og skriver<br />
ut regning<br />
8. Kundebehandler sier fra at regningen er betalt<br />
Variasjoner:<br />
2a. Finner ikke kontrakten:<br />
1. Systemet opplyser at feil reg.nr. Prøv igjen<br />
3a. Bilen har overskredet avtalt gratis kjørelengde:<br />
1. Systemet beregner tilleggsavgift<br />
4a. Tanknivået er for lavt i forhold til når bilen ble leid ut:<br />
1. Systemet beregner en høy bensin literspris som legges til leieprisen<br />
5a. Bilen er skadet:<br />
1. Kundebehandler oppgir om (hvilke av) skadene (som) må utbedres<br />
2. Systemet registrerer skadene<br />
3. Systemet sjekker om kunden har tegnet forsikring<br />
3a. Kunden har tegnet forsikring som dekker skadene:<br />
1. Systemet legger til forsikring egenandel i leieprisen<br />
3b. Kunden har ikke tegnet forsikring som dekker skadene:<br />
(dette er et vanskelig spesialtilfelle som ikke er ferdigspesifisert her…)<br />
1. Systemet noterer seg at regning for skaden skal ettersendes<br />
kunden når skaden er utbedret og prisen er kjent<br />
© Erik Arisholm
1d. Spesifiser andre bruksmønstre med normal hendelsesflyt og variasjoner<br />
Navn: Reserver bil<br />
Aktør: Kundebehandler<br />
Trigger: Kunde ønsker å reservere bil<br />
Pre-betingelse: Ingen<br />
Post-betingelse: Bilen er reservert<br />
Normal Hendelsesflyt:<br />
1. Kundebehandler velger tidsintervall (hentedato og returdato)<br />
2. Systemet returnerer en liste over tilgjengelige biler innenfor de spesifiserte datoene<br />
3. Kundebehandler velger en av bilene.<br />
4. Systemet ber om kundenr og finner kunden i systemet<br />
5. Systemet bekrefter at bilen er reservert for den gitte perioden<br />
Variasjoner:<br />
2a. Det finnes ingen tilgjengelige biler i valgt tidsintervall:<br />
1. Systemet opplyser om at det ikke er tilgjengelige biler innenfor oppgitt<br />
tidsintervall.<br />
2. Kundebehandler oppgir et nytt tidsintervall (punkt 1) eller avslutter<br />
bruksmønsteret.<br />
4a. Kunden finnes ikke:<br />
1. Systemet oppretter ny kunde<br />
Relatert informasjon:<br />
Vi har gjort en rekke antagelser som bør avklares med oppdragsgiver:<br />
- Vi antar at man reserverer en bestemt bil. Det impliserer at man enten kunne lage<br />
et reservasjonsobjekt som assosieres med valgt bil, eller lage en ny leiekontrakt<br />
med status ”reservert” og oppgitt for bilen. Det siste medfører et i utgangspunktet<br />
enklere design, men ”leiekontrakt” får flere ansvarsområder.<br />
- Vi skiller ikke mellom forskjellige biltyper. Det vil være en mulig utvidelse, hvor<br />
”biltype” (for eksempel liten bil, mellomklasse bil, stor bil, flyttebil, buss) kan<br />
spesifiseres i punkt 1 i normal hendelsesflyt. Et slikt valg vil også medføre en<br />
mulig ny klasse: BilType som assosieres med Bil.<br />
- Vi kunne også skille mellom ”gode” og ”mindre gode” kunder, og gi fordeler til<br />
gode kunder…<br />
- Vi antar at forsikring og annen detaljert informasjon om leieforholdet ordnes når<br />
kunden henter bilen (bruksmønsteret ”Lei ut bil”)<br />
© Erik Arisholm