UNIVERSITETET I OSLO



Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gerhard Skagestein: Systemutvikling fra kjernen og ut, fra skallet og inn.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Spesifikasjon av Lag emne

UNIVERSITETET I OSLO

Relasjonsdatabasedesign

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

INF1050 Klasseromsoppgave Uke 6

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

Universitetet i Oslo. Oppgaver kurs i bestillingssystemet for rollen Rekvirent

UNIVERSITETET I OSLO

Bruk av oppgaver og grupper i

Veiledning for innlevering av Årsrapport

infotorg Enkel brukermanual

UNIVERSITETET I OSLO

Romlig datamanipulering

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

HØGSKOLEN I SØR-TRØNDELAG

Dagens tema. Den redundansfri datamodellen. Modellenes to formål. Den grunnleggende konstruksjonen det elementære utsagnet

Datamodellering med UML (forts.)

UNIVERSITETET I OSLO

Vekk med «bossspannene» innen Avfalls konferanse 2013

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet. Kontroller at oppgavesettet er komplett før du begynner å besvare det

Brukerveiledning for å legge inn Støtteordning, Rammer, Forenklet tilsagn, Endringer på tilsagn, Årsrapportering

1. SQL spørringer mot flere tabeller

infotorg Enkel brukermanual

Løsningsforslag, Ukeoppgaver 10 INF2310, våren 2011 kompresjon og koding del II

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

Modellenes to formål. Datamodellering med UML (forts.) Fra naturlig språk til datamodell. Figur 5-2. Ogdens trekant

Modellenes to formål. Datamodellering med UML (forts.) Ugrupperte og grupperte modeller. Figur 5-2. Ogdens trekant

UNIVERSITETET I OSLO

Kanter, kanter, mange mangekanter

1. SQL datadefinisjon og manipulering

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Brukerveiledning Visma Bizweb i Visma Global

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

2009 Thomas Haugland Rudfoss. PowerPoint 2007 En rask introduksjon

Niels Henrik Abels matematikkonkurranse

Uansett hvilken håndbok du benytter vil fremgangsmåten være den samme. I denne veiledningen benytter vi personalhåndboken som eksempel.

Miljørisikovurdering (og søknader) noen tanker og forslag til metode og innhold

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UML 1. Use case drevet analyse og design Kirsten Ribu

RUTEPLANLEGGINGSSYSTEM BRUKERVEILEDNING

Utførelse av programmer, metoder og synlighet av variabler i JSP

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

eportal for legekontoret

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

UNIVERSITETET I OSLO

Den redundansfri datamodellen

HØGSKOLEN I SØR-TRØNDELAG

INF1050 Systemutvikling

UNIVERSITETET I OSLO

Vurderingsveiledning - generell del

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Enalyzer Norge. Nice to know - ESS

UNIVERSITETET I OSLO

Løsningsforslag til Case. (Analysen)

UNIVERSITETET I OSLO

Denne teksten er i all hovedsak hentet fra FNOs (Finansnæringens fellesorganisasjon).

Brukerveiledning for klubb

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Datasikkerhetserklæring Kelly Services AS

UNIVERSITETET I OSLO

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser

Eksamensoppgave i TIØ4120 Operasjonsanalyse, gk.

Dagens tema. Den redundansfri datamodellen. Modellenes to formål. Individer i interesseområdet

Brukerveiledning for klubb

Spøkelsesjakten. Introduksjon

PixEdit Guide MEDFAK (5. utkast)

Slik administrerer du Ståstedsanalysen

Brukerveiledning. for sensor

Testrapport. Studentevalueringssystem

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Transkript:

Sensorveiledning INF050/INF02 vår2005 Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF 050 Systemutvikling INF02 Utvikling av datasystemer Eksamensdag: Onsdag 5. juni 2005 Tid for eksamen: 9.00-2.00 (INF050), 9.00-3.00 (INF02) Oppgavesettet er på: 4 sider pluss vedlegg Vedlegg: UML-diagrammer for komplettering 2 sider Tillatte hjelpemidler: Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å svare på spørsmålene. Innledning Firmaet Papirgjenvinning har kontrakt på innsamling av returpapir fra husholdninger i Ruristad kommune. Firmaet har kunnet konstatere at innsamlingen ikke fungerer optimalt av og til er enkelte papircontainere nesten tomme når de tømmes, på den annen side kommer det inn mange klager på overfylte containere som tømmes for sjelden. For å forbedre innsamlingsprosessen har man bestemt seg for å dra nytte av en nylig oppfunnet elektronisk enhet som kan installeres i hver enkelt papircontainer og som ved hjelp av SMS-meldinger kan rapportere til et sentralt informasjonssystem sin egen identifikasjon og hvor mye papir det er i containeren. Vi skal i denne oppgaven se litt på hvordan det sentrale informasjonssystemet bør utformes med tanke på å forbedre papirinnsamlingsprosessen. Oppgave (25% 45 min.) For databasen i det sentrale systemet er foreslått følgende ugrupperte dataorienterte UML-klassediagram: Gateadresse Abonnent adressetekst {id} abonnentnr {id} bruker Poststed postnr {id} Abonnent m/ containerplass Bil kjennemerke {id} «identifying» Tømmerute Størrelse # m 3 {id} Fyllingsgrad # % {id} Papircontainer containernr {id} oppstilling «identifying» Dag dato {id} Eksamen i INF050/INF02 Side av 2 5. juni 2005

Abonnenter kan bruke (dvs. kaste papiret sitt i) en eller flere papircontainere. Samme papircontainer kan brukes av flere abonnenter. Ikke alle abonnenter har papircontainer på egen grunn, derfor er underbegrepet Abonnent m/ containerplass opprettet. Papircontainere kan oppstilles bare hos abonnenter med containerplass. Basert på informasjon om abonnentenes adresser og papircontainernes størrelse og fyllingsgrad legges det for hver arbeidsdag og disponibel tømmebil en tømmerute. Algoritmen for å legge de mest hensiktsmessige tømmerutene er komplisert, og vi skal ikke komme nærmere inn på den her. a) Grupper den gitte modellen til en relasjonsdatabasestruktur. Du behøver ikke tegne opp den grupperte modellen, det holder med å angi selve relasjonsdatabasestrukturen, dvs. tabeller med attributter, primærnøkler og referanseintegriteter. Begrunn valg av løsning for gruppering av underbegrepskonstruksjonen. Hvis du finner unyttige tabeller som kan strykes, begrunn hvorfor du finner dem unyttige. Det er to utfordringer i denne deloppgaven: Å håndtere --assosiasjonene korrekt Velge hensiktsmessig gruppering for underbegrepskonstruksjonen. Her må vi skjele litt til bruken. Planleggingen av tømmeruten involverer bare abonnenter med containerplass, men vi trenger adressen, derfor er det nærliggende å velge partisjonering (jfr. læreboka side 42). Dette er imidlertid bare et forslag, andre begrunnede løsninger kan være OK. Relasjonsdatabasestrukturen blir: Abonnent: abonnentnr, adressetekst, postnr Abonnent m/containerplass: abonnentnr, adressetekst, postnr Papircontainer: containernr, størrelse, fyllingsgrad, abonnentnr Tømmerute: kjennemerke, dato Tømming: kjennemerke, dato, abonnentnr Bruksrett: abonnentnr, containernr Gateadresse: adressetekst Poststed: postnr Størrelse: størrelse Fyllingsgrad: fyllingsgrad Bil: kjennemerke Dag: dato Attributtnavnene i Størrelse og Fyllingsgrad er her tatt fra begrepsnavnet (egentlig rollenavnet) istedenfor representasjonen for å gjøre relasjonsdatabaseskjemaet mer leselig. For oppløsningen av --assosiasjonene er det nødvendig å introdusere nye begrepsnavn for assosiasjonsklassene, her er foreslått Tømming og Bruksrett. Åpenbare kandidater til strykning er Størrelse, Fyllingsgrad, Dag, Gateadresse. Andre mulige kandidater er Postnr og Bil, men her kan det fort komme flere attributter, og det kan være greitt å ha tabellene for kontroll. Etter strykning sitter vi igjen med: Eksamen i INF050/INF02 Side 2 av 2 5. juni 2005

