Meeskond:Vertigo

From EIK wiki

Meeskond

Meeskonna liikmed:

  • Meri-Kris Jaama
  • Liisi Kitsapea
  • Teele Liblik (projektijuht)
  • Tanel Peet

Idee

Luua WPF tehnoloogiat kasutades mäng, mille sisuks on erinevate kunstiteoste (filmid, raamatut, muusika, maalid) äraarvamine lühikeste klippide, piltide, helide või muude vihjete abil.

Analüüs

1. Analüüs rakendusele.

a. Mida see endas sisaldab?

Rakendus sisaldab endas kasutajaliidest ja andmebaase kasutajate, kunstiteoste, autorite, kunstiliikide ja mängutulemustega.

b. Mis on selle eesmärk?

Reaalteadlastena, tunneme erilist vajadust kunstialaste teadmiste harimise järgi ja usume, et mängimine on väga efektiivne viis teadmiste omandamiseks. Seepärast loomegi õppevahendina mängu rakenduse. Rakenduse eesmärk on läbi mänguliste elementide olla abivahendiks kasutaja kunstialaste teadmiste omandamisel ja laiendamisel. Rakendus on mõeldud kõigile inimestele, kellel on huvi arendada/omandada teadmisi erinevate kunstiliikide teoste kohta ning kellel on ligipääs Windows 8 operatsioonisüsteemile.

Pikaajalisem visioon on pakkuda kasutajatele võimalust harida end paljude erinevat liiki kunstivormide teoste hulgas (filmikunst, muusika, maalikunst jne). Käesoleva aine raames, on eesmärk realiseerida rakendus esialgu ainult filmikunsti vallas (kirjeldatud ka must have ja nice to have osas).

c. Mida tavakasutaja sellega teha saaks?

Rakenduse abil saab kasutaja laiendada oma teadmisi erinevate kunstiliikide väljundite kohta. Täpsemalt, saab kasutaja seostada kindlat teost teose autori ja teose nimega (nice to have’ina lisasime ka loomisaasta, mis teostub, kui jagub piisavalt ajaressurssi). Mängus kuvatakse kasutajale kunstiteosest screen shot (või nt muusikateosest viisijupp), misjärel saab kasutaja sisestada teose nime ja autori nime. Kasutaja huvi stimuleerimiseks võimaldab rakendus koguda õigete vastuste eest punkte.

d. Milliste osade realiseerimine võib osutuda problemaatiliseks?

Tõenäoliselt saab olema paras pähkel vastuse sisestamise loogika realiseerimine selliselt, nagu praegu nõuetes ja protsessis oleme välja toonud. Tõenäoliselt lisandub testimise käigus sellele aspektile igasuguseid erandeid ja olukordi, mida hetkel ei oska ennustada.

e. Kui on tööjaotus paigas, siis tuua ka see välja.

Plaanime rakenduse loomisel appi võtta mõningad SCRUMi põhimõtted ja üheks neist on kindlasti see, et oleme cross-functional team. Täpsemalt selgineb iga meeskonnaliikme panus iteratsioonide käigus, mida kindlasti siin ka kajastame.


Kuna plaanime koodi kirjutada inglise keeles, siis järgnevalt on toodud ära mõisted, mida rakenduse analüüsis ja koodis kasutame (täiustub jooksvalt). Vabandame inglisekeelsete mõistete “eestistamise” pärast eestikeelses tekstis, kuid kuna tegu on pigem väga lihtsate mõistetega, siis loodame, et ei tekita palju segadust.

a. User – mängu mängija ehk rakenduse kasutaja;

b. QuestionSet – 1 mäng, koosneb kindlast arvust questionitest;

c. Game mode – võimaldab useril valida, millist QuestionSet’i soovib mängida. Varieeruda võivad küsimuste arv, teoste stiil, liigid jne;

d. ArtWork – teos, mis esitatakse questionis;

e. Question – küsimus, seos, artWork mängus;

f. Logs – logid;

g. Score – skoorl;

h. ArtWorkType – kunstiliik (film, maalikunst, muusika jne);

i. Artist – teose autori nimi;

j. Year – teose loomisaasta;


2. Tuua välja nimekiri funktsionaalsusest, mida plaanitakse kindlasti teostada(Must have)

a. useril peab olema võimalik luua kasutaja;

b. useril peab olema võimalus näha erinevate QuestionSet’ide score’e (konkreetse rakenduse piires);

c. andmebaas questionitele, kus ArtWorkType on film. Seega on kõik questionid esialgu filmikunsti valdkonnast.

