MARE NOSTRUM. Del 2 Kravspesifikasjon

Like dokumenter
MARE NOSTRUM. Del 4 Brukermanual

Dagbok. Januar. Uke 2 ( ) Uke 3 ( ) Uke 3 (17.01, 12:45-14:00)

MARE NOSTRUM. Del 6 Vedlegg 1 - Ordliste

MARE NOSTRUM. Del 3 Produktrapport

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case? Use case modellering. Eksempel

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case?

Del - leveranse Del 2. Inf 2120 fredag Gruppe 1 Knut Johannes Dahle

GJENNOMGANG OBLIGATORISK OPPGAVE 1

Løsningsforslag til Case. (Analysen)

Kapittel 7 & 8. Kravspesifikasjoner & Data design. Thomas Tjøstheim og Thomas Edvinsen. 20 September Kapittel 7 & 8 p.1/20

Use Case-modellering. INF1050: Gjennomgang, uke 04

UKE 11 UML modellering og use case. Gruppetime INF1055

Team2 Requirements & Design Document Værsystem

Løsningsforslag: Oblig 1. INF1050: Gjennomgang, uke 12

Kravspesifikasjon. Forord

Use Case-modell. Vurdering av oppdragsgivers krav

Kravspesifikasjon. Aker Surveillance. Gruppe 26 Hovedprosjekt ved Høgskolen i Oslo og Akershus. Oslo,

Produktdokumentasjon. Madison Møbler Administrasjonsside og Nettbutikk

Krav. Beskriver tjenestene produktet skal håndtere Kravene kan testes

ChiCMS Hovedprosjekt ved Høgskolen i Oslo 2011

Innholdsfortegnelse INNHOLDSFORTEGNELSE... 2 REVISJONSOVERSIKT...4 INTRODUKSJON MED FORUTSETNINGER... 5

Oblig 5 Webutvikling. Av Thomas Gitlevaag

PROSESSDOKUMENTASJON

Use Case Modeller. Administrator og standardbruker

GJENNOMGANG UKESOPPGAVER 4 USE CASE MODELLERING HELGA NYRUD & KRISTIN BRÆNDEN

INF2120 V2005. Gruppe 2 christrc ieronnin kjetimk noushinm sjuros. Trafikanten+ Innlevering

Spesifikasjon av Lag emne

Kravspesifikasjon Hovedprosjekt ved Høgskolen i Oslo Våren 2008

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Prosjektgruppen: Gjermund Gartmann Tommy Jansson Margrethe Store. Prosjektledelse: Margrethe Store Kvalitetssikring: Tommy Jansson

Kravspesifikasjon. Utvikling av moduler til CMS for bonefish.no. Gruppe 08-23

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Entobutikk 3.TESTRAPPORT VÅR 2011

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

GJENNOMGANG UKESOPPGAVER 9 TESTING

System Dokumentasjon. Team2. Høgskolen i Sørøst-Norge Fakultet for teknologi, naturvitenskap og maritime fag Institutt for elektro, IT og kybernetikk

Akseptansetesten. Siste sjanse for godkjenning Etter Hans Schaefer

Funksjonskravene er delt opp i to deler, krav til spillsekvens og generelle funksjonskrav.

Testrapport for Sir Jerky Leap

TESTRAPPORT Tittel på hovedprosjektet: Varebestillingssystem for Wokas Salg AS

WinTid Scheduler. Oppgradering til versjon HRM

TESTRAPPORT - PRODSYS

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

STE6221 Sanntidssystemer Løsningsforslag

Produktrapport Gruppe 9

3.3 Case 3: Opprette en bruker Case 4: Endre en bruker... 8

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

Software Development Plan. Software Development Plan. Forum / Nettverkssamfunn Team 2

Forprosjektrapport. Gruppe 34. Magnus Dahl Hegge s153549

Kravspesifikasjon. 14. oktober 2002

RUTEPLANLEGGINGSSYSTEM BRUKERVEILEDNING

SOFTWARE REQUIREMENT & DESIGN DOCUMENT

Oppfølgingsdokument. Kode januar 2004 GymPack. D Oppfølgingsdokument. Periode 009 Forfatter. Hanne Johnsen

