SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
Modelovanje ponašanja korišćenjem UML
dijagrama interakcije
Analiza i specifikacija informacionih sistema


                  dr Zoran Jeremić
                 zoran.jeremic@gmail.com




                                                1
Sadržaj


 Uvod
 Sekvencijalni dijagrami
 Kolaborativni dijagrami
 Konstrukcije toka
 Modularnost




                            2
Proces razvoja sistema

      Faza                     Aktivnost                          Izlaz
                                                             Biznis
Započinjanje     Utvrđivanje poslovnih potreba
                                                             dokumenta
                 Intervjuisanje stejkholdera, istraživanje   Organizovana
Analiza          sistemskog okruženja                        dokumentacija
Dizajn i         Analiza inženjerskih aspekata sistema,      Logički model
specifikacija    definisanje koncepata sistema               sistema
                 Programiranje, testiranje jedinica,         Proverljiv
Implementacija   integrisanje, dokumentovanje                sistem
                                                             Resultati
Testiranje &     Integrisanje svih komponenti, verifikacija, testiranja,
Integracija      validacija, instalacija, obuka              funkcionalan
                                                             sistem
                 Popravljanje bagova, modifikacije,
Održavanje       adaptacija
                                                             Verzije sistema

                                                                             3
Slanje poruka


 Kada jedan objekat šalje poruku drugom objektu, on
  poziva operaciju u pozvanom objektu.




                                                       4
Zadatak modela interakcije


 Osnovni zadatak modela interakcije je definisanje
  najpogodnijeg načina komunikacije između objekata da
  bi se podržao svaki zahtev posebno.
 Interakcija sadrži skup parcijalno uređenih poruka gde
  svaka poruka specificira jednu komunikaciju (signal koji
  treba poslati ili operacija koju treba pozvati).




                                                             5
Zašto modelovati ponašanje?




 Kako koristimo interfejs SMS Servera? Koji je redosled
  izvršenja operacija?
    sendMessage, getStatus, Resend?
    getStatus, sendMessage, checkForMessages?
 Kada koristimo operaciju resend?


                                                           6
Modelovanje ponašanja


Redosled akcija           Preduslovi                  Efekti
• Kako se kreira       • Kada se izvršavaju    • Koji je rezultat
  redosled operacija     operacije               operacija
• Putanje izvršenja:   • Kako rezultat         • Kako operacije
    – Sekvencijalne      operacija utiče na      menjaju stanje
    – Paralelne          izvršenje               sistema
    – Petlje


 Send message          [if getStatus == err]

                                                      Resend
                             Resend
  Get Status                                             Adds a new msg

                                                   Message queue
                                                                      7
Vrste dijagrama interakcije


 Postoje dva tipa dijagrama interakcije:
    Dijagram sekvence:
      • Naglašava redosled (sekvencu) ili konkurentnost interakcije
    Dijagram kolaboracije:
      • Naglašava interakciju objekata




                                                                      8
Sadržaj


 Uvod
 Sekvencijalni dijagrami
 Kolaborativni dijagrami
 Konstrukcije toka
 Modularnost




                            9
Sekvencijalni dijagrami u analizi i dizajnu


 Sekvencijalni dijagrami u toku analize se razlikuju od
  sekvencijalnih dijagrama modelovanih u fazi dizajna u
  sledećem:
    Analitički dijagrami sekvence normalno ne sadrže projektne
     objekte niti specificiraju detalje signature poruke.




                                                                  10
Sekvencijalni dijagrami


 Sekvencijalni dijagrami prikazuju interakciju između
  objekata uređenih u vremensku sekvencu.
 Najopštija primena sekvencijalnih dijagrama je
  predstavljanje detaljne interakcije objekata koje se
  pojavljuju u jednom slučaju upotrebe ili jednoj operaciji.




                                                               11
Smešan primer iz stvarnog života




                                   12
Smešan primer: sekvencijalni dijagrami




                                         13
Smešan primer: sekvencijalni dijagrami




                                         14
Smešan primer: dijagram kolaboracije




                                       15
Kreiranje sekvencijalnog dijagrama


 Sekvencijalni dijagrami predstavljaju ponašanje slučaja
  upotrebe koristeći kao osnovu klase.
              Use Case 1
                            Class C
    Class A
                                                     Use Case 3
                    Use Case 2
                                           Class D
                 Class B




      Sekvenca =           Objekti    +   poruke

                                                             16
