SLUTRAPPORT WEBBPROJEKT 1 Kostregistrering 30 mars 2012 Webbprojekt 1 1DV411 Institutionen för datavetenskap, fysik och matematik Linnéuniversitetet Ella Källman - ella@kallman.se Martin Kuoppa - martin@duofy.com Joakim Johansson - joakim@duofy.com Slutrapport Webbprojekt 1! 1
Sammanfattning Projektet gick ut på att skapa en applikation för att logga kostintag hos användarna. Syftet till att skapa en ny applikation var att den tidigare applikationen som använts av målgruppen, DietistXP, varit förlegad och inte fungerat till alla plattformar. Den nya applikationen skulle ha ett bättre gränssnitt än den tidigare och vara plattformsoberoende. Den färdiga produkten består av en webbapplikation och ett API. Användare kan registrera sina kostintag, och vissa användare, coacher, kan genom ett gruppsystem övervaka användares kostintag och ge rekommendationer. Slutrapport Webbprojekt 1! 2
Förord Projektet uppstod i samband med kursen Webbprojekt 1 7,5 hp som ges i programmet Webbprogrammerare vid Linnéuniversitetet. Projektet bestod av att skapa kostregistreringsapplikation åt kunden Jörgen Tannerstedt. Slutrapport Webbprojekt 1! 3
Innehåll Introduktion! 5 Bakgrund! 5 Sy"e och mål! 5 Projektorganisation! 6 Genomförande! 7 Metodik! 7 Teknik! 7 Resultat! 8 Avvikelser! 8 Slutsats! 8 Förslag på vidareutveckling! 9 Övertagande organisation! 9 Diskussion! 10 Förslag ti# förbättringar inför kommande projekt! 10 Slutrapport Webbprojekt 1! 4
Introduktion B AKGRUND Tanken var att det skulle skapas en ny, bättre och webbaserad version av DietistXP som är en kostregistreringsapplikation som används av dietister och forskare. DietistXP fungerar endast till Windowsdatorer, vilket kunden såg som ett problem då det exkluderat en del användare. I projektet skulle en ny applikation skapas som skulle fungera i alla typer av webbläsare samtidigt som den skulle fungera på mobila enheter. Den nya applikationen har kostregistrering som huvudsakliga funktion, men det finns planer för vidareutveckling där till exempel aktivitetsregistrering ingår. Därför ligger det relativt stort fokus på att skapa en miljö där vidareutveckling underlättas. S YFTE OCH MÅL Projektet gick ut på att skapa en applikation där man som användare skulle kunna registrera de måltider man äter och kunna hålla koll på sina intag. En eller flera coacher skulle kunna skapa grupper där de kunde hålla koll på de medlemmar som gått med i gruppen. När man väl gått in i en grupp så kan coachen ge feedback på de intag man gjort och ge rekommendationer på vad man ska ha för intag. Allt detta skulle också redovisas i diagram som statistik. Om användaren gått över det rekommenderade intaget skulle användaren notifieras. Applikationen skulle använda sig av Svenska Livsmedlesverkets livsmedelsdatabas och även ha möjlighet att lägga till fler databaser. Applikationen skulle vara lätt att använda för alla användare, både vanliga medlemmar, coacher och administratörer. Det skulle också skapas ett fräscht nytt gränssnitt som kunde underlätta för alla typer av plattformar. Slutrapport Webbprojekt 1! 5
Projektorganisation Slutrapport Webbprojekt 1! 6
Genomförande M ETODIK Tidigt bestämde vi oss för att dela upp arbetet i varsitt ansvarsområde. En person hade hand om frontend: HTML, CSS och design av gränssnitt. En person jobbade med att bygga ett API (Application Programming Interface) som applikationen skulle prata med, för att underlätta för vidareutveckling av applikationen, främst för att underlätta om det skulle skapas applikationer till andra enheter. Den tredje personen skulle skapa applikationen som pratar med API:et. För kommunikation inom gruppen har ett projekthanteringssystem till Mac OSX som heter Kickoff använts. Kickoff har använts till att chatta, dela filer och skapa att-göra-listor. Varje iteration (vecka) har följande genomförts: Ny projektledare har utsetts. Tester har skapats, systemet har testats och rapporter har skapats utifrån testerna. Risker i projektet har diskuterats och risklistan uppdaterats om något förändrats. Tidsrapportering för de inblandade i projektet har uppdaterats med den senaste veckans arbetstimmar i projektet. Ett mål för iterationen har skapats med funktionalitet som ska vara klar när iterationen är över. En sprint backlog har skapats med delmål som tillsammans ska uppfylla målet för iterationen. Kontinuerligt har dokumentationen uppdaterats i takt med att förändringar skett i projektet. T EKNIK För projektet användes PHP som serversidespråk för både klientapplikationen och API:et. För att förenkla och snabba upp arbetsflödet så valdes ett RESTful ramverk, Gooey, att utgå ifrån. Klientapplikationen använder sig inte av någon databas utan kommunicerar enbart med API:et där en MySQL-databas ligger till grund. Klientkoden är skriven i HTML5, Javascript och AJAX. På så sätt erbjuder applikationen ett trevligt gränssnitt och en roligare och mer interaktiv upplevelse. Under hela projekttiden så har git används för att versionshantera koden samt viktiga dokument. Slutrapport Webbprojekt 1! 7
Resultat Applikationen som leverats till kund innehöll en bråkdel av alla de funktioner som kunden efterfrågade, detta för att dra ner på produktionstiden så att applikationen skulle bli klar i tid, men under hela utvecklingens gång så har kunden frågats om dessa beslut och godkänt vissa prioriteringar och avslagit andra. Projektet har utvecklats med vidare utveckling i åtanke, så att man i senare skede kan fortsätta implementera ny funktionalitet i applikationen, eller utveckla mot nya plattformar. Trots att viss funktionalitet fick plockas bort vid prioritering av andra så leverades en funktionsduglig applikation som kunden kan vara, och är, nöjd över. Slutsats Resultatet blev en fungerande applikation som uppfyllde de krav vi kommit överens om. Den är byggd så att det enkelt ska gå att vidareutveckla den, vilket är en mycket bra egenskap eftersom inte alla kundens ursprungliga krav blev uppfyllda. Avvikelser Mot slutet av projektet bestämdes att vissa krav skulle utelämnas ur implementationen. Detta för att fokusera mer på den viktiga funktionaliteten och för att allt skulle hinnas med. Följande krav valdes bort: Möjlighet att byta språk i applikationen Användare kan lägga till livsmedel till databasen Användare kan spara recept utifrån livsmedel i databasen Användare kan planera sin kost framåt i tiden Exportering av användardata som csv-fil Välja om användaren vill visa metric eller imperial måttsystem Mailpåminnelser Slutrapport Webbprojekt 1! 8
Förslag på vidareutveckling För vidareutveckling av applikationen kan arbetet fortsätta med att dela upp koden i mindre delar för att lättare kunna underhållas av utvecklarna. För att kunna erbjuda användarna av applikationen en bättre möjlighet att hålla koll på intagen kan statistiken utökas med fler delar som en filtrering och olika typer av grafer. Att även erbjuda en aktivitetsregistrering skulle leda till att ännu fler målgrupper skulle vara intresserade av att använda den här applikationen. Förbättringar av gränssnittet är något som alltid måste utvecklas i takt med att applikationen växer, även så i den här applikationen. Lösenordshanteringen kan uppdateras så att användaren lättare kan få tillbaka sina förlorade lösenord. Säkerheten för användarregisteringen kan vidareutvecklas så att ett aktiveringsmail skickas ut till användaren innan konton kan användas. Samtliga punkter under avvikelser kan med fördel inkluderas i en eventuell vidareutveckling av applikationen. Övertagande organisation Jörgen Tannerstedt kommer att ta över projektet. Slutrapport Webbprojekt 1! 9
Diskussion Riktlinjerna vi fick ifrån kund var från början lite vaga och breda. Kunden ville inte riktigt bestämma sig för vad som var viktigt, men tillsammans kunde vi bena ut baskraven för applikationen. Kommunikationen inom gruppen har fungerat väldigt bra. Vi har varit tillgängliga för varandra större delen av arbetsdagarna och inte haft några större problem med att få kontakt, detta mest tack vare att vi använde oss utav ett projekthanteringssystem för OS X, Kickoff, där man kan chatta, planera, göra att-göra-listor och anteckningar. Kundkontakten har skett genom Skype och till viss del genom epost. Vi hade lite problem att hålla tidsplanen vilket ledde till att vi fick omvärdera kraven. Vi hade ett möte med vår kund och kom överens om vilken funktionalitet vi kunde välja bort. Det var också en liten motgång när vi fick reda på att vi blev tre personer istället för fyra då det var ett rätt så stort projekt och den extra arbetskraften hade behövts. Vi arbetade mycket för att få så bra lösningar som möjligt på de tekniska problem som uppstod under utvecklingen. De lösningarna vi kom fram till fungerade mycket bra i både teorin och i praktiken. Vi hade några lösningar vi kunde löst på annat sätt, till exempel att vi kanske borde ha tänkt om när vi skapade ett API. Men att vi skapade detta API ledde också till att man lättare kan vidareutveckla tjänsten på ett enkelt sätt, både med möjlighet för mer funktionalitet och plattformar. F ÖRSLAG TILL FÖRBÄTTRINGAR INFÖR KOMMANDE PROJEKT Under projektets gång har vi fått bättre uppfattning över hur mycket arbete det tar att implementera vissa funktioner. Detta är något som kommer att reflektera i kommande projekts tidsplaneringar. När man har sitt första möte med kund så skall man vara tydlig om hur mycket tid man har och vad som är rimligt att uppfylla inom denna tidsramen, detta för att minska förvirring och omöjliga förhoppningar hos kund. Ta tidiga genomtänkta beslut om mjukvaruarkitekturen och -designen för applikationen och se om dessa är rimliga inom tidsramen och om den funktionalitet implementationen erbjuder överväger tiden det tar att implementera. Ett misstag i planeringen kan få stora konsekvenser längre fram. Slutrapport Webbprojekt 1! 10
Dokumentationshänvisning Dokumentationsrespositorium https://github.com/jocce/school-webproject/tree/master/dokumentation Slutrapport Webbprojekt 1! 11