AV Henrik Häggbom Examensarbete Nackademin Våren 2015
1 INLEDNING Som examensarbete på min utbildning på Nackademin Programutveckling.NET kommer jag skapa ett webbaserat system för statistik, tabeller och resultat. System är tänkt för att skapa tabeller, statistik, resultat samt spelscheman för idrottstävlingar exempelvis en hockey eller fotbollsturnering. 2 BAKGRUND Idag är det ofta problematiskt när en idrottsförening/förbund skapar mindre turneringar. Anmälan ska tas upp, spelschema och tabeller ska göras. Efter turneringens slut ska resultatet publicera på hemsidor eller sociala medier. En del har löst problematiken med MS Excel andra med papper och penna, lösningen med papper och penna eller Excel fungerar oftast mycket dåligt när det ska publiceras på dagens mobilanpassade hemsidor och sociala medier. System för det här ändamålet finns redan idag att köpa på marknaden men dem är sällan väldigt användarvänliga och är oftast ganska dyra vilket är ett problem för en ideell förening. 3 SYFTE Tanke är att skapa ett webbaserat gratis system som ska skapa spelschema, tabeller, resultat och statistik. Systemets fokus ska vara på användarvänlighet för den som ska skapar turneringar men även för en vanlig besökare som vill se resultat och tabeller. Varje turnerings enskilda resultat, statistik och spelschema ska enkelt gå att publicera på sociala medier dela via mail samt publiceras på respektive förenings hemsida. Detta system är alltså tänkt att användas av ideella föreningar och deras ledare och kommer lösa problematiken med att lägga spelschema för tabeller och statistik samt att publicera resultat på ett enkelt sätt. 4 MÅL Målet med examensarbetet är att skapa ett gratis webbaserat system för att kunna skapa spelschema, tabeller, resultat samt statistik. 1
5 KRAV PÅ SYSTEMET För att ta fram kraven för webbapplikationen har jag pratat med idrottsledare och deltagare. Utifrån det har jag bestämt vilka funktioner som är viktiga för ett statistiksystem. In och utloggning Inloggning krävs för att inte obehöriga ska kunna ändra och lägga in resultat och andra viktiga uppgifter så som tabeller och spelarstatistik. Skapa, ändra och ta bort En inloggad turneringsansvarig ska kunna skapa turneringar. Man ska också ha möjlighet att ändra informationen om det skulle bli fel under skapandet. Om turnering inte skulle bli av eller om användaren önskar att kunna ta bort sin turnering ska det finnas möjlighet för det. I System ska det också vara möjligt att Lägga till, ta bort och ändra andra uppgifter som klubbar, spelare, matcher, statistik, resultat och sporter. Visa resultat Användare som inte är inloggade ska kunna kolla resultat och tabeller för specifika matcher och turneringar. Visa statistik Användare som inte är inloggade ska kunna kolla statistik för spelare och för olika lag. Visa Tabeller Användare som inte är inloggade ska kunna kolla tabeller för olika turneringar och cuper. Visa Laguppställningar Användare som inte är inloggade ska kunna kolla laguppställningar för olika turneringar och cuper. Framtida funktioner och egenskaper Många funktioner är uttänkta men dem ovan nämda är dem viktigaste och är därför prioriterade. I framtida versioner kommer användarnas idéer att värderas högre men det viktigaste är dem ovan nämnda. 2
6 USE CASES Visa Turneringar Visa Resultat Visa Tabell Besökare Visa Spelschema Visa Statistik Visa Laguppställning Skapa Tabeller Skapa Resultat Ändra Resultat Ta bort Resultat Skapa Statistik Ändra Statistik Ta bort Statistik Admin Skapa Lag Ändra Lag Ta bort Lag Skapa idrott Ändra Idrott Ta bort Idrott Skapa Turnering Ändra Turnering Skapa nya användare Ta bort Turnering Ändra användaruppgifter Skapa Spelschema Ta bort användare Ändra Spelschema Ändra E-postadress Ta bort Spelschema Ändra lösenord Publicera Resultat Logga in Logga ut 3
7 RESULTAT Databasmodellen Innan arbete kunde sätta igång på riktigt tog jag fram en databasmodell efter dem egenskaper som beskrivs i use case diagramet. Nedan finns modellen som diskuterades fram. Nästa steg blev att börja med Webapplikationens Infrastruktur dvs kopplingen mellan databas och Databaslagret. 4
Infrastruktur När man utvecklar en så här stor appliktation är strukturen oerhört viktig därför gjordes det med en tydlig struktur enligt följande modell se nedan Data Access Layer (DAL) Dal lagret eller Data Access Layer är det enda lager som får prata med databas och där är det viktigt att det görs på korrekt sätt. För att underlätta vidare utveckling av programvaran tog jag besluta att bryta ut Klasser till ett domän lager. Applikationens databas lager togs fram genom Entity Framework med Code First. Detta gjordes genom att genera klasser och DbSet/Context med Visual Studios verktyg ado.net entity data model för att sedan välja alternativet Code First from database. 5
Domain Layer I Domän lagret läggs samtliga klasser. Anledning till detta arbetsätt är att klasserna behöver vara tillgängliga för hela applikationen, eftersom endast DAL lagret får hämta info i databasen så läggs klasserna separat. Ett separt Domän lager möjlig gör också att Klasserna kan användas i weblagret vilket gör det vidareutveckling enklare. Klasser enligt diagram nedan Bifogar även diagramet som fil. Repository Istället för ett klassiskt Buisness logic lager har jag använt mig av flera repositories. Det är i mina repositories jag utför alla operationer så som att lista objekten från databas till CRUD operationer så som Insert, Update och delete. Repository lagret är också lagret som pratar med webapplikation och som MVC applikationens modeller och controller använder för att utföra sin operationer mot databasen. Unit Testing När DAL, Domain och Repository och applikationen blivit testbar skapades ett unit test projekt vars uppgift bestod i att testa 6
Applikationens CRUD operationer. Alla test utfördes goda resultat och nästa steg web-lagret kunde starta. Web Layer När arbetet med webbappen skulle starta valde jag att börja jobba ASP.NET MVC, detta eftersom det är ett bra och modernt ramverk. Att webappen skapades i MVC möjliggör att system är enkelt att bygga ut och gör det enkelt att skapa ett bra användarvänligt system. I webblagret använde jag mig av ASP.NET Identity för autherisering pga av tidbrist ligger Användare i en separt databas. Utseende mässigt valde jag att utgå från MVC standard gränsnitt eftersom det ger tydlig text och enkel navigering. Vilket i detta fall är viktigt eftersom system i slutända ska kräva så lite instruktioner som möjligt 8 AVSLUTNING Avslutningsvis vill jag skriv lite om funderingar och tankgångar som uppkommit under arbetsgång. Det första tankegången efter avslutat projekt är att jag borde lagt mera energi på research från första början. Hade man haft mer info från början hade man kunnat undvika att göra saker flera gånger. Det hade i slutändan sparat mycket tid och är i sig är en stor anledning till tidsbristen på slutet. En annan tankegång var att mera instruktioner ska finnas på sidan när allt är klart är tanke att det ska finnas video filmer och text instruktioner. Då blir det enklare för slut användare, som kan läsa sig till lösningar på sin problem. För att göra systemet ännu mera användbart bör det skapas möjlighet för globalisering dvs flera olika språk. 7
9 SLUTSATSER Eftersom system inte blivit helt klart återstår en hel del utvecklande. Jag ser det närmast som en fördel eftersom det ger mer utrymme för vidareutveckla för att sedan släppas när det fungerar till 100% En viktigt lärdom för den här storleken på projekt är att börja med research innan projekt börjar. Genom mera information kan man arbeta på ett så strukturerat sätt som möjligt. Då blir det enklare att leverera en bra slutprodukt. Avslutningsvis så kan jag säga att det har varit en spännande process att utveckla ett helt system där man själv är ansvarig och får styra sitt arbete. 8