Meeskond:NimetuRühmitus

From EIK wiki

Meeskond

Meeskonna liikmed:

  • Kaidi Parman
  • Margit Ool (projektijuht)
  • Kalmer Kallas

Idee

Laenaja abimees: programm inimesele, kes kipub tihti asju sõpradele/sugulastele välja laenama. Rakendus aitab silma peal hoida, mis kelle käes on ning vajadusel meelde tuletada, et laenatud asi koju tagasi jõuaks. Idee sarnaneb näitena välja toodud koduse raamatukoguga, kuid ei ole kitsendatud ainult ühte tüüpi asjadele. Asume projekti looma WPF rakendusena.

Analüüs

WPF rakendus “Laenaja abimees” on rakendus tavakasutajale, mis on ette nähtud ühe inimese poolt kasutamiseks, et lihtsustada välja laenutamist. Selle abil on parem omada ülevaadet välja laenutatud asjade, laenajate tagastamisharjumuste ja üle tähtaja läinud laenutuste kohta.

Must-have funktsionaalsused

  • Programmis on andmetabel asjadest, mida kasutaja on nõus välja laenama. kasutaja saab tabelisse asju sisestada ja sellest kustutada.
  • Programmis on andmetabel inimestest, kes on midagi laenanud (või võivad seda tulevikus teha). kasutaja saab tabelisse inimesi sisestada ja neid kustutada.

kasutaja saab nii inimeste kui asjade andmetabelist teostada otsinguid, samuti tabeleid järjestada kõikide väljade põhjal ja tulemusi filtreerida mingi omaduse suhtes. Näiteks: millised asjad on hetkel välja laenutatud, milliste inimeste käes midagi on jne.

  • Kõikides andmetabelites olevaid asju ja inimesi jne ei saa lõplikult ära kustutada, vaid see muudetakse mitteaktiivseks ja sellisel juhul need aruannetes ei kajastu. Mitteaktiivseks saab panna vaid selliseid asju, mida ei ole välja laenutatud ja inimesi, kellel ei ole asju käes. Vastasel juhul kuvab programm veateate. Mitteaktiivseks pandud asja/inimest saab/võib teha uuesti aktiivseks.
  • Kui kasutaja midagi kellelegi välja laenab, saab ta selle programmi kaudu teha selle kohta sissekande.
    • Asja välja laenamisel saab sellele määrata tähtaja tagasi toomiseks.
    • Uue laenutuse vormistamisel on kasutajal võimalik teha valik andmetabelist nii asja kui laenutaja kohta. Samal ajal täidetakse ülejäänud väljad (nimetus, soovituslik tähtaeg, kommentaarid jne) vaikimisi, aga kasutajal on võimalik neid oma soovi järgi muuta.
  • Rakenduses tehtavad tegevused salvestatakse logisse.
  • Kui kasutaja on teinud kogemata vale laenutuse kande või sisestanud midagi valesti, siis on võimalik seda tühistada, aga mitte logist täielilkult kustutada.

Nice-to-have funktsionaalsused

Järgnevad funktsionaalsused on järjestatud selles järjekorras, mille järgi me hakkame neid oma rakendusele lisama, kui must-have funktsionaalsused on olemas.

  • Kasutaja saab koostada andmetabeli asjadest, mida laenutajad on tema käest küsinud, aga pole olnud pakkuda. Sisuliselt on tegu soovide nimekirjaga, mis on eraldi tabelis. Sellesse tabelisse saab sisestada lisaks nimetusele ka planeeritud soetamisaja, soovija ID (ja nime) ja ka näiteks hinna.
  • Kui kasutaja laenab „halva ajalooga” inimesele midagi, siis enne laenutamise kinnitamist tuleb hoiatusteade, aga see ei piira laenutamist.
  • Kõikide andmetabelite alusel on kasutajal võimalik koostada erinevaid aruandeid – välja laenutatud asjad, alles olevad asjad, laenutajate nimekiri tähtaja järgi, üle tähtaja läinud asjad, üle tähtaja läinud laenutajad.
  • Rakendus on võimeline saatma e-maili meeldetuletusega laenatud asi tagasi tuua.
  • Rakendus näeb visuaalselt hea välja
  • Laenamise ajal saab sõbrale välja printida meeldetuletust tagastamistähtajaga ja laenatud asja kirjeldusega.
  • Veebiliides, mille abil sõbrad/tuttavad saavad näha, milliseid asju laenata saab.
    • Veebiliidese kaudu saavad sõbrad/tuttavad “soovida” midagi laenata ja ennast lisada järjekorda asjadele, mis on juba välja laenatud.