Forprosjektrapport Bacheloroppgave 2017

Testdokumentasjon Presentasjon

Installasjonsdokument

EasyPublish Detaljerte brukstilfeller. Versjon 1.0

PROSJEKTPLAN FOR INF [4 3]120-PROSJEKT: PROJECT HOSPITAL 2004

Testrapport Prosjekt nr Det Norske Veritas

Livsløpstesting av IT-systemer

Hva er datakvalitet? Hvordan skal arkivtjenesten forholde seg til det?

VEDLEGG 1 KRAVSPESIFIKASJON

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

INF Obligatorisk innlevering 7

Hovedprosjekt våren 2007

Forord Dette er testdokumentasjonen skrevet i forbindelse med hovedprosjekt ved Høgskolen i Oslo våren 2010.

KRAVSPESIFIKASJON FOR SOSIORAMA

Hjemmeeksamen 2 i INF3110/4110

SOFTWARE REQUIREMENT & DESIGN DOCUMENT. Home Automation System. Nickolas Helgeland, Jon Erik Nordskog og Kristian Sande Sjølyst

Gruppenavn. Beskrivelse av arkitektur For Navn på systemet. Versjon <1.0>

1 Inledning. 1.1 Presentasjon. Tittel Informasjonsplattform for NorgesGruppen. Oppgave Utvikle en informasjonsplattform for butikkene i NorgesGruppen

Kravspesifikasjon MetaView

Test Beskrivelse Resultat Innhenting CBIS Programmet mottar data fra CBIS OK, men kun. Innhenting Tellus Programmet mottar data fra Tellus OK

Kravspesifikasjon. Noark 5 grensesnitt. Hovedprosjekt informasjonsteknologi. Gruppe 31

Brukerdokumentasjon for Administrator og andre brukere fra PT

1. Forord 2. Leserveiledning

Test og kvalitet To gode naboer. Børge Brynlund

4.5 Kravspesifikasjon

Kirsten Ribu - Høgskolen i Oslo

Side 1. Sniggabo CMS brukermanual rev. 2

Leveranse 2. September 27, 2002

Kravspesifikasjonsrapport

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte

Spørsmål og svar til Konkurransegrunnlag

Modellering av krav. INF1050: Systemutvikling 11. februar Universitetslektor Yngve Lindsjørn

5XQH.MHOYLN )URQW3DJHRJGDWDEDVHU

Hovedprosjekt 2014, Høgskolen i Oslo og Akershus

INF 2120 Innlevering 1. Gruppe 4. Kravspesifikasjoner til trafikanten +

DELLEVERANSE 2 INF2120 GRUPPE 12. Jon G. Berentsen Geir A. Nilsen Lailuma Arezo

Kravhåndtering. INF1050: Gjennomgang, uke 03

Kundens krav til leveranser

UKE 16 Kontrakter. Gruppetime INF1055 Julie Hagen Nilsen & Maria Stolinski

Requirements & Design Document

KRAVSPESIFIKASJON v.1.2

AP221 Use Case SBL Registrer abonnement

Intelle har siden starten i i leverandør av av programvare for data- og og systemintegrasjon.

UKE 4 Analyse. Plenum IN1050 Julie og Maria

Kravspesifikasjon Innholdsfortegnelse

Transkript:

MARE NOSTRUM Del 2

Forord Kravenes hensikt og utforming Kravene i kravspesifikasjonen utformet slik at de skal imøtekomme oppdragsgivers krav, ønsker og spesifikasjoner på best mulig måte. Hensikten med kravspesifikasjonen for prosjektet, er å sørge for at både gruppen og oppdragsgiver har en felles forståelse for hva som faktisk skal med i produktet. Dette skal igjen sørge for at oppdragsgiver faktisk får et produkt som på en hensiktsmessig måte inneholder all funksjonalitet de ønsker seg. Flere av kravene er formulert av oss, på bakgrunn av vurdering gjort etter å ha hørt hva oppdragsgiver ønsker. Dette gjelder alle de ikke-funksjonelle kravene og en del av de funksjonelle. Alle kravene er utformet med tanke på at de skal være minste funksjonalitet som er nødvendig for at produktet skal fungere slik oppdragsgiver ønsker. ens målgruppe ens målgruppe slik vi har tenkt, er hovedsakelig oppdragsgiveren og gruppen. Den er imidlertid også designet slik at en utenforstående også lett skal kunne se nøyaktig hva som er minimums funksjonalitet for det endelige produktet. Vi har også designet selve kravene med tanke på at det skal kreve så lite bakgrunnskunnskap som mulig, noe som er i tråd med de prinsipielle retningslinjene for hvordan kravene skal utformes. 2

