Projekt Rapport RaidPlanner Jeanette Karlsson UD10
Abstrakt: Denna rapport handlar om mitt projekt i kursen Individuellt Mjukvaruutvecklings projekt. Rapporten kommer att ta upp hur jag gått tillväga, vad jag lärt mig av projektet och vilka negativa och positiva upplevelser jag har haft samt en analys av vad jag kan göra annorlunda eller bättre på nästa projekt. Jag har jobbat med ASP.Net, C# och SQL för att bygga en interaktiv webbsida med ett poäng system som ska användas för uträkningar av loot prioritet vid raider i MMO's. Det har för det mesta varit ett spännande och roligt projekt och jag har lärt mig massor av att jobba med det.
Innehållsförteckning Inledning/Bakgrund Positiva Erfarenheter Negativa Erfarenheter Sammanfattning
Inledning/Bakgrund Jag började egentligen med att tänka på vad jag ville lära mig och få ut av kursen snarare än att jag hade en speciell produkt jag ville göra. Jag kände att jag ville göra något där jag fick använda mig av och fördjupa mig i det jag lärt mig under året samtidigt som jag ville lära mig något nytt också. Valet föll på ASP.Net, C# och MS SQL. Sen gällde det att komma på en idé som kändes genomförbar. Jag valde att göra en raidplanner site till mitt Kinship (guild) i Lord of the Rings Online. Poäng systemet jag använt är ett förslag från min raid leader. Teknik Valet av teknik föll på ASP.Net och C#. Framförallt för att jag ville fördjupa mina kunskaper inom C# och med ASP.Net kände jag att jag kunde göra det samtidigt som jag lärde mig mer om hur man bygger en riktig webbapplikation. Databasen är gjord i MS SQL. Krav Kraven jag hade på den var att man skulle kunna räkna ut prioritering för distribution av loot vid raider. Jag valde att inte göra en fullständig site eftersom att den även borde ha ett bokningssystem för raider vilket hade blivit lite för mycket, ville hellre göra det jag gjorde på den ordentligt, istället för att göra många funktioner. Siten skulle också stödja inloggning med olika roller eftersom att enbart officerare ska kunna tilldela poäng. Arbetssätt Arbetssättet har varit att iterativt utveckla mitt system. Jag har gjort sprint backlogs enligt SCRUM metoden och jobbat efter dom med nya sprints varje vecka. Jag följde kursen som gick i ASP.Net och mycket av tiden i början på projektet gick åt till att sätta sig in i det. Har under tiden för projektet även gått en kurs i databas teknik och kunskaperna jag fick där har jag också använt mig av i projektet. Jag började med att göra funktioner för uträkningar av poängsystem och när dom fungerade försökte knyta ihop det med dom grafiska bitarna i ASP, dropdown listor och checkboxes för att tilldela poäng. Jag började med detta eftersom att poängberäkningen är det centrala i min applikation och något jag kände att jag kunde få att funka redan på ett tidigt stadium. Om jag hade gjort om projektet hade jag valt att börja med att bygga upp databasen först eftersom att en hel del saker fick skrivas om när jag skulle använda mig av data från databasen. Men eftersom att jag inte hade någon kunskap om databaser i början så valde jag att vänta med det tills jag kunde lite grann i alla fall. Samma sak med vissa funktioner i ASP.Net men lärde mig att det tar mig mycket längre tid att lära mig helt själv och att det blev effektivare att följa med tempot i kurserna.
Positiva erfarenheter Jag har lärt mig otroligt mycket på detta projekt och på det stora hela gick det bättre än vad jag trodde från början. Jag har insett att jag verkligen gillar att programmera och när jag stött på ett problem så ger jag mig inte förrän jag löst det. Nya Kunskaper Jag har lärt mig att jobba i ASP.Net vilket jag inte hade någon kunskap om alls innan jag började. Samtidigt har mina kunskaper om C# blivit mycket bättre än innan. I början på kursen försökte jag läsa en del dokumentation om båda språken men hade ibland lite svårt att förstå vad jag läste. När jag sedan kollade samma artikel några veckor senare hade jag en mycket större förståelse för vad det handlade om. Har också lärt mig SQL och hur man knyter ihop databaser med olika lager i applikationen. Har på det stora hela en mycket bättre förståelse för hur det är att jobba i ett mjukvaru utvecklings projekt..net Ramverket I början kändes ASP.Net ganska enkelt eftersom att mycket sköts med drag and drop programmering, men insåg efter ett tag att det verkar enklare än vad det är. Var lite skeptisk till en del färdigbyggda funktioner från början men lärde mig att det kan vara ganska smidigt att använda sig av eftersom att det sparade mig en del tid att slippa skriva allt från grunden. Som inloggningssystem använde jag till att börja med MS egna system men insåg att jag ville knyta ihop mina användare med deras registrerade Characters så då flyttade jag över inloggningen på våran egen databas. Förvånansvärt enkelt, programmet fixar det mesta själv och det är bara att anropa rätt procedur. Databasen Jag lärde mig mer om databaser än vad jag hade gjort om jag inte gjort detta projekt trots att jag samtidigt gick databas kursen. Inser att jag fortfarande har väldigt mycket kvar att lära mig om det men har nu i alla fall grundkunskaperna. Jag har en hel del olika tabeller i min databas med inbördes relationer och det var en skön känsla när jag väl lyckades plocka ut olika värden och koppla dom till olika listor och sen använda värdena för att uppdatera en annan tabell. Tidsplanering/Dokumentation Tycker att SCRUM med sina sprint backlogs är ett smidigt sätt att planera sitt arbete på. Men jag måste nog bli bättre på att följa dom i framtiden. Eftersom att detta var det första riktiga projektet jag jobbat på så var det lite svårt att veta hur lång tid saker egentligen tar men det är ändå bra att ha en plan att jobba efter.
Negativa Erfarenheter Insåg återigen att när man inte kan ett språk speciellt bra så kan t.om en liten grej ta flera timmars arbete. Hade problem med att få min deleteknapp att funka. Satt i flera timmar och kollade på nätet men hittade inget som funkade. Gav tillslut upp och nästa dag när jag kollade igen hittade jag en enkel lösning som bara innebar att jag missat ett kommando i en controller. Lärde mig att man ibland måste ge upp och sova på saken. Men jag vill gärna lösa problemen och har svårt att sluta tänka på dom. Nya kunskaper Svårt att lära sig flera i stort sett helt nya grejer. Både ASP.NET och SQL var helt nytt och det kunde bli lite väl mycket att lära sig samtidigt ibland. Att följa två kurser för att göra detta projekt har varit tidskrävande och eftersom att ingen av kurserna tidsmässigt var planerade att funka ihop med detta projekt så kunde det kännas lite svårt att få ihop det. Fick vid flera tillfällen ändra mina sprints och försöka jobba på nåt annat än det jag egentligen ville bara för att tempot i kurserna inte funkade ihop med min planering. Ska jag göra nåt liknande igen och följa kurser vid sidan av så borde jag nog redan innan kursen ta reda på när man kommer att gå igenom vissa saker. Versionshantering Har haft en del problem med versionshanteringen av mina filer eftersom att jag suttit och jobbat både hemma och i skolan så har en del filer hamnat i konflikt med varandra. Nästa gång ska jag bli noggrannare med att göra commits oftare och ha bättre ordning på mina filer..net ramverket ASP.Net verkade ganska enkelt till att börja med men när man väl skulle knyta kontrollerna till databasen och få funktionaliteten som den ska så finns det mycket som kan strula. Jag har använt mig av en del listor och tänkte att det kunde va kul att testa några olika varianter. Då uppkommer problemet att det jag kan göra väldigt lätt i en typ av lista känns nästan omöjligt i en annan typ och kan kräva en hel del programmering för att det ska funka. Tidsplanering/Dokumentation Tror att jag många gånger suttit med något betydligt längre tid än vad jag trott att jag gjort, när jag programmerar tappar jag lätt bort tiden och vet egentligen inte hur många timmar jag lagt på en viss grej. Kände mig lite stressad i början av att försöka hålla ordning på mina timmar och till nästa gång ska jag nog försöka sätta upp lite mer tider för när jag ska sitta och jobba. En del av dokumentationen kändes mest som att jag gjorde för att jag var tvungen att göra och det känns som att vissa saker som tex testrapporter känns mer viktiga i ett projekt med många deltagare. När det bara är man själv som jobbar på det så har man ju det mesta i huvudet redan. Men jag förstår ändå vikten av att göra det.
Sammanfattning Jag har lärt mig en hel del på det här projektet även om det också varit väldigt frustrerande och svårt ibland, men också kul och utmanande. Har varit lärorikt att jobba med så många olika språk och lager som jobbar ihop och är ett ganska stort steg från vad vi tidigare gjort under kurserna. Jag kände verkligen på slutet att jag börjar få rätt bra koll på alltihopa och att om jag bara lägger lite mer tid på min site så kan den nog bli ganska bra. Skulle vilja ha en lite bättre admin sida så att man kan redigera användarna lite mer, kunna ta bort en användare som slutat, kolla alla användare i en viss roll osv. Men det kändes som att det var bättre att koncentrera sig på det som redan fanns och att försöka göra det så bra som möjligt. Jag har tex validering på alla inmatade värden både med hjälp av JavaScript i användargränssnittet och i mina C# klasser. Har nu en mycket bättre förståelse för hur det går till att jobba i ett mjukvaruprojekt. Mycket av mina negativa erfarenheter är sånt som kommit av att jag inte har haft tillräcklig kunskap och erfarenhet av programmering. Trodde från början att jag inte ens hade tillräckligt med grundkunskap för att över huvudtaget få ihop nåt men det har jag ju trots allt fått och är to.m ganska nöjd med slutresultatet. Det känns som att nästa gång jag jobbar på ett projekt kommer nog saker att gå bättre redan från början även om jag måste lära mig nya språk medans jag gör det. Jag kommer att fortsätta jobba lite på detta projekt mest för skojs skull. Det finns massor av saker jag skulle vilja prova att lägga till eller förbättra. Tex är mycket av funktionerna vad gäller poängberäkning hårdkodat i programmet vilket inte gör det speciellt flexibelt. Anledningen är helt enkelt tidsbrist. Jag la en del tid på att bygga funktioner som funkade och sen fick jag lägga mycket tid på att lära mig om och implementera databasen i programmet. Eftersom att det var viktigare att man kan registrera användare och sina characters i databasen så valde jag att lägga tid på det istället för att göra systemet så flexibelt som möjligt.