Professional Documents
Culture Documents
Vizuelizaciju
Specifikaciju
Konstrukciju
Dokumentaciju
UML je jezik
1
Pisanje modela u UML-u se odnosi prvenstveno na sledeću činjenicu: Eksplicitan
model olakšava komunikaciju.
Neke stvari je bolje modelovati tekstualno, ostale grafički. U svim interesantnim
sistemima postoje transcedentne strukture koje se mogu prikazati u programskim
jezicima. UML je grafički jezik.
UML predstavlja više od prostog skupa grafičkih simbola. Tačnije, iza svakog
simbola u UML notaciji stoji bogata semantika. Na ovaj način, jedan projektant može
kreirati model u UML-u a drugi projektant ili lak i neki drugi alat da ga tumači
nedvosmisleno.
UML nije vizuelni progamski jezik, ali modeli mogu da se povežu direktno sa
velikom brojem programskih jezika. Ovo znači da je moguće mapirati model iz UML-a u
programske jezike kao što je Java, C++, ili VIusal Basic, ili čak u tabele u relacionoj bazi
podataka, ili prezistene objekte u objektno orjentisanoj bazi podataka. Stvari koje se
najbolje izražavaju grafički se izražavaju u UML-u a tekstualne koncepte u programskim
jezicima.
Ovo mapiranje omogućava forward engeneering: Generisanje koda iz UML-a u
programski jezik. Obrnuto je takođe moguće, rekonstruisanje modela iz implementacije.
To nije u svakom slučaju moguće, ako ne kodiramo informaciju u implementaciji,
informacija je izgubljena kada resauriramo kod. ZAto postoje alati koji zahtevalju
čovekovu intervenciju. Kombinovanje foreward i reverzibilnog inžinjerstva uvode round-
trip inžinjerstvo.
Pored toga moguća je direktna interpretacija UML modela u cilju simulacije,
pošto je on dovoljno nedvosmislen.
Zdrava softverska organizacija proizvodi sve vreste artifakta pre no što se dođe do
sirovog koda. Među ovim artifikatima se nalaze:
Zahtevi
Arhitektura
Dizajn
Sors kod
Projektni planovi
Testovi
Protipovi
Verzije
2
Zavisno od razvojne kulture, neki od artifakta se tretiraju manje ili više formalno.
Takvi artifakti nisu samo rezultati projekta, već imaju veliku važnost u kontrolisanju,
merenju, i komunikaciju o sistemu tokom razvoja projekta i posle projekta.
UML se poziva na dokumentovanje arhitekture sistema i svih njegovih detalja.
Takođe UML obezbeđuje jezik za izražavanje zahteva za testiranje. Konačno, UML
obezbeđuje jezik za modelovanje aktivnosti u planiranju projekata i upravljanju
verzijama.
1. Stvari
2. Relacije
3. Dijagrami
3
Stvari u UML-u Postoje četiri gradivnih stvari u UML-u
1. Struktiralne stvari
2. Stvari koje opisuju ponašanje
3. Stvari koje opisuju grupisanja
4. Stvari za anotaciju (obeležavanje)
Prvo klasa, prdstavlja skup objekata koji dele iste atribute, operacije, relacije i
semantiku. Klasa implementira jedan ili više interfejsa. Grafički klasa se crta kao
pravougaonik i često uključuje ime, atribute i operacije.
Window
origin
size
open()
close()
move()
display()
ISpelling
4
predstavljaju implementaciju uzoraka koje čine sistem. Grafički kolaboracija je elipsa sa
siprekidanim linijama u okviru koje se nalazi ime kolaboracije.
Chain of
responsibili
Četvrto use case je opis skupa sekvenci akcija koje sistem izvršava i koje daju
rezultat u vrednostima koje za konkretnog učesnika (actor). Use case se koristi da bi
struktuirali stvari koje opisuju ponašanje u sistemu. Use case se realizuje preko
kolaboracije. Grafički, use case se iscrtava sa elipsom (puna linija), sa pridruženim
imenom.
Place
Ostale tri stvari: aktivne klase, komponente i čvorovi su slične klasama, odnosno
opisuju skup objekata koji dele iste atribute, relacije, relacije i semantiku. Svejedno one
su dovoljno različite i potrebne su u modelu za predstavljanje nekih aspekata objektno
orjentsanog sistema, pa zahtevaju specijalan tretman.
Peto, aktivna klasa je klasa čiji objekti imaju jedan ili više procesa ili tredova i
samim timmože inicirati kontrolnu aktivnost. Aktivna klasa je kao klasa, osim što je
aktivnost njenih objekata konkurentna sa aktivnošću osalih elemenata. Grafički, aktivna
klasa se predstavlja isto kao klasa, sa podebljanom spoljnom linijom.
Event manager
suspend()
flush()
5
Šetsto, komponenta je fizički ili zamenljivi deo sistema kome se obraćamo i koji
obezbeđuje skup interfejsa. U sistemu će biti uključene različiti oblici razvojnih
komponenti, kao što je COM+ komponete ili Java Beans, kao i komponente koje su
artifakti rezvojnog procesa, kao što su sors kod fajlovi. Tipične komponente predstavljaju
pakete ili ostale logičke komponente, kao što su klase, interfejsi i kolaboracije. Grafički
komponente se predstavljaju na sledeći način:
orderform.java
Server
display
Drugo state machine, je ponašanje koje specificira sekvencu stanja objekta ili
interakcija koje vrši objekat na određene događaje tokom njegovog životnog ciklusa.
Ponašanje individualne klase ili kolaboracije među klasama mogu biti prikazane sa state
machine. Ona uključuje izvestan broj ostalih elemenata kao što su stanja, tranzicije (tok
od stanja ka stanju), događaji (stvari kao što su trigeri ili tranzicije) i aktivnosti (odgovor
6
na tranzicije). Grafički stanje se prikazuje na sledeći način uključujući ime i eventualno
podstanje (ako postoji)
Waiting
Business
Stvari za anotaciju su stvari koje služe za opis u okviru UML modela. One
predztavljaju komentari koji nam služe da opišemo, osvetlimo ili nazbačimo nešto u
okviru UML modela. Jedna od osnovnih stvai za anotaciju je note koje predtsavlja
jednostavan simbol za obradu ograničenja pridruženih elementu ili kolekciji elemenata.
Grafički nota se predstavlja na sledeći način:
return copy
of self
7
Ovaj element je jedan od osnovnih anotacionih stvari koje uključujemo u UML
model. Obično se koriste da bi snabdeli dijagram sa ograničenjima i komentarima koji se
najbolje opisuju formalnim ili neformalnim tekstom. Takođe postoje varijacije ovih
elemenata, kao što su zahtevi (koji opisuju neko željeno ponašanje modela posmatrano
izvan modela).
1. Zavisnosti
2. Asocijacije
3. Generalizacije
4. Realizacije
Prva, zavisnosti su semantičke relacije između dve stvari u kojima promena jedne
stvari (nezavisne stvari) može da utiče na semantiku druge stvari (zavisne stvari).
Grafički se obeležava na sledeći način (pri čemu može da uključi i labelu):
Druga, asocijacije su strukturalne relacije koje opisuju skup veza, veza između
objekata. Agregacija predstavlja specijalan oblik asocijacije, pri čemu predstavlja
strukturalne relacije među delovima u celini. Grafički se priakzuje na sledeći način (pri
čemu može uključiti i labelu)
0..1
employe employee
8
Ova četiri elemenata su osnovne relacije koje uključujemo u UML modelu.
Takođe postoje varijacije kao što su refinement, trace, include i extend (za zavisnosti).
1. Dijagram klasa
2. Objektni dijagram
3. Use case dijagram
4. Dijagram sekvenci
5. Kolaboracioni dijagram
6. Dijagram stanja
7. Dijagram komponenti
8. Deployment dijagram
Use case dijagram je skup use case-ova i actora-a (specijalni oblik klase) i
njihovih relacija. Oni adresiraju statiči use case pogled na sistem. Ovi dijagrami su
posebno važni u organizovanju i modelovanju ponašanja sistema.
9
Dijagram stanja pokazuje state machine, koja se sastoji iz stanja, tranzicija,
događaja i aktivnosti. On se odnosi na dinamički pogled na sistem. On je posebno važan
u modelovanju ponašanja interfejsa, klasa i kolaboracija i naglašava red odvijanja
događaja objekata, što je posebno pogodno u modelovanju interaktivnih sistema.
Dijagram aktivnosti je poseban oblik dijagrama stanja koji pokazuje tok među
aktivnostima u sistemu. Odnosi se na dinamički pogled na sistem. Vrlo su važni u
modelovanju funkcija sistema i naglašava tok kontrole među objektima.
Ovo nije zatvorena lista dijagrama. Mogu se koristiti različiti alati za uključivanje
različitih vrsta dijagrama, iako je ovih devet često upotrebljivo u praksi.
Pravila UML-a
UML gradivni blokovi nemogu slučajno da se povezuju. KAo jezik, UML ima
više pravila koja specificiraju kako dobro formirani model treba da izgleda. Dobro
formiran model je onaj koji je semantički konzistentan, samodovoljan i u harmoniji sa
ostalim povezanim modelima.
10
Ovakvi, nepotpuni modeli su neizbežni tokom razvoja softevra. Pravila koja UML
omogućuje UML – ali ne forsira – je da se oslonimo na najbitnija pitanja analize, dizajna
i implementacije, a da kasnije te modele doradimo.
1. Specifikaije
2. Ukrasi
3. Zajedničke podele
4. Mehanizmi za proširivanje
11
Transaction
+ execute()
+ rollback()
# prority()
- timestamp()
Jan :
Customer
name
address
phone : Customer
Elyse
Na datoj slici, postoji jedna klasa, čije je ime Customer, zajedno sa tri objekta:
Jan (koji je eksplicitno markiran da pripada Customer objektu), :Customer
(anonimni Customer objekat), i Elyse (koji je u specifikaciji markiran kao
Customer objekat, iako nije ovde eksplicitno prikazano).
Skoro svaki gradivni blok u UML-u ima neki oblik klasa/objekat dihotomije. Na
primer, možemo posmatrati use case i use case i nstance, kompnente i instance
komponenti, čvorove i instance čvorova, itd... Grafički, UML razlikuje objekte
korišćenjem istog simbola kao i klasa pri čemu je naziv objekta jednostavno podvučen.
Drugo, interfejs i implementacija su odvojene stveri. Interfejs deklariše ugovor, a
implementacija predstavlja konkretnu realizaciju ugovora, odgovornog za potpuno
ispunjavanje kompletne semantike interfejsa. U UML-u moguće je modelovati interfejs i
implementaciju na sledeći način:
12
IUnknow spellingwizard.dll
ISpellin
Stereotipove
Tagged vrednosti
Ograničenja
EventQueue
{versions = 3.2
author = egb}
“exception”
overflow
add() {ordered}
remove()
flush()
13
Tagged value proširuju osbine UML gradivnih blokova, dozvoljavajući vam da
kreirate nove informacije u specifikacji elementa. Na primer, ako radite sa proizvodom
koji ima mnoge verzije i tada želimo da pratimo autore i verzije neke kreitične
apstrakcije. Autor i verzija nije primitiva u UML konceptu. Njih možemo dodtati kao
gradivne blokove, na primer klase, uključujući nove tagged vrednosti datom gradivnom
bloku. Na prethodnoj slici klasa EventQueue je proširena sa tagged vrednostima.
Arhitektura
Kao što pokazuje sledeća slika, arhitektura softverski intenzivnih sistema može
biti prikazana sa pet povezanih pogleda. Svaki pogled je projekcija u organizaciju i
strukturu sistema i fokusira se na praktični aspekt sistema.
14
vocabulary system assembly
functionality configuration -
Design Implementation management
view view
Use case view sistema razmatra use caseo-ve koji opisuju ponašanje sistema
posmatrano od strane krajnjih korisnika, analitičara i testera. Ovaj pogled ne specificira
organizaciju softverskog sistema. Ovo pre svega specificira ono što oblikuje sistemsku
arhitekturu. Sa UML-om, statički aspekt ovog pogleda je obuhvaćen u use case
dijagramima, dok dinamički aspekt ovog pogleda je obuhvaćen dijagramima interakcije,
dijagrami ma stanjai aktivacionim dijagramima.
Design view sistema uključuje klase, interfejse i kolaboracije koji formiraju rečnik
problema kao i rečnik rešenja. Ovaj pogled prvenstveno podržava funkcionalne zahteve
sistema, što uključuje usluge koje koje sistem obezbeđuje korisnicima. Sa UML-om,
statički aspekt ovog pogleda je prikazan u dijagramima klasa i objekata; dinamički aspekt
ovog pogleda se prikazuje interakcionim dijagramima, dijagramima stanja i aktivacionim
dijagramima.
15
deployment dijagramima, dok se dinamički aspekt prikazuje interakcionim dijagramima,
dijagramima stanja i aktivacionim dijagramima
Svaki od ovih pet pogleda može da stoji sam za sebe, čime se fokusiramo na ona
pitanja arhitekture softvera koje nas najviše interesuju. Ovih pet dijagram su i
mešusobnoj vezi – čvorovi u deployment pogledu sadržavaju komponente
implementacionog pogleda koji sa druge strane predstavlja fizičku realizaciju klasa,
interfejsa, kolaboracija i aktivnih klasa iz dizajn i procesnog pogleda. UML omogućava
da izrazite svaki od ova pet pogleda.
UML je pre svega pocesno nezavistan, ćto znači da naije konkretno vezan ni za
koji konkretan životni cilus razvoja softvera. Svejedno, da bi izvukli najviše iz UML-a,
moramo razmatrati procese koji su:
16
Inspekcija je prva faza procesa, gde praktično “zasejana” ideja projekta je
razvijena do tog nivoa da postaje, bar interno, dovoljna formirana da bi prešli u fazu
elaboracije.
Jedan element koji se prostire kroz sve četiri faze je iteracija. Iteracija je odvojen
skup aktivnosti, sa osnovnim planom i kriterijumima razvojakoje rezultiraju u izdanju ili
internom ili eksternom. Ovo znači da se životni tok razvoja softvera u stvari predstavlja
kao niz izvršnih izdanja arhitekture sistema, što samo po sebi povlači i različite poglede
na srhitekturu sistema.
17