Sporto
C# projekt Sporto
Meeskonna nimi: Sporto
Projekt
Spordiürituse korraldamis -ja haldamissüsteem
Meeskonna koosseis
- Merit Ridaste (omal soovil loobus projektist 11.12.2015)
- Kelli Lukas
- Vladimir Rõkovanov
- Mikk Raudsepp
- Alar Ameerikas
Projektijuht: Vladimir Rõkovanov
Projektist
Ülevaade
Spordiürituse korraldamise -ja haldustarkvara WPF-is. Korraldaja saab luua üritusi, monitoorida ürituse toimumist, hallata hindamissüsteemi ja raportit, kuvada ajakava jne. Eesmärk on kiirendada ning muuta spordiüritused sujuvamaks ja tõhusamaks, kuna antud hetkel valitseb sageli võistlustel segadus või lausa kaos, kuna ei teata millal on kelle kord, kuhu peab minema jne.
Kasutatav .NET tehnoloogia
Kasutatav raamistik: .NET Framework 4.5
Kasutatav tehnoloogia: C#, Windows Presentation Foundation, Owin, SignalR, Entity Framework, LINQ
Kasutatav arhetektuuriline muster: MVVM
Andmebaas: MSSQL
Täpsemalt rakenduse tööst
Topoloogia
Andmebaasi mudel
Esmane andmebaasi mudel, millisena me näeme seda ette (Subject to change)
Programmi töökäik
Sporto WPF aplicatsioon on SERVER-CLIENT desktop aplikatsioon - edaspidi kutsume lihtsalt Sporto (app). Saab käivitada 3 režiimis.
- Sporto app Admin režiimis on appil admini vaated ja serveri funktsioon (OWIN), mis jookseb kindlal Pordil.
- Server käivitatakse ainult Admini režiimis, mis võimaldab teiste kasutajate ühendamist.
- Admini vaates saab teha administratiivseid operatsioon: luua üritust, lisada osalejaid, hallata ajakava, luua hindamismall.
- Sporto app Kohtuniku režiimis on appil kliendi funktsioon, hindamis vaade, ajakava vaade.
- Peakohtunik saab oma vaadetes teha hindamisega seotud operatsioone: kontrollib alamkohtunike hinnanguid, saab ise hinnata vastavalt vajadusele, kinnitab hindamised, lisaks kinnitab Peakohtunik ka lõppraporti.
- Alamkohtunik: Võimalik ainult hetkel avatud etteastet hinnata ja oma hinnet parandada, kui eelmine hinne lükati peakohtuniku poolt tagasi.
- Sporto app Ajakava režiimis on appil ürituse ajakva vaade.
- Selles vaates on võimalik arvutil ühendada ennast läbi IP kohalikus võrgus oleva Sporto OWIN serveriga ning läbi arvuti kuvada aakava ekraanidele ja mujale kuhu vaja. Nii saavad hetkel toimuvat ja tulevasi mänge näha nii osalejad, kui ka pealtvaatajad.
Sporto app luuakse kasutades ära SignalR frameworki andmevoo edastamiseks reaalajas vaadete vahel üle WebSocketi protokolli.
SignalR ja OWIN (The open web Interface for .NET) kasutus võimaldab tuleviku mõttes muuta hetkel plaanitav desktop aplikatsioon reaalajas töötavaks veebirakenduseks.
OWIN host kasutamine teeb aplikatsiooni kergeks, sest me ei vaja tervet web serveri funktsionaalsust nagu seda pakub nt IIS.
Use Cases/User Stories
Võistleja Merit
- Merit istub tribüünil ja vaatab kaasvõistlejate esitust. Vaadates ekraanilt ajakava näeb, et tema etteaste algab kolme kava pärast, seega sätib sammud lava taha ette valmistuma. Seal on ka ekraan, mille pealt ta saab ettevalmistusi ning soojendusi tehes jälgida võistluse käiku ja hoida end muudatustega kursis. Peale etteastet näeb ka enda tulemusi.
Peakohtunik Irina
- Peakohtunik Irina saadab uue kategooria eel kohtunikele antud kategooria kava. Peale esimest etteastet, kui kohtunikud on ära hinnanud, kinnitab peakohtunik vastavad hinded ning avalikustab tulemused ajakavva. Ülejäänud etteastega toimitakse samamoodi, kuid viimase kava korral ühe kohtuniku punktid polnud kooskõlas ülejäänutega. Irina saatis need tagasi kõnealustele kohtunikele uuesti hindamiseks. Saanud kohtunikelt punktid, mis ei erine üksteisest üle 0.5 punkti, Irina kinnitab ning avalikustab tulemuse
Probleemid
- Server ja andmbaas jooksevad meil ühes arvutis.
- Kui midagi arvutiga juhtub, võib suur osa turniiri andmeid kaduma minna. Peab olema võimalus viimane turniiri olek taastada Sporto taaskäivitamisel.
- Üksik arvut on tundlik DDoS-ile ja ka tavalisele kohaliku võrgu ülekoormamisele.
- Võivad probleemid tekkida erinevate tulemüüridega, takistades kohtunikel serveriga ühendust võtta.
- Praegu väga manuaalne tegevus üritust luua. Korraldaja ei pruugi kõike sisestada, mis muudab programmi jooksutamise võimatuks/vigaseks.
- Kasutajate sisestamine on hästi aeganõudev tegevus, võib esineda vigu ja üks võisteleja võib sattuda andmebaasi mitu korda.
- Ka ülessättimine võib osutuda korraldajale rakseks, võib vaja minna kasutajajuhendit.
- Andmebaasi kujundamine keeruline, soovides jätta tulevikus võimalust laieneda teistele spordialadele.
Funktsionaalsused
Planeeritavad funktsionaalsused
Esmane Sporto valmib Akrobaatikale tuginedes.
1. Andmebaas ja selle haldamine
- Kasutajad
- Kasutajate loomine (nii kohtunikud, kui ka osalejad)
- Admin kasutaja loomine
- Admin kasutaja saab luua alamkasutajaid
- Kasutajatele kasutajagruppide lisamine (Peakohtunik, Alamkohtunik jne)
- Kasutajagruppidele õiguste lisamine
- Võistlused
- Ürituse loomine (käsitsi sisestamine)
- Kohtunike ja osalejate lisamine(käsitsi)
- Tehniliste viperduste korral on võimalik võistluse hetkeseis taastada
2. Erinevate vaadete kuvamise võimalus.
- Admini vaade (Korraldaja)
- Saab luua üritust
- Saab muuta üritust
- Saab lisada kasutajaid
- Saab muuta kasutajaid
- Saab anda kasutajatele õiguseid
- Saab muuta kasutaja õiguseid
- Saab luua hindamise malli
- Saab muuta ajakava
- Saab lisada üritusele kategooriaid
- Saab lisada kategooriatesse võistlejaid
- Saab üritust ja ürituse kategooriaid lisada ajakavasse
- Saab muuta ajakava
- Peakohtuniku vaade
- Kuvatakse kohtunike tulemusi
- Kuvatakse kohtunike tulemusi kokkuvõtvalt
- Saab kinnitada kokkuvõtva tulemuse
- Kinnitab etteaste lõppemise
- Saab anda käskluse kategooria hindamiseks, peale mida kuvatakse tavakohtunikele nende vaadet.
- Kohtuniku vaade
- Kuvatakse ainult hetkel toimuva kategooria lahtreid, mida on vaja täita.
- Saab kinnitada enda hinnangu
- Vale hindamise korral antakse tagasiside, mis oli valesti ning ei lasta hinnangut kinnitada
- Ajakava
- Kuvada võistluse hetkeseisu ajakaval (kui kaugel ajaliselt võistlus on, mis kategooria), kuvab vaikimisi kolme )praegu, järgmine, valmistub).
- Ajakava filtreeritakse kõigepealt taseme(Mini A, Mini B, Laste A, Laste B, Age(2 kava), Junior(2 kava)) järgi, seejärel rühma( naistepaar, meestepaar, segapaar, naiste kolmik, meeste nelik) järgi.
- Saab sisestada ajalitempliga elemente
- Ajakava saab lülitada režiimile, kus kuvatakse ka kõige uuemaid tulemusi
- Lõpptulemuste vaade
3. Hindamissüsteemi lühikirjeldus samm sammult (tugineb Akrobaatikal)
- Peakohtunik avab (n) esituse hindamisvaate tavakohtunikele.
- Tavakohtunike poolt hinnete sisestamine.
- Peakohtunike kontroll ja kinnitamine hinnete üle.
- Antud esituse punktide kokkuarvutamine, salvestamine
Võimalikud funktsionaalsused (kui aega üle jääb)
- Erinevate ürituste sidumine
- Kohtunike ja osalejate, ürituse import/eksport
- Osalejate import on kõige aeganõudvam osa, seega import võimalustest tähtsaim.
- Võimaldamaks suuremat automatiseerimist
- Tasemete automatiseerimine
- Vanade ürituste haldamine andmebaasis
- Eraldi ajavaated publikule ja osalejatele
- Erinevaid üldajavaateid
- Kõik seni toimunud etteasted ja nende tulemus
- Ainult eesolevad etteasted
- Detailsem ülevaade hetkel toimuvast etteastest (osalejate ajalugu nt)
- Hindamissüsteemi üldistamine erinevatele aladele
- Kasutusjuhend
- Sisestuste valideerimine
Prototüüp
Sporto Visual Studio solutioni allatõmbamiseks. Link: https://onedrive.live.com/redir?resid=B04DA53E21E8691B!30244&authkey=!AO2gXYl6yrrc1HM&ithint=file%2c7z
Videojuhend, mis aitab SignalR-i funktsionaalsust proovida: https://www.youtube.com/watch?v=D2_KJu4yrtk
Programmi ligipääsu kasutajanimi:parool Admin a:a Kohtunik b:b Ajakava c:a
Andmebaasi loomiseks VS konsooli kirjutada: update-database
Lõpptoode
Lõpptoote link: http://1drv.ms/1lSbvJz
Andmebaasi loomiseks käsureale: PM> update-database
Kokkusaamiste logid
Algus
16.09
Saime esimest korda kokku ja genereerisime erinevaid ideid, millest kolm olid kõige huvitavamad. Neist valisime siis välja parima - Sporto.
Teine
23.09 Algelise spetsifikatsiooni välja selgitamine, nime välja mõtlemine. Koosoleku märkmed
Kolmas
30.09
Erinevate metoodikate arutlemine.
Neljas
03.10
By Default Võimlemisalad. Esimesena teeme Akrobaatika süsteemi. Hiljem lisame teised alad (rühmvõimlemine, kulturism, maadlus, saalihoki).
Vajalik on hindamismall, andmebaasi struktuur.
Ajakaval on 2 vaadet: KOHTUNIK/muuda, VõistlusteVaade
Merit saadab Google Docis ülevaate Akrobaatikast.
Tulevikuks teada: TeamFundation, MVVM - Navigation
Viies
14.10
Akrobaatikavõistluse infosüsteemi planeerimine - õiguste jagamine kasutajate vahel, hindamissüsteemi kujundamine.
Kohtunikud jagunevad peakohtunikuks (näeb kõiki alakohtunike tulemusi, saab need kinnitada/tagasi lükata ebasobivuse korral, saata edasi ajakavas kuvamiseks) ja alakohtunikeks (ainult hindamine, kava info).
Kelli teeb andmebaaside mudelid, õiguste tabelid.
Kuues
28.10
Andmebaasi mudelite ülevaatamine, muutmine. Analüüsi koostamine - kogu spetsifikatsioon. Nädalavahetuseks teeme lõpliku analüüsi, kõik vaatame üle ja vajadusel muudame. Vladimir kirjutab topoloogilise kirjelduse vaadetest, nende omavahelisest suhtlusest.
Seitsmes
11.11
Vladimir näitas ühte navigeerimise võimalustest. Põhiülesanne on navigeermine paika panna, siis saab edasi porgrammeerida.
Teha: Vladimir annab lingi videole, navigeerimiseks. 2.Kõik vaatavad loengu järgi. 3. Kuidas navigeerida asju, googeldage! Leiame parema variandi?
Võimalikud probleemid: SignalR*
Järgmine kokkusaamine kell 9.00 #C Reedel