UML 1. UVOD Šta je UML, zbog čega nam je potreban, kako je nastao i zašto ga baš ja moram znati, samo su neka od pitanja na koja kroz ovaj tekst tražimo odgovor. Upoznavajući UML, shvatićete da je vizuelno modelovanje prisutno u svim domenima života. Saznaćete zbog čega je UML potreban i koliko je baš on značajan za brzinu izrade nekog programa ili projekta. Kako je UML tema o kojoj postoji veoma mnogo literature, te se o samom UML-u može mnogo reći, ovaj tekst će biti samo jedan mali deo koji će, nadamo se uspešno, uspeti da dočara onaj najvažniji deo; zainteresovati budućeg programera i dati odgovor na pitanje: Zašto UML? 2. UVOD U UML Primarni cilj svake proizvodne firme jeste da izbaci na tržište što kvalitetniji proizvod. Osim kvaliteta samog proizvoda, cilj firme je da automatizuje proizvodnju, te omogući što lakšu i bržu izradu proizvoda, čime osim kvaliteta, postiže i nižu cenu. Taj način razmišljanja i organizovanja sprovođenja takvog plana kao rezultat ima kvalitetan i brz proboj na tržište. U zadnjih dvadeset godina, procvatom informatičke industrije, otvorilo se veliko tržište za sposobne i kvalitetne ljude. To je uticalo da se pojavi veliki broj firmi koje se bave izradom programske podrške. Na tržištu su mogle opstati samo one firme koje su se mogle nositi sa zahtevima tržišta. Svi su tražili najbrži i najlakši način da bi svoj proizvod izbacili na tržište pre konkurencije. Podela rada pri razvoju programa, kreiranje plana izrade softvera, zatim plana samog izlaska na tržište, dalo je najbolje rešenje za ostvarivanje cilja programerskih firmi. Stvaranje nekog projekta može se posmatrati kroz tri globalne faze: -uočavanje problema (zadavanje zadatka koji moramo da uradimo) -teoretsko pronalaženje metoda rešenja problema -najboljom metodom koju smo pronašli, rešiti problem Pomoću ovog globalnog stvaranja projekta možemo posmatrati razvoj programske podrške. Ako želimo da napravimo program u C-u koji će izračunati kvadratnu jednačinu, potrebno je zadati kvadratnu jednačinu, znati kako se rešava, zatim znati kako se programira u C-u. -zadavši kvadratnu jednačinu, zadajemo problem koji treba rešiti -ako je znamo rešiti, u glavi imamo način rešavanja kvadratne jednačine -programiranje u C-u nam daje mogućnost da ono što smo zaključili implementiramo u ovaj programski jezik. Konstrukcija kvadratne jednačine u glavi, pre nego što dobijeni zadatak ukucamo u kôd, je u stvari modelovanje. Ako je zadatak koji trebamo da rešimo nešto složeniji od kvadratne jednačine, potrebno je sve to staviti na papir. Napravimo pseudo kôd i dijagram toka. Posmatrajući dalje sve složenije zadatke, čija realizacija prelazi okvire mogućnosti jednog čoveka, javlja se potreba za timskim radom, potrebno je nešto što može zameniti i proširiti dijagram toka. Tu stupa na snagu UML. 2.1. Šta je UML? Kao odgovor na ovo pitanje pojavljuje se standardna definicija UML-a. UML ili Unified Modeling Language je grafički jezik za vizueliziranje, specificiranje, konstruisanje i dokumentovanje sistema programske podrške koji je postavljen kao standard od OMG-a. Ako malo fleksibilnije želimo to da objasnimo moramo naglasiti da UML nije programski jezik, to je grafički jezik. Njime nije samo moguće modelovati neki program, već je moguće pratiti razvoj neke građevine, izraditi plan uzgajanja voća u voćnjaku itd. UML predstavlja kolekciju najboljih uspešnih inženjerskih metoda kojima je, iskustveno dokazano, pojednostavljeno modelovanje velikih i složenih sistema. Ako napravimo poređenje između građevinara i programera, možemo reći da je UML standardizovani jezik za izradu nacrta programa. Postoji sedam ciljeva kojima UML kao jezik teži: 1. 2. 3. 4. 5. 6. 7. Pružiti korisniku brz jezik za vizuelno modelovanje kojim će moći u relativno kratkom vremenu napraviti i razmenjivati modele sa određenim značenjem. Pružiti korisniku mogućnost proširenja i stvaranja specijalizovanih delova. Biti nezavisan od programskih jezika i razvojnih procesa Pružiti formalne osnove za razumevanje jezika za modelovanje Podsticanje rasta i razvoja objektno orijentisanih programskih jezika Podrška visoko pozicioniranih razvojnih pojmova kao što su saradnja, okvirni rad, uzorci i komponente Integrisanje i nadopunjavanje praktičnim iskustvom. UML je razvijen sa ciljem da pojednostavi veliki broj objektno orijentisanih razvojnih metoda. 3. STRUKTURA UML-a Da bi lakše razumeli šta je UML i čemu služi moramo znati od čega se on sastoji. UML se sastoji od niza pogleda na arhitekturu (Architectural Views) koji zavise od problema i rešenja, a dele se na: Pogled korišćenja (use case view) Logički pogled (logical view) Pogled paralelnog rada (concurrency view) Pogled na komponente (component view) Pogled postavljanja (deployment view) Pogled korišćenja -pokazuje problem i rešenje onako kako ga vide oni koji postavljaju problem. Logički pogled – pokazuje strukturnu dimenziju problema i rešenja Pogled paralelnog rada – pokazuje dimenziju ponašanja problema i rešenja, a naziva se još i dinamički pogled. Pogled na komponente – pokazuje strukturu i ponašanje realizacije rešenja, a naziva se još i razvojni pogled. Pogled postavljanja – pokazuje strukturu i ponašanje domena u kome je rešenje ostvareno, a naziva se još i fizički pogled ili pogled na razmeštaj. Svaki od ovih pogleda opisan je pomoću UML dijagrama. Njih postoji devet, a svaki pogled je opisan sa jednim ili više dijagrama. UML dijagram je grafička prezentacija skupa elemenata. Dijagrami se crtaju kako bi se vizuelizirao sistem iz različitih perspektiva. Za gotovo sve sisteme, osim onih vrlo jednostavnih, dijagrami predstavljaju poboljšani prikaz elemenata koji čine sistem. Isti elementi mogu se pojaviti u svim dijagramima. Teoretski, dijagram može sadržavati bilo koju kombinaciju stvari i relacija u modelu. U praksi, međutim, samo se mali broj kombinacija pojavljuje, i one su konzistentne sa pet najkorisnijih pogleda koje smo prethodno nabrojali. UML dijagrami: 1. 2. 3. 4. 5. 6. 7. 8. 9. -Dijagram slučajeva korištenja (use case diagram) -Dijagram klasa (class diagrams) -Dijagram objekata (object diagrams) -Dijagram redosleda (sequence diagrams) -Dijagram saradnje (collaboration diagrams) -Dijagram stanja (statechart diagrams) -Dijagram aktivnosti (activity diagrams) -Dijagram komponenti (component diagrams) -Dijagram postavljanja (deployment diagrams) Međutim da bi mogli da razumemo zašto služe svi ovi dijagrami i šta oni znače moramo da vidimo od čega se sastoje. UML se sastoji od dva tipa gradivnih blokova i samih dijagrama, elemenata i relacija. 3.1. Elementi Elementima modela predstavljaju se standardni objektno orijentisani koncepti (klase, objekti, poruke) UML ima četiri vrste elemenata: - Strukturalne elemente (structural things) - Elemente sa ponašanjem (behavioural things) - Grupišuće elemente (grouping things) - Označavajuće elemente (annotational things) 3.1.1 Strukturalni elementi Predstavljaju statičke delove modela i elemente koji su ili konceptualni ili fizički. Osnovni strkturni tipovi su klasa, interfejs, učesnik, slučaj korišćenja, komponenta i čvor. KLASA predstavlja skup objekata koji dele iste atribute, operacije, relacije i semantiku. Klasa INTERFEJS (interface) je kolekcija operacija koja specifira usluge neke klase ili komponente. To je skup poruka koji se može poslati klasi i ne uključuje implementaciju tih operacija. Interfejs se označava krugom i njegovim imenom, nikada neće stajati sam već će biti vezan uz neku klasu ili komponentu koja ga realizuje. Interfejs UČESNIK (actor) je spoljašnji krajnji korisnik Učesnik SLUČAJ KORIŠĆENJA (use case) Prikazuje jednu funkciju sistema kako je vidi spoljašnji učesnik (actor). To je skup sukcesivnih događaja koje sistem izvodi kako bi dobio neki rezultat. Slučaj korišćenja KOMPONENTA (component) je fizički deo sistema koji je saglasan sa skupom interfejsa i pruža njihovu realizaciju. Komponenta ČVOR (node) je fizički element koji postoji pri radu sistema i predstavlja računarski resurs. Obično ima neku memoriju i procesne mogućnosti. Skup komponenti može da bude smešten na jednom čvoru, a može da se premesti sa jednog na drugi čvor. čvor 3.1.2 Elementi ponašanja Ovaj skup elemenata predstavlja dinamički deo UML modela. Postoje samo dva primarna tipa stvari ponašanja. To su interakcija i automat stanja. INTERAKCIJA (interaction) je ponašanje koje uključuje skup poruka koje se razmenjuju između objekata. Interakcija uključuje i brojne druge elemente kao što su poruke, redosledi akcija (ponašanje pokrenuto porukom) i veze između objekata. Grafički, poruka je predstavljena kao linija sa strelicom u jednom smeru i najčešće uključuje i ime operacije. Interakcija AUTOMAT STANJA (state machine) je ponašanje koje opisuje niz stanja kroz koja prolazi objekt ili interakcija u toku svog života. Stanje se grafički predstavlja pravougaonikom zaobljenih temena. Automat stanja 3.1.3 Grupišući elementi Grupišući elementi predstavljaju organizacijski deo UML modela. To su „kutije” u koje se može razložiti UML model. Postoji samo jedan tip grupišućih stvari, a to su paketi (packages). PAKET (package) služi za organizovanje elemenata u grupe. U paket se mogu smestiti strukturni elementi, elementi ponašanja pa i drugi grupišući elementi. Paket postoji samo za vreme razvoja, dok za vreme izvođenja ne postoji. Paket 3.1.4 Elementi označavanja Elementi označavanja odnose se na deo UML modela za objašnjenja. To su komentari koji opisuju, rasvetljavaju, i uvode napomene i ograničenja o elementima modela. Osnovni element označavanja je beleška (note) koja se pridružuje elementu ili skupu elemenata. Beleška 3.2. Relacije UML ima tri osnovne vrste relacija: -Zavisnosti (dependency) - Asocijacije (association) -Generalizacije (generalization) Zavisnost je semantička relacija između dva elementa u kojoj promena jednog (nezavisnog) elementa može da utiče na semantiku drugog (zavisnog) elementa. Zavisnost Asocijacija je strukturalna veza koja opisuje vezu između objekata. Poseban slučaj asocijacije je agregacija, koja predstavlja strukturnu vezu celine i njenih delova. 1...* 1...* Asocijacija Agregacija Generalizacija (generalization), je relacija specijalizacije/generalizacije u kojoj objekti specijalizovanih elemenata (deca) se mogu zameniti objektima generalizovanih elemenata (roditelja). Na ovaj način, deca dele strukturu ponašanje roditelja. Grafički, relacija generalizacije se prikazuje kao puna linija sa šupljom strelicom koja pokazuje prema roditelju. Generalizacija Pripremio Dragan Marković