Slutrapport Get it going contracts Författare: Anthony Dry Datum: 2011-06-02 Program: Utvecklare av digitala tjänster Kurs: Individuellt mjukvaruutvecklingsprojekt 7.5p Linnéuniversitetet (Kalmar)
Abstrakt Min rapport handlar om det projekt jag har utvecklat i kursen individuellt mjukvaruutvecklingsprojekt samt de erfarenheter och motgångar jag har erhållit under projektets gång. Mitt projekt var att utveckla en lätt och användarvänlig applikation som skulle hjälpa musiker med bristande kunskaper inom kontraktutformningar när det gäller pengar, resor, mat och dylikt. För att göra detta använde jag mig av Windows Presentation Foundation eller som det också kallas WPF. Rapporten kommer innehålla de största problemen/motgångarna jag stöt på under detta projekt samt lösningar på de problemen/motgångarna. Detta involverar i stor utsträckning programmerings språket C#.
Förord Jag har under ett flertal års tid jobbat med musikfestivaler i Sverige och något som alltid förbryllat mig är varför svenska band är så otroligt dåliga på att skriva kontrakt mellan arrangör och band. Vill inte band vara säkra på att det som de har blivit lovade följs? Det var just här som idén slog mig att svenska band måste ha otroligt dålig koll på vad ett kontrakt skall innehålla och hur kontraktet skall förklaras som giltigt, så varför inte underlätta för dessa personer och göra ett kontrakt formulär som de själva kan editera utan att behöva oroa sig över att få kontraktet ogiltig.
Inledning/Bakgrund Projektet Get it going contracts Byggde på en WPF applikation vilket skulle fungera ungefär som ett formulär där användaren skriver in den information som behövs i det fältet som användaren önskar och på så sett få ut den informationen som behövs för att generera ut ett giltigt kontrakt mellan musiker och arrangör. Jag hade redan en glasklar idé över hur jag ville att applikationen skulle vara utformat så det första jag gjorde i projektet var att göra en low fidelity prototyp där jag ritade upp varje specifikt fönster och började testa indata och utdata. Jag skrev ner mina idéer för att lätt ha möjlighet att återkoppla dem när jag väl började implementera projektet VS 2010. Dock visade det sig att det jag tyckte var självklart i min prototyp inte var lika självklart när det väl gällde struktur för att skriva programmet. Detta berodde framför allt på mina bristande kunskaper i både C# och strukturen för WPF. Jag hade också större problem när det gällde hur själva kontraktet skulle presenteras för användaren, pdf var det optimala valet för just kontrakt eftersom förändrings möjligheten är begränsad och att det är ett smidigt format att skicka kontrakt vidare med. Detta visade sig vara riktigt komplicerat när det gällde WPF pågrund av att stödet för pdf inte fanns. Lösningen fick bli ett html dokument som oberoende av vad användaren hade installerat på sin dator skulle fungera. Projektet jobbade jag på i 7 interaktioner var av 5 finns dokumenterade. Positiva erfarenheter Det som har varit minst krångligt med själva projektet har varit designen både visuellt och kod mässigt, språket xaml kände jag igen från html vilket gjorde det lätt att implementera och förstå den funktionalitet som fanns tillgänglig. Jag har tidigare haft erfarenhet av vektorgrafik vilket också underlättade själva designarbetet. Jag ser framemot att breda mina kunskaper inom xaml för att uppnå en optimal och stilren design för projektet i en senare mer uppdaterad version av projektet. Validering med regex har också gått riktigt bra, det saknas fortfarande viktiga aspekter inom visa områden i projektet men jag är riktigt nöjd med de nya utryck jag lärt mig och hur mycket smidigare det blir att validera indata igenförelse med att använda en char array med där alla tänkbara tecken måste skrivas in separat vilket tar alldeles för lång tid för att vara lönsamt. Jag kommer nog med stor sannolikhet att fortsätta att implementera mer regex validering i projektet för att undvika bristande indata. Negativa erfarenheter Bristande planering har varit ett stort hinder för mig. Detta beror framför allt på att jag varit dålig på att skatta den tid som varit planerad för projektet. Allting tog längre tid än vad jag hade förväntat mig främst pågrund utav okunskap. Det jag tar med mig in i framtiden från denna erfarenhet är att verkligen reflektera över mina skattningar är de möjliga, har jag implementerat liknande kod tidigare och finns det relevant information om min task tillgänglig?
Allmän C# har också strulat till arbetet ofantligt det har varit allt från enkla loopar till att spara undan variabler en separat klass, med framför allt har det gällt att få ut rätt data från objekt i xaml. Jag hittade ett sätt att lösa detta problem men det var dock inte optimalt. Jag använde mig av ToString för att få ut indata ur objekten, vilket visade sig ge mig inte bara indata i objektet utan också själva objektets sökväg, vilket gav mig ytligare validerings jobb för få ut det jag ville. I framtiden skall jag nog läsa på lite om vad för funktioner som finns för de objekten jag använder för att slippa alla de extra raderna kod som inte bara är opraktisk utan också väldigt förvirrande. Dålig struktur på kod har också varit ett problem eftersom man lätt tapparbort sig i vad man nyss har skrivit och det blir ohyggligt mycket svårare att felsöka om ett fel inträffar. Kommer nog i fortsättningen att segregera min mycket mer istället för att trycka in all kod på samma ställe. Jag kommer också att jobba hårdare med att få en bra struktur på klasser med kod som skall återanvändas istället för att kopiera massa kod mellan de olika fönstren. Sammanfattning Projektet har varit stormigt från dag till dag men har varit mycket lärorikt på många sätt framför allt så har jag fått utökade kunskaper om hur C# är uppbyggt och hur enkelt man kan bygga en funktionell applikation på kort tid. Visserligen har det varit många problem som har uppstått dock ser jag det mer som något positivt eftersom man då blir tvingad att hitta en lösning på problemet, jag vågar till och med påstå att det är just detta som många ser som charmen med programmering att hela tiden vara tvungen att utmana sina kunskaper för att åstadkomma något unikt. Jag ser framemot att vidare utveckla mitt projekt och få tillgång till att släppa en riktig version av applikationen med ett större stöd till förändringar och fler val möjligheter. Något som skulle vara en dröm vore att få systemet att fungera online så att man kan skriva på kontraktet med en digital signatur som fortfarande är gillig. Jag ser framemot nästa års kurser då jag får möjlighet att visa mina kunskaper men också bygga på dem och förbättra det som går att förbättra.