Meeskond: Lebokeiss OÜ

From EIK wiki

C# projekt Vajutuskunn

Meeskonna nimi: Lebokeiss OÜ

Projekt

Operatsioonisüsteemi ja valitud programmide lühendite õppimise simuleerimise rakendus.

Meeskonna koosseis

  • Iris Tambaum
  • Kerli Edasi
  • Joonas Jõeleht
  • Timo Lanno
  • Karell Veskimeister


Projektijuht: Joonas Jõeleht


Projektist

Ülevaade

Klaviatuuri kombinatsioonide simulatsiooni tarkvara, mis pakub kliendile võimalust mugavas ja stressivabas keskkonnas kiirelt omandada erinevaid kombinatsioone. Eesmärk on lühendada koolitustel erinevate käskude ja lühendite omandamise aega. Samal ajal ka pakkuda võimalust iseseisvalt arendada enda oskusi valitud keskkonnas.

Kasutatav .NET tehnoloogia

Kasutatav raamistik: .NET Framework 4.5

Kasutatav tehnoloogia: C#, Windows Presentation Foundation, Entity Framework, LINQ

Kasutatav arhetektuuriline muster: MVVM


Täpsemalt rakenduse tööst

Idee kirjeldus

Tänapäeva inimene veedab oma päeva suures osas arvutis, kasutades erinevaid programme. Olgu selleks interneti brauser või tekstitöötlusprogramm. Me kõik teame, et igal programmil on olemas klahvide kiirkombinatsioonid, millega saab programmi efektiivsemalt kasutada, ent siiski me neid üleliia palju ei kasuta, sest kiirkombinatsioonid jäävad raskesti meelde ja neid on palju.

Meie loodav programm on platvorm, mille esmane eesmärk on aidata kasutajal õppida erinevaid klahvikombinatsioone läbi testide lisamise ning vastavas testis olnud klahvikombinatsioonide harjutamise.

Lisafunktsionaalsus, mida esimene etapp ei pruugi realiseerida, on arvestamine kasutaja ajalooga. Selle all mõtleme just valesti vajutatud/vastatud klahvikombinatsioone. Me sooviksime kindla algoritmi alusel valesti vajutatud klahvikombinatsioone kasutajale uuesti ülesandeks ette anda, et need kinnistuksid.

Mida rakendus endas sisaldab? (Mis võimalused seal on?)

Rakendus võimaldab luua kasutaja, kuid rakendust saab kasutada ka “külalisena”. Kasutaja saab luua enda tingimustele vastavaid teste, neid importida ja eksportida. Kasutaja eelis tavalise külalise ees on see, et kasutaja saab näha enda ülesannete statistikat ning arengut ja platvorm “kohandub” tema tegutsemisajaloo järgi ning soovitab treenida just neid klahvikombinatsioone, milles on rohkem eksitud.

Teste saab teha rakenduse siseselt kättesaadavaks kõigile, (see tähendab, et need on kättesaadavad antud arvuti kasutajatele) või hoida privaatsena ehk kasutajaspetsiifilisena.

Samuti saab teste meie platvormilt eksportida. Nii saavad teised kasutajad need testid oma programmi importida ja neid ka ise läbi teha. See funktsionaalsus võimaldab kasutajatel oma teste teistega jagada.

Milliste osade realiseerimine võib osutuda problemaatiliseks?

Probleemiks võib osutada Windowsis niinimetatud default klahvikombinatsioonide “üle kirjutamine” ja kättesaamine (näiteks klaviatuuril olev windows klahv avab windowsis igal juhul start menüü), kuid kuna meil on teadmine, et näiteks vmwares või virtualboxis olles on see funktsionaalsus edukalt üle kirjutatud, siis on see tehtav (märksõnaks võiks olla P/Invoke).

