PROGRAMUTVIKLINGSPLAN Big Data and Machine Learning
Innholdsfortegnelse Produkt beskrivelse... 1 Team beskrivelse... 2 Prosjektets kunnskapskrav... 2 Medlemmer og roller... 2 Program prosessmodell beskrivelse... 3 Prosjekt definisjon... 4 Prosjektorganisering... 5 Valideringsplan... 7 Konfigurasjon- / Versjonskontroll... 7 Prosjektverktøy... 8 Produkt beskrivelse Produktet skal få verdier fra sensorer som måler CO 2, luftfuktighet og temperatur. Måledataene skal fremstilles grafisk også lagres i en database, deretter skal machine learning algoritmen predikere aktiviteten i rommet. Side 1
Team beskrivelse Prosjektets kunnskapskrav Table 1 Prosjekt krav Prosjekt Prosessdel Kunnskapskrav Programutviklingsplan - Team erfaring - Kundebehandling Systemspesifikasjon planlegging - Grunnleggende maskinvare forståelse - Produktets oppgave - Team orientering - Kundekommunikasjon Programstruktur design - Generell erfaring med brukervennlige program egenskaper - C# - Objektbasert kodestruktur - Databasestrukturer og SQL - Team orientering - Kundeforståelse Implementering - Erfaring med debugging - Generell erfaring med å jobbe i team under press. - HTML - Funksjonsrettet programmering Programvaretesting - Kreativ programvare bruk - Erfaring med debugging Utgivelse og opprettholdelse - Kundebehandling Medlemmer og roller Gjennom organiseringen av prosjektet har gruppens medlemmer fått tildelt hovedansvar/roller, og har i tillegg til dette et generelt ansvar for å følge opp på progresjonen hos de andre gruppemedlemmene. Dette for å ta del i arbeidet som går med i hovedansvaret tildelt de andre medlemmene. Det har blitt valgt å gjøre det slik siden det sørger for at alle kan bidra og lære av alle rollenes ansvarsområder. Dog har den personen med hovedansvar for sitt arbeidsområde det avgjørende ordet. Side 2
Table 2 Oversikt over prosjektgruppe Medlem Øyvind Brakstad Ole J. Oksum Lars C. Wessel Hovedroller System Engineer System Engineer Product Owner System Engineer Scrum Master Styrker og erfaringer -- -- -- Programspråk Nivåer: Liten, middels eller God bekjentskap. C# - God C++ - God Lua - Liten Python - Middels JavaScript - Liten SQL - God HTML - God CSS - God JavaScript - God Lua - Middels C - Liten C++ - Middels C# - God Python - God SQL - Middels C# - Middels C++ - Liten Python - Middels SQL - Middels Program prosessmodell beskrivelse Produktet som skal virkeliggjøres er av et begrenset omfang, samt at gruppen som skal utføre det er liten og oversiktlig. Fra dette har det vært hensiktsmessig å gå for en mer fleksibel prosess model, istedenfor en mer rigid plan drevet model. Valget har da falt på scrum som den modellen som skal strukturere arbeidet med prosjektet. Modellen krever ikke en omfattende dokumentasjon av prosjektet til å begynne med, da strukturen er slik at mange detaljer kommer til under arbeidet med produktet. Prosjektet omfang og gruppens størrelse legger til rette for at hvert medlem på gruppen evner å ha en oversikt over prosjektet gjennom god kommunikasjon med resterende medlemmer av gruppen. Dette skjer blant annet gjennom korte daglige uformelle møter hvor progresjon videreformidles til gruppens øvrige medlemmer. All møtevirksomhet ledes og organiseres av en scrum master, som har en tilrettelegger rolle i gruppen. Enheter av programmet velges ut for ferdigstillelse fra et dokument kalt backlog, prioriteringen av hvilke enheter som skal ferdigstilles skjer i såkalte sprintplanleggingsmøter. Sprintene lar gruppens medlemmer få prøvd ut alle scrum-rollene, ved rotasjon ved begynnelse av ny sprint. Sprintene bryter ned produktet i enkle forståelige deler som kan ferdigstilles å testes ut ved avsluttet iterasjon. Det innkalles til et evalueringsmøte etter hver iterasjon for å diskutere gjennomførelsen av den avsluttede sprinten. Det håpes på at vellykkede enheter av produktet gir grobunn for optimisme, og at dette skal gi gruppen en følelse av at prosjektet beveger seg fremover mot en ferdigstillelse. Side 3
Prosjekt definisjon Prosjektet heter Big Data and Machine Learning, som går ut på å håndtere store mengder data, som eksempel sensordata, analysere dataen, foreta en statistisk analyse og forutsi trender og annen data som ikke nødvendigvis blir direkte målt, men som kanskje ligger implisitt i de store mengdene data. Dette prosjektet skal ta henhold til sensordata fra diverse inneklima deretter fremvise grafisk statistikk og ta bruk av machine learning for å forutsi noe mer om aktivitet statusen til rommet som systemet er implementert i. Figure 1 Workflow diagram Mulige bruksområder for systemet er i kontorbygg, skoler, sykehus og diverse andre store bygg med daglig menneskelig aktivitet. Systemet skal kunne gi ansvarlige en oversiktlig analyse av luftkvalitet, mest aktive rom, aktivitetsmønster og en prediktiv analyse av aktivitetsmønstre. Side 4
Figure 2 Use Case diagram Prosjektorganisering Figure 3 WBS Side 5
Prosjektet har blitt delt inn i seks faser, planlegging, requirement engineering, programvaredesign, implementering, programvaretesting og utgivelse. Under planleggingen skal det lages en SDP, og VSTS skal settes opp. I requirement engineering fasen skal programmeringen starte og VSTS skal tas i bruk. Under programvaredesign fasen skal det lages database, UML og en product backlog, i denne fasen skal også alphaen være fullført. I implementeringsfasen skal det lages en HTML side og Betaen skal jobbes med. Under programvaretestingen blir det laget en programvare test plan, og programvaren blir testet. I utgivelses fasen skal det lages en brukermanual, lage en installasjonsguide og programvaren skal være ferdig. Figure 4 Gantt diagram Side 6
Valideringsplan Figure 5 Overliggende systemoversikt Konfigurasjon- / Versjonskontroll Gruppen tar i bruk Visual Studio Team Services til konfigurasjon/versjon kontroll. Her kan man lage en oversiktlig mappestruktur for prosjektets deler, for eksempel egne mapper for koding, planlegging, design, testing og implementering. Dokumentene/kodene blir lastet opp til en sky tilknyttet Visual Studio Team Services prosjektet. Denne koblingen skjer gjennom Visual Studio Environment. Strukturen gjør at gruppens medlemmer får lett overblikk, og ut fra dette klarer å finne tilbake til de forskjellige delene av prosessen uten for mye anstrengelse. Tidligere versjoner av dokumenter/koder arkiveres i deres respektive mapper, slik at de kan hentes opp igjen om en senere versjon skulle være mislykket. I tillegg til dette blir det dokumentert sist gang noen endret på et dokument/kode i mappen, slik at man ikke implementerer nye egenskaper i en utdatert versjon. Det overstående er ikke minst viktig når det gjelder kodingen hvor det erfaringsmessig er lett gå seg fast, særlig hvis hvis flere personer jobber på samme dokument. For å unngå sistnevnte har man en funksjon for å tildele enkelte medlemmer på gruppen oppgaver med å utbedre blant annet bugs, hvor man kan beskrive feilen og angir området den ligger under i strukturen. Når feilen så er utbedret vil også dette bli dokumentert slik at man ikke må gå igjennom masse dokumenter på nytt til ingen nytte. Side 7
Prosjektverktøy Table 3 Oversikt over prosjektverktøy Verktøy Visual Studio 2017 Bruk Koding Visual Studio Team Services OneDrive Organisering av arbeidsoppgaver og gjennomløpende dokumentasjon Lagring av dokumentasjon, rapport og andre prosjektrelaterte dokumenter Google Docs Sanntidsredigering av rapporter og prosjektrelaterte dokumenter Microsoft Office 365, Visio 2016 og Project 2016 Planleggingsdokumenter og langtidslagring av ferdige prosjektdokumenter. Skype Kommunikasjon Erwing database modeler Planlegging og drøfting av database struktur Microsoft SQL server 2016 Opprettelse og validering av databaser Side 8