Abonnent: abonnentnr, adressetekst, postnr Abonnent m/containerplass: abonnentnr, adressetekst, postnr Papircontainer: containernr, størrelse, fyllingsgrad, abonnentnr Tømmerute: kjennemerke, dato Tømming: kjennemerke, dato, abonnentnr Bruksrett: abonnentnr, containernr Poststed: postnr Bil: kjennemerke Her har vi følgende referanseintegriteter: Fra Abonnentm/containerplass.abonnentnr. mot Abonnent.abonnentnr (pga. underbegrepskonstruksjonen) Fra Abonnent.postnr mot Poststed.postnr Fra Abonnentm/containerplass.postnr mot Poststed.postnr Fra Papircontainer.abonnentnr mot Abonnentm/containerplass.abonnentnr Fra Tømmerute.kjennemerke mot Bil.kjennemerke Fra Tømming.(kjennemerke,dato) mot Tømmerute.(kjennemerke,dato) Fra Tømming.abonnentnr mot Abonnentm/containerplass.abonnentnr Fra Bruksrett.abonnentnr mot Abonnent.abonnentnr Fra Bruksrett.containernr mot Papircontainer.containernr. b) Er det et område i relasjonsdatabasestrukturen der det kan være hensiktsmessig å denormalisere? Denormalisering kan brukes for å lette tilgangen til informasjon ved å dobbeltlagre. Vi bør bare dobbeltlagre uforanderlige opplysninger. Et forslag er å utvide Tømming med abonnentens adressetekst og postnr. c) I de tilfellene abonnenter deler på en container er det vanlig at hver av dem betaler en like stor andel av tømmeavgiften. Hvilke endringer må gjøres i modellen for å kunne lagre at noen abonnenter skal betale mer, andre en mindre andel av avgiften? (Tegn gjerne endringene inn i vedlegget og lever det sammen med resten av besvarelsen.) Dette gjøres ganske enkelt ved å knytte et prosentandelsbegrep eller et brøkbegtep til assosiasjonsklassen Bruksrett d) I datamodellen er det nå bare mulig å legge inn at containerne hos en abonnent med containerplass skal tømmes på en bestemt tømmerute. Hvilke endringer må gjøres i modellen for at vi også skal kunne lagre rekkefølgen for tømmingen hos abonnentene på en tømmerute? (Tegn gjerne endringene inn i vedlegget og lever det sammen med resten av besvarelsen.) Her trenger vi en nummerering av tømmingene som vi kan sortere på. Istedenfor å oppfatte Tømming som en assosiasjonsklasse mellom Tømmerute og Abonnentm/containerplass, gjør vi Tømming om til et vanlig begrep som er delvis identifisert med et sekvensnr resten av identifikatoren oppstår ved å gjøre assosiasjonen mot Tømmerute «identifying». Assosiasjonen mot Abonnentm/containerplass blir ikke «identifying». Tabellen Tømmin blir da: Tømming: kjennemerke, dato, sekvensnr, abonnentnr (og evt. gateadresse, postnr pga denormalisering) Eksamen i INF050/INF02 Side 3 av 2 5. juni 2005

Oppgave 2 (20% 36 min.) Følgende tabell gir en oversikt over abonnentene og deres adresser: Abonnent abonnentnr gateadresse postnr poststed Følgende tabell gir oversikt over containernes størrelse, fyllingsgrad og hos hvilke abonnenter de er plassert: Container containernr abonnentnr størrelse fyllingsgrad I begge tabeller er attributter som inngår i primærnøkkelen markert med fet skrift. a) Er hver enkelt av disse tabellene på Boyce-Codd normalform? Hvis ikke, hva må gjøres for å få dem over på denne formen? Det er en funksjonell avhengighet fra postnr til poststed, derfor bør postnr, poststed skilles ut som egen tabell og postnr beholdes som fremmednøkkel i Abonnent. (Siden lærebokens kapittel 6 formelt ikke er med i pensum denne gangen, er siste halvpart av spørsmålet utenfor pensum. Kandidater som ikke har svart tilfredsstillene på denne deloppgaven, skal ikke gå ned en karakter av denne grunn.) b) Hvilken referanseintegritet er det nærliggende å etablere mellom de to tabellene? Gjør rede for de to ulike måtene denne referanseintegriteten kan bli brutt på, og hva som bør skje i hvert av de to tilfellene. Fra Container.abonnentnr mot Abonnent.abonnentnr. Kan brytes ved å inserte Container med ikke-eksisterende abonnentnr, eller ved å delete Abonnent som har Container med sitt containernr. Den enkleste reaksjonen er å avbryte oppdateringen med en feilmelding i begge tilfeller. Ved delete av Abonnent kan en cascading delete også være aktuelt (fjerne både Abonnent og hans Containere). c) Sett opp en SQL-spørring som returnerer alle tilgjengelige opplysninger om alle containere for et gitt abonnentnr. SELECT FROM Container WHERE abonnentnr = gitt abonnentnr d) Sett opp en SQL-spørring som returnerer summen av størrelsene på containerne for et gitt abonnentnr. SELECT SUM(størrelse) FROM Container WHERE abonnentnr = gitt abonnentnr e) Sett opp en SQL-spørring som returnerer summen av størrelsene på containerne for et gitt abonnentnr, sammen med abonnentens gateadresse, postnr og poststed. SELECT MIN(gateadresse), MIN(postnr), SUM(størrelse) FROM Abonnent, Container WHERE Abonnent.abonnentnr=Container.abonnentnr AND abonnentnr = gitt abonnentnr Eksamen i INF050/INF02 Side 4 av 2 5. juni 2005

