09.08.2013 Views

inf1050_uke10_losnin.. - IfI

inf1050_uke10_losnin.. - IfI

inf1050_uke10_losnin.. - IfI

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!