Meeskond "DigiRiiul": Difference between revisions
Line 133: | Line 133: | ||
[[File:ClassDiagram.png]] | [[File:ClassDiagram.png]] | ||
[[File:DB_model.JPG]] | |||
=== Rollijaotus === | === Rollijaotus === |
Revision as of 13:48, 7 November 2014
Meeskond "DigiRiiul" (1. etapp)
Jaan Elken (projektijuht)
Henri Põld
Morris Mänd
Riho Uusjärv
Martin Orgusaar
Projektiidee
Projekti käigus luuakse nn virtuaalne raamaturiiul "DigiRiiul"
Põhifunktsionaalsus:
Kasutajad saavad oma riiulile lisada raamatuid, mida nad on lugenud, mis on neil olemas või mida nad soovivad tulevikus lugeda. Samuti saab kasutaja raamatutele jätta kommentaare ja arvustusi. Rakendus on liidestatud avalike API-dega nagu Goodreads, mis võimaldab raamatute lisamisel tärkandmed ja kaanepildi automaatselt alla tõmmata. Samuti võimaldab rakendus pidada järge selle üle, kellele on raamatuid välja laenutatud. Rakendusel on ka graafiline vaade, mis koosneb raamatute pealiskaantest (võrdluseks nt iTunes).
Lisafunktsionaalsus:
- Muud sisutüübid (filmid, muusika jne)
- Facebooki API-ga sidumine
- Rakenduse kaudu saab kasutaja vaadata teiste kasutajate raamaturiiuleid ja neid kommenteerida.
Tehnoloogiad
Rakendus ehitatakse WPF.NET tehnoloogiale.
Andmebaas ehitatakse Microsoft SQL Serverile.
Andmebaasiga suhtlemiseks kasutatakse ORM mappingut (ADO.NET Entity Framework tehnoloogia).
Rakenduse ehitamisel kasutatakse versioonihaldussüsteemi TFS aadressil digiriiul.visualstudio.com
Logi
10.10.2014
Skype grupikõne. Projektiidee ja funktsionaalsuse välja mõtlemine.
22.10.2014
Skype vestlus. Projektiidee arutamine. Projekti nime välja mõtlemine. TFS konto loomine.
30.10.2014
Skype kõne. Analüüsidokumendi koostamine.
Analüüs (2. etapp)
Rakenduse kirjeldus
Mida rakendus endas sisaldab?
Rakendus seisneb digitaalses raamaturiiulis, kuhu kasutaja saab lisada raamatuid, mida ta on varem lugenud, mis tal on olemas või mida ta soovib tulevikus lugeda. Kasutaja saab lisada raamatutele ka kommentaare, arvustusi, hindeid ning märksõnu (tag-e). Digiriiul on liidestatud ka avalike API-dega, mille abil saab kasutaja enda raamatu kohta lisanduvaid andmeid, mida ei pruugi ise lisada. Rakendusel on graafiline vaade, mis kuvab raamatute pealiskaaned, et kasutajal oleks kiire ülevaade enda raamatutest.
Võimaluse korral lisatakse ka funktsionaalsus, mis laseb vaadata teiste kasutajate raamaturiiuleid, jätta neisse kommentaare, lisada teisi kasutajaid oma jälgitavate nimekirja ning saada oma ajajoonele nende tegevustest uuendusi. Kui aega jätkub, siis luuakse kasutajale ka võimalus jälgida, kellele on raamatuid välja laenutatud.
Rakenduse eesmärk
Rakenduse eesmärgiks on pakkuda kasutajale mugavat võimalust hallata kõike lugemisega seonduvat otse oma töölaualt. Rakendus on võimalikult lihtsalt kasutatav.
Must have
Kasutaja loomine, profiili uuendamine ja kustutamine
Raamatute lisamine
Raamatutele kommentaaride, arvustuste, hinnete ning märksõnade (tag-ide) lisamine
Digiriiuli liidestamine avalike API-dega, et saada lisanduvat infot
Filtreerimine ehk žanri/autori jms järgi raamatute näitamine
Graafiline vaade (kollaažh raamatukaantest)
Nice to have
Teiste kasutajate raamaturiiulite sirvimine ja kommenteerimine rakenduse kaudu
Teiste kasutajate jälgimine
Ajajoon, mis näitab jälgitud kasutajate viimaseid toiminguid rakenduses
Välja laenatud raamatute üle arvestuse pidamine
Muu meedia: filmid, seriaalid, mängud jms.
Rakenduse üldine struktuur / kasutatavad arendusmustrid
Rakenduse üldine struktuur järgib MVVM (Model View ViewModel) mustrit, kus:
- View kihis graafiline kasutajaliides
- ViewModel kihis kiht seob Model kihti ja View kihti
- Model kiht sisaldab Business Logic Layer ja Data Access Layer-it
Data Access Layer - siia lähevad kõik andmebaasiga seonduvad meetodid. Iga olemi kohta tekitatakse eraldi DAO objekt. Rakendatakse O/RM Entity Framework tehnoloogiat, et minimeerida andmebaasiga suhtlemist puudutava koodi hulka. Kasutaja poolt sisestatud andmete valideerimine saavutatakse samuti Entity Framework abil.
Business Logic - siia läheb kõik, mis ei puuduta otseselt graafilist liidest või andmebaasiga suhtlemist. Muu hulgas tähendab see avalikest veebiteenustest andmete küsimist (avalike API-dega suhtlemist), kasutaja sisselogimisega seotud toiminguid jms. Veebiteenustega suhtlemine (Goodreads API, Open Library Covers API jms) peidetakse ühe objekti taha kasutades Facade mustrit.
Testandmebaasi server asub rakendusega samas arvutis, kuid live-versioonis hakkab rakendusi teenindama keskne andmebaas. Rakenduse jaoks on renditud Azures MS SQL Server.
Testimine
Aja jätkumise korral kasutatakse rakenduse osade testimiseks automaattestimist (Microsoft Unit Test Framework). Tõenäoliselt selle jaoks siiski aega ei jätku.
Graafiline liides
Graafiline liides koosneb menüüribast akna ülemises ääres ning “riiulivaatest”, mis jääb menüüribast allapoole. Menüüriba koosneb kahest nupust, “My shelf” ja “View”
“My shelf”
Kui kasutaja ei ole sisse loginud, kuvatakse talle kolm alammenüüd:
- Log in: Kasutajanimi, parool, logi-sisse nupp, kasutaja registreerimise nupp (mis avab akna kasutaja registreerimiseks) ning “unustasid parooli” nupp. Kui üks väljadest on tühi, kuvatakse veateade ning kasutajal on võimalus uuesti väljad ära täita.
- Register: Kasutajanimi, parool, uuesti parool, e-mail (parooli meeldetuletamiseks) ja “registreeri” nupp. Valideerib kasutajanime ja parooli (parool ei tohi olla liiga lihtne).
- Exit: sulgeb rakenduse (küsib hüpikaknas kinnitust)
Kui kasutaja on sisse loginud, kuvatakse talle alljärgnevad menüüd:
- My books: avaneb kasutaja riiul. Vaate üleval on kontrollpaneel, mis koosneb 4 nupust. Esimene lülitab sisse “slideshow” vaate, teine lülitab sisse “list” vaate. Kolmas nupp on rippmenüü, kust saab valida sortimise parameetri. Neljas nupp on sortimise järjekord.
- Slideshow: Ekraani keskel näidatakse kolme raamatukaant, mis on valitud sortimise järgi esimestel kohtadel. Akna paremal äärel on näha poolikult järgmise raamatu kaant. Akna vasakul äärel on valitud sortimise põhjal näha viimase raamatu kaant poolikult. Kui raamatu kaant pole lisatud, kuvatakse kohahoidja. Hõljudes hiirega raamatukaane peal, ilmub kaane alla raamatu nimi ning autor. Vaate mõlemas ääres on nooled, millele vajutades saab liikuda ühe raamatu võrra edasi või tagasi. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
- List view: akna keskele tekib tabel raamatutest valitud sortimise järgi. Kuvatakse raamatu nimi, autor ning valitud sortimise tulp. Kui kirjeid on rohkem kui rakenduse aken mahutab, tekib paremasse äärde kerimisriba. Kui kirjeid on rohkem, kui teatud fikseeritud arv (nt 20) siis kuvatakse lehekülgede kaupa. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
- Add Book: avab vaate raamatu lisamiseks. Lisamisaknas on kõik raamatuga seonduvad väljad (autor, pealkiri, ISBM jms) ning nupud “Add book”, mis lisab raamatu kasutaja riiulile, ning “Cancel” lisamise tühistamiseks. ISBM või pealkirja välja täitmisel küsib rakendust avalikest veebiteenustest (Goodreads API, Open Library Covers API jms) raamatu andmed ning pakub kasutajatele võimalust väljad eeltäita.
- My Profile: saab uuendada enda profiiliga seonduvaid andmeid
- Log out : logib kasutaja rakendusest välja, aga jätab rakenduse tööle
- Exit: sulgeb rakenduse (küsib hüpikaknas kinnitust)
“Search”
Pakub võimalust otsida ja vaadata rakenduse andmebaasis või avalikes API-des olevaid raamatuid, otsides nt autori nime või pealkirja järgi
Mock-up ekraanitõmmised
Myshelf menüü struktuur sisselogituna
Myshelf menüü struktuur väljalogituna
My Books List vaade
My Books Slideshow vaade
Olemite / andmebaasi graaf
Graaf kirjeldab rakenduse olemeid ning nende vahelisi seoseid. Graaf on koostatud nii, et hiljem oleks lihtne juurde lisada mõningaid “Nice to Have” funktsionaalsuses kirjeldatud elemente, täpsemalt teiste kasutajatega interaktsioone. Tärniga tähistatud väljad kuuluvad puhtalt “Nice to Have” funktsionaalsuse alla.
Andmebaasi implementatsioonis hakkab iga olem paiknema eraldi tabelis ning graafil kirjeldatud väljadele lisandub ka id (Long) väli. Erinevad seosed (listOfX jms) on andmebaasi implementatsioonis realiseeritud id väljadega sidumise kaudu.
Rollijaotus
Rollijaotus on esialgne ning võib veel muutuda.
- Jaan Elken - API-dega suhtlus, teenuste kiht
- Martin Orgusaar - graafiline liides
- Henri Põld - entity framework, äriloogika
- Morris Mänd - andmebaasiga seonduv
- Riho Uusjärv - teenuste kiht