Hidden Mustard

From EIK wiki

Meeskond ja rollid

  • Andreas Kirotar - projektijuht
  • Anneli Asser
  • Tõnn Vaher

Idee

Veebipood wpf rakendusena, milles on võimalik: kasutaja registreerida, sisse logida, kuulutusi lisada/muuta. Teiste inimeste kuulutusi vaadata ja nendega kuulutuse teemal suhelda.

Tehnoloogia

Kasutatav tehnoloogia:

Analüüs

WebStore, mille nimi peaks olema pigem e-pood, on WPF rakendus, millega on võimalik kasutajatel efektiivselt kuulutusi lisada ja neid ka vaadata. Rakenduse eesmärk on lubada kasutajatel ennast registreerida ja sisselogida, kui kasutaja on sisse loginud, siis on tal võimalik lisada uus kuulutus, neid muuta, vaadata ja kustutada. Kuulutusi on võimalik ka otsida läbi filtreerimise ehk kuulutuse tunnuste kaudu. Kasutajal on võimalik kuulutuse all küsimusi küsida. Kuulutust saab lisada erinevate kategooriate alla ja sinna lisatakse toote kirjeldus, pildid, asukoht jm. Kuulutuste vaatamiseks ei pea olema sisselogitud, kuid kui tahetakse kommenteerida või lisada kuulutust, siis tuleb ikkagi kasutaja luua. Kasutaja loomine tagab selle, et meil on kasutajatel reitingud (nice-to-have), mille järgi teised kasutajad otsustavad kas nad usaldavad teisi või mitte. Reitingu süsteem on 5 palli süsteemis, mis tekib hinnangute jagamise tulemusena. Põhilised(must-have) vajadused rakendusele on järgmised: kuulutuste olemasolu, kergesti kasutatav rakendus, maksevõimalus(nice-to-have). Selleks, et põhilisi vajadusi täita on vaja esiteks kedagi, kes neid kuulutusi lisab ehk kasutajaid ning teiseks mõistliku kasutajaliidest. Rakenduse ohuks on teiste samalaadsete võimaluste olemasolu näiteks veebis osta.ee, okidoki.ee ja teisedki. Rakenduse tugevuseks on see eest mõistlik kasutajaliides ning mugav viis soovitud toote leidmiseks. Ohuks on ka see, et võibolla keegi ei soovigi rakenduse kujul veebipoodi kasutada, sest tänapäeval on kasutusel palju erinevad seadmed.


Mis on selle eesmärk? Eesmärgiks on anda inimestele võimalus osta/müüa/vahetada erinevaid tooteid. Samuti osutada kasutajatele mugavat ja lihtsat võimalust kaupu sorteerides otsida. Kasutusmugavus tagab selle, et süsteemiga saab hakkama vanemad inimesed.

Mida tavakasutaja sellega teha saaks?

Tavakasutaja saab :

  • End registreerida kasutajaks, registreerimisel küsitakse: kasutajanime, parooli, emaili.
  • Enda registreeritud kasutajaga sisselogida.
  • Registreeritud kasutajaga postitada kuulutusi, neid muuta või kustutada: kuulutuste lisamisel saab valida kategooriaid ja lisada muid kuulutuse kohta käivaid märksõnu.
  • Vaadata enda ja teiste postitatud kuulutusi: võimalus on sirvida kuulutusi kategooriate läbi või märksõnade kaudu. Enda kuulutust on võimalik ka muuta.
  • Kirjutada kuulutuse alla kommentaare ja nendele ka vastata.

Rakendus koosneb:

  • Windows Presentation Foundation kasutajaliidesest, mille abil on kasutajal võimalik kas kuulutusi sirvida või lisada, viimasel juhul on vaja registreerida ja sisselogida.
  • Microsoft SQL Server andmebaasist, milles talletatakse andmeid kasutajate, kuulutuste, kuulutuste piltide ja muude asjade kohta.
  • Rakenduse sisu on C# keeles kirjutatud


Tööjaotus:

  • Proge/disain/projekijuht - Andreas Kirotar
  • Disain/proge/sql/midagi_ikka - Anneli Asser
  • Proge - Tõnn Vaher


Funktsionaalsus

Must have

  • Kasutaja registreerimine.
  • Kasutaja sisselogimine.
  • Kasutaja andmete muutmine.
  • Kuulutuste lisamine/vaatamine/muutmine/sulgemine
  • Teiste kasutajate kuulutuste vaatamine
  • Kuulutusele kommentaaride kirjutamine/kommentaarile vastamine
  • Kuulutuste vaatamine kategooria järgi
  • Otsing filtritega või/ja märksõna läbi

Nice to have

  • Kirjutada kuulutuse postitajale sõnumeid
  • Kuulutuse lisamine lemmikutesse
  • Live chat
  • Oksjon
  • Makse teostamine (veebimakse)
  • Audentimine ID-kaardiga
  • Feedback
  • Hinnamuutuse teavitus
  • Reklaamide bännerid
  • Kuulutuses oleva asja asukoht (google maps)


Võimalikud probleemid

  • Probleemiks võib osutada projekti keerukus, mis tähendab, sest projekti piirid pole täielikult määratletud seega teostamine võib minna üle käte. Ei saa funktsionaalsustega ühele poole, hakatakse arendama funktsionaalsust, mille teostamine käib üle jõu.
  • Tööjaotusega võib tekkida probleeme, sest tiimil pole piisavalt Visual Studioga ja üleüldiselt ärilise loogika tarkvara arenduse kogemusi


Dokumentatsioon

Arendusprotsessi kirjeldus

Esimene samm oli meeskonna kokkupanek. Algselt sai meeskonda 4 liiget, kuid suhtlemise vähesuse tõttu jäi alles 3.

Teine samm idee genereerimine ning tehnoloogiate paika panek. Ideede genereerimine toimus brainstorm tehnikat kasutades. Ideid oli palju, kuid valiti välja kõigile meeldivaim ning selline mis tundus piisavalt mahukas. Alustasime projektiga üsna varakult, kuna õppejõud pakkus välja idee, et kõik, kes alustavad projektiga 9. praktikumi ajal ja jõuavad teatud funktsionaalsustega valmis, saavad boonuspunkte ning õppejõu soovitusel asja mitte viimasele hetkele jätta.

Kolmas samm idee analüüs. Rakenduse must-have ning nice-to-have funktsionaalsuste paika panemine. Probleemide ennustus. Seda sammu otsustas meeskond koos.

Neljas samm töö jaotus, rakenduse loomise ja arendamise algus. Prototüüp. Anneli lõi rakenduse tooriku ning laadis selle TFSi üles, kuna algselt oli TFSi tööle saamisega suured probleemid ja arusaamatused. Prototüübi esitamise ajaks oli suur osa must-have funktsioonidest juba valmis.

Viies samm lõpptoote valmimine, refaktoorimine ja testimine. Kuna on võimalik, et ilusa disaini eest saab lisapunkte, siis tegutses Anneli usinasti selle nimel, et rakendus näeks kena välja. Testimiste käigus leiti palju huvitavaid vigu, millest enamuse sai ära parandatud. Andreas ja Tõnn refaktoorisid koodi ning tuli välja, et rakenduses oli palju ebavajaliku. Samuti saadi viimasel hetkel suure hulga koodi View'st üle viidud ViewModel'sse.

Esialgu tegid usinasti projekti kallal tööd kaks inimest, kolmas muutus aktiivseks 1,5 kuu möödudes. Tihti toimus programmeerimine ka koos.

Üsna segane oli MVVM struktuuri rakendamine kuni viimase hetkeni.

Keerukad kohad piltide lisamine ja kuvamine oli algselt väga segane, kuid sai väga lihtsalt lahendatud hoopiski.

Lahenduse kirjeldus

Projekti tulemusena loodi Windows Presentation Foundation tehnoloogial põhinev rakendus, mille peamiseks ülesandeks on kuulutuste kuvamine ja salvestamine. Rakenduses on loogika ja kood jaotatud Model-View-ViewModel struktuuri järgi, päringute tegemiseks kasutatakse LINQ komponenti ning andmete hoiustamiseks tuleb igas klient-arvutis luua Microsofti SQL andmebaas. Äriloogikaks on rakendusel BO-d (Business Objects).

Kogu lahendus koosneb kahest alamrakendusest. Rakendus "WebStore" on back-end ehk sisaldab BO-sid ja Service kihti. Rakendus "WebStore.WPF" on käivitatav programm, ehk see, mida kasutaja näeb. WebStore.WPF rakendus teostab päringuid WebStore rakenduse Service kihile.

Andmebaas

Rakenduse andmebaasiskeemis on 7 tabelit:

  • adverts - sisaldab andmeid kuulutuste kohta, kes lisas, millisesse kategooriasse lisati, milline toode lisati
  • categories - sisaldab kuulutuste kõiki erinevaid kategooriaid (kategooriaid peab lisama käsitsi andmebaasi)
  • commented - sisaldab kuulutustele jäetud kommentaare ning vastuseid
  • pictures - sisaldab kuulutuste pilte
  • products - sisaldab kuulutusega lisatavat toodet
  • users - sisaldab kasutajate andmeid
  • log - sisaldab rakenduses tehtud tegevusi

Capture.PNG

Business Objects

Rakendusel on 6 BO'd:

  • UsersBo
  • CategoriesBo
  • CommentedBo
  • ListItemBo
  • PicturesBo
  • AdClickedBo

Teenused (Service)

Rakenduse Teenus(Service)kihis on 3 klassi:

  • GetDataService
  • SaveDataService
  • UserService

Vaatemudelid

Käivitataval Store.WPF rakendusel on 4 vaatemudelit:

  • AdVm
  • CurrentAddVm
  • MainVm
  • SettingsVm

Vaated

Käivitataval Store.WPF rakendusel on 7 vaadet, mis kuvatakse vastavalt vajadusele ühel aknal:

  • Ad - kuvatakse kuulutuse lisamisel
  • CurrentAdd - kuvatakse ühe kuulutuse vaatamisel
  • Edit - kuvatakse kuulutuse muutmisel
  • Login - kuvatakse kasutaja sisselogimisel
  • Main - kuvatakse põhilise vaatena
  • Register - kuvatakse kasutaja registreerimisel
  • Settings - kuvatakse kasutaja andmete muutmusel

Kasutajajuhend

Kasutajajuhend ning installeerimisõpetus on lisatud lõpptoote kataloogi.