Meeskond MMA
Teema: teeme loaprogrammi. Proovime võimalikult universaalse ja laiendatava teha. Et oleks võimalik väiksema vaevaga kasutusele võtta erinevates valdkondades: raamatukogu, kodu riiulid, poe ladu. Saaks hoida vajaliku infot igasuguste asjade kohta: kiibid, moosid jne, kasvõi sokid. Võib nimetada vastava valdkonna probleemi lahendamise raamistikuks. Proovime implementeerida ka mingi konkreetse laoeseme tüübi laoshoidmise äriloogika ja kasutajaliidese.
Analüüs
Tegemist on nõuete analüüsiga uue süsteemi loomiseks. Analüüs annab kirjelduse, mida uuest tarkvarast saada soovitakse.
Üldvaade
Järgnevalt esitatakse mõisted, eesmärgid, põhiprotsesside, põhiobjektide, sündmuste, tegutsejate ja infovajaduste loetelu. Joonised on koostatud UML keeles.
Taust
On hulk esemeid, väga erinevaid aga mingi sarnasuse alusel on nad paigutatud ühte piirkonda. Nende üle on raske arvet pidada. Puudub ülevaade kui palju on esemeid, kus nad asuvad, mis on nende esemete põhiinfo. Ei ole võimalik leida esemeid kindlate parameetrite järgi. Näiteks: lähiajal riknevad kaubad, takistid vahemikus 1...2k ohm, tõenäosusega x lähima n aja jooksul otsa saavad esemed piirkonnas y, omavahel sobivad esemed (alternatiivtooted) jne.
Mõisted
- ladu
- Asukoht, kus hoitakse asju
- laoese
- huvipakkuv asi, mille kohta on vaja infot hoida
Tegutsejad (kasutajad)
Süsteemi kasutajate rollid on järgnevad:
- administraator
- andmesisestaja
- tavakasutaja (vaataja)
Protsesside loetelu
- sisestamine
- otsimine
- ülevaade/statistika/aruanded
Toimimisobjektid
- kasutaja
- laoese
- ladu / asukoht
Infovajaduste loetelu
laoeseme:
- nimetus
- kogus
- ostu hind
- asukoht
- sisestamisaeg
laoesemete:
- nimekiri
- otsimisvõimalus
lao:
- asukoht
- pindade süstematiseerimse loogika
Infosüsteemi eesmärgid
Laotarkvara luuakse selleks, et võimaldada toiminguid laoesemete infoga. Kasutaja saab tarkvara kaudu otsida teda huvitavat eset, vaadata eseme infot, teostada komplekspäringuid leidmaks huvipakkuvaid esemeid, jagada infot, automatiseerida esemete haldamist. Iga eesmärgi kohta on määratud mõõdetav tulemus.
Eesmärk 1: talletada laoeseme infot
Eelis: on võimalik teostada laoeseme-põhiseid toiminguid
Mõõt: vähemalt 1-e laoesme info on võimalik salvestada baasi
Eesmärk 2: otsida esemeid põhitunnuste järgi, mis on üle terve süsteemi kohustuslikud
Eelis: ajasääst kasutajal
Mõõt: ese on nime või koodi järgi leitav
Eesmärk 3: otsingutulemustest saab omakorda otsida
Eelis: kasutajamugavus. Keerukad otsingud asenduvad korduvkasutatava põhimõttega
Mõõt: peale otsingut näidatakse leitud esemete parameetreid, mille seast saab omakorda välistada/otsida
Eesmärk 4: statistika/ülevaate võimaldamine
Eelis: selge ülevaade annab infot ja võimaldab inimesel avastada sisulisi vigu kõrgemal loogika tasemel
Mõõt: Vastav osa on loodud
Eesmärk 5: andmete ajaloo pidamine
Eelis: leiab infot ajalooliste esemete kohta
Mõõt: laos enam mitteolevad esemed on andmebaasis leitavad (ja kasutajaliideses)
Eesmärk 5.2: tegevuste ajaloo pidamine
Eelis: andmete muutmist saab seostada rollidega ja isikutega
Mõõt: salvestatakse tegevuse tüüp, aeg, laoeseme ja isiku andmed (viide või andmed)
Eesmärk 6: tagada andmete terviklikus
Eelis:
Mõõt: andmebaasis kasutatakse välisvõtmeid (foreign key)
Eesmärk 7: andmete juurdepääsu kontrollimine
Eelis: volitamata isikud ei saa teada salajast infot
Mõõt: loodud autentimine ja autoriseerimine (või liidestus olemasolevaga). Iga use-case kohta on juurdepääsu test-case (unit test)
Eesmärk 8: broneerimine
Eelis: teadmisi saab sisestada süsteemi enne sündmuse toimumist
Mõõt: on võimalik laoesemete väljavõtmist lukustada teiste eest. On võimalik laopindasid lukustada hõivamise eest
Eesmärk 9: liidestus teiste süsteemide ja arendajate gruppidega
Eelis: süsteem integreerub teiste süsteemidega läbi SOA, tekib sünergia. Väheneb andmete dubleerimine.
Mõõt: vähemalt laoesemete põhiandmed on kättesaadavad üle masinliideste (SOAP)
Eesmärk 10: andmete eksport
Eelis: võimaldab kasutajal andmeid töödelda mugavama või valdkonna spetsiifilisema tööriistaga
Mõõt: vähemalt laoeseme põhiandmeid saab eksportida kas XML või CSV formaadis. Nimekirjast keerukama (seostega) struktuuri puhul on eelistatud XML.
Eesmärk 11: ühte baasi kasutavad mitu kasutajaliidese "desktop" rakendust
Eelis: väheneb andmete dubleerimine, andmed mugavamalt hallatavad
Mõõt: kasutajaliidese ja rakendusserveri vahel ei kasutata SQL klienti. Selle asemel ühendub kasutaja rakendus serveris oleva rakendusserveriga teenusepõhiselt.
Eesmärk 12: laoesemete "template"-id
Eelis: suureneb laoesemete sisestamise efektiivus. Väheneb kasutaja ajakulu.
Mõõt: eeltäidetud vormi kaudu saab sisestada uut laoeset.
Funktsionaalne vaade
Kasutuslood
UML Use-case mudelid
(TODO)
Kasutuslood tekstina
Järgnevalt on toodud kasutuslugude mudelid tekstina.
Nimetus: Lao asukohtade sisestamine
Üldkirjeldus: defineeitakse laoesemete hoidmise asukohad
Kasutamise sagedus: harva, enamasti ühekordne tegevus
Eeltingimused: asukohtade süstematiseerimine on kokku lepitud
Nimetus: laoeseme sisestamine
Üldkirjeldus: laoeseme lisamine. Vajadusel seostamine olemasolevaga
Kasutamise sagedus: kasutatakse tihti. Vahel korratakse tegevust palju kordi.
Eeltingimused: lao asukohtade sisestamine
Nimetus: laoeseme sisestamine2
Üldkirjeldus: sisestatakse kasutades eeltäidetud vormi
Kasutamise sagedus: kasutatakse tihti
Eeltingimused: on loodud "template"-id või saab valida sisestatud laoeseme andmeid vormi eeltäitmiseks
Kirjeldus: Vastavalt lao tüübile võib esemete info korduda. Selleks on mõistlik luua abivahendid käsitöö vähendamiseks ja sisestamise kiiruse tõstmiseks. Kasutaja saab suure sagedusega korduvate tööde jaoks kasutada eeltäidetud vorme.
Nimetus: laoeseme kuvamine
Üldkirjeldus: sisestatud esemete vaatamine
Kasutamise sagedus: kasutatakse väga tihti
Eeltingimused: on esemeid sisestatud, mida kuvada
Nimetus: laoeseme otsimine
Üldkirjeldus: sisestatud esemete seast otsimine
Kasutamise sagedus: kasutatakse väga tihti
Eeltingimused: on esemeid sisestatud, mida otsida
Mittefunktsionaalne vaade
- Andmetöötluse aeg
- Enamus päringuid peaksid andmebaasist vastama alla 2 sek. Ressursinõudlikud detailse statistika päringud peaksid olema kasutajaliideses selgelt eristatavad.
- Kasutajaliides peab olema mugav ja ajakohane.
Andmevaade
- Konseptuaalmudel (TODO)
- Andmemudel (TODO)
Ettejuhtuda võivad probleemid
- Kõikvõimaliku info leidmiseks esemete seast peab selle info sisestama laoeseme andmeid täites. Enamasti ei soovi kasutaja seda sisestada või ei ole sellise tegevuse tasuvus prognoositav. Teatud esemetel on väga erinevat tüüpi infot ja seda kõike ei olekski võimalik tarkvarasse implementeerida.
- Lahendused:
- hoida vaid kõige rohkem vajaminevat: nimetus, asukoht, kogus, soetamise hind, unikaalne või klassifitseeriv kood
- jätta mugav laiendusvõimalus arendajale
- võtta kasutusele taksonoomia (kategoriseerimine, liigitamine). Tag-id on kasutaja hallatavad. [ http://en.wikipedia.org/wiki/Tag_%28metadata%29 ]
- Lahendused:
- Laoesemete atribuudid võivad muutuda laotarkvara teadmata kuna puudub jäik side mudeli ja tegeliku maailma vahel. Muutused võivad välja tulla pika aja möödudes ning võib tekitada kasutajale palju lisatööd - andmestiku sünkroniseerimist tegeliku maailma olukorrale vastavaks. See võib olla teatud juhul isegi võimatu kui ei ole enam võimalik luua füüsilist kontakti laoesemega. Näiteks: varastatud ese, aurustunud keemiline lurr jne. Teatud juhul ei ole enam võimalik tagantjärgi määrata andmeid ja neid tarkvara kaudu andmekogusse sisestada, kuigi tarkvara seda nõuab.
- Lahendused:
- tarkvara ei tohiks liiga palju kasutajalt nõuda. Samas ei tohiks andmekogu (baasi) terviklikus kannatada. Kohustuslike andmete määramisel tuleb arvestada eriolukordadega
- Lahendused:
- Lahendus dubleerib paremat spetsiifilist rakendust. Näiteks failisüsteemi. Seda võib tihti näha multimeedia mängijatest/organiseerijatest. Võimaldavad palju sisuspetsiifilisi toiminguid kuid ese kaugeneb oma elementaarsetest toimingutest, mida võimaldab failisüsteem, kuna eset kasutatakse läbi spetsiifilise rakenduse.
- Lahendus:
- hoida mõistliku piiri laoesemete tüüpidega
- Lahendus:
- Kasutaja soovib kasutada "native" kasutajaliidest. Eeldame, et põhiline sihtgrupp on MS Windows kasutajad.
- Lahendused:
- .NET C#-is vastavad tehnoloogiad olemas: WPF, ...
- Muude keskkondadega koostööks on SOA liidestus
- Lahendused:
Skoop ja piirangud
- Ei ole võimalik mitmest kasutajaliidesest kasutada ühte keskset andmebaasi kuna puudub üle võrgu andmevahetuse kiht. Selleks on vaja eraldi rakendusserverit kuid see ei mahu aine skoopi.
- Realiseeritakse ainult osa põhifunktsionaalsusest, rakendus jääb osaliseks ja edaspidi täiendamiseks. Tehakse ainult nö "proof of concept" prototüüp. Esialgses lahenduses puuduvad:
Must Have
- Sisselogimise süsteem
- Ladu, andmebaasi näol
- Andmete sisestamine lattu
- Laost toodete otsimine ja kuvamine kasutajale
- Erinevad kasutajatüübid (rollid, õiguste süsteem)
- Mugav kasutajaliides
- Tegevuste kohta logi pidamine
Nice To Have
- Lisada toodetest pildid
- Veebiliides
- Kuvada andmeid toodete, kohta erivate diagrammidena