WatchWinders: Difference between revisions
Line 137: | Line 137: | ||
* Saab lisada kontaktandmeid | * Saab lisada kontaktandmeid | ||
* Saab kontaktandmeid muuta | * Saab kontaktandmeid muuta | ||
Inkrement #1 | == Inkrement #1 == | ||
Kasutaja | Kasutaja | ||
Näeb karbilt saabunud veateateid | Näeb karbilt saabunud veateateid | ||
Line 151: | Line 151: | ||
Saata personaalseid teateid kellakollektsionääridele | Saata personaalseid teateid kellakollektsionääridele | ||
Inkrement #2 | == Inkrement #2 == | ||
Kasutaja | '''Kasutaja''' | ||
Saab saata teate tootjale | * Saab saata teate tootjale. | ||
Näeb tootja vastust | * Näeb tootja vastust. | ||
Näha karbi seisundit, kas karp on hetkel wifiga ühendatud või mitte. | * Näha karbi seisundit, kas karp on hetkel wifiga ühendatud või mitte. | ||
Administraator | '''Administraator''' | ||
Näha kellade üleskeeramise mehhanismide arvnäitajaid (madalaim kiirus, keskmine kiirus, tippkiirus; samuti liikumise suundade arvnäitajaid) | * Näha kellade üleskeeramise mehhanismide arvnäitajaid (madalaim kiirus, keskmine kiirus, tippkiirus; samuti liikumise suundade arvnäitajaid). | ||
Näeb tegevuste ajalugu kliendist | * Näeb tegevuste ajalugu kliendist. | ||
Tootja | '''Tootja''' | ||
Saab lugeda kasutaja teadet | * Saab lugeda kasutaja teadet. | ||
Saab vastata kasutajale | * Saab vastata kasutajale. | ||
Hooldaja | '''Hooldaja''' | ||
Saab info hooldamist vajavate kellade kohta | Saab info hooldamist vajavate kellade kohta. | ||
Inkrement #3 | == Inkrement #3 == | ||
Kasutaja | '''Kasutaja''' | ||
On ehitatud keeletugi | * On ehitatud keeletugi. | ||
Tootja | |||
On ehitatud keeletugi | '''Tootja''' | ||
* On ehitatud keeletugi. | |||
Hooldaja | '''Hooldaja''' | ||
On ehitatud keeletugi | * On ehitatud keeletugi. | ||
Võimalik, et meie lõpptulemus erineb mõnes osas esitatud analüüsist. Seda olenevalt sellest kui edukalt meil õnnestub plaanitud funktsionaalsusi realiseerida. Erisusi plaanime käsitleda vastavas 'post production' jaotuses, kus loendame ka projektist kogunenud peamised õppetunnid. | Võimalik, et meie lõpptulemus erineb mõnes osas esitatud analüüsist. Seda olenevalt sellest kui edukalt meil õnnestub plaanitud funktsionaalsusi realiseerida. Erisusi plaanime käsitleda vastavas 'post production' jaotuses, kus loendame ka projektist kogunenud peamised õppetunnid. | ||
Süsteemi analüüs valmis (1) metoodika abil, vt lähemalt [[#Kasutatavad metoodikad|projekti metoodikate]] sektsioonist. | Süsteemi analüüs valmis (1) metoodika abil, vt lähemalt [[#Kasutatavad metoodikad|projekti metoodikate]] sektsioonist. |
Revision as of 18:51, 1 March 2018
Meeskond
Toomas Juhkov, toomas.juhkov@gmail.com
Tiit Kuuskmäe, tiit.kuuskmae@gmail.com
Kunnar Kukk, Kunnar.kukk@gmail.com
Tegevuste logi
08.02.2018 - meeskonna loomine, kokkuleppe sõlmimine teema osas
10.02.2018 - õppejõu teavitamine koos esmase andmemudeliga
15.02.2018 - lõpliku andmemudeli valmimine(versioon 5)
18.02.2018 - õppejõu kinnitus, et teema ja meeskond kvalifiseeruvad
22.02.2018 - viki lehe loomine ja analüüsi koostamise alustamine
26.02.2018 - tiimi lisandus Kunnar Kukk
01.03.2018 - seoses täiendava tiimiliikme lisandumisega täpsustasime skoopi
Kasutatavad metoodikad
WatchWinders projektis plaanime kasutada peamiselt kaht metoodikat:
1. läbiv retsenseerimine (üks paariline teeb midagi valmis ja teine teeb sellele ülevaatuse; üksus lisatakse kui ülevaatus on lõplikult läbitud ning osapoolte vahel on saabunud konsensus)
2. paaris programmeerimine (istume ühe masina taha maha ja kirjutame kahekesi)
Tulenevalt kaugõppe formaadist saab ülekaalus olema esimene variant. Teist metoodikat kasutame nende osade kirjutamiseks, mille puhul võib arvata, et nende lahendamine on keeruline või et lahenduskäike võib olla väga erinevaid. Püüame jooksvalt siinses vikis kajastada ka seda, millise metoodika järgi üks või teine osa valmis.
Projekti osad
Alljärgnevalt anname ülevaate projekti osadest:
(1) andmemudel,
(2) analüüs,
(3) veebiteenus,
(4) klientrakendus,
(5) XML.
Projekti osad on meie viki lehel kirjeldatud valmimise järjekorras.
Andmemudel
Andmemudeli koostamisel lähtusime õppejõu poolt ette antud kriteeriumist, mille kohaselt peab olema vähemalt 6 põhiolemit (tähistatud tumesinisega), mille hulgas ei tohi sisalduda kasutajate tabelit. Antud juhul oleme kavandanud luua 7 põhiolemit: "Watch" (mingi konkreetne kell), "Manufacturer" (nii kellade kui karpide tootjad), "TimeLabBoxes" (konkreetsed kellakarbid), "Settings" (karbi seaded, mis on seotud aga konkreetse kellatüübiga), "Media" (kui karbi ühe külje külge kinnitatakse ekraan, siis seal piltide ja videote näitamiseks), "Support" (nii karpide kui kellade parandajad).
Lisaks sellele defineerisime neli abiolemit: "WatchType", "Error", "UserType" ja "Offers". Ülejäänud olemite näol, mis skeemil on märgendatud halliga, on sisuliselt tegemist vahetabelitega.
Andmemudel valmis (1) metoodika abil, vt lähemalt projekti metoodikate sektsioonist.
Veebiteenuse analüüs
Alljärgnevalt esitame kellakarpide infosüsteemi analüüsi järgmistes osades:
(1) toote/teenuse kirjeldus
(2) probleemi kirjeldus
(3) lahendus
(4) süsteemi kasutajad
(5) loodava API võimalused
(6) funktsionaalsed nõuded
(7) mittefunktsionaalsed nõuded
Toote/teenuse kirjeldus
Teenuse eesmärgiks on lahendada probleem, kuidas jälgida kellakarpide kaudu mehhaaniliste käekellade seisundit ning keerata neid automaatselt üles distantsilt, näiteks juhul, kui kellade kollektsionäär ei asu füüsiliselt igapäevaselt oma kellade juures. Teenus võimaldab ka tootjal uuendada kontaktandmeid, saata personaalseid teateid. Administraatorile annab ülevaate platvormis toimuvast.
Probleemi kirjeldus
Mehhaaniliste käekellade kollektsionääride huvi kellakarpide vastu on mitmetahuline. Kollektsionääre huvitab arvepidamine – mitu kella, missuguste omaduste ja eripäradega neil kollektsioonis on. Teisalt soov eksponeerida oma kogusid kolleegidele ja sõpradele. Kellakarpidega täidetud sein või riiulid loovad selleks suurepärase võimaluse. Kolmandaks praktiline vajadus tagada kellavedrude õige vinnastatuse aste. Kaasaja mehhaanilised kellamehhanismid (automatic) võimaldavad kellakorpuse füüsilisel liigutamisel kellavedru automaatselt vinnastada.
Näiteks piisab kella kinnitamisest käele, et see hakkaks end käe liigutamisel üles keerama. Kuidas keerata aga üles seisvat kella, mis seisab paigal kellakarbis? Selleks on tänapäeva kellakarpides elektrimootor, mis tagab kella liigutamise vastavalt kellatüübile ettenähtud ööpäevase graafiku alusel. Kollektsionääride üheks probleemiks on see, kuidas juhtida sellist karpi ja omada jooksvat ülevaadet kõikidest oma karpidest, nende tehnilisest seadistusest ja kollektsiooni kuuluvatest kelladest olles tööreisil välisriigis?
Lahendus
Probleemi lahendamiseks ehitame REST + ASP.NET Core + WebAPI koos kliendiga, mis võimaldab kellakollektsionääridel hallata kellasid karpides, administraatoritel saada ülevaate süsteemist ning tootjatele lisada infot kollektsionääridele. Käesoleva projekti käigus ei tegeleta kahe IoT lahenduse kui terviku seisukohast olulise nüansiga: (i) karbi püsivara (firmware) loomisega, (ii) klientrakenduse frontend poolega.
Süsteemi kasutajad
Kollektsionäär - haldab ja muudab infot oma kellade ning oma kellakarpide kohta. Administraator - haldab süsteemi infot, vajadusel eemaldab probleeme. Tootja - saab saata süsteemi kollektsionääridele mõeldud infot. Hooldaja - saab infot hooldamist vajavate kellade ja -karpide kohta.
Loodava API võimalused
Alljärgnevalt vaatame loodava API võimalusi kasutajagruppide kaupa:
Kasutajale/kellakollektsionäärile
- Saada ülevaade kelladest ja kellakarpidest (lisada, muuta, vaadata).
- Muuta karbis oleva kella kohta käivat informatsiooni (kella nimi, tootja, tootmise aeg, viitenumber, mehhanism, jõureservi jääk (valikuline), foto kellast, kellarihma liik, muu).
- Karpe juhtida (keerata automaatselt üles). Näha ja muuta kella üleskeerava mehhanismi liikumise kiirust ja muid detaile (nt liikumise suund).
- Näha karbi seisundit, kas karp on hetkel wifiga ühendatud või mitte.
- Näha karbilt saabunud veateateid.
- Sisestada infot kella seisundist.
- Suhelda hooldajate ja tootjatega
Tootjale
- Uuendada kontaktandmeid.
- Saata personaalseid teateid kellakollektsionääridele.
Administraatorile
- Näha võrku ühendatud karpide arvu.
- Näha karpidesse paigaldatud kellade nimistut (ilma muude kasutajaandmeteta).
- Näha kellade üleskeeramise mehhanismide arvnäitajaid (madalaim kiirus, keskmine kiirus, tippkiirus; samuti liikumise suundade arvnäitajaid).
- IP-aadresside järgi ülevaadet, millistes riikides karpe kasutatakse (üldised arvandmed).
- Veateatega karpide arv süsteemis (üldised arvandmed).
Funktsionaalsed nõuded
- Kõik tegevused peavad olema autoriseeritud.
- REST + ASP.NET Core + WebAPI tagastab infot valideeritud JSON formaadis.
- API veatöötlus on tehtud, kasutades standardseid veakoode.
- API-le on tehtud 'health check'.
- Kõik kasutajad peavad saama end autoriseerida.
- Kasutaja, tootja ja administraatori tegevused logitakse.
- Logi ei ole muudetav, vaid on kättesaadav.
- Kasutaja ega tootja ei näe teiste kasutajate ega tootjate infot.
- API klient on kohanduv mobiilile, tahvlile ja desktoparvutile.
- Sisendandmed on valideeritud.
Mittefunktsionaalsed nõuded
- API-le on lisatud Swagger fail.
- Teenus ja tehniline lahendus on dokumenteeritud.
- Süsteemi kood on vabalt ligipääsetav, täiendatav ning allalaetav.
Esitame töö etappidena, kus kõigepealt defineerime ära Minimum Viable Producti [1] ehk selle miinimumi, mis pakub kasutajale maksimaalset väärtust. See tähendab API loomist ning esmase kliendi loomist kõigile MVP-s defineeritud kasutajagruppidele. Seejärel realiseerime projekti inkrementide ehk tootearenduse sammudena, milles lisame uusi funktsionaalsusi. Ideaalis jõuame realiseerida kõik sammud, kuid kuna teeme nimetatud tööd antud ajaraamis ja koosseisus esmakordselt, siis võtame vabaduse ka realiseerida korralikult niipalju, kui jõuame projekti käigus ära teha.
Minimum Viable Product definitsioon
- Kasutaja
- Kasutaja saab süsteemi logida ning välja logida
- Kasutaja saab lisada uue kellakarbi
- Kasutaja saab lisada uue kella kellakarpi
- Kasutaja saab muuta kella infot kellakarbis
- Kasutaja saab näha ülevaadet oma karpidest
- Kasutaja saab muuta kellakarbi seadeid
- Kasutaja saab kustutada kella karbis
- Kasutaja saab kustutada kellakarbi
Administraator
- Näeb autoriseeritult logisid
- Tootja
- Saab lisada kontaktandmeid
- Saab kontaktandmeid muuta
Inkrement #1
Kasutaja Näeb karbilt saabunud veateateid Saab kellakarpe juhtida
Administraator IP-aadresside järgi ülevaadet, millistes riikides karpe kasutatakse (üldised arvandmed). karpidesse paigaldatud kellade nimistut (ilma muude kasutajaandmeteta). Näeb kasutajate statistikat
Tootja Saata personaalseid teateid kellakollektsionääridele
Inkrement #2
Kasutaja
- Saab saata teate tootjale.
- Näeb tootja vastust.
- Näha karbi seisundit, kas karp on hetkel wifiga ühendatud või mitte.
Administraator
- Näha kellade üleskeeramise mehhanismide arvnäitajaid (madalaim kiirus, keskmine kiirus, tippkiirus; samuti liikumise suundade arvnäitajaid).
- Näeb tegevuste ajalugu kliendist.
Tootja
- Saab lugeda kasutaja teadet.
- Saab vastata kasutajale.
Hooldaja Saab info hooldamist vajavate kellade kohta.
Inkrement #3
Kasutaja
- On ehitatud keeletugi.
Tootja
- On ehitatud keeletugi.
Hooldaja
- On ehitatud keeletugi.
Võimalik, et meie lõpptulemus erineb mõnes osas esitatud analüüsist. Seda olenevalt sellest kui edukalt meil õnnestub plaanitud funktsionaalsusi realiseerida. Erisusi plaanime käsitleda vastavas 'post production' jaotuses, kus loendame ka projektist kogunenud peamised õppetunnid.
Süsteemi analüüs valmis (1) metoodika abil, vt lähemalt projekti metoodikate sektsioonist.
Kasutatud kirjandus ja allikad
1. Albahari, Joseph, Albari, Ben 2017. C# 7.0 in A Nutshell. Sebastopol: O’Reilly
2. MariaDB Foundation. MariaDB. Kättesaadav:https://mariadb.org/
3. Martin, Robert 2018. Clean Architecture. Boston: Pearson Education