Pie Piper: Difference between revisions

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


'''Olemite tähendused:'''
'''Olemite tähendused:'''
#User - Kõiki tegevused rakenduses tehakse kindlaksmääratud kasutajate kaudu. Registreerimise kaudu saab andmebaasi tabelisse luua uue kasutaja. Enne seda toimub C# koodis kontroll, et veenduda väljade vastamises nõuetele.
#User - Kõiki tegevused rakenduses tehakse kindlaksmääratud kasutajate poolt. Registreerimise kaudu saab andmebaasi tabelisse luua uue kasutaja. Enne seda toimub C# koodis kontroll, et veenduda väljade vastamises nõuetele.
#Friendship - Olem, mis hoiab endas sõbrasuhteid.
#Friendship - Olem, mis hoiab endas sõbrasuhteid. Ideaal situatsioonis on õige sõbrasuhe kahepoolne ehk mõlemad kasutajad on üksteist sõbraks lisanud.
#Friendship_message - Hoiab endas sõbrale saadetud sõnumeid. Ära on määratud sõnumi saatja ja sõpruse info.
#Chatroom_message - Sõnumeid saab saata ka ainult jututuppa. Ära on määratud sõnumi saatja ja jututoa info.
#User_group - Võimalik määrata kasutajaid gruppidesse. See on vajalik õiguste lihtsaks määramiseks. Erinevad grupid omavad erinevaid õigusi.
#User_group_right - Määrab kasutaja õigused erinevates jututubades.
#Chatroom - Määrab milline kasutaja on millises jututoas.
#Chatroom_group - Seob jutotoa ja -teema.
#Topic - Jututeema jaoks.


'''Koodipoolne struktuur:'''
'''Koodipoolne struktuur:'''

Revision as of 12:55, 1 November 2016

Media:Example.ogg

Meeskond ja rollid

  • Villem Markus Loigom
  • Olari Pipenberg
  • Uku-Mart Uprus - Projektijuht (CEO)
  • Ardo Erik

Protokoll

  • 04.10.2016 - välja pakutud 4. ideest hääletasime üksmeelselt IM rakenduse tegemise poolt.
  • 13.10.2016 - projektijuht Uku-Mart Uprus.
  • 15.10.2016 - TFS võetud kasutusele kõigi tiimiliikmete poolt, õppejõule kutse saadetud, tiimiga esimese lahendusega tutvumine.
  • 21.10.2016 - Disainiti algne andmebaasi mudel rakenduse jaoks, otsustati kasutada projekti toetava osana olemasolevat WCF projekti koodi, arutati rakenduse funktsionaalsuse kohta.
  • 24.10.2016 - Loodi rakenduse põhi, lisati 2 andmebaasi tabelit, loodi registreerimise väljad.
  • 25.10.2016 - Loodi sisselogimise aken, kasutaja aken (sõbralist, sõprade lisamine).
  • 26.10.2016 - Rakenduse põhja jagamine loogilistesse kihtidesse (Service loomine).
  • 27.10.2016 - Rakenduse põhja jagamine loogilistesse kihtidesse (BOd), kolmanda tabeli loomine.
  • 29.10.2016 - Koodi silumine
  • 30.10.2016 - Sõbralisti kuvamine, sõprade lisamine
  • 31.10.2016 - Koodi silumine
  • 01.11.2016 - WCF temaatikaga tutvumine


Idee

Idee on luua IM (Instant Messenger) rakendus nagu seda on 'Windows Live Messenger'. Võimalik peab olema uusi kasutajaid registreerida, kasutajatega sisse logida ning kasutajate vahel sõnumeid vahetada. Tegemist on klient-server lahendusega, kus server autendib, autoriseerib ning vahendab kasutajate vahelist suhtlust.

Analüüs

Projekti ülesehitus

  • Kogu projekt on üles-ehitatud selliselt, et ta toimiks lokaalmasinas. Järgime õppejõu nõuannet kasutada rakenduse loomisel "Andmebaas << Äriloogika << Rakendus" loogikat. Mis on selle eesmärk? Eesmärk on see, et kood oleks hallatav ja vajaduse korral skaleeruv.