Innholdsfortegnelse 1 Lederveiledning... 4 2 Krav... 5 2.1 Funksjonelle krav:... 5 2.1.1 Kjernefunksjonalitet, høyest prioritet:... 5 2.1.2 Tilleggsfunksjonalitet(lavere prioritet):... 5 2.2 Ikke-funksjonelle krav... 6 3 Use case... 8 4 Sekvensscenarioer... 9 4.1 Kjernefunksjonalitet... 9 4.1.1 Scenario 1 (Schedule-parser):... 9 4.1.2 Scenario 2 (AIS-parser)... 9 4.2 Tilleggsfunksjonalitet... 10 3

1 Lederveiledning Kravene nedenfor er delt opp i to deler etter hvilke type krav de er: funksjonelle krav og ikkefunksjonelle krav. De er utformet etter standard retningslinjer for hvordan kravene skal defineres. De funksjonelle kravene tar for seg alle kravene som går direkte på funksjonaliteten til programmet, eller med andre ord hva programmet skal kunne gjøre. De ikke-funksjonelle kravene tar for seg krav for hvordan programmet og dets omgivelser(som dokumentasjon) skal være oppbygd. Videre har vi også definert de funksjonelle kravene i to kategorier: kjernefunksjonalitet og tilleggsfunksjonalitet. Kjernefunksjonalitetene er ment å være de viktigste kravene, og er det absolutte minimum som må være med for at prosjektet skal kunne karakteriseres som vellykket. Tilleggsfunksjonaliteten tar for seg krav som bygger på kjernefunksjonaliteten. Disse kravene har verdi for oppdragsgiver, men anses for å være mye mindre viktig enn kravene i under kjernefunksjonaliteten. I kapittel tre har vi med de brukerscenariene som vi har brukt til å utforme programmet. Dette ligger under overskriften Sekvensscenarier. Disse er utformet og tilpasset etter hva oppdragsgiver sier de ønsker, og i forhold til hvordan vi ser for oss at programmet skal virke i funksjonell forstand. Disse scenarioene spesifiserer hvordan vi har sett for oss at kravene skal implementeres eller innføres, og er ment å fungere som en erstatning for use-case beskrivelser. Som nevnt i prosessrapporten(5.2) har vi valgt å kalle disse scenarier istedenfor use-case beskrivelser, fordi vi egentlig ikke har noen nevneverdige interaksjoner mellom system og bruker/aktør. Vi har også i tillegg valgt å lage et enkelt use-case diagram som beskriver interaksjonen mellom systemet og aktørene. Det er som tidligere nevnt veldig begrenset med interaksjon, så vi har valgt å bare enkelt kommentere use-casediagrammet istedenfor å lage fulle use-casebeskrivelser. 4

2 Krav 2.1 Funksjonelle krav: 2.1.1 Kjernefunksjonalitet, høyest prioritet: 1. Systemet skal kunne ta imot informasjon om et skip og dets posisjon fra en av Xeneta sine leverandører. Informasjonen skal mottas gjennom en UDP-server 2. Systemet skal kunne lagre informasjon om skip i en database. Systemet skal kunne lagre posisjonsdata om skipenes reiser mens de er underveis. Systemet skal kunne lagre informasjon om hvert skips navn i databasen. Systemet skal kunne lagre informasjon om hvert skips dimensjoner i database. Systemet skal kunne lagre hvert skips destinasjon i database. Systemet må så sant det er mulig kunne lagre tidspunktet for når dataene er opprettet. Systemet skal kunne filtrere bort irrelevant informasjon, blant annet om skip som ikke er fraktskip. 3. Systemet skal sørge for at informasjon om skipene og informasjon om reiserutene er forenlige. Dataene skal kunne kobles sammen. 4. Systemet skal kunne gjenkjenne en mail med schedule blant innkommende epost. 5. Systemet skal kunne lagre eller om nødvendig oppdatere schedules for hvert skip som mottas via mail. Systemet skal kunne se og avgjøre om oppdatering av schedule er forsvarlig/riktig. 6. Systemet må kunne avgjøre i hvilket land eller verdensdel destinasjonen ligger. 2.1.2 Tilleggsfunksjonalitet(lavere prioritet): 1. Systemet skal kunne finne ut når et skip er kommet til en havn (destinasjon) med minst mulige feil. 2. Systemet skal finne ut når et skip drar (avgang) 3. Systemet skal kunne beregne hvor lang tid et skip bruker mellom havner 5

