Hovedprosjekt våren 2007 Bachelorstudiet i informasjonsteknologi ved Høgskolen i Oslo Dokument Kravspesifikasjon Prosjekttittel: Telepower Prosjektnummer: 07-06 Oppgave: Redesign av Telepower - en GSM/GPRS/SMS strømstyringssentral Prosjektperiode: November 2006 mai 2007 Gruppemedlemmer: Siril Alexandra Bache, Line Haugen og Hallvard Welde Oppdragsgiver: Cronus Engineering AS Kontaktperson: Geir Sørum tlf: 23 17 71 55 Veileder: Eva Hadler Vihovde
1. Forord I dette dokumentet spesifiserer vi kravene til systemet vi skal utvikle. Dokumentet er utformet i samarbeid mellom oppdragsgiver og prosjektgruppen. Dokumentet er basert på de ønsker og krav Cronus har til systemet og de kravene ingeniørutdanningen ved Høgskolen i Oslo stiller til et hovedprosjekt. Kravspesifikasjonen skal sikre at begge parter er enige om kravene til systemet som skal lages. Den fungerer også som en rettesnor for programutviklingen. Etter hvert som prosjektet utviklet seg har Cronus sine krav og prioriteringer endret seg, derfor har kravspesifikasjonen blitt oppdatert. 2
2. Innholdsfortegnelse 1. Forord...2 2. Innholdsfortegnelse...3 3. Om bakgrunnen...4 4. Overordnet systembeskrivelse...4 5. Funksjonelle krav - telefonmenyen...5 6. Funksjonelle krav - rammeverket...6 7. Ikke-funksjonelle krav...6 8. Tekniske krav...7 9. Krav til dokumentasjon...7 10. Krav til kodestandard...8 3
3. Om bakgrunnen Cronus Engineering AS utvikler, prosjekterer og selger nøkkelferdige automatisering / industrielle IT løsninger. Cronus drifter Telepower som er en eksisterende GSM/GPRS/SMS strømstyringssentral. På grunn av vanskeligheter med å drifte og videreutvikle Telepower, ønsker de å redesigne systemet. Prosjektet vårt skal legge grunnlaget for utvikling av det nye Telepowersystemet. 4. Overordnet systembeskrivelse Vi skal utvikle ett rammeverk for en GSM/GPRS/SMS strømstyringssentral og en telefonmeny som et grensesnitt til rammeverket. Systemet vårt skal ikke settes i drift ved prosjektets utløp, men er grunnlaget for videreutvikling av det nye Telepowersystemet. Rammeverket skal kunne utføre flere typer oppgaver på forskjellige styringsenheter, avhengig av hvilke funksjoner en type styringsenhet støtter. En oppgave skal kunne utføres umiddelbart eller på et framtidig tidspunkt. Vi skal implementere følgende funksjonalitet for S5011 (en DTMF styringsenhet) og SMS5011 (en SMS styringsenhet). S5011 SMS5011 Skru av eller på releet på styringsenheten Skru av eller på releet på styringsenheten Lese av temperatur på enheten Hente ut relé status Tabell 1. Styringsenhetenes funksjoner Det må være enkelt å støtte nye styringsenheter som bruker annen kommunikasjonsteknologi og/eller gir ny funksjonalitet. Det skal også være enkelt å utvide funksjonaliteten med bruker- og gruppehåndtering. Vi skal lage en telefonmeny som er et grensesnitt til rammeverket. Rammeverket skal kunne bygges ut til å støtte flere typer grensesnitt som for eksempel PDA-, applikasjons- og webgrensesnitt. Se figur 1 for en oversikt over arkitekturen. 4
Telefon- nettet Asterisk server FAST AGI PhoneMenu.java Manager GSM- API Rammeverket nettet Styringsenhet S5011 Figur 1. Arkitekturskisse 5. Funksjonelle krav - telefonmenyen ved å ringe opp sentralen skal en bli presentert med en telefonmeny kunden skal kunne velge en enhet kunden blir presentert med en meny menyen skal inneholde de valg som støttes av den valgte enheten (for eksempel skru av eller på, lese av temperatur, hente status) kunden skal kunne utføre en oppgave enten umiddelbart eller på et framtidig tidspunkt hvis oppgaven skal utføres umiddelbart, skal kunden kunne få tilbakemelding over telefon eller SMS kunden skal kunne få listet opp planlagte oppgaver kunden skal kunne kansellere en planlagt oppgave 5
6. Funksjonelle krav - rammeverket rammeverket skal kunne ta imot forespørsel om å utføre en oppgave på en enhet på et gitt tidspunkt forespørselen skal lagres på riktig tidspunkt legges forespørselen i kø for utføring det skal være separate køer for styringsenheter som benytter forskjellige kommunikasjonsmetoder som for eksempel SMS eller tonesignalering (DTMF) ved innføring av en styringsenhet som benytter ny kommunikasjonsteknologi, må det automatisk opprettes en ny kø for denne type enheter det må være ulike køhåndterere for hver kø som må kjøre parallelt en køhåndterer må hente ut en oppgave fra riktig kø og forsøke å utføre den når en oppgave har blitt utført: o skal det lagres med relevant informasjon o skal det sendes en bekreftelse på SMS hvis en oppgave mislykkes: o skal det lagres med relevant informasjon o skal den forsøkes utført på nytt etter en angitt tid, med mindre den har overskredet maks antall forsøk det skal være mulig å liste opp alle planlagte oppgaver på en enhet det skal være mulig å kansellere en planlagt oppgave rammeverket skal kunne kontakte en DTMF-enhet og utføre en oppgave på den rammeverket skal kunne utføre en oppgave på en SMS-enhet 7. Ikke-funksjonelle krav telefonmenyen skal være brukervennlig det skal være enkelt å støtte nye styringsenheter som: o bruker annen kommunikasjonsteknologi o gir ny funksjonalitet det skal være enkelt å endre måten data lagres på det skal være enkelt å legge til nye grensesnitt til rammeverket 6
innstillinger skal settes et sentralt sted 8. Tekniske krav Følgende tekniske krav er gitt av Cronus: telefonmenyen skal implementeres med Asterisk Asterisk skal programmeres med Java og benytte Fast AGI som grensesnitt mellom Asterisk og Javakoden systemet skal bygges og settes i drift med bruk av Maven 2 9. Krav til dokumentasjon Rammeverket skal videreutvikles av Cronus. Dette stiller krav til god dokumentasjon av kode og systemets oppbygning. I tillegg må systemet dokumenteres i henhold til de kravene ingeniørutdanningen ved Høgskolen i Oslo stiller til et hovedprosjekt. Det er et krav fra høgskolen at det skal utarbeides en prosessrapport og en produktdokumentasjon. Cronus ønsker Javadoc for alle objekter. I tillegg skal vi dokumentere programmets objektmodell med UMLdiagrammer. Dokumentasjonen skal være optimalisert for papirutskrift. 7
10. Krav til kodestandard vi skal i hovedsak følge Sun sin Java kodestandard (beskrevet her: http://java.sun.com/docs/codeconv/). Noen eksempler: o klassenavn skal være substantiv, skrives i ett ord med stor forbokstav i alle ord, ellers små bokstaver (f.eks. SomeClass ) o metoder skal være verb, skrives i ett ord med stor forbokstav i alle etterfølgende ord (f.eks. somemethod) o variabler formateres på samme måte som metoder (f.eks. somevariable) o konstanter skrives med store bokstaver og bruker underscore for å skille mellom ord (f.eks. SOME_CONSTANT) o kommentarer på en linje formateres slik: /* Comment */ o kommentarer over flere linjer formateres slik: /* * Multiline comments. */ o kode som skal midlertidig kommenteres bort formateres slik: // Code vi gjør et unntak fra Sun sin Java kodestandard og lar kodeblokker starte med klammeparentes på ny linje, som vist her: if ( somevalue > 10 ) { <Do something> } vi skal benytte engelske beskrivende navn på klasser, metoder og variabler. kommentarer skal også skrives på engelsk 8