Opgave til onsdag 5/9-2001

Henning Christiansen

Vi skal tænke os et meget forenklet flyreservationssystem, hvis eneste formål er at tage sig af reservationer til en bestemt flyafgang.

Vort fly (sikkert en gammel MD80'er) har 22 rækker, som hver har pladserne A,B og D,E,F.

Der er et antal, lad os side 2 eller 3, agenter som kan foretage reservationer online for kunder, de er taler med i telefonen eller over en skranke. For nemheds skyld antager vi, at hver kunde har et entydigt kundenummer.

Reservationen foregår på den måde, at kunden beder om et antal pladser, agenten fortæller om der er så mange ledige pladser og giver et forslag til kunden om, hvilke pladser i flyet, der kan være tale om. Kunden kan så acceptere eller afslå tilbudet, hvorefter agenten bekræfter eller afmelder en reservation, og i det sidste tilfælde får kunden udleveret et reservationsnummer.

Kunden skal så foretage en betaling inden 2 dage, ellers slettes reservationen automatisk. For nemheds skyld leger vi, at flyreservationssystem modtager information om betalingen i form af at indbetaling for givet reservationsnummer er modtaget (vi ser altså bort fra den faktiske pris). Reservationer er mulige op til 1 dag før afgangstidspunktet, og reservationer, som ikke er betalt inden den dag slettes også automatisk.

Der skal arbejdes med opgaven i grupper, og første trin går ud på i fællesskab at tegne tabeller og evt. hjælpevariable på et stykke papir, som svarer til reservationssystemets database. Tabellerne kan så opdateres med blyant og viskelæder.

Et eller flere medlemmer i gruppen er ansvarlig for at foretage opdateringerne, og de kommunikerer med agenterne vha. af kortfattede beskeder på et stykke papir (man må gerne læse dem højt i gruppen); aftal formatet for disse meddelelser. To eller flere medlemmer af gruppen tager så roller som agenter. Endelig har et medlem af gruppen til opgave at lege regnskabsafdeling, som sender meddelelser om betalinger til databasen (og for at få legen til at køre, er det nok smart at vedkommende smugkigger, hvad agenterne foretager sig). Tiden simuleres ved at lægge et ur på bordet, og vi lader et minut på uret svare til en dag i legen.

Næste trin i opgaven går ud på at få hele sagsgangen til at køre:

  1. Få en idealhistorie til at fungere, dvs. at alle reservationer foretages korrekt og at kommunikation med bruger foregår på en naturlig og høflig måde.
  2. Prøv dernæst at konstruere forløb, hvor der går skuddermudder i det f.eks. ved dårlig timing i meddelelserne eller simulerede uheld. Prøv at identificere så mange typer fejlsituationer som muligt.
Sammenlign med ACID-kriterierne (side 12 i [UW]) og præciser nogle principper for håndtering af meddelelser i systemet og eventuelle modifikationer af databasen, som gør det muligt at håndtere så mange situationer som muligt optimalt under de givne forhold.

Overvej om der er situationer, der ikke er taget højde for i det system, I har simuleret, og hvordan man evt. kan forbedre det. En ting, man umiddelbart får øje på, er at det ikke er beskrevet, hvad der skal ske med en betaling, som kommer for sent, dvs. at den pågældende reservation allerede er slettet?

Er opgaven for nem? Så udvid systemet, så det også foretager hotelreservationer. Der sælges nu kun charterrejser, hvor der skal høre hotelseng til. Der er kun dobbeltværelser, men det er muligt at bestille dobbeltværelse som enkeltværelse. Opfind et antal navngivne hoteller og bestem jer for, hvor mange værelser der maksimalt kan disponeres over på hvert hotel.

Er opgaven stadig for nem? Så udvid opgaven så der også kommer prisinformation med, og at systemet skal kontrollere om de indkommende batalinger svarer til betalingerne?

Er opgaven stadig for nem? Overvej, hvilke yderligere komplikationer, der kommer på banen, hvis systemet skal tage sig af en flyafgang pr. uge, og at nogen bestillinger vedrører en-uges rejser andre to-ugers. Hvilke andre forhold skal et reservationssystem for et realistisk rejsebureau tage sig af?