softversko inŽenjerstvo vježbe 8: activity...
TRANSCRIPT
SOFTVERSKO INŽENJERSTVO
Vježbe 8: Activity dijagrami
Robert Manger
Sveučilište u Zagrebu
PMF-Matematički odsjek
Akademska godina 2019/2020.
Sadržaj Vježbi 8
Općenito o activity dijagramima
Aktivnosti, čvorovi, lukovi
Semantika aktivnosti, žetoni
Podjela activity dijagrama na particije
Detaljnije o akcijskim čvorovima
Detaljnije o kontrolnim čvorovima
Detaljnije o objektnim čvorovima
Interaction overview dijagrami
V-08 Softversko inženjerstvo 2
Općenito o activity dijagramima
V-08 Softversko inženjerstvo 3
Prema standardu
UML 2 imaju
semantiku zasnovanu
na Petrijevim
mrežama.
Jednostavni primjer:
sljedeći dijagram
prikazuje proces
slanja pisma.
Activity dijagrami donekle podsjećaju na klasične
dijagrame toka kontrole ili dijagrame toka podataka.
Služe za modeliranje raznih vrsta procesa.
Mogu se pridružiti bilo kojem elementu modela da bi
opisali njegovo ponašanje.
Aktivnosti, čvorovi, lukovi Aktivnost je mreža čvorova koji su povezani lukovima.
Postoje tri vrste čvorova.
Akcijski čvorovi: cjeline posla koje se promatraju kao nedjeljive.
Kontrolni čvorovi: upravljaju tokom aktivnosti.
Objektni čvorovi: predstavljaju objekte koji se koriste u aktivnosti.
Postoje dvije vrste lukova.
Kontrolni lukovi: prikazuju tok kontrole kroz aktivnost.
Objektni lukovi: prikazuju putovanje objekata kroz aktivnost.
Uz pojedine čvorove ili lukove, odnosno uz cijelu aktivnost
mogu se vezati razni logički uvjeti:
Preduvjeti (preconditions).
Post-uvjeti (postconditions).
Uvjeti-stražari (guard conditions).
V-08 Softversko inženjerstvo 4
Primjer activity dijagrama koji modelira use case (1) Promatramo
tabličnu
specifikaciju
use case-a
koji određuje
postupak
plaćanja
poreza.
V-08 Softversko inženjerstvo 5
Primjer activity dijagrama koji modelira use case (2)
V-08 Softversko inženjerstvo 6
Use case-ovi i activity dijagrami mogu služiti kao
komplementarni pogledi na isto ponašanje. Use case-ovi opisuju ponašanje kao interakciju aktera i sustava.
Activity dijagrami prikazuju ponašanje kao nizove akcija.
Isti use case
može se
modelirati
kao sljedeći
activity
dijagram.
Semantika aktivnosti, žetoni Semantika aktivnosti opisana je pomicanjem žetona
(token) kroz mrežu.
Pomicanje žetona može predstavljati: tok kontrole,
putovanje objekta,
razmjenu podataka.
Žeton se miče tako da prijeđe iz nekog polaznog čvora,
preko luka, u neki dolazni čvor.
Da bi se prelazak zaista dogodio, moraju vrijediti: post-uvjet u polaznom čvoru,
uvjet-stražar na luku,
preduvjet na dolaznom čvoru.
U mreži može istovremeno postojati više žetona. To daje
mogućnost modeliranja paralelnih procesa.
Svaka vrsta čvorova ima dodatna pravila o micanju žetona.
V-08 Softversko inženjerstvo 7
Podjela activity dijagrama na particije Da bi dijagram bio zorniji i čitljiviji, aktivnosti se mogu
podijeliti u particije.
Granicu između particija obično crtamo kao vertikalnu
crtu, no po potrebi to može biti i zakrivljena crta.
Particije obično predstavljaju:
use case-ove,
klase,
fizičke lokacije,
organizacijske jedinice.
Skup particija na dijagramu trebao bi imati ucrtanu
zajedničku “dimenziju” koja opisuje semantiku tog skupa,
dakle što particije ustvari predstavljaju i po kojem kriteriju
se izvršila podjela.
V-08 Softversko inženjerstvo 8
Primjer dijagrama s particijama (1)
V-08 Softversko inženjerstvo 9
Dijagram
prikazuje
aktivnosti koje
se zbivaju na
raznim
lokacijama i
pod-lokacijama.
Modelira se
poslovni proces
izrade tečajeva
gdje sudjeluju
partneri iz
Zuricha i
Londona.
Primjer dijagrama s particijama (2) Particije odnosno lokacije s dijagrama čine ovakvu
hijerarhiju.
V-08 Softversko inženjerstvo 10
Mada to na prethodnom dijagramu nije slučaj, particije
često služe da zorno prikažu paralelne aktivnosti.
Način rada akcijskih čvorova (1)
Akcijski čvor se izvršava onda kad:
Istovremeno postoje žetoni na svakom od njegovih ulaznih
lukova, i
Njegov lokalni preduvjet je ispunjen.
Nakon izvršavanja akcijskog čvora provjerava se
njegov lokalni post-uvjet. Ako je on ispunjen tada:
Čvor simultano nudi žetone na svim svojim izlaznim
lukovima.
Ponuđeni žetoni prolaze lukovima pod uvjetom da su uvjeti-
stražari lukova ispunjeni.
Postupak je ilustriran sljedećom slikom.
V-08 Softversko inženjerstvo 11
Način rada akcijskih čvorova (2)
Ovakav način
rada krije
implicitnu
mogućnost
grananja
jednog
procesa u
više
paralelnih
procesa
(implicit fork).
V-08 Softversko inženjerstvo 12
Vrste akcijskih čvorova
V-08 Softversko inženjerstvo 13
Čvor za pozivanje akcije.
Najčešća vrsta. Pokreće operaciju, ponašanje ili drugu
aktivnost. Način rada je bio prethodno opisan.
Čvor za slanje signala.
Nakon što je primio žeton, asinkrono šalje signal i dalje
nudi žeton.
Čvor za primanje događaja.
Nakon što je primio žeton, čeka događaj (ako nema
ulaznog luka, tada odmah čeka). Kad se događaj desi,
tada nudi žeton na izlaznom luku.
Čvor za primanje vremenskog događaja.
Nakon što je primio žeton, čeka događaj zadan
vremenskim izrazom (ako nema ulaznog luka, tada
odmah čeka). Kad se događaj desi, nudi žeton na
izlaznom luku.
Primjeri čvorova za pozivanje akcije
V-08 Softversko inženjerstvo 14
Imamo primjer
poziva
određene
aktivnosti,
određenog
ponašanja, te
operacije
opisane
imenom,
signaturom ili
kodom u
programskom
jeziku.
Primjeri čvorova za primanje vremenskih događaja
V-08 Softversko inženjerstvo 15
U prvom primjeru čvor
za primanje vremenskog
događaja prosljeđuje
žeton čim dođe kraj
poslovne godine.
Drugi primjer je
fragment modela za lift.
Čvor za primanje
vremenskog događaja
najprije čeka da primi
žeton, zatim čeka 10
sekundi, te nakon toga
prosljeđuje žeton.
Vrste i način rada kontrolnih čvorova
V-08 Softversko inženjerstvo 16
Početni čvor.
Pokazuje početak toka kontrole kad se aktivnost pokrene.
Završni čvor za aktivnost.
Označava završetak cijele aktivnosti.
Završni čvor za tok.
Označava kraj jednog toka. Ostali tokovi idu dalje.
Čvor za donošenje odluke.
Kontrola se nastavlja po izlaznom luku čiji uvjet-stražar je
ispunjen (uvjeti su međusobno isključivi).
Čvor za sažimanje (merge).
Kopira ulazne žetone na jedinstveni izlazni luk.
Čvor za grananje (fork).
Razdvaja tok kontrole u nekoliko paralelnih tokova.
Čvor za spajanje (join).
Sinkronizira paralelne tokove i nastavlja ih kao jedan tok.
Primjeri donošenja odluke (1) Sljedeći dijagram
prikazuje
postupak obrade
pristigle pošte.
Vidimo čvor za
donošenje odluke
i čvor za
sažimanje.
Ključna riječ else
označava luk
kojim se ide ako
nijedan od uvjeta-
stražara nije
istina.
V-08 Softversko inženjerstvo 17
Primjeri donošenja odluke (2)
V-08 Softversko inženjerstvo 18
Sljedeći dijagram prikazuje skidanje novaca s
bankovnog računa. Uvjet u čvoru za donošenje odluke
zadan je u obliku objašnjenja (script) koje je označeno
stereotipom <<decisioninput>>.
Sljedeći dijagram
prikazuje proces
nastanka,
proizvodnje i prodaje
nekog proizvoda. Taj
proizvod se najprije
mora oblikovati,
zatim proizvodnja i
marketing mogu ići
kao paralelni tokovi,
zatim nakon
sinkronizacije tih
tokova slijedi
prodaja.
V-08 Softversko inženjerstvo 19
Primjer grananja i spajanja
Način rada objektnih čvorova (1) Objektni čvorovi označavaju da se primjerci
određenog klasifikatora (obično objekti iz određene
klase) pojavljuju na određenom mjestu u aktivnosti.
Ulazni i izlazni lukovi objektnog čvora moraju biti
objektni lukovi.
Kad objektni čvor primi žeton-objekt po nekom od
svojih ulaznih lukova, dešava se sljedeće.
Čvor nudi taj objekt po svim svojim izlaznim lukovima.
Izlazni lukovi se natječu za prihvat objekta, dakle dobije ga
onaj prvi koji ga prihvati.
Znači, jedan objekt na ulazu daje jedan objekt na izlazu;
nema replikacije kao kod akcijskih čvorova.
Sam objektni čvor može služiti kao spremnik (buffer)
za žetone-objekte.
V-08 Softversko inženjerstvo 20
Način rada objektnih čvorova (2) Svojstva spremnika mogu se specificirati logičkim uvjetima
u vitičastim zagradama ili primjedbama sa stereotipima. {upperbound = n}
{ordering = FIFO} (to je default) ili {ordering =LIFO}
<<selection>> uvjet
Objektni čvor može predstavljati objekte u nekom stanju. Tada stanja koja objekt poprima na activity dijagramu trebaju biti
konzistentna sa stanjima na odgovarajućem state machine
dijagramu.
Objektni čvorovi mogu služiti kao ulazni ili izlazni
parametri za aktivnosti. Tada se crtaju tako da prelaze preko okvira aktivnosti.
Ulazni parametri imaju jedan ili više izlaznih lukova koji ulaze u
aktivnost.
Izlazni parametri imaju jedan ili više ulaznih lukova koji izlaze iz
aktivnosti.
V-08 Softversko inženjerstvo 21
Primjeri objektnih čvorova (1)
V-08 Softversko inženjerstvo 22
Primjer s procesom
nastanka,
proizvodnje i
prodaje proizvoda
sad je bolje
razrađen. Dodan je
tok objekta koji
povezuje
oblikovanje i
proizvodnju. Osim
toga, uvedene su
particije koje
odgovaraju
lokacijama.
Primjeri objektnih čvorova (2) Objektni čvor koji služi kao spremnik.
V-08 Softversko inženjerstvo 23
Objektni čvor
koji obavlja
selekciju.
Čvor koji
predstavlja
objekte u
nekom
stanju.
Primjeri objektnih čvorova (3)
V-08 Softversko inženjerstvo 24
Objektni čvorovi kao ulazni i izlazni
parametri za aktivnost.
Interaction overview dijagrami (1) Interaction overview dijagram je “križanac” između
interaction dijagrama i activity dijagrama.
Smatra se da spada među interaction dijagrame, no
uglavnom izgleda kao activity dijagram.
Riječ je o activity dijagramu gdje umjesto akcijskih
čvorova imamo čvorove koji predstavljaju cijele
interakcije.
Osim interakcija imamo i kontrolne lukove, te kontrolne
čvorove koji reguliraju grananja, iteraciju, ili paralelne
tokove kontrole.
Cilj je da se pokaže tok kontrole na višoj razini između
pojedinih interakcija.
V-08 Softversko inženjerstvo 25
Interaction overview dijagrami (2) Jedna interakcija na interaction overview dijagramu obično
se zadaje zasebnim sequence dijagramom koji je:
Ucrtan unutar interaction overview dijagrama (inline interaction),
Ili je nacrtan posebno, te se navodi na interaction overview
dijagramu kao pojava interakcije (interaction occurrence).
Primijetimo da interaction overview dijagrami čine donekle
redundantni dio UML-a.
Naime, sami sequence dijagrami već mogu izraziti sve što i
interaction overview dijagrami. Grananje, iteracija i paralelnost
mogu se prikazati kombiniranim fragmentima i operatorima.
Ipak, kad bi tipični interaction overview dijagram pretvorili u
sequence dijagram, dobili bi zamršeni i nečitljivi prikaz interakcije.
Sequence dijagram je pogodan za prikaz manjih interakcija na
razini jednog use case-a. Interaction overview dijagram je pogodan
za opsežnije interakcije koje uključuju i povezuju više use case-ova.
V-08 Softversko inženjerstvo 26
Primjer interaction overview dijagrama (1)
V-08 Softversko inženjerstvo 27
Sljedeći dijagram ManageCourses odnosi se na sustav za
praćenje studenata i kolegija. Prikazan je tok kontrole
na višoj razini između nekoliko interakcija na nižoj razini:
LogOn, GetCourse Option, AddCourse, FindCourse,
RemoveCourse.
Svaka od interakcija na nižoj razini predstavlja
realizaciju jednog use case-a. To znači da dijagram
ManageCourses opisuje složenu interakciju koja uključuje
više use case-ova.
Vidimo da su na dijagramu neke interakcije na nižoj
razini prikazane kao inline interactions, a neke kao
interaction occurrences.
V-08 Softversko inženjerstvo 28
Primjer interaction overview dijag (2)