VI praktikum: Projekteerimine

Klassis

Disainime uue kalkulaatori, kus saaks tehteid ilma Caclulator klassi muutmata juurde lisada. Vaatame, mis mustreid saab kasutada.

  • Strategy – erinevad tehted (Operation: Addition, Subtraction)
  • Factory – createAdditionOperation, createSubtractionOperation
  • Valemite kirjeldamise API – Composite pattern: Value: SimpleValue, UnaryOperatorValue, BinaryOperatorValue

Kodune töö

Esialgne kassasüsteem on mõnda aega töös olnud ja tellija on vahepeal laienenud teistesse ülikoolidesse ning neis üsna populaarseks muutunud. Praegune kassasüsteem ei saa enam oma ülesannetega hakkama.

Uued tingimused:

  • Kaupade nimetuste hulk ja kogused suurenevad
  • Tekib vajadus mitme poe ühendamiseks ühtsesse süsteemi
  • Mitu kasutajat peavad saama sama infosüsteemi kasutada erinevatest müügikohtadest
  • Iga ostu jaoks tuleb trükkida arve
  • Erinevad maksevahendid (sularaha, kaart, mobiil)
  • Juhtkond soovib saada rohkem informatsiooni müügi kohta.

1. Disaini küsimused

1.1 Tuua välja puudused, mis on tänasel süsteemil nende nõuete täitmiseks.

1.2 Millistes kohtades peaks süsteemi täiendama, et neid nõudeid rahuldada.

Suunavad küsimused:

  1. Kas on vaja luua eraldi server, kelle külge klientrakendused end ühendavad? Miks?
  2. Kuidas lahendada juhtkonna statistika soov? Kas iga pood peaks saatma õhtuti müügistatistika mingis formaadis kuskile kesksesse kohta või on mõni muu parem lahendus?
  3. Kuidas lahendada arvete trükkimine. Kuidas neid säilitada?
  4. Kuidas oleks võimalik uued maksevahendid infosüsteemiga lihtsalt liita?

1.3 Mõelda jõudlus- ja turvaküsimuste peale.

Suunavad küsimused:

  1. Kuidas saada hakkama suureneva päringute mahuga andmebaasis?
  2. Kui palju ja mida cacheda?
  3. Kuidas lahendada mitme kasutaja korraga andmete muutmine (nt. andmete lukustamine jms)
  4. Kuidas oleks võimalik kliendi-serveri vahelist suhtlemist turvaliseks muuta?
  5. Kuidas piirata kasutajate ligipääsu andmetele (andmebaasi serveri kasutajanime/parooli hoidmine rakenduse kliendis/serveris, millisel rakenduse osal on võimalik üldse päringuid teostada jne)

Kas kusagil on abi mustri(te) kasutamisest? Millistest mustritest? Kuidas need disaini paremaks muudaksid?


Nii punktis 1.2 kui ka 1.3 tuleb kirjeldada vähemalt 5 (kokku 10) aspekti, millest 3 võib valida väljapakututest ja lisaks veel 2 , mille grupp ise välja pakub.

Iga aspekti puhul:

  • kirjeldada seda vähemalt 3-4 lausega
  • tuua välja klassid (vajadusel kirjeldada, milliseid on vaja lisada/muuta/kustutada), mis on sellega seotud.

2. Ostu disain

Disainida ostu sooritamise kasutajalugu.

Kasutajalugu hõlmab endas:

  • kliendi valikut
  • ostu sisestamist
  • kauba kontrolli
  • makseviisi valikut
  • makse sooritamist
  • laoseisu vähenemist
  • tsheki trükki

Luua sequence diagram(id), kus on selgesti eristatavad erinevad kihid ja komponendid ning nendevahelised seosed.

Milliste mustrite kasutamine võiks tulla kasuks antud use case'i realiseerimisel?

edit