web aplikacija - skola stranih jezika

Upload: jovana

Post on 07-Jul-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    1/86

    Univerzitet u Beogradu

    Fakultet organizacionih nauka

    Laboratorija za softversko inženjerstvo 

    Seminarski rad iz predmeta

    Napredne Java tehnologije

    Tema: Web aplikacija za praćenje rada škole stranih jezika 

    Profesor:

    dr Siniša Vlajić 

    Student:

    Jovana Milošević 176/11

    Beograd, 2016.

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    2/86

    2

    Sadržaj 1. Korisnički zahtevi................................................................................................................................... 5

    1.1 Verbalni opis ................................................................................................................................. 5

    1.2 Slučajevi korišćenja  ....................................................................................................................... 5

    1.2.1 SK 1 : Slučaj korišćenja – Unos polaznika škole..................................................................... 6

    1.2.2 SK 2 : Slučaj korišćenja – Izmena polaznika škole ...................................................................... 7

    1.2.3 SK3: Slučaj korišćenja – Pretraga polaznika škole ................................................................. 8

    1.2.4 SK 4 : Slučaj korišćenja – Brisanje polaznika škole ................................................................ 9

    1.2.5 SK 5 : Slučaj korišćenja – Unos novog kursa ....................................................................... 10

    1.2.6 SK 6 : Slučaj korišćenja – Pretraga kurseva ......................................................................... 11

    1.2.7 SK 7 : Slučaj korišćenja – Unos računa (Složen) .................................................................. 12

    1.2.8 SK 8 : Slučaj korišćenja – Pretraga računa........................................................................... 13

    1.2.9 SK 9 : Slučaj korišćenja – Brisanje računa  ........................................................................... 14

    1.2.10 SK10: Slučaj korišćenja - Izmena računa  .................................................................................. 15

    1.2.10 SK 11 : Slučaj korišćenja – Prijavljivanje zaposlenog ........................................................... 16

    2. Analiza ................................................................................................................................................. 17

    2.1 . Ponašanje softverskog sistema – Sistemski dijagrami sekvenci ............................................. 17

    DS1: Dijagram sekvenci slučaja korišćenja - Unos polaznika škole .................................................... 17

    DS2 : Dijagram sekvenci slučaja korišćenja – Izmena polaznika škole ................................................ 18

    DS3 : Dijagram sekvenci slučaja korišćenja – Pretraga polaznika škole .............................................. 21

    DS4 : Dijagram sekvenci slučaja korišćenja – Brisanje polaznika škole .............................................. 22

    DS5 : Dijagram sekvenci slučaja korišćenja – Unos novog kursa ........................................................ 25

    DS6 : Dijagram sekvenci slučaja korišćenja – Pretraga kurseva .......................................................... 26

    DS7 : Dijagram sekvenci slučaja korišćenja – Unos računa ................................................................. 29

    DS8 : Dijagram sekvenci slučaja korišćenja – Pretraga računa ........................................................... 30

    DS9 : Dijagram sekvenci slučaja korišćenja – Brisanje računa ............................................................ 32

    DS10 : Dijagram sekvenci slučaja korišćenja – Izmena računa ........................................................... 35

    DS11 : Dijagram sekvenci slučaja korišćenja – Prijavljivanje zaposlenog ........................................... 38

    2.2. Ponašanje softtverskog sistema – Definisanje ugovora o sistemskim operacijama ................ 40

    2.2.1. Ugovor UG1: ZapamtiPolaznika .......................................................................................... 40

    2.2.2. Ugovor UG2: PretraziPolaznike ........................................................................................... 40

    2.2.3. Ugovor UG3: UcitajPolaznika .............................................................................................. 40

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    3/86

    3

    2.2.4. Ugovor UG4: ObrisiPolaznika .............................................................................................. 40

    2.2.5. Ugovor UG5: UcitajJezike .................................................................................................... 40

    2.2.6. Ugovor UG6: UcitajZaposlene ............................................................................................. 41

    2.2.7. Ugovor UG7: ZapamtiKurs .................................................................................................. 41

    2.2.8. Ugovor UG8: UcitajKurs ...................................................................................................... 41

    2.2.9. Ugovor UG9: PretraziKurseve ............................................................................................. 41

    2.2.10. Ugovor UG10: UcitajKurseve .............................................................................................. 42

    2.2.11. Ugovor UG11: UcitajPolaznike ............................................................................................ 42

    2.2.12. Ugovor UG12: UnosNovogRacuna ...................................................................................... 42

    2.2.13. Ugovor UG13: ZapamtiRacun ............................................................................................. 42

    2.2.14. Ugovor UG14: PretraziRacune ............................................................................................ 42

    2.2.15. Ugovor UG15: UcitajRacun ................................................................................................. 43

    2.2.16. Ugovor UG16: ObrisiRacun ................................................................................................. 43

    2.2.17. Ugovor UG17: NadjiZaposlenog .......................................................................................... 43

    2.3. Struktura softverskog sistema – Konceptualni (domenski) model ............................................. 44

    2.4. Struktura softverskog sistema – Relacioni model ....................................................................... 46

    3. Projektovanje ...................................................................................................................................... 49

    3.1 Arhitektura softverskog sistema ....................................................................................................... 49

    3.2. Projektovanje aplikacione logike ................................................................................................ 50

    3.2.1 Komunikacija sa klijentima ........................................................................................................ 50

    3.2.2 Kontroler aplikacione logike ............................................................................................... 51

    3.3. Projektovanje ponašanja softverskog sistema – sistemske operacije ........................................ 52

    Ugovor UG1: ZapamtiPolaznika .......................................................................................................... 52

    Ugovor UG2: PretraziPolaznike ........................................................................................................... 52

    Ugovor UG3: UcitajPolaznika .............................................................................................................. 53

    Ugovor UG4: ObrisiPolaznika .............................................................................................................. 53

    Ugovor UG5: UcitajJezike .................................................................................................................... 54

    Ugovor UG6: UcitajZaposlene ............................................................................................................. 54

    Ugovor UG7: ZapamtiKurs .................................................................................................................. 55

    Ugovor UG8: UcitajKurs ...................................................................................................................... 55

    Ugovor UG9: PretraziKurseve ............................................................................................................. 56

    Ugovor UG10: UcitajKurseve .............................................................................................................. 56

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    4/86

    4

    Ugovor UG11: UcitajPolaznike ............................................................................................................ 57

    Ugovor UG12: UnosNovogRacuna ...................................................................................................... 58

    Ugovor UG13: ZapamtiRacun ............................................................................................................. 58

    Ugovor UG14: PretraziRacune ............................................................................................................ 59

    Ugovor UG15: UcitajRacun ................................................................................................................. 59

    Ugovor UG16: ObrisiRacun ................................................................................................................. 60

    Ugovor UG17: NadjiZaposlenog .......................................................................................................... 60

    3.4. Projektvanje strukture softverskog sistema ............................................................................... 63

    3.5. Broker baze podataka ................................................................................................................. 81

    3.6. Projektovanje skladišta podataka  ............................................................................................... 81

    4. Implementacija ....................................................................................................................................... 84

    5. Testiranje................................................................................................................................................ 85

    6. Literatura............................................................................................................................................. 85

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    5/86

    5

    1.  Korisnički zahtevi 

    1.1 Verbalni opis

    Potrebno je napraviti web aplikaciju koja omogućava vođenje evidencije rada škole stranih

     jezika – prijavljivanje zaposlenog, vođenje evidencije o kursevima i polaznicima kao i o uplatama

    (računima polaznika). 

    Aplikacija treba da vodi evidenciju o polaznicima kurseva, da omogući pretragu polaznika prema

    određenim vrednostima kao i unos novih polaznika, izmenu podataka o postojećim i brisanje

    istih.

    Za svakog polaznika, potrebno je voditi evidenciju o računima preko kojih se reguliše pohađanje

    kurseva (unos novog, pretraga, izmena i brisanje računa). 

    Takođe, potrebno je voditi evidenciju o postojećim kursevima, omogućiti pretragu i unos novogkursa.

    Korisnik sistema je Zaposleni. Da bi zaposleni mogao da vrši izmene nad podacima u sistemu

    potrebno je da bude prijavljen pod svojim korisničkim imenom i šifrom. 

    1.2 Slučajevi korišćenja 

    Definisani su sledeći slučajevi korišćenja koji su prikazani i na slici 1:

    1.  Unos polaznika

    2. 

    Izmena polaznika

    3.  Pretraga polaznika

    4.  Brisanje polaznika

    5. 

    Unos novog kursa

    6.  Pretraga kurseva

    7.  Unos računa

    8.  Pretraga računa 

    9.  Izmena računa 

    10. Brisanje računa 

    11. 

    Prijavljivanje zaposlenog

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    6/86

    6

    1.2.1 

    SK 1 : Slučaj korišćenja – Unos polaznika škole 

    Nаziv SK 

    Unos novog polaznika škole 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni  i sistem (progrаm) 

    Preduslov: Sistem  je uključen i zaposleni  je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa polaznicima.

    Osnovni scenаrio SK 

    1. 

    Zaposleni unosi podatke o novom polazniku. (APUSO)

    2.  Zaposleni kontroliše da li je korektno uneo podatke o novom polazniku. (ANSO)

    3.  Zaposleni poziva sistem da zapamti podatke o novom polazniku. (APSO)

    4.  Sistem pamti podatke o novom polazniku. (SO)

    5.  Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio polaznika”. (IA) 

    Alternаtivnа scenаrijа 

    5.1. Ukoliko sistem  ne može da zapamti podatke o novom   polazniku  on prikazuje

    zaposlenom poruku: “Sistem ne može da zapamti novog polaznika”. Prekida se izvršavanje

    scenarija. (IA)

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    7/86

    7

    1.2.2  SK 2 : Slučaj korišćenja – Izmena polaznik a škole 

    Naziv SK

    Izmena polaznika škole 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni i sistem (program)

    Preduslov:  Sistem  je uključen i zaposleni  je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa polaznicima.

    Osnovni scenario SK

    1. 

    Zaposleni unosi vrednosti po kojima pretražuje polaznike. (APUSO)

    2.  Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)

    3.  Sistem traži  polaznike po zadatim vrednostima. (SO)

    4.  Sistem prikazuje zaposlenom nađene polaznike. (IA)

    5.  Zaposleni bira polaznika koga želi da izmeni. (APUSO) 

    6.  Zaposleni poziva sistem da učita podatke o izabranom polazniku. (APSO)

    7.  Sistem pronalazi podatke o izabranom polazniku. (SO)

    8.  Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)

    9.  Zaposleni unosi (menja) podatke o polazniku. (APUSO)

    10. 

    Zaposleni kontroliše da li je korektno uneo podatke o polazniku. (ANSO)

    11. Zaposleni poziva sistem da zapamti podatke o polazniku. (APSO)

    12. Sistem pamti podatke o polazniku. (SO)

    13. Sistem prikazuje zaposlenom poruku: “Sistem je izmenio podatke o polazniku.” (IA) 

    Alternativna scenarija:

    4.1. Ukoliko sistem ne može da nađe polaznike, on prikazuje zaposlenom poruku: “Sistem 

    ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA) 

    8.1. Ukoliko sistem  ne može da nađe podatke o  polazniku, on prikazuje zaposlenom 

    poruku: “Sistem  ne može da nađe podatke o izabranom  polazniku”. Prekida se izvršenje

    scenarija. (IA)

    13.1. Ukoliko sistem  ne može da zapamti podatke o  polazniku  on prikazuje zaposlenom 

    poruku: “Sistem ne može da zapamti polaznika”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    8/86

    8

    1.2.3 

    SK3: Slučaj korišćenja – Pretraga polaznika škole 

    Naziv SK

    Pretraga polaznika škole 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni i sistem (program)

    Preduslov: Sistem  je uključen i zaposleni  je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa polaznicima.

    Osnovni scenario SK

    1. 

    Zaposleni unosi vrednosti po kojima pretražuje polaznike. (APUSO)

    2.  Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)

    3.  Sistem traži  polaznike po zadatim vrednostima. (SO)

    4.  Sistem prikazuje zaposlenom nađene polaznike. (IA)

    5.  Zaposleni bira polaznika čije podatke želi da vidi. (APUSO) 

    6.  Zaposleni poziva sistem da prikaže podatke o izabranom polazniku. (APSO)

    7.  Sistem pronalazi podatke o izabranom polazniku. (SO)

    8.  Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)

    Alternativna scenarija

    4.1. Ukoliko sistem ne može da nađe  polaznike on prikazuje zaposlenom poruku: “Sistem 

    ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)

    8.1. Ukoliko sistem ne može da nađe izabranog polaznika on prikazuje zaposlenom poruku:

    “Sistem ne može da nađe podatke o izabranom polazniku”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    9/86

    9

    1.2.4 

    SK 4 : Slučaj korišćenja – Brisanje polaznika škole 

    Naziv SK

    Brisanje polaznika škole 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni i sistem (program)

    Preduslov: Sistem  je uključen i zaposleni  je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa polaznicima.

    Osnovni scenario SK

    1. 

    Zaposleni unosi vrednosti po kojim pretražuje polaznike. (APUSO)

    2.  Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)

    3.  Sistem traži  polaznike po zadatim vrednostima. (SO)

    4.  Sistem prikazuje zaposlenom nađene polaznike. (IA)

    5.  Zaposleni bira polaznika kojeg želi da obriše. (APUSO) 

    6.  Zaposleni poziva sistem da obriše polaznika. (APSO)

    7.  Sistem briše  polaznika. (SO)

    8.  Sistem prikazuje zaposlenom poruku: “Sistem je obrisao polaznika.” (IA) 

    Alternativna scenarija

    4.1. Ukoliko sistem ne može da nađe  polaznike on prikazuje zaposlenom poruku: “Sistem 

    ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA) 

    8.1. Ukoliko sistem ne može da obriše polaznika on prikazuje zaposlenom poruku: “Sistem 

    ne može da obriše polaznika”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    10/86

    10

    1.2.5 

    SK 5 : Slučaj korišćenja – Unos novog kursa

    Nаziv SK 

    Unos novog kursa

    Aktori SK

    Zaposleni

    Učesnici SK 

    Zaposleni  i sistem (progrаm) 

    Preduslov: Sistem je uključen i zaposleni  je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa kursevima. Učitana je lista jezika. Učitana je lista zaposlenih. 

    Osnovni scenаrio SK 

    1.  Zaposleni unosi podatke o novom kursu. (APUSO)

    2.  Zaposleni kontroliše da li je korektno uneo podatke o novom kursu. (ANSO)

    3.  Zaposleni poziva sistem da zapamti podatke o novom kursu. (APSO)

    4.  Sistem pamti podatke o novom kursu. (SO)

    5.  Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio kurs”. (IA) 

    Alternаtivnа scenаrijа 

    5.1. Ukoliko sistem ne može da zapamti podatke o novom kursu on prikazuje zaposlenomporuku “Sistem ne može da zapamti novi kurs”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    11/86

    11

    1.2.6 

    SK 6 : Slučaj korišćenja – Pretraga kurseva

    Naziv SK

    Pretraga kurseva 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni i sistem (program)

    Preduslov: Sistem  je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa kursevima. Učitana je lista jezika. Učitana je lista zaposlenih. 

    Osnovni scenario SK

    1. 

    Zaposleni unosi vrednosti po kojima pretražuje kurseve. (APUSO)

    2.  Zaposleni poziva sistem da nađe kurseve po zadatim vrednostima. (APSO)

    3.  Sistem traži kurseve po zadatim vrednostima. (SO)

    4.  Sistem prikazuje zaposlenom nađene kurseve. (IA)

    5.  Zaposleni bira kurs čije podatke želi da vidi. (APUSO) 

    6.  Zaposleni poziva sistem da prikaže podatke o izabranom kursu. (APSO)

    7.  Sistem traži podatke o izabranom kursu. (SO)

    8.  Sistem prikazuje zaposlenom podatke o izabranom kursu. (IA)

    Alternativna scenarija

    4.1. Ukoliko sistem ne može da nađe kurseve on prikazuje zaposlenom poruku: “Sistem ne

    može da nađe kurseve po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)

    8.1. Ukoliko sistem  ne može da nađe izabrani kurs  on prikazuje zaposlenom  poruku:

    “Sistem ne može da nađe podatke o izabranom kursu”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    12/86

    12

    1.2.7 

    SK 7 : Slučaj korišćenja – Unos računa (Složen) 

    Naziv SK

    Unos računa 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni i sistem (program)

    Preduslov: Sistem  je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa računima. Učitane je lista kurseva. Učitana je lista polaznika.

    Osnovni scenario SK

    1. 

    Zaposleni unosi podatke o novom računu. (APUSO)

    2.  Zaposleni kontroliše da li je korektno uneo podatke o novom računu. (ANSO)

    3.  Zaposleni poziva sistem da zapamti podatke o novom računu. (APSO)

    4.  Sistem pamti podatke o novom računu. (SO)

    5.  Sistem prikazuje zaposlenom  poruku “Racun je uspesno sacuvan”. (IA) 

    Alternativna scenarija

    5.1. Ukoliko sistem ne može da zapamti podatke o novom računu on prikazuje zaposlenom poruku: “Sistem ne može da zapamti novi račun”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    13/86

    13

    1.2.8 

    SK 8 : Slučaj korišćenja – Pretraga računa 

    Naziv SK

    Pretraga računa 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni i sistem (program)

    Preduslov: Sistem  je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa računima. Učitana je lista polaznika. 

    Osnovni scenario SK

    1. 

    Zaposleni unosi vrednosti po kojima pretražuje račune. (APUSO)

    2.  Zaposleni poziva sistem da nađe račune po zadatoj vrednosti. (APSO)

    3.  Sistem traži račune po zadatoj vrednosti. (SO)

    4.  Sistem prikazuje zaposlenom nađene račune. (IA)

    5.  Zaposleni bira račun čije podatke želi da vidi. (APUSO) 

    6.  Zaposleni poziva sistem da prikaže podatke o izabranom računu. (APSO)

    7.  Sistem traži podatke o izabranom računu. (SO)

    8.  Sistem prikazuje zaposlenom podatke o izabranom računu. (IA)

    Alternativna scenarija

    4.1. Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: “Sistem ne

    može da nađe račune po zadatoj vrednosti”. Prekida se izvršenje scenarija. (IA)

    8.1. Ukoliko sistem ne može da nađe podatke o izabranom računu on prikazuje zaposlenom

    poruku: “Sistem ne može da nađe podatke o izabranom računu”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    14/86

    14

    1.2.9 

    SK 9 : Slučaj korišćenja – Brisanje računa 

    Nаziv SK 

    Brisanje rаčunа 

    Aktori SK

    Zaposleni

    Učesnici SK 

    Zaposeni i sistem ( progrаm)

    Preduslov: Sistem  je uključen i zaposleni je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa računima. Učitana je lista polaznika. Učitana je lista računa. 

    Osnovni scenаrio SK 

    1.  Zaposleni unosi vrednost po kojoj pretrаžuje rаčun. (APUSO)

    2.  Zaposleni pozivа sistem dа nаđe rаčune po zаdаtoj vrednosti. (APSO) 

    3.  Sistem trаži rаčune po zаdаtoj vrednosti. (SO) 

    4.  Sistem prikаzuje zaposlenom pronаđene račune. (IA)

    5.  Zaposleni birа rаčun koji želi dа obriše.(APUSO) 

    6.  Zaposleni pozivа sistem dа obriše odаbrаni rаčun. (APSO)

    7.  Sistem briše odаbrаni rаčun. (SO)

    8.  Sistem prikаzuje zaposlenom poruku: “Sistem je obrisao rаčun”. (IA) 

    Alternаtivnа scenаrijа 

    4.1 Ukoliko sistem ne može dа nаđe rаčune on prikаzuje zaposlenom poruku: “Sistem ne može

    dа nаđe rаčune po zаdаtoj vrednosti”. Prekidа se izvršenje scenаriа. (IA) 

    8.1 Ukoliko sistem ne može dа obriše rаčun on prikаzuje zaposlenom poruku: “Sistem ne može

    dа obriše rаčun”.

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    15/86

    15

    1.2.10 SK10: Slučaj korišćenja - Izmena računa 

    Naziv SK

    Izmena računa 

    Aktori SK

    Zaposleni

    Učesnici SK 

    Zaposeni i sistem ( progrаm)

    Preduslov: Sistem  je uključen i korisnik je ulogovan pod svojom šifrom. Sistem prikazuje

    formu za rad sa računima. Učitana je lista polaznika. Učitana je lista računa. 

    Osnovni scenario SK

    1.  Zaposleni unosi vrednosti po kojima pretražuje račune. (APUSO) 

    2.  Zaposleni poziva sistem da nađe račune po zadatim vrednostima. (APSO) 

    3.  Sistem traži račune po zadatim vrednsotima. (SO) 

    4.  Sistem prikаzuje zaposlenom pronađene račune i poruku: ʺ Pretraga je uspešno izvršena ʺ.

    (IA) 

    5.  Zaposleni bira račun koji želi da izmeni. (APUSO) 

    6.  Zaposleni poziva sistem da učita podatke o izabranom računu. (APSO) 

    7. 

    Sistem traži podatke o izabranom računu. (SO) 

    8.  Sistem prikazuje zaposlenom podatke o izabranom računu i poruku “Podaci o izabranom

    računu su uspešno pronađeni”. (IA)

    9.  Zaposleni unosi(menja) podatke o računu. (APUSO) 

    10. Zaposleni kontroliše da li je korektno uneo podatke o računu. (ANSO) 

    11. Zaposleni poziva sistem da zapamti podatke o računu. (APSO) 

    12. Sistem pamti podatke o računu. (SO) 

    13. Sistem prikazuje zaposlenom poruku “Sistem je zapamtio račun”. (IA) 

    Alternativna scenarija

    4.1. Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: “Sistemne možeda nađe račune po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)

    8.1. Ukoliko sistem ne može da nađe račun on prikazuje zaposlenom poruku: “Sistem ne može

    da nađe izabrani račun”. Prekida se izvršenje scenarija. (IA) 

    13.1. Ukoliko sistem ne može da zapamti podatke o računu on prikazujezaposlenom poruku:

    “Sistem ne može da zapamti račun”. (IA)

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    16/86

    16

    1.2.10 

    SK 11 : Slučaj korišćenja – Prijavljivanje zaposlenog

    Naziv SK

    Prijavljivanje zaposlenog 

    Aktori SKZaposleni

    Učesnici SK 

    Zaposleni i sistem (program)

    Preduslov: Sistem  je uključen i prikazuje formu za prijavljivanje zaposlenog.

    Osnovni scenario SK

    1.  Zaposleni unosi podatke za autentifikaciju zaposlenog. (APUSO)

    2. 

    Zaposleni poziva sistem da pronađe zaposlenog sa zadatim podacima. (APSO)

    3.  Sistem pretražuje zaposlene. (SO)

    4.  Sistem prikazuje poruku “zaposleni + uspešno ste prijavljeni” i početnu formu. (IA) 

    Alternativna scenarija

    4.1. Ukoliko sistem ne može da nađe zaposlenog prikazuje poruku “Sistem ne može da nađe

    zaposlenog  ”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    17/86

    17

    2.   Analiza

    2.1 . Ponašanje softverskog sistema – Sistemski dijagrami sekvenci

    DS1: Dijagram sekvenci slučaja korišćenja - Unos polaznika škole 

    1.  Zaposleni poziva sistem da zapamti podatke o novom polazniku. (APSO)

    2.  Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio polaznika”. (IA) 

     Aktor: Zaposleni

    Sistem

    ZapamtiPolaznika(Polaznik)

    “Sistem je zapamtio polaznika”

     

    Alternаtivnа scenаrijа 

    2.1. Ukoliko sistem  ne može da zapamti podatke o novom   polazniku on prikazuje

    zaposlenom poruku “Sistem ne može da zapamti novog  polaznika”. (IA) 

     Aktor: Zaposleni

    Sistem

    ZapamtiPolaznika(Polaznik)

    “Sistem ne moze da zapamti

    novog polaznika”

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1. 

    Signal ZapamtiPolaznika(Polaznik )

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    18/86

    18

    DS2 : Dijagram sekvenci slučaja korišćenja – Izmena polaznika škole 

    1.  Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)

    2.  Sistem prikazuje zaposlenom nađene polaznike. (IA)

    3.  Zaposleni poziva sistem da učita podatke o izabranom polazniku. (APSO)

    4.  Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)

    5.  Zaposleni poziva sistem da zapamti podatke o polazniku. (APSO)

    6.  Sistem prikazuje zaposlenom poruku: “Sistem je izmenio podatke o polazniku.” (IA) 

     Aktor: Zaposleni

    Sistem

    IzabraniPolaznik

     

    PretraziPolaznike(KriterijumPretrage, List)

    NadjeniPolaznici

    UcitajPolaznika(Polaznik)

    IzmeniPolaznika(Polaznik)

    “Sistem je izmenio polaznika”

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    19/86

    19

    Alternativna scenarija:

    2.1. Ukoliko sistem ne može da nađe  polaznike, on prikazuje zaposlenom poruku: “Sistem 

    ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA) 

     Aktor: Zaposleni

    Sistem

    PretraziPolaznike(KriterijumPretrage, List)

    “Sistem ne može da nađe polaznike pozadatim vrednostima”

     

    4.1.Ukoliko sistem  ne može da nađe podatke o izabranom  polazniku, on prikazuje

    zaposlenom poruku: “Sistem ne može da nađe podatke o izabranom  polazniku”. Prekida se

    izvršenje scenarija. (IA) 

     Aktor: Zaposleni

    Sistem

    “Sistem ne može da nađe podatke oizabranom polazniku”

    PretraziPolaznike(KriterijumPretrage, List)

    NadjeniPolaznici

    UcitajPolaznika(Polaznik)

     

    6.1.Ukoliko sistem  ne može da zapamti podatke o  polazniku  on prikazuje zaposlenom 

    poruku: “Sistem ne može da zapamti podatke o polazniku”. (IA)

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    20/86

    20

    IzmeniPolaznika(Polaznik)

    “Sistem ne može da zapamtipodatke o polazniku”

     Aktor: Zaposleni

    Sistem

    “Sistem ne može da nađe podatke oizabranom polazniku”

    PretraziPolaznike(KriterijumPretrage, List)

    NadjeniPolaznici

    UcitajPolaznika(Polaznik)

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1.  signal  PretraziPolaznike(KriterijumPretrage, List)

    2.  signal  UcitajPolaznika(Polaznik )

    3. 

    signal  IzmeniPolaznika(Polaznik )

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    21/86

    21

    DS3 : Dijagram sekvenci slučaja korišćenja – Pretraga polaznika škole 

    1.  Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)

    2.  Sistem prikazuje zaposlenom nađene polaznike. (IA)

    3.  Zaposleni poziva sistem da prikaže podatke o izabranom  polazniku. (APSO)

    4. 

    Sistem prikazuje zaposlenom podatke o izabranom polazniku. (IA)

     Aktor: Zaposleni

    Sistem

    IzabraniPolaznik

    PretraziPolaznike(KriterijumPretrage, List)

    NadjeniPolaznici

    UcitajPolaznika(Polaznik)

     

    Alternativna scenarija

    2.1. Ukoliko sistem ne može da nađe  polaznike on prikazuje zaposlenom poruku: “Sistem 

    ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)

     Aktor: Zaposleni

    Sistem

    PretraziPolaznike(KriterijumPretrage, List)

    “Sistem ne može da nađe polaznike pozadatim vrednostima”

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    22/86

    22

    4.1. Ukoliko sistem  ne može da nađe podatke o izabranom  polazniku, on prikazuje

    zaposlenom poruku: “Sistem ne može da nađe podatke o izabranom polazniku”. (IA)

     Aktor: Zaposleni

    Sistem

    “Sistem ne može da nađe podatke o

    izabranom polazniku”

    PretraziPolaznike(KriterijumPretrage, List)

    NadjeniPolaznici

    UcitajPolaznika(Polaznik)

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1.  signal PretraziPolaznike(KriterijumPretrage, List)

    2.  signal   UcitajPolaznika(Polaznik )

    DS4 : Dijagram sekvenci slučaja korišćenja – Brisanje polaznika škole 

    1.  Zaposleni poziva sistem da nađe polaznike po zadatim vrednostima. (APSO)

    2.  Sistem prikazuje zaposlenom nađene polaznike. (IA)

    3.  Zaposleni poziva sistem da obriše polaznika. (APSO)

    4.  Sistem prikazuje zaposlenom poruku: “Sistem je obrisao polaznika.” (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    23/86

    23

     Aktor: Zaposleni

    Sistem

    “Sistem je obrisao polaznika”

    PretraziPolaznike(KriterijumPretrage, List)

    NadjeniPolaznici

    ObrisiPolaznika(Polaznik)

     

    Alternativna scenarija

    2.1. Ukoliko sistem ne može da nađe  polaznike on prikazuje zaposlenom poruku: “Sistem 

    ne može da nađe polaznike po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA) 

     Aktor: Zaposleni

    Sistem

    PretraziPolaznike(KriterijumPretrage, List)

    “Sistem ne može da nađe polaznike pozadatim vrednostima”

     

    4.1.  Ukoliko sistem ne može da obriše polaznika on prikazuje zaposlenom poruku:

    “Sistem ne može da obriše polaznika”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    24/86

    24

     Aktor: Zaposleni

    Sistem

    “Sistem ne moze da obrise polaznika”

    PretraziPolaznike(KriterijumPretrage, List)

    NadjeniPolaznici

    ObrisiPolaznika(Polaznik)

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba  

    projektovati:

    1.  signal PretraziPolaznike(KriterijumPretrage, List)

    2.  signal   ObrisiPolaznika(Polaznik ). 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    25/86

    25

    DS5 : Dijagram sekvenci slučaja korišćenja – Unos novog kursa

    1.  Zaposleni poziva sistem da zapamti podatke o novom kursu. (APSO)

    2.  Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio kurs”. (IA) 

     Aktor: Zaposleni

    Sistem

    UcitajJezike(List)

    listaJezika

    UcitajZaposlene(List)

    listaZaposlenih

    ZapamtiKurs(Kurs)

    “Sistem je zapamtio kurs”

     

    Alternаtivnа scenаrijа 

    2.1.  Ukoliko sistem ne može da zapamti podatke o novom kursu on prikazuje zaposlenom

    poruku “Sistem ne može da zapamti novi kurs”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    26/86

    26

     Aktor: Zaposleni

    Sistem

    UcitajJezike(List)listaJezika

    UcitajZaposlene(List)

    listaZaposlenih

    ZapamtiKurs(Kurs)

    “Sistem ne moze da zapamti novi kurs”

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1.  signal UcitajJezike(List)

    2.  signal UcitajZaposlene(List)

    3.  signal   ZapamtiKurs(Kurs). 

    DS6 : Dijagram sekvenci slučaja korišćenja – Pretraga kurseva

    1.  Zaposleni poziva sistem da nađe kurseve po zadatim vrednostima. (APSO)

    2.  Sistem prikazuje zaposlenom nađene kurseve. (IA)

    3.  Zaposleni poziva sistem da prikaže podatke o izabranom kursu. (APSO)

    4.  Sistem prikazuje zaposlenom podatke o izabranom kursu. (IA)

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    27/86

    27

     Aktor: Zaposleni

    Sistem

    UcitajJezike(List)listaJezika

    UcitajZaposlene(List)

    listaZaposlenih

    PretraziKurseve(KriterijumPretrage,List)

    listaKurseva

    UcitajKurs(Kurs)

    izabraniKurs

     

    Alternativna scenarija

    2.1. Ukoliko sistem ne može da nađe kurseve on prikazuje zaposlenom poruku: “Sistem ne

    može da nađe kurseve po zadatim vrednostima”. Prekida se izvršenje scenarija. (IA)

     Aktor: Zaposleni

    Sistem

    UcitajJezike(List)

    listaJezika

    UcitajZaposlene(List)

    listaZaposlenih

    PretraziKurseve(KriterijumPretrage,List)

    “Sistem ne moze da nadje kurseve po zadatim

    vrednostima”

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    28/86

    28

    4.1. Ukoliko sistem  ne može da nađe izabrani kurs  on prikazuje zaposlenom  poruku:

    “Sistem ne može da nađe podatke o izabranom kursu”. (IA) 

    UcitajKurs(Kurs)

     Aktor: Zaposleni

    Sistem

    UcitajJezike(List)

    listaJezika

    UcitajZaposlene(List)

    listaZaposlenih

    PretraziKurseve(KriterijumPretrage,List)

    izabraniKurs

    “Sistem ne moze da nadje podatke oizabranom kursu”

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije   koje treba

    projektovati:

    1.  signal PretraziKurseve(KriterijumPretrage,List)

    2.  signal   UcitajKurs(Kurs)

    3.  signal   UcitajJezike(List) .

    4.  signal   UcitajZaposlene(List)  .

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    29/86

    29

    DS7 : Dijagram sekvenci slučaja korišćenja – Unos računa 

    1.  Zaposleni poziva sistem da zapamti podatke o novom računu. (APSO)

    2.  Sistem prikazuje zaposlenom  poruku “Uspešno ste uneli račun”. (IA) 

     Aktor: Zaposleni

    Sistem

    UcitajKurseve(List)

    listaKurseva

    UcitajPolaznike(List)

    listaPolaznika

    ZapamtiRacun(Racun)

    “Uspesno ste uneli racun”

     

    Alternativna scenarija

    2.1. Ukoliko sistem  ne može da zapamti novi račun  on prikazuje zaposlenom poruku:

    “Sistem ne može da kreira novi račun”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    30/86

    30

     Aktor: Zaposleni

    Sistem

    UcitajKurseve(List)listaKurseva

    UcitajPolaznike(List)

    listaPolaznika

    ZapamtiRacun(Racun)

    “Sistem ne moze da kreira novi racun”

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1.  signal UcitajKurseve(List)

    2.  signal UcitajPolaznike(List)

    3. 

    signal   ZapamtiRacun(Racun) .

    DS8 : Dijagram sekvenci slučaja korišćenja – Pretraga računa 

    1.  Zaposleni poziva sistem da nađe račune po zadatoj vrednosti. (APSO)

    2.  Sistem prikazuje zaposlenom nađene račune. (IA)

    3.  Zaposleni poziva sistem da prikaže podatke o izabranom računu. (APSO)

    4.  Sistem prikazuje zaposlenom podatke o izabranom računu. (IA)

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    31/86

    31

     Aktor: Zaposleni

    Sistem

    PretraziRacune(KriterijumPretrage, List)

    listaRacuna

    UcitajPolaznike(List)listaPolaznika

    ucitajRacun(Racun)

    izabraniRacun

     

    Alternativna scenarija

    2.1. Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: “Sistem ne

    može da nađe račune po zadatoj vrednosti”. Prekida se izvršenje scenarija. (IA) 

     Aktor: Zaposleni

    Sistem

    PretraziRacune(KriterijumPretrage, List)

    “Sistem ne moze da nadje racune po zadatoj

    vrednosti”

    UcitajPolaznike(List)

    listaPolaznika

     

    4.1. Ukoliko sistem ne može da nađe podatke o izabranom računu on prikazuje zaposlenom

    poruku: “Sistem ne može da nađe podatke o izabranom računu ”. (IA)

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    32/86

    32

     Aktor: Zaposleni

    Sistem

    PretraziRacune(KriterijumPretrage, List)

    listaRacuna

    UcitajPolaznike(List)listaPolaznika

    ucitajRacun(Racun)

    “Sistem ne moze da nadje podatke oizabranom racunu”

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1.  signal UcitajPolaznike(List)

    2.  signal PretraziRacune(KriterijumPretrage, List)

    3.  signal UcitajRacun(Racun) .

    DS9 : Dijagram sekvenci slučaja korišćenja – Brisanje računa 

    1.  Zaposleni pozivа sistem dа nаđe rаčune po zаdаtoj vrednosti. (APSO) 

    2.  Sistem prikаzuje zaposlenom pronаđene račune. (IA)

    3.  Zaposleni pozivа sistem dа obriše odаbrаni rаčun. (APSO)

    4.  Sistem prikаzuje zaposlenom poruku: “Sistem je obrisao rаčun”. (IA) 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    33/86

    33

     Aktor: Zaposleni

    Sistem

    PretraziRacune(KriterijumPretrage, List)

    listaRacuna

    UcitajPolaznike(List)listaPolaznika

    obrisiRacun(Racun)

    “Sistem je obrisao racun”

     

    Alternаtivnа scenаrijа 

    2.1. Ukoliko sistem ne može dа nаđe rаčune on prikаzuje zaposlenom poruku: “Sistem ne

    može dа nаđe rаčune po zаdаtoj vrednosti”. Prekidа se izvršenje scenаriа. (IA) 

     Aktor: Zaposleni

    Sistem

    PretraziRacune(KriterijumPretrage, List)

    “Sistem ne moze da nadje racune po zadatojvrednosti”

    UcitajPolaznike(List)

    listaPolaznika

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    34/86

    34

    4.1. Ukoliko sistem ne može dа obriše rаčun on prikаzuje zaposlenom poruku: “Sistem ne

    može dа obriše rаčun”. 

     Aktor: Zaposleni

    Sistem

    PretraziRacune(KriterijumPretrage, List)

    listaRacuna

    UcitajPolaznike(List)

    listaPolaznika

    ObrisiRacun(Racun)

    “Sistem ne moze da obrise racun”

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1.  signal UcitajPolaznike(List)

    2.  signal PretraziRacune(KriterijumPretrage, List)

    3.  signal ObrisiRacun(Racun).

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    35/86

    35

    DS10 : Dijagram sekvenci slučaja korišćenja – Izmena računa 

    1.  Zaposleni poziva sistem da nađe račune po zadatim vrednostima. (APSO)

    2. 

    Sistem prikаzu je zaposlenom pronаđene račune.  (IA)

    3.  Zaposleni poziva sistem da prikaže podatke o izabranom računu. (APSO)

    4. 

    Sistem prikazuje zaposlenom podatke o izabranom računu i poruku “Podaci o izabranom

    računu su uspešno pronađeni”. (IA)

    5.  Zaposleni poziva sistem da zapamti podatke o računu. (APSO)

    6. 

    Sistem prikazuje zaposlenom poruku: “Sistem je zapamtio račun.” IA)

     Aktor: Zaposleni

    Sistem

    listaPolaznika

    PretraziRacune(KriterijumPretrage,

    List)

    listaRacuna

    izabraniRacun, “Podaci o izabranom računusu pronađeni”

    zapamtiRacun(Racun)

    “Sistem je zapamtio račun”

    UcitajPolaznike(List)

    ucitajRacun(Racun)

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    36/86

    36

    Alternativna scenarija

    2.1 Ukoliko sistem ne može da nađe račune on prikazuje zaposlenom poruku: „Sistem ne može

    da nađe račune po zadatoj vrednostima“. Prekida se izvršenje scenarija. (IA) 

     Aktor: Zaposleni

    Sistem

    PretraziRacune(KriterijumPretrage, List)

    “Sistem ne moze da nadje racune po zadatojvrednosti”

    UcitajPolaznike(List)

    listaPolaznika

     

    4.1 Ukoliko sistem ne može da nađe račun on prikazuje zaposlenom poruku: „Sistem ne može

    da nađe podatke o izabranom računu“. Prekida se izvšenje scenarija. (IA) 

     Aktor: Zaposleni

    Sistem

    listaRacuna

    UcitajPolaznike(List< Polaznik>)

    listaPolaznika

    ucitajRacun(Racun)

    PretraziRacune(KriterijumPretrage,

    List)

    “Sistem ne može da nađe podatke oizabranom računu”

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    37/86

    37

    6.1 Ukoliko sistem ne može da zapamti podatke o računu on prikazuje zaposlenom poruku:

    „Sistem ne može da zapamti račun“. (IA) 

     Aktor: Zaposleni

    Sistem

    listaPolaznika

    PretraziRacune(KriterijumPretrage,

    List)listaRacuna

    izabraniRacun, “Podaci o izabranom računu

    su pronađeni”

    zapamtiRacun(Racun)

    “Sistem ne može da zapamti račun”

    UcitajPolaznike(List)

    ucitajRacun(Racun)

     

    Sa navedenih sekvencnih dijagrama uočavaju se 4 sistemske operacije:

    1.  signal UcitajPolaznike(List)

    2.  signal PretraziRacune(KriterijumPretrage, List)

    3. 

    signal ucitajRacun(Racun)

    4.  signal zapamtiRacun(Racun).

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    38/86

    38

    DS11 : Dijagram sekvenci slučaja korišćenja – Prijavljivanje zaposlenog

    1.  Zaposleni poziva sistem da pronađe zaposlenog sa zadatim podacima. (APSO)

    2.  Sistem prikazuje poruku “zaposleni + uspešno ste prijavljeni” i početnu formu. (IA) 

    Sistem

     Aktor: Zaposleni

    NadjiZaposlenog(username,password)

    Zaposleni + “uspeno steprijavljeni”

     

    Alternativna scenarija

    2.1.  Ukoliko sistem ne može da nađe zaposlenog prikazuje poruku “Sistem ne može

    da nađe zaposlenog  ”. (IA) 

    Sistem

     Aktor: Zaposleni

    NadjiZaposlenog(username,password)

    “Sistem ne moze da nadjezaposlenog”

     

    Sa navedenih dijagrama sekvenci uočavaju su se sledeće sistemske operacije koje treba

    projektovati:

    1.  signal NadjiZaposlenog(username,password).

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    39/86

    39

    Kao rezultat analize scenarija dobijeno je ukupno 17 sistemskih operacija koje treba projektovati:

    1. 

    Signal ZapamtiPolaznika(Polaznik )

    2. 

    Signal PretraziPolaznike(KriterijumPretrage, List)

    3. 

    Signal UcitajPolaznika(Polaznik) 

    4. 

    Signal ObrisiPolaznika(Polaznik) 5.

     

    Signal   UcitajJezike(List)

    6. 

    Signal   UcitajZaposlene(List)

    7. 

    Signal ZapamtiKurs(Kurs)

    8. 

    Signal UcitajKurs(Kurs) 

    9. 

    Signal PretraziKurseve(KriterijumPretrage, List)

    10. 

    Signal   UcitajKurseve(List)

    11. 

    Signal   UcitajPolaznike(List)

    12. 

    Signal UnosNovogRacuna(Racun)

    13. 

    Signal ZapamtiRacun(Racun) 

    14. 

    Signal PretraziRacune(KriterijumPretrage, List)15.

     

    Signal UcitajRacun(Racun) 

    16. 

    Signal ObrisiRacun(Racun) 

    17. 

    Signal NadjiZaposlenog(username,password)

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    40/86

    40

    2.2.  Ponašanje softtverskog sistema – Definisanje ugovora o sistemskim

    operacijama

    2.2.1. 

    Ugovor UG1: ZapamtiPolaznika

    Operacija: ZapamtiPolaznika(Polaznik ): signal;

    Veza sa SK: SK1

    Preduslovi: Vrednosna i strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena. 

    Postuslovi: Zapamćeni su podaci o polazniku 

    2.2.2.  Ugovor UG2: PretraziPolaznike

    Operacija: PretraziPolaznike(KriterijumPretrage,List): signal; 

    Veza sa SK: SK2,SK3,SK4

    Preduslovi: -

    Postuslovi: -

    2.2.3.  Ugovor UG3: UcitajPolaznika

    Operacija: UcitajPolaznika(Polaznik ): signal;

    Veza sa SK: SK2,SK3

    Preduslovi: -

    Postuslovi: -

    2.2.4. 

    Ugovor UG4: ObrisiPolaznika

    Operacija: ObrisiPolaznika(Polaznik): signal;

    Veza sa SK: SK4

    Preduslovi: Strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena. 

    Postuslovi: Polaznik je obrisan iz sistema.

    2.2.5.  Ugovor UG5: UcitajJezike

    Operacija: UcitajJezike(List): signal;

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    41/86

    41

    Veza sa SK: SK5,SK6

    Preduslovi: -

    Postuslovi: - 

    2.2.6.  Ugovor UG6: UcitajZaposlene

    Operacija: UcitajZaposlene(List): signal;

    Veza sa SK: SK5,SK6

    Preduslovi: -

    Postuslovi: -

    2.2.7. 

    Ugovor UG7: ZapamtiKurs

    Operacija: ZapamtiKurs(Kurs): signal;

    Veza sa SK: SK5

    Preduslovi: Vrednosna i strukturna ograničenja nad objektom K urs moraju biti zadovoljena. 

    Postuslovi: Podaci o kursu su zapamćeni. 

    2.2.8. 

    Ugovor UG8: UcitajKurs

    Operacija: UcitajKurs(Kurs): signal;

    Veza sa SK: SK6

    Preduslovi: -

    Postuslovi: -

    2.2.9. 

    Ugovor UG9: PretraziKurseve

    Operacija: PretraziKurseve(KriterijumPretrage,List): signal; 

    Veza sa SK: SK6

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    42/86

    42

    2.2.10. 

    Ugovor UG10: UcitajKurseve

    Operacija: UcitajKurseve(List): signal;

    Veza sa SK: SK7

    Preduslovi: -

    Postuslovi: -

    2.2.11. Ugovor UG11: UcitajPolaznike

    Operacija: UcitajPolaznike(List): signal;

    Veza sa SK: SK7,SK8,SK9,SK10

    Preduslovi: -

    Postuslovi: -

    2.2.12. 

    Ugovor UG12: UnosNovogRacuna

    Operacija: UnosNovogRacuna(Racun): signal;

    Veza sa SK: SK7

    Preduslovi: Vrednosna i strukturna ograničenja nad objektom Racun moraju biti zadovoljena.  

    Postuslovi:

    Kreiran je novi racun.

    2.2.13. 

    Ugovor UG13: ZapamtiRacun

    Operacija: ZapamtiRacun(Racun): signal;

    Veza sa SK: SK7,SK10

    Preduslovi: Vrednosna i strukturna ograničenja nad  objektom Racun moraju biti zadovoljena.

    Postuslovi: Podaci o racunu su zapamćeni. 

    Izračunata je ukupna vrednost računa. 

    2.2.14. Ugovor UG14: PretraziRacune

    Operacija: PretraziRacune(KriterijumPretrage, List): signal;

    Veza sa SK: SK8, SK9, SK10

    Preduslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    43/86

    43

    Postuslovi: -

    2.2.15. 

    Ugovor UG15: UcitajRacun

    Operacija: UcitajRacun(Racun): signal;

    Veza sa SK: SK8, SK10

    Preduslovi: -

    Postuslovi: -

    2.2.16. Ugovor UG16: ObrisiRacun

    Operacija: ObrisiRacun(Racun): signal;

    Veza sa SK: SK9

    Preduslovi: Strukturno ograničenje nad objektom Racun mora biti zadovoljeno.

    Postuslov: Račun je obrisan iz sistema. 

    2.2.17. 

    Ugovor UG17: NadjiZaposlenog

    Operacija: NadjiZaposlenog(username,password ): signal;

    Veza sa SK: SK11

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    44/86

    44

    2.3. 

    Struktura softverskog sistema – Konceptualni (domenski) model

    ZaposleniRacun

    StavkaRacuna

    KursJezik

    - obradjuje   - je_ obradjen

    1 *

    - sadrzi1

    -je_ sadrzana*

    -se_nalazi 1

    -

    ima *

    - na_ime

    1

    *

    -drzi1

    - odrzavan_od_ strane *

    -u_okviru

    1

    -iz

    *

    - BrojRacuna: Integer

    - Ukup naVrednost:Double

    - ZaposleniID: Integer

    - Ime: String

    - Prezime: String

    - username: String

    - password: String

    - JezikID: Integer

    - Naziv: String

    - KursID: Integer

    - Naziv: String

    - Trajanje: String

    - Cena: Double

    - RB: Integer

    - Datum: Date

    - se_ nalazi

    Polaznik

    - PolaznikID: Integer

    - Ime: String

    - Prezime: String

    - JMBG: String

    - Kontakt: String

    - DatumUpisa: Date

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    45/86

    45

    Kao rezultat analize scenarija SK i pravljenja konceptualnog modela dobija se logička struktura i

    ponašanje softverskog sistema: 

    SOFTVERSKI SISTEM

    STRUKTURA SISTEMA

    PONAŠANJE SISTEMA

    Zaposleni

    Racun

    StavkaRacuna

    KursJezik

    - obradjuje   - je_ obradjen

    1 *

    -sadrzi1

    -je_ sadrzana*

    -se_nalazi 1

    -

    ima *

    - na_ime

    1

    *

    -drzi1

    - odrzavan_od_strane *

    -u_ okviru

    1

    -iz

    *

    - BrojRacuna: Integer

    - UkupnaVrednost:Double

    - ZaposleniID: Integer

    - Ime: String

    - Prezime: String

    - username: String

    - password: String

    - JezikID: Integer

    - Naziv: String

    - KursID: Integer

    - Naziv: String

    - Trajanje: String

    - Cena: Double

    - RB: Integer

    - Datum: Date

    - se_nalazi

    Polaznik

    - PolaznikID: Integer

    - Ime: String

    - Prezime: String

    - JMBG: String

    - Kontakt: String

    - DatumUpisa: Date

    SISTEMSKE OPERACIJE(SO)

    + ZapamtiPolaznika(polaznik: Polaznik): signal

    + PretraziPolaznike(KriterijumPretrage Object, List): signal

    + Uci tajPolaznika(polaznik: Polaznik): s ignal

    + IzmeniPolaznika(polaznik: Polaznik): signal

    + ObrisiPolaznika(polaznik: Polaznik): signal+ UcitajJezike(List): signal

    + UcitajZaposlene(List): signal

    + ZapamtiKurs(kurs: Kurs): signal

    + UcitajKurs(kurs: Kurs): s ignal

    + PretraziKurseve(KriterijumPretrage Object, List): s ignal

    + UcitajKurseve(List): signal

    + ZapamtiRacun(racun: Racun): signal

    + PretraziRacune(KriterijumPretrage Object, List): s ignal

    + UcitajRacun(racun: Racun): signal

    + ObrisiRacun(racun: Racun): signal

    + NadjiZaposlenog(kriterijumPretrage String): signal

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    46/86

    46

    2.4.  Struktura softverskog sistema – Relacioni model

    Na osnovu konceptualnog modela koji je predstavljen dijagramom klasa dobijen je sledeći

    relacioni model:

    Zaposleni(ZaposleniID, Ime, Prezime, username, password);

    Racun(BrojRacuna, UkupnaVrednost, ZaposleniID, PolaznikID);

    StavkaRacuna(BrojRacuna, RB, Datum, KursID);

    Kurs(JezikID, KursID, Naziv, Trajanje, Cena, ZaposleniID);

    Jezik(JezikID, Naziv);

    Polaznik(PolaznikID, Ime, Prezime, JMBG, Kontakt, DatumUpisa);

    Tabela Zaposleni  Prosto vrednosno

    ograničenje 

    Složeno vrednosno

    ograničenje 

    Strukturno

    ograničenje 

    Atributi 

    Ime Tip

    atributa

    Vrednost

    atributa

    Međuzav.

    atributa

     jedne

    tabele

    Međuzav.

    atributa

    više

    tabela

    INSERT /

    UPDATE

    CASCADES

    Racun, Kurs

    DELETE

    RESTRICTED

    Racun, Kurs

    ZaposleniID Integer not null

    Ime String not null

    Prezime String not null

    username String not null

    password String not null

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    47/86

    47

    Tabela Racun  Prosto vrednosno

    ograničenje 

    Složeno vrednosno

    ograničenje 

    Strukturno

    ograničenje 

    Atributi 

    Ime Tip

    atributa

    Vrednost

    atributa

    Međuzav

    . atributa

     jedne

    tabele

    Međuza

    v.

    atributa

    više

    tabela

    INSERT

    RESTRICTED

    Zaposleni,

    Polaznik

    UPDATE

    RESTRICTED

    Zaposleni,

    Polaznik

    CASCADES

    StavkaRacuna

    DELETE

    RESTRICTED

    StavkaRacuna 

    BrojRacuna Integer not null

    UkupnaVrednost Double (default:0)

    ZaposleniID Integer not null

    PolaznikID Integer not null

    Tabela StavkaRacuna  Prosto vrednosno

    ograničenje 

    Složeno vrednosno

    ograničenje 

    Strukturno

    ograničenje 

    Atributi 

    Ime Tip

    atributa

    Vrednost

    atributa

    Međuzav.

    atributa

     jedne tabele

    Međuz

    av.

    atribut

    a više

    tabela

    INSERT

    RESTRICTED

    Racun, Kurs,

    UPDATERESTRICTED

    Racun, Kurs,

    DELETE /

    BrojRacuna Integer not null

    RB Integer not null

    and >0

    Datum Date

    KursID Integer not null

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    48/86

    48

    Tabela Kurs  Prosto vrednosno

    ograničenje 

    Složeno vrednosno

    ograničenje 

    Strukturno

    ograničenje 

    Atributi 

    Ime Tip

    atributa

    Vrednost

    atributa

    Međuzav.

    atributa

     jedne tabele

    Međuzav.

    atributa više

    tabela

    INSERT

    RESTRICTED

    Jezik, Zaposleni

    UPDATE

    CASCADES

    StavkaRacuna RESTRICTED

    Zaposleni, Jezik

    DELETE

    RESTRICTED

    StavkaRacuna 

    KursID Integer not null

    JezikID Integer not null

    Naziv String not null

    Trajanje String not null

    Cena Double >0

    ZaposleniID Integer not null

    Tabela Jezik  Prosto vrednosno

    ograničenje 

    Složeno vrednosno

    ograničenje 

    Strukturno

    ograničenje 

    Atributi 

    Ime Tip

    atributa

    Vrednost

    atributa

    Međuzav.

    atributa

     jedne

    tabele

    Međuzav.

    atributa

    više

    tabela

    INSERT /

    UPDATE

    CASCADES Kurs

    DELETE

    RESTRICTED

    Kurs 

    JezikID Integer not null

    Naziv String not null

    Tabela Polaznik  Prosto vrednosno

    ograničenje 

    Složeno vrednosno

    ograničenje 

    Strukturno

    ograničenje 

    Atributi 

    Ime Tip

    atributa

    Vrednost

    atributa

    Međuzav.

    atributa

     jedne

    tabele

    Međuzav.

    atributa

    više

    tabela

    INSERT/

    UPDATE

    CASCADES

    Racun

    DELETE

    RESTRICTED

    Racun

    PolaznikID Integer not nullIme String not null

    Prezime String not null

    JMBG String not null

    Kontakt String not null

    DatumUpisa Date

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    49/86

    49

    3.  Projektovanje

    Faza projektovanja opisuje fizičku strukturu i ponašanje softverskog sistema (arh itekturu

    softverskog sistema).

    3.1 Arhitektura softverskog sistema

    Arhitektura sistema je tronivojska i sastoji se od sledećih nivoa: 

      korisnički interfejs 

      aplikaciona logika

      skladište podataka 

    Nivo korisničkog interfejsa je na strani klijenta, dok su aplikaciona logika i skladište podataka na

    strani servera.

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    50/86

    50

    3.2. 

    Projektovanje aplikacione logike

    Neophodno je da aplikacioni serveri obezbede servise pomoću kojih će aplikaciona logika

    softverskog sistema biti realizovana. Projektovani aplikacioni server sadrži:

     

    deo za komunikaciju sa klijentom  kontroler aplikacione logike

      deo za komunikaciju sa skladištem podataka (broker baze podataka)

      deo koji sadrži poslovnu logiku . 

    3.2.1 Komunikacija sa klijentima

    Direktna komunikacija sa klijentima obavlja se preko .xhtml stranica na kojima se nalaze

    odgovarajuće forme za pristup sistemu. Ulogu kontrolera korisničkog interfejsa imaju Managed

    Bean-ovi koji komuniciraju sa .xhtml stranicama, odnosno prihvataju zahteve i prosleđuju ih dosistemskih operacija, a zatim nakon izvršenja sistemskih operacija prihvataju odgovor i prikazuju

    ga na .xhtml stranicama.

    U ovom radu korišćeno je jedanaest Managed Bean-ova, koji se koriste na odgovarajućim

    stranicama:

      MbObradaZaposlenog

      MbFilterKurseva

      MbFilterPolaznika

     

    MbFilterRacuna

      MbObradaJezika

      MbObradaKursa

      MbObradaPolaznika

      MbObradaRacuna

      MbPretragaKurseva

      MbPretragaPolaznika

      MbUnosRacuna

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    51/86

    51

    3.2.2 

    Kontroler aplikacione logike

    Kontroler aplikacione logike prihvata zahteve za izvršenje sistemskih operacija i iste prosleđuje

    do konkretne sistemske operacije. Nakon izvršenja sistemske operacije, kontroler prihvata

    odgovor i vraća nazad klijentu.

    Za izvršenje sistemskih operacija zaduženi su Session Bean-ovi , bez posredovanja kontrolera

    aplikacione logike. Menaged Bean-ovi komuniciraju direktno sa Session Bean-ovima, pri čemu

     šalju zahteve i prihvataju odgovore. Na slici je simbolično prikazan Kontroler i on ne postoji u

    arhitekturi kao takav, već Session Bean-ovi izvršavaju njegove funkcije.

    Kako je u fazama prikupljanja zahteva i analize data specifikacija strukture i ponašanja

    softverskog sistema, odnosno specifikacija poslovne logike softverskog sistema, sledeća slika

    daje opis sistema nakon faze projektovanja komunikacije sa klijentima.

    SOFTVERSKI SISTEM

    STRUKTURA SISTEMA

    PONAŠANJESISTEMA

    ZaposleniRacun

    StavkaRacuna

    KursJezik

    -obradjuje   -je_ obradjen

    1 *

    -sadrzi1

    -je_ sadrzana*

    -s e_ nalazi 1

    -

    i ma *

    -na_ime

    1

    *

    -drzi1

    - odrzavan_od_strane *

    -u_okviru

    1

    -iz

    *

    -BrojRacuna:Integer

    -UkupnaVrednost:Double

    -ZaposleniID: Integer

    -Ime:String

    -Prezime:String

    -username: String

    -password:String

    - JezikID:Integer

    - Naziv:St ring

    -KursID:Integer

    -Naziv :String

    -Trajanje:String

    -Cena:Double

    - RB:Integer

    - Datum:Date

    -se_nalazi

    Polaznik

    - PolaznikID:Integer

    - Ime:String

    - Prezime:String

    - JMBG:String

    - Kontakt:String

    - DatumUpisa:Date

    SISTEMSKE OPERACIJE(SO)

    +ZapamtiPolaznika(polaznik:Polaznik): signal

    + PretraziPolaznike(KriterijumPretrageObject, List):signal

    + UcitajPolaznika(polaznik:Polaznik):signal

    + IzmeniPolaznika(polaznik:Polaznik): signal

    +ObrisiPolaznika(polaznik:Polaznik): signal

    + UcitajJezike(List):signal

    + UcitajZaposlene(List):signal

    +ZapamtiKurs(kurs: Kurs):signal

    + UcitajKurs(kurs:Kurs): signal

    + PretraziKurseve(KriterijumPretrageObject,List): signal

    +UcitajKurseve(List): signal

    + ZapamtiRacun(racun:Racun): signal

    + PretraziRacune(KriterijumPretrageObject,List): signal

    + UcitajRacun(racun:Racun): signal

    +ObrisiRacun(racun:R acun):signal

    + NadjiZaposlenog(kriterijumPretrageString): signal

    Kontroler  DB broker

    Aplikaciona logika

    Softverski sistem

    SKLADIŠTE PODATAKA

    Korisnički interfejs

    .xhtml stranice

    Managed Bean

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    52/86

    52

    3.3. 

    Projektovanje ponašanja softverskog sistema – sistemske operacije

    Za svaku sistemsku operaciju treba napraviti konceptualna rešenja koja su direktno povezana sa

    logikom problema. Za svaki od ugovora projektuje se konceptualno rešenje. 

    Ugovor UG1: ZapamtiPolaznika

    Operacija: ZapamtiPolaznika(Polaznik ): signal;

    Veza sa SK: SK1

    Preduslovi: Vrednosna i strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena. 

    Postuslovi: Zapamćeni su podaci o polazniku 

    sbp:SBPolaznikmbop: MBObradaPolaznika

    sacuvaj(polaznik)

    sgnal, polaznik

    em: EntityManager

    find(Polaznik.class, polaznikid)

    signal,polaznik

    merge(Polaznik)

    signal, polaznik,

     

    Ugovor UG2: PretraziPolaznike

    Operacija: PretraziPolaznike(KriterijumPretrage,List): signal; 

    Veza sa SK: SK2,SK3,SK4

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    53/86

    53

    sbp:SBPolaznikmbop: MBFilterPolaznika

    nadjiPolaznike(kriterijum)

    Signal, listaPolaznika

    em: EntityManager

    createQuery(upit, Polaznik.class)

    signal, typedQuery

    listaPolaznika

    tq: TypedQuery

    setParameter(“argString”, kriterijum)

    setParameter(“argInt”, kriterijumInt)

    getResultList

     

    Ugovor UG3: UcitajPolaznika

    Operacija: UcitajPolaznika(Polaznik ): signal;

    Veza sa SK: SK2,SK3

    Preduslovi: -

    Postuslovi: -

    prikaziPolaznika(Polaznik)

    signal, Polaznik

    find(Polaznik.class, polaznikid)

    signal, polaznik

     

    mbop: MBObradaPolaznika sbp:SBPolaznik em: Ent ityManager

     

    Ugovor UG4: ObrisiPolaznika

    Operacija: ObrisiPolaznika(Polaznik): signal;

    Veza sa SK: SK4

    Preduslovi: Strukturna ograničenja nad objektom Polaznik moraju biti zadovoljena.  

    Postuslovi: Polaznik je obrisan iz sistema.

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    54/86

    54

    obrisiPolaznika(Polaznik)

    signal

    merge(polaznik)

    signal, polaznik

    remove(polaznik)

    signal

    mbop: MBObradaPolaznika sbp:SBPolaznik em: Ent ityManager

     

    Ugovor UG5: UcitajJezike

    Operacija: UcitajJezike(List): signal;

    Veza sa SK: SK5,SK6

    Preduslovi: -

    Postuslovi: - 

    sbj : SBJezikmboj:MBObradaJezika

    vratiSveJezike(List)

    signal, listaJezika

    em: EntityManager

    createNamedQuery“Jezik.findAll“,Jezik.class

    signal, listaJezika

     

    Ugovor UG6: UcitajZaposlene

    Operacija: UcitajZaposlene(List): signal;

    Veza sa SK: SK5,SK6

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    55/86

    55

    sbz : SBZaposlenimboz : MBObradaZaposlenog

    vratiSveZaposlene(List)

    signal, listaZaposlenih

    em: EntityManager

    createNamedQuery “Zaposleni .findAll“,Zaposleni.class

    signal, listaZaposlenih

     

    Ugovor UG7: ZapamtiKurs

    Operacija: ZapamtiKurs(Kurs): signal;

    Veza sa SK: SK5

    Preduslovi: Vrednosna i strukturna ograničenja nad objektom Kurs mora ju biti zadovoljena. 

    Postuslovi: Podaci o kursu su zapamćeni. 

    sbk: SBKursmbok: MBObradaKursa

    sacuvaj(kurs)

    sgnal,kurs

    em: EntityManager

    find(Kurs.class, kursid)

    signal,kurs

    merge(kurs)

    signal, kurs,

     

    Ugovor UG8: UcitajKurs

    Operacija: UcitajKurs(Kurs): signal;

    Veza sa SK: SK6

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    56/86

    56

    prikaziKurs(kurs)

    signal, kurs

    find(Kurs.class, kursid)

    signal, kurs

     

    MBObradaKursa sbk: SBKurs em: EntityManager:mbok

     

    Ugovor UG9: PretraziKurseve

    Operacija: PretraziKurseve(KriterijumPretrage,List): signal; 

    Veza sa SK: SK6

    Preduslovi: -

    Postuslovi: -

    sbk: SBKursmbok: MBFilterKurseva

    nadjiKurseve(kriterijum)

    Signal, listaKurseva

    em: EntityManager

    createQuery(upit, Kurs.class)

    signal, typedQuery

    listaKurseva

    tq: TypedQuery

    setParameter(“argString”, kriterijum)

    setParameter(“argInt”, kriterijumInt)

    getResultList

     

    Ugovor UG10: UcitajKurseve

    Operacija: UcitajKurseve(List): signal;

    Veza sa SK: SK7

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    57/86

    57

    sbk : SBKursmbok:   MBObradaKursa

    vratiSveKurseve(List)

    signal, listaKurseva

    em: EntityManager

    createNamedQuery“Kurs.findAll“,Kurs.class

    signal, l istaKurseva

     

    Ugovor UG11: UcitajPolaznike

    Operacija: UcitajPolaznike(List): signal;

    Veza sa SK: SK7,SK8,SK9,SK10

    Preduslovi: -

    Postuslovi: -

    sbp : SBPolaznikmbop: MBObradaPolaznika

    vratiSvePolaznike(List)

    signal, l istaPolaznika

    em: EntityManager

    createNamedQuery“Polaznik.findAll“,Polaznik.class

    signal, l istaPolaznika

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    58/86

    58

    Ugovor UG12: UnosNovogRacuna

    Operacija: UnosNovogRacuna(Racun): signal;

    Veza sa SK: SK7

    Preduslovi: Vrednosna i strukturna ograničenja nad objektom Racun moraju biti zadovoljena.  

    Postuslovi: Kreiran je novi racun.

    sbr: SBRacunmbur: MBUnosRacuna

    sacuvaj(racun)

    em: EntityManager

    find(Zaposleni.class,zaposleniid))

    signal, zaposleni

    find(Polaznik.class,polaznikid)

    signal, polaznik

    persist(racun)

    signal, racunsignal, racun

     

    Ugovor UG13: ZapamtiRacun

    Operacija: ZapamtiRacun(Racun): signal;

    Veza sa SK: SK7,SK10

    Preduslovi: Vrednosna i strukturna ograničenja nad objektom Racun moraju biti zadovoljena.  

    Postuslovi: Podaci o racunu su zapamćeni. 

    Izračunata je ukupna vrednost računa. 

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    59/86

    59

    sbk: SBRacunmbok: MBUnosRacuna

    sacuvaj(Racun)

    Signal,Racun

    em: EntityManager

    find(Racun.class,racunid)

    signal,racun

    merge(racun)

    signal,racun

     

    Ugovor UG14: PretraziRacune

    Operacija: PretraziRacune(KriterijumPretrage, List): signal;

    Veza sa SK: SK8, SK9, SK10

    Preduslovi: -

    Postuslovi: -

    sbr: SBRacunmbor: MBFilterRacuna

    nadjiRacune(kriterijum)

    signal, listaRacuna

    em: EntityManager

    createQuery(upit, Racun.class)

    signal, typedQuery

    listaRacuna

    tq: TypedQuery

    setParameter(“argString”, kriterijum)

    setParameter(“argInt”, kriterijumInt)

    getResultList

     

    Ugovor UG15: UcitajRacun

    Operacija: UcitajRacun(Racun): signal;

    Veza sa SK: SK8, SK10

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    60/86

    60

    sbr: SBRacunmbor: MBObradaRacuna

    prikaziRacun(Racun)

    signal,Racun

    em: EntityManager

    find(Racun.class,racunid)

    signal,racun

     

    Ugovor UG16: ObrisiRacun

    Operacija: ObrisiRacun(Racun): signal;

    Veza sa SK: SK9

    Preduslovi: Strukturno ograničenje nad objektom Racun mora biti zadovoljeno.  

    Postuslov: Račun je obrisan iz sistema.

    sbr: SBRacunmbor: MBObradaRacuna

    obrisiRacun ( racun)

    signal

    em: EntityManager

    merge ( racun)

    signal, racun

    remove( racun )

    signal

     

    Ugovor UG17: NadjiZaposlenog

    Operacija: NadjiZaposlenog(username,password ): signal;

    Veza sa SK: SK11

    Preduslovi: -

    Postuslovi: -

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    61/86

    61

    sbz : SBZaposlenimboz: MBObradaZaposlenog

    pronadjiZaposlenog(zaposleni)

    signal,zaposleni

    em: EntityManager

    find (Zaposleni.class, zaposleniid )

    signal , zaposleni

     

    Sistemske operacije realizovane su u okviru SessionBean klasa koje imaju referencu na

    EntityManager (perzistentni okvir) i pozivanjem njegovih metoda izvršavaju se sve operacije

    nad bazom podataka. Kao što je na prethodnim slikama prikazano, svaki ManagedBean

    komunicira sa jednim ili više SessionBean-ovima, sa svaki SessionBean sa EntityManager -om.

    Ponašanje projektovanog sistema prikazano je na sledećoj slici:

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    62/86

    62

    SBJezik   SBJezikLocal

    SBPolaznik   SBPolaznikLocal

    SBKurs   SBKursLocal

    SBZaposleni   SBZaposleniLocal

    SBRacunLocal

    SBStavkaRacuna SBStavkaRacunaLocal

    Pona šanje sistema

    + vratiListuPolaznika(): List

    + vratiPolaznika(Integer polaznikID): Polaznik

    + sacuvajPolaznika(Polaznik polaznik)

    + obrisiPolaznika(Polaznik polaznik)

    + vratiListuPolaznika(): L ist

    + vratiPolaznika(Integer polaznikID): Polaznik

    + sa cuvajPolaznika(Polaznik polaznik)

    + obrisiPolaznika(Polaznik polaznik)

    + vratiListuJezika(): List

    + V ratiJezik(Integer jezikID): Jezik+ vratiListuJezika(): List

    + V ratiJezik(Integer jezikID): Jezik

    + vratiListuKurseva(): List

    + vratiKurs(Integer kursID): Kurs+ sacuvajKurs(Kurs kurs)

    + vratiListuKurseva(): L ist

    + vratiKurs(Integer kursID): Kurs

    + sacuvajKurs(Kurs kurs)

    + vratiListuZaposlenih(): List

    + vratiZaposlenog(Integer zaposleniID): Zaposleni

    + vratiListuZaposlenih(): L ist

    + vratiZaposlenog(Integer zaposleniID): Zaposleni

    SBRacun

    + vratiListuRacuna(): List

    + vratiRacun(Integer racunID)

    + sacuvajRacun(Racun racun)

    + obrisiRacun(Racun racun)

    + vratiListuRacuna(): List

    + vratiRacun(Integer racunID)

    + sacuvajRacun(Racun racun)

    + obrisiRacun(Racun racun)

    + vratiListuStavki(): List

    + vratiStavku(Integer stavkaID): StavkaRacuna

    + sacuvajStavku(StavkaRacuna stavka)

    + obrisiStavku(StavkaRacuna stavka)

    + vratiListuStavki(): List

    + vratiStavku(Integer stavkaID): StavkaRacuna

    + sacuvajStavku(StavkaRacuna stavka)

    + obrisiStavku(StavkaRacuna stavka)

     

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    63/86

    63

    3.4. 

    Projektvanje strukture softverskog sistema

    Entity klase predstavljaju JPA entitete i generišu se za svaku tabelu iz baze. Svaka klasa mora biti

    označena anotacijom @Entity , mora imati privatna polja atributa, get i set metode za sve

    attribute kao i javni bezparametarski konstruktor.

    @Entity

    @Table(name = "jezik")

    @XmlRootElement

    @NamedQueries({

    @NamedQuery(name = "Jezik.findAll", query = "SELECT j FROM Jezik j"),

    @NamedQuery(name = "Jezik.findByJezikID", query = "SELECT j FROM Jezik j WHERE j.jezikID =

    :jezikID"),

    @NamedQuery(name = "Jezik.findByNaziv", query = "SELECT j FROM Jezik j WHERE j.naziv = :naziv")})

    public class Jezik implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Basic(optional = false)

    @Column(name = "JezikID")

    private Integer jezikID;

    @Size(max = 30)

    @Column(name = "Naziv")

    private String naziv;

    @OneToMany(mappedBy = "jezikID")

    private List kursList;

    public Jezik() {

    }

    public Jezik(Integer jezikID) {

    this.jezikID = jezikID;

    }

    public Integer getJezikID() {

    return jezikID;

    }

    public void setJezikID(Integer jezikID) {

    this.jezikID = jezikID;

    }

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    64/86

    64

    public String getNaziv() {

    return naziv;

    }

    public void setNaziv(String naziv) {

    this.naziv = naziv;

    }

    @XmlTransient

    public List getKursList() {

    return kursList;

    }

    public void setKursList(List kursList) {

    this.kursList = kursList;

    }

    @Override

    public int hashCode() {

    int hash = 0;

    hash += (jezikID != null ? jezikID.hashCode() : 0);

    return hash;

    }

    @Override

    public boolean equals(Object object) {

    // TODO: Warning - this method won't work in the case the id fields are not set

    if (!(object instanceof Jezik)) {

    return false;

    }

    Jezik other = (Jezik) object;

    if ((this.jezikID == null && other.jezikID != null) || (this.jezikID != null &&

    !this.jezikID.equals(other.jezikID))) {

    return false;

    }

    return true;

    }

    @Override

    public String toString() {

    return naziv;

    }

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    65/86

    65

    @Entity

    @Table(name = "kurs")

    @XmlRootElement

    @NamedQueries({

    @NamedQuery(name = "Kurs.findAll", query = "SELECT k FROM Kurs k"),

    @NamedQuery(name = "Kurs.findByKursID", query = "SELECT k FROM Kurs k WHERE k.kursID =

    :kursID"),

    @NamedQuery(name = "Kurs.findByNaziv", query = "SELECT k FROM Kurs k WHERE k.naziv = :naziv"),

    @NamedQuery(name = "Kurs.findByTrajanje", query = "SELECT k FROM Kurs k WHERE k.trajanje =

    :trajanje"),

    @NamedQuery(name = "Kurs.findByCena", query = "SELECT k FROM Kurs k WHERE k.cena = :cena")})

    public class Kurs implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Basic(optional = false)

    @Column(name = "KursID")

    private Integer kursID;

    @Size(max = 50)

    @Column(name = "Naziv")

    private String naziv;

    @Size(max = 50)

    @Column(name = "Trajanje")

    private String trajanje;

    // @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these

    annotations to enforce field validation

    @Column(name = "Cena")

    private Double cena;

    @OneToMany(mappedBy = "kursID")

    private List stavkaracunaList;

    @JoinColumn(name = "JezikID", referencedColumnName = "JezikID")

    @ManyToOne

    private Jezik jezikID;

    @JoinColumn(name = "ZaposleniID", referencedColumnName = "ZaposleniID")

    @ManyToOne

    private Zaposleni zaposleniID;

    public Kurs() {

    }

    public Kurs(Integer kursID) {

    this.kursID = kursID;

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    66/86

    66

    }

    public Integer getKursID() {

    return kursID;

    }

    public void setKursID(Integer kursID) {

    this.kursID = kursID;

    }

    public String getNaziv() {

    return naziv;

    }

    public void setNaziv(String naziv) {

    this.naziv = naziv;

    }

    public String getTrajanje() {

    return trajanje;

    }

    public void setTrajanje(String trajanje) {

    this.trajanje = trajanje;

    }

    public Double getCena() {

    return cena;

    }

    public void setCena(Double cena) {

    this.cena = cena;

    }

    @XmlTransient

    public List getStavkaracunaList() {

    return stavkaracunaList;

    }

    public void setStavkaracunaList(List stavkaracunaList) {

    this.stavkaracunaList = stavkaracunaList;

    }

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    67/86

    67

    public Jezik getJezikID() {

    return jezikID;

    }

    public void setJezikID(Jezik jezikID) {

    this.jezikID = jezikID;

    }

    public Zaposleni getZaposleniID() {

    return zaposleniID;

    }

    public void setZaposleniID(Zaposleni zaposleniID) {

    this.zaposleniID = zaposleniID;

    }

    @Override

    public int hashCode() {

    int hash = 0;

    hash += (kursID != null ? kursID.hashCode() : 0);

    return hash;

    }

    @Override

    public boolean equals(Object object) {

    // TODO: Warning - this method won't work in the case the id fields are not set

    if (!(object instanceof Kurs)) {

    return false;

    }

    Kurs other = (Kurs) object;

    if ((this.kursID == null && other.kursID != null) || (this.kursID != null &&

    !this.kursID.equals(other.kursID))) {

    return false;

    }

    return true;

    }

    @Override

    public String toString() {

    return "naziv";

    }

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    68/86

    68

    @Entity

    @Table(name = "polaznik")

    @XmlRootElement

    @NamedQueries({

    @NamedQuery(name = "Polaznik.findAll", query = "SELECT p FROM Polaznik p"),

    @NamedQuery(name = "Polaznik.findByPolaznikID", query = "SELECT p FROM Polaznik p WHERE

    p.polaznikID = :polaznikID"),

    @NamedQuery(name = "Polaznik.findByIme", query = "SELECT p FROM Polaznik p WHERE p.ime =

    :ime"),

    @NamedQuery(name = "Polaznik.findByPrezime", query = "SELECT p FROM Polaznik p WHERE

    p.prezime = :prezime"),

    @NamedQuery(name = "Polaznik.findByJmbg", query = "SELECT p FROM Polaznik p WHERE p.jmbg =

    :jmbg"),

    @NamedQuery(name = "Polaznik.findByKontakt", query = "SELECT p FROM Polaznik p WHERE

    p.kontakt = :kontakt"),

    @NamedQuery(name = "Polaznik.findByDatumUpisa", query = "SELECT p FROM Polaznik p WHERE

    p.datumUpisa = :datumUpisa")})

    public class Polaznik implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Basic(optional = false)

    @Column(name = "PolaznikID")

    private Integer polaznikID;

    @Size(max = 50)

    @Column(name = "Ime")

    private String ime;

    @Size(max = 50)

    @Column(name = "Prezime")

    private String prezime;

    @Size(max = 50)

    @Column(name = "JMBG")

    private String jmbg;

    @Size(max = 50)

    @Column(name = "Kontakt")

    private String kontakt;

    @Column(name = "DatumUpisa")

    @Temporal(TemporalType.DATE)

    private Date datumUpisa;

    @OneToMany(mappedBy = "polaznikID")

    private List racunList;

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    69/86

    69

    public Polaznik() {

    }

    public Polaznik(Integer polaznikID) {

    this.polaznikID = polaznikID;

    }

    public Integer getPolaznikID() {

    return polaznikID;

    }

    public void setPolaznikID(Integer polaznikID) {

    this.polaznikID = polaznikID;

    }

    public String getIme() {

    return ime;

    }

    public void setIme(String ime) {

    this.ime = ime;

    }

    public String getPrezime() {

    return prezime;

    }

    public void setPrezime(String prezime) {

    this.prezime = prezime;

    }

    public String getJmbg() {

    return jmbg;

    }

    public void setJmbg(String jmbg) {

    this.jmbg = jmbg;

    }

    public String getKontakt() {

    return kontakt;

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    70/86

    70

    }

    public void setKontakt(String kontakt) {

    this.kontakt = kontakt;

    }

    public Date getDatumUpisa() {

    return datumUpisa;

    }

    public void setDatumUpisa(Date datumUpisa) {

    this.datumUpisa = datumUpisa;

    }

    @XmlTransient

    public List getRacunList() {

    return racunList;

    }

    public void setRacunList(List racunList) {

    this.racunList = racunList;

    }

    @Override

    public int hashCode() {

    int hash = 0;

    hash += (polaznikID != null ? polaznikID.hashCode() : 0);

    return hash;

    }

    @Override

    public boolean equals(Object object) {

    if (!(object instanceof Polaznik)) {

    return false;

    }

    Polaznik other = (Polaznik) object;

    if ((this.polaznikID == null && other.polaznikID != null) || (this.polaznikID != null &&

    !this.polaznikID.equals(other.polaznikID))) {

    return false;

    }

    return true;

    }

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    71/86

    71

    @Override

    public String toString() {

    return ime + " " + prezime;

    }

    @Entity

    @Table(name = "racun")

    @XmlRootElement

    @NamedQueries({

    @NamedQuery(name = "Racun.findAll", query = "SELECT r FROM Racun r"),

    @NamedQuery(name = "Racun.findByBrojRacuna", query = "SELECT r FROM Racun r WHERE

    r.brojRacuna = :brojRacuna"),

    @NamedQuery(name = "Racun.findByUkupnaVrednost", query = "SELECT r FROM Racun r WHERE

    r.ukupnaVrednost = :ukupnaVrednost"),

    @NamedQuery(name = "Racun.findByDatumKreiranja", query = "SELECT r FROM Racun r WHERE

    r.datumKreiranja = :datumKreiranja")})

    public class Racun implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Basic(optional = false)

    @Column(name = "BrojRacuna")

    private Integer brojRacuna;

    // @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these

    annotations to enforce field validation

    @Column(name = "UkupnaVrednost")

    private Double ukupnaVrednost;

    @Column(name = "DatumKreiranja")

    @Temporal(TemporalType.DATE)

    private Date datumKreiranja;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "racun")

    private List stavkaracunaList;

    @JoinColumn(name = "PolaznikID", referencedColumnName = "PolaznikID")

    @ManyToOne

    private Polaznik polaznikID;

    @JoinColumn(name = "ZaposleniID", referencedColumnName = "ZaposleniID")

    @ManyToOne

    private Zaposleni zaposleniID;

    public Racun() {

    }

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    72/86

    72

    public Racun(Integer brojRacuna) {

    this.brojRacuna = brojRacuna;

    }

    public Integer getBrojRacuna() {

    return brojRacuna;

    }

    public void setBrojRacuna(Integer brojRacuna) {

    this.brojRacuna = brojRacuna;

    }

    public Double getUkupnaVrednost() {

    return ukupnaVrednost;

    }

    public void setUkupnaVrednost(Double ukupnaVrednost) {

    this.ukupnaVrednost = ukupnaVrednost;

    }

    public Date getDatumKreiranja() {

    return datumKreiranja;

    }

    public void setDatumKreiranja(Date datumKreiranja) {

    this.datumKreiranja = datumKreiranja;

    }

    @XmlTransient

    public List getStavkaracunaList() {

    return stavkaracunaList;

    }

    public void setStavkaracunaList(List stavkaracunaList) {

    this.stavkaracunaList = stavkaracunaList;

    }

    public Polaznik getPolaznikID() {

    return polaznikID;

    }

  • 8/18/2019 Web Aplikacija - Skola Stranih Jezika

    73/86

    73

    public void setPolaznikID(Polaznik polaznikID) {

    this.polaznikID = polaznikID;

    }

    public Zaposleni getZaposleniID() {

    return zaposleniID;

    }

    public void setZaposleniID(Zaposleni zaposleniID) {

    this.zaposleniID = zaposleniID;

    }

    @Override

    public int hashCode() {

    int hash = 0;

    hash += (brojRacuna != null ? brojRacuna.hashCode() : 0);

    return hash;

    }

    @Override

    public boolean equals(Object object) {

    // TODO: Warning - this method won't work in the case the id fields are not set

    if (!(object instanceof Racun)) {

    return false;

    }

    Racun other = (Racun) object;

    if ((this.brojRacuna == null && other.brojRacuna != null) || (this.brojRacuna != null &&

    !th