d. vastamine käib nii, et user hakkab kirjutama questioni alla vastust vabale väljale ja rippmenüü pakub vastavalt sisestatud tähtedele kõikidest baasis olevatest fimidest variante, millest user valib selle filmi nime, mida tahab vastusena esitada;

e. edasi ja tagasi saab questionite vahel suurepäraselt liikuda;

f. viimase questioni juures pole mitte “NEXT”, vaid “END” (pole võimalik järgmist küsimust valida);

g. esimese questioni juures pole võimalust valida “PREVIOUS” (minna eelmise küsimuse juurde);

h. QuestionSet loetakse lõpetatuks, kui user on klõpsanud “END”;

i. user saab valida game mode’i, kas 5, 10 või 15 questionit;

j. peale vastamist (“END’i” klõpsamist) saab user kohe ainult viimase QuestionSet’i vastuseid vaadata. Kui QuestionSet kinni pannakse, kustuvad viimased vastused ära.

k. score moodustub vastavalt õigete vastuste hulgale (kui teose autor ja teose nimi on mõlemad õiged, saab user 3 punkti, kui neist ainult 1 on õige, saab 1 punkti);

l. score on esitatud nii, et on võrreldav erinevate game mode’ide vahel;


3. Nimekiri funktsionaalsustest, mis võiks olla, aga mida ei pruugita ajapuuduse tõttu realiseerida.(Nice to have)

a. rakendus ei ole ainult konkreetse masina spetsiifiline, vaid suhtleb üle interneti. Seega on võimalik skooritabelis näidata kõikide userite score’e. Useritel on lisaks kasutajanimele ka password;

b. (järg punktile a.) viktoriini game mode. Saab mängida seltskonnaga ühte QuestionSet’i;

c. questionid luuakse erinevate artWorkType’idega. Filmikunsti teostele lisanduksid ka muusika, maalikunsti jne teosed;

d. saad valida, mitmendat questionit tahad vastata (must have’ina sai liikuda ainult eelmise ja järgmise questioni vahel);

e. artWork andmebaas, mis kogub endasse kõik rakenduses olevad teosed on suur;

f. palju erinevaid game mode’e. Nt kindel mäng, kus questionid on samad;

g. questionis küsitakse ka teoste loomisaastat (year);

h. questionis küsitud loomisaasta (year) kohta antakse vastamisel võimalik ajavahemik;

i. loogika, mis kontrollib rakenduses kasutaja loomisel useri sisestatud vanust ja lähtuvalt sellest valib eakohaseid questioneid;

j. Tanel kirjutab questionite vastamisele ajapiirangu, kui tal igavad jõulud.


Useri loomisel on küsitud järgmist infot:

- nimi;

- vanus (nice to have nõue);


Useri protsess rakenduse kasutamisel:

1. user teeb endale kasutaja;

2. valib mängu pikkuse (game mode’i), kas 5, 10 või 15 questionit;

3. kuvatakse esimene question, mis tähendab, et kuvatakse screen shot ühe filmi stseenist. Lisaks on kuvatud ka 2 välja, kuhu user saab vastused sisestada: mis filmiga on tegu ja kes on filmi autor;

4. vastamine käib nii, et user hakkab kirjutama vastust vabale väljale ja rippmenüü pakub vastavalt sisestatud tähtedele (vahet pole, mitmenda vastuse sõna esimesed tähed) kõikidest baasis olevatest fimidest variante, millest user valib selle, mida tahab vastusena esitada. Näiteks, on screen shot filmist “Harry Potter and the Sorcerer's Stone” ning user tunneb screen shoti järgi filmi ära ja hakkab kirjutama vastuse väljale “sorcerer…”. Selle peale tekib vastusevälja juurde rippmenüü, kus on ka toodud ühena variantidest “Harry Potter and the Sorcerer's Stone”, mida user saab valida ja vastusena esitada. Sama loogika järgi valib user ka režissööri nime;

5. user saab liikuda erinevate questionite vahel mängitavas QuestionSet’is;

6. viimase questioni juures pole mitte “NEXT”, vaid “END”. “END’ile” vajutamine annab märku QuestionSet’i lõpetamisest, misjärel loetakse kokku mängu score (kui teose nimi ja autor olid mõlemad õiged, suureneb score 3 punkti, kui neist ainult 1 on õige, suureneb score 1 punkti võrra);

7. rakendus näitab score’i, mis mängitud QuestionSet’i tulemusel saadi;

8. lisaks kuvatakse valik “vaata detailselt tulemust”, mis viskab useri mängitud QuestionSet’i algusesse, kus nüüd saab user kõik juba vastatud questionid ühe kaupa läbi käia ja analüüsida, mis vastus läks õigesti, mis mitte ja mis sel juhul oleks olnud õige vastus;