Problemaatiline võib olla ka efektiivse õppimisalgoritmi välja mõtlemine. Näiteks, kui tihti peaks soovitama kasutajal harjutada ja asju korrata, et asi kinnistuks. Samuti, kui tihti peaks laskma kasutajal harjutada klahvivajutusi, millega ta pole kordagi eksinud versus klahvivajutused, millega juba on eksitud. Eeskujuks loodame selle jaoks võtta programmi FullRecall ning teiseks märksõnaks võiks olla “Spaced Repetition” https://en.wikipedia.org/wiki/Spaced_repetition), kust saab samuti eeskuju võtta.

Kasutusjuhend

Rakenduse avalehel on kasutajal võimalus valida testide seast endale sobiv variant või lisada mõni juurde. Vajutades sobiva testi peale tekib kasutajal võimalus seda harjutada või läbida testina. Harjutades on võimalus valida abistavate režiimide vahel ('näita' - näitab vastuseboksis vastust, 'viivitus' - näitab pärast väikest aega vastuseboksis õiget vastust), kuid harjutada saab ka tavarežiimis (valides 'peida'). Testi tehes abistavaid variante enam pole. Vajutades 'Alusta' nuppu tekib testi nime alla ülesande kirjeldus. Vajutades vastavaid klahve näeb kasutaja, kas vastus oli õige ning samuti näeb järgmist ülesannet. Harjutamise või testi tegemise saab lõpetada endale sobival ajal vajutades nuppu 'lõpeta.' Kasutajal on alati võimalus minna tagasi avalehele kasutades nuppu 'tagasi' või 'Fail' menüüst valikut 'Algus'. Harjutamise või testimise lõpetades saab kasutaja tagasisidet.

Lisaks on olemas menüüd 'Kasutaja' ja 'Abi.' 'Kasutaja' menüüst on võimalik ennast registreerida kasutajaks ning sisse logida. Samuti saab sealt vaadata statistika lehte erinevate kasutajate ja nende tulemuste kohta ja muuta oma seadeid. 'Abi' menüüst saab kasutaja lugeda rohkem Lebokeissi meeskonna kohta ning lisada uusi teste.

Vajutuskunni tiim on teinud rakenduse võimalikult lihtsasti kasutatavaks. Paljude asjade jaoks on nii kiirteed (nt avalehel testi peal klikkides tekkivad nupud) kui ka vana hea menüü valik. Seega loodame, et rakenduse kasutamine on kerge ja kõigile sobiv.

Funktsionaalsused

Planeeritavad funktsionaalsused

  • Kasutajate haldamine (loomine, muutmine, kustutamine).
  • Kasutajarollid - tavakasutaja ei tohiks saada teist kasutajat muuta/kustutada.
  • Testide loomine, muutmine, kustutamine, eksportimine ja importimine.
  • Statistikamoodul - õigesti ning valesti vastatud küsimuste vaatamine sessiooni ajal (hetkeseis) ning pärast sessiooni (vahetult pärast äsja läbitud testi). Samuti on olemas kogu statistika (kõikide läbitud testide kohta).
  • Mõlemat pidi funktsionaalsus - alguses kuvatakse lühendi kirjeldus ning kasutaja vajutab vastuse või kuvatakse esimesena lühend ja siis kasutaja kirjeldab seda.
  • Abi nupp - abi nupule vajutades kuvatakse rippmenüü võimalike vastustega, (juhtub ka pärast kindla aja möödumist).
  • Vastuse nupp - kuvatakse õige vastus.
  • Treeningrežiim - näed kohe ka vastust, ent pead ikka õigeid klahve vajutama. Kasulik, kui alles importisid uue testi ja ei tea reaalselt ühtegi klahvikombinatsiooni.
  • Meie programmi õppetükk - kuna meie enda rakendusel on ka oma klahvikombinatsioonid, siis vaikimisi on lisatud meie rakenduse klahvikombinatsioonide õppetükk.
  • Pikemate klahvikombinatsioonide koos kasutamine - näiteks Ctrl+C ja Ctrl+V töötavad ühe vastusena ja vajalik on, et vajutatakse mõlemad ning õiges järjekorras.