4. Systemet skal kunne beregne forsinkelser ved å sammenligne det reelle/aktuelle tidsbruken på reisen mot det som står i skipets reiseplan (schedule). 5. Systemet skal kunne holde rede på hvilke skip hvert registrert rederi eier. 6. Systemet skal finne gjennomsnittlig punktlighet til rederier. 7. Kundene til Xeneta skal kunne hente ut en rangert list over rederienes punktlighet. 8. Systemet skal kunne vise statistikk over punktligheten til rederier gjennom alle tider. 9. Systemet skal kunne vise statistikk over den gjennomsnittlige punktligheten til et rederi for en måned og et år i form av diagrammer/grafer. Lavest prioritet. 2.2 Ikke-funksjonelle krav Alle de ikke-funksjonelle kravene er designet av gruppen for å sette en målbarhet for hvordan vi ønsker at systemet skal kunne yte når det står ferdig. De er ikke blitt utformet i samarbeid med oppdragsgiver, men er utformet med tanke på hvilke kvalitetsstandarder vi mener er nødvendig for at produktet skal kunne møte oppdragsgivers funksjonelle krav og behov. 1 Pålitelighet -Systemet skal designes med tanken på at det skal ha minst mulig feil som fører til at systemet krasjer. Antall timer nedetid på grunn av systemet sin programvaren skal være på maksimalt 2 timer per måned. 2 Effektivitet -Systemet skal være designet med hensyn på effektivitet. Alle komponentene i systemet skal til enhver tid bruke minst 30 % av total CPU-tid på systemet det kjører på. Systemet skal kunne lagre informasjonen slik at det går raskt å finne den fram igjen. 3 Kvalitet -Systemet skal være designet med tanke på kvalitet Minst 95 % av alle mulige feil skal være kartlagt før systemet taes i bruk Minst 90 % av alle mulige feil skal være fikset før systemet taes i bruk Maximum 10 % av systemets komponenter skal være avhengig av kode fra eksisterende systemer. 6

4 Utvidbarhet -Systemets kapasitet skal enkelt kunne utvides etter behov Systemets mest ressurskrevende(hardwarekrevende) komponenter skal designes med tanke på at det skal være enkelt å legge til støtte for parallellisering. -Systemet skal være designet slik at koden og systemet lett kan endres. Systemet skal være delt inn slik at komponentene skal kunne kjøres og testes uavhengig av hverandre(objekt orientert). 5 Robusthet - Systemet skal være slik at det kan håndtere ufornuftig eller feilaktig input Systemet skal kunne håndtere all skadelig, uleselig eller ugyldig inputdata på en hensiktsmessig måte, slik at programmet ikke krasjer. 6 Testbarhet -Systemet skal være slik at det er enkelt å teste Hver komponent i systemet skal være slik at det på en hensiktsmessig måte, skal være mulig å teste dem for seg selv med fornuftig inputdata. Løsningen skal gi fornuftige feilmeldinger(exeptions) ved 100 % av kritiske steder i programmet under en test 7 Dokumentasjon - Systemet skal være dokumentert på en hensiktsmessig måte. Dokumentasjonen skal være så presis som overhodet mulig Dokumentasjonen skal ikke inneholde ufornuftige repetisjoner Dokumentasjonen skal være saklig og mest mulig objektiv Dokumentasjonen skal bygges opp etter UML-standard, men tilpasses der det er behov. Systemet skal inneholde kommentarer i kode ved alle viktige funksjoner eller moduler. Alle modulene og klassene skal inneholde docstrings. Dette er en type dokumentasjon som er ment å beskrive hva en metode/klasse eller modul gjør. 7