9. kui vastused läbi vaadatud, saab user alustada uut QuestionSet’i.


Järgnevalt on ära toodud rakenduse esialgne ERD mudel.

Vertigo ERD.jpg

Prototüüp

Rakenduse põhifunktsionaalsust on näha prototüübis, kus on võimalik teha läbi üks 5 küsimusega mäng. Tuleb ära arvata, mis filmist on kuvatav pilt pärit ning kes on selle režissöör. Kui vastata õigesti nii teose nimi, kui autor, siis saab selle eest 3 punkti. Kui ainult üks vastata õigesti, siis 1 punkti. Prototüübil on hetkel andmebaasis vähe kirjeid ning selle eesmärk on näidata rakenduse üldist ideed ning toimimist.

Töötav funktsionaalsus:

  • Andmebaasist suudetakse valida n juhuslikku kindlat tüüpi teost (antud rakenduse korral valitakse 5 filmiteost);
  • Rippmenüüst saab valida kõigi baasis olevate teoste nimede ning autorite seast;
  • Rakendus suudab arvutada kasutaja saadud punktid ning maksimaalsed punktid antud küsimuste arvuga mängu eest;
  • Rakendus suudab näidata kasutajale tema vastuseid ning korrektseid vastuseid

Puudused, mis vajavad parandamist siiamaani loodud rakenduse juures:

  • Kasutajaliidese disain ja kasutatavus (parem disain tegemisel, praegu võimalikult kiiresti loodud kujundus)
  • Rippmenüü asemel tuleb segu tekstväljast ja rippmenüüst, kus kasutaja saab hakata sisestama teksti ning talle pakutakse sobivaid vastuse variante
  • Koodi loetavamaks tegemine ja arendusmustrite parem järgimine
  • Iga mängu tulemused tuleks andmebaasi salvestada
  • Peaks rohkem logisid lisama


Lisafunktsionaalsused, mis vajavad veel tegemist:

  • Teoste lisamise/muutmise/kustutamise võimalus
  • Avaleht
  • Seadete leht
  • Parimate tulemuste leht
  • Võimalus mängida erineva küsimuste arvuga mänge


Rakenduse kood

Rakenduse kood on saadav siit.

Enne rakenduse käivitamist tuleks luua ka andmebaas, tabelid ning sisestada näidisandmed.

Andmebaasi loomine ja ühendamine:

  • Visual studios View - Server explorer
  • Data connectionsi peal parem klikk - Add connection
  • Data Source Microsoft SQL Server (SqlClient)
  • Server Name:(localdb)\v11.0
  • Select or enter a database name: vertigo
  • OK


Tabelite ja näidisandmete lisamine andmebaasi:

  • Solution exploreris avada Database - SQLScripts - CreateTables.sql
  • Kui teete esimest korda tabeleid, siis kommenteerige DROP TABLE laused välja, muidu saate errori
  • Valige koodi kohal olevast rippmenüüst õige andmebaas (ilmselt alguses on master, valige vertigo)
  • Vajutada Execute nuppu (väike roheline play nupu moodi asi)
  • Server name peaks olema (localdb)\v11.0. Vajutada Connect.
  • Näidisandmete sisestamiseks sama asi läbi teha InsertSampleData.sql-iga.


Ajaveeb

27.10.14

Koosolek. Osalesid – kõik. Teema – põhjalikumalt läbi mõelda, kuidas oma ideed programmina teostada. Koostasime ERD-mudeli, mängisime läbi kasutajakogemuse ja mõtlesime mängu loogika läbi. Otsustasime kasutada Windows 8 Store App’i tehnoloogiat.

03.11.14

Koosolek. Osalesid – kõik. Teema - Windows 8 Store App’i tehnoloogiat ei soovitatud, peame ümber mõtlema. Mõtlesime ümber, et teostame Vertigo veebirakendusena. Koostasime uue ERD-mudeli ja mõtlesime läbi erinevused varasemaga. Suurim erinevus oli databaasi asukoht (kas lokaalne või globaalne).

10.11.14

Koosolek. Osalesid – kõik. Teema – teostada Vertigo veebirakendusena ei ole soositud variant, peame ümber mõtlema. Ostsustasime kasutada kasutajaliidesena Windows Presentation Foundation(WPF). Õnneks mõistsime, et suuresti saame kasutada samu mõttemustreid ja ERD-mudelit, nagu alguses mõtlesime. Muuhulgas otsustasime kasutada TFS’is Kanbanpad’i, et märkida taske ja oleks parem ülevaade, kes, mida parasjagu tegemas on. Küll aga, kujunes arenduse käigus tihtipeale nii, et taski lahendati koos, aga task jäi TFS’is seotuks ainult ühe inimese nimega.