Võimalikud funktsionaalsused (kui aega üle jääb)

  • Ajastatud kordamine, et teadmised kinnistuks paremini mällu. Niinimetatud “spaced repetition” (https://en.wikipedia.org/wiki/Spaced_repetition). Rakendus peaks soovitama, millal uuesti treenima peaks ning klahvikombinatsioonid, millega on rohkem eksitud, kuvataks tihedamini testides.
  • Asja mängulisemaks muutmiseks võib anda kasutajale võimaluse täita erinevaid “väljakutseid” ja nende täitmisel saaks märke. Näiteks “30 päeva järjest harjutamist”, “100 õiget järjest” jne.
  • Otsingufunktsionaalsus - võimalik otsida õppetükkidest kindlaid kombinatsioone ja lahendusi. Abiks siis, kui ei taha treenida, aga tahaks mõnda kombinatsiooni kiiresti leida ja muuta.
  • Eksportida/importida kasutaja ajalugu - saab näiteks oma ajaloo teise arvutisse viia ja jätkata oma treeninguid sealt, kus pooleli jäi.
  • Võimalus sisestada ka muid ülesandeid peale klahvikombinatsioonide. Näiteks raamatute autorite teadmine.
  • Erinevad ülesannete lahendamisviisid. Näiteks ajapiirang - mitu õiget järjest jms.
  • Enda tulemuste võrdlemine teiste kasutajate samade testide aegadega.
  • Koduleht, kus me haldame ja hoiame ülesandeid ning lokaalsetest rakendustest saab neid ülesandeid alla tõmmata/kasutaja saab märguande, kui uusi ülesandeid on lisatud.
  • Kasutaja konto on ühendatud kodulehega, nii et uues kohas sisse logides laetakse automaatselt alla kõik kasutaja seaded/ajalugu/testid.
  • Internetis olev edetabel, kus kasutajad saaksid end teiste kasutajatega võrrelda
  • Multiplatvormne lahendus: Windows, Mac ja Linux(common distributions) support.

Andmebaasimudel

Plaanitava lõpptoote andmebaasimudel.

[Andmebaasimudel]

Prototüüp

17. Detsember kaitstud prototüüp, ülesseadmise juhend on .rar failis .txt kujul kaasas. Funktsionaalsusest Saab registreerida, sisse logida ja näidistesti lahendada.


Prototüüp

Lõpptoode

Lisatud lõpptoode. Kaitstud 22. jaanuar 2016.

Lõpptoode

Kokkusaamiste logid

22.01 Kokkuvõtvalt mida me õppisime. Suurimad õppetunnid jõudsid kätte programmi töö sujuvamaks muutmisel ja bugide eemaldamisel. Eelnevalt kirjutatud kood kuulus väga tihti kvaliteedistandardilt "hotfix" kategooriasse ja kogu meetod või service tuli ümber kirjutada, et ei oleks tunnet nagu kogu kood töötaks ainult tänu kahele imeilusale "parandusele" koodis. Samuti tehtud analüüsi ja funktsionaalsuste nimekirja polnud vist kordagi kirjutades ees, pigem oli küsimus, mis me nüüd lisame ja siis läks selle kallal töö käima. Kuna see on kindlasti seniajani suurim projekt mis suuremal osal meist ette võetud, siis polnud meil pehmelt öeldes halli aimugi mis osad tuleks enne valmis teha peale selle, et MVVM struktuur tuleks esimesena teha. Positiivne üllatus oli see, et kui tiimikaaslane ikka pusis oma koodi kallal, siis ei saanud ise ka kehvem olla ja kindlasti motiveeris see teisi ka facebooki kinni panema ja paar rida või meetodit kirjutama. Võib öelda, et üksinda oleks heal juhul kaks inimest selle projektiga täna vaadeldavasse staadiumisse jõudnud. Arendusprotsessist lähemalt rääkides saab välja tuua orgaaniliselt kujunenud rollid. Kui Kerli näiteks tegeles suuremas osas disainiga, siis Timol polnud sooja ega külma, kas kasutatav font on Times New Roman või Roboto. Mõnikord tärkas Timo XAMLi vaadates suure üllatusega, et kuidas küll on Kerli lisanud buttoni, millel pole ühtegi propertyt peale pildi, aga nupu funktsionaalsus on olemas, saades hiljem aru, et ta vaatas ainult buttoni lõputagi. Iris hoolitses bugide ja tegemist vajavate funktsionaalsuste lahendamise eest, testides ja motiveerides tiimiliikmeid tööle. Karell ja Joonas tegelesid Irise poolt leitud lõpmatu hulga "featurite" kõrvaldamisega ja ka uute funktsionaalsuste lisamisega. Üldiselt leiame, et ilma üksteise toetuseta ei oleks me jõudnud oma projektiga lõpule ja arvame, et me kõik oleme väärt võrdset tulemust.

17.12 Kaitsesime klassi ees prototüüpi ning peale seda saime kokku ja arutasime edasise programmi teostamist ning kontrollisime, et kõik meeskonnaliikmed saaks koodist samamoodi aru. Lisasime koodile ka kommentaare. Samuti hakkasime tegema retsensiooni Travo


16.12 Saime kokku ja programmeerisime kaitstavat prototüüpi. Tekkis probleeme vaatest DataContext-i kättesaamisega, sest meie View ja ViewModel on ühendatud läbi XAMLi, kuid lahendus oli sellele tegelikult lihtne. Meie prototüüp saab nüüd aru klahvivajutustest ning kasutajaid saab registreerida ning need lisatakse reaalselt andmebaasi!


12.11 Kogunesime koolis ning joonistasime tahvlile paari vaate väljanägemise.. samuti sai ka esialgne projektistruktuur paika pandud esialgu oli jagatud projekt kaheks .DAL ja .WPF paar nädalat hiljem saime aru, et oli ka vaja kolmandat projekti .BLL. Vahepealsest arengutest nii palju, et Vajutuskunni projekti andmemudeli eest hoolitseb Joonas andmebaaside alused aine raames.. ja UI poole peale mõtlevad Karell, Timo ja Kerly aines "Kasutajaliideste disain ja arendus"


31.10 Saime kõik ka reaalselt kokku ja vaatasime, mida keegi avastanud oli ning tegime alguse analüüsi kirjutamisega.

Iris oli avastanud meie projektile sarnase lehekülje https://www.shortcutfoo.com/ mille miinuseks võib tuua, et sinna ei saa oma harjutusi sisse importida.. ent plussiks on lihtne kasutajaliides ja palju erinevaid treeninguvariante.

Timo näitas lehte http://fullrecall.com/ millest võiks eeskuju võtta just intervallide mõttes, et kui tihti peaks inimene asju kordama, et need kinnistuks


25.10 Kohtusime virtuaalselt telegrammi vahendusel. Lõime meeskonnale Team Foundation Service'i konto ning tutvusime võimalustega.

Järgmiseks reaalseks kogunemiseks sai määratud 30. okt. Igale meeskonna liikmele sai ka projektijuhi poolt antud väike kont järada, et reedel saaksime olla konstruktiivsemad. Järatavad kondid:

Karell - uurib, millised oleks Windows Presentation Foundationis kujundus võimalused ja piirangud näiteks kas me saame oma applicationi muu kujulise kui kast teha? Värvipiirangud? Popupid?

Kerly-Timo - mõtlevad natuke vaadete kujunduse peale.. või üldiselt milline meie programm võiks väliselt välja näha.

Iris uurib netis teisi sarnaseid programme/või kodulehti.. et palju neid olemas juba on, mis funktsionaalsust me neilt üle võiks võtta ning mis on nende puudused, mis meie programmis võiks olla lahendatud.

Joonas uurib seda kuidas c sharpis ära kaaperdada kõik klahvivajutused, ka windowsi enda omad..

Samuti võiksid kõik meeskonnaliikmed uurida TFS võimalusi. Veidi ringi klikata ja keskkonnaga tutvuda.


22.10 Saime esimest korda kokku ja genereerisime erinevaid ideid, millest kolm olid kõige huvitavamad. Neist valisime siis välja parima - Vajutuskunn.