3 Use case Figur 3.1 - Use-casediagram som beskriver hele systemet. Legg merke til at det ikke er spesifisert hvem aktør er. Dette er fordi oppdragsgiver ikke er helt sikker på hvem som skal bruke systemet, og faktisk se denne informasjonen. Vi har også valgt å ikke navngi leverandørene, fordi det er usikkert hvem som faktisk kommer til å ende opp med å bli leverandør av dataene. Diagrammet i figur 3.1 over viser hvordan de forskjellige aktørene samhandler med systemet. Vi vil gjerne påpeke at vi ikke har brukt use-casediagrammene under prosjektet fordi use-casene har vært svært få og ukompliserte. Det bør nevnes at for at brukeren skal kunne oppnå den interaksjonen med systemet på en hensiktsmessig måte som beskrevet her, bør alle kravene i kravspesifikasjonen være oppfylt. 8

4 Sekvensscenarioer Fordi vi av mangel på aktører for systemet og ikke får noe ut av å sette opp relasjoner mellom bruker og system, har vi valgt å bruke scenarier. Istedenfor fokus på aktører i disse beskrivelsene har vi heller fokus på hva systemet gjør og utførelsessekvensene. Vi har bygd opp komponentene i systemet etter hver av disse scenariene. 4.1 Kjernefunksjonalitet 4.1.1 Scenario 1 (Schedule-parser): Systemet lagrer alle rutetabellene (schedules) i databasen ved å parse schedule-filen som blir sendt fra ShipmentLink (www.shipmentlink.com). Informasjon om alle reisene lagres i en historikk-collection og skipsreisene for den førstkommende uken lagres i databasen. Den sistnevnte listen skal fungere som en cache slik at det blir enklere og mer effektivt å lage informasjon om rederienes punktlighet. Prebetingelse: E-postmeldingen med rutetabellfilene (schedule-filen) fra ShipmentLink. Postbetingelse: Skipsrutetabellfilen er parset og rutetabellene, både for historikkdelen og reisene for neste uke, er lagret i databasen. Collections: schedules.historic og schedules.current. Hovedscenario: 1. Åpner schedule-filen (i txt-format) for lesing. 2. Leser filen til den kommer til en handelsrutegruppe. 3. Lager en liste over havnene. 4. Finner havnekoden til havnen. Repeter steg 3-4 for hver havn. 5. Leser inn en linje og registrerer skipsnavn og reiseinformasjon for dette skipet, Repeter steg 5 til all reiseinformasjon for denne gruppen er registrert. Repeter steg 2-5 til det ikke finnes flere reiseplaner. 6. Registrere alle rutetabeller i en historikk-collection. 7. Registrerer alle reisene for den førstkommende uken i en annen collection som skal som fungere som en cache. 4.1.2 Scenario 2 (AIS-parser) Systemet mottar og parser kodet(encodede) AIS-data, dekoder dem og filtrer irrelevant data og sender dem til meldingskøen(mq/celery) for innlegging i database. 9