Osnovni elementi sekvencijalnog dijagrama


 učesnik: objekat ili entitet koji učestvuje u
  sekvencijalnom dijagramu
      Sekvencijalni dijagram započinje neprikačenom strelicom “found
       message"


 poruka: komunikacija između objekata učesnika


 Ose u sekvencijalnom dijagramu:
      horizontalna: koji objekat/učesnik vrši aktivnost
      vertikalna: vreme (odozgo na dole)



17
Predstavljanje objekata

 Kvadrat sa tipom objekta, kome opciono može prethoditi
  ime objekta i dvotačka
      Pišite ime objekta ako doprinosi pojašnjenju dijagrama
      Linija života objekta predstavlja se isprekidanom vertikalnom
       linijom.




18
Poruke između objekata

 poruka (poziv metode) predstavlja se horizontalnom linijom prema
  drugom objektu
      Pišite ime poruke i argument iznad strelice




      Isprekidana strelica nazad označava povratnu poruku
      Različiti vrhovi strelica se koriste za normalne i konkurentne (asinhrone)
       metode




19
Različite vrste poruka

                         Sinhrona poruka izaziva da pozvana
                         operacija suspenduje izvršavanje dok joj
Sinhrona poruka          se fokus kontrole ne vrati.


                         Asinhrona poruka ne izaziva prekid
                         izvršenja dok se čeka na povratak. Kada
                         se pošalje asinhrona poruka, operacije u
 Asinhrona poruka        oba objekta mogu da vrše obradu
                         istovremeno.




 Povratna poruka

                                                                    20
Sinhrone i asinhrone poruke

         Nested Flow                               Asynchronous Flow

   manager        sensor           eye            sensor     manager          alarm


        check                                          unknown

                           check                                       ring




        operate                                        log




                                         Primer                                       Primer



                                                                                        21
Život objekata

• Kreiranje: strelica sa
  'new' iznad nje
   – Objekat kreiran nakon
     početka scenarija se
     nalazi niže
• Brisanje: X na dnu
  linije života objekta
   – Java ne briše
     eksplicitno objekte već
     koristi garbage
     collector

                               22
Prikazivanje poziva metoda


 aktivacija: pravougaonik iznad linije života objekta; crta
  se kada se metoda objekta izvršava ili je u steku
      Objekat izvršava svoj kod, ili je u steku i čeka drugu metodu da
       se završi
      Ugnježdavanjem se prikazuje rekurzija

                                       Activation




                                                    Nesting




23
Sekvencijalni dijagrami


                                                                                     objekti
             sd Product Buying


    Ime
dijagrama                              p : Product             : ShooppingCart
               customer
                          display()
                                                                                 poruka
                          getPrice()

aktivacija                                       addProduct (p)
  (fokus
                                                 checkout ()
kontrole)

   Linija
   života
                                                                                               24
Kontrola objekata


                          obj1 : Class1             obj2 : Class2
      user
              operate()                                                         Kreiranje
                                                                                objekata
                                           do (…)

                                                               create (…)
                                                                            : Class3
   Povratna
    poruka

                                   foo()
     Poruke
   samom sebi                                               Destrukcije
                                                             objekata

                                                                                            25
Odgovarajući dijagram klasa




    Gde god se razmenjuju
    poruke između instanci        Zavisnost se može
    klasa, postoji i zavisnost    zameniti
    između tih klasa              asocijacijama,
                                  agregacijama i
                                  slično.




                                 Primer
                                                 26
Sekvence i slučajevi upotrebe

                           p : Product                : ShooppingCart
   customer
              display()

              getPrice()

                                     addProduct (p)

                                     checkout ()
                                                              create (…)
                                                                             : Order




                           Vidljivi deo                                    Skriveni deo

                                                                                          27
Atributi poruke

[sequence-expression]
[return-value :=] [message-name] [(argument-list)]


              C3.1: res := getLocation (fig)


             Broj sekvence
                              Ime poruke     Lista argumenata
                         Povratna vrednost




                                                                28
Sadržaj


 Uvod
 Sekvencijalni dijagrami
 Kolaborativni dijagrami
 Konstrukcije toka
 Modularnost




                            29
Kolaborativni dijagrami


 Služe za prikaz složenijih interakcija između objekata i
  njihove međusobne povezanosti.
 Fokusira se na kolaboracionoj strukturi i organizaciji
  između objekata.
 Modeluje link između objekata
 Sastoji se od objekata, linkova, poruka




                                                             30
Kolaborativni dijagram




                 1: odlazak                                    2: biras model
                                            prodavnica
                                                                                model


              6: kupovina                                    4: vraca model
    : kupac
                              5: vrati cipele
                                                       3: biras broj




                                                broj




                                                                                        31
Kolaborativni dijagram




                         32
Sadržaj


 Uvod
 Sekvencijalni dijagrami
 Kolaborativni dijagrami
 Konstrukcije toka
 Modularnost




                            33
Konstrukcije toka



      If Loop
    ElseRepeat
     Jump
   Kada kreiramo scenario, koje alternative su nam
   potrebne?
                                                     34
Opcije


         msg : Message             : Database             Fragment

              opt

                [msg.status=confirmed]
                                                          Uslov
                    archive(msg)




              Do something...                   Koristi se za
                                                modelovanje
                                                jednostavnih opcionih
                                                blokova. Ima jedan
                                                operand i nema “else”
                                                opciju.                 35
Alternative

             msg : Message             : Database      : Admin


                  alt

                 [msg.status=confirmed]
                                                    Alternativa
                          archive(msg)              Grupa fragmenta
Uslov
                  [msg.status=error]
                           notify(msg.getID())




                    [else]
                        wait()
                                                     Regioni izvršenja. Najviše
 Else
                                                     jedan će se izvršiti.
 uslov
 (opcioni)

                                                                            36
Petlja


             : OS                    : Folder                    : File



             loop

               [for each Folder]
Fragment                 Display()
petlje
                                       loop
                                          [for each File]
                                                     Display()
Uslov


Ugnježdeni
fragment
petlje
                                                                          37
Prekidi (break)

     : User                              : User Manager                    : Policy


           isLooged = login(name,pass)




  break                                                             Ukoliko je uslov
                                                                    ispunjen, fragment
   [¬isLooged]
                     addBadLogin(name)                              prekida se izvršava, a
                                                                    ostatak sekvence se
                                                                    ignoriše.
                       Do something…


                                                   Do something …




                                                                                        38
Primeri definisanja uslova


 [for each Object]
 [5]
 [i=1..5]
 [status = okay]
 Nepostojanje uslova znači beskonačnu petlju




                                                39
Sadržaj


 Uvod
 Sekvencijalni dijagrami
 Kolaborativni dijagrami
 Konstrukcije toka
 Modularnost




                            40
MODULARNOST
  Potrebno je pronaći načine za kreiranje
  modularnih scenarija
                                            41
Referenciranje dijagrama


    : User                          : User Manager                 : Policy


         login(name,pass)    ref
                              Login Handling(user,pass) :
                                        bool

                                                                Referenca
                    Do something…
                                                                Gate
                                               Do something …




                                                                              42
Referenciranje dijagrama

             sd Login Handling
Ime
dijagrama
                            : User Manager            : UserAccount

                                 loop
            login(name,pass)
Input                              [for each UserAccount]
poruka                                  cName -= getUseNamer()




                                   opt
Output
poruka                              [cName = name]
                                        isInSystem(true)
                     true




                    false


                                                                      43
Primer: Funkcionisanje bankomata


•   Korisnik unosi karticu u ATM
•   ATM zahteva PIN
•   Korisnik unosi PIN
•   Uneti PIN proverava sistem
    banke
•   Sistem vraća poruku o
    validnosti ATM sistemu
•   ATM nudi korisniku opcije
•   Korisnik bira podizanje
    novca
•   ATM zahteva unos iznosa

                                       44
Primer: Logon scenario

• Klijent zahteva Logon (requestLogon()) sa
  SecurityLogon interfejsa koji zatim prikazuje
  Logon ekran (displayLogonScreen())
• Klijent unosi name, pass u LogonScreen-u
• Izvršava se petlja pod sledećim uslovom
  [while valid==false]:
     Interfejs SecurityLogon šalje na proveru user i pass
     (isValid(name, pass)) ka bazi account-a
     (AccountDB)
     AccountDB proverava da li naziv postoji u bazi
     (isInDatabase(name) u Sistemu (System)
     Sistem vraća tip korisnika (userType)
     AccountDB vraća info o validnosti (valid)
     Interfejs SecurityLogon prikazuje poruku o grešci
     (displayErrorMessage())
     Ponovo otvara tj. prikazuje Logon ekran
     (displayLogonScreen())
• SecurityLogon proverava uslov:
     Ukoliko je [userType==admin] onda prikazuje Admin
     (displayAdmin())
     Ukoliko je [userType==user] onda prikazuje user-a
     (displayUser())



                                                            45
Zadatak: sportska kladionica


 Nacrtati UML sekvencijalni i kolaborativni dijagram za
  slučaj upotrebe popunjavanje tiketa za sportsko klađenje
  koji popunjava radnik sportske kladionice. Bitni koncepti
  koje je potrebno uzeti u obzir su tip klađenja i kvota.




                                                          46
Rešenje - sekvencijalni dijagram




                                   47
Rešenje kolaborativni dijagram




                                 48
Primer: Slučaj upotrebe „Upis godine“ u IS studentske
službe

 Učesnik u ovom slučaju upotrebe je radnik studentske službe koji pokreće
  formu IS (klasa Forma) kako bi izvršio upis određenog studenta u narednu
  godinu. Od radnika se traži da unese broj indeksa za studenta koga želi da
  upiše u narednu godinu. Nakon unosa broja indeksa, Sistem vrši proveru da
  li postoji student u bazi podataka. Ukoliko student ne postoji u bazi
  podataka, radniku se prosleđuje poruka o grešci. Ukoliko student postoji u
  bazi, Sistem traži u bazi podataka podatke o položenim ispitima za datog
  studenta, nakon čega vrši proveru broja nepoloženih ispita. Ukoliko je broj
  nepoloženih ispita veći od 2, sistem vraća poruku korisniku o nepostojanju
  uslova za upis naredne godine. Ukoliko broj nepoloženih ispita nije veći od
  2, Sistem upisuje studenta u narednu godinu u bazi podataka, a korisniku
  se vraća poruka o tome. Osim toga, ukoliko je student položio sve ispite pre
  01.09. u bazu podataka student se automatski upisuje na budžet, a radniku
  se šalje potvrda o tome.
       Napraviti dijagram sekvence za navedeni primer
       Napraviti dijagram kolaboracije (dijagram komunikacije)

                                                                            49
50
51

Weitere ähnliche Inhalte

Ähnlich wie T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija

T 3.3 design paterni (a)
 T 3.3 design paterni (a) T 3.3 design paterni (a)
T 3.3 design paterni (a)Zoran Jeremic
 
VET4SBO Level 3 module 3 - unit 2 - v09 srb
VET4SBO Level 3   module 3 - unit 2 - v09 srbVET4SBO Level 3   module 3 - unit 2 - v09 srb
VET4SBO Level 3 module 3 - unit 2 - v09 srbKarel Van Isacker
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkSaša Stamenković
 
UPRO01 - Modeliranje poslovnih procesa
UPRO01 -  Modeliranje poslovnih procesaUPRO01 -  Modeliranje poslovnih procesa
UPRO01 - Modeliranje poslovnih procesaMilan Zdravković
 
Primjena veb tehnologija u geografskim informacionim sistemima
Primjena veb tehnologija u geografskim informacionim sistemimaPrimjena veb tehnologija u geografskim informacionim sistemima
Primjena veb tehnologija u geografskim informacionim sistemimachiwchy
 
T 4 testiranje softvera i upravljanje kvalitetom
 T 4 testiranje softvera i upravljanje kvalitetom T 4 testiranje softvera i upravljanje kvalitetom
T 4 testiranje softvera i upravljanje kvalitetomZoran Jeremic
 

Ähnlich wie T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija (7)

T 3.3 design paterni (a)
 T 3.3 design paterni (a) T 3.3 design paterni (a)
T 3.3 design paterni (a)
 
VET4SBO Level 3 module 3 - unit 2 - v09 srb
VET4SBO Level 3   module 3 - unit 2 - v09 srbVET4SBO Level 3   module 3 - unit 2 - v09 srb
VET4SBO Level 3 module 3 - unit 2 - v09 srb
 
Napredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend FrameworkNapredne tehnike razvoja web aplikacija - Zend Framework
Napredne tehnike razvoja web aplikacija - Zend Framework
 
Modeli1
Modeli1Modeli1
Modeli1
 
UPRO01 - Modeliranje poslovnih procesa
UPRO01 -  Modeliranje poslovnih procesaUPRO01 -  Modeliranje poslovnih procesa
UPRO01 - Modeliranje poslovnih procesa
 
Primjena veb tehnologija u geografskim informacionim sistemima
Primjena veb tehnologija u geografskim informacionim sistemimaPrimjena veb tehnologija u geografskim informacionim sistemima
Primjena veb tehnologija u geografskim informacionim sistemima
 
T 4 testiranje softvera i upravljanje kvalitetom
 T 4 testiranje softvera i upravljanje kvalitetom T 4 testiranje softvera i upravljanje kvalitetom
T 4 testiranje softvera i upravljanje kvalitetom
 

Mehr von Zoran Jeremic

Consuming RESTful Web services in PHP
Consuming RESTful Web services in PHPConsuming RESTful Web services in PHP
Consuming RESTful Web services in PHPZoran Jeremic
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHPZoran Jeremic
 
T 3.8 design paterni (c)
 T 3.8 design paterni (c) T 3.8 design paterni (c)
T 3.8 design paterni (c)Zoran Jeremic
 
T 3.6 design paterni (b)
 T 3.6 design paterni (b) T 3.6 design paterni (b)
T 3.6 design paterni (b)Zoran Jeremic
 
T 3.1 definisanje zahteva koriscenjem use case dijagrama
 T 3.1 definisanje zahteva koriscenjem use case dijagrama T 3.1 definisanje zahteva koriscenjem use case dijagrama
T 3.1 definisanje zahteva koriscenjem use case dijagramaZoran Jeremic
 
T 3 uvod u modelovanje koriscenjem uml-a
 T 3 uvod u modelovanje koriscenjem uml-a T 3 uvod u modelovanje koriscenjem uml-a
T 3 uvod u modelovanje koriscenjem uml-aZoran Jeremic
 
T 2 zivotni ciklus i metodologije razvoja softvera
 T 2 zivotni ciklus i metodologije razvoja softvera T 2 zivotni ciklus i metodologije razvoja softvera
T 2 zivotni ciklus i metodologije razvoja softveraZoran Jeremic
 
T 1 uvod u softversko inzenjerstvo
 T 1 uvod u softversko inzenjerstvo T 1 uvod u softversko inzenjerstvo
T 1 uvod u softversko inzenjerstvoZoran Jeremic
 
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITSSynergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITSZoran Jeremic
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsZoran Jeremic
 
Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...Zoran Jeremic
 
Semantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software PatternsSemantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software PatternsZoran Jeremic
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsZoran Jeremic
 
Project-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software PatternsProject-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software PatternsZoran Jeremic
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsZoran Jeremic
 

Mehr von Zoran Jeremic (16)

Consuming RESTful Web services in PHP
Consuming RESTful Web services in PHPConsuming RESTful Web services in PHP
Consuming RESTful Web services in PHP
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
 
T 3.8 design paterni (c)
 T 3.8 design paterni (c) T 3.8 design paterni (c)
T 3.8 design paterni (c)
 
T 3.6 design paterni (b)
 T 3.6 design paterni (b) T 3.6 design paterni (b)
T 3.6 design paterni (b)
 
T 3.1 definisanje zahteva koriscenjem use case dijagrama
 T 3.1 definisanje zahteva koriscenjem use case dijagrama T 3.1 definisanje zahteva koriscenjem use case dijagrama
T 3.1 definisanje zahteva koriscenjem use case dijagrama
 
T 3 uvod u modelovanje koriscenjem uml-a
 T 3 uvod u modelovanje koriscenjem uml-a T 3 uvod u modelovanje koriscenjem uml-a
T 3 uvod u modelovanje koriscenjem uml-a
 
T 2 zivotni ciklus i metodologije razvoja softvera
 T 2 zivotni ciklus i metodologije razvoja softvera T 2 zivotni ciklus i metodologije razvoja softvera
T 2 zivotni ciklus i metodologije razvoja softvera
 
T 1 uvod u softversko inzenjerstvo
 T 1 uvod u softversko inzenjerstvo T 1 uvod u softversko inzenjerstvo
T 1 uvod u softversko inzenjerstvo
 
PhD Dissertation
PhD DissertationPhD Dissertation
PhD Dissertation
 
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITSSynergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
Synergy of Performance-Based Model and Cognitive Trait Model in DP-ITS
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software Patterns
 
Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...Project-based Collaborative Learning Environment with Context-aware Education...
Project-based Collaborative Learning Environment with Context-aware Education...
 
Semantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software PatternsSemantically-enabled Project-based Collaborative Learning of Software Patterns
Semantically-enabled Project-based Collaborative Learning of Software Patterns
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software Patterns
 
Project-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software PatternsProject-based Collaborative Learning of Software Patterns
Project-based Collaborative Learning of Software Patterns
 
A Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software PatternsA Semantic-rich Framework for Learning Software Patterns
A Semantic-rich Framework for Learning Software Patterns
 

Kürzlich hochgeladen (6)

OIR11-L1.pptx
OIR11-L1.pptxOIR11-L1.pptx
OIR11-L1.pptx
 
OIR11-L4.pptx
OIR11-L4.pptxOIR11-L4.pptx
OIR11-L4.pptx
 
OIR11-L3.pptx
OIR11-L3.pptxOIR11-L3.pptx
OIR11-L3.pptx
 
OIR-V8.pptx
OIR-V8.pptxOIR-V8.pptx
OIR-V8.pptx
 
OIR11-L2.pptx
OIR11-L2.pptxOIR11-L2.pptx
OIR11-L2.pptx
 
OIR-V9.pptx
OIR-V9.pptxOIR-V9.pptx
OIR-V9.pptx
 

T 3.4 modelovanje ponasanja koriscenjem uml dijagrama interakcija

  • 1. Modelovanje ponašanja korišćenjem UML dijagrama interakcije Analiza i specifikacija informacionih sistema dr Zoran Jeremić zoran.jeremic@gmail.com 1
  • 2. Sadržaj  Uvod  Sekvencijalni dijagrami  Kolaborativni dijagrami  Konstrukcije toka  Modularnost 2
  • 3. Proces razvoja sistema Faza Aktivnost Izlaz Biznis Započinjanje Utvrđivanje poslovnih potreba dokumenta Intervjuisanje stejkholdera, istraživanje Organizovana Analiza sistemskog okruženja dokumentacija Dizajn i Analiza inženjerskih aspekata sistema, Logički model specifikacija definisanje koncepata sistema sistema Programiranje, testiranje jedinica, Proverljiv Implementacija integrisanje, dokumentovanje sistem Resultati Testiranje & Integrisanje svih komponenti, verifikacija, testiranja, Integracija validacija, instalacija, obuka funkcionalan sistem Popravljanje bagova, modifikacije, Održavanje adaptacija Verzije sistema 3
  • 4. Slanje poruka  Kada jedan objekat šalje poruku drugom objektu, on poziva operaciju u pozvanom objektu. 4
  • 5. Zadatak modela interakcije  Osnovni zadatak modela interakcije je definisanje najpogodnijeg načina komunikacije između objekata da bi se podržao svaki zahtev posebno.  Interakcija sadrži skup parcijalno uređenih poruka gde svaka poruka specificira jednu komunikaciju (signal koji treba poslati ili operacija koju treba pozvati). 5
  • 6. Zašto modelovati ponašanje?  Kako koristimo interfejs SMS Servera? Koji je redosled izvršenja operacija?  sendMessage, getStatus, Resend?  getStatus, sendMessage, checkForMessages?  Kada koristimo operaciju resend? 6
  • 7. Modelovanje ponašanja Redosled akcija Preduslovi Efekti • Kako se kreira • Kada se izvršavaju • Koji je rezultat redosled operacija operacije operacija • Putanje izvršenja: • Kako rezultat • Kako operacije – Sekvencijalne operacija utiče na menjaju stanje – Paralelne izvršenje sistema – Petlje Send message [if getStatus == err] Resend Resend Get Status Adds a new msg Message queue 7
  • 8. Vrste dijagrama interakcije  Postoje dva tipa dijagrama interakcije:  Dijagram sekvence: • Naglašava redosled (sekvencu) ili konkurentnost interakcije  Dijagram kolaboracije: • Naglašava interakciju objekata 8
  • 9. Sadržaj  Uvod  Sekvencijalni dijagrami  Kolaborativni dijagrami  Konstrukcije toka  Modularnost 9
  • 10. Sekvencijalni dijagrami u analizi i dizajnu  Sekvencijalni dijagrami u toku analize se razlikuju od sekvencijalnih dijagrama modelovanih u fazi dizajna u sledećem:  Analitički dijagrami sekvence normalno ne sadrže projektne objekte niti specificiraju detalje signature poruke. 10
  • 11. Sekvencijalni dijagrami  Sekvencijalni dijagrami prikazuju interakciju između objekata uređenih u vremensku sekvencu.  Najopštija primena sekvencijalnih dijagrama je predstavljanje detaljne interakcije objekata koje se pojavljuju u jednom slučaju upotrebe ili jednoj operaciji. 11
  • 12. Smešan primer iz stvarnog života 12
  • 15. Smešan primer: dijagram kolaboracije 15
  • 16. Kreiranje sekvencijalnog dijagrama  Sekvencijalni dijagrami predstavljaju ponašanje slučaja upotrebe koristeći kao osnovu klase. Use Case 1 Class C Class A Use Case 3 Use Case 2 Class D Class B Sekvenca = Objekti + poruke 16
  • 17. Osnovni elementi sekvencijalnog dijagrama  učesnik: objekat ili entitet koji učestvuje u sekvencijalnom dijagramu  Sekvencijalni dijagram započinje neprikačenom strelicom “found message"  poruka: komunikacija između objekata učesnika  Ose u sekvencijalnom dijagramu:  horizontalna: koji objekat/učesnik vrši aktivnost  vertikalna: vreme (odozgo na dole) 17
  • 18. Predstavljanje objekata  Kvadrat sa tipom objekta, kome opciono može prethoditi ime objekta i dvotačka  Pišite ime objekta ako doprinosi pojašnjenju dijagrama  Linija života objekta predstavlja se isprekidanom vertikalnom linijom. 18
  • 19. Poruke između objekata  poruka (poziv metode) predstavlja se horizontalnom linijom prema drugom objektu  Pišite ime poruke i argument iznad strelice  Isprekidana strelica nazad označava povratnu poruku  Različiti vrhovi strelica se koriste za normalne i konkurentne (asinhrone) metode 19
  • 20. Različite vrste poruka Sinhrona poruka izaziva da pozvana operacija suspenduje izvršavanje dok joj Sinhrona poruka se fokus kontrole ne vrati. Asinhrona poruka ne izaziva prekid izvršenja dok se čeka na povratak. Kada se pošalje asinhrona poruka, operacije u Asinhrona poruka oba objekta mogu da vrše obradu istovremeno. Povratna poruka 20
  • 21. Sinhrone i asinhrone poruke Nested Flow Asynchronous Flow manager sensor eye sensor manager alarm check unknown check ring operate log Primer Primer 21
  • 22. Život objekata • Kreiranje: strelica sa 'new' iznad nje – Objekat kreiran nakon početka scenarija se nalazi niže • Brisanje: X na dnu linije života objekta – Java ne briše eksplicitno objekte već koristi garbage collector 22
  • 23. Prikazivanje poziva metoda  aktivacija: pravougaonik iznad linije života objekta; crta se kada se metoda objekta izvršava ili je u steku  Objekat izvršava svoj kod, ili je u steku i čeka drugu metodu da se završi  Ugnježdavanjem se prikazuje rekurzija Activation Nesting 23
  • 24. Sekvencijalni dijagrami objekti sd Product Buying Ime dijagrama p : Product : ShooppingCart customer display() poruka getPrice() aktivacija addProduct (p) (fokus checkout () kontrole) Linija života 24
  • 25. Kontrola objekata obj1 : Class1 obj2 : Class2 user operate() Kreiranje objekata do (…) create (…) : Class3 Povratna poruka foo() Poruke samom sebi Destrukcije objekata 25
  • 26. Odgovarajući dijagram klasa Gde god se razmenjuju poruke između instanci Zavisnost se može klasa, postoji i zavisnost zameniti između tih klasa asocijacijama, agregacijama i slično. Primer 26
  • 27. Sekvence i slučajevi upotrebe p : Product : ShooppingCart customer display() getPrice() addProduct (p) checkout () create (…) : Order Vidljivi deo Skriveni deo 27
  • 28. Atributi poruke [sequence-expression] [return-value :=] [message-name] [(argument-list)] C3.1: res := getLocation (fig) Broj sekvence Ime poruke Lista argumenata Povratna vrednost 28
  • 29. Sadržaj  Uvod  Sekvencijalni dijagrami  Kolaborativni dijagrami  Konstrukcije toka  Modularnost 29
  • 30. Kolaborativni dijagrami  Služe za prikaz složenijih interakcija između objekata i njihove međusobne povezanosti.  Fokusira se na kolaboracionoj strukturi i organizaciji između objekata.  Modeluje link između objekata  Sastoji se od objekata, linkova, poruka 30
  • 31. Kolaborativni dijagram 1: odlazak 2: biras model prodavnica model 6: kupovina 4: vraca model : kupac 5: vrati cipele 3: biras broj broj 31
  • 33. Sadržaj  Uvod  Sekvencijalni dijagrami  Kolaborativni dijagrami  Konstrukcije toka  Modularnost 33
  • 34. Konstrukcije toka If Loop ElseRepeat Jump Kada kreiramo scenario, koje alternative su nam potrebne? 34
  • 35. Opcije msg : Message : Database Fragment opt [msg.status=confirmed] Uslov archive(msg) Do something... Koristi se za modelovanje jednostavnih opcionih blokova. Ima jedan operand i nema “else” opciju. 35
  • 36. Alternative msg : Message : Database : Admin alt [msg.status=confirmed] Alternativa archive(msg) Grupa fragmenta Uslov [msg.status=error] notify(msg.getID()) [else] wait() Regioni izvršenja. Najviše Else jedan će se izvršiti. uslov (opcioni) 36
  • 37. Petlja : OS : Folder : File loop [for each Folder] Fragment Display() petlje loop [for each File] Display() Uslov Ugnježdeni fragment petlje 37
  • 38. Prekidi (break) : User : User Manager : Policy isLooged = login(name,pass) break Ukoliko je uslov ispunjen, fragment [¬isLooged] addBadLogin(name) prekida se izvršava, a ostatak sekvence se ignoriše. Do something… Do something … 38
  • 39. Primeri definisanja uslova  [for each Object]  [5]  [i=1..5]  [status = okay]  Nepostojanje uslova znači beskonačnu petlju 39
  • 40. Sadržaj  Uvod  Sekvencijalni dijagrami  Kolaborativni dijagrami  Konstrukcije toka  Modularnost 40
  • 41. MODULARNOST Potrebno je pronaći načine za kreiranje modularnih scenarija 41
  • 42. Referenciranje dijagrama : User : User Manager : Policy login(name,pass) ref Login Handling(user,pass) : bool Referenca Do something… Gate Do something … 42
  • 43. Referenciranje dijagrama sd Login Handling Ime dijagrama : User Manager : UserAccount loop login(name,pass) Input [for each UserAccount] poruka cName -= getUseNamer() opt Output poruka [cName = name] isInSystem(true) true false 43
  • 44. Primer: Funkcionisanje bankomata • Korisnik unosi karticu u ATM • ATM zahteva PIN • Korisnik unosi PIN • Uneti PIN proverava sistem banke • Sistem vraća poruku o validnosti ATM sistemu • ATM nudi korisniku opcije • Korisnik bira podizanje novca • ATM zahteva unos iznosa 44
  • 45. Primer: Logon scenario • Klijent zahteva Logon (requestLogon()) sa SecurityLogon interfejsa koji zatim prikazuje Logon ekran (displayLogonScreen()) • Klijent unosi name, pass u LogonScreen-u • Izvršava se petlja pod sledećim uslovom [while valid==false]: Interfejs SecurityLogon šalje na proveru user i pass (isValid(name, pass)) ka bazi account-a (AccountDB) AccountDB proverava da li naziv postoji u bazi (isInDatabase(name) u Sistemu (System) Sistem vraća tip korisnika (userType) AccountDB vraća info o validnosti (valid) Interfejs SecurityLogon prikazuje poruku o grešci (displayErrorMessage()) Ponovo otvara tj. prikazuje Logon ekran (displayLogonScreen()) • SecurityLogon proverava uslov: Ukoliko je [userType==admin] onda prikazuje Admin (displayAdmin()) Ukoliko je [userType==user] onda prikazuje user-a (displayUser()) 45
  • 46. Zadatak: sportska kladionica  Nacrtati UML sekvencijalni i kolaborativni dijagram za slučaj upotrebe popunjavanje tiketa za sportsko klađenje koji popunjava radnik sportske kladionice. Bitni koncepti koje je potrebno uzeti u obzir su tip klađenja i kvota. 46
  • 49. Primer: Slučaj upotrebe „Upis godine“ u IS studentske službe  Učesnik u ovom slučaju upotrebe je radnik studentske službe koji pokreće formu IS (klasa Forma) kako bi izvršio upis određenog studenta u narednu godinu. Od radnika se traži da unese broj indeksa za studenta koga želi da upiše u narednu godinu. Nakon unosa broja indeksa, Sistem vrši proveru da li postoji student u bazi podataka. Ukoliko student ne postoji u bazi podataka, radniku se prosleđuje poruka o grešci. Ukoliko student postoji u bazi, Sistem traži u bazi podataka podatke o položenim ispitima za datog studenta, nakon čega vrši proveru broja nepoloženih ispita. Ukoliko je broj nepoloženih ispita veći od 2, sistem vraća poruku korisniku o nepostojanju uslova za upis naredne godine. Ukoliko broj nepoloženih ispita nije veći od 2, Sistem upisuje studenta u narednu godinu u bazi podataka, a korisniku se vraća poruka o tome. Osim toga, ukoliko je student položio sve ispite pre 01.09. u bazu podataka student se automatski upisuje na budžet, a radniku se šalje potvrda o tome.  Napraviti dijagram sekvence za navedeni primer  Napraviti dijagram kolaboracije (dijagram komunikacije) 49
  • 50. 50
  • 51. 51