Meeskond:DropDead

From EIK wiki

Meeskond

Meeskonna liikmed:

  • Urmas Hoogma

Meeskonna kokkupanek

Algselt oli siinkohas midagi muud. Kel huvi saab (kahjuks) alati ajaloost vaadata. Arusaamatused tunduvad olevat klaarumas aga otsus üksi teha jääb kehtima (poolel teel hobuseid ei vahetata). Kehtima jääb ka meeskonna nimi. Miks? Algselt oli mul kavas teha 3rd person shooter stiilis mäng (vo. XNA tehnoloogial) kus mängija saab vaenlasi tulistada ja võib-olla ka kirvega raiuda (see oleks olnud lisafunktsioon). Kuid hinnates olukorda kainelt on selge, et inimene kes ei oska mängida võib hakkama saada mängu programmeerimisega kuid mitte mingil juhul selle kavandamise või testimisega. Aga nimi on ikkagi hea ning lõppude-lõpuks on see meeskonna, mitte projekti nimi.

Kehtiv idee

"Loogika ja algoritmiteooria" on veel kellelgi meeles? Kindlasti. 2015. aasta kevadel tuleb meil uus Lorentsi aine ja on vaja samu õpikuid. „Hulgad, valemid, algoritmid“ sain kergesti, „Informaatika teoreetilised alused“ leidmine oli aga tohutult raske. Lõpuks leidsin Facebookist grupi kus üks inimene müüb kasutatud raamatuid ja sain talt selle soodsalt osta. Mehel on juba üle 2000 raamatu ning tal on probleeme nende haldamisega. Kui ma hakkasin projekti välja mõtlema meenus see mulle kohe ning minu projektiks saabki kasutatud raamatute haldamine desktop rakendusega ning selle teostamise tehnoloogiaks saab WPF.

Mees ise ei tea sellest projektist midagi ja ma loodan, et nii ka jääb. Ma ei hakka temaga konkureerima aga müügitööga tegeleda ma ka ei soovi.

Versioonihaldus

TFS konto https://uhoogma.visualstudio.com/ loodud (kuigi hilinemisega (03.11.2014)).

Õppejõule kutse saadetud.

Analüüs

Juba alguses olgu selge, et raamatute ja klientide üle arve pidamine ning tegevused Facebookis on ja jäävad kaheks eri asjaks. Selle projekti skoobiks on vaid raamatute ja klientide üle arve pidamine. Lihtsalt ma kardan, et selle rakenduse Facebookiga integreerimine ajaks projekti ajaliselt lõhki. Pealegi ei taha riskida sellega, et hindeline töö sõltub välisest süsteemist mis pole minu kontrolli all.

Nõuded

Tulenevad suhtlusest Facebookis raamatu „Informaatika teoreetilised alused“ ostmiseks ja vastava Facebooki lehe jälgimisest.

  1. Teoseid reklaamitakse vastaval Facebooki lehel.
  2. Teosele saab Facebookis lisada pildi.
  3. Pildil võib olla ka mitu teost. Pilt võib olla postituse juures või eraldi albumis.
  4. Kogu suhtlus kliendiga toimub Facebookis.
  5. Ühel teosel võib olla mitu autorit.
  6. Üks teos võib kuuluda mitmesse kategooriasse.
  7. Teos võib (aga ei pruugi kuuluda raamatusarja)
  8. Raamatusarjas võib olla erinevatesse kategooriatesse kuuluvaid teoseid.
  9. Raamatuid saadetakse postiga (Omniva või SmartPost)
  10. Müüki peab olema võimalik katkestada (näiteks juhul kui klient lihtsalt ära kaob).

Resultaat

Analüüsi resultaadiks on järgnev ERD diagramm ja vaated. Juurde veel, et ainuke info mida andmebaasis ei hoita on pildifailid (LOB kujul oleks see võimalik aga paisutaks andmebaasi mahu liiga suureks, mis tekitab probleeme varundamisel). Failid jäävad omaette kataloogi arvuti failisüsteemis.

Põhifunktsionaalsused

  1. Autorite, raamatute, klientide ja müükide lisamine
  2. Müükide haldamine.
  3. Facebooki postituste (nii tiitlite kui piltide) kooskõlastamine süsteemiga
  4. Teoste nimekirja eksport teksti kujul (postitamiseks Facebooki).

Lisafunktsionaalsused

  1. Piltide nimekirja eksport (haldaja saab selle kopeerida Windows Exploreri otsikasti ning nii postitamiseks vajalikud pildid kätte).
  2. Kõikide muudatuste tegemine kasutajaliidese kaudu

ERD Diagramm

Olemite nimed on üldjuhul ainsuses, nagu Priit Raspel nõuab. Andmetüüpideks on need mis QSEE-s olemas, reaalseteks andmetüüpideks tulevad T-SQL-i jaoks sobivad tüübid, tabelite ja väljade kommentaarid lähevad andmebaasiskripti.

Olemite diagramm

Diagrammi seoste juurde seletuseks

  1. Kuidas on võimalik, et teosel pole ühtegi autorit?

Antoloogiate puhul võib autorite arv ulatuda kümnetesse. Kui vähemalt esialgu ei viitsi haldaja neid kõiki sisestada peab olema võimalik sisestada teos nii, et autoreid polegi.

  1. Kuidas on võimalik, et teosel on mitu müüki?

Lihtne. Tabel „MYYK“ näitab müügi protsessi. Kui müük nurjub saab sama raamatut müüa uuesti.

Vaadete nimekiri ja vaated

Kuna projekti lõplik välimus sõltub paljuski sellest mida on kõige mõttekam piiratud aja jooksul teha, siis on liiga vara teha siduvaid lubadusi eriti mis puutub disaini. Allolev pilt kujutab endast vaate „Teoste otsing ja muutmine“ suure kasutusmugavusega ideaalvariandi mockuppi.

Teoste otsing ja muutmine

Raskused mis võivad tekkida:

  1. Peab uurima kuidas on võimalik lisada WPF projektile predictive search (nt widgeti kujul). Nii oleks lihtsam olemasolevat sisu (nt. autoreid) valida.
  2. Andmete sidumine

Logi

[14.11]

Lõpuks ometi on midagi reaalselt tehtud ka. Nimelt: 3 tabelit, 2 seost nende vahel ja konsooliprogramm mis ühte tabelisse andmeid sisestab. TFS-i committisin ka midagi aga üldiselt valitseb TFS-is kaustade ümbernimetamise tõttu tohutu segadus.

[28.11]

Üle pika aja sai jälle midagi tehtud (TFS korda, 2 tabelit juurde, 1 vaade, andmete sisestamine vaate kaudu). Siiski võib juba praegu öelda, et tähtajaks prototüüp valmis ei saa. Loodan midagi üles panna pühapäeva õhtul.

[28.12]

Võtsin kuulda meeskonna Lillelapsed retsentsiooni ja hakkasin selle järgi projekti ümber tegema. Vähemalt esialgu ma äriloogika vahekihis endapoolseid domeenimudelid looma ei hakka, kõik muud ettepanekud võtan arvesse. Sai valmis tehtud ka seni puuduvad tabelid (13 tk.) ning neisse esialgne testsisu sisestatud.

[31.12]

Aasta viimasel päeval sai valmis tehtud raamatukategooriate sisestamine.

[05.01]

Nüüd on olemas ka postiteenuste ja raamatuseeriate sisestamine.

[06.01]

Kliendi lisamine ja muutmine. Alustasin müükidega.

[08.01]

Töö müügimeetodite kallal.

[09.01]

Müügid ja kliendi leht üle vaadatud. Tööd vajavad veel utiliit ja raamatuotsing.

[13.01]

Teoste sisestamise ja haldamise lihvimine.

[15.01]

Raamatute vaate ümbertegemise lõpetamine.

[16.01]

Raamatuga seotud autori eemaldamise võimalus. Müügiks olevate raamatute filter korras (nüüd kuvab vaid saadaval olevaid raamatuid). Lisatud ikoon. Tegevused salvestatakse tabelisse Logi.

[17.01]

Juurutatud sisendi kontroll. Postitatud kasutusjuhend. Beetavariant postitatud.

[19.01]

Kood korrastatud ja varustatud kommentaaridega. Loodud esitlus.

Prototüüp

Pakkige lahti projekt

BookKeeper.zip

avage projekt Visual Studios

looge uus andmebaas nimega

BookKeeperDatabase

ja käivitage seal päringuaknas skript

script2014.11.28.sql (BookKeeper.zip juurkaustas)

Vajaduse korral muutke ära andmebaasi connection string kõigi projektide App.config failides

Proto - esitamiseks.PNG

Kiidelda pole eriti millegagi. Seoses Visual Studioga tekkinud probleemidega sain seni valmis üldise menüü ja ühe vaate (pealkirjaga "Raamatud").Funktsionaalsustest on olemas andmebaasis juba olevate raamatute pealkirjade (tiitlite) muutmine ja raamatute otsing autori eesnime, perenime või raamatu pealkirja (või nende osa) järgi. Utiliiti uute raamatute sisestamiseks ma hetkel valmis ei jõudnud.

Beetaversioon

Pakkige lahti projekt

BookKeeper.zip

avage projekt Visual Studios

looge uus andmebaas nimega

BookKeeperDatabase

ja käivitage seal päringuaknas 2 või 3 skripti (BookKeeper.zip juurkaustas olevas kaustas "script2015.01.17"))

Kui te tahate puhast andmebaasi siis käivitage skriptid Tables.sql ja Constraints.sql (selles järjekorras).

Kui te tahate andmebaasi milles juba on testandmed, siis käivitage kõik kolm skripti Tables.sql, Data.sql ja Constraints.sql (selles järjekorras).

Vajaduse korral muutke ära andmebaasi connection string kõigi projektide App.config failides

Nagu õppejõud soovitas tõmbasin projekti mahtu veidi koomale ja realiseerisin ainult raamatute ja klientide haldamise osa (Facebooki postituste haldamine, piltide sisestamine ja Facebooki sisestatava info import jäi teostamata). ERD mudelist on realiseeritud punase joonega ümber tõmmatud osa.

Dropdead-realiseeritud.png

Nimetan toodet beetaversiooniks kuna kood vajab veel mõningast korrastamist ja varustamist kommentaaridega (võib sisaldada ka väiksemaid vigu).

Kasutusjuhendi saab aadressilt Rakenduse BookKeeper kasutamisjuhend.docx.


Lõpptoode

Valmis.

Installijuhend sama mis eelmise punkti puhul. Kuna andmebaasi ma ei muutnud kõlbavad samad skriptid.

Projekt ise on BookKeeper-final version.zip

Kuna lõpptoote kaust ei sisalda skripte lisan need ka siia, et oleks mugav ja ei peaks mingite skriptide pärast 20+MB .zip faili alla laadima.