Vitamin C: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Line 59: Line 59:


=== 01.11..2016 ===
=== 01.11..2016 ===
* Valmis analüüs:
* 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)

Revision as of 09:23, 2 November 2016

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