15.11.14

Ühishäkkimine. Osalesid – kõik (Liisi Skype’i teel). Teema – hakkame programmi looma. Valmis said andmebaas, olulised disainielemendid ja sai palju uuritud tulevasi teemasid (nt, kuidas pildifaile andmebaasi salvestada). Ühtlasi, leidis kinnitust, et rajame oma koodi Model View View Model arendusmustrile.

17.11.14

Koosolek. Osalesid – kõik (Liisi osales Skype teel). Teema – koos tegutseda programmi kallal. Mõelda välja, mida õppejõult küsida võiks ja seda küsida. Ühtlasi leidis kinnitust, et pilte otse andmebaasi pole mõtet salvestada meie programmi puhul ja selgines, kuidas võiksime üles ehitada oma vaatefailid.

24.11.14

Koosolek. Osalesid - kõik (Liisi osales Skype teel). Teema – koos tegutseda programmi kallal.

27.11.14

Koosolek. Osalesid – kõik. Teema – arutada, mis on programmis puudu, mis võiks olla teistmoodi, vaadata üle, mis prototüübiks vaja veel teha on.

Nagu analüüsis välja tõime, otsustasime vaadata oma meeskonda, kui cross-functional tiimi. Sellest olenemata on igale meeskonnaliikmele välja kujunenud omased ülesannete jooned:

  • Liisi – testimine, databaasi tugi, vastuseväljade funktsionaalsus.
  • Tanel – projekti idee, databaas, programmi loogika, põhiosa programmi ülesehituses ja koodis.
  • Meri-Kris – disain, vaatefailide loogika.
  • Teele – projektijuht, projektiga seonduv kommunikatsioon/dokumentatsioon, disaini tugi.

27.11.14 – 19.12.14

Individuaalne töö. Ehk siis igaüks tegi nii palju, kui jõudis.

19.12.14 – 22.12.14

Virtuaalne kollektiivne hackaton. Sellel perioodil viimistleti ja lisati kõik prototüübist puuduolevad must-have funktsionaalsused.

  • Kasutajaliidesele tehti äge disain;
  • Vastuseväli on selline, kuhu kasutaja saab soovi korral 1)vastust kirjutada, misjuhul pakub autocomplete vastuste hulgast välja kirjutatava nime, 2)rippmenüüst valida õige vastuse;
  • Kood muudeti arendusmustreid järgivamaks;
  • Iga mängu tulemus salvestatakse andmebaasi;
  • Lisati juurde logisid;
  • Lisati avaleht;
  • Lisati parimate tulemuste leht;
  • Lisati seadete leht;
  • Lisati võimalus kasutajal valida mitme küsimusega mängu soovitakse mängida (valitavate küsimuste arv 5-15, algselt plaanisime lubada 5, 10, 15, hiljem otsustasime anda kasutajale rohkem vabadust);
  • Lisati võimalus valida erinevate gameMode-de vahel (drama, romantic, random);
  • Lisati võimalus vaadata skooritabelit erinevate gameMode-de vahel;
  • Lisati mängus lehtede vahel liikumise funktsionaalsust (võimalus väljuda eelmisele lehele jne);

Meri-Kris tegeles disaini ja skooriga seotud funktsionaalsusega, Liisi täitis andmebaasiga seotud ülesandeid ning testis valmimisjärgus programmi, Tanel lihvis ja täiendas mänguloogikat, Teele tegeles mitmete UI küsimustega ning vastuste sisestamise loogikaga.

22.12 õhtu seisuga on kõik projektis püstitatud must-have funktsionaalsused Vertigo programmis olemas ja töötavad. Kahjuks ei jõutud ühtegi nice-to-have funktsionaalsust ellu viia.

Lõpptoode

Lõpptoode on saadav siit.

Kasutusjuhend on sama, mis prototüübi puhulgi. Enne rakenduse käivitamist tuleks luua ka andmebaas, tabelid ning sisestada näidisandmed (vt. kirjeldust Prototüübi alt). Vertigot mängides tuleb ära arvata, mis filmist on kuvatav pilt pärit ning kes on selle režissöör. Kui vastata õigesti nii teose nimi, kui autor, siis saab selle eest 3 punkti. Kui ainult üks vastata õigesti, siis 1 punkti. Vastata saab nii vastusevälja kirjutades kui ka dropdown menüüst vastusevariandi valides.