Meeskond:EasyRent
Meeskond
Meeskonna liikmed:
- Hardi Antsov
Idee
Autorendi tarkvara EasyRent
Meeskonna eesmärgiks on luua autorendi teenust pakkuvale firmale põhitegevust toetav tarkvara. Tarkvara eesmärk on hallata sõidukite rentimist.
Rakenduse loomiseks kasutatakse Windows Presentation Foundation'it ning Model-View-ViewModel arendusmustrit.
Rakenduse skoop
Rakendus on mõeldud ainult renditeenuse pakkumise toetamiseks. Skoopi kuulub ka ettevõtte klientide üle arve pidamine.
Rakenduse skoobist on väljas järgmised funktsionaalsused:
- sõidukite üle raamatupidamise jaoks vajaliku täpsusega arvepidamine, sealhulgas kõik sõidukite remondiga, kindlustamisega ning muu igapäevase haldamisega seotu;
- klientidele arvete väljastamine.
Mõlemad toodud funktsioonid tuleb ettevõttel lahendada eraldiseisva raamatupidamise tarkvaraga.
Kuna klientidele arvete väljastamise aluseks on EasyRent'ist pärit andmed, siis reaalses maailmas oleks rakenduse üheks järgmiseks arendusetapiks selle liidestamine raamatupidamise tarkvaraga.
Rollid
Rakenduse kasutajatele omistatakse rollid. Rollid määravad kasutajale lubatud tegevused. Ühel kasutajal võib olla mitu rolli. Rakendusele on ligipääs ka autentimata kasutajatel, neil ei ole seega ka rolle.
Rakenduses on kasutusel järgmised rollid:
- laenutaja - sisaldab endas kliendi teenindamiseks vajalikke tegevusi;
- nice2have and very optional klient - autenditud klient, saab vaadata pakkumises olevad sõidukeid, teha broneerimisi, muuta mittevõõrandamatuid andmeid;
- sõiduki sisestaja/muutja - sisaldab endas privileege operatsioonideks sõidukiga; reaalne täitja sõltub ettevõtte suurusest;
- sõidukile pildi lisaja/muutja - reaalses elus on mõistlik panna pildibaasi up-to-date hoidmine klienditeenindajale;
- kliendi muutja - kliendi võõrandamatute andmete muutmiseks, samuti kliendi arhiveerimiseks, roll omistatakse kogenud rakenduse kasutajale, kelle eksimisoht on väike (power-user);
- raamatupidaja - ainult selle rolli omaja saab määrata sõiduki rentimise hinna piirid, laenutaja peab püsima ette seatud piirides, ärilises mõttes kriitilise tähtsusega roll;
- vaatleja - igale kasutajale vaikimisi omistatav roll, reaalses elus peaks vastama autentimata laenutuse kliendile, selle rolli omaja saab ainult vaadata pakkumises olevaid sõidukeid;
- kasutajate haldaja - roll võimaldab kasutajaid luua, omistada neile rolle ning nullida parooli.
Funktsionaalsus
Alljärgnevas esituses ei ole funktsionaalsust jagatud MoSCoW järgi. Esitluses on funktsionaalsus toodud äriloogikat silmas pidades. Kirjeldatud funktsionaalsuses on eraldi märgitud, kui silmas on peetud mitte kohustuslikku osa (nice2have).
Sõiduki haldamine
Sõidukil on järgmised omadused: registreerimise number, VIN kood, mudel, mark, värvus, väljalaskmise aasta, läbisõit, sõiduki olukorra iseloomustus, pildid sõidukist.
Olemiga sõiduk on võimalik sooritada järgmisi tegevusi:
- sõiduki loomine - uue sõiduki andmebaasi sisestamine;
- sõiduki mahakandmine (arhiveerimine) - sõidukit kustutada ei saa, mahakandmine kaotab ta välja renditavate valikust;
- sõiduki muutmine - muuta ei saa võõrandamatuid andmeid, sellisteks on registrinumber (tegeleme ainult Eestis registreeritud sõidukitega) ja VIN kood;
- piltide haldamine - lisamine ja kustutamine, ajalugu ei ole vaja säilitada;
- rendihinna haldamine - rendihind hoitakse rakenduses vahemikuna, selline lähenemine võimaldab jätta klienditeenindajale väikese kaalutlusõiguse.
Kliendi haldamine
Kliendil on järgmised omadused: registri kood, registri koodi allikas, eesnimi, perenimi/ettevõtte nimi, sünniaeg, sugu, elukoht (ühe väljana), e-post, telefon, kommentaar vaba tekstina.
Olemiga klient on võimalik sooritada järgmisi tegevusi:
- loomine - uue kliendi andmebaasi sisestamine.
- muutmine - muuta ei saa võõrandamatuid andmeid, sellisteks andmeteks on registrikoodi ja koodi allika paar, koodi allikaks on näiteks Eesti isikukood, Läti isikukood, Eesti äriregistri kood, RKOARR reg nr, ...
- klienti kustutada ei saa, samuti ei ole vaja teda arhiveerida, eeldame, et inimesed rakenduse skoobis ei sure
- nice2have krediidireiting, keeruline on sisuline defineerimine ...
Rentimiste haldus
Rentimise haldus ongi rakenduse põhiline äripoolt toetav funktsionaalsus.
Sõiduki broneerimine
Sõiduki broneerimine on konkreetse kliendi poolt konkreetseks ajaks konkreetse sõiduki kohta esitatud rendi soov.
Kui sama klient soovib broneerida kattuvaks ajaks mitut sõidukit, siis kuvab rakendus selle kohta teate.
Rakendus tuletab kasutajale meelde broneeringu tähtaja möödumistest. Selle eesmärk on, et klienditeenindaja saaks enne broneeringu lõplikku tühistamist potentsiaalse kliendiga üle suhelda.
Broneeringu tühistamine
Klient loobub broneeringust omal initsiatiivil. Sõiduk vabaneb teisteks rentimisteks.
Sõiduki väljastamine
Tähistab sõiduki reaalset välja rentimist ehk sõiduk antakse kliendile üle. Sõiduki kliendile üleandmise käigus vaadatakse koos kliendiga sõiduk üle ning fikseeritakse sõiduki olukord. Sõiduki olukorra hulka kuuluvad sõiduki läbisõit, küte, sõiduki üldine olukord.
Sõiduki tagastamine
Sõiduk toodi firmasse tagasi. See tegevus tähendab sõiduki vabanemist teisteks rentimisteks. Sõiduki tagastamise osaks on sõiduki seisukorra hindamine. Sõiduki olukorra hulka kuuluvad sõiduki läbisõit, küte, sõiduki üldine olukord.
Aruanded
Rakendus võimaldab tegevusest ning hetkeolukorrast ülevaate saamiseks aruannete koostamist.
Vajalikud on järgmised aruanded:
- tähtajaks tagastamata sõidukite loetelu
- nice2have rakendus saadab ise automaatselt igal öösel klientidele meeldetuletusi tähtaja möödumise kohta kliendi e-posti aadressile
- nice2have hinnang kliendile – eesmärk on kliente senise käitumise põhjal profileerida ning halva reitinguga klientidele sõidukit mitte rentida, igale tegevusele hinnang (näiteks bronni mitterealiseerimine on negatiivne), nende summa,
- nõutavuse top – sõidukite (ka markide?) kaupa
Kasutajate haldamine
Rakenduse privileegidega piiratud osa kasutamiseks on vajalik autentimine ja autoriseerimine. Selleks on rakenduses kasutajad. Kasutajate autentimise toimub parooli abil.
Olem kasutaja omadused on kasutajanimi, nimi, kommentaar ja talle omistatud rollid. Siin on mindud teadlikult lihtsuse teed.
Kasutajate haldamine sisaldab endas:
- kasutaja loomist;
- kasutajale rollide omistamist ja rollide eemaldamist;
- kasutaja rakendusest eemaldamist - sisemiselt märgitakse ta mitteaktiivseks, kasutajaid päriselt kustutada ei saa.
(nice2have and very optional) Väga piiratud funktsionaalsusega veebirakendus klientidele
- võimaldab autenditud kliendil veebis vaadata pakkumises sõidukeid, teha broneerimist.
- võimaldab vaatlejal veebis vaadata pakkumises sõidukeid.
Prototüüp
Prototüübi leiab siit. On kasutatud MVVM arendusmustrit, kus EasyRent.View projekt hõlmab View-d ning ViewModel-it, Model koosneb kahest eraldi EasyRent.BLL ja EasyRent.Models projektist. Kuna meeskonna koosseisus toimusid muudatused, siis funktsionaalsust võrreldes planeerituga on vähendatud - nt rollid on täiesti ära kaotatud.
Kasutamine:
- Loo VSi uus lokaalne andmebaas nimega EasyRentDB
- Kasuta solutioni "Andmebaas" kaustas olevat EasyRentDB.sql tabelite loomiseks
- Kui probleeme peaks tekkima Entity Framework-iga, siis tee NuGet Packages alt reinstall
- Andmebaasi Kasutaja tabelisse lisa manuaalselt üks kasutaja (sisselogimiseks)
- Lisa rakenduses sõidukeid, kliente ning teosta rentimist/broneerimist
- Listide kohta: topeltklikk valikul avab detailvaate ning rentimisel kliendi või sõiduki lisamine käib samuti topeltkliki abil avanevas listis.
Küsimuste korral: hardi.antsov@itcollege.ee
Lõpptoode
Lõpptoote leiab siit.
Lahenduse kirjeldus
Rakendus loodi Visual Studio 2013 arenduskeskkonda kasutades. Arendusprotsessis kasutati koodihoidlana TFS-i. Tehnoloogiana kasutati Windows Presentation Foundation'it ning Model-View-ViewModel arendusmustrit. Kasutati database first lähenemist ning andmebaasiga suhtluseks ja rakenduses kasutavate mudelite loomiseks Entity Framework-i.
Rakendus on loodud rentimist teostavale töötajale abiks. Põhifunktsionaalsuse annavad rakendusele kolm kogumit objektidest Sõiduk, Klient ning Rentimine. Neid kuvatakse listidena eraldi akendes ning läbi nende toimub liikumine vastava objekti detailseid andmeid kuvavale aknale. Rakendus lubab avada korraga mitmeid aknaid, mis peaks koos listidele võimalike filtritega tagama mugava ülevaate toimuvast ning tegema rentimise teostamise ja haldamise lihtsaks.
Liikmete panused
Hardi Antsov: 100%
Loobunud liikmed:
Ahti Jõgi: ~40% (andmebaasi mudel, analüüs)
Andres Kaljo: ~10%
Kasutusjuhend
- Loo VSi uus lokaalne andmebaas nimega EasyRentDB
- Kasuta solutioni "Andmebaas" kaustas olevat EasyRentDB.sql tabelite loomiseks
- Kui probleeme peaks tekkima Entity Framework-iga, siis tee NuGet Packages alt reinstall
- Andmebaasi Kasutaja tabelisse lisa manuaalselt üks kasutaja (sisselogimiseks)
Peaaken:
- Avaneb pärast sisselogimist, siit toimub kolme erineva listiakna avamine
- Avab Sõidukite, Klientide ja Rentimiste aknaid
- Sulgeb kogu rakenduse
Sõidukid aken
- Avab sõiduki lisamise akna
- Kuvab nimekirjana rakenduse sõidukeid
- Filtreerib nimekirja vastavalt sisestatud infole
- Avab vastava sõiduki detailvaate, kui nimekirjas teha topeltklikk
Sõiduki detailvaate aken
- Kuvab sõiduki andmeid
- Muudab sõiduki andmeid
- Teostab sõiduki lisamist
- Lisab/avab sõiduki pilti
- Viib rentimise aknasse antud sõiduki andmetega
Kliendid aken
- Avab kliendi lisamise akna
- Kuvab nimekirjana rakenduse kliente
- Filtreerib nimekirja vastavalt sisestatud infole
- Avab vastava kliendi deailvaate, kui nimekirjas teha topeltklikk
Kliendi detailvaate aken
- Kuvab kliendi andmeid
- Muudab kliendi andmeid
- Teostab kliendi lisamist
- Viib rentimiste aknasse antud kliendi andmetega
Rentimiste aken
- Avab rendi/broneeringu lisamise akna
- Kuvab nimekirjana rakenduse rente/broneeringuid
- Filtreerib nimekirja vastavalt sisestatud infole
- Avab vastava rendi/broneeringu detailvaate, kui nimekirjas teha topeltklikk
Rendi detailvaate aken
- Kuvab rendi/broneeringu kliendi ning sõiduki andmeid
- Lisab rendi/broneeringu kliendi ning sõiduki andmeid
- Teostab rentimise/broneerimise kinnitamist
- Rentimise puhul teostab sõiduki olukorra hinnnangu sisestamist
- Teostab rentimise/broneerimise tühistamist ja tagastamist
Logi
30. jaanuar
- Lõpptoote üleslaadimine
19. jaanuar
- Prototüübi üleslaadimine
4. jaanuar
- Ajapuuduse tõttu lahkus meeskonnast Ahti Jõgi
29. november
- Ajapuuduse tõttu lahkus meeskonnast Andres Kaljo
12-13. november
- Retsensiooni koostamine Google Docs abil.
8-9. november
- Arutelud tööjaotuse osas prototüübi jaoks.
29. oktoober
- Projekti analüüsi teostamine (rakenduse ja selle funktsionaalsuse kirjeldus)
23. oktoober
- Meeskonna nime valik ja wiki lehe loomine
- TFSi projekti loomine ning kasutajate liitmine projektiga
- Esialgse idee kirjeldus
19. oktoober
- Meeskonna kohtumine ning erinevate ideede kaalumine
- Lõpliku teostatava projekti valik
7. oktoober
- Meeskonna moodustamine
- Esialgsete ideede väljapakkumine ning arutelud võimalike teostuste üle