SOFTVERSKO INŽENJERSTVO Vježbe 8: Activity dijagrami Robert Manger Sveučilište u Zagrebu PMF-Matematički odsjek Akademska godina 2018/2019.
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 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. Prema standardu UML 2 imaju semantiku zasnovanu na Petrijevim mrežama. Jednostavni primjer: sljedeći dijagram prikazuje proces slanja pisma. V-08 Softversko inženjerstvo 3
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) Isti use case može se modelirati kao sljedeći activity dijagram. 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. V-08 Softversko inženjerstvo 6
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) 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. V-08 Softversko inženjerstvo 9
Primjer dijagrama s particijama (2) Particije odnosno lokacije s dijagrama čine ovakvu hijerarhiju. Mada to na prethodnom dijagramu nije slučaj, particije često služe da zorno prikažu paralelne aktivnosti. V-08 Softversko inženjerstvo 10
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 uvjetistraž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 Č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. V-08 Softversko inženjerstvo 13
Primjeri čvorova za pozivanje akcije Imamo primjer poziva određene aktivnosti, određenog ponašanja, te operacije opisane imenom, signaturom ili kodom u programskom jeziku. V-08 Softversko inženjerstvo 14
Primjeri čvorova za primanje vremenskih događaja 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. V-08 Softversko inženjerstvo 15
Vrste i način rada kontrolnih čvorova 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. V-08 Softversko inženjerstvo 16
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 uvjetastražara nije istina. V-08 Softversko inženjerstvo 17
Primjeri donošenja odluke (2) 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>>. V-08 Softversko inženjerstvo 18
Primjer grananja i spajanja 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
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) 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. V-08 Softversko inženjerstvo 22
Primjeri objektnih čvorova (2) Objektni čvor koji služi kao spremnik. Objektni čvor koji obavlja selekciju. Čvor koji predstavlja objekte u nekom stanju. V-08 Softversko inženjerstvo 23
Primjeri objektnih čvorova (3) Objektni čvorovi kao ulazni i izlazni parametri za aktivnost. V-08 Softversko inženjerstvo 24
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) 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 27
Primjer interaction overview dijag (2) V-08 Softversko inženjerstvo 28