Vitamin C: Difference between revisions

From ICO wiki
Jump to navigationJump to search
 
(14 intermediate revisions by 2 users not shown)
Line 11: Line 11:
== Rakenduse sisu ==
== Rakenduse sisu ==
=== Rakenduses on olemas järgmised võimalused (Must have): ===
=== Rakenduses on olemas järgmised võimalused (Must have): ===
* Rakendus töötab klient-server suhtluse põhjal
* Klient saab andmebaasi infot lisada, seda muuta ja infopäringuid teha.
 


* Klient (graafiline kasutajaliides)
* Klient (graafiline kasutajaliides)
** Peab looma ühenduse serveriga (TCP)
** Peab looma ühenduse andmebaasiga
** Kasutaja saab sisse logida teenusesse või luua uue konto
** 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 sisestada väljamineku nime ja suuruse ning määrata sellele kulukategooria
Line 22: Line 23:
*** Kasutaja saab kuvada graafiliselt kulude kokkuvõtteid vastavalt kulu parameetritele
*** Kasutaja saab kuvada graafiliselt kulude kokkuvõtteid vastavalt kulu parameetritele


* Server (Daemon)
* Andmebaas
** Peab looma ühenduse kliendiga (TCP)
** Peab looma ühenduse kliendiga  
** Peab suhtlema kliendiga mingi protokolli alusel
** Peab suhtlema kliendiga mingi protokolli alusel
** Peab klienti autentima
** Peab klienti autentima
** Peab suhtlema andmebaasiga
** Peab suhtlema kliendiga
*** Kulu sisestamine, muutmine, kustutamine
*** Kulu sisestamine, muutmine, kustutamine
*** Kulude tagastamine päringu alusel
*** Kulude tagastamine päringu alusel
Line 32: Line 33:


=== Rakenduses võiksid olla lisavõimalused (Should have): ===
=== Rakenduses võiksid olla lisavõimalused (Should have): ===
* Krüpteeritud suhtlus serveri ja kliendi vahel
* Krüpteeritud suhtlus andmebaasi ja kliendi vahel
* Kulude batch-importimine CSV failist
* Kulude batch-importimine CSV failist
* Ilus ja kasutajasõbralik kasutajaliides, visuaalselt atraktiivne kulude ja tulude esitus
* Ilus ja kasutajasõbralik kasutajaliides, visuaalselt atraktiivne kulude ja tulude esitus
=== Andmebaasiskeem ===
TODO


== Analüüs ==
== Analüüs ==


[https://docs.google.com/document/d/1xLXFe7ksO9nTo_OKB4bD6DWCM9VnCXYAQkn_oo2OYnE/edit?usp=sharing https://docs.google.com/document/d/1xLXFe7ksO9nTo_OKB4bD6DWCM9VnCXYAQkn_oo2OYnE/edit?usp=sharing]
[https://docs.google.com/document/d/1xLXFe7ksO9nTo_OKB4bD6DWCM9VnCXYAQkn_oo2OYnE/edit?usp=sharing https://docs.google.com/document/d/1xLXFe7ksO9nTo_OKB4bD6DWCM9VnCXYAQkn_oo2OYnE/edit?usp=sharing]
== Retsensioon - [[Bomory]] ==
Tegemist on kasutaja poolt loetud raamatute ja vaadatud filmide loeteluga - tore mõte.
Tarkvaralahendused on vastavuses aine raames õpetatavate tehnoloogiatega ja sobivad ülesande täitmiseks hästi.
Analüüsis on kirjeldatud rakenduse erinevat funktsionaalsust, mida rakendus pakub. Panime tähele, et funktsionaalsus on enamasti inspireerituna õppejõu poolt välja pakutud näidisprojektist.
Peale rakendusest eeldatava “raamatukogu” funktsionaalsuse soovitakse ühendada rakendus ka kolmandate osapoolte APIdega (GoodReads, IMDB). See idee tundub igati huvitav ja sääraste APIdega töötamine on huvitav ja õpetlik kogemus. Loodaksime seda funktsionaalsust isegi pigem baasrakenduses näha, kuna see annaks projektile suurt lisaväärtust.
Kindlasti on võimalik, et planeeritud funktsionaalsust ei jõuta luua ja nagu tiimiliikmed isegi ütlevad, võib ülevaade koodist veidi kaduma minna. Strateegiliselt on ilmselt mõttekam teha lihtsam rakendus, aga korralikult. Siiski loodame, et meeskond annab endast parima, et ka nende oskustest tulenevalt saaks valmis võimalikult hea projekt.
Nice-to-have lisandused on kahtlemata mõistlikud ja täiendavad ilusti põhifunktsionaalsusi.
Edu tegijatele, testime meeleldi valminud projekti!
== Lõpptoode ==
[http://enos.itcollege.ee/~mbelzets/VitamiinCKlient.7z http://enos.itcollege.ee/~mbelzets/VitamiinCKlient.7z]
=== Kasutusjuhend ===
[http://enos.itcollege.ee/~mbelzets/c_sharp_kuluhaldur_kasutusjuhend.pdf http://enos.itcollege.ee/~mbelzets/c_sharp_kuluhaldur_kasutusjuhend.pdf]
=== Dokumentatsioon ===
[http://enos.itcollege.ee/~mbelzets/Vitamiin%20Csharp%20dokumentatsioon.pdf http://enos.itcollege.ee/~mbelzets/Vitamiin%20Csharp%20dokumentatsioon.pdf]


== Workload ==
== Workload ==
Rakenduse ekraanipiltide skitsid paberile


=== 07.10.2016 ===
=== 07.10.2016 ===
Line 58: Line 76:
* Katsetati läbi TFSi kasutamine
* Katsetati läbi TFSi kasutamine


=== 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


=== 13.11.2016 ===
* Lisatud esimene retsensioon tiimi [[Bomory]] projektist


TRANSACTION TYPES
=== 26.11.2016 ===
transaction_type_ID
* Ühisarendamine
transaction_ID
value
PK,UNIQUE, INT
FK,INT
VARCHAR(50)


=== 18.12.2016 ===
* Valmis prototüüp


TRANSACTION SUBTYPES
=== 26.01.2017 ===
transaction_subtype_ID
* Valmis lõpptoode
transaction_type_ID
value
PK,UNIQUE, INT
FK,INT
VARCHAR(50)

Latest revision as of 13:13, 27 January 2017

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):

  • Klient saab andmebaasi infot lisada, seda muuta ja infopäringuid teha.


  • Klient (graafiline kasutajaliides)
    • Peab looma ühenduse andmebaasiga
    • 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
  • Andmebaas
    • Peab looma ühenduse kliendiga
    • Peab suhtlema kliendiga mingi protokolli alusel
    • Peab klienti autentima
    • Peab suhtlema kliendiga
      • Kulu sisestamine, muutmine, kustutamine
      • Kulude tagastamine päringu alusel
    • Kõiki tegevusi logitakse

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

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

Analüüs

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

Retsensioon - Bomory

Tegemist on kasutaja poolt loetud raamatute ja vaadatud filmide loeteluga - tore mõte. Tarkvaralahendused on vastavuses aine raames õpetatavate tehnoloogiatega ja sobivad ülesande täitmiseks hästi. Analüüsis on kirjeldatud rakenduse erinevat funktsionaalsust, mida rakendus pakub. Panime tähele, et funktsionaalsus on enamasti inspireerituna õppejõu poolt välja pakutud näidisprojektist. Peale rakendusest eeldatava “raamatukogu” funktsionaalsuse soovitakse ühendada rakendus ka kolmandate osapoolte APIdega (GoodReads, IMDB). See idee tundub igati huvitav ja sääraste APIdega töötamine on huvitav ja õpetlik kogemus. Loodaksime seda funktsionaalsust isegi pigem baasrakenduses näha, kuna see annaks projektile suurt lisaväärtust. Kindlasti on võimalik, et planeeritud funktsionaalsust ei jõuta luua ja nagu tiimiliikmed isegi ütlevad, võib ülevaade koodist veidi kaduma minna. Strateegiliselt on ilmselt mõttekam teha lihtsam rakendus, aga korralikult. Siiski loodame, et meeskond annab endast parima, et ka nende oskustest tulenevalt saaks valmis võimalikult hea projekt. Nice-to-have lisandused on kahtlemata mõistlikud ja täiendavad ilusti põhifunktsionaalsusi. Edu tegijatele, testime meeleldi valminud projekti!


Lõpptoode

http://enos.itcollege.ee/~mbelzets/VitamiinCKlient.7z

Kasutusjuhend

http://enos.itcollege.ee/~mbelzets/c_sharp_kuluhaldur_kasutusjuhend.pdf

Dokumentatsioon

http://enos.itcollege.ee/~mbelzets/Vitamiin%20Csharp%20dokumentatsioon.pdf

Workload

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

13.11.2016

  • Lisatud esimene retsensioon tiimi Bomory projektist

26.11.2016

  • Ühisarendamine

18.12.2016

  • Valmis prototüüp

26.01.2017

  • Valmis lõpptoode