Vitamin C

From ICO wiki
Jump to navigationJump to search

Meeskond ja rollid

  • Marko Belzetski - Team Lead
  • Rene Väli - Arendaja
  • Kaia Tomson - Arendaja

Idee

Personaalkulude haldamise rakendus. Kasutaja saab sisestada kulusid ja tulusid ning saada väljavõtteid oma sissetulekutest ja väljaminekutest soovitud perioodi kohta kategooriate kaupa, nagu kommunaalid, auto, meelelahutus jne.

Rakenduse sisu

Rakenduses on olemas järgmised võimalused (Must have):

  • Rakendus töötab klient-server suhtluse põhjal
  • Klient (graafiline kasutajaliides)
    • Peab looma ühenduse serveriga (TCP)
    • Kasutaja saab sisse logida teenusesse või luua uue konto
    • Kasutaja saab sisestada väljamineku nime ja suuruse ning määrata sellele kulukategooria
    • Kasutaja saab muuta kulu
    • Kasutaja saab loetleda kulusid kindla ajaperioodi kohta
      • Kasutaja saab filtreerida kulusid vastavalt kulu parameetritele
      • Kasutaja saab kuvada graafiliselt kulude kokkuvõtteid vastavalt kulu parameetritele
  • Server (Daemon)
    • Peab looma ühenduse kliendiga (TCP)
    • Peab suhtlema kliendiga mingi protokolli alusel
    • Peab klienti autentima
    • Peab suhtlema andmebaasiga
      • Kulu sisestamine, muutmine, kustutamine
      • Kulude tagastamine päringu alusel
    • Kõiki tegevusi logitakse

Rakenduses võiksid olla lisavõimalused (Should have):

  • Krüpteeritud suhtlus serveri ja kliendi vahel
  • Kulude batch-importimine CSV failist
  • Ilus ja kasutajasõbralik kasutajaliides, visuaalselt atraktiivne kulude ja tulude esitus

Andmebaasiskeem

TODO

Analüüs

https://docs.google.com/document/d/1xLXFe7ksO9nTo_OKB4bD6DWCM9VnCXYAQkn_oo2OYnE/edit?usp=sharing

Workload

Rakenduse ekraanipiltide skitsid paberile

07.10.2016

  • Projekti kickoff
  • Pandi paika tööjaotus
  • Loodi Wiki

22.10.2016

  • Alustati analüüsiga, kirjutati ~500 sõna
  • Arutati läbi kasutajaliidese ekraanivaated
  • Loodi andmebaasi põhi
  • Katsetati läbi TFSi kasutamine

01.11..2016

  • Valmis analüüs:



Vitamiin C# projekti analüüs https://wiki.itcollege.ee/index.php/Vitamin_C

Marko Belzetski Rene Väli Kaia Tomson

Meie rühmatöö eesmärgiks on luua kuluhalduseks mõeldud klient-server-süsteem. Projekti raames luuakse C# programmeerimiskeeles üks klient, mis on mõeldud kasutamiseks Windowsi keskkonnas.

Kliendi vahendusel saab kasutaja sisestada ja jälgida oma sissetulekuid ja väljaminekuid, mida talletatakse serveripoolses andmebaasis. Selle mõte seisneb ülevaate saamises oma kuludest ja tuludest. Sügavam tagamõte on oma väljaminekute parem juhtimine, impulsiivete ostude vältimine ning eelarve ja säästude planeerimine. Lisafunktsioonina (nice to have) saab kasutaja määrata eelarveid ettenähtud perioodi ja kulukategooria kohta (näiteks kulutused toidule nädalas, kulutused töölõunatele, meelelahutus) ja saada ülevaate, kui palju on käesoleval ajahetkel vastavast eelarvest protsentuaalselt kulutatud. Lisaks on kogu info ülevaatlikult visualiseeritud. Lisaks saab rakenduses määrata igale kulule veel järgnevad kategooriad: vältimatu kulutus, mugavuskaubad/teenused, ebavajalik kulutus. Nii saab kasutaja näha, et kütuse peale kulub tal ebaproportsionaalselt palju raha, aga samas võib see näiteks talvel vältimatu olla. Või et kui üle poole tema sissetulekust kulub väljaskäimisele ja riietele, oleks küll aeg oma tarbimisharjumused üle vaadata.

Kuna andmed on serveris, on kasutajal võimalik andmetele ligi pääseda mis tahes tööjaamast. Kuigi C# pole tegelikkuses parim lahendus serveri loomiseks, teeme seda siiski õppe-eesmärkidel. Kliendi ja serveri vahelise suhtluse protokolli osas pole me veel otsust teinud. Võib juhtuda, et mingi olemasoleva protokolli implementeerimine nõuab lõppkokkuvõttes rohkem vaeva kui ise andmebaasioperatsioonidele mingisugused meetodid välja mõelda. Kõige keerulisem tundub tööülesannete õiglane jaotamine, arvestades tiimiliikmete praeguseid programmeerimisoskusi. Tehniline pool ei ole võimatu, aga nõuab õppimist. Kaks kolmest tiimiliikmest on täielikud algajad, mis tähendab, et neil on raske hinnata, kui palju aega projekti edukaks teostamiseks kulub. Ajapuudus või õigemini kiirelt lähenev tähtaeg võib saada probleemiks tähtajaks meie ettekujutusele vastava rakenduse loomisel, sest kõik tiimiliikmed käivad täiskohaga tööl. Kopeerida on alati palju lihtsam kui ise midagi luua - vajalike oskuste omandamine võtab aega.

Tööjaotus: Marko on tiimijuht, kuna ta töötab hetkel IT-valdkonnas ja oskab seega kõige paremini ülesannete skoopi hinnata ja vajalikke tegevusi koordineerida. Marko paneb paika raamistiku ja jaotab Kaiale ja Renele konkreetseid ülesandeid. Must-have parameetrid Server ● Andmebaas (MYSQL ? MS SQL (on ka Microsofti toode, nii et ehk mõistlikum)? POSTGRE?) ● Serveri daemon ● Kõikidele objektidele vastavad DAOd (Database Access Object) ● Kasutaja autentimine ● Logimine

Kasutajaliides Klient võtab vastu kasutaja andmeid (uue kasutaja loomine / sisselogimine / kasutaja kulud ja tulud) ja kuvab neid vastavalt kasutaja seatud filtritele (aeg, tüüp, alamtüüp). Põhiobjekt on kasutaja, millega on seotud tema kulude andmed (aeg, kulu/tulu, tüüp, alamtüüp). Individuaalne kasutaja objekt pärib vaikefunktsionaalsused ja -kulutüübid üldiselt kasutaja objektilt. Individuaalne kasutaja saab lisada põhitüüpidele oma individuaalseid kulu/tulutüüpe. Lisaks saab kasutaja määrata igale kulule selle vajalikkuse kategooria.

Kasutajaliidese ülesehitus: ● Sisselogimine ● Registreerumine ○ Kulude / tulude kuvamine (kasutaja andmeid kuvatakse vastavalt kasutaja seatud filtritele) ■ Ajaline filter ■ Tüübi filter ○ Kulude sisestamine (kasutaja objektile lisatakse andmeid) ■ Aeg (ajavahemik) ■ Summa ■ Kategooria ● Alamkategooria ● Tulude sisestamine (kasutaja objektile lisatakse andmeid) ○ Aeg (ajavahemik) ○ Summa ○ Selgitus ○ Kategooria ■ Alamkategooria


Kasutajaliidese omadused: ● Peab looma ühenduse serveriga ● Kasutaja saab sisse logida teenusesse või luua uue konto ● Kasutaja saab sisestada väljamineku nime ja suuruse ning määrata sellele kulutüübi ning alamtüübi (nt tüüp: toit, alamtüüp: toidupood/restoran/töölõuna) ● Kasutaja saab muuta kulu ja tulu, lisada summa, selgituse selle sisu kohta ning määrata kulu vajalikkuse määra ● Kasutaja saab loetleda kulusid kindla ajaperioodi kohta ○ Kasutaja saab filtreerida kulusid vastavalt kuluparameetritele ○ Kasutaja saab filtreerida tulusid vastavalt tuluparameetritele ○ Kasutaja saab kuvada graafiliselt kulude/tulude kokkuvõtteid vastavalt kulu/tulu parameetritele.

Nice-to-have parameetrid ● Kasutajasõbralik ja visuaalselt atraktiivne kasutajaliides ● Kulude-tulude visualiseerimine graafikute, diagrammidena, sõnalised kommentaarid (sinu väljaminekud perioodil … ületavad tunduvalt sinu sissetulekuid - pea kulutamisega piiri jne.) ○ Erinevad diagrammide tüübid: tulpdiagramm, sektordiagramm, jne ● Enkrüpteeritud suhtlus serveri ja kliendi vahel ● Pangaväljavõtte batch importimine (csv failist) ○ Vaheetapp, kus kasutaja saab kuludele lisada tüübid ja alamtüübid ● Makse tüüp - debit / cash ● Eelarve funktsioon ○ Eelarve perioodi ja tüübi sisestamine ○ Eelarve protsentuaalse täidetuse graafiline kuvamine


Andmebaasi tabelid

USERS user_ID first_name last_name e_mail date_of_birth user_created password_hash PK, UNIQUE, INT VARCHAR(50) VARCHAR(50) VARCHAR(50) DATE TIMESTAMP VARCHAR(100) BCRYPT

TRANSACTIONS transaction_ID user_ID transacton_amount transaction_date PK,UNIQUE, INT FK, INT DOUBLE(10,2) DATE


TRANSACTION TYPES transaction_type_ID transaction_ID value PK,UNIQUE, INT FK,INT VARCHAR(50)


TRANSACTION SUBTYPES transaction_subtype_ID transaction_type_ID value PK,UNIQUE, INT FK,INT VARCHAR(50)