Problemaatilised kohad

Töökorralduse seisukohast on meie jaoks praeguses staadiumis kõige suuremaks küsimuseks, kuidas mitmekesi ühte koodi kirjutada. Oleme kõik kaugõppurid ning seetõttu mitmekesi ühe arvuti taga istuda ja arutada saab vaid minimaalselt (kui üldse). Lisaks oleme kõik algajad programmeerijad ning ei ole varem üheski ühisprojektis osa võtnud, seetõttu peame ise infot leidma, kuidas kõige paremini oma tööd korraldada. Arvame, et suureks abimeheks saab meile olema TFS, kuid peame arvestama, et selle kasutama õppimine võtab meil märgatava osa aega ning lõpliku koodi kirjutamisega võib seetõttu päris kiireks minna.

Kindlasti saab problemaatiliseks ka aeg. Oleme kõik kaugõppijad ja seetõttu on meil aega koolitöö tegemiseks niigi vähe ning väga oluliseks saab töö planeerimine. Sihime selles suunas, et kõik tähtaegsed ülesanned saaks täidetud enne wikis välja toodud kuupäevasid, nii et jääks puhveraeg ootamatuste jaoks ning vajadusel oleks aega, et leida lahendus töö käigus ilmnenud probleemidele.

Funktsionaalsuste nimekirjast tundub esialgu kõige keerulisem nice-to-have nimekirjas toodud veebiliides. Tegu on valdkonnaga, mis on meile kõigile võõras ning pealtnäha lihtsa rakenduse taga võib peituda palju rohkem tööd, kui me praeguses staadiumis ette kujutada suudame.

Programm

Esialgu on meil plaanis teha kolm andmetabelit ja nendega seotud funktsionaalsused (sulgudes välja toodud, milline info tuleb andmetabelisse):

  • asjad (ID, nimetus, grupp, vanus/soetamisaasta, pilt, kasutusjuhend, soovituslik laenutusaeg, kommentaarid, aktiivne/mitteaktiivne);
  • inimesed (ID, nimi, liitumisaeg, kommentaar, aktiivne/mitteaktiivne);
  • laenutused (ID, asja ID, inimese ID, laenutuse aeg, tagastamise tähtaeg, kas on tagastatud või mitte?)

Selle, milliseid andmetabeleid on veel vaja luua, otsustame edasise töö käigus. Praeguses faasis tundub meile, et näiteks on kasulik luua veel eraldi tabel üle tagastamise tähtaja läinud asjadest.

Logi

27. september 2014

Meeskonna loomise päev. Meeskonna loomisel lähtusime sellest, et kõik selle liikmed võiksid elada ühes kohas, et vajadusel kokku saada ja projekti silmast-silma arutada. Niisiis saidki kokku kõik neli naist: Siret, Margit, Ragne ja Kaidi. Panime endale ülesandeks välja mõelda rühmatöö idee. Igaüks pidi midagi välja pakkuma, et siis sealt meelepäraseim välja noppida. Lõime Skype'i eraldi grupi, kus saab jooksvalt hakata teateid edastama ja probleeme lahendama.

18. oktoober 2014

Istusime IT Kolledži kohvikusse maha ja hakkasime ideid arutama. Esialgselt jätsime sõelale Margiti idee. Luua rakendus, mis tegeleb jalkaennustustega. Siis avastasime, et see on veebirakendus ning võib osutuda liiga keeruliseks. Otsustasime, et küsime õppejõu käest üle, kas veebirakendus sobiks rühmatööna tegemiseks.

19. oktoober 2014

Saime teada, et veebirakenduse tegemine läheb liiga keeruliseks. Selleks on meil eraldi õppeaine olemas ning kui me väga tahame, siis õppejõud otsib meile õppematerjalid välja ning saame seda rakendust siiski teha. Matsime selle idee maha, jäägu see siis teise õppeaine jaoks. Mõtlesime, et teeme siis laenutustega seotud rakenduse. Sellise sarnase ideega nagu oli kodune raamatukogu, aga meie laenutame välja mida iganes: printerit, madratsit, köögikombaini, peokingi, ruuterit jne.

23. oktoober 2014

Meeskonnast lahkus Siret. Panime Skype'i gruppi kutse, et meil on tekkinud vaba koht, kui keegi soovib meiega liituda. Margit valmistas meile kena Wiki lehe. :)

24. oktoober 2014

