Solvändan slutrapport Daniel Hallqvist, Therese Samuelsson & Emil Carlsson Sammanfattning Det här är slutrapporten för ett projekt som gjordes i kursen Webbprojekt I av tre studenter på programmet webbprogrammerare. Vi har under tio veckor utvecklat en ny webbsida till Solvändan Förlag för produkthantering, orderhantering och ett kundregister. Genom att använda framtidssäkra tekniker och bra dokumentation av kod i form av kommentarer m.m. vilket vi
hoppas kommer underlätta för vidareutveckling i framtiden. Vi har under projektets gång använt oss av ramverket Codeigniter, som är skrivet i språket PHP. Vi har även använt oss av MySQL och jquery, vilket är ett ramverk skrivet i JavaScript. Detta för att underlätta för framtida utvecklare då de två använda ramverken följer en strikt standard och best practice. Förord Detta projekt är skapat på uppdrag av Solvändanförlag i samarbete med Linnéuniversitetet. Projektet gick i slutändan up på att skapa ett orderhanteringssystem, kundregister samt en uppfräschning av den visuella profilen online för Solvändanförlag. Projektet har genomförts i kursen 1DV411 under handledning av Martin Fredriksson med Tobias Ohlsson som examinator. Projektet har varit ett spännande och utvecklande projekt för oss som deltagit. Vi har utvecklats mycket i vårat sätt att arbeta och vi har fått en praktisk erfarenhet av att arbeta i en utvecklingsmiljö med flera programmerare där alla gruppmedlemmar har haft olika ansvarsområden under en längre tid. Tack till: Daniel Toll för den excellenta träningen i PHP.
Inledning/Bakgrund Det här är slutrapporten för ett projektarbete under våren 2012 i kursen Webbprojekt I på Linnéuniversitetet gjort av studenter på programmet webbprogrammerare. Kursen går ut på att i grupp jobba i ett projekt mot en skarp kund. Vårt projekt gick ut på att skapa en modern webbsida till bokförlaget Solvändan så att de kan hantera produkter, användare, ordrar och nyheter. Vår kund är ett förlag beläget i Torsby vars huvudinriktningar är kyrkomaterial och böcker. Bolaget har funnits sedan 1995 och har sedan i början på 2000-talet funnits på internet. Webbsidan har varit byggd med Microsoft Frontpage med statiska htmlfiler med kommaseparerade filer som en slags databas. Detta har gjort att även om underhåll av webbplatsen varit möjlig så har det varit ganska komplicerat. Teknikerna är också något ur tiden. Därför ville kund få ett ansiktslyft på nuvarande system med ett användarvänligt och modernt gränssnitt och att enkelt kunna hantera innehållet på sidan vad gäller ordrar, produkter, nyheter osv. Syfte & Mål Syftet med detta projekt var att skapa en ny webbsida till Solvändan Förlag byggd på moderna och framtidssäkra tekniker. Målet med projektet blir att inom utsatt tid skapa en fungerande produkt utefter de krav som kommit fram under projektets gång så att alla parter blir nöjda. Målet för applikationen var följande: Uppdatera produktkatalog online. Hantera ordrar. Upprätta ett kundregister. Hantera nyhetsuppdateringar. Tilltalande grafisk design. Projektorganisation Projektorganisationen var i början av projektet föränderlig då samtliga projektmedlemmar skulle hålla titeln projektledare. Dock när alla officiellt hade haft denna titel så gick vi över till en statisk organisation (fig 1). Detta beroende på att gruppen var liten och bidrog till att organisationen blev en plan organisation då detta fungerade bättre för gruppen. Samtliga gruppmedlemmar hade dock igenom projektet en statisk roll som reflekterade deras ansvarsområde inom projektet samt var deras expertis låg. Detta innebar däremot inte att denna gruppmedlem var den som skulle utföra allt inom detta ansvarsområde. Det innebar dock att det var den gruppmedlemmen som hade ansvar för att detta blev gjort. Rent generellt så var detta ett mycket lyckat koncept och alla inom gruppen tog ansvar för vad som behövde göras
och såg till att det blev utfört inom deras område. Metod/Teknik I valet av tekniker fick vi börja med att höra med kund vad det fanns stöd för på dennes nuvarande webbhotell. Med detta i beaktning och våra i gruppens personliga preferenser bestämde vi att vi skulle använda CodeIgniter, ett MVC-ramverk med PHP som grund med en bakomliggande MySQL databas. På klientsidan användes standardtekniker i form av HTML, CSS och javascript(jquery). För att dela dokumentationsfiler, kod och annat med varandra anslöt vi oss genom skolans VPN och versionshanterade med TortoiseSVN. För kommunikation har framförallt skype använts, men för att bestämma tid för möten och andra frågor har allt från Yammer, Facebook och SMS använts. Då vi fick intrycket att kund inte var helt på det klara med exakt vad han ville ha så bestämde vi oss att börja med klientsidan för att kunna visa kund så tydligt som möjligt hur vi tänkt oss slutleveransen. Vi skissade därför alla i gruppen upp varsina mockuper på hur en potentiell startsida kunde se ut utefter det material vi fått från kund. Vi valde att göra varsina då vi då inte låstes i ett tankesätt utan fick in flera synvinklar. Dessa presenterades sedan för kund som gav feedback och en slutgiltig design fastslogs. Tidigt i projektet fastlogs att vi redan innan hade ganska olika intresseområden vad gäller webbutveckling, därför blev en naturlig uppdelning av ansvarsområden tidigt bestämd. Ansvarsområdena kan liknas vid MVC-mönstret där Emil hade ansvar för modellerna, Therese för kontrollerna och Daniel för vyerna. Möten skedde 1-3 gånger i veckan och ofta kodades det tillsammans på skype för att enkelt kunna hjälpa varandra. Vid mötena utvärderades förra iterationen och bestämdes vad varje person skulle göra till nästa gång. Då Emil bodde relativt nära kund kunde han också åka på kundmöten och presentera vad vi gjort och få feedback på detta. Detta presenterades Emil sedan för dem andra i gruppen på mötet och skriftligt. Alla i projektet bedrev sedan en SCRUMbacklog på dem uppgifter de blivit tilldelade för att uppskatta tiden kvar på varje uppgift Resultatbeskrivning Slutresultatet av projektet har varit ett kundregister, orderhanteringssystem samt en produktkatalog för webben som enkelt kan uppdateras av en administratör. Den håller en hög kvalitet gällande felhantering, grafisk formatering, och är även skalbar för eventuell vidareutveckling av framtida utvecklare. Den följer de krav som upprättades i projektets tidiga iterationer. Slutleverans av produkten kommer ej att ske med avslut av kursen. Detta för att samtliga i gruppen önskar släppa en felfri produkt som går att använda som referensmaterial. Vi hade bara handledning med vår handledare de fyra första veckorna av projektet för att få hjälp med att fastställa strukturen i gruppen och påbörja dokumentationen, sedan valde vi att inte boka in några mer möten då vi kände att svårigheterna för projektet inte låg inom ramen för att en handledare skulle kunna avhjälpa dem.
När vi väl fått våra baskrav och visste ungefär hur den slutgiltiga produkten skulle se ut och fungera så var sammarbetet i gruppen bra från första stund och alla i gruppen klickade väldigt bra. Mötestider anpassades efter allas behov och det uppstod aldrig några konflikter eller svårigheter vad gäller kommunikation inom gruppen. Som med alla produkter och applikationer så krävs det i slutändan även manualer, och beroende på användarens datorvara kan även viss utbildning i systemet behövas. De manualer som skall skrivas bör vara så användarvänliga som möjligt och gärna innehålla praktiska exempel. Det är i ett sådant fall även rekommendetrat att användaren har möjlighet att använda sig av en icke skarp miljö att träna på. Eventuell handledarledd utbildning i systemet bör följa de användarmanualer som har konstruerats för att den som blir utbildad lätt på enskild hand skall kunna konsultera det material på egen hand. Detta bör även ske vid slutleverans av produkten. Avvikelse Dokumentationen hamnade lätt i skymundan då projektet relativt ofta stötte på kodmässiga problem samt att vision och baskrav ej kunde slutföras tidigt i projektet. Detta orsakade även att i viss mån kunde tidsplaner bli svåra att upprätthålla. Detta berodde till viss mån på kommunikativa svårigheter med kund i den mån att kund var osäker på vad som skulle skapas, samt att det i viss mån uppstod frågetecken gällande fackterminologi. Slutsats Gruppdynamiken var mycket välfungerande och bidrog till stor del att projektet kunde slutföras då vi hade vissa problem med tekniska hjälpmedel samt en kund som var osäker på vad som egentligen skulle utformas. Även intresset för olika delar i ett webbprojekt var välbalanserat i gruppen då samtliga gruppmedlemmar kompletterade varandra i den inofficiella inriktning de valt inom utveckling. Vi är också nöjda med hur vi skött mötena inom gruppen och de har varit väldigt givande. Mötena med handledare var bra i början för att fastställa strukturen i projektet, men vi hade önskat en handledare som kunde hjälpa mer med kvalité på olika dokumentationsdokument eller tekniska frågor senare i projektet. Att sköta dokumentation konsekvent igenom ett projekt är mycket viktigt. Dock så kan det vara lockande att åsidosätta detta under tidspress då utvecklare gärna fokuserar på slutresultat i form av produkt istället för dokumentation. En väl förberedd kund underlättar i ett projekt. Om kund är förberedd med önskemål och har en egen vision av hur slutresultatet skall vara så kommer detta göra att uppstart av projekt går snabbt i jämförelse med en kund som är oförberedd i sina önskemål. Det är tidskrävande att upprätthålla kundkontakt. Mycket av denna tid går till förberedelser samt att kommunikation med kunder försvåras då viss fackterminologi ej går att använda och att vissa beskrivningar kan verka magiska för oinsatta.
I ett projekt med roterande roller så blir det vissa svårigheter att sitta på flera stolar samtidigt. Att vara både projektledare och därmed ha ett helikopterperspektiv, för att sedan ha detaljperspektiv på specifika delar av projektet kunde ha en förvirrande inverkan under perioden då man var projektledare. Förslag på vidareutveckling Implementera större möjlighet till att beskriva författare. Integrera med ett betalsystem. Integrera med rådande varuhållning/logistik. Vidareutveckla kopplingen mellan back-end och front-end runt API. Genomföra mer frihet för administratörsanvändare i layout. Litteraturförslag/dokumentationshänvisning http://www.codeigniter.com http://www.mysql.com/ Mastering Regular Expressions J. E. F. Friedl (O Reilly, 1997) Förslag till förbättringar inför kommande projekt Bilagor Projektledningen bör vara mer statisk. Valfritt versionshanteringssystem utan krav på VPN Bättre förberedelser i kommunikation med kunder. Handledning inom kundkontaktsområde med säljinriktning. Mjukvaruarkiktektur Mjukvarudokumentation Testdokumentation Kravspecifikation Projektplan Figurer
(Fig 1, Organisationsplan)