f) Sett opp en SQL-spørring som returnerer en liste, sortert på postnr, over alle abonnenter med deres gateadresser, postnr og poststed, samt hvor mye papir i alt som ligger i alle containerne hos hver og en av dem. SELECT MIN(gateadresse), MIN(postnr), SUM(størrelsefyllingsgrad) FROM Abonnent, Container WHERE Abonnent.abonnentnr=Container.abonnentnr GROUP BY Abonnent.abonnentnr ORDER BY Abonnent.postnr Oppgave 3 (25% 45 min.) I denne oppgaven skal du lage en liten del av en objektorientert UML-modell for systemet. Dersom vi antar at hver fysiske papircontainer ligger utenfor systemgrensen (dvs at den kan betraktes som et annet system) vil Papircontainer kunne modelleres som en aktør for et bruksmønster som sørger for at attributtet fyllingsgrad i et tilsvarende papircontainer-objekt oppdateres. Dersom aktøren Papircontainer på eget initiativ sender en SMS-melding til systemet hver gang fyllingsgraden endres, kan Papircontainer modelleres som en primær aktør til bruksmønsteret Oppdater fyllingsgrad, som skissert i følgende modell: Oppdater Fyllingsgrad Papircontainer a) Fullfør den tekstlige spesifikasjonen for bruksmønsteret Oppdater Fyllingsgrad med utgangspunkt i vedlegg 2 (fyll inn blanke felter). Bruksmønster: Oppdater Fyllingsgrad Aktør: Papircontainer Trigger: Fyllingsgraden ble endret, dvs, noen kastet papir i containeren eller containeren ble tømt. Postbetingelse: Fyllingsgraden for papircontaineren er oppdatert i systemet Normal hendelsesflyt:. Papircontaineren sender SMS-melding til systemet med id og fyllingsgrad 2. Systemet oppdaterer fyllingsgraden for papircontaineren Variasjoner: 2a. Papircontaineren er ikke registrert i systemet:. Systemet sender feilmelding til Administrator Eksamen i INF050/INF02 Side 5 av 2 5. juni 2005

b) Fullfør sekvensdiagrammet og det tilsvarende klassediagrammet for normal hendelsesflyt for bruksmønsteret Oppdater Fyllingsgrad, med utgangspunkt i vedlegg 3 (fyll inn manglende meldinger og metoder og evt. andre mangler). Kant +oppdaterfyllingsgrad(in containernr, in fyllingsgrad) : boolean OppdaterFyllingsgrad PapirInnsamling +oppdaterfylllingsgrad(in containernr, in fyllingsgrad) : boolean +finncontainer(in containernr) : PapirContainer PapirContainer -containernr -fyllingsgrad +nyfyllingsgrad(in fyllingsgrad) Eksamen i INF050/INF02 Side 6 av 2 5. juni 2005