Kaidi üritas TFS-iga sõbruneda. Lõpuks see õnnestus ning kutsed said kõigile asjaosalistele edastatud.

25. oktoober 2014

Esimene rühmatöö osa on edukalt lõpule viidud: idee on paigas, Wiki leht olemas ning TFS-i konto on ka loodud. Otsustasime, et hakkame kohe järgmise rühmatöö osaga pihta, sest osad meeskonnaliikmed on enne uut tähtaega üsna hõivatud. Tegime guuglisse dokumendi, kuhu iga meeskonna liige sai kirja panna oma mõtted, kuidas kirjutada projekti analüüsi. Sellest teeme kokkuvõtte ning paneme Wikisse üles.

29. oktoober 2014

Meeskonnaga liitus Kalmer. Selgitasime talle oma ideed ja näitasime Wiki lehte. Analüüs oli selleks korraks juba mustandina valmis ning ta pidi sellega lihtsalt leppima :)

01. november 2014

Analüüsi ametlik versioon sai Wikisse üles riputatud.

07. november 2014

Toimus koosolek, kust võtsid osa Kaidi, Kalmer ja Margit. Kolme peale rääkisime täpsemalt läbi programmi funktsionaalsused (ning lisasime ka ühe funktsionaalsuse nice-to-have nimekirja) ja määrasime ära, millised on prototüübi vaated. Olemasolevate vaadete põhjal tegime MVVM üldpildi ning määrasime ära andmetabelid. Kaidi ja Margit koostasid retsensiooni meeskonna Error404 analüüsile. Meeskonnast lahkus Ragne.

16. november 2014

Saime kokku Räpinas. Saime versioonihalduse tööle kõigis kolmes arvutis.Tegime valmis andmebaasi ja alustasime ärikihtide loomisega. Kirjutasime valmis osad BO ja Service klassid. Arutasime, milliseid meetodeid on vaja juurde kirjutada. Joonis andmetabelitest:

LaenutusAndmebaas.jpg

06.detsember 2014

Kaidi alustas disainiga. Inspiratsioonihoog tuli peale ja seda oli mõistlik ära kasutada.

02.jaanuar 2015

Margit retsenseeris meeskonna CRM WPF tehnoloogial prototüüpi. Retsensiooni andis panuse ka Kalmer.

08.jaanuar 2015

Prototüüp sai valmis ja on Wikisse üles riputatud.

09.jaanuar 2015

"Veidi" öist ülevalolekut tagas selle, et saime oma lõpptoote valmis ning kaitsesime selle edukalt 100% tulemusega.

12.jaanuar 2015

Kaidi kribas lõpptoote retsensiooni meeskonnale Lillelapsed. Margit riputas lõpptoote lingi üles. Samuti koostas Margit lühikese kirjelduse ja kasutusjuhendi.

Prototüüp

Prototüübi leiab siit.

Prototüübi kasutusõpetus:

  • Prototüüp on testimiseks Visual Studio keskkonnas.
  • Pakkida prototüüp lahti ja käivitada visual studio.
  • Luua uus andmebaas nimega LaenutusBaas
  • Sisestada andmebaasi tabelid ja andmed, kasutades käsklusi, mille leiab protüübi kaustast failist nimega LaenutusBaasSQLquery.sql
  • Avada LaenajaAbimees.sln ja käivita programm.

Programm:

  • saab sisestada inimesi ja asju leheküljelt "lisa", asja sisestamiseks peab olema asja tüüp valitud
  • saab teostada erinevaid otsinguid leheküljel "otsi"
  • laenutamine lehelt "laena":
    • tuleb andmebaasist valida nii asi ja inimene: kõigepealt otsida andmebaasis, siis listist valida vastav rida ning vajutada nupule "vali"
    • kui nii asi kui inimene on sisestatud, vajutada nupule "laenuta". laenutuse tähtaeg prototüübis automaatselt kolme kuu pärast
  • tagastamine lehelt "tagasta":
    • lehekülje avanedes on tabelis kõik aktiivsed laenutused, valida see rida, mida tahetakse tagastada
    • vajutada nuppu "tagasta"

Lõpptoode

Lõpptoote leiab siit.

Rakendus on arendatud WPF rakendusena, kasutades programmeerimise keelt C#. Arenduse keskkonnana on kasutatud Visual Studio 2013 keskkonna ning versioonihaldusena on kasutatud TFS-i. Ka projekti andmebaas on koostatud kasutades Visual Studio 2013 keskkonda ning andmebaasiks on SQL andmebaas. Koodi dokumentatsioon on eesti keeles. Projekt on loodud kasutades database first lähenemist.

