Professional Documents
Culture Documents
Darije Ramljak
2
ponuđen na standardizaciju OMG-u (Object Management Group) u siječnju 1997., kao
odgovor na njihov zahtjev za prijedlog standardnog jezika za modeliranje.
Između siječnja i srpnja 1997., originalna grupa se proširila i obuhvatila je sve koji su poslali
svoje prijedloge OMG-u, uključujući Andersen Consulting, Ericsson, Platinum Technology,
Softeam, itd. Osnovana je grupa za semantiku, koju je vodio Cris Kobryn, kako bi se
formalizirala UML specifikacija i kako bi se UML integriralo sa drugim standardima.
Revidirana verzija UML-a (verzija 1.1) je predana na pregled OMG-u u srpnju 1997. i OMG
ADTS (Analysis and Design Task Force) je u rujnu 1997. prihvatio tu verziju i dao ju na
glasovanje. Na kraju je UML 1.1 prihvaćen od strane OMG-a u prosincu 1994.
Zadnja verzija UML-a koja je izašla je 1.3 (jesen 1998).
3
2. OBJEKTNO ORIJENTIRANO MODELIRANJE
Primarni produkt nekog razvojnog tima je dobra programska aplikacija koja zadovoljava
rastuće potrebe korisnika i njihovog poslovanja. Sve ostalo je manje važno.
Nažalost, velik broj organizacija koje proizvode programsku podršku ono "manje važno"
zamjenjuje sa "potpuno nevažno". Kako bi se izgradila programska podrška dugotrajne
kvalitete, potrebno je složiti solidnu baznu arhitekturu. Za brz i efikasan razvoj programske
podrške, potrebno je imati prave ljude, dobar alat i dobar fokus. Kako bi se to sve napravilo
konzistentno i sa uzimanjem u obzir same cijene razvojnog ciklusa, potrebno je imati dobar
razvojni proces koji se može vrlo lako prilagoditi stalnim promjenama tehnologije i
poslovanja.
2.1. Modeliranje
Modeliranje je glavni dio svih tih aktivnosti koje vode produkciji dobre programske podrške.
Modeliranjem se vizualizira i kontrolira arhitektura sustava. Modelira se kako bi se bolje
shvatio sustav koji se izgrađuje i često se koristi radi pojednostavljenja i mogućnosti ponovne
iskoristivosti dijelova tog istog sustava.
Modeliranje je dokazana i široko prihvaćena inžinjerska tehnika. Npr. arhitekti rabe
modeliranje kako bi olakšali projektiranje neke kuće ili zgrade. Koriste razne matematičke
modele kako bi analizirali utjecaje vjetra i potresa na stambene objekte. Naravno,
modeliranje nije vezano samo za građevinsku industriju. Bilo bi gotovo nemoguće proizvesti
novi avion ili auto bez prethodne izrade modela – od računalnih modela, fizičkih modela, koji
se testiraju u zračnim tunelima, pa sve do pravih prototipova. U stvarnom životu moguće je
naći mnogo primjera gdje se modeliranje koristi kao jedan od glavnih procesa.
Model pruža na uvid nacrte za izgradnju određenog sustava. Modeli mogu sadržavati vrlo
detaljne nacrte, kao i one generalne koji daju samo prikaz većih cjelina. Dobar model
uključuje one elemente koji imaju širok utjecaj, a zanemaruje one manje elemente koji nisu
relevatni za promatranu razinu apstrakcije. Svaki sustav može se opisati sa više aspekata
koristeći više modela pa je samim time svaki model semantički zatvorena apstrakcija sustava.
Kroz modeliranje, postižu se četiri cilja:
1. Modeli pomažu pri vizualizaciji sustava koji se promatra ili koji se želi izgraditi.
2. Modeli omogućuju specifikaciju strukture ili ponašanja sustava.
3. Modeli pružaju predloške koji služe kao vodiči pri izgradnji sustava.
4. Modeli dokumentiraju odluke koje su donesene.
Modeliranje se ne koristi isključivo u izradi velikih sustava jer čak i mali sustavi imaju koristi
od njega. Ipak, istina je da što je veći i kompleksniji sustav koji se radi to je i veća važnost
modeliranja.
U razvoju programske podrške postoji nekoliko načina pristupa modelu. Dva najčešća
pristupa su pristup sa strane algoritma i objektno-orijentirani pristup.
4
Tradicionalan pogled na razvoj programske podrške uzima pristup sa strane algoritma. U
ovom pristupu, glavni građevni elementi programa su procedure ili funkcije, a glavni fokus se
daje na stvari vezane uz kontrolu i dekompoziciju većih algoritama na manje. Ovaj način
razvoja nije loš, ali pokazuje svoje velike nedostatke pri promjenama zahtjeva na sustav. Iz
toga proizlazi da su sustavi koji su razvijani sa fokusom na algoritme vrlo teški za
održavanje.
Moderan pogled na razvoj sustava za programsku podršku koristi objektno-orijentirani
pristup. Ovdje je glavni građevni blok sustava objekt ili klasa. To je stvar koja je izvedena iz
rječnika domene problema ili rješenja; klasa je opis kolekcije objekata sa istim zajedničkim
svojstvima. Svaki objekt ima identitet (može se imenovati ili nekako drugačije razlikovati od
ostalih objekata), stanje (obično su tu pridruženi nekakvi podaci) i ponašanje (mogu se vršiti
nekakve operacije nad objektom ili on može vršiti operacije nad drugim objektima).
Objektno-orijentirani pristup zauzima centralno mjesto među pristupima razvoju programske
podrške jednostavno zato što je dokazao svoju vrijednost u razvoju sustava u raznim
domenama problema i u obuhvaćanju svih razina kompleksnosti. Nadalje, većina modernih
jezika, operativnih sustava i alata su u neku ruku objektno-orijentirani, dajući veći doprinos
objetno-orijentiranom pogledu na svijet. Objektno-orijentirani razvoj daje i konceptualne
temelje razvoju sustava kroz slaganje komponenata koristeći tehnologije poput Java Beans ili
COM+.
Iz svega ovoga proizlazi da je svrha UML-a upravo vizualiziranje, specificiranje,
konstruiranje i dokumentiranje objektno-orijentiranih sustava.
5
3. UNIFIED MODELING LANGUAGE (UML)
Unified Modeling Language (UML) je standardiziran jezik za pisanje nacrta za razvoj sustava
programske podrške. UML se koristi za vizualiziranje, specificiranje, konstruiranje i
dokumentiranje komponenata koje sačinjavaju taj sustav.
UML se može koristiti za modeliranje sustava od ranga poslovnih informacijskih sustava pa
sve do distribuiranih mrežnih aplikacija pa čak i za sustave koji rade u realnom vremenu
(eng. real time embedded systems). To je vrlo ekspresivan jezik koji se bavi svim pogledima
na sustav koji su potrebni za njihov razvoj i pokretanje.
UML je samo jezik i samim time je samo dio metode razvoja programske podrške. Neovisan
je o procesu, iako bi, optimalno, trebao biti korišten u procesu koji se temelji na slučajevima
korištenja te koji je iterativan i inkrementalan.
6
papiru. Međutim, tu se javljaju neki problemi. Prvo, prenošenje tih konceptualnih ideja
nekome drugome je podložno greškama osim ako svi ne govore istim jezikom. Projekti i
organizacije najčešće rabe i razvijaju nekakav svoj jezik i nekome drugome je to možda teško
razumjeti. Drugo, neke se stvari ne mogu na jednostavan način razumjeti ako prije samog
pisanja programskog koda nije izgrađen model. Npr. hijerarhije klasa će se teško razumjeti iz
samog koda. Treće, ako programer koji je napisao neki programski kod nije svoju ideju iz
glave prenio na papir, ta bi se ideja mogla nepovratno izgubiti. U najboljem slučaju, ideja bi
se mogla djelomično iskonstruirati iz postojećeg koda.
Pisanje modela u UML-u dotiče treću stavku: Eksplicitan model poboljšava komunikaciju.
Neke se stvari najbolje modeliraju tekstualno, a neke grafički. U gotovo svim interesantnim
sustavima postoje strukture koje nadilaze ono što se može prikazati programskim jezikom.
UML je grafički jezik i time dotiče, prije spomenuti, prvi problem. UML nije samo skup
grafičkih simbola, već iza svakog simbola stoji dobro definirana semantika. Na taj način,
model koji je napravio jedan programer može jednoznačno pročitati i razumjeti drugi
programer i time se dotiče, prije spomenuti, drugi problem.
7
Zahtjevi na sustav
Arhitektura
Dizajn
Programski kod
Projektni planovi
Testovi
Prototipovi
Ovisno o samoj kulturi razvoja programske podrške, neke od tih stvari tretirane su manje ili
više formalno od drugih. Takve stvari nisu samo popratne stvari uz sam sustav, već su one,
također, vrlo važne u kontroli, mjerenju i komunikaciji o sustavu u toku njegovog razvoja i
nakon pokretanja.
UML se bavi dokumentacijom arhitekture sustava i svim njenim detaljima. UML, također,
pruža jezik za artikuliranje zahtjeva na sustav i testove. Na kraju, UML pruža jezik za
modeliranje aktivnosti planiranja projekta i upravljanja načinima puštanja u rad.
8
4. KONCEPTUALAN MODEL UML-A
Za razumijevanje UML-a, potrebno je formirati konceptualan model jezika i to zahtijeva
učenje tri glavna elementa: osnovne građevne blokove UML-a, pravila koja diktiraju kako
koristiti i slagati te blokove i neke osnovne mehanizme koji se primjenjuju kroz UML.
9
Slika 1: Klasa
Drugi tip je sučelje. To je je kolekcija operacija koja specificira usluge neke klase ili
komponente. Sučelje stoga predstavlja izvana vidljivo ponašanje tog elementa i može
predstavljati kompletno ponašanje klase ili komponente ili samo djelomično. Sučelje definira
skup operacijskih specifikacija (tj. njihovih potpisa), ali nikada skup njihovih implementacija.
Grafički, sučelje je predstavljeno krugom zajdeno sa njegovim imenom (Slika 2.). Sučelje,
prema svojoj namjeni, nikada neće stajati samo, već će obično biti vezano za određenu klasu
ili komponentu koja ga realizira.
Slika 2: Sučelje
Treći tip je suradnja (eng. collaboration). Ono definira interakciju te je skup uloga (eng.
roles) i ostalih elemenata koji zajednički rade i pružaju nekakvo kooperativno ponašanje koje
je veće nego suma svih elemenata zajedno. Stoga, suradnja ima strukturalnu dimenziju kao i
dimenziju ponašanja. Neka klasa može participirati u više suradnji odjednom i suradnje time
reprezentiraju implementaciju predložaka (eng. patterns) koji čine sustav. Grafički, suradnja
je predstavljena elipsom sa isprekidanim linijama i obično se u njoj nalazi njeno ime, kao na
Slici 3.
Slika 3: Surađivanje
Četvrti tip je slučaj korištenja (eng. use case). On opisuje skup slijednih događaja koje sustav
izvodi kako bi dobio neki rezultat i koristi se za strukturiranje stvari sa ponašanjem u samom
modelu. Slučaj korištenja se u modelu realizira već spomenutim tipom: suradnjom. Grafički,
slučaj korištenja je predstavljen elipsom kao na Slici 4.
10
Slika 4: Slučaj korištenja
Preostala tri tipa – aktivne klase, komponente i čvorovi – slični su klasama jer opisuju skup
objekata koji dijele iste atribute, operacije, relacije i semantiku. Ipak, ova tri tipa su dovoljno
različita i neophodna za modeliranje određenih aspekata objektno-orijentiranih sustava da se
ne smiju zaobići u opisu.
Peti tip je aktivna klasa (eng. active class). To je klasa čiji objekti posjeduju jedan ili više
procesa ili niti i time mogu inicirati neku kontrolnu aktivnost. Slična je samoj klasi osim što
njeni objekti predstavljaju elemente čije ponašanje je konkurentno sa ostalim elementima.
Grafički, predstavlja se kao i normalna klasa, ali sa podebljanim linijama, kao na Slici 5.
Slika 6: Komponenta
Sedmi tip je čvor (eng. node). To je fizički element koji postoji pri radu sustava i predstavlja
računalni resurs i obično ima neku memoriju i procesne mogućnosti. Unutar čvora može se
smjestiti skup komponenata, a komponente mogu, također, seliti se sa čvora na čvor.
Grafički, čvor je predstavljen kockom, kao na Slici 7.
11
Slika 7: Čvor
Ovih sedam tipova elemenata – klase, sučelja, suradnje, slučajevi korištenja, aktivne klase,
komponente i čvorovi – su osnovne strukturalne stvari koje se mogu uključiti unutar UML
modela. Uz ove osnovne, postoje također i njihove varijacije, kao što su glumci (eng. actors),
signali, procesi i niti (oblici aktivnih klasa), aplikacije, dokumenti, datoteke, biblioteke,
stranice i tablice (oblici komponenti).
Slika 8: Interakcija
Drugi je automat stanja (eng. state machine). Automat stanja je ponašanje koje specificira
slijed stanja objekta ili interakcije kroz koje prolazi za vrijeme svog života kao odgovor na
neki događaj, zajedno sa odgovorom na taj događaj. Ponašanje pojedine klase ili suradnje
klasa može biti specificirana automatom stanja. Automat stanja uključuje i brojne druge
elemente, kao što su stanja, tranzicije (prijelazi između dva stanja), događaje (stvari koje
okidaju tranziciju) i aktivnosti (odgovori na tanziciju). Grafički, stanje je predstavljeno
pravokutnikom zaobljenih rubova (kao na Slici 9.) i obično uključuje ime stanja i njegova
podstanja.
Slika 9: Stanje
12
Ova dva elementa – interakcije i automati stanja – su osnovne stvari sa ponašanjem koje se
mogu uključiti unutar UML modela. Semantički gledano, ti elementi su obično povezani sa
različitim strukturalnim elementima, prvenstveno klasama, suradnjama i objektima.
13
1. Ovisnosti (eng. dependency)
2. Asocijacije (eng. association)
3. Generalizacije (eng. generalization)
4. Realizacije (eng. realization)
Ove su relacije osnovni relacijski građevni blokovi u UML-u i koriste se za pisanje dobro
formiranih UML modela.
Prvi tip, ovisnost, je semantička relacija između dvije stvari u kojoj promjena u jednoj
(neovisnoj stvari) može utjecati na semantiku druge (ovisne stvari). Grafički, ovisnost se
prikazuje kao isprekidana linija, sa mogućom oznakom direkcije (strelica) i imenom, kao na
Slici 12.
14
slučajeva korištenja i suradnji koje ih realiziraju. Grafički, realizacija se prikazuje kao
prijelaz između generalizacije i relacije ovisnosti, kao na Slici 15.
15
pogledom na slučajeve korištenja u sustavu i vrlo su važni kod organiziranja i modeliranja
ponašanja sustava.
Dijagram toka i dijagram suradnji su tipovi interakcijskih dijagrama. Interakcijski dijagram
prikazuje interakciju, koja se sastoji od skupa objekata i njihovih relacija, zajedno sa
porukama koje se mogu slati između njih. Interakcijski dijagram bavi se dinamičkim
pogledom na sustav. Dijagram toka je interakcijski dijagram, koji daje naglasak na
vremensku dimenziju i poredak poruka. Dijagram suradnji je interakcijski dijagram, koji daje
naglasak na strukturalnu organizaciju objekata koji primaju i šalju poruke. Oba dijagrama su
izomorfni, što znači da se svaki od njih može lako transformirati u drugi.
Dijagam stanja prikazuje automat stanja, koji se sastoji od stanja, prijelaza, događaja i
aktivnosti i bavi se dinamičkim pogledom na sustav. Dijagrami stanja su vrlo važni u
modeliranju ponašanja sučelja, klasa ili suradnji i daju naglasak na ponašanje objekta
određeno slijedom događaja, što je jako korisno u modeliranju reaktivnih sustava.
Dijagram aktivnosti je specijalan tip dijagrama stanja koji pokazuje tok iz aktivnosti u
aktivnost unutar sustava i bavi se dinamičkim pogledom na sustav. Vrlo su važni u
modeliranju funkcija sustava i daju naglasak na tok kontrole između objekata.
Dijagram komponenata prikazuje organizacije i ovisnosti između skupa komponenata.
Dijagrami komponenata bave se statičkim pogledom na implementaciju sustava. Povezani su
sa dijagramima klasa tako da su komponente tipično mapirane na jednu ili više klasa, sučelja
ili suradnji.
Dijagram pokretanja prikazuje konfiguraciju izvršnih procesnih čvorova i komponenata koje
se izvode na njima. Dijagrami pokretanja bave se statičkim pogledom na pokretanje
arhitekture sustava. Povezani su sa dijagramima komponenata tako da čvor tipično obuhvaća
jednu ili više komponenata.
16
Nekompletni Neki elementi mogu nedostajati
Nekonzistentni Integritet modela nije garantiran
Ovi, ne dobro formirani modeli, su neizbježni u toku razvoja dok se mnogi detalji sustava tek
otkrivaju. Pravila UML-a potiču, ali ne prisiljavaju na bavljenje najvažnijim pitanjima
analize, dizajna i implementacije koji usmjeravaju model da, kroz vrijeme, postane dobro
formiran.
4.3.1. Specifikacije
UML je puno više od samog grafičkog jezika jer iza svake grafičke notacije stoji specifikacija
koja daje tekstualan opis sintakse i semantike tog građevnog bloka. Npr. iza ikone klase stoji
specifikacija koja pruža cijeli skup atributa, operacija i ponašanja koja ta klasa sadržava;
vizualno, ta klasa može prikazati samo manji dio te specifikacije. Grafička notacija UML-a
koristi se za vizualizaciju sustava, a specifikacija UML-a koristi se za opis detalja tog
sustava. S obzirom na ovu podjelu, moguće je graditi model inkrementalno, crtajući
dijagrame i nakon toga dodavati semantiku specifikaciji modela, ili direktno kreirajući
specifikaciju (možda čak i korištenjem inžinjerstvom unatrag već postojećeg sustava) i nakon
toga kreirati dijagrame koji su projekcija u te specifikacije.
Specifikacije UML-a pružaju semantičku pozadinu koja sadržava sve dijelove modela sustava
i gdje je su svi dijelovi na konzistentan način povezani. UML dijagrami su stoga samo
vizualne projekcije na tu pozadinu, gdje svaki dijagram otkriva specifičan aspekt sustava.
4.3.2. Ukrasi
Većina elemenata u UML-u ima jednoznačnu i izravnu grafičku notaciju koja pruža vizualnu
reprezentaciju najvažnijih aspekata tog elementa. Npr. notacija za klasu je namjerno
dizajnirana jednostavnom za crtanje jer su klase najčešči elementi koji se nalaze u
modeliranju objektno orijentiranih sustava. Notacija za klasu također daje na uvid i
najvažnije aspekte klase, a to su ime, atributi i operacije.
Specifikacija klase može uključivati i ostale detalje, kao što su: da li je klasa apstraktna, ili
vidljivost njenih atributa i operacija i sl. Mnogi od ovih detalja mogu se prikazati kao grafički
ili tekstualni ukrasi samoj notaciji klase (pravokutnik). Npr. Slika 16 prikazuje klasu koja je
ukrašena kako bi se naglasilo da je klasa apstraktna i da sadrži dvije javne (eng. public),
jednu zaštićenu (eng. protected) i jednu privatnu (eng. private) operaciju.
17
Slika 16: Ukrasi
Svaki element u UML notaciji počinje sa osnovnim simbolom, kojem se mogu dodati razni
ukrasi specifični za taj simbol.
4.3.3. Podjele
Pri modeliranju objektno orijentiranih sustava, sve se često dijeli na više načina.
Prvo, tu je podjela na klase i objekte. Klasa je apstrakcija, a objekt je konkretna manifestacija
te apstrakcije. U UML-u mogu se modelirati i klase i objekti, kao što je prikazano na Slici 17.
18
Slika 18: Sučelja i implementacije
Na ovoj slici je jedna komponenta, nazvana spellingwizard.dll koja implementira dva sučelja,
IUnknown i ISpelling.
Gotovo svi građevni blokovi u UML-u imaju sličnu razliku kao sučelja i implementacije.
Npr. postoje slučajevi korištenja i suradnje koje ih realiziraju, kao i operacije i metode koje ih
implementiraju.
19
da sve što se doda u nju mora biti poredano. Na Slici 19, prikazano je eksplicitno dodavanje
ograničenja na operaciju add().
20
5. ZAKLJUČAK
U ovom seminarskom radu prikazane su osnove UML-a, jezika za vizualno modeliranje, i
opisani su njegovi principi i semantika. Dan je i pregled njegove povijesti razvoja kako bi se
vidjelo da je nastao kao evolucija raznih objektno orijentiranih metoda.
Iz svega što je do sad napisano može se zaključiti da je UML trenutno najbolji jezik za
vizualno modeliranje i moglo bi se reći da niti nema neku dostojnu konkurenciju. Ne postoji
jezik koji je toliko kompletan kao UML, a istovremeno i neovisan o razvojnom procesu. To
znači da je UML vrlo prilagodljiv jezik i moguće je koristiti samo neke njegove dijelove u
razvojnom procesu, a da se ne reduciraju njegove velike mogućnosti. Neovisnost o
razvojnom procesu daje veliku fleksibilnost razvojnim timovima koji mogu zadržati svoje
dosadašnje procese prilagođavajući UML svojim potrebama, istovremeno ih poboljšavajući i
modernizirajući.
UML svoju najveću snagu pokazuje na velikim projektima u kojima sudjeluje velik broj ljudi
jer je komunikacija o sustavu koji se gradi gotovo dovedena do savršenstva i nije teško
uključiti nove ljude na taj projekt ako razumiju UML.
Proširivost UML-a i njegove semantike omogućuje mu prilagodljivost novim programskim
jezicima čime se osigurava njegova budućnost i time se razvojnim timovima daje alat za koji
znaju da će ga moći koristiti dugi niz godina.
Sve to čini UML vrlo korisnim i prilagodljivim alatom za vizualno modeliranje sustava
programske podrške i danas postaje gotovo neizbježan pomoćnik svakom programeru i
dizajneru sustava.
21
LITERATURA
I. Jacobson, M. Christerson, P. Jonsson, G. Overgaard: Object–Oriented Software
Engineering – A Use Case Driven Approach, Addison-Wesley, Reading, Massachusetts,
1992.
Rational Software Team: Using Rose – Rational Rose 2000e, Rational Software Corporation,
2000.
T. Quatrani: Visual Modeling with Rational Rose 2000 and UML, Addison-Wesley, Reading,
Massachusetts, 2000.
G. Booch, I. Jacobson, J. Rumbaugh: The Unified Modeling Language User Guide, Addison-
Wesley, Reading, Massachusetts, 1998.
D. Rosenberg, K. Scott: Use Case Driven Object Modeling with UML, Addison-Wesley,
Reading, Massachusetts, 1999.
22
23