Sporto

From ICO wiki

C# projekt Sporto

Meeskonna nimi: Sporto

Projekt

Spordiürituse korraldamis -ja haldamissüsteem

Meeskonna koosseis

  • Merit Ridaste
  • 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

Sporto-topo2.jpg

Andmebaasi mudel

Esmane andmebaasi mudel, millisena me näeme seda ette (Subject to change)

Sportodb.png

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.

Koosoleku märkmed

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.

Sporto-topo2.jpg

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