Projekt on jaotatud ärikihtideks: Andmebaasi kiht - LaenajaAbimees.Models Äriloogika kiht - LaenajaAbimees.BLL WPF rakendus - LaenajaAbimees.Rakendus

Rakenduses omakorda on arendamisel kasutatud MVVM arenduse mustrit.

Kasutusjuhend

Rakenduse käivitamine

rakendus on mõeldud kasutamiseks Visual Studio keskkonnas ja see eeldab algteadmisi antud keskkonnast ja andmebaasidest. Rakenduse avaneb peakaustas olevast .sln failist. Enne käivitamist tuleb luua andmebaas, mille koodi leiab failist LaenutusBaasSQLquery.sql.

Rakenduse kasutamine

Rakendse avanedes avaneb peavaade, kust saab minna järgmistele lehtedele: lisamise aken, otsimise aken, laenamise aken ja tagastamise aken.

  • Lisamine.
    • Vali, mida soovid andmebaasi sisestada ja täida vastavad lahtrid.
    • Inimese lisamiseks on kohustuslik väli "eesnimi" ja kirje lisamisel "nimetus" ning "asjatüüp".
  • Otsimine.
    • Selles aknas saab teostada järgnevaid otsinguid: inimeste otsing, asja otsing, aktiivsete laentususte otsing ja laenutuse ajaloo otsing. selleks tuleb menüüst valida, millist otsingut teostada tahetakse ning täita vastavad väljad. Jättes väljad tühjaks tagastab rakendus nimekirja kõikidest andmebaasi ridadest
    • Isiku või asja otsimisel avaneb võimalus muuta detaile või muuta asi/isik inaktiivseks, selleks vali vastav rida ning vajuta nuppu "Detailid". Isiku või asja andmete muutmiseks muuda vastavad väljad ning vajuta nuppu "muuda"
    • Isikud või asjad, mis ei ole aktiivsed, jäävad laenamise lehel otsingust välja. Samuti filtreeritakse need vaikimisi isiku/asja otsingust.
  • Laenamine: selles aknas saab registreerida laenutuse.
    • Nii laenatav asi kui inimene, kellele laenatakse tuleb eelnevalt andmebaasist otsida. nupule "otsi andmebaasist" avanevad lahtrid ja koht, kuhu tulevad tulemused.
    • Kui otsitav asi/isik on andmebaasist leitud, vali hiirega vastav rida ning vajuta nuppu "lisa"
    • Kui nii isik kui ka laenutatav asi on valitud, registreeri laenutus vajutades nuppu "Laenuta"
    • Laenutuste tähtaeg on vaikimisi 2 kuud, kuid seda saab muuta valides kalendris sobiv kuupäev.
  • Tagastamine.
    • Tagastamise aknas avaneb nimekiri aktiivsetest laenutustest.
    • Vali hiirega nimekirjast laenutus, mida tagastatakse ning vajuta nuppu "tagasta".

Võimalikud probleemid

  • Rakendus käivitub, kuid jookseb kohe kinni, kui pealehest edasi püüda minna (not responding): viga võib olla andmebaasi ühendumises. Kontrolli, kas on loodud andmebaas viie tabeliga. Vajadusel peab rakenduse app.config failis muutma connection stringi
  • Lisamise ja otsingute lehtedel ei saa asja tüüpi valida. Kontrolli andmebaasist, kas AsiLiik tabelisse on sisestatud andmed. Kui mitte, käivita uuesti baasi loomise sql query viimane käsk või sisesta soovitud nimetused käsitsi

Panus

Projekti jooksul korraldati mitu grupikoosolekut, kus tehti ühiselt ära järgnevad projekti osad: vaadete kujundus ja funktsionaalsus; andmebaasi koostamine; rakenduse kihtide paika panemine. Samuti on osa koodist kirjutatud ühiselt.

Individuaalne panus:

  • Kaidi tegeles disaini poolega. Tema koostatud on enamus xaml-st, akende vaheline navigeerimine ja akende sees erinevate struktuuride peitmine/nähtavale toomine.
  • Margit tegeles lisaks projektijuhiks olemisele rakenduse funktsionaalsusega.
  • Kalmer tegeles samuti funktsionaalsusega, kuid tema individuaalne panus oli võrreldes Kaidi ja Margitiga oluliselt väiksem.

Projekti eest saadavad punktid on järgmised:

  • Kaidi 100%
  • Margit 100%
  • Kalmer 70%