Prebetingelse: Dataene som serveren må være i AIVM format. En liste (collection) av skip som skal reise den førskommende uken er lagret i en egen collection. Nettverksportene som brukes må være ledige. Collections: ship.static og ship.voyagedata. Hovedscenario: 1. Mottar rådata (AIS-data) gjennom UDP-server og legger dem i en array 2. Repeter punkt 1 hvis arrayen ikke er fullt. 3. Velger en datalinje fra arrayen. 4. Sjekker at data er gyldig og kan dekodes. 5. Dekoder data. 6. Legger inn ferdig dekodet data i database dersom det er data for et tankskip eller frakteskip. 7. Gå til punkt 3 dersom det fremdeles er flere data fra arrayet som ikke er dekodet/gjennomgått Utvidelser og unntak: 1a. Dersom arrayet er fullt, legg dataet i et annet array 2a. Dersom data på siste plass i arrayet er ufullstendig (består av 2 linjer, men kun en linje finnes) utvid arrayet med 1 plass og gå punkt 1a. 4a. Dersom data er ugyldig/uleselig, skriv ut eventuelt feilmelding og gå til punkt 3. 7a. hvis alle data i arrayet er dekodet/gjennomgått gå til punkt 1 4.2 Tilleggsfunksjonalitet Scenario 1 (Rederistatistikkoppdaterer): Systemet lagrer faktiske avgangs- og ankomsttid til skip og oppdaterer punktlighetsstatistikker for rederier. Prebetingelse: Listen over skip som skal reise denne uken eller er på vei til en havn finnes i databasen (Scenario 1 i avsnitt 4.1.1). Skipsposisjoner og statisk informasjon om skip er lagret i databasen. Lister over skip rederier eier finnes i databasen. Postbetingelse: Informasjon om når et skip begynte å reise fra eller ankom en havn er lagret i databasen. Antall forventede reisedager og antall timers avvik fra ETA-en for avsluttede reise er lagret i databasen. Punktlighetsstatistikker for rederier er oppdatert. Collections: voyages.traveling og voyages.arrivals Hovedscenario: 1. Trekker ut reiseplanene for denne uken (se scenario 1 i avsnitt 4.1.1)til et skip fra listen som ligger i databasen. 2. Finner MMSI-nummeret til skipet. 3. Trekker ut siste posisjon til skipet. 4. Registrerer når skipet begynte å reise fra havnen. 10

5. Lagrer informasjon om faktisk avgangstid til skipet i egen collection. Lagrer både estimert og faktisk ankomsttid samt annet relevant informasjon (se prebetingelse). Reper steg 1-5 til alle skipene er behandlet. 6. Sletter reiseplaner for reiser der skipet er på vei fra uke-collection (se scenario 1 i avsnitt 4.1.1). 7. Trekker ut dokumentet for et skip som er på vei ( voyages.traveling ). 8. Trekker ut siste posisjon til skipet. 9. Registrerer når skipet er ankommet havn. 10. Lagrer informasjon om faktisk ankomst/avgangstid til skipet i egen collection (lagrer både estimert og faktisk ankomsttid samt andre tilhørende data). 11. Oppdaterer rederipunktlighetsstatistikk for det rederiet som eier skipet. Repeter steg 7-11 til alle skipene er behandlet. 10. Sletter dokumentene i voyages.traveling for skip som er ankommet bestemmelsesstedet. Utvidelser og unntak: 3a. Skipsposisjonen eksisterer ikke eller er for gammelt (Eldre enn tiden mellom hver gang denne jobben kjøres, altså 1 time.). 1. Hopper over til neste skip i listen (steg 1). 4a. Skipet er ikke i bevegelse: 1. Hopper over til neste skip i listen (steg 1) 8a. Skipsposisjonen eksisterer ikke eller er for gammelt (Eldre enn tiden mellom hver gang denne jobben kjøres, altså 1 time.). 1. Hopper over til neste skip i listen (steg 7). 9a. Skipet har ikke ankommet havn. 1. Hopper over til neste skip i listen (steg 7). Scenario 2 (Webside): Bruker får opp en web-side som inneholder punktlighetsstatistikker for alle registrerte rederier. Prebetingelse: Det finnes rederier som det er registrert skipsreiser og statistikker på. Postbetingelse: Rederiene er listet på web-siden og er rangert etter punktlighet. Web-siden inneholder også grafer som viser punktlighetsstatisk over tid for de siste 18 månedene. Hovedscenario: 1. Systemet henter totalstatistikk for alle rederier. 2. Systemet henter forsinkelsesprosentdata og kumulativ forsinkelsesprosentdata for alle rederier. 3. Systemet henter avviksprosentdata og kumulativ avviksprosentdata for alle rederier. 4. Systemet fyller inn tabellen over rederipunktlighetsstatistikker med data fra steg 1. 5. HTML-siden blir generert og sendt til brukeren. 6. Grafene med data hentet i steg 2 og 3 blir generert. 7. Resten av siden blir generert. 11