Oppgave 4 (0% 8 min.) Et informasjonssystem som skissert i innledningen, med en database som tilsvarer datamodellen i oppgave, faller åpenbart inn under Personopplysningsloven. a) På hvilket rettslig grunnlag kan firmaet Papirgjenvinning trolig få hjemmel til å behandle personopplysningene? Tillatelse kan skaffes på tre måter: lovhjemmel, samtykke eller nødvendighetsgrunn (læreboka side 392). Det skulle i dette tilfelle være enkelt å argumentere for at personopplysningene er nødvendige. b) Må firmaet søke om konsesjon for å behandle personopplysningene? Begrunn svaret! Konsesjon må søkes når personopplysningene er sensitive. Det er ikke tilfelle her, så det er tilstrekkelig med en melding til Datatilsynet. (Læreboka har en uheldig avsnittsinndeling på side 393 som kan føre til at leseren tror at det alltid må søkes om konsesjon. Spørsmålet er bl.a tatt med for å se hvor utbredt denne misforståelsen er. Feil svar bør ikke trekke hvis det er begrunnet ut fra denne delen av teksten.) c) Firmaet Papirgjenvinning får en henvendelse fra avisen Ruristad-posten om å få en liste over abonnenter som kaster lite papir (de abonnerer antagelig ikke på Ruristad-posten). Har Papirgjenvinning lov til å gi avisen en slik liste? Begrunn svaret! Det kommer litt an på hva avisen har tenkt å bruke opplysningene til (bidra til bedre papirinnsamling eller sende reklame for avisa til ikke-abonnenter.) Poenget her er at personopplysninger bare skal brukes til det formål de opprinnelig er samlet inn for (lærebokas avsnitt 7.2.3). Oppgave 5 (20% 36 min.) For å utvikle informasjonssystemet tenker man seg følgende framdriftsplan: Teste ut om overføringen av fyllingsgraddata fra papir-containerne til det sentrale systemet fungerer som det skal, og om den er pålitelig Lage den delen av databasen som tar vare på opplysninger om abonnenter, containere og fyllingsgrader. Man forutsetter å bruke det samme databasehåndteringssystemet som for timeregistreringssystemet. Lage og teste funksjonalitet som gir tilstrekkelig opplysninger for manuell planlegging av tømmeruter Lage og teste funksjonalitet for automatisk produksjon av forslag for tømmeruter forslagene kan deretter modifiseres manuelt Lage og teste funksjonalitet for automatisk produksjon av tømmeruter Bak denne planen ligger et mer eller mindre bevisst valg av strategier. Gi et begrunnet, men kortfattet svar for hvert av spørsmålene nedenfor. Vær oppmerksom på at man innenfor hvert spørsmål kan bruke en kombinasjon av flere konkrete strategier. Hvis nødvendig, gjør antagelser i tillegg til hva som kan trekkes ut av den knappe skissen av framdriftsplanen ovenfor. Systemutviklingsstrategier er behandlet i lærebokas avsnitt 2.3. Oppgaveteksten kan tolkes i flere retninger, og det forlanges ikke presise svar. Begrunnelsen er viktigere! a) Fokuserer planen på informasjonssystemet, organisasjonen eller individet? Det er primært organisasjonen som står i fokus. Det er lite diskusjon om arbeidsforholdene til papirinnsamlerne, og bare litt om abonnenter med overfylte papircontainere. Eksamen i INF050/INF02 Side 7 av 2 5. juni 2005

b) Hvilken utviklingsstrategi ligger til grunn? Det foreligger relativt klare mål, så strategien synes å være mer analytisk enn eksperimentell. c) Hvilken leveransestrategi ligger til grunn? I planen ser vi en klar delleveransestrategi. d) Bygges systemet fra kjernen og ut, eller fra skallet og inn? Planen begynner med uttesting av dataoverføringer egentlig et bruksmønster (jfr. oppgave 3). Så her går vi fra skallet og inn. I det andre kulepunktet skifter vi imidlertid utviklingsretning til fra kjernen og ut, fordi vi begynner å se på databasen. I de to siste kulepunktene er vi tilbake til skallet og inn e) Hvilken gjenbruksstrategi ligger til grunn? Vi skal i alle fall gjenbruke databasehåndteringssystemet. Øvrig gjenbruk sier planen intet om. f) Hvilken planleggingsstrategi ligger til grunn? Planen indikerer en viss grad av risikostyring, siden man vil teste ut dataoverføringen mellom papircontainere og sentralsystem først. Virker ikke dette tilfredsstillende, har det ingen hensikt å utvikle resten av systemet. Også den gradvise overgangen fra manuell til automatisert planlegging av tømmeruter indikerer risikostyring. På den annen side virker planen ganske forutbestemt. Hvordan planleggingsstrategien er må mer detaljert nivå, kan vi ikke si så mye om. g) Brukes omfangsstyring, eller tids- og kostnadsstyring? Det er ikke angitt noe om tid og kostnader. Planen indikerer ren omfangsstyring. Oppgave 6 Bare for INF02 (60 ekstra min.) a) Med utgangspunkt i relasjonsdatabasestrukturen i oppgave 2, sett opp en SQLspørring som returnerer en liste, sortert på postnr, over alle abonnenter med deres gateadresser, postnr og poststed, samt hvor mye papir i alt som ligger i alle containerne hos hver og en av dem. Hvis den totale papirmengden hos en abonnent er mindre eller lik 0, m 3, skal abonnenten utelates fra listen. SELECT MIN(gateadresse), MIN(postnr), SUM(størrelsefyllingsgrad) FROM Abonnent, Container WHERE Abonnent.abonnentnr=Container.abonnentnr GROUP BY Abonnent.abonnentnr HAVING SUM(størrelsefyllingsgrad) > 0. ORDER BY Abonnent.postnr b) Opplysninger om fyllingsgrad og måletidspunkt skal overføres fra papircontainerne til det sentrale informasjonssystemet i et XML-format. Gi et eksempel på innholdet i en slik XML-melding. <?xml version=.0 encoding= iso-8859-?> <!DOCTYPE PAPIRMENGDE SYSTEM papirmengde.dtd > <papirmengde> <containernr>2345</containernr> <fyllingsgrad>68</fyllingsgrad> </papirmengde> Hovedkravet her er at dokumentet er velformet. c) Utvid datamodellen i oppgave slik at den også omfatter det geografiske beliggenheten av containerplasser (egentlig for Abonnent m/ containerplass). Det konseptuelt enkleste er å innføre et nytt begrep Punkt (jfr. læreboka figur 2- Eksamen i INF050/INF02 Side 8 av 2 5. juni 2005

) og knytte dette til abonnenten. En mer primitiv løsning er å opprette separate begreper for henholdsvis nord- og øst-koordinatene. d) En tømmerute kan beskrives ved hjelp av en kurve i x, y og t. La oss for enkelhets skyld anta at kurven er lineær mellom containerplassene. Skriv en topologisk skranke som uttrykker at en tømmebil ikke skal kjøre fortere enn 50 km/t? Vi bruker koordinatene (x0, y0, t0) og (x, y, t) for de to containerplassene. Enkle geometriske betraktninger fører da til ulikheten sqrt((y-y0) 2 + (x-x0) 2 )/(t-t0) < 50, evt. med tillegg av noen konstante faktorer for konvertering mellom måleenheter langs aksene. e) For å få en oversikt over hvilke containere en abonnent kan bruke, er det laget en fil med følgende struktur (det finnes ett containerfelt for hver container abonnenten kan bruke): Abonnent_containerbruk abonnentnr gateadresse postnr poststed container container2 På hvilken normalform er denne filen? Hva må gjøres for å få den på Boyce-Codd normalform? Tegn opp resultatet av normaliseringen! Den er ikke på noen normalform i det hele tatt, fordi den inneholder en repeterende gruppe. Det første vi må gjøre er å bli kvitt den: abonnentnr, container, gateadresse, postnr, poststed Herfra er det bare å gjennomføre en standard normaliseringsprosess basert på de opplagte funksjonelle avhengighetene fra abonnentnr mot gateadresse og postnr og fra postnr mot poststed. De ulike normalformene på veien bør nevnes. BCNFformen er abonnentnr gateadresse postnr abonnentnr container postnr poststed Eksamen i INF050/INF02 Side 9 av 2 5. juni 2005

Vedlegg (kan legges ved besvarelsen) Gateadresse Abonnent adressetekst {id} abonnentnr {id} bruker Poststed postnr {id} Abonnent m/ containerplass Bil kjennemerke {id} «identifying» Tømmerute Størrelse # m 3 {id} Fyllingsgrad # % {id} Papircontainer containernr {id} oppstilling Dag dato {id} «identifying» Vedlegg 2 (kan legges ved besvarelsen) Bruksmønster: Oppdater Fyllingsgrad Aktør: Trigger: Postbetingelse: Fyllingsgraden for papircontaineren er oppdatert i systemet Normal hendelsesflyt:. Papircontaineren sender SMS-melding til systemet med containernr og fyllingsgrad 2. Variasjoner: 2a. Eksamen i INF050/INF02 Side 0 av 2 5. juni 2005

Vedlegg 3 (kan legges ved besvarelsen) kantobjektet Kant PapirInnsamlin PapirInnsamling dennecontainere PapirContainer Papircontaine : OK:=oppdaterFyllingsgrad(containerNr, fyllingsgrad):boolean.: kontrollobjektet OppdaterFyllingsgrad.2:.2.: dennecontaineren:=finncontainer(containernr):papircontai.2.2: Kant OppdaterFyllingsgrad PapirInnsamling PapirContainer -containernr -fyllingsgrad +nyfyllingsgrad(in fyllingsgrad) Eksamen i INF050/INF02 Side av 2 5. juni 2005

Eksamen i INF050/INF02 Side 2 av 2 5. juni 2005