Mida see endas sisaldab?

  • Projekt sisaldab endas WPF-rakendust, konsoolirakendust ja andmebaasi. WPF-rakendus on mõeldud lõppkasutajatele toimingute tegemiseks. Konsoolirakendusega kuvame serveri teateid (nt "loodi uus kasutaja"), andmebaasis hoitakse informatsioon kasutajate ja sõnumite kohta. Loome kohaliku andmebaasi, mille nimeks saab "chatdb". Andmebaasi on planeeritud luua ~9 tabelit, mis peaks tagama rakenduse täieliku funktsionaalsuse. Andmebaasimudel võiks välja näha midagi sellist:

Olemite tähendused:

  1. User - Kõiki tegevused rakenduses tehakse kindlaksmääratud kasutajate poolt. Registreerimise kaudu saab andmebaasi tabelisse luua uue kasutaja. Enne seda toimub C# koodis kontroll, et veenduda väljade vastamises nõuetele.
  2. Friendship - Olem, mis hoiab endas sõbrasuhteid. Ideaal situatsioonis on õige sõbrasuhe kahepoolne ehk mõlemad kasutajad on üksteist sõbraks lisanud.
  3. Friendship_message - Hoiab endas sõbrale saadetud sõnumeid. Ära on määratud sõnumi saatja ja sõpruse info.
  4. Chatroom_message - Sõnumeid saab saata ka ainult jututuppa. Ära on määratud sõnumi saatja ja jututoa info.
  5. User_group - Võimalik määrata kasutajaid gruppidesse. See on vajalik õiguste lihtsaks määramiseks. Erinevad grupid omavad erinevaid õigusi.
  6. User_group_right - Määrab kasutaja õigused erinevates jututubades.
  7. Chatroom - Määrab milline kasutaja on millises jututoas.
  8. Chatroom_group - Seob jutotoa ja -teema.
  9. Topic - Jututeema jaoks.

Koodipoolne struktuur:
ChatRoom
ChatRoom.BusinessObject (Kasutaja info)
ChatRoom.Domain (Vahekiht andmebaasiga)
ChatRoom.Service (Põhiloogika)
ChatRoom.View (Vaated/kujundus)

Mida tavakasutaja sellega teha saaks?

  • Tavakasutajal peab olema võimalus rakenduses registreerida ja sisse logida. Sisselogimis järgselt peab olema võimalus lisada/eemaldada sõpru, valida jututuba ning teostada sõnumivahetust antud konkreetses jututoas.

Milliste osade realiseerimine võib osutuda problemaatiliseks?

  • Sõnumivahetuse teostamine. Iseenesest sõnumite pärimine andmebaasist ning kasutajale nende kuvamine pole probleem. Küll on aga probleem sõnumite esitamisega reaalajas. Sõnumite vahetu esitamisega on vaja tõenäoliselt rakendada WCF temaatikat, mis nõuab lisauurimist.

Tööjaotus

  • Koodi kirjutatakse jooksvalt kõigi tiimiliikmete poolt koos. Peale prototüübi valmimist otsustame, kes mis osa hakkab lihvima.

Must have

  • Kasutajate registreerimine (sh vigade kontroll, näiteks lühike parool, kasutaja eksisteerib)
  • Kasutaja autentimine/autoriseerimine
  • Kasutajarollid (tavakasutaja, moderaator, admin)
  • Sõprade lisamine, sõprade nimekiri
  • Uute jututubade loomine
  • Suhtlemine jututubades
  • Kasutajate haldus (kick, ban)

Nice to have

  • Rakenduse osasid (server/klient) on võimalik jooksutada erinevates masinates
  • Sõnumite tsenseerimine
  • Mugav kasutajakogemus
  • Moodne disain

Tehnoloogia

Kasutatav tehnoloogia:

  • C#
  • XAML
  • WPF
  • WCF?