kolmapäev, 29. oktoober 2014

SimpleGeo C# projekti analüüs

Toomas Juhkov, Silver Lumi (projektijuht), Tiit Kuuskmäe

Käesolev dokument kirjeldab vabas vormis 2014/2015 õppeaasta sügissemestril IT Kolledžis õppeaines „Programmeerimine C# keeles“ teostatava iseseisva grupitöö eesmärki, funktsionaalsust ja planeeritud kasutajarolle. Analüüsi teises osas käsitletakse rakenduse tehnilist teostamist ja meeskonnasisest ülesannete jaotust. Samuti pannakse paika andmebaasis ning programmeerimisel kasutatavad muutujate, andmebaasiväljade, meetodite jms nimetamise põhimõtted.

Eesmärk

Käesoleva projekti eesmärgiks on luua WPF töölauarakendus, mis võimaldab kasutajal pärida ning kuvada kaardil erinevate andmebaasis defineeritud huviobjektide kaugusi kasutaja poolt sisestatud aadressist/koordinaatidest.  Lisaks sellele  antakse otsitavale aadressile abstraktne hinnang/skoor (kvaliteediskoor, näiteks kolmepallisüsteemis) lähtuvalt valitud  kriteeriumist (näiteks turvalisus, haridus, meditsiini või raudteeühenduse kättesaadavus jne).

Projekti raames loodava rakenduse funktsionaalsed eesmärgid jagunevad kaheks:
  1. Baasfunktsionaalsus (must have) - kursuse raames reaalselt töötava lahenduse näol implementeeritavad rakenduse omadused.

    Baasfunktsionaalsus võimaldab kasutajatel otsida lähimat päästekomandot vastavalt sisestatud asukoha parameetritele. Sisestatud andmete alusel kuvab rakendus päästekomandode informatsiooni tekstiliselt, kuid näitab ära ka täpse asukoha kaardil. Lisaks sellele annab süsteem päästevaldkonna sisemiste kriteeriumite alusel (füüsikalises mõttes minimaalne reageerimisaeg põlengule selleks, et veel üldse midagi päästa oleks) kasutajale abstrakse hinnangu tema ruumipunkti päästevõimekuse kohta (kõrge, keskmine, madal).
  2. Laiendatud funktsionaalsus (nice to have) - piisava ajaressursi olemasolul loodavad lisavõimalused. Lisaks päästekomandode andmebaasile liita rakendusse andmed kiirabi, koolivõrgu jms kohta ning võimaldada erinevate huviobjektide andmekihtide omavahelist kombineerimist.

Rakendus baseerub päästekomandode andmebaasil, mille koostab ja mida haldab rakenduse administraator. Kuna antud juhul on tegemist on lähteülesande esialgse püstitusega, siis on oodatav, et projekti käigus teostatav funktsionaalsus mõnevõrra muutub ning täpsustub.

Rakenduse funktsionaalsuse kirjeldus

Selles alajaotuses kirjeldatakse rakenduse funktsionaalsust läbi kasutajarollide, samuti selgitatakse andmete otsimise põhimõtteid.

Kasutajarollid

Selleks, et rakendust kasutada, peab isik end registreerimisvormi alusel süsteemi kasutajaks registreerima. Rakenduses on ette nähtud kaks põhimõtteliselt erinevat rolli:
  • tavakasutaja
  • administraator

Olenevalt kasutajarollist võimaldab süsteem mõnevõrra erineva funktsionaalsuse teostamist. Järgnevalt avame kasutajarollide funktsionaalsuse detailvaates:
Tavakasutaja
  • võib rakendusse sisse logida
  • võib muuta oma profiili andmeid
  • võib teha otsinguid päästekomandode andmebaasis ning kuvada otsingutulemusi
  • võib otsingutulemuse salvestada „lemmikute“ andmebaasi

Administraator
  • võib teha kõike, mida saab teha tavakasutaja
  • võib lisada / muuta / kustutada päästekomandode andmeid
  • võib muuta / deaktiveerida registreeritud kasutajate kontosid
  • võib genereerida kasutajale uue salasõna
Süsteemil on 1+n administraatorit ning 1+n tavakasutajat.

Andmete otsimine

Loodav rakendus võimaldab pärida ning kuvada kaardil erinevate objektide kaugusi ette antud aadressist. Aadressi koordinaatide kindlaks tegemiseks kasutatakse maa-ameti avaliku API võimalusi.
Baasfunktsionaalsuse raames keskendutakse päästekomandode paiknemisele Eestis. Rakendus võimaldab päästekomandode andmeid otsida järgnevate parameetrite alusel:
  • Kinnistu aadress
    • Asula täpsusega
    • Tänava ja hoone täpsusega
  • Kinnistu koordinaadid
Otsingu tulemusena kuvatakse linnulennul kõige lähemal asuva päästekomando andmed:
  • teksti kujul kuvatakse päästekomando kaugus kilomeetrites ja kvalitatiivne hinnang päästevõimekuse kohta antud ruumipunktis (A - kõrge, B - keskmine, C - madal)
  • kaardil kuvatakse täpne päästekomando asukoht
  • päästekomando nimele vajutades kuvatakse teksti kujul päästekomando aadress ja muu komando võimekust puudutav informatsioon (autode arv, erivõimekused).

Otsingutulemuse salvestamine

Kasutajal on võimalus salvestada otsingu tulemusel leitud päästekomando nö „lemmikute“ nimekirja. Lemmikuid saab lemmikute nimekirjast valida ning lemmiku andmeid rakenduses kuvada. Kasutajal saab soovi korral lemmikuid nimekirjast ka kustutada.

Rakenduse tehniline teostamine

Järgnevalt kirjeldatakse rakenduse teostamisel kasutatavaid üldisi põhimõtteid, nimede ja kommenteerimise standardeid ja teisi tehnilist teostamist puudutavaid aspekte.

Üldised põhimõtted

Rakendus teostatakse järgmiste põhimõtete alusel:
  • rakendus viiakse ellu WPF desktop application formaadis;
  • päästekomandode, kasutajate ning lemmikute salvestamiseks kasutatakse relatsioonilist andmebaasi, mis majutatakse pilves, kusjuures ligipääs pilvele toimub läbi loodava veebiteenuse;
  • aadressiotsingul võetakse aluseks maa-ameti vastav avalik API;
  • andmete kuvamiseks kaardil kasutatakse Microsoft Bing Maps võimalusi.

Nimede ja kommenteerimise standardid ja kokkulepped

  • meetodite, andmebaasiväljade, muutujate jms nimed kirjutatakse inglise keeles;
  • kommentaarid kirjutatakse inglise keeles;
  • muutujate ning meetodite nimetused camel-case (näide: userName), alakriipse (näide: user_name) jms ei kasutata;
  • Andmebaasispetsiifilised kokkulepped:
    • väljade nimetused algavad suure tähega
    • normaliseeritud tabelid sisaldavad identity välja ID
    • Foreign Key piirangutega väljad kirjutatakse kujul “tabeli nimi ainsuses” + ID, näiteks UserID

Märkused

  • kõik kasutaja poolt süsteemi sisestatavad andmed valideeritakse (näiteks kontrollib süsteem, kas e-kirjas sisaldub @ märk)
  • C# keeles loodavad meetodid üritatakse hoida võimalikult lühikestena;
  • andmebaas luuakse maksimaalselt normaliseeritult.

Tööülesannete jaotus

Rakenduse välja töötamisel jagatakse tööülesanded grupiliikmete vahel järgmiselt:
  1. Silver: Rakenduse üldine arhitektuur. Andmemudeli loomine. Andmebaasi arhitektuur ja implementatsioon, andmebaasi veebiteenuse loomine. DAO objektide loomine.
  2. Toomas: Kasutajaliides ning kõik presentation layer’iga seotud punktid, sh sisestatavate andmete valideerimine, veateated jne.
  3. Tiit: Maa-ameti API integratsioon rakenduse andmemudelisse. Päästevaldkonda puudutavate spetsiifiliste andmete hankimine ja asjakohane tõlgendamine. Rakenduse äriloogika mudelite loomine.
Kõik tiimiliikmed osalevad jooksvalt  veakindluse, kasutusmugavuse ja muude aspektide testimisel. Samuti vaadatakse teiste tiimiosaliste tehtud töö üheskoos üle ka köögipoolelt, et (C# keeles) programmeerimise erinevatest aspektidest võimalikult palju õppida.

Keeruliste osade teostamine ning ohukohad

Rakendust puudutavad keeruliste osade määratlemine on mõneti ettenägematu, kuid tõenäoliselt võib raskusi tekkida järgmiste aspektidega:
  • maa-ameti info kättesaadavus ja kasutatavus meie rakenduse kontekstis;
  • merepäästekomandode süsteemi integreerimine (merel olles ei saa esitada aadressi, võimalik on vaid GPS otsing; maismaad puudutava GPS päringu korral tuleb merepäästekomandod jällegi otsingu tulemustest eemaldada)
  • rakendus on küll kasutatav võrguühendusega seadmetes, kuid selle mobiiltelefonides kasutuselevõtuga seotud võimalike probleemide ring pole täielikult teada

esmaspäev, 27. oktoober 2014

Projekti algus.

Projekt SimpleGeo tiim:

Toomas Juhkov
Tiit Kuuskmäe
Silver Lumi (projektijuht)

28. september 2014

Tiimi sünnipäevaks võib lugeda 28.-ndat septembrit. Paika pandi koosseis ning formuleeriti algne idee. Tiidu seotus vabatahtlike päästjatega sundis teda mõtlema rakendusele, mis näitaks ära suvaliselt valitud aadressi kauguse lähimast Päästekomandost. Kuna idee tundus huvitav ning skaleeritav, otsustasime mõtet edasi arendada ja projektina teostada.

2. oktoober 2014

Valmib projekti esialgne lähteülesanne. Sisaldab kirjeldust, eesmärki, funktsionaalsust, kasutajarolle ning ettepanekut tiimi tööjaotuseks.

21. oktoober 2014

Skype konverentsi käigus andsime tiimile nime SimpleGeo. Valisime Silveri pidulikult projektijuhiks. Arutlesime algse idee laiema rakendamise osas. Ajurünnaku käigus lisandusid sidumised teiste valdkondadega ning hinnangud.

Laiemalt võttes püstitasime eesmärgiks luua rakendus, mis mõõdab valitud aadressi vahemaad erinevaid valdkondi puudutavatest objektidest, näiteks päästekomandod, gümnaasiumid, raudteejaamad, haiglad, teatrid jpm. Erinevate objektide kauguste hindamisel saab vormida mudelid, mille alusel hinnata valitud aadressi turvalisusastet (päästekomando, politseijaoskonna, medüksuse lähedus/kaugus), kultuuri tarbimise võimalusi (teater, kino, kultuurimaja jms), hariduse kättesaadavust (lasteaiad, koolid, gümnaasiumid, huvikoolid) jne.

Väljundina kuvatakse andmebaasis leiduvate objektide kaugused koos metainfoga ning abstrakte 3-astmeline hinnang (A, B või C) valdkonniti. Lisaks saab leitud objekte kuvada ka kaardil.

22. oktoober 2014

Lõime Wiki lehe ning VSO konto.

26. oktoober 2014

Tiimi koosolek. Täpsustasime skoopi, leppisime kokku detailides (näiteks koodistiil, inglise keele kasutamine nii koodis kui kommenteerimisel, andmebaasi struktuurid, tööjaotus). Püstitasime esmased tähtajad analüüsi, logipidamise ning projekti teostamise alguse suhtes, leppisime kokku lähteülesande - admin-liidese loomine.

27. oktoober 2014

Lõime projekt SimpleGeo blogi, kuhu saame jooksvalt kirjutada projekti teostamisega kaasnevaid logisid.