SlideShare a Scribd company logo
1 of 167
Download to read offline
Elektrotehniči fakultet Univerziteta u Beogradu
Katedra za računarsku tehniku i informatiku
skripta za predmet
PROJEKTOVANJE SOFTVERA
Igor Tartalja
Beograd, 2011.
Besplatan primerak This copy is not for sale
Ova skripta je objavljena u okviru projekta WUS Austria MSDP 2011 The publishing of this script is part of the project MSDP 2011
finansiranog od strane Austrijske agencije za razvoj financed by Austrian Development Agency through WUS Austria
Predgovor 3
Projektovanje softvera
Predgovor
Projektovanje softvera je inženjerska disciplina i ključna faza u razvoju softvera. Ono se
zasniva na principima koji se odnose prvenstveno na modeliranje strukture i ponašanja
softvera, kao i na primenu projektnih uzoraka u rešavanju problema. Kao i svaki drugi
inženjerski proizvod, softver u svome nastajanju prolazi kroz prepoznatljive faze, od
specifikacije zahteva, pa do instalacije na ciljne mašine. Instalacijom tek počinje životni vek
softvera kao tehničkog proizvoda. Život softverskog proizvoda se sastoji od njegovog
korišćenja, popravki i unapređenja. Iskustva stečena u toku životnog veka softverskog
proizvoda često dovode do nastanka novih proizvoda, njegovih funkcionalnih naslednika. Ako
se ta iskustva formalno dokumentuju kroz model i prepoznate projektne uzorke, mogu se
primeniti i mnogo šire. Praktično isti principi projektovanja softvera se primenjuju, kako na
razvoj novog proizvoda, tako i na održavanje i unapređivanje postojećeg proizvoda u toku
njegovog životnog veka.
Predmet Projektovanje softvera, koji se drži na osnovnim i master studijama Softverskog
inženjerstva i Računarske tehnike i informatike na Elektrotehničkom fakultetu, Univerziteta u
Beogradu se koncentriše na dva centralna aspekta projektovanja softvera. To su modeliranje
objektno-orijentisanog softvera i primena projektnih uzoraka u koncipiranju arhitekture
softvera. Ova skripta sadrže materijale koji se koriste na predavanjima iz predmeta
Projektovanje softvera. Skripta su nastala sa željom da se studentima koji pohađaju ovaj
predmet stave na raspolaganje materijali koji se koriste na predavanjima. Predavanja se drže
uz korišćenje elektronskih prezentacija sa slajdovima, te je sadržaj skripti praktično jednak
sadržaju slajdova koji se koriste na predavanjima. Prvobitni tekst skripti je predstavljao samo
podsetnik nastavniku za držanje predavanja. Posle višegodišnjeg iskustva u držanju nastave
iz ovog predmeta, te doterivanja materijala kroz više iteracija, autor se odlučio da objavi
skripta u ovom obliku i stavi ih na raspolaganje studentima koji pohađaju predmet. Zato se
skreće pažnja čitaocima da su skripta namenjena praktično samo onima koji prate
predavanja na predmetu. Ona ne predstavljaju samostalan udžbenik iz kojeg se predmet
može valjano naučiti. Ona su praktični podsetnik na materiju koja se izlaže na predavanjima.
Treba imati u vidu da se na predavanjima daju i mnoga usmena objašnjenja pojmova i
principa koji su samo pomenuti u skriptama. Bez praćenja predavanja, takvi pojmovi i
principi se teško mogu dobro razumeti samo na osnovu čitanja skripti. Takođe, pretpostavlja
se da čitaoci ovih skripti dobro vladaju pojmovima i principima koji se prethodno izučavaju na
predmetima iz proceduralnog i objektno-orijentisanog programiranja.
U pripremi skripti korišćena je literatura navedena na kraju skripti. Najveći deo teksta na
jezgroviti način, kroz teze, izlaže materiju iz te literature. Ujedno, navedeni izvori
predstavljaju udžbenike i dopunsku literaturu predmeta Projektovanje softvera. Osim uvoda u
projektovanje softvera, skripta sadrže dva dela. Prvi deo je posvećen objektno-orijentisanom
modeliranju na jeziku UML (Unified Modeling Language). Drugi deo je posvećen primeni
projektnih uzoraka u projektovanju softvera. Iako je materija u skriptama izložena na
navedeni način, metodologija držanja predmeta je takva da se teme iz ove dve šire oblasti
4 Predgovor
Elektrotehnički fakultet u Beogradu
kombinuju, tako da se na predmetu simultano napreduje kroz obe oblasti. Na taj način se
studentima omogućava da vrlo rano počnu da uvežbavaju metodologiju projektovanja na
jeziku UML uz korišćenje projektnih uzoraka. Iz tog razloga su i projektni uzorci izloženi
redosledom primerenim blagovremenom uvežbavanju, počeviši od onih koje je lakše razumeti
i primeniti, kombinujući ih sa do tada obrađenim dijagramima jezika UML.
Autor se zahvaljuje svima koji su na bilo koji način doprineli nastanku ovih skripti. Posebnu
zahvalnost autor duguje kolegi mr Laslu Krausu. Dugogodišnja saradnja i plodne diskusije o
problematici, kako ovog predmeta, tako i predmeta iz objektno-orijentisanog programiranja,
pomogle su autoru da izgradi terminologiju i razvije metodologiju rada na predmetu.
Kompletiranje završne verzije ovih skripti pomogla je Austrijska agencija za razvoj, kroz
projekat Master Studies Development Program (MSDP 2011), WUS Austrija. Recenzenti
izveštaja na projektu MSDP 2011, Johann Höchtl i Sylvia Purgathofer-Müller, dali su korisne
savete da skripta dobiju konačni oblik. Konačno, autor se zahvaljuje studentima ranijih
generacija koji su ukazali na propuste i greške u ranijim materijalima na osnovu kojih su
nastala skripta u ovom obliku.
U uverenju da će skripta biti od koristi studentima koji prate predmet Projektovanje softvera,
autor se nada da će im izložena materija biti interesantna i podsticajna, kako za pripremu
ispita, tako i za buduću inženjersku praksu. Moli ih da čitaju pažljivo, a za sve propuste i
greške koje otkriju i prijave mu, biće im veoma zahvalan.
Beograd, 15.06.2011. Autor
Sadržaj 5
Projektovanje softvera
Sadržaj
Predgovor..........................................................................................................................................3
Sadržaj...............................................................................................................................................5
Uvod ................................................................................................................................................13
Osnovni pojmovi ..................................................................................................................................... 13
Objektno-orijentisana analiza ............................................................................................................... 13
Objektno-orijentisano projektovanje.................................................................................................... 13
Objektno-orijentisano programiranje .................................................................................................. 13
Objektno-orijentisani jezik .................................................................................................................... 14
Principi OO modela................................................................................................................................ 14
Apstrakcija i kapsulacija........................................................................................................................ 14
Modularnost i hijerarhija....................................................................................................................... 14
Tipizacija i polimorfizam ....................................................................................................................... 15
Konkurentnost i perzistencija................................................................................................................ 15
Model i modeliranje................................................................................................................................ 15
Ciljevi modeliranja ................................................................................................................................. 16
OO model i pogledi na model................................................................................................................. 16
Dijagrami................................................................................................................................................. 16
Logički i fizički aspekti modela ............................................................................................................. 16
Statički i dinamički aspekti modela....................................................................................................... 16
Notacija za opis modela.......................................................................................................................... 17
Alati za modeliranje................................................................................................................................ 17
Pregled jezika UML........................................................................................................................18
Standardni jezik za modeliranje UML ................................................................................................. 18
Korisnici UML-a..................................................................................................................................... 18
Praistorija UML-a .................................................................................................................................. 18
Istorija UML-a........................................................................................................................................ 19
Konceptualni model UML-a .................................................................................................................. 19
Stvari........................................................................................................................................................ 19
Stvari strukture – klase i interfejsi........................................................................................................ 20
Stvari strukture – slučaj korišćenja i saradnja.................................................................................... 20
Stvari strukture – komponenta i čvor................................................................................................... 21
Stvari ponašanja ..................................................................................................................................... 21
Stvari organizacije i anotacije................................................................................................................ 22
Relacije..................................................................................................................................................... 22
Dijagrami................................................................................................................................................. 23
Statički dijagrami ................................................................................................................................... 23
6 Sadržaj
Elektrotehnički fakultet u Beogradu
Dinamički dijagrami............................................................................................................................... 23
Pravila UML-a ........................................................................................................................................ 24
Opšti mehanizmi UML-a........................................................................................................................ 24
Specifikacije............................................................................................................................................. 24
Ukrasi....................................................................................................................................................... 25
Opšte podele ............................................................................................................................................ 25
Mehanizmi proširivosti........................................................................................................................... 25
Stereotipovi.............................................................................................................................................. 26
Obeležene vrednosti................................................................................................................................ 26
Ograničenja............................................................................................................................................. 26
Prvi primer...................................................................................................................................... 27
Uvod ......................................................................................................................................................... 27
Primer na Javi......................................................................................................................................... 27
Ključne apstrakcije................................................................................................................................. 27
Grupisanje............................................................................................................................................... 28
Ponašanje................................................................................................................................................. 28
Komponente ............................................................................................................................................ 28
Dijagrami klasa .............................................................................................................................. 29
Uvod ......................................................................................................................................................... 29
Klasifikator.............................................................................................................................................. 29
Klasa......................................................................................................................................................... 29
Simbol klase............................................................................................................................................. 29
Atributi i operacije.................................................................................................................................. 30
Dodatne mogućnosti ............................................................................................................................... 30
Tipovi podataka ...................................................................................................................................... 31
Osobine klasa........................................................................................................................................... 31
Sintaksa atributa..................................................................................................................................... 31
Sintaksa operacije................................................................................................................................... 31
Relacije..................................................................................................................................................... 32
Zavisnost.................................................................................................................................................. 32
Generalizacija.......................................................................................................................................... 32
Asocijacija................................................................................................................................................ 33
Realizacija................................................................................................................................................ 33
Primer osnovnih relacija........................................................................................................................ 33
Ukrasi asocijacije.................................................................................................................................... 34
Multiplikativnost..................................................................................................................................... 34
Agregacija................................................................................................................................................ 34
7
Projektovanje softvera
Kompozicija............................................................................................................................................. 34
Primer asocijacija ................................................................................................................................... 35
Navigacija ................................................................................................................................................ 35
Pravo pristupa preko asocijacije........................................................................................................... 35
Ugnežđivanje........................................................................................................................................... 35
Dijagrami paketa ............................................................................................................................36
Uvod ......................................................................................................................................................... 36
Paket......................................................................................................................................................... 36
Imenovanje paketa i elemenata ............................................................................................................. 36
Vlasništvo i pravo pristupa .................................................................................................................... 37
Notacija.................................................................................................................................................... 37
Relacije..................................................................................................................................................... 37
Principi modeliranja............................................................................................................................... 38
Stereotipovi paketa ................................................................................................................................. 39
Dijagrami objekata .........................................................................................................................40
Uvod ......................................................................................................................................................... 40
Namena .................................................................................................................................................... 40
Objekti ..................................................................................................................................................... 40
Veze .......................................................................................................................................................... 40
Primer – uzorak Kompozicija................................................................................................................ 41
Primer - relacija “pohađa” .................................................................................................................... 41
Dijagrami interakcije......................................................................................................................42
Uvod ......................................................................................................................................................... 42
Kontekst interakcije ............................................................................................................................... 42
Poruka...................................................................................................................................................... 42
Vrste dijagrama interakcije................................................................................................................... 43
Dijagrami sekvence i komunikcije ........................................................................................................ 43
Uloge i njihove linije života.................................................................................................................... 44
Konektori................................................................................................................................................. 44
Slanje i prijem poruke............................................................................................................................ 45
Sekvenciranje poruka............................................................................................................................. 46
Sekvenciranje poruka u nitima.............................................................................................................. 47
Sintaksa poruke....................................................................................................................................... 47
Životni vek objekata i veza..................................................................................................................... 47
Događanje izvršenja (fokus kontrole)................................................................................................... 47
Primer Bankomat – dijagram sekvence................................................................................................ 48
Primer Bankomat – dijagram komunikacije ....................................................................................... 48
8 Sadržaj
Elektrotehnički fakultet u Beogradu
Iteracije i grananje.................................................................................................................................. 49
Fragment (okvir) interakcije ................................................................................................................. 49
Operatori kombinovanih fragmenata................................................................................................... 49
Primer operatora okvira interakcije..................................................................................................... 50
Dijagrami slučajeva korišćenja ..................................................................................................... 51
Uvod ......................................................................................................................................................... 51
Slučajevi korišćenja................................................................................................................................ 51
Ponašanje slučaja korišćenja ................................................................................................................. 51
Primer opisa ponašanja.......................................................................................................................... 51
Akteri ....................................................................................................................................................... 52
Relacija komunikacije ............................................................................................................................ 52
Relacija uključivanja.............................................................................................................................. 52
Primer – korisnici foruma...................................................................................................................... 53
Relacija proširivanja .............................................................................................................................. 53
Tačke proširenja slučaja korišćenja...................................................................................................... 54
Relacija generalizacije............................................................................................................................ 54
Okvir subjekta......................................................................................................................................... 55
Primer – Info sistem fakulteta ............................................................................................................... 55
Dijagrami aktivnosti....................................................................................................................... 56
Uvod ......................................................................................................................................................... 56
Odnos prema drugim dijagramima ...................................................................................................... 56
Aktivnosti i akcije ................................................................................................................................... 56
Aktivnosti................................................................................................................................................. 57
Akcije ....................................................................................................................................................... 57
Elementi dijagrama aktivnosti............................................................................................................... 58
Pseudočvorovi, tranzicije, konektori..................................................................................................... 58
Sekvencijalna grananja .......................................................................................................................... 59
Primeri grananja i iteracije.................................................................................................................... 59
Konkurentna grananja........................................................................................................................... 59
Tok objekata............................................................................................................................................ 60
Primer ...................................................................................................................................................... 60
Plivačke staze........................................................................................................................................... 60
Hijerarhijske staze i particije ................................................................................................................ 61
Primer dijagrama aktivnosti.................................................................................................................. 62
Izuzeci ...................................................................................................................................................... 62
Signali i događaji..................................................................................................................................... 63
Primer slanja i prihvatanja signala....................................................................................................... 63
9
Projektovanje softvera
Oblast ekspanzije.................................................................................................................................... 64
Centralni bafer........................................................................................................................................ 64
Skladište podataka.................................................................................................................................. 65
Dijagrami stanja .............................................................................................................................66
Uvod ......................................................................................................................................................... 66
Kontekst primene automata stanja....................................................................................................... 66
Elementi dijagrama stanja..................................................................................................................... 66
Stanja i podautomati stanja................................................................................................................... 66
Elementi stanja........................................................................................................................................ 67
Primer stanja........................................................................................................................................... 67
Pseudostanja i specijalna stanja ............................................................................................................ 68
Prelazi ...................................................................................................................................................... 68
Primer dijagrama stanja........................................................................................................................ 69
Mealy i Moor automati........................................................................................................................... 69
Primer automata Mealy-jevog tipa ....................................................................................................... 69
Složena stanja.......................................................................................................................................... 69
Sekvencijalna podstanja......................................................................................................................... 70
Primer sekvencijalnih podstanja........................................................................................................... 70
Stanje sa istorijom .................................................................................................................................. 71
Konkurentna podstanja ......................................................................................................................... 71
Primer konkurentnih podstanja............................................................................................................ 72
Slanje signala........................................................................................................................................... 72
Dijagrami klasa – napredniji pojmovi ...........................................................................................73
Aktivne klase ........................................................................................................................................... 73
Procesi i niti............................................................................................................................................. 73
Aktivne klase - notacija .......................................................................................................................... 73
Šabloni ..................................................................................................................................................... 74
Šabloni - notacija .................................................................................................................................... 74
Izuzeci ...................................................................................................................................................... 74
Klasa asocijacije...................................................................................................................................... 74
N-arna asocijacija ................................................................................................................................... 75
Kvalifikacija ............................................................................................................................................ 75
Specifikator interfejsa (UML 1) ............................................................................................................ 76
Generalizacioni skupovi ......................................................................................................................... 76
Notacija i primer..................................................................................................................................... 76
Metaklasa................................................................................................................................................. 77
Powertype ................................................................................................................................................ 77
10 Sadržaj
Elektrotehnički fakultet u Beogradu
Konteksti relacije realizacije.................................................................................................................. 77
Parametrizovana kolaboracija .............................................................................................................. 78
Projektni uzorci....................................................................................................................................... 78
Standardni stereotipovi klasifikatora ................................................................................................... 78
Standardni stereotipovi relacije zavisnosti........................................................................................... 79
Standardni stereotipovi ostalih relacija................................................................................................ 79
Dijagrami složene strukture........................................................................................................... 80
Uvod ......................................................................................................................................................... 80
Notacija: delovi i portovi........................................................................................................................ 80
Konektori................................................................................................................................................. 80
Primer ...................................................................................................................................................... 81
Multiplikativnost..................................................................................................................................... 81
Saradnja................................................................................................................................................... 82
Događanje saradnje................................................................................................................................ 82
Dijagrami komponenata ................................................................................................................ 83
Uvod ......................................................................................................................................................... 83
Najčešće primene .................................................................................................................................... 83
Komponenta ............................................................................................................................................ 83
Grafička notacija .................................................................................................................................... 83
Artefakt.................................................................................................................................................... 84
Komponente i klase/interfejsi ................................................................................................................ 84
Port........................................................................................................................................................... 84
Port i interfejsi ........................................................................................................................................ 86
Vrste artefakata i stereotipovi ............................................................................................................... 86
Paketi i relacije zavisnosti ...................................................................................................................... 86
Primer dijagrama komponenata ........................................................................................................... 87
Dijagrami raspoređivanja .............................................................................................................. 88
Uvod ......................................................................................................................................................... 88
Najčešće primene .................................................................................................................................... 88
Čvorovi..................................................................................................................................................... 88
Organizovanje čvorova........................................................................................................................... 89
Čvorovi, komponente i artefakti............................................................................................................ 89
Uređaji i izvršna okruženja.................................................................................................................... 89
Veze .......................................................................................................................................................... 90
Primer – hardverska konfiguracija....................................................................................................... 90
Primer – čvorovi i artefakti.................................................................................................................... 90
Dijagrami interakcije - napredniji pojmovi................................................................................... 91
11
Projektovanje softvera
Dijagrami pregleda interakcije.............................................................................................................. 91
Razlike od dijagrama aktivnosti............................................................................................................ 91
Grafička notacija .................................................................................................................................... 91
Primer – dijagram pregleda interakcije ............................................................................................... 92
Vremenski dijagrami.............................................................................................................................. 92
Grafička notacija .................................................................................................................................... 93
Primer vremenskog dijagrama.............................................................................................................. 93
Arhitektura metamodeliranja.........................................................................................................94
Uvod ......................................................................................................................................................... 94
Četvoronivoska arhitektura................................................................................................................... 94
Opis nivoa arhitekture............................................................................................................................ 94
Primer ...................................................................................................................................................... 95
Meta-metamodel ..................................................................................................................................... 95
Metamodel............................................................................................................................................... 95
Model ....................................................................................................................................................... 96
Korisnički objekti ................................................................................................................................... 96
Analogija.................................................................................................................................................. 96
Uvod ................................................................................................................................................97
Elementi uzorka..............................................................................................................................97
Naziv uzorka............................................................................................................................................ 97
Postavka problema ................................................................................................................................. 97
Opis rešenja............................................................................................................................................. 98
Posledice................................................................................................................................................... 98
Primer primene uzoraka: MVC .....................................................................................................98
Model – View komunikacija .................................................................................................................. 98
Komponovanje prikaza .......................................................................................................................... 99
Model – Controller komunikacija......................................................................................................... 99
Klasifikacija projektnih uzoraka..................................................................................................100
Kriterijum namene ............................................................................................................................... 100
Kriterijum domena............................................................................................................................... 100
Karakteristike vrsta uzoraka............................................................................................................... 100
Drugi odnosi između uzoraka.............................................................................................................. 101
Prostor projektnih uzoraka ................................................................................................................. 101
Katalog projektnih uzoraka..........................................................................................................101
UML notacija za opis uzoraka .....................................................................................................102
Unikat............................................................................................................................................103
Kompozicija...................................................................................................................................105
12 Sadržaj
Elektrotehnički fakultet u Beogradu
Prototip ......................................................................................................................................... 108
Posmatrač..................................................................................................................................... 110
Iterator.......................................................................................................................................... 113
Dekorater...................................................................................................................................... 117
Strategija....................................................................................................................................... 120
Šablonski metod ........................................................................................................................... 122
Adapter.......................................................................................................................................... 124
Stanje ............................................................................................................................................ 127
Podsetnik ...................................................................................................................................... 129
Muva ............................................................................................................................................. 131
Fabrički metod ............................................................................................................................. 133
Apstraktna fabrika ....................................................................................................................... 135
Fasada .......................................................................................................................................... 138
Posrednik...................................................................................................................................... 140
Zastupnik...................................................................................................................................... 143
Most .............................................................................................................................................. 146
Komanda....................................................................................................................................... 149
Lanac odgovornosti...................................................................................................................... 152
Graditelj........................................................................................................................................ 155
Posetilac........................................................................................................................................ 158
Interpreter..................................................................................................................................... 162
Literatura...................................................................................................................................... 166
Uvod 13
Projektovanje softvera
Uvod
Osnovni pojmovi
• Svaki ozbiljniji projekat prolazi kroz faze:
analiza, projektovanje, implementacija, testiranje
– slično je sa SW projektima, kroz faze se prolazi iterativno
• Objektno-orijentisana metodologija razvoja
– dominantna u proizvodnji softvera danas
• Pojmovi
– objektno-orijentisana analiza – OOA
– objektno-orijentisano projektovanje – OOD
– objektno-orijentisano programiranje – OOP
– objektno-orijentisani jezik – OOL
Objektno-orijentisana analiza
• Tradicionalne tehnike strukturirane analize
– fokus na toku podataka u sistemu
• Booch (1994): Objektno-orijentisana analiza je metod analize koji ispituje zahteve
iz perspektive klasa i objekata pronađenih u rečniku iz domena problema
• Proizvod OOA
– konceptualni model - ulaz u fazu OOD
Objektno-orijentisano projektovanje
• Tradicionalno strukturirano projektovanje
– fokus na algoritamskim apstrakcijama
• Booch (1994): Objektno-orijentisano projektovanje je metod projektovanja
koji obuhvata
– proces OO dekompozicije
– notaciju za predstavljanje
• logičkih i fizičkih
• statičkih i dinamičkih
aspekata modela sistema koji se projektuje
• Proizvod OOD
– model projektovane aplikacije ili sistema – ulaz u fazu OOP
Objektno-orijentisano programiranje
• Tradicionalno strukturirano programiranje
– fokus na implementaciji algoritama
• Booch (1994): Objektno-orijentisano programiranje je metod implementacije
po kojem su:
– programi organizovani kao kolekcije objekata koji sarađuju
– svaki objekat predstavlja instancu neke klase i
– sve klase su članovi neke hijerarhije klasa u kojoj su klase povezane relacijama nasleđivanja
• Proizvod OOP
– izvršna aplikacija ili sistem
14 Uvod
Elektrotehnički fakultet u Beogradu
Objektno-orijentisani jezik
• Cardelli & Wegner (1985): Jezik je objektno-orijentisan ako i samo ako ispunjava:
– da podržava objekte koji su apstrakcije podataka sa interfejsom preko imenovanih operacija i
skrivenim lokalnim stanjem
– da objekti imaju pridružen tip (klasu)
– da tipovi (klase) mogu nasleđivati atribute nadtipa (natklase)
• Ako jezik samo ne podržava nasleđivanje naziva se objektno-baziranim jezikom
• Objektno-orijentisani jezici su:
– Simula, Smalltalk, Object Pascal, Eiffel, Python, Ada95, C++, Java, C#, Visual Basic.NET, ...
• Objektno-bazirani jezici
– Ada83, VisualBasic v6,...
Principi OO modela
• Booch OOA&D (1994):
Osnovni (obavezni) Dodatni (neobavezni)
apstrakcija tipizacija
kapsulacija konkurentnost
modularnost perzistencija
hijerarhija
• Modifikacija:
Osnovni (obavezni) Dodatni (neobavezni)
apstrakcija konkurentnost
kapsulacija perzistencija
modularnost
hijerarhija
polimorfizam
Apstrakcija i kapsulacija
• Shaw (1984): Apstrakcija je uprošćeni opis ili specifikacija sistema koja naglašava
neke od detalja ili osobina, dok potiskuje druge
• Booch (1994): Apstrakcija ističe esencijalne karakteristrike objekta koje ga razlikuju
od drugih vrsta objekata i tako definiše jasne konceptualne granice iz perspektive
posmatrača
• Kapsulacija je proces sakrivanja onih elemenata apstrakcije
koji definišu strukturu i ponašanje
• Kapsulacija služi da razdvoji konceptualni interfejs od implementacije apstrakcije
Modularnost i hijerarhija
• Modularnost je osobina sistema da se razlaže
na skup kohezivnih i slabo spregnutih modula
• Moduli su fizičke jedinice (nezavisno prevođenje)
– predstavljaju komponete sistema
– mogu se održavati nezavisno
Uvod 15
Projektovanje softvera
• Hijerarhija je rangiranje ili uređivanje apstrakcija
• Nasleđivanje - “is a” hijerarhija
– jednostruko/višestruko
– potpuno (javno)/strukturno (privatno)
• Sadržanje - “part of” hijerarhija
– po vrednosti/po referenci (relevantno u C++, ali ne u Javi)
– agregacija/kompozicija
Tipizacija i polimorfizam
• Tipizacija je osobina da se objekti različitih klasa ne mogu uopšte
ili se mogu zamenjivati na ograničene načine
– stroga i slaba tipizacija
– statička i dinamička tipizacija (vezivanje)
• Dinamička tipizacija i dinamičko vezivanje
– tenički preduslov za ispoljavanje polomorfizma
• Polimorfizam je osobina da se objekat kojem se pristupa
kao objektu osnovne klase ponaša različito:
– kao objekat osnovne klase ill kao objekat izvedene klase
– ponašanje zavisi od dinamičkog tipa objekta, ne statičkog tipa reference
• Polimorfizam objekta se zasniva na virtuelnim metodama
Konkurentnost i perzistencija
• Principi koji se dobro uklapaju u OO paradigmu
• Nisu suštinski principi koji određuju da li je softver OO
– OO softver ih nemora posedovati
– Softver koji nije OO ih može posedovati
• Konkurentnost je osobina koja razlikuje aktivne objekte od pasivnih
– proces - ima vlastiti adresni prostor (tipično njime upravlja OS)
– nit - deli isti adresni prostor sa drugim nitima
• Perzistencija je osobina po kojoj se postojanje objekta proteže
– kroz vreme (obj. nastavlja da živi nakon nestanka njegovog stvaraoca)
– kroz prostor (obj. se premešta iz adresnog prostora u kojem je stvoren)
Model i modeliranje
• Model je pojednostavljenje realnosti
• Model nekog sistema je apstrakcija tog realnog sistema
iz određenog ugla posmatranja
• Osnovna namena modela
– da se sistem koji se razvija bolje razume
• Modeliranje je važnije što je sistem kompleksniji
– kompleksnost je odlika današnjih SW sistema
• Savremena metodologija razvoja softvera
– Model Driven Development (MDD)
16 Uvod
Elektrotehnički fakultet u Beogradu
Ciljevi modeliranja
• Model pomaže da se sistem vizuelizuje
• Model omogućava da se specificira
– struktura sistema
– ponašanje sistema
• Model daje šablon koji usmerava konstrukciju sistema
• Model dokumentuje projektne odluke koje se donose
• Model omogućava ispitivanje projektnih odluka po relativno niskoj ceni
OO model i pogledi na model
• Model OO analize i projektovanja obuhvata više pogleda na sistem koji se razvija
• Dve dimenzije pogleda na sistem:
– logički/fizički aspekti
– statički/dinamički aspekti
• AiP OO sistema se obavlja u terminima klasa, objekata, njihovih relacija i interakcija
• Tokom AiP koriste se različiti uglovi gledanja na model sistema u datom 2D prostoru
Dijagrami
• Za svaki pogled na model sistema može se definisati adekvatan dijagram
• Svaki dijagram predstavlja jednu projekciju modela
• Primer - aplikacija sa 100 klasa:
– potrebno je više klasnih dijagrama (svaki prikazuje jedan pogled na model)
• Jedno ime na svakom dijagramu označava isti entitet
(sa izuzetkom operacija zbog preklapanja imena)
Logički i fizički aspekti modela
• Logički model sistema
– opisuje ključne apstrakcije i mehanizme koji
• obrazuju prostor problema ili
• definišu arhitekturu sistema
– definiše
• strukturu i relacije između klasa
• relacije i interakcije između objekata
• Fizički model sistema
– opisuje konkretnu softversku i hardversku kompoziciju
– definiše arhitekturu modula i arhitekturu procesa
Statički i dinamički aspekti modela
• Statički aspekti modela se fokusiraju na strukturu sistema
• Dinamički aspekti modela se fokusiraju na ponašanje sistema
• Realni sistemi uvek imaju dinamičko ponašanje:
– objekti se kreiraju i uništavaju
– objekti šalju poruke drugim objektima nekim redosledom
– spoljašnji događaji izazivaju reakcije izvesnih objekata
Uvod 17
Projektovanje softvera
Notacija za opis modela
• Nekoliko notacija zaslužuju posebnu pažnju:
– Booch i OMT notacija (iz istorijskih razloga)
– UML notacija (standard)
• Pogodnosti standardne formalne grafičke notacije:
– olakšava se komunikacija između korisnika i članova razvojnog tima
– projektant se rasterećuje od nebitnih detalja i koncentriše se na bitne
– omogućava se upotreba automatizovanih alata
za proveru konzistencije i korektnosti projekta ili izvršavanje modela
• Nije neophodno koristiti celu notaciju
– na primer Booch Lite, UML Basic (UML User Guide)
• Potrebno je da notacija omogućava različit stepen detaljnosti
(ponekad samo grube skice)
• Notacija treba da bude nezavisna od programskog jezika
– neki elementi notacije nemaju direktnu podršku u konkretnom jeziku
Alati za modeliranje
• IBM Rational: Software Architect
(Rose, Rose XDE Developer, Software Modeler)
http://www-01.ibm.com/software/rational/products/swarchitect/
• Borland: Together
http://www.borland.com/us/products/together/index.aspx
• Gentleware: Poseidon for UML
http://www.gentleware.com
• Open Source: StarUML
http://staruml.sourceforge.net/en/
• Altova: Umodel
http://www.altova.com/download/umodel/uml_tool.html
• Omondo: EclipseUML
http://www.omondo.com
• Sparx Systems: Enterprise Architect
http://www.sparxsystems.com
• Visual Paradigm: Visual Paradigm for UML
http://www.visual-paradigm.com/product/vpuml
• Embarcadero Technologies: ER/Studio Software Architect
http://www.embarcadero.com/products/er-studio-software-architect
• Pregled alata:
http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools
18 UML – Pregled jezika
Elektrotehnički fakultet u Beogradu
Pregled jezika UML
• Materijal prireman na osnovu:
– Booch,G., Rumbaugh,J., Jacobson,I., The Unified Modeling Language User Guide,
2nd
Edition, Addison Wesley, May 2005
– Rumbaugh,J., Jacobson,I., Booch,G., Unified Modeling Language Reference Manual,
2nd
Edition, Addison-Wesley, 2004
– Fowler,M., UML Distilled: A Brief Guide to the Standard Object Modeling Language,
3rd
Edition, Pearson Education, 2004
– UML 2 Infrastructure Specification, OMG
– UML 2 Superstructure Specification, OMG
Standardni jezik za modeliranje UML
• UML (Unified Modeling Language) je grafički jezik za:
– vizuelizaciju
– specifikaciju
– konstruisanje i
– dokumentovanje
• softverski-intenzivnih sistema
• UML omogućava konstruisanje šema koje modeliraju sistem opisujući:
– konceptualne stvari
• npr. proces poslovanja i funkcije sistema
– konkretne stvari
• npr. klasne tipove, šeme baza podataka, softverske komponente
• Sajt: http://www.uml.org/
Korisnici UML-a
• Sledeće kategorije korisnika UML-a se uočavaju:
– sistem-analitičari i krajnji korisnici: specificiraju zahtevanu strukturu i ponašanje sistema
– arhitekti: projektuju sistem koji zadovoljava zahteve
– razvojni inženjeri (developers): transformišu arhitekturu u izvršni kod
– kontrolori kvaliteta (quality assurance personel): proveravaju strukturu i ponašanje sistema
– bibliotekari (librarians): kreiraju i katalogiziraju komponente
– rukovodioci projekata (managers): vode i usmeravaju kadrove i upravljaju resursima
Praistorija UML-a
• Jezici za OO modeliranje se pojavljuju još od sredine 70ih
– uzrok njihove pojave je pojava nove generacije OO jezika
i povećana kompleksnost softverskih sistema
• U periodu 1989-1994:
– broj OO metoda je porastao sa manje od 10 na više od 50
• Metode koje su ostvarile najveći uticaj na oblast OO modeliranja su:
– Booch metoda
– OMT (Object Modeling Technique, Rumbaugh)
– OOSE (Object Oriented Software Engineering, Jacobson)
– Fusion
– Shlaer-Mellor
– Coad-Yourdon
UML – Pregled jezika 19
Projektovanje softvera
Istorija UML-a
• 1994: početak rada na UML-u - Rumbaugh se pridružio Booch-u u firmi Rational
• Oktobar 1995: pojavila se verzija 0.8 drafta UM-a (Unified Method)
• Jesen 1995: Jacobson se pridružio Rational-u – rad na objedinjenju UM sa OOSE
• Jun 1996: pojavila se verzija 0.9 UML-a
• Važniji partneri (učestvovali u definisanju verzije 1.0):
– DEC, HP, IBM, Microsoft, Oracle, Rational, TI, ...
• U januaru 1997: OMG-u (Object Management Group) podnet predlog std. UML 1.0
• Grupa partnera je proširena drugim podnosiocima predloga:
– npr. ObjecTime, Ericsson,...
• Jul 1997: podnet predlog UML 1.1 koji je prihvaćen od OMG 14.11.1997.
• Jun 1998: verzija UML 1.2
• Jesen 1998: verzija UML 1.3
• Septembar 2001: verzija UML 1.4 (v. 1.4.2 => ISO std. 19501:2005)
• 2002: verzija UML 1.5 (akciona semantika)
• Jun 2003: v 2.0, februar 2007: v 2.1, februar 2009: v 2.2, maj 2010: v 2.3
Konceptualni model UML-a
• Tri osnovna elementa UML modela su:
– Osnovni gradivni blokovi
– Pravila za povezivanje gradivnih blokova
– Opšti mehanizmi koji se primenjuju u UML-u
• Gradivni blokovi UML-a
– Stvari (things)
• apstrakcije koje su "građani prvog reda" u modelu
– Relacije (relationships)
• povezuju stvari
– Dijagrami (diagrams)
• grupišu interesantne skupove povezanih stvari
Stvari
• Stvari strukture - statički delovi modela,
reprezentuju konceptualne ili fizičke elemente (imenice)
• Stvari ponašanja - dinamički delovi modela,
reprezentuju ponašanje kroz prostor i vreme (glagoli)
• Stvari grupisanja - organizacioni delovi modela,
kutije u koje model može biti dekomponovan
• Stvari anotacije - objašnjavajući delovi modela,
komentari koji se primenjuju na bilo koji element
20 UML – Pregled jezika
Elektrotehnički fakultet u Beogradu
Stvari strukture – klase i interfejsi
• Klasa je opis skupa objekata koji dele zajedničke
karakteristike (atribute i operacije), ograničenja i semantiku
• Aktivna klasa je klasa čiji objekti imaju vlastitu nit kontrole
i tako mogu da započnu neku upravljačku aktivnost
• Ponašanje objekta aktivne klase je konkurentno sa drugim aktivnim objektima
• Interfejs je kolekcija operacija koje specificiraju servis klase ili komponente
• Interfejs opisuje ponašanje elementa koje je spolja vidljivo
• Interfejs definiše skup specifikacija (prototipova) operacija
ali ne i njihove implementacije
• Klasa i komponenta mogu da implementiraju više interfejsa
Stvari strukture – slučaj korišćenja i saradnja
• Slučaj korišćenja (use-case) je opis skupa sekvenci aktivnosti koje
obavlja sistem da bi proizveo vidljiv rezultat vredan za pojedinog aktera
• Jedna sekvenca aktivnosti – instanca slučaja korišćenja (scenario)
• Slučaj korišćenja reprezentuje funkcionalnost sistema
(mada se neki autori ne slažu sa tim)
• Koirsti se da bi se strukturirale stvari ponašanja u modelu
• Realizuje se kroz saradnju (kolaboraciju)
• Saradnja (collaboration) definiše zajednicu i interakciju
aktera i drugih elemenata koji dejstvuju zajedno
Prikaz rasporeda casova
IStek
Alarm
postaviVreme()
ukljuci()
iskljuci()
Tacka
x
y
rastojanje()
UML – Pregled jezika 21
Projektovanje softvera
da ostvare kooperativno ponašanje koje je kvalitativno novo
u odnosu na prostu sumu ponašanja elemenata
• Saradnja ima strukturalnu, kao i dimenziju ponašanja
• Projektni uzorci (design patterns) se predstavljaju kao saradnje
Stvari strukture – komponenta i čvor
• Komponenta je fizički i zamenjivi deo sistema
koji ostvaruje realizaciju skupa interfejsa
Servis.jar
• Komponenta je tip koji ima ponuđene i zahtevane interfejse
• U sistemu mogu postojati razne vrste izvršnih komponenata,
npr. ActiveX ili Java Beans, ili fajlovi izvornog koda
• Komponenta obično predstavlja fizičko pakovanje
drugih logičkih elemenata kao što su klase, interfejsi i saradnje
• Čvor (node) je fizički element koji postoji u vreme izvršenja
i reprezentuje resurs obrade
• Čvor poseduje neku memoriju i, često, mogućnost procesiranja
• Skup komponenata može biti u čvoru, a može i migrirati sa čvora na čvor
• Prvih pet stvari reprezentuje konceptualne ili logičke stvari,
dok poslednje dve (komponenta i čvor) reprezentuju fizičke stvari
• Sve navedene stvari osim saradnje predstavljaju klasifikatore:
mehanizme koji opisuju strukturne i karakteristike ponašanja
Stvari ponašanja
• Interakcija je ponašanje koje obuhvata skup poruka koje se razmenjuju
između skupa objekata unutar posebnog konteksta da se ostvari specifična svrha
• Interakcija uključuje određen broj elemenata:
– poruke (priložen grafički simbol)
–
– sekvence akcija (ponašanje izazvano porukom)
– veze (komunikacione putanje između objekata)
Server
Posmatrac
prikazi()
Servis.jar
<<component>>
22 UML – Pregled jezika
Elektrotehnički fakultet u Beogradu
• Automat stanja je ponašanje koje specificira sekvence stanja kroz koje prolazi
jedan objekat ili jedna interakcija za vreme svog životnog veka,
kao posledice događaja, zajedno sa njegovim odgovorima na te događaje
• Automat stanja uključuje određen broj elemenata:
– stanja (priložen grafički simbol),
– tranzicije (prelaze između stanja)
– događaje (stvari koje izazivaju tranziciju)
– aktivnosti (odgovore na tranzicije)
Stvari organizacije i anotacije
• Paket je opštenamenski mehanizam za organizovanje elemenata u grupe
• Stvari strukture, ponašanja, pa čak i druge stvari
grupisanja mogu biti smeštene u paket
• Za razliku od komponente, paket je čisto konceptualna stvar
(egzistira samo u vreme razvoja)
• Pored paketa postoje i sledeće stvari grupisanja:
– radni okviri (frameworks), modeli
• Napomena je simbol za prikazivanje komentara
pridruženih jednom elementu ili kolekciji elemenata
Relacije
• Zavisnost je semantička relacija između dve stvari u kojoj izmena jedne (nezavisne)
stvari može uticati na semantiku druge (zavisne) stvari
• Asocijacija je strukturna relacija koja opisuje skup veza između objekata
– sadržanje je specijalna vrsta asocijacije koja reprezentuje
strukturnu relaciju između celine i njenih delova
– često grafički simbol sadrži ukrase kao što su multiplikativnost i imena uloga
+zaposleni+poslodavac
1..*1
FIFO
awt
Cekanje
UML – Pregled jezika 23
Projektovanje softvera
• Generalizacija je relacija specijalizacije/generalizacije
u kojoj su objekti specijalizovanog elementa (deca)
zamene za objekte generalizovanog elementa (roditelja)
– dete deli strukturu i ponašanje roditelja
• Realizacija je semantička relacija između klasifikatora u kojoj
jedan klasifikator specificira ugovor koji drugi klasifikator ostvaruje
– Sreće se:
• između interfejsa i klasa ili komponenata koje ga realizuju
• između slučajeva korišćenja i saradnji koje ih realizuju
•
Dijagrami
• Dijagram je grafička reprezentacija skupa povezanih elemenata
– najčešće se pojavljuje u obliku grafa temena (stvari) povezanih granama (relacijama)
• Dijagrami se crtaju da bi se sistem vizualizovao iz različitih perspektiva
• Vrste dijagrama u UML-u:
– dijagrami za prikaz statičkih aspekata sistema
– dijagrami za prikaz dinamičkih aspekata sistema
Statički dijagrami
• Dijagram klasa (class diagram) prikazuje logičku strukturu apstrakcija:
skup klasa, interfejsa, saradnji i njihovih relacija
• Dijagram objekata (object diagram) prikazuje logičku strukturu instanci:
skup objekata (instanci klasa) i njihovih veza
• Dijagram komponenata (component diagram) prikazuje
fizičku organizaciju i zavisnosti između skupa komponenata
• Dijagram raspoređivanja (deployment diagram) prikazuje
konfiguraciju čvorova obrade i komponenata koje žive na njima
• Dijagram paketa (package diagram) [UML 2] prikazuje
statičku strukturu grupisanja elemenata modela u pakete
• Dijagram složene strukture (composite structure diagram) [UML 2] prikazuje
hijerarhijsko razlaganje primerka klase, komponente ili saradnje na delove
Dinamički dijagrami
• Dijagram slučajeva korišćenja (use case diagram) prikazuje
skup slučajeva korišćenja, aktera (specijalne vrste klasa) i njihovih relacija
• Dijagram interakcije (interaction diagram) prikazuje jednu interakciju koju čine
skup objekata i njihovih veza sa porukama koje razmenjuju
– Dijagram sekvence (sequence diagram) je dijagram interakcije
koji naglašava vremenski redosled poruka
– Dijagram komunikacije (communication diagram) je dijagram interakcije
koji naglašava strukturnu organizaciju objekata koji šalju i primaju poruke;
– Dijagram pregleda interakcije (interaction overview diagram) [UML 2]
je dijagram interakcije koji definiše interakcije kroz vrstu dijagrama aktivnosti
(kombinacija d. aktivnosti i d. sekvence)
24 UML – Pregled jezika
Elektrotehnički fakultet u Beogradu
– Vremenski dijagram (timing diagram) [UML 2] je dijagram interakcije
koji prikazuje promenu stanja objekata u vremenu
• Dijagram aktivnosti (activity diagram) prikazuje tok od jedne do druge aktivnosti
u sistemu (nije specijalna vrsta dijagrama stanja u UML 2)
• Dijagram stanja (statechart diagram) prikazuje
konačni automat koji obuhvata stanja, tranzicije, događaje i aktivnosti
Pravila UML-a
• UML ima pravila koja specificiraju kako izgleda dobro formiran model
• Dobro formiran model je
– semantički konzistentan
– u harmoniji sa korelisanim modelima
• UML ima semantička pravila za:
– Imena - kako se nazivaju stvari, relacije i dijagrami
– Doseg - koji kontekst daje specifično značenje imenu
– Vidljivost - gde se imena mogu videti i koristiti od strane drugih
– Integritet - kako se stvari propisno i konzistentno korelišu prema drugim stvarima
– Izvršenje - šta to znači za izvršenje ili simulaciju dinamičkog modela
• Tokom razvoja se ne prave samo modeli koji su dobro formirani, već mogu biti i:
– Skraćeni (elided) - izvesni elementi su sakriveni da se pojednostavi izgled
– Nekompletni - izvesni elementi nedostaju
– Nekonzistentni - integritet modela nije garantovan
• Pravila UML-a vode kroz vreme ovakve modele prema dobro formiranim
Opšti mehanizmi UML-a
• Gradnja je jednostavnija i harmoničnija ako se poštuju opšti uzorci
• Postoje četiri opšta mehanizma koja se primenjuju konzistentno kroz jezik:
– specifikacije
– ukrasi
– opšte podele
– mehanizmi proširivosti
Specifikacije
• Iza svakog dela grafičke notacije UML-a leži specifikacija
koja obezbeđuje tekstualni iskaz sintakse i semantike tog gradivnog bloka
• Iza grafičkog simbola (sličice, ikone) klase stoji specifikacija koja navodi:
– potpun skup atributa
– potpun skup operacija (uključujući kompletne potpise)
– ponašanje
• Grafički simbol može pokazivati samo mali deo potpune specifikacije
• Može postojati i drugi izgled iste klase koji prikazuje drugi skup delova iste klase
konzistentan sa specifikacijom
• UML grafička notacija se koristi za vizuelizaciju
• UML specifikacija se koristi da se saopšte detalji sistema
• Modeli se mogu graditi:
UML – Pregled jezika 25
Projektovanje softvera
– najpre pomoću crtanja dijagrama, a zatim dodavanjem semantike u specifikaciju
(tipično za direktni inženjering pri kreiranju novog sistema)
– direktnim kreiranjem specifikacije pa naknadnim kreiranjem dijagrama koji su njene projekcije
(tipično za reverzni inženjering postojećeg sistema)
Ukrasi
• Detalji specifikacije se prikazuju kao grafički ili tekstualni ukras
osnovnog grafičkog elementa
• Na primer:
– za klasu se može naglasiti da je apstraktna tako što se ime piše italic slovima
– vidljivost (pravo pristupa) atributa i operacija se može naglasiti pomoću simbola:
+ (javni), # (zaštićeni), – (privatni) i ~(paketni)
– Agregacija se predstavlja dodatnim simbolom na simbolu asocijacije
Opšte podele
• Dve osnovne podele:
– apstrakcije i instance
– interfejsi i implementacije
• Primeri prve podele:
– klase/objekti (klasa je apstrakcija, a objekat instanca te apstrakcije)
– slučajevi korišćenja/instance slučajeva korišćenja (scenarija)
– komponente/instance komponenti
• Primeri druge podele:
– interfejsi/komponente
– slučajevi korišćenja/saradnje
– operacije/metodi
• U UML-u se razlika između apstrakcije i instance pravi tako
što se imena instanci podvlače
• Interfejs deklariše ugovor,
a implementacija reprezentuje jednu konkretnu realizaciju ugovora
Mehanizmi proširivosti
• UML je otvoren za proširenja jezika na kontrolisani način
• Mehanizmi proširivosti uključuju:
– Stereotipove
– Obeležene vrednosti
– Ograničenja
26 UML – Pregled jezika
Elektrotehnički fakultet u Beogradu
Stereotipovi
• Stereotip proširuje rečnik UML-a dopuštajući kreiranje
novih vrsta gradivnih blokova specifičnih za problem
• Novi gradivni blokovi su izvedeni iz postojećih
• Stereotop se prikazuje kao ime uokvireno znacima << i >>
smešteno iznad imena odgovarajućeg elementa
• Na primer, izuzeci su klase čiji se objekti mogu bacati i hvatati
• Može se definisati i grafički simbol za određeni stereotip
Obeležene vrednosti
• Obeležene vrednosti proširuju osobine UML gradivnog bloka
dopuštajući dodavanje nove informacije
• Obeležene vrednosti se prikazuju kao string okružen zagradama { i }
ispod imena odgovarajućeg elementa
• String sadrži ime (tag), sepearator (simbol =) i vrednost
• Na primer, verzija i autor klase nisu primitivni koncepti u UML-u,
a mogu se dodati bilo kom gradivnom bloku kao što je klasa
•
Ograničenja
• Ograničenja proširuju semantiku UML gradivnog bloka
dopuštajući da se dodaju nova pravila ili promene postojeća
• Ograničenja se mogu pisati:
– kao slobodan tekst
– na OCL (Object Constraint Language)
RedCekanja
{verzija=4.0
autor=...}
Prekoracenje
<<exception>>
Merljiv
<<interface>>
+meri()
Merljiv
+meri()
⇔
RedCekanja
dodaj()
ukloni()
isprazni()
{red uredjen}
UML – Prvi primer 27
Projektovanje softvera
Prvi primer
Uvod
• Najbolji način učenja UML-a je kroz kreiranje modela na UML-u
• Većina programera kada uči novi jezik
– prvo napiše program koji ispiše "Hello, World!"
• Početak učenja modeliranja na jeziku UML
– model za "Hello, World!" program uz mehanizme Jave koji omogućavaju izvršenje
Primer na Javi
• Primer: trivijalni aplet koji ispisuje: "Hello, World!“
import java.awt.Graphics;
class HelloWorld extends java.applet.Applet{
public void paint(Graphics g){
g.drawString("Hello, World!", 10, 10);
}
}
• Iako je primer programa trivijalan,
infrastruktura potrebna da bi aplet radio nije trivijalna
Ključne apstrakcije
• Osnovni klasni dijagram:
•
• Klasa HelloWorld ima jednan metod (operaciju) paint()
– redefinisni metod klase Component koji "iscrtava" datu komponentu na željeni način
– metod se poziva iz okruženja (ne poziva ga programer) i to inicijalno
kao i pri pomeranju, otkrivanju, promeni veličine komponente
• Komentar (note) kaže šta radi operacija paint()
• Osnovne relacije:
• Klasa HelloWorld se izvodi iz klase Applet, a koristi klasu Graphics
– klasa Graphics se pojavljuje kao tip formalnog argumenta metode paint() (zavisnost)
– klasa Graphics omogućava crtanje i pisanje na komponentama (grafički kontekst)
– grafičke operacije menjaju bite samo unutar clipping regiona vezanog za objekat Graphics
– crtanje i pisanje se obavlja korišćenjem tekućih atributa datog Graphics objekta
Applet
HelloWorld
+paint()
Graphics
+drawString()
HelloWorld
+paint()
g.drawString("Hello, World!", 10, 10);
28 UML – Prvi primer
Elektrotehnički fakultet u Beogradu
• Hijerarhija nasleđivanja
• ImageObserver je interfejs preko kojeg se primaju obaveštenja o konstrukciji slike
– interfejs sadrži (callback) metod imageUpdate()
preko kojeg se javlja progres/status konstrukcije slike
Grupisanje
Ponašanje
• Dijagram sekvence (originalni primer je nešto kompleksniji)
Komponente
HelloWorld
+paint()
Applet Panel Container Componenet
ImageObserver
Object
Hello.jpg
<<artifact>>
Hello.htm
<<artifact>>
HelloWorld.class
<<artifact>>
Hello.java
<<artifact>>
: Korisnik : Browser : JVM
target : HelloWorld g : Graphics
otvoriHTMLStranu()
run()
paint()
drawString()
java
awt
applet
lang
UML – Dijagrami klasa 29
Projektovanje softvera
Dijagrami klasa
Uvod
• Dijagram klasa prikazuje skup klasa, interfejsa, saradnji i njihovih relacija
• Dijagram klasa je graf sačinjen od temena (stvari) povezanih granama (relacijama)
• Specificira logičke i statičke aspekte modela
• Elementi dijagrama klasa
– stvari: klase, interfejsi, saradnje, paketi, objekti (izuzetno)
– relacije: zavisnosti, generalizacije, asocijacije, realizacije
• Dijagrami klasa su najčešći u objektnom modeliranju
• Većina alata podržava generisanje skeleta koda iz dijagrama klasa
Klasifikator
• Klasifikator je
– klasifikacija primeraka (instances) sa zajedničkim karakteristikama
– mehanizam koji opisuje strukturu i ponašanje (ima atribute i operacije)
– apstraktna metaklasa
– prostor imena
– tip koji je moguća generalizacija ili specijalizacija drugog
– potencijalno ugnežden u drugi klasifikator
• Ne pojavljuju se svi klasifikatori na dijagramima klasa
• Konkretni klasifikatori su:
klase, interfejsi, tipovi podataka, komponente, čvorovi, slučajevi korišćenja, ...
• Klasifikator ima odeljke, koji se ne moraju svi prikazati
– odeljci mogu imati svoje nazive, da bi se izbegla dvoznačnost kada neki odeljak nedostaje
Klasa
• UML 2.0 definicija: klasa je opis skupa objekata koji dele istu specifikaciju
karakteristika (features), ograničenja (constraints) i semantike
– karakteristike: atributi i operacije
• Klasa implementira jedan ili više interfejsa
• Klase opisuju apstrakcije iz domena problema kao i apstrakcije iz domena rešenja
• Koriste se da reprezentuju softverske stvari, hardverske stvari i konceptualne stvari
Simbol klase
• Simbol klase je pravougaonik podeljen horizontalnim linijama u odeljke
– odeljak može imati i naziv odeljka naveden kao stereotip
GeometrijskaFigura
-karakteristicnaTacka
+pomeri()
+promeniVelicinu()
+crtaj()
responsibilities
-- geometrijska svojstva
figura u ravni
naziv
atributi
operacije
odgovornosti
30 UML – Dijagrami klasa
Elektrotehnički fakultet u Beogradu
• Naziv klase
– jednostavan: <naziv>
– sa putanjom: <naziv paketa>::<jednostavan naziv>
npr: java::awt::Rectangle
• Odgovornosti klase
– neformalna semantika
– u zasebnom odeljku
– slobodan tekst
– svaka počinje sa --
• Svaka dobro strukturirana klasa bi trebalo da ima
barem jednu i ne više od nekoliko odgovornosti
Atributi i operacije
• Atributi su imenovana svojstva klase koja opisuju opsege vrednosti
koje instance tog svojstva mogu sadržati
• Drugi nazivi: članovi podaci (C++), polja (Java)
• Atributi su strukturne karakteristike (features) klase
• Notacija: ime, opciono sa tipom i podrazumevanom vrednošću
• Primer: izbor:Boolean=false
• Operacije su servisi koji se mogu zahtevati od nekog objekta klase
• Notacija: potpis koji sadrži listu argumenata sa eventualnim tipovima i
podrazumevanim vrednostima, kao i tipom rezultata
• Primer:
pomeri(novaPozicija:Pozicija=koordinatniPocetak):Pozicija
Dodatne mogućnosti
• Simbol klase može sadržati prazne odeljke, a može biti i bez odeljaka
Potrosac
Potrosac
• Prazan odeljak atributa/operacija ne znači da ih klasa nema,
već da nisu relevantni za dati pogled (dijagram)
• Mogu se koristiti i tri tačke (...) da naznače postojanje dodatnih atributa/operacija
• Atributi/operacije se mogu grupisati, a svakoj grupi može da prethoditi opisni prefiks
• Apstraktna klasa i apstraktna operacija – naziv se piše italicom ili {abstract}
• Zajednički članovi (atributi i operacije) klase – pišu se podvučeno
• Pravo pristupa članu (vidljivost, visibility): znak se piše ispred atributa/operacije:
– javni član: + (podrazumevano)
– zaštićeni član: #
– paketski član: ~
– privatni član: -
UML – Dijagrami klasa 31
Projektovanje softvera
Tipovi podataka
• Tipovi podataka (dataType) su tipovi čije vrednosti nemaju identitet
• Vrste tipova podataka:
– primitivni tipovi
• postojeći prosti tipovi podataka u jeziku implementacije
– nabrojivi tipovi
• uzimaju vrednost iz definisanog skupa simboličkih imena
Osobine klasa
• Multiplikativnost je osobina klase koja ograničava broj njenih instanci
• Multiplikativnost se navodi u gornjem desnom uglu
• Specifične vrednosti multiplikativnosti:
– 0 – uslužna klasa, sadrži samo zajedničke (statičke) atribute i operacije
– 1 – unikatna (singleton) klasa
• Podrazumevani slučaj je proizvoljan broj instanci
• Koren hijerarhije klasa (root) je klasa koja nema roditelje
• List hijerarhije klasa (leaf) je klasa koja nema potomke,
tj. ona iz koje se ne može izvoditi
• Osobine {root} i {leaf} se pišu u odeljku naziva klase
Sintaksa atributa
• Sintaksa atrubuta:
[pravo_pristupa] [/] ime [:tip] [multiplikativnost]
[=inicijalna_vrednost][{osobina}]
• Simbol / označava da je atribut "izveden" (može se "izračunati" na osnovu drugih)
• Multiplikativnost se primenjuje na atribute klase
– specificira se kao interval celih brojeva, gornja granica može biti neograničena
– piše se u uglastim zagradama, na primer: consolePort:Port[2..*]
• Osobine atributa (neke):
– readOnly – vrednost se ne može menjati, dodavati ni uklanjati nakon inicijalizovanja
– ordered – vrednosti su uređene
– unique – vrednosti elemenata (u jednom objektu) su jedinstvene
– bag – dozvoljava ponavljanje elemenata (nije skup)
– seq ili sequence – isto što i ordered bag (uređen niz elemenata sa ponavljanjem)
– composite – atribut složene strukture
– redefines ime – redefiniše ime
– subsets ime – podskup skupa atributa ime
Sintaksa operacije
• Sintaksa operacije:
[pravo_pristupa] ime ([lista_argumenata])
[: tip_rezultata] [{osobina}]
• Sintaksa argumenta u listi:
[smer] ime : tip [multiplikativnost]
[ = podrazumevana_vrednost] [{osobina}]
32 UML – Dijagrami klasa
Elektrotehnički fakultet u Beogradu
• Smer može biti:
– in – ulazni argument, ne sme biti modifikovan (podrazumevano)
– out – izlazni argument, mora se inicijalizovati
– inout – ulazno-izlazni argument, može se modifikovati
• Osobine operacije:
– query – izvršenje ne menja stanje objekta, operacija je čista funkcija bez bočnih efekata
– exception lista – operacija može da baca izuzetke iz liste
– leaf – operacija nije polimorfna i ne može se redefinisati u izvedenoj klasi
– concurrency = vrednost – šta garantuje operacija pri izvršenju u konkurentnoj sredini
• sequential – pozivaoci moraju obezbediti da je samo jedna nit u jednom trenutku poziva
• guarded – operacija garantuje sekvencijalizaciju svih poziva svih štićenih operacija
• concurrent – operacija se izvršava kao atomska
Relacije
• Na klasnim dijagramima se pojavljuju sve četiri (prve tri su češće) vrste relacija:
– zavisnost (dependency)
– asocijacija (association)
– generalizacija (generalization)
– realizacija (realization)
Zavisnost
• Povezuje stvari kod kojih izmena nezavisne stvari utiče na ponašanje zavisne stvari
• Zavisna stvar koristi nezavisnu stvar
• Grafička notacija: klasa A zavisi od klase B
• Često se koristi kad je jedna klasa (B) tip parametra operacije druge klase (A)
Generalizacija
• Povezuje opštije (superklasa ili roditelj)
sa specijalizovanim (subklasa ili dete) stvarima
• Grafička notacija: klasa A je dete, B je roditelj
A B
• Drugi nazivi relacije:
– vrsta (is-a-kind-of), izvođenje (A se izvodi iz B), nasleđivanje, proširivanje
• Generalizacija znači da se objekti dece mogu pojaviti
gde god se očekuje objekat roditelja
• Deca nasleđuju osobine svojih roditelja, naročito atribute i operacije
• Operacija deteta koja ima isti potpis kao operacija roditelja
redefiniše operaciju roditelja
• Redefinicija operacije omogućava njeno polimorfno ponašanje
• Klasa koja ima samo jednog roditelja koristi jednostruko nasleđivanje
• Klasa koja ima više roditelja koristi višestruko nasleđivanje
A B
UML – Dijagrami klasa 33
Projektovanje softvera
Asocijacija
• Specificira da li su instance jedne stvari povezane sa instancama druge stvari
• Asocijacija je strukturna relacija
• Asocijacija je (ako se drugačije ne kaže)
bidirekcionalna veza (dvosmerna navigabilnost)
• Dozvoljena je i asocijacija sa samim sobom (postoje veze između objekata iste
klase)
• Uobičajeno je da asocijacija povezuje dve klase (binarna asoc.)
• Moguće je da asocijacija povezuje i više klasa (n-arna asocijacija)
• Grafička notacija: klasa A je u asocijaciji sa klasom B
A B
Realizacija
• Semantička relacija između klasifikatora od kojih jedan specificira ugovor
a drugi garantuje njegovu implementaciju
• Grafička notacija:
– kanonička forma:
– skraćena forma:
I
K
• Korišćenje interfejsa (relacija zavisnosti)
– kanonička forma:
– skraćena forma (ball & socket):
Kijent
I
K
Primer osnovnih relacija
Prozor
+otvori()
+zatvori()
+pomeri()
+prikazi()
+obradiDogadjaj()
Dogadjaj
Konzolni prozor Dijalog Komponenta
Kijent
I
<<interface>>
K
I
<<interface>>K
34 UML – Dijagrami klasa
Elektrotehnički fakultet u Beogradu
Ukrasi asocijacije
• Na asocijaciji se mogu pojaviti sledeći ukrasi:
– Iime, smer čitanja, uloge, navigabilnost, multiplikativnost,
sadržanje (agregacija ili kompozicija), pravo pristupa (vidljivost) kraju preko asocijacije
Multiplikativnost
• Na jednoj strani asocijacije označava se broj objekata sa te strane
koji su u vezi sa tačno jednim objektom sa druge strane relacije
• Može biti:
– nijedan (0),
– tačno jedan (1),
– proizvoljno mnogo, uključujući nijedan (*),
– opseg (npr. 2..*)
• UML 2.0 više ne dozvoljava izraze sa diskontinuitetom
– npr. 0..1,3..4,6..* - proizvoljan broj osim 2 i 5
Agregacija
• Vrsta asocijacije kod koje jedna strana
igra ulogu celine a druga ulogu dela (whole/part)
• Celina sadrži delove ("has-a" relacija)
• Agregacija ne govori ništa o uzajamnom odnosu životnih vekova celine i dela
• Deo u agregaciji može biti zajednički deo više celina
• Grafička notacija:
Celina Deo
Kompozicija
• Asocijacija kod koje postoji odnos celina/deo,
ali je celina odgovorna za životni vek dela
• Agregacija sa strogim vlasništvom i koincidentnim životnim vekom
dela u odnosu na celinu
• Deo može nastati u toku života celina
i može biti uništen pre uništenja celine
• Deo u kompoziciji može biti deo samo jedne celine
• Grafički notacija:
Celina Deo
Osoba Kompanija Odeljenje
Radi za
-poslodavac-zaposlen
11..*
*1
Asocijacija
Multiplikativnost Naziv Sadržanje
Uloga
UML – Dijagrami klasa 35
Projektovanje softvera
Primer asocijacija
Fakultet Katedra
Student Predmet Nastavnik
ima
1 1..*
studira
1..*
* pohadja
** predaje
-predavac-kurs
1..**
radi pri
-jedinca
-clan
1
*
upravlja
-sef1
0..1
odgovara za
1..*
*
Navigacija
• Strelica označava navigabilnost u naznačenom pravcu
• Krstić označava da nema navigabilnosti prema označenoj strani
• Za asocijaciju bez ukrasa navigabilnosti se smatra da je navigabilnost neodređena
• Grafička notacija:
Pravo pristupa preko asocijacije
• Ograničava vidljivost (visibility) objekata u asocijaciji za spoljašnji svet
• Označava se sa + , #, -, ~
ispred imena uloge odgovarajuće strane relacije
• + znači da objektima sa te strane mogu pristupati svi objekti
preko objekta sa druge strane
• - znači da objektima klase sa te strane
mogu pristupati samo objekti klase sa druge strane
• # znači da i objekti klasa izvedenih iz klase
sa drugog kraja asocijacije imaju pristup
• ~ znači da i objekti klasa iz istog paketa
kao klasa sa drugog kraja asocijacije imaju pristup
• Primer:
GrupaKorisnika Korisnik Lozinka
+korisnik
* *
-kljuc-vlasnik
1..*1
• Podrazumevan je javni vizibilitet uloge u asocijaciji
Ugnežđivanje
• Označava pojam kada je klasa B deklarisana u prostoru imena klase A
•
A BA B
A BA B
A B+
36 UML – Dijagrami paketa
Elektrotehnički fakultet u Beogradu
Dijagrami paketa
Uvod
• Dijagrami paketa se koriste da prikažu dekompoziciju modela
u organizacione jedinice i njihove zavisnosti
• Dijagrami paketa pomažu:
– da se uoče zavisnosti između logičkih celina i
– da se te zavisnosti drže pod kontrolom
• Primer:
Paket
• Paket je organizaciona stvar koja se koristi za grupisanje elemenata
• Paket predstavlja prostor imena i element koji se može pakovati,
tako da se može sadržati u drugim paketima
• Definicija uz UML RM:
– paket je opšti mehanizam za organizovanje elemenata u grupe, koji uspostavlja vlasništvo
nad elementima i obezbeđuje jedinstvenost imena elemenata
• Paketi se koriste
– uobičajeno za grupisanje logičkih apstrakcija modela (klasa)
– mogu se koristiti i za grupisanje fizičkih stvari (komponenata ili čak čvorova)
• Paket može da obuhvata druge pakete i proste elemente
– obično postoji jedan paket u korenu hijerarhije paketa koji predstavlja ceo model
• Koncept paketa odgovara
– istoimenom konceptu u jeziku Java
– konceptu prostora imena u jezicima C++ i C#
Imenovanje paketa i elemenata
• Jedno ime elementa mora biti jedinstveno u okviru paketa
– ali se može koristiti za označavanje drugih elemenata iz drugih paketa
• Jednoznačnost imena se odnosi na puna (kvalifikovana) imena
– puna imena sadrže redom imena svih paketa u hijerarhiji od korenog paketa do datog
elementa - lista u stablu, razdvojena simbolom ::
• Primer:
– klasa Panel koju sadrži potpaket awt paketa java nosi puno ime java::awt::Panel
• Elementi kojima se unutar paketa može obraćati
jednostavnim (nekvalifikovanim) imenima su:
– sopstveni elementi paketa,
– uvezeni elementi i
– elementi iz obuhvatajućih (spoljašnjih) prostora imena (paketa)
P2
PP
C D
P3
B
P1 <<import>>
UML – Dijagrami paketa 37
Projektovanje softvera
Vlasništvo i pravo pristupa
• Vlasništvo nad sopstvenim elementom implicira
– ako se paket ukloni iz modela, uklanjaju se i sopstveni elementi paketa
– svaki element modela mora imati kao vlasnika
• neki paket ili
• drugi element modela
• Sopstveni i uvezeni elementi mogu imati pravo pristupa
• Pravo pristupa određuje da li su elementi na raspolaganju izvan paketa
• Pravo pristupa elementa u paketu može biti:
– javno (+) ili
– privatno (-)
• Javni sadržaj paketa je uvek pristupačan izvan paketa preko punih imena
• Paket "izvozi" svoj javni sadržaj
• Za "uvoz" imena iz drugih paketa koriste se posebne relacije zavisnosti
Notacija
• Za paket se koristi simbol pravougaonika sa jezičkom
Osoblje
– simbol sugeriše folder koji sadrži:
• fajlove (jednostavne elemente) i
• druge foldere (potpakete)
• Sadržani elementi paketa se mogu predstaviti na više načina:
– samo tekstualno nabrojani unutar pravougaonika simbola paketa
(tada se ime paketa piše unutar jezička)
– nacrtani unutar pravougaonika simbola paketa (i tada se ime paketa piše unutar jezička)
– povezani punom linijom sa simbolom + unutar kružića na strani paketa
Relacije
• Zavisnosti i stereotipovi zavisnosti: <<import>>, <<access>>, <<merge>>
• Zavisnost:
– označava da barem jedan element u zavisnom paketu
zavisi od nekog elementa iz nezavisnog paketa
– primer:
ako je klasa X u paketu P1 izvedena iz klase Y iz paketa P2, paket P1 zavisi od paketa P2
• Javno uvoženje (<<import>> ):
– omogućava u paketu u koji se uvozi (na strani repa strelice)
korišćenje javnih imena iz uvezenog paketa (na strani glave strelice) bez kvalifikacije
– uvezeni elementi se ponašaju kao javni u paketu u koji su uvezeni
Tipovi Integer
Float
Tipovi Tipovi
Integer
Float +
Integer Float
Tipovi
38 UML – Dijagrami paketa
Elektrotehnički fakultet u Beogradu
• Privatno uvoženje (<<access>> ):
– omogućava u paketu A u koji se uvozi (na strani repa strelice)
korišćenje javnih imena iz uvezenog paketa B (na strani glave strelice) bez kvalifikacije,
ali se uvezena imena paketa B ne mogu koristiti bez kvalifikacije u paketu C
koji (javno) uvozi imena iz paketa A
– uvezeni elementi paketa B imaju status privatnih elemenata u paketu A u koji su uveženi
• Alternativna notacija za uvoz pojedinih imena iz drugog paketa
je navođenje unutar paketa u koji se uvozi:
– {import <kvalifikovano ime>} ili
– {access <kvalifikovano ime>}
• Uvoz imena sadržanog paketa se ne podrazumeva,
a može se naznačiti na sledeći način:
• Mešanje (<<merge>> ):
– komplikovana relacija čije korišćenje nije potrebno u modeliranju
– koristi se u metamodeliranju
• Elementi paketa unutar paketa ili između paketa
mogu biti povezani svim vrstama relacija
– na primer, unutar paketa se može predstaviti klasni dijagram,
koji može da sadrži i druge pakete
Principi modeliranja
• Pri projektovanju sistema se nastoji da se broj zavisnosti između paketa minimizira
– u paket se smeštaju apstrakcije koje uzajamno imaju veći broj relacija
i relativno mali broj relacija prema apstrakcijama izvan paketa
• Nije dobro da postoje cirkularne zavisnosti između paketa
– dobro je da se apstrakcije grupišu slojevito tako da jedan paket predstavlja jedan sloj (nivo)
apstrakcija, pa se relacije zavisnosti između paketa orijentišu samo u jednom smeru
• Pravilo zajedničkog zatvaranja (Common Closure Principle [R.C. Martin]):
– preporučuje da u istom paketu budu klase koje treba menjati iz sličnih razloga
• Pravilo zajedničkog ponovnog korišćenja (Comon Reuse Principle [R.C. Martin])
– preporučuje da u istom paketu budu klase koje će se zajedno ponovo koristiti
• Tehnika za sužavanje javnog interfejsa paketa
– svodi se na izvoženje samo malog broja operacija javnih klasa paketa
– klase paketa se učine privatnim, a uvede se posebna klasa sa javnim operacijama
koje pozivaju odgovarajuće javne operacije privatnih klasa paketa (uzorak Fasada)
C A B
<<import>> <<access>>
P
PP
<<import>>
UML – Dijagrami paketa 39
Projektovanje softvera
Stereotipovi paketa
• Iznad imena paketa može stajati naznaka stereotipa << … >>
• Standardni stereotipovi paketa:
– koriste se određene ključne reči da označe vrstu paketa
– model: <<model>>
• semantički potpun opis sistema
• umesto ključne reči može da se koristi mali trougao
– radni okvir: <<framework>>
• generička arhitektura kao proširiv obrazac za apikacije u nekom domenu
• tipično elementi predstavljaju osnovu za specijalizaciju
• Podsistem <<subsystem>> nije stereotip paketa, već komponente
– u UML-u 1 je smatran stereotipom paketa
Bankomat Bankomat
40 UML – Dijagrami objekata
Elektrotehnički fakultet u Beogradu
Dijagrami objekata
Uvod
• Dijagrami objekata prikazuju primerke (objekte) apstrakcija (klasa) i njihove veze
preko kojih objekti mogu da komuniciraju
• Oni predstavljaju “snimak”pogleda na sistem u jednom trenutku
– prikazuju se objekti sa trenutnim stanjem i trenutne veze
• Dijagram objekata opisuje fizički i statički aspekt modela
– fizički, jer je objekat fizička stvar, nalazi se u memoriji
– statički, jer se prikazuju samo veze, a ne i interakcija preko njih
• Elementi dijagrama objekata su:
– stvari: objekti i paketi
– relacije: veze
• Dijagram ima strukturu grafa: objekti su čvorovi, a veze grane
Namena
• Dve osnovne namene:
– prikaz složene strukture koju čini više objekata
– prikaz ponašanja kroz vreme preko niza “snimaka” povezanih objekata
• Dijagram objekata predstavlja samo primer, a ne specifikaciju (definiciju) modela
• Ima dokumentacionu svrhu, može da pomogne razumevanju modela
Objekti
• Objekat je nešto (u memoriji) što ima stanje, ponašanje i identitet
• Objekat je primerak apstrakcije (tipa, klase)
• UML notacija:
– pravougaonik sa odeljcima imena i vrednosti atributa
– ime podvučeno
– objekat može biti: konkretan, prototipski, anonimni
objekat2 : KlasaKlasa
-atribut1: tipAtributa1
-atribut2: tipAtributa2
objekat1 : Klasa
atribut1 = vrednost1
atribut2 = vrednost2
: Klasa
Veze
• Veze su komunikacione putanje između objekata
• Veze su primerci (instance) asocijacija
– jedna asocijacija između dve klase predstavlja skup veza između objekata tih klasa
• Na vezama se mogu naći
– svi ukrasi asocijacije osim multiplikativnosti
– multiplikativnost je uvek 1
Klasa1 Klasa2
*1
objekat1 : Klasa1
objekat2 : Klasa2
objekat3 : Klasa2
objekat4 : Klasa2
UML – Dijagrami objekata 41
Projektovanje softvera
Primer – uzorak Kompozicija
• Opis hijerarhije objekata uzorka Kompozicija
– Sklop je Element koji sadrži druge elemente
– rekurzivna struktura sadržanja
– hijerarhija objekata tipa stabla
Element
List Sklop
1
* koren : Sklop
list1 : List list2 : List sklop1 : Sklop
list3 : List list4 : List
Dijagram klasa
Dijagram objekata
Primer - relacija “pohađa”
• Opis relacije “pohađa” između studenata i kurseva
– asocijacija označava veze koje se menjaju u vremenu
– veze su različite u svakoj školskoj godini
Student
-brIndeksa: String
Kurs
+sifra: String
student1 : Student
brIndeksa = 06/321
student2 : Student
brIndeksa = 05/123
kurs3 : Kurs
sifra = IR4PS
kurs4 : Kurs
sifra = IR4XX
pohadja
**
Dijagram klasa
Skolska 2009/10
student1 : Student
brIndeksa = 06/321
student2 : Student
brIndeksa = 05/123
kurs1 : Kurs
sifra = IR2OO1
kurs2 : Kurs
sifra = IR2XXX
Skolska 2007/08
Dva objektna dijagrama
42 UML – Dijagrami interakcije
Elektrotehnički fakultet u Beogradu
Dijagrami interakcije
Uvod
• Interakcija je ponašanje koje obuhvata skup poruka koje se razmenjuju
između skupa objekata u nekom kontekstu sa nekom namenom
• UML 2.0: interakcija je specifikacija slanja stimulusa
između objekata sa ciljem obavljanja nekog zadatka
– definiše se u kontekstu neke saradnje (kolaboracije)
• Interakcija se koristi za modeliranje dinamičkih aspekata modela
• Objektni dijagram je reprezentacija statičkih aspekata komunikacije
– prezentiraju se samo objekti i veze između objekata u jednom trenutku
• Interakcija uvodi dinamički aspekat komunikacije
– prezentira se i sekvenca poruka koje razmenjuju uloge
Kontekst interakcije
• Kontekst interakcije može biti:
– sistem ili podsistem
– operacija
– klasa
– slučaj korišćenja
• Kontekst – sistem ili podsistem kao celina
– interakcije su u saradnji objekata koji postoje u sistemu ili podsistemu
– primer: sistem za e-trgovinu: sarađuju objekti na strani klijenta sa objektima na strani servera
• Kontekst – operacija
– interakcije su među objektima koji implementiraju operaciju
– parametri operacije, lokalni i globalni objekti mogu interagovati da izvrše algoritam operacije
• Kontekst – klasa
– atributi klase mogu sarađivati međusobno kao i sa drugim objektima
(globalnim, lokalnim i parametrima operacija)
– interakcija se koristi da opiše semantiku klase
• Kontekst – slučaj korišćenja
– interakcija reprezentuje scenario za slučaj korišćenja
Poruka
• Poruka je specifikacija komunikacije između objekata
koja prenosi informaciju, iza koje se očekuje da sledi aktivnost
• Slanje poruke ulozi označava samo stimulus za aktivnost
• Poruka može biti
– asinhrona (slanje signala)
– sinhrona (poziv operacije )
• Poruka se prikazuje kao strelica na dijagramu interakcije
– razne vrste strelica odgovaraju raznim vrstama poruka
– na dijagramu sekvence – poruke su linije između linija života
– na dijagramu komunikacije – poruke su strelice pored konektora
UML – Dijagrami interakcije 43
Projektovanje softvera
Vrste dijagrama interakcije
• Dijagrami interakcije mogu biti:
– dijagrami sekvence
– dijagrami komunikacije (u UML 1: dijagrami saradnje, odnosno kolaboracije)
– dijagrami pregleda interakcije (UML 2)
– vremenski dijagrami (UML 2)
• Dijagrami sekvence naglašavaju vremensko uređenje interakcije
• Dijagrami komunikacije naglašavaju strukturu veza između učesnika u interakciji
• Ove dve vrste dijagrama vizuelizuju na različit način praktično iste informacije
• Dijagrami pregleda interakcije kombinuju dijagram aktivnosti
sa dijagramima sekvence
– u okviru toka kontrole, blokovi (čvorovi) se opisuju interakcijama
• Vremenski dijagrami prikazuju promenu stanja jednog objekta (ili uloge) u vremenu
– promena stanja se dešava kao posledica prijema stimulusa i dešavanja događaja
Dijagrami sekvence i komunikcije
• Dijagram sekvence
• Dijagram komunikacije
a :
b :
: C
d
: Klijent
1 : m1()
2 : m2()
3 : m3()
4 : m4()
5 : r4
6 : r37 : r2
8 : r1
a : A b : B : C d
: Klijent m1()
m2()
m3()
m4()
r5
r3
r2
r1
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta
Projektovanje softvera   skripta

More Related Content

What's hot

3 клас урок 3 способи подання повідомлень. носії повідомлень.
3 клас урок 3 способи подання повідомлень. носії повідомлень.3 клас урок 3 способи подання повідомлень. носії повідомлень.
3 клас урок 3 способи подання повідомлень. носії повідомлень.Сокальська ЗШ І-ІІІ ступенів №2
 
Презентація до 20 уроку в 8 класі
Презентація до 20 уроку в 8 класіПрезентація до 20 уроку в 8 класі
Презентація до 20 уроку в 8 класіЮлія Артюх
 
Лекція 9.pptx
Лекція 9.pptxЛекція 9.pptx
Лекція 9.pptxssuser6b7473
 
презентація до уроку 2.pptx
презентація до уроку 2.pptxпрезентація до уроку 2.pptx
презентація до уроку 2.pptxOxara77
 
Операції з файлами та електронними листами. Етикет і правила безпечного елект...
Операції з файлами та електронними листами. Етикет і правила безпечного елект...Операції з файлами та електронними листами. Етикет і правила безпечного елект...
Операції з файлами та електронними листами. Етикет і правила безпечного елект...ssuser53d8f2
 
івана купала презентація
івана купала   презентаціяівана купала   презентація
івана купала презентаціяBalabas
 
Autobuske stanice (Autobusne stanice)
Autobuske stanice (Autobusne stanice)Autobuske stanice (Autobusne stanice)
Autobuske stanice (Autobusne stanice)HarisLigata
 
метаморфози
метаморфозиметаморфози
метаморфозиSnezhanaP10
 
Презентація Інформаційна безпека Урок 11.pptx
Презентація Інформаційна безпека Урок 11.pptxПрезентація Інформаційна безпека Урок 11.pptx
Презентація Інформаційна безпека Урок 11.pptxssuserc8ab9c
 
Реферат зразок
Реферат зразокРеферат зразок
Реферат зразокnvkschool_106
 
Robno stransportni centri
Robno stransportni centriRobno stransportni centri
Robno stransportni centriMilena
 
Утвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязь
Утвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязьУтвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязь
Утвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязьDorokhGala
 
ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)
ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)
ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)Oleksiy Goryayinov
 
Ігор Калинець
Ігор КалинецьІгор Калинець
Ігор КалинецьDmytro Kryvenko
 

What's hot (20)

Торгівля жінками - проблема століття
Торгівля жінками -  проблема століттяТоргівля жінками -  проблема століття
Торгівля жінками - проблема століття
 
Vertuo conseil Présentation
Vertuo conseil   PrésentationVertuo conseil   Présentation
Vertuo conseil Présentation
 
3 клас урок 3 способи подання повідомлень. носії повідомлень.
3 клас урок 3 способи подання повідомлень. носії повідомлень.3 клас урок 3 способи подання повідомлень. носії повідомлень.
3 клас урок 3 способи подання повідомлень. носії повідомлень.
 
Презентація до 20 уроку в 8 класі
Презентація до 20 уроку в 8 класіПрезентація до 20 уроку в 8 класі
Презентація до 20 уроку в 8 класі
 
Лекція 9.pptx
Лекція 9.pptxЛекція 9.pptx
Лекція 9.pptx
 
Тарас Шевченко
Тарас Шевченко Тарас Шевченко
Тарас Шевченко
 
9 клас урок 16
9 клас урок 169 клас урок 16
9 клас урок 16
 
12
1212
12
 
презентація до уроку 2.pptx
презентація до уроку 2.pptxпрезентація до уроку 2.pptx
презентація до уроку 2.pptx
 
Образ калини у літературі
Образ калини у літературіОбраз калини у літературі
Образ калини у літературі
 
Операції з файлами та електронними листами. Етикет і правила безпечного елект...
Операції з файлами та електронними листами. Етикет і правила безпечного елект...Операції з файлами та електронними листами. Етикет і правила безпечного елект...
Операції з файлами та електронними листами. Етикет і правила безпечного елект...
 
івана купала презентація
івана купала   презентаціяівана купала   презентація
івана купала презентація
 
Autobuske stanice (Autobusne stanice)
Autobuske stanice (Autobusne stanice)Autobuske stanice (Autobusne stanice)
Autobuske stanice (Autobusne stanice)
 
метаморфози
метаморфозиметаморфози
метаморфози
 
Презентація Інформаційна безпека Урок 11.pptx
Презентація Інформаційна безпека Урок 11.pptxПрезентація Інформаційна безпека Урок 11.pptx
Презентація Інформаційна безпека Урок 11.pptx
 
Реферат зразок
Реферат зразокРеферат зразок
Реферат зразок
 
Robno stransportni centri
Robno stransportni centriRobno stransportni centri
Robno stransportni centri
 
Утвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязь
Утвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязьУтвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязь
Утвердження любові до батьківщини й героїзму в баладі А.Міцкевича світязь
 
ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)
ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)
ТПЛМ 1131 Інформаційні потоки в логістиці. О.М.Горяїнов (2009)
 
Ігор Калинець
Ігор КалинецьІгор Калинець
Ігор Калинець
 

Similar to Projektovanje softvera skripta

Seminarski diplomski softverski inzenjering
Seminarski diplomski softverski inzenjeringSeminarski diplomski softverski inzenjering
Seminarski diplomski softverski inzenjeringborises
 
Програмирање робота Lego NXT
Програмирање робота Lego NXTПрограмирање робота Lego NXT
Програмирање робота Lego NXTGoca Petrovic
 
Edukacija iz project management prezentacija
Edukacija iz project management   prezentacijaEdukacija iz project management   prezentacija
Edukacija iz project management prezentacijaMiloje Seksan
 
цртање у програму Open office draw
цртање у програму  Open office drawцртање у програму  Open office draw
цртање у програму Open office drawИван Старчевић
 
Seminarski diplomskiprocesori za-obradu-teksta
Seminarski diplomskiprocesori za-obradu-tekstaSeminarski diplomskiprocesori za-obradu-teksta
Seminarski diplomskiprocesori za-obradu-tekstamasterski
 
Upravljanje projektima NPI u LEAN preduzeću - Smuđa Bojan
Upravljanje projektima NPI u LEAN preduzeću - Smuđa BojanUpravljanje projektima NPI u LEAN preduzeću - Smuđa Bojan
Upravljanje projektima NPI u LEAN preduzeću - Smuđa BojanBojan Smudja, PMP
 
Seminarski diplomski softver i-hardver
Seminarski diplomski softver i-hardverSeminarski diplomski softver i-hardver
Seminarski diplomski softver i-hardvernikolasse
 
Us internet programiranje pomoću programskog jezika java
Us   internet programiranje pomoću programskog jezika javaUs   internet programiranje pomoću programskog jezika java
Us internet programiranje pomoću programskog jezika javaMarija Starcevic
 
Одређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docx
Одређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docxОдређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docx
Одређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docxMihajilo Tosic
 
Programer Stefan Ignjatovic VIII3
Programer Stefan Ignjatovic VIII3 Programer Stefan Ignjatovic VIII3
Programer Stefan Ignjatovic VIII3 dulovci
 
Наставни план и програм 2012 - Рачунарство и информатика - 1. разред
Наставни план и програм 2012 - Рачунарство и информатика - 1. разредНаставни план и програм 2012 - Рачунарство и информатика - 1. разред
Наставни план и програм 2012 - Рачунарство и информатика - 1. разредNašaŠkola.Net
 
Cv institut za informatiku i organizaciju
Cv institut za informatiku i organizacijuCv institut za informatiku i organizaciju
Cv institut za informatiku i organizacijuDjordje Abadžić
 
слободан софтвер и локализација
слободан софтвер и локализацијаслободан софтвер и локализација
слободан софтвер и локализацијаИван Старчевић
 

Similar to Projektovanje softvera skripta (20)

Seminarski diplomski softverski inzenjering
Seminarski diplomski softverski inzenjeringSeminarski diplomski softverski inzenjering
Seminarski diplomski softverski inzenjering
 
Prirucnik viii
Prirucnik viiiPrirucnik viii
Prirucnik viii
 
Програмирање робота Lego NXT
Програмирање робота Lego NXTПрограмирање робота Lego NXT
Програмирање робота Lego NXT
 
ICK7-L2.pptx
ICK7-L2.pptxICK7-L2.pptx
ICK7-L2.pptx
 
Edukacija iz project management prezentacija
Edukacija iz project management   prezentacijaEdukacija iz project management   prezentacija
Edukacija iz project management prezentacija
 
цртање у програму Open office draw
цртање у програму  Open office drawцртање у програму  Open office draw
цртање у програму Open office draw
 
Pismo za inovaciju programa za gimnaziju con
Pismo za inovaciju programa za gimnaziju  conPismo za inovaciju programa za gimnaziju  con
Pismo za inovaciju programa za gimnaziju con
 
02.ivana djordjev rad
02.ivana djordjev   rad02.ivana djordjev   rad
02.ivana djordjev rad
 
Seminarski diplomskiprocesori za-obradu-teksta
Seminarski diplomskiprocesori za-obradu-tekstaSeminarski diplomskiprocesori za-obradu-teksta
Seminarski diplomskiprocesori za-obradu-teksta
 
L2 3
L2 3L2 3
L2 3
 
Upravljanje projektima NPI u LEAN preduzeću - Smuđa Bojan
Upravljanje projektima NPI u LEAN preduzeću - Smuđa BojanUpravljanje projektima NPI u LEAN preduzeću - Smuđa Bojan
Upravljanje projektima NPI u LEAN preduzeću - Smuđa Bojan
 
Seminarski diplomski softver i-hardver
Seminarski diplomski softver i-hardverSeminarski diplomski softver i-hardver
Seminarski diplomski softver i-hardver
 
Us internet programiranje pomoću programskog jezika java
Us   internet programiranje pomoću programskog jezika javaUs   internet programiranje pomoću programskog jezika java
Us internet programiranje pomoću programskog jezika java
 
IT6-L3.pptx
IT6-L3.pptxIT6-L3.pptx
IT6-L3.pptx
 
Univerzitet Singidunum - Seminari za nastavnike srednjih škola
Univerzitet Singidunum - Seminari za nastavnike srednjih školaUniverzitet Singidunum - Seminari za nastavnike srednjih škola
Univerzitet Singidunum - Seminari za nastavnike srednjih škola
 
Одређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docx
Одређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docxОдређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docx
Одређивање-жижне-даљине-сабирног-сочива-лабораторијска-вежба.docx
 
Programer Stefan Ignjatovic VIII3
Programer Stefan Ignjatovic VIII3 Programer Stefan Ignjatovic VIII3
Programer Stefan Ignjatovic VIII3
 
Наставни план и програм 2012 - Рачунарство и информатика - 1. разред
Наставни план и програм 2012 - Рачунарство и информатика - 1. разредНаставни план и програм 2012 - Рачунарство и информатика - 1. разред
Наставни план и програм 2012 - Рачунарство и информатика - 1. разред
 
Cv institut za informatiku i organizaciju
Cv institut za informatiku i organizacijuCv institut za informatiku i organizaciju
Cv institut za informatiku i organizaciju
 
слободан софтвер и локализација
слободан софтвер и локализацијаслободан софтвер и локализација
слободан софтвер и локализација
 

Projektovanje softvera skripta

  • 1. Elektrotehniči fakultet Univerziteta u Beogradu Katedra za računarsku tehniku i informatiku skripta za predmet PROJEKTOVANJE SOFTVERA Igor Tartalja Beograd, 2011. Besplatan primerak This copy is not for sale Ova skripta je objavljena u okviru projekta WUS Austria MSDP 2011 The publishing of this script is part of the project MSDP 2011 finansiranog od strane Austrijske agencije za razvoj financed by Austrian Development Agency through WUS Austria
  • 2.
  • 3. Predgovor 3 Projektovanje softvera Predgovor Projektovanje softvera je inženjerska disciplina i ključna faza u razvoju softvera. Ono se zasniva na principima koji se odnose prvenstveno na modeliranje strukture i ponašanja softvera, kao i na primenu projektnih uzoraka u rešavanju problema. Kao i svaki drugi inženjerski proizvod, softver u svome nastajanju prolazi kroz prepoznatljive faze, od specifikacije zahteva, pa do instalacije na ciljne mašine. Instalacijom tek počinje životni vek softvera kao tehničkog proizvoda. Život softverskog proizvoda se sastoji od njegovog korišćenja, popravki i unapređenja. Iskustva stečena u toku životnog veka softverskog proizvoda često dovode do nastanka novih proizvoda, njegovih funkcionalnih naslednika. Ako se ta iskustva formalno dokumentuju kroz model i prepoznate projektne uzorke, mogu se primeniti i mnogo šire. Praktično isti principi projektovanja softvera se primenjuju, kako na razvoj novog proizvoda, tako i na održavanje i unapređivanje postojećeg proizvoda u toku njegovog životnog veka. Predmet Projektovanje softvera, koji se drži na osnovnim i master studijama Softverskog inženjerstva i Računarske tehnike i informatike na Elektrotehničkom fakultetu, Univerziteta u Beogradu se koncentriše na dva centralna aspekta projektovanja softvera. To su modeliranje objektno-orijentisanog softvera i primena projektnih uzoraka u koncipiranju arhitekture softvera. Ova skripta sadrže materijale koji se koriste na predavanjima iz predmeta Projektovanje softvera. Skripta su nastala sa željom da se studentima koji pohađaju ovaj predmet stave na raspolaganje materijali koji se koriste na predavanjima. Predavanja se drže uz korišćenje elektronskih prezentacija sa slajdovima, te je sadržaj skripti praktično jednak sadržaju slajdova koji se koriste na predavanjima. Prvobitni tekst skripti je predstavljao samo podsetnik nastavniku za držanje predavanja. Posle višegodišnjeg iskustva u držanju nastave iz ovog predmeta, te doterivanja materijala kroz više iteracija, autor se odlučio da objavi skripta u ovom obliku i stavi ih na raspolaganje studentima koji pohađaju predmet. Zato se skreće pažnja čitaocima da su skripta namenjena praktično samo onima koji prate predavanja na predmetu. Ona ne predstavljaju samostalan udžbenik iz kojeg se predmet može valjano naučiti. Ona su praktični podsetnik na materiju koja se izlaže na predavanjima. Treba imati u vidu da se na predavanjima daju i mnoga usmena objašnjenja pojmova i principa koji su samo pomenuti u skriptama. Bez praćenja predavanja, takvi pojmovi i principi se teško mogu dobro razumeti samo na osnovu čitanja skripti. Takođe, pretpostavlja se da čitaoci ovih skripti dobro vladaju pojmovima i principima koji se prethodno izučavaju na predmetima iz proceduralnog i objektno-orijentisanog programiranja. U pripremi skripti korišćena je literatura navedena na kraju skripti. Najveći deo teksta na jezgroviti način, kroz teze, izlaže materiju iz te literature. Ujedno, navedeni izvori predstavljaju udžbenike i dopunsku literaturu predmeta Projektovanje softvera. Osim uvoda u projektovanje softvera, skripta sadrže dva dela. Prvi deo je posvećen objektno-orijentisanom modeliranju na jeziku UML (Unified Modeling Language). Drugi deo je posvećen primeni projektnih uzoraka u projektovanju softvera. Iako je materija u skriptama izložena na navedeni način, metodologija držanja predmeta je takva da se teme iz ove dve šire oblasti
  • 4. 4 Predgovor Elektrotehnički fakultet u Beogradu kombinuju, tako da se na predmetu simultano napreduje kroz obe oblasti. Na taj način se studentima omogućava da vrlo rano počnu da uvežbavaju metodologiju projektovanja na jeziku UML uz korišćenje projektnih uzoraka. Iz tog razloga su i projektni uzorci izloženi redosledom primerenim blagovremenom uvežbavanju, počeviši od onih koje je lakše razumeti i primeniti, kombinujući ih sa do tada obrađenim dijagramima jezika UML. Autor se zahvaljuje svima koji su na bilo koji način doprineli nastanku ovih skripti. Posebnu zahvalnost autor duguje kolegi mr Laslu Krausu. Dugogodišnja saradnja i plodne diskusije o problematici, kako ovog predmeta, tako i predmeta iz objektno-orijentisanog programiranja, pomogle su autoru da izgradi terminologiju i razvije metodologiju rada na predmetu. Kompletiranje završne verzije ovih skripti pomogla je Austrijska agencija za razvoj, kroz projekat Master Studies Development Program (MSDP 2011), WUS Austrija. Recenzenti izveštaja na projektu MSDP 2011, Johann Höchtl i Sylvia Purgathofer-Müller, dali su korisne savete da skripta dobiju konačni oblik. Konačno, autor se zahvaljuje studentima ranijih generacija koji su ukazali na propuste i greške u ranijim materijalima na osnovu kojih su nastala skripta u ovom obliku. U uverenju da će skripta biti od koristi studentima koji prate predmet Projektovanje softvera, autor se nada da će im izložena materija biti interesantna i podsticajna, kako za pripremu ispita, tako i za buduću inženjersku praksu. Moli ih da čitaju pažljivo, a za sve propuste i greške koje otkriju i prijave mu, biće im veoma zahvalan. Beograd, 15.06.2011. Autor
  • 5. Sadržaj 5 Projektovanje softvera Sadržaj Predgovor..........................................................................................................................................3 Sadržaj...............................................................................................................................................5 Uvod ................................................................................................................................................13 Osnovni pojmovi ..................................................................................................................................... 13 Objektno-orijentisana analiza ............................................................................................................... 13 Objektno-orijentisano projektovanje.................................................................................................... 13 Objektno-orijentisano programiranje .................................................................................................. 13 Objektno-orijentisani jezik .................................................................................................................... 14 Principi OO modela................................................................................................................................ 14 Apstrakcija i kapsulacija........................................................................................................................ 14 Modularnost i hijerarhija....................................................................................................................... 14 Tipizacija i polimorfizam ....................................................................................................................... 15 Konkurentnost i perzistencija................................................................................................................ 15 Model i modeliranje................................................................................................................................ 15 Ciljevi modeliranja ................................................................................................................................. 16 OO model i pogledi na model................................................................................................................. 16 Dijagrami................................................................................................................................................. 16 Logički i fizički aspekti modela ............................................................................................................. 16 Statički i dinamički aspekti modela....................................................................................................... 16 Notacija za opis modela.......................................................................................................................... 17 Alati za modeliranje................................................................................................................................ 17 Pregled jezika UML........................................................................................................................18 Standardni jezik za modeliranje UML ................................................................................................. 18 Korisnici UML-a..................................................................................................................................... 18 Praistorija UML-a .................................................................................................................................. 18 Istorija UML-a........................................................................................................................................ 19 Konceptualni model UML-a .................................................................................................................. 19 Stvari........................................................................................................................................................ 19 Stvari strukture – klase i interfejsi........................................................................................................ 20 Stvari strukture – slučaj korišćenja i saradnja.................................................................................... 20 Stvari strukture – komponenta i čvor................................................................................................... 21 Stvari ponašanja ..................................................................................................................................... 21 Stvari organizacije i anotacije................................................................................................................ 22 Relacije..................................................................................................................................................... 22 Dijagrami................................................................................................................................................. 23 Statički dijagrami ................................................................................................................................... 23
  • 6. 6 Sadržaj Elektrotehnički fakultet u Beogradu Dinamički dijagrami............................................................................................................................... 23 Pravila UML-a ........................................................................................................................................ 24 Opšti mehanizmi UML-a........................................................................................................................ 24 Specifikacije............................................................................................................................................. 24 Ukrasi....................................................................................................................................................... 25 Opšte podele ............................................................................................................................................ 25 Mehanizmi proširivosti........................................................................................................................... 25 Stereotipovi.............................................................................................................................................. 26 Obeležene vrednosti................................................................................................................................ 26 Ograničenja............................................................................................................................................. 26 Prvi primer...................................................................................................................................... 27 Uvod ......................................................................................................................................................... 27 Primer na Javi......................................................................................................................................... 27 Ključne apstrakcije................................................................................................................................. 27 Grupisanje............................................................................................................................................... 28 Ponašanje................................................................................................................................................. 28 Komponente ............................................................................................................................................ 28 Dijagrami klasa .............................................................................................................................. 29 Uvod ......................................................................................................................................................... 29 Klasifikator.............................................................................................................................................. 29 Klasa......................................................................................................................................................... 29 Simbol klase............................................................................................................................................. 29 Atributi i operacije.................................................................................................................................. 30 Dodatne mogućnosti ............................................................................................................................... 30 Tipovi podataka ...................................................................................................................................... 31 Osobine klasa........................................................................................................................................... 31 Sintaksa atributa..................................................................................................................................... 31 Sintaksa operacije................................................................................................................................... 31 Relacije..................................................................................................................................................... 32 Zavisnost.................................................................................................................................................. 32 Generalizacija.......................................................................................................................................... 32 Asocijacija................................................................................................................................................ 33 Realizacija................................................................................................................................................ 33 Primer osnovnih relacija........................................................................................................................ 33 Ukrasi asocijacije.................................................................................................................................... 34 Multiplikativnost..................................................................................................................................... 34 Agregacija................................................................................................................................................ 34
  • 7. 7 Projektovanje softvera Kompozicija............................................................................................................................................. 34 Primer asocijacija ................................................................................................................................... 35 Navigacija ................................................................................................................................................ 35 Pravo pristupa preko asocijacije........................................................................................................... 35 Ugnežđivanje........................................................................................................................................... 35 Dijagrami paketa ............................................................................................................................36 Uvod ......................................................................................................................................................... 36 Paket......................................................................................................................................................... 36 Imenovanje paketa i elemenata ............................................................................................................. 36 Vlasništvo i pravo pristupa .................................................................................................................... 37 Notacija.................................................................................................................................................... 37 Relacije..................................................................................................................................................... 37 Principi modeliranja............................................................................................................................... 38 Stereotipovi paketa ................................................................................................................................. 39 Dijagrami objekata .........................................................................................................................40 Uvod ......................................................................................................................................................... 40 Namena .................................................................................................................................................... 40 Objekti ..................................................................................................................................................... 40 Veze .......................................................................................................................................................... 40 Primer – uzorak Kompozicija................................................................................................................ 41 Primer - relacija “pohađa” .................................................................................................................... 41 Dijagrami interakcije......................................................................................................................42 Uvod ......................................................................................................................................................... 42 Kontekst interakcije ............................................................................................................................... 42 Poruka...................................................................................................................................................... 42 Vrste dijagrama interakcije................................................................................................................... 43 Dijagrami sekvence i komunikcije ........................................................................................................ 43 Uloge i njihove linije života.................................................................................................................... 44 Konektori................................................................................................................................................. 44 Slanje i prijem poruke............................................................................................................................ 45 Sekvenciranje poruka............................................................................................................................. 46 Sekvenciranje poruka u nitima.............................................................................................................. 47 Sintaksa poruke....................................................................................................................................... 47 Životni vek objekata i veza..................................................................................................................... 47 Događanje izvršenja (fokus kontrole)................................................................................................... 47 Primer Bankomat – dijagram sekvence................................................................................................ 48 Primer Bankomat – dijagram komunikacije ....................................................................................... 48
  • 8. 8 Sadržaj Elektrotehnički fakultet u Beogradu Iteracije i grananje.................................................................................................................................. 49 Fragment (okvir) interakcije ................................................................................................................. 49 Operatori kombinovanih fragmenata................................................................................................... 49 Primer operatora okvira interakcije..................................................................................................... 50 Dijagrami slučajeva korišćenja ..................................................................................................... 51 Uvod ......................................................................................................................................................... 51 Slučajevi korišćenja................................................................................................................................ 51 Ponašanje slučaja korišćenja ................................................................................................................. 51 Primer opisa ponašanja.......................................................................................................................... 51 Akteri ....................................................................................................................................................... 52 Relacija komunikacije ............................................................................................................................ 52 Relacija uključivanja.............................................................................................................................. 52 Primer – korisnici foruma...................................................................................................................... 53 Relacija proširivanja .............................................................................................................................. 53 Tačke proširenja slučaja korišćenja...................................................................................................... 54 Relacija generalizacije............................................................................................................................ 54 Okvir subjekta......................................................................................................................................... 55 Primer – Info sistem fakulteta ............................................................................................................... 55 Dijagrami aktivnosti....................................................................................................................... 56 Uvod ......................................................................................................................................................... 56 Odnos prema drugim dijagramima ...................................................................................................... 56 Aktivnosti i akcije ................................................................................................................................... 56 Aktivnosti................................................................................................................................................. 57 Akcije ....................................................................................................................................................... 57 Elementi dijagrama aktivnosti............................................................................................................... 58 Pseudočvorovi, tranzicije, konektori..................................................................................................... 58 Sekvencijalna grananja .......................................................................................................................... 59 Primeri grananja i iteracije.................................................................................................................... 59 Konkurentna grananja........................................................................................................................... 59 Tok objekata............................................................................................................................................ 60 Primer ...................................................................................................................................................... 60 Plivačke staze........................................................................................................................................... 60 Hijerarhijske staze i particije ................................................................................................................ 61 Primer dijagrama aktivnosti.................................................................................................................. 62 Izuzeci ...................................................................................................................................................... 62 Signali i događaji..................................................................................................................................... 63 Primer slanja i prihvatanja signala....................................................................................................... 63
  • 9. 9 Projektovanje softvera Oblast ekspanzije.................................................................................................................................... 64 Centralni bafer........................................................................................................................................ 64 Skladište podataka.................................................................................................................................. 65 Dijagrami stanja .............................................................................................................................66 Uvod ......................................................................................................................................................... 66 Kontekst primene automata stanja....................................................................................................... 66 Elementi dijagrama stanja..................................................................................................................... 66 Stanja i podautomati stanja................................................................................................................... 66 Elementi stanja........................................................................................................................................ 67 Primer stanja........................................................................................................................................... 67 Pseudostanja i specijalna stanja ............................................................................................................ 68 Prelazi ...................................................................................................................................................... 68 Primer dijagrama stanja........................................................................................................................ 69 Mealy i Moor automati........................................................................................................................... 69 Primer automata Mealy-jevog tipa ....................................................................................................... 69 Složena stanja.......................................................................................................................................... 69 Sekvencijalna podstanja......................................................................................................................... 70 Primer sekvencijalnih podstanja........................................................................................................... 70 Stanje sa istorijom .................................................................................................................................. 71 Konkurentna podstanja ......................................................................................................................... 71 Primer konkurentnih podstanja............................................................................................................ 72 Slanje signala........................................................................................................................................... 72 Dijagrami klasa – napredniji pojmovi ...........................................................................................73 Aktivne klase ........................................................................................................................................... 73 Procesi i niti............................................................................................................................................. 73 Aktivne klase - notacija .......................................................................................................................... 73 Šabloni ..................................................................................................................................................... 74 Šabloni - notacija .................................................................................................................................... 74 Izuzeci ...................................................................................................................................................... 74 Klasa asocijacije...................................................................................................................................... 74 N-arna asocijacija ................................................................................................................................... 75 Kvalifikacija ............................................................................................................................................ 75 Specifikator interfejsa (UML 1) ............................................................................................................ 76 Generalizacioni skupovi ......................................................................................................................... 76 Notacija i primer..................................................................................................................................... 76 Metaklasa................................................................................................................................................. 77 Powertype ................................................................................................................................................ 77
  • 10. 10 Sadržaj Elektrotehnički fakultet u Beogradu Konteksti relacije realizacije.................................................................................................................. 77 Parametrizovana kolaboracija .............................................................................................................. 78 Projektni uzorci....................................................................................................................................... 78 Standardni stereotipovi klasifikatora ................................................................................................... 78 Standardni stereotipovi relacije zavisnosti........................................................................................... 79 Standardni stereotipovi ostalih relacija................................................................................................ 79 Dijagrami složene strukture........................................................................................................... 80 Uvod ......................................................................................................................................................... 80 Notacija: delovi i portovi........................................................................................................................ 80 Konektori................................................................................................................................................. 80 Primer ...................................................................................................................................................... 81 Multiplikativnost..................................................................................................................................... 81 Saradnja................................................................................................................................................... 82 Događanje saradnje................................................................................................................................ 82 Dijagrami komponenata ................................................................................................................ 83 Uvod ......................................................................................................................................................... 83 Najčešće primene .................................................................................................................................... 83 Komponenta ............................................................................................................................................ 83 Grafička notacija .................................................................................................................................... 83 Artefakt.................................................................................................................................................... 84 Komponente i klase/interfejsi ................................................................................................................ 84 Port........................................................................................................................................................... 84 Port i interfejsi ........................................................................................................................................ 86 Vrste artefakata i stereotipovi ............................................................................................................... 86 Paketi i relacije zavisnosti ...................................................................................................................... 86 Primer dijagrama komponenata ........................................................................................................... 87 Dijagrami raspoređivanja .............................................................................................................. 88 Uvod ......................................................................................................................................................... 88 Najčešće primene .................................................................................................................................... 88 Čvorovi..................................................................................................................................................... 88 Organizovanje čvorova........................................................................................................................... 89 Čvorovi, komponente i artefakti............................................................................................................ 89 Uređaji i izvršna okruženja.................................................................................................................... 89 Veze .......................................................................................................................................................... 90 Primer – hardverska konfiguracija....................................................................................................... 90 Primer – čvorovi i artefakti.................................................................................................................... 90 Dijagrami interakcije - napredniji pojmovi................................................................................... 91
  • 11. 11 Projektovanje softvera Dijagrami pregleda interakcije.............................................................................................................. 91 Razlike od dijagrama aktivnosti............................................................................................................ 91 Grafička notacija .................................................................................................................................... 91 Primer – dijagram pregleda interakcije ............................................................................................... 92 Vremenski dijagrami.............................................................................................................................. 92 Grafička notacija .................................................................................................................................... 93 Primer vremenskog dijagrama.............................................................................................................. 93 Arhitektura metamodeliranja.........................................................................................................94 Uvod ......................................................................................................................................................... 94 Četvoronivoska arhitektura................................................................................................................... 94 Opis nivoa arhitekture............................................................................................................................ 94 Primer ...................................................................................................................................................... 95 Meta-metamodel ..................................................................................................................................... 95 Metamodel............................................................................................................................................... 95 Model ....................................................................................................................................................... 96 Korisnički objekti ................................................................................................................................... 96 Analogija.................................................................................................................................................. 96 Uvod ................................................................................................................................................97 Elementi uzorka..............................................................................................................................97 Naziv uzorka............................................................................................................................................ 97 Postavka problema ................................................................................................................................. 97 Opis rešenja............................................................................................................................................. 98 Posledice................................................................................................................................................... 98 Primer primene uzoraka: MVC .....................................................................................................98 Model – View komunikacija .................................................................................................................. 98 Komponovanje prikaza .......................................................................................................................... 99 Model – Controller komunikacija......................................................................................................... 99 Klasifikacija projektnih uzoraka..................................................................................................100 Kriterijum namene ............................................................................................................................... 100 Kriterijum domena............................................................................................................................... 100 Karakteristike vrsta uzoraka............................................................................................................... 100 Drugi odnosi između uzoraka.............................................................................................................. 101 Prostor projektnih uzoraka ................................................................................................................. 101 Katalog projektnih uzoraka..........................................................................................................101 UML notacija za opis uzoraka .....................................................................................................102 Unikat............................................................................................................................................103 Kompozicija...................................................................................................................................105
  • 12. 12 Sadržaj Elektrotehnički fakultet u Beogradu Prototip ......................................................................................................................................... 108 Posmatrač..................................................................................................................................... 110 Iterator.......................................................................................................................................... 113 Dekorater...................................................................................................................................... 117 Strategija....................................................................................................................................... 120 Šablonski metod ........................................................................................................................... 122 Adapter.......................................................................................................................................... 124 Stanje ............................................................................................................................................ 127 Podsetnik ...................................................................................................................................... 129 Muva ............................................................................................................................................. 131 Fabrički metod ............................................................................................................................. 133 Apstraktna fabrika ....................................................................................................................... 135 Fasada .......................................................................................................................................... 138 Posrednik...................................................................................................................................... 140 Zastupnik...................................................................................................................................... 143 Most .............................................................................................................................................. 146 Komanda....................................................................................................................................... 149 Lanac odgovornosti...................................................................................................................... 152 Graditelj........................................................................................................................................ 155 Posetilac........................................................................................................................................ 158 Interpreter..................................................................................................................................... 162 Literatura...................................................................................................................................... 166
  • 13. Uvod 13 Projektovanje softvera Uvod Osnovni pojmovi • Svaki ozbiljniji projekat prolazi kroz faze: analiza, projektovanje, implementacija, testiranje – slično je sa SW projektima, kroz faze se prolazi iterativno • Objektno-orijentisana metodologija razvoja – dominantna u proizvodnji softvera danas • Pojmovi – objektno-orijentisana analiza – OOA – objektno-orijentisano projektovanje – OOD – objektno-orijentisano programiranje – OOP – objektno-orijentisani jezik – OOL Objektno-orijentisana analiza • Tradicionalne tehnike strukturirane analize – fokus na toku podataka u sistemu • Booch (1994): Objektno-orijentisana analiza je metod analize koji ispituje zahteve iz perspektive klasa i objekata pronađenih u rečniku iz domena problema • Proizvod OOA – konceptualni model - ulaz u fazu OOD Objektno-orijentisano projektovanje • Tradicionalno strukturirano projektovanje – fokus na algoritamskim apstrakcijama • Booch (1994): Objektno-orijentisano projektovanje je metod projektovanja koji obuhvata – proces OO dekompozicije – notaciju za predstavljanje • logičkih i fizičkih • statičkih i dinamičkih aspekata modela sistema koji se projektuje • Proizvod OOD – model projektovane aplikacije ili sistema – ulaz u fazu OOP Objektno-orijentisano programiranje • Tradicionalno strukturirano programiranje – fokus na implementaciji algoritama • Booch (1994): Objektno-orijentisano programiranje je metod implementacije po kojem su: – programi organizovani kao kolekcije objekata koji sarađuju – svaki objekat predstavlja instancu neke klase i – sve klase su članovi neke hijerarhije klasa u kojoj su klase povezane relacijama nasleđivanja • Proizvod OOP – izvršna aplikacija ili sistem
  • 14. 14 Uvod Elektrotehnički fakultet u Beogradu Objektno-orijentisani jezik • Cardelli & Wegner (1985): Jezik je objektno-orijentisan ako i samo ako ispunjava: – da podržava objekte koji su apstrakcije podataka sa interfejsom preko imenovanih operacija i skrivenim lokalnim stanjem – da objekti imaju pridružen tip (klasu) – da tipovi (klase) mogu nasleđivati atribute nadtipa (natklase) • Ako jezik samo ne podržava nasleđivanje naziva se objektno-baziranim jezikom • Objektno-orijentisani jezici su: – Simula, Smalltalk, Object Pascal, Eiffel, Python, Ada95, C++, Java, C#, Visual Basic.NET, ... • Objektno-bazirani jezici – Ada83, VisualBasic v6,... Principi OO modela • Booch OOA&D (1994): Osnovni (obavezni) Dodatni (neobavezni) apstrakcija tipizacija kapsulacija konkurentnost modularnost perzistencija hijerarhija • Modifikacija: Osnovni (obavezni) Dodatni (neobavezni) apstrakcija konkurentnost kapsulacija perzistencija modularnost hijerarhija polimorfizam Apstrakcija i kapsulacija • Shaw (1984): Apstrakcija je uprošćeni opis ili specifikacija sistema koja naglašava neke od detalja ili osobina, dok potiskuje druge • Booch (1994): Apstrakcija ističe esencijalne karakteristrike objekta koje ga razlikuju od drugih vrsta objekata i tako definiše jasne konceptualne granice iz perspektive posmatrača • Kapsulacija je proces sakrivanja onih elemenata apstrakcije koji definišu strukturu i ponašanje • Kapsulacija služi da razdvoji konceptualni interfejs od implementacije apstrakcije Modularnost i hijerarhija • Modularnost je osobina sistema da se razlaže na skup kohezivnih i slabo spregnutih modula • Moduli su fizičke jedinice (nezavisno prevođenje) – predstavljaju komponete sistema – mogu se održavati nezavisno
  • 15. Uvod 15 Projektovanje softvera • Hijerarhija je rangiranje ili uređivanje apstrakcija • Nasleđivanje - “is a” hijerarhija – jednostruko/višestruko – potpuno (javno)/strukturno (privatno) • Sadržanje - “part of” hijerarhija – po vrednosti/po referenci (relevantno u C++, ali ne u Javi) – agregacija/kompozicija Tipizacija i polimorfizam • Tipizacija je osobina da se objekti različitih klasa ne mogu uopšte ili se mogu zamenjivati na ograničene načine – stroga i slaba tipizacija – statička i dinamička tipizacija (vezivanje) • Dinamička tipizacija i dinamičko vezivanje – tenički preduslov za ispoljavanje polomorfizma • Polimorfizam je osobina da se objekat kojem se pristupa kao objektu osnovne klase ponaša različito: – kao objekat osnovne klase ill kao objekat izvedene klase – ponašanje zavisi od dinamičkog tipa objekta, ne statičkog tipa reference • Polimorfizam objekta se zasniva na virtuelnim metodama Konkurentnost i perzistencija • Principi koji se dobro uklapaju u OO paradigmu • Nisu suštinski principi koji određuju da li je softver OO – OO softver ih nemora posedovati – Softver koji nije OO ih može posedovati • Konkurentnost je osobina koja razlikuje aktivne objekte od pasivnih – proces - ima vlastiti adresni prostor (tipično njime upravlja OS) – nit - deli isti adresni prostor sa drugim nitima • Perzistencija je osobina po kojoj se postojanje objekta proteže – kroz vreme (obj. nastavlja da živi nakon nestanka njegovog stvaraoca) – kroz prostor (obj. se premešta iz adresnog prostora u kojem je stvoren) Model i modeliranje • Model je pojednostavljenje realnosti • Model nekog sistema je apstrakcija tog realnog sistema iz određenog ugla posmatranja • Osnovna namena modela – da se sistem koji se razvija bolje razume • Modeliranje je važnije što je sistem kompleksniji – kompleksnost je odlika današnjih SW sistema • Savremena metodologija razvoja softvera – Model Driven Development (MDD)
  • 16. 16 Uvod Elektrotehnički fakultet u Beogradu Ciljevi modeliranja • Model pomaže da se sistem vizuelizuje • Model omogućava da se specificira – struktura sistema – ponašanje sistema • Model daje šablon koji usmerava konstrukciju sistema • Model dokumentuje projektne odluke koje se donose • Model omogućava ispitivanje projektnih odluka po relativno niskoj ceni OO model i pogledi na model • Model OO analize i projektovanja obuhvata više pogleda na sistem koji se razvija • Dve dimenzije pogleda na sistem: – logički/fizički aspekti – statički/dinamički aspekti • AiP OO sistema se obavlja u terminima klasa, objekata, njihovih relacija i interakcija • Tokom AiP koriste se različiti uglovi gledanja na model sistema u datom 2D prostoru Dijagrami • Za svaki pogled na model sistema može se definisati adekvatan dijagram • Svaki dijagram predstavlja jednu projekciju modela • Primer - aplikacija sa 100 klasa: – potrebno je više klasnih dijagrama (svaki prikazuje jedan pogled na model) • Jedno ime na svakom dijagramu označava isti entitet (sa izuzetkom operacija zbog preklapanja imena) Logički i fizički aspekti modela • Logički model sistema – opisuje ključne apstrakcije i mehanizme koji • obrazuju prostor problema ili • definišu arhitekturu sistema – definiše • strukturu i relacije između klasa • relacije i interakcije između objekata • Fizički model sistema – opisuje konkretnu softversku i hardversku kompoziciju – definiše arhitekturu modula i arhitekturu procesa Statički i dinamički aspekti modela • Statički aspekti modela se fokusiraju na strukturu sistema • Dinamički aspekti modela se fokusiraju na ponašanje sistema • Realni sistemi uvek imaju dinamičko ponašanje: – objekti se kreiraju i uništavaju – objekti šalju poruke drugim objektima nekim redosledom – spoljašnji događaji izazivaju reakcije izvesnih objekata
  • 17. Uvod 17 Projektovanje softvera Notacija za opis modela • Nekoliko notacija zaslužuju posebnu pažnju: – Booch i OMT notacija (iz istorijskih razloga) – UML notacija (standard) • Pogodnosti standardne formalne grafičke notacije: – olakšava se komunikacija između korisnika i članova razvojnog tima – projektant se rasterećuje od nebitnih detalja i koncentriše se na bitne – omogućava se upotreba automatizovanih alata za proveru konzistencije i korektnosti projekta ili izvršavanje modela • Nije neophodno koristiti celu notaciju – na primer Booch Lite, UML Basic (UML User Guide) • Potrebno je da notacija omogućava različit stepen detaljnosti (ponekad samo grube skice) • Notacija treba da bude nezavisna od programskog jezika – neki elementi notacije nemaju direktnu podršku u konkretnom jeziku Alati za modeliranje • IBM Rational: Software Architect (Rose, Rose XDE Developer, Software Modeler) http://www-01.ibm.com/software/rational/products/swarchitect/ • Borland: Together http://www.borland.com/us/products/together/index.aspx • Gentleware: Poseidon for UML http://www.gentleware.com • Open Source: StarUML http://staruml.sourceforge.net/en/ • Altova: Umodel http://www.altova.com/download/umodel/uml_tool.html • Omondo: EclipseUML http://www.omondo.com • Sparx Systems: Enterprise Architect http://www.sparxsystems.com • Visual Paradigm: Visual Paradigm for UML http://www.visual-paradigm.com/product/vpuml • Embarcadero Technologies: ER/Studio Software Architect http://www.embarcadero.com/products/er-studio-software-architect • Pregled alata: http://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools
  • 18. 18 UML – Pregled jezika Elektrotehnički fakultet u Beogradu Pregled jezika UML • Materijal prireman na osnovu: – Booch,G., Rumbaugh,J., Jacobson,I., The Unified Modeling Language User Guide, 2nd Edition, Addison Wesley, May 2005 – Rumbaugh,J., Jacobson,I., Booch,G., Unified Modeling Language Reference Manual, 2nd Edition, Addison-Wesley, 2004 – Fowler,M., UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd Edition, Pearson Education, 2004 – UML 2 Infrastructure Specification, OMG – UML 2 Superstructure Specification, OMG Standardni jezik za modeliranje UML • UML (Unified Modeling Language) je grafički jezik za: – vizuelizaciju – specifikaciju – konstruisanje i – dokumentovanje • softverski-intenzivnih sistema • UML omogućava konstruisanje šema koje modeliraju sistem opisujući: – konceptualne stvari • npr. proces poslovanja i funkcije sistema – konkretne stvari • npr. klasne tipove, šeme baza podataka, softverske komponente • Sajt: http://www.uml.org/ Korisnici UML-a • Sledeće kategorije korisnika UML-a se uočavaju: – sistem-analitičari i krajnji korisnici: specificiraju zahtevanu strukturu i ponašanje sistema – arhitekti: projektuju sistem koji zadovoljava zahteve – razvojni inženjeri (developers): transformišu arhitekturu u izvršni kod – kontrolori kvaliteta (quality assurance personel): proveravaju strukturu i ponašanje sistema – bibliotekari (librarians): kreiraju i katalogiziraju komponente – rukovodioci projekata (managers): vode i usmeravaju kadrove i upravljaju resursima Praistorija UML-a • Jezici za OO modeliranje se pojavljuju još od sredine 70ih – uzrok njihove pojave je pojava nove generacije OO jezika i povećana kompleksnost softverskih sistema • U periodu 1989-1994: – broj OO metoda je porastao sa manje od 10 na više od 50 • Metode koje su ostvarile najveći uticaj na oblast OO modeliranja su: – Booch metoda – OMT (Object Modeling Technique, Rumbaugh) – OOSE (Object Oriented Software Engineering, Jacobson) – Fusion – Shlaer-Mellor – Coad-Yourdon
  • 19. UML – Pregled jezika 19 Projektovanje softvera Istorija UML-a • 1994: početak rada na UML-u - Rumbaugh se pridružio Booch-u u firmi Rational • Oktobar 1995: pojavila se verzija 0.8 drafta UM-a (Unified Method) • Jesen 1995: Jacobson se pridružio Rational-u – rad na objedinjenju UM sa OOSE • Jun 1996: pojavila se verzija 0.9 UML-a • Važniji partneri (učestvovali u definisanju verzije 1.0): – DEC, HP, IBM, Microsoft, Oracle, Rational, TI, ... • U januaru 1997: OMG-u (Object Management Group) podnet predlog std. UML 1.0 • Grupa partnera je proširena drugim podnosiocima predloga: – npr. ObjecTime, Ericsson,... • Jul 1997: podnet predlog UML 1.1 koji je prihvaćen od OMG 14.11.1997. • Jun 1998: verzija UML 1.2 • Jesen 1998: verzija UML 1.3 • Septembar 2001: verzija UML 1.4 (v. 1.4.2 => ISO std. 19501:2005) • 2002: verzija UML 1.5 (akciona semantika) • Jun 2003: v 2.0, februar 2007: v 2.1, februar 2009: v 2.2, maj 2010: v 2.3 Konceptualni model UML-a • Tri osnovna elementa UML modela su: – Osnovni gradivni blokovi – Pravila za povezivanje gradivnih blokova – Opšti mehanizmi koji se primenjuju u UML-u • Gradivni blokovi UML-a – Stvari (things) • apstrakcije koje su "građani prvog reda" u modelu – Relacije (relationships) • povezuju stvari – Dijagrami (diagrams) • grupišu interesantne skupove povezanih stvari Stvari • Stvari strukture - statički delovi modela, reprezentuju konceptualne ili fizičke elemente (imenice) • Stvari ponašanja - dinamički delovi modela, reprezentuju ponašanje kroz prostor i vreme (glagoli) • Stvari grupisanja - organizacioni delovi modela, kutije u koje model može biti dekomponovan • Stvari anotacije - objašnjavajući delovi modela, komentari koji se primenjuju na bilo koji element
  • 20. 20 UML – Pregled jezika Elektrotehnički fakultet u Beogradu Stvari strukture – klase i interfejsi • Klasa je opis skupa objekata koji dele zajedničke karakteristike (atribute i operacije), ograničenja i semantiku • Aktivna klasa je klasa čiji objekti imaju vlastitu nit kontrole i tako mogu da započnu neku upravljačku aktivnost • Ponašanje objekta aktivne klase je konkurentno sa drugim aktivnim objektima • Interfejs je kolekcija operacija koje specificiraju servis klase ili komponente • Interfejs opisuje ponašanje elementa koje je spolja vidljivo • Interfejs definiše skup specifikacija (prototipova) operacija ali ne i njihove implementacije • Klasa i komponenta mogu da implementiraju više interfejsa Stvari strukture – slučaj korišćenja i saradnja • Slučaj korišćenja (use-case) je opis skupa sekvenci aktivnosti koje obavlja sistem da bi proizveo vidljiv rezultat vredan za pojedinog aktera • Jedna sekvenca aktivnosti – instanca slučaja korišćenja (scenario) • Slučaj korišćenja reprezentuje funkcionalnost sistema (mada se neki autori ne slažu sa tim) • Koirsti se da bi se strukturirale stvari ponašanja u modelu • Realizuje se kroz saradnju (kolaboraciju) • Saradnja (collaboration) definiše zajednicu i interakciju aktera i drugih elemenata koji dejstvuju zajedno Prikaz rasporeda casova IStek Alarm postaviVreme() ukljuci() iskljuci() Tacka x y rastojanje()
  • 21. UML – Pregled jezika 21 Projektovanje softvera da ostvare kooperativno ponašanje koje je kvalitativno novo u odnosu na prostu sumu ponašanja elemenata • Saradnja ima strukturalnu, kao i dimenziju ponašanja • Projektni uzorci (design patterns) se predstavljaju kao saradnje Stvari strukture – komponenta i čvor • Komponenta je fizički i zamenjivi deo sistema koji ostvaruje realizaciju skupa interfejsa Servis.jar • Komponenta je tip koji ima ponuđene i zahtevane interfejse • U sistemu mogu postojati razne vrste izvršnih komponenata, npr. ActiveX ili Java Beans, ili fajlovi izvornog koda • Komponenta obično predstavlja fizičko pakovanje drugih logičkih elemenata kao što su klase, interfejsi i saradnje • Čvor (node) je fizički element koji postoji u vreme izvršenja i reprezentuje resurs obrade • Čvor poseduje neku memoriju i, često, mogućnost procesiranja • Skup komponenata može biti u čvoru, a može i migrirati sa čvora na čvor • Prvih pet stvari reprezentuje konceptualne ili logičke stvari, dok poslednje dve (komponenta i čvor) reprezentuju fizičke stvari • Sve navedene stvari osim saradnje predstavljaju klasifikatore: mehanizme koji opisuju strukturne i karakteristike ponašanja Stvari ponašanja • Interakcija je ponašanje koje obuhvata skup poruka koje se razmenjuju između skupa objekata unutar posebnog konteksta da se ostvari specifična svrha • Interakcija uključuje određen broj elemenata: – poruke (priložen grafički simbol) – – sekvence akcija (ponašanje izazvano porukom) – veze (komunikacione putanje između objekata) Server Posmatrac prikazi() Servis.jar <<component>>
  • 22. 22 UML – Pregled jezika Elektrotehnički fakultet u Beogradu • Automat stanja je ponašanje koje specificira sekvence stanja kroz koje prolazi jedan objekat ili jedna interakcija za vreme svog životnog veka, kao posledice događaja, zajedno sa njegovim odgovorima na te događaje • Automat stanja uključuje određen broj elemenata: – stanja (priložen grafički simbol), – tranzicije (prelaze između stanja) – događaje (stvari koje izazivaju tranziciju) – aktivnosti (odgovore na tranzicije) Stvari organizacije i anotacije • Paket je opštenamenski mehanizam za organizovanje elemenata u grupe • Stvari strukture, ponašanja, pa čak i druge stvari grupisanja mogu biti smeštene u paket • Za razliku od komponente, paket je čisto konceptualna stvar (egzistira samo u vreme razvoja) • Pored paketa postoje i sledeće stvari grupisanja: – radni okviri (frameworks), modeli • Napomena je simbol za prikazivanje komentara pridruženih jednom elementu ili kolekciji elemenata Relacije • Zavisnost je semantička relacija između dve stvari u kojoj izmena jedne (nezavisne) stvari može uticati na semantiku druge (zavisne) stvari • Asocijacija je strukturna relacija koja opisuje skup veza između objekata – sadržanje je specijalna vrsta asocijacije koja reprezentuje strukturnu relaciju između celine i njenih delova – često grafički simbol sadrži ukrase kao što su multiplikativnost i imena uloga +zaposleni+poslodavac 1..*1 FIFO awt Cekanje
  • 23. UML – Pregled jezika 23 Projektovanje softvera • Generalizacija je relacija specijalizacije/generalizacije u kojoj su objekti specijalizovanog elementa (deca) zamene za objekte generalizovanog elementa (roditelja) – dete deli strukturu i ponašanje roditelja • Realizacija je semantička relacija između klasifikatora u kojoj jedan klasifikator specificira ugovor koji drugi klasifikator ostvaruje – Sreće se: • između interfejsa i klasa ili komponenata koje ga realizuju • između slučajeva korišćenja i saradnji koje ih realizuju • Dijagrami • Dijagram je grafička reprezentacija skupa povezanih elemenata – najčešće se pojavljuje u obliku grafa temena (stvari) povezanih granama (relacijama) • Dijagrami se crtaju da bi se sistem vizualizovao iz različitih perspektiva • Vrste dijagrama u UML-u: – dijagrami za prikaz statičkih aspekata sistema – dijagrami za prikaz dinamičkih aspekata sistema Statički dijagrami • Dijagram klasa (class diagram) prikazuje logičku strukturu apstrakcija: skup klasa, interfejsa, saradnji i njihovih relacija • Dijagram objekata (object diagram) prikazuje logičku strukturu instanci: skup objekata (instanci klasa) i njihovih veza • Dijagram komponenata (component diagram) prikazuje fizičku organizaciju i zavisnosti između skupa komponenata • Dijagram raspoređivanja (deployment diagram) prikazuje konfiguraciju čvorova obrade i komponenata koje žive na njima • Dijagram paketa (package diagram) [UML 2] prikazuje statičku strukturu grupisanja elemenata modela u pakete • Dijagram složene strukture (composite structure diagram) [UML 2] prikazuje hijerarhijsko razlaganje primerka klase, komponente ili saradnje na delove Dinamički dijagrami • Dijagram slučajeva korišćenja (use case diagram) prikazuje skup slučajeva korišćenja, aktera (specijalne vrste klasa) i njihovih relacija • Dijagram interakcije (interaction diagram) prikazuje jednu interakciju koju čine skup objekata i njihovih veza sa porukama koje razmenjuju – Dijagram sekvence (sequence diagram) je dijagram interakcije koji naglašava vremenski redosled poruka – Dijagram komunikacije (communication diagram) je dijagram interakcije koji naglašava strukturnu organizaciju objekata koji šalju i primaju poruke; – Dijagram pregleda interakcije (interaction overview diagram) [UML 2] je dijagram interakcije koji definiše interakcije kroz vrstu dijagrama aktivnosti (kombinacija d. aktivnosti i d. sekvence)
  • 24. 24 UML – Pregled jezika Elektrotehnički fakultet u Beogradu – Vremenski dijagram (timing diagram) [UML 2] je dijagram interakcije koji prikazuje promenu stanja objekata u vremenu • Dijagram aktivnosti (activity diagram) prikazuje tok od jedne do druge aktivnosti u sistemu (nije specijalna vrsta dijagrama stanja u UML 2) • Dijagram stanja (statechart diagram) prikazuje konačni automat koji obuhvata stanja, tranzicije, događaje i aktivnosti Pravila UML-a • UML ima pravila koja specificiraju kako izgleda dobro formiran model • Dobro formiran model je – semantički konzistentan – u harmoniji sa korelisanim modelima • UML ima semantička pravila za: – Imena - kako se nazivaju stvari, relacije i dijagrami – Doseg - koji kontekst daje specifično značenje imenu – Vidljivost - gde se imena mogu videti i koristiti od strane drugih – Integritet - kako se stvari propisno i konzistentno korelišu prema drugim stvarima – Izvršenje - šta to znači za izvršenje ili simulaciju dinamičkog modela • Tokom razvoja se ne prave samo modeli koji su dobro formirani, već mogu biti i: – Skraćeni (elided) - izvesni elementi su sakriveni da se pojednostavi izgled – Nekompletni - izvesni elementi nedostaju – Nekonzistentni - integritet modela nije garantovan • Pravila UML-a vode kroz vreme ovakve modele prema dobro formiranim Opšti mehanizmi UML-a • Gradnja je jednostavnija i harmoničnija ako se poštuju opšti uzorci • Postoje četiri opšta mehanizma koja se primenjuju konzistentno kroz jezik: – specifikacije – ukrasi – opšte podele – mehanizmi proširivosti Specifikacije • Iza svakog dela grafičke notacije UML-a leži specifikacija koja obezbeđuje tekstualni iskaz sintakse i semantike tog gradivnog bloka • Iza grafičkog simbola (sličice, ikone) klase stoji specifikacija koja navodi: – potpun skup atributa – potpun skup operacija (uključujući kompletne potpise) – ponašanje • Grafički simbol može pokazivati samo mali deo potpune specifikacije • Može postojati i drugi izgled iste klase koji prikazuje drugi skup delova iste klase konzistentan sa specifikacijom • UML grafička notacija se koristi za vizuelizaciju • UML specifikacija se koristi da se saopšte detalji sistema • Modeli se mogu graditi:
  • 25. UML – Pregled jezika 25 Projektovanje softvera – najpre pomoću crtanja dijagrama, a zatim dodavanjem semantike u specifikaciju (tipično za direktni inženjering pri kreiranju novog sistema) – direktnim kreiranjem specifikacije pa naknadnim kreiranjem dijagrama koji su njene projekcije (tipično za reverzni inženjering postojećeg sistema) Ukrasi • Detalji specifikacije se prikazuju kao grafički ili tekstualni ukras osnovnog grafičkog elementa • Na primer: – za klasu se može naglasiti da je apstraktna tako što se ime piše italic slovima – vidljivost (pravo pristupa) atributa i operacija se može naglasiti pomoću simbola: + (javni), # (zaštićeni), – (privatni) i ~(paketni) – Agregacija se predstavlja dodatnim simbolom na simbolu asocijacije Opšte podele • Dve osnovne podele: – apstrakcije i instance – interfejsi i implementacije • Primeri prve podele: – klase/objekti (klasa je apstrakcija, a objekat instanca te apstrakcije) – slučajevi korišćenja/instance slučajeva korišćenja (scenarija) – komponente/instance komponenti • Primeri druge podele: – interfejsi/komponente – slučajevi korišćenja/saradnje – operacije/metodi • U UML-u se razlika između apstrakcije i instance pravi tako što se imena instanci podvlače • Interfejs deklariše ugovor, a implementacija reprezentuje jednu konkretnu realizaciju ugovora Mehanizmi proširivosti • UML je otvoren za proširenja jezika na kontrolisani način • Mehanizmi proširivosti uključuju: – Stereotipove – Obeležene vrednosti – Ograničenja
  • 26. 26 UML – Pregled jezika Elektrotehnički fakultet u Beogradu Stereotipovi • Stereotip proširuje rečnik UML-a dopuštajući kreiranje novih vrsta gradivnih blokova specifičnih za problem • Novi gradivni blokovi su izvedeni iz postojećih • Stereotop se prikazuje kao ime uokvireno znacima << i >> smešteno iznad imena odgovarajućeg elementa • Na primer, izuzeci su klase čiji se objekti mogu bacati i hvatati • Može se definisati i grafički simbol za određeni stereotip Obeležene vrednosti • Obeležene vrednosti proširuju osobine UML gradivnog bloka dopuštajući dodavanje nove informacije • Obeležene vrednosti se prikazuju kao string okružen zagradama { i } ispod imena odgovarajućeg elementa • String sadrži ime (tag), sepearator (simbol =) i vrednost • Na primer, verzija i autor klase nisu primitivni koncepti u UML-u, a mogu se dodati bilo kom gradivnom bloku kao što je klasa • Ograničenja • Ograničenja proširuju semantiku UML gradivnog bloka dopuštajući da se dodaju nova pravila ili promene postojeća • Ograničenja se mogu pisati: – kao slobodan tekst – na OCL (Object Constraint Language) RedCekanja {verzija=4.0 autor=...} Prekoracenje <<exception>> Merljiv <<interface>> +meri() Merljiv +meri() ⇔ RedCekanja dodaj() ukloni() isprazni() {red uredjen}
  • 27. UML – Prvi primer 27 Projektovanje softvera Prvi primer Uvod • Najbolji način učenja UML-a je kroz kreiranje modela na UML-u • Većina programera kada uči novi jezik – prvo napiše program koji ispiše "Hello, World!" • Početak učenja modeliranja na jeziku UML – model za "Hello, World!" program uz mehanizme Jave koji omogućavaju izvršenje Primer na Javi • Primer: trivijalni aplet koji ispisuje: "Hello, World!“ import java.awt.Graphics; class HelloWorld extends java.applet.Applet{ public void paint(Graphics g){ g.drawString("Hello, World!", 10, 10); } } • Iako je primer programa trivijalan, infrastruktura potrebna da bi aplet radio nije trivijalna Ključne apstrakcije • Osnovni klasni dijagram: • • Klasa HelloWorld ima jednan metod (operaciju) paint() – redefinisni metod klase Component koji "iscrtava" datu komponentu na željeni način – metod se poziva iz okruženja (ne poziva ga programer) i to inicijalno kao i pri pomeranju, otkrivanju, promeni veličine komponente • Komentar (note) kaže šta radi operacija paint() • Osnovne relacije: • Klasa HelloWorld se izvodi iz klase Applet, a koristi klasu Graphics – klasa Graphics se pojavljuje kao tip formalnog argumenta metode paint() (zavisnost) – klasa Graphics omogućava crtanje i pisanje na komponentama (grafički kontekst) – grafičke operacije menjaju bite samo unutar clipping regiona vezanog za objekat Graphics – crtanje i pisanje se obavlja korišćenjem tekućih atributa datog Graphics objekta Applet HelloWorld +paint() Graphics +drawString() HelloWorld +paint() g.drawString("Hello, World!", 10, 10);
  • 28. 28 UML – Prvi primer Elektrotehnički fakultet u Beogradu • Hijerarhija nasleđivanja • ImageObserver je interfejs preko kojeg se primaju obaveštenja o konstrukciji slike – interfejs sadrži (callback) metod imageUpdate() preko kojeg se javlja progres/status konstrukcije slike Grupisanje Ponašanje • Dijagram sekvence (originalni primer je nešto kompleksniji) Komponente HelloWorld +paint() Applet Panel Container Componenet ImageObserver Object Hello.jpg <<artifact>> Hello.htm <<artifact>> HelloWorld.class <<artifact>> Hello.java <<artifact>> : Korisnik : Browser : JVM target : HelloWorld g : Graphics otvoriHTMLStranu() run() paint() drawString() java awt applet lang
  • 29. UML – Dijagrami klasa 29 Projektovanje softvera Dijagrami klasa Uvod • Dijagram klasa prikazuje skup klasa, interfejsa, saradnji i njihovih relacija • Dijagram klasa je graf sačinjen od temena (stvari) povezanih granama (relacijama) • Specificira logičke i statičke aspekte modela • Elementi dijagrama klasa – stvari: klase, interfejsi, saradnje, paketi, objekti (izuzetno) – relacije: zavisnosti, generalizacije, asocijacije, realizacije • Dijagrami klasa su najčešći u objektnom modeliranju • Većina alata podržava generisanje skeleta koda iz dijagrama klasa Klasifikator • Klasifikator je – klasifikacija primeraka (instances) sa zajedničkim karakteristikama – mehanizam koji opisuje strukturu i ponašanje (ima atribute i operacije) – apstraktna metaklasa – prostor imena – tip koji je moguća generalizacija ili specijalizacija drugog – potencijalno ugnežden u drugi klasifikator • Ne pojavljuju se svi klasifikatori na dijagramima klasa • Konkretni klasifikatori su: klase, interfejsi, tipovi podataka, komponente, čvorovi, slučajevi korišćenja, ... • Klasifikator ima odeljke, koji se ne moraju svi prikazati – odeljci mogu imati svoje nazive, da bi se izbegla dvoznačnost kada neki odeljak nedostaje Klasa • UML 2.0 definicija: klasa je opis skupa objekata koji dele istu specifikaciju karakteristika (features), ograničenja (constraints) i semantike – karakteristike: atributi i operacije • Klasa implementira jedan ili više interfejsa • Klase opisuju apstrakcije iz domena problema kao i apstrakcije iz domena rešenja • Koriste se da reprezentuju softverske stvari, hardverske stvari i konceptualne stvari Simbol klase • Simbol klase je pravougaonik podeljen horizontalnim linijama u odeljke – odeljak može imati i naziv odeljka naveden kao stereotip GeometrijskaFigura -karakteristicnaTacka +pomeri() +promeniVelicinu() +crtaj() responsibilities -- geometrijska svojstva figura u ravni naziv atributi operacije odgovornosti
  • 30. 30 UML – Dijagrami klasa Elektrotehnički fakultet u Beogradu • Naziv klase – jednostavan: <naziv> – sa putanjom: <naziv paketa>::<jednostavan naziv> npr: java::awt::Rectangle • Odgovornosti klase – neformalna semantika – u zasebnom odeljku – slobodan tekst – svaka počinje sa -- • Svaka dobro strukturirana klasa bi trebalo da ima barem jednu i ne više od nekoliko odgovornosti Atributi i operacije • Atributi su imenovana svojstva klase koja opisuju opsege vrednosti koje instance tog svojstva mogu sadržati • Drugi nazivi: članovi podaci (C++), polja (Java) • Atributi su strukturne karakteristike (features) klase • Notacija: ime, opciono sa tipom i podrazumevanom vrednošću • Primer: izbor:Boolean=false • Operacije su servisi koji se mogu zahtevati od nekog objekta klase • Notacija: potpis koji sadrži listu argumenata sa eventualnim tipovima i podrazumevanim vrednostima, kao i tipom rezultata • Primer: pomeri(novaPozicija:Pozicija=koordinatniPocetak):Pozicija Dodatne mogućnosti • Simbol klase može sadržati prazne odeljke, a može biti i bez odeljaka Potrosac Potrosac • Prazan odeljak atributa/operacija ne znači da ih klasa nema, već da nisu relevantni za dati pogled (dijagram) • Mogu se koristiti i tri tačke (...) da naznače postojanje dodatnih atributa/operacija • Atributi/operacije se mogu grupisati, a svakoj grupi može da prethoditi opisni prefiks • Apstraktna klasa i apstraktna operacija – naziv se piše italicom ili {abstract} • Zajednički članovi (atributi i operacije) klase – pišu se podvučeno • Pravo pristupa članu (vidljivost, visibility): znak se piše ispred atributa/operacije: – javni član: + (podrazumevano) – zaštićeni član: # – paketski član: ~ – privatni član: -
  • 31. UML – Dijagrami klasa 31 Projektovanje softvera Tipovi podataka • Tipovi podataka (dataType) su tipovi čije vrednosti nemaju identitet • Vrste tipova podataka: – primitivni tipovi • postojeći prosti tipovi podataka u jeziku implementacije – nabrojivi tipovi • uzimaju vrednost iz definisanog skupa simboličkih imena Osobine klasa • Multiplikativnost je osobina klase koja ograničava broj njenih instanci • Multiplikativnost se navodi u gornjem desnom uglu • Specifične vrednosti multiplikativnosti: – 0 – uslužna klasa, sadrži samo zajedničke (statičke) atribute i operacije – 1 – unikatna (singleton) klasa • Podrazumevani slučaj je proizvoljan broj instanci • Koren hijerarhije klasa (root) je klasa koja nema roditelje • List hijerarhije klasa (leaf) je klasa koja nema potomke, tj. ona iz koje se ne može izvoditi • Osobine {root} i {leaf} se pišu u odeljku naziva klase Sintaksa atributa • Sintaksa atrubuta: [pravo_pristupa] [/] ime [:tip] [multiplikativnost] [=inicijalna_vrednost][{osobina}] • Simbol / označava da je atribut "izveden" (može se "izračunati" na osnovu drugih) • Multiplikativnost se primenjuje na atribute klase – specificira se kao interval celih brojeva, gornja granica može biti neograničena – piše se u uglastim zagradama, na primer: consolePort:Port[2..*] • Osobine atributa (neke): – readOnly – vrednost se ne može menjati, dodavati ni uklanjati nakon inicijalizovanja – ordered – vrednosti su uređene – unique – vrednosti elemenata (u jednom objektu) su jedinstvene – bag – dozvoljava ponavljanje elemenata (nije skup) – seq ili sequence – isto što i ordered bag (uređen niz elemenata sa ponavljanjem) – composite – atribut složene strukture – redefines ime – redefiniše ime – subsets ime – podskup skupa atributa ime Sintaksa operacije • Sintaksa operacije: [pravo_pristupa] ime ([lista_argumenata]) [: tip_rezultata] [{osobina}] • Sintaksa argumenta u listi: [smer] ime : tip [multiplikativnost] [ = podrazumevana_vrednost] [{osobina}]
  • 32. 32 UML – Dijagrami klasa Elektrotehnički fakultet u Beogradu • Smer može biti: – in – ulazni argument, ne sme biti modifikovan (podrazumevano) – out – izlazni argument, mora se inicijalizovati – inout – ulazno-izlazni argument, može se modifikovati • Osobine operacije: – query – izvršenje ne menja stanje objekta, operacija je čista funkcija bez bočnih efekata – exception lista – operacija može da baca izuzetke iz liste – leaf – operacija nije polimorfna i ne može se redefinisati u izvedenoj klasi – concurrency = vrednost – šta garantuje operacija pri izvršenju u konkurentnoj sredini • sequential – pozivaoci moraju obezbediti da je samo jedna nit u jednom trenutku poziva • guarded – operacija garantuje sekvencijalizaciju svih poziva svih štićenih operacija • concurrent – operacija se izvršava kao atomska Relacije • Na klasnim dijagramima se pojavljuju sve četiri (prve tri su češće) vrste relacija: – zavisnost (dependency) – asocijacija (association) – generalizacija (generalization) – realizacija (realization) Zavisnost • Povezuje stvari kod kojih izmena nezavisne stvari utiče na ponašanje zavisne stvari • Zavisna stvar koristi nezavisnu stvar • Grafička notacija: klasa A zavisi od klase B • Često se koristi kad je jedna klasa (B) tip parametra operacije druge klase (A) Generalizacija • Povezuje opštije (superklasa ili roditelj) sa specijalizovanim (subklasa ili dete) stvarima • Grafička notacija: klasa A je dete, B je roditelj A B • Drugi nazivi relacije: – vrsta (is-a-kind-of), izvođenje (A se izvodi iz B), nasleđivanje, proširivanje • Generalizacija znači da se objekti dece mogu pojaviti gde god se očekuje objekat roditelja • Deca nasleđuju osobine svojih roditelja, naročito atribute i operacije • Operacija deteta koja ima isti potpis kao operacija roditelja redefiniše operaciju roditelja • Redefinicija operacije omogućava njeno polimorfno ponašanje • Klasa koja ima samo jednog roditelja koristi jednostruko nasleđivanje • Klasa koja ima više roditelja koristi višestruko nasleđivanje A B
  • 33. UML – Dijagrami klasa 33 Projektovanje softvera Asocijacija • Specificira da li su instance jedne stvari povezane sa instancama druge stvari • Asocijacija je strukturna relacija • Asocijacija je (ako se drugačije ne kaže) bidirekcionalna veza (dvosmerna navigabilnost) • Dozvoljena je i asocijacija sa samim sobom (postoje veze između objekata iste klase) • Uobičajeno je da asocijacija povezuje dve klase (binarna asoc.) • Moguće je da asocijacija povezuje i više klasa (n-arna asocijacija) • Grafička notacija: klasa A je u asocijaciji sa klasom B A B Realizacija • Semantička relacija između klasifikatora od kojih jedan specificira ugovor a drugi garantuje njegovu implementaciju • Grafička notacija: – kanonička forma: – skraćena forma: I K • Korišćenje interfejsa (relacija zavisnosti) – kanonička forma: – skraćena forma (ball & socket): Kijent I K Primer osnovnih relacija Prozor +otvori() +zatvori() +pomeri() +prikazi() +obradiDogadjaj() Dogadjaj Konzolni prozor Dijalog Komponenta Kijent I <<interface>> K I <<interface>>K
  • 34. 34 UML – Dijagrami klasa Elektrotehnički fakultet u Beogradu Ukrasi asocijacije • Na asocijaciji se mogu pojaviti sledeći ukrasi: – Iime, smer čitanja, uloge, navigabilnost, multiplikativnost, sadržanje (agregacija ili kompozicija), pravo pristupa (vidljivost) kraju preko asocijacije Multiplikativnost • Na jednoj strani asocijacije označava se broj objekata sa te strane koji su u vezi sa tačno jednim objektom sa druge strane relacije • Može biti: – nijedan (0), – tačno jedan (1), – proizvoljno mnogo, uključujući nijedan (*), – opseg (npr. 2..*) • UML 2.0 više ne dozvoljava izraze sa diskontinuitetom – npr. 0..1,3..4,6..* - proizvoljan broj osim 2 i 5 Agregacija • Vrsta asocijacije kod koje jedna strana igra ulogu celine a druga ulogu dela (whole/part) • Celina sadrži delove ("has-a" relacija) • Agregacija ne govori ništa o uzajamnom odnosu životnih vekova celine i dela • Deo u agregaciji može biti zajednički deo više celina • Grafička notacija: Celina Deo Kompozicija • Asocijacija kod koje postoji odnos celina/deo, ali je celina odgovorna za životni vek dela • Agregacija sa strogim vlasništvom i koincidentnim životnim vekom dela u odnosu na celinu • Deo može nastati u toku života celina i može biti uništen pre uništenja celine • Deo u kompoziciji može biti deo samo jedne celine • Grafički notacija: Celina Deo Osoba Kompanija Odeljenje Radi za -poslodavac-zaposlen 11..* *1 Asocijacija Multiplikativnost Naziv Sadržanje Uloga
  • 35. UML – Dijagrami klasa 35 Projektovanje softvera Primer asocijacija Fakultet Katedra Student Predmet Nastavnik ima 1 1..* studira 1..* * pohadja ** predaje -predavac-kurs 1..** radi pri -jedinca -clan 1 * upravlja -sef1 0..1 odgovara za 1..* * Navigacija • Strelica označava navigabilnost u naznačenom pravcu • Krstić označava da nema navigabilnosti prema označenoj strani • Za asocijaciju bez ukrasa navigabilnosti se smatra da je navigabilnost neodređena • Grafička notacija: Pravo pristupa preko asocijacije • Ograničava vidljivost (visibility) objekata u asocijaciji za spoljašnji svet • Označava se sa + , #, -, ~ ispred imena uloge odgovarajuće strane relacije • + znači da objektima sa te strane mogu pristupati svi objekti preko objekta sa druge strane • - znači da objektima klase sa te strane mogu pristupati samo objekti klase sa druge strane • # znači da i objekti klasa izvedenih iz klase sa drugog kraja asocijacije imaju pristup • ~ znači da i objekti klasa iz istog paketa kao klasa sa drugog kraja asocijacije imaju pristup • Primer: GrupaKorisnika Korisnik Lozinka +korisnik * * -kljuc-vlasnik 1..*1 • Podrazumevan je javni vizibilitet uloge u asocijaciji Ugnežđivanje • Označava pojam kada je klasa B deklarisana u prostoru imena klase A • A BA B A BA B A B+
  • 36. 36 UML – Dijagrami paketa Elektrotehnički fakultet u Beogradu Dijagrami paketa Uvod • Dijagrami paketa se koriste da prikažu dekompoziciju modela u organizacione jedinice i njihove zavisnosti • Dijagrami paketa pomažu: – da se uoče zavisnosti između logičkih celina i – da se te zavisnosti drže pod kontrolom • Primer: Paket • Paket je organizaciona stvar koja se koristi za grupisanje elemenata • Paket predstavlja prostor imena i element koji se može pakovati, tako da se može sadržati u drugim paketima • Definicija uz UML RM: – paket je opšti mehanizam za organizovanje elemenata u grupe, koji uspostavlja vlasništvo nad elementima i obezbeđuje jedinstvenost imena elemenata • Paketi se koriste – uobičajeno za grupisanje logičkih apstrakcija modela (klasa) – mogu se koristiti i za grupisanje fizičkih stvari (komponenata ili čak čvorova) • Paket može da obuhvata druge pakete i proste elemente – obično postoji jedan paket u korenu hijerarhije paketa koji predstavlja ceo model • Koncept paketa odgovara – istoimenom konceptu u jeziku Java – konceptu prostora imena u jezicima C++ i C# Imenovanje paketa i elemenata • Jedno ime elementa mora biti jedinstveno u okviru paketa – ali se može koristiti za označavanje drugih elemenata iz drugih paketa • Jednoznačnost imena se odnosi na puna (kvalifikovana) imena – puna imena sadrže redom imena svih paketa u hijerarhiji od korenog paketa do datog elementa - lista u stablu, razdvojena simbolom :: • Primer: – klasa Panel koju sadrži potpaket awt paketa java nosi puno ime java::awt::Panel • Elementi kojima se unutar paketa može obraćati jednostavnim (nekvalifikovanim) imenima su: – sopstveni elementi paketa, – uvezeni elementi i – elementi iz obuhvatajućih (spoljašnjih) prostora imena (paketa) P2 PP C D P3 B P1 <<import>>
  • 37. UML – Dijagrami paketa 37 Projektovanje softvera Vlasništvo i pravo pristupa • Vlasništvo nad sopstvenim elementom implicira – ako se paket ukloni iz modela, uklanjaju se i sopstveni elementi paketa – svaki element modela mora imati kao vlasnika • neki paket ili • drugi element modela • Sopstveni i uvezeni elementi mogu imati pravo pristupa • Pravo pristupa određuje da li su elementi na raspolaganju izvan paketa • Pravo pristupa elementa u paketu može biti: – javno (+) ili – privatno (-) • Javni sadržaj paketa je uvek pristupačan izvan paketa preko punih imena • Paket "izvozi" svoj javni sadržaj • Za "uvoz" imena iz drugih paketa koriste se posebne relacije zavisnosti Notacija • Za paket se koristi simbol pravougaonika sa jezičkom Osoblje – simbol sugeriše folder koji sadrži: • fajlove (jednostavne elemente) i • druge foldere (potpakete) • Sadržani elementi paketa se mogu predstaviti na više načina: – samo tekstualno nabrojani unutar pravougaonika simbola paketa (tada se ime paketa piše unutar jezička) – nacrtani unutar pravougaonika simbola paketa (i tada se ime paketa piše unutar jezička) – povezani punom linijom sa simbolom + unutar kružića na strani paketa Relacije • Zavisnosti i stereotipovi zavisnosti: <<import>>, <<access>>, <<merge>> • Zavisnost: – označava da barem jedan element u zavisnom paketu zavisi od nekog elementa iz nezavisnog paketa – primer: ako je klasa X u paketu P1 izvedena iz klase Y iz paketa P2, paket P1 zavisi od paketa P2 • Javno uvoženje (<<import>> ): – omogućava u paketu u koji se uvozi (na strani repa strelice) korišćenje javnih imena iz uvezenog paketa (na strani glave strelice) bez kvalifikacije – uvezeni elementi se ponašaju kao javni u paketu u koji su uvezeni Tipovi Integer Float Tipovi Tipovi Integer Float + Integer Float Tipovi
  • 38. 38 UML – Dijagrami paketa Elektrotehnički fakultet u Beogradu • Privatno uvoženje (<<access>> ): – omogućava u paketu A u koji se uvozi (na strani repa strelice) korišćenje javnih imena iz uvezenog paketa B (na strani glave strelice) bez kvalifikacije, ali se uvezena imena paketa B ne mogu koristiti bez kvalifikacije u paketu C koji (javno) uvozi imena iz paketa A – uvezeni elementi paketa B imaju status privatnih elemenata u paketu A u koji su uveženi • Alternativna notacija za uvoz pojedinih imena iz drugog paketa je navođenje unutar paketa u koji se uvozi: – {import <kvalifikovano ime>} ili – {access <kvalifikovano ime>} • Uvoz imena sadržanog paketa se ne podrazumeva, a može se naznačiti na sledeći način: • Mešanje (<<merge>> ): – komplikovana relacija čije korišćenje nije potrebno u modeliranju – koristi se u metamodeliranju • Elementi paketa unutar paketa ili između paketa mogu biti povezani svim vrstama relacija – na primer, unutar paketa se može predstaviti klasni dijagram, koji može da sadrži i druge pakete Principi modeliranja • Pri projektovanju sistema se nastoji da se broj zavisnosti između paketa minimizira – u paket se smeštaju apstrakcije koje uzajamno imaju veći broj relacija i relativno mali broj relacija prema apstrakcijama izvan paketa • Nije dobro da postoje cirkularne zavisnosti između paketa – dobro je da se apstrakcije grupišu slojevito tako da jedan paket predstavlja jedan sloj (nivo) apstrakcija, pa se relacije zavisnosti između paketa orijentišu samo u jednom smeru • Pravilo zajedničkog zatvaranja (Common Closure Principle [R.C. Martin]): – preporučuje da u istom paketu budu klase koje treba menjati iz sličnih razloga • Pravilo zajedničkog ponovnog korišćenja (Comon Reuse Principle [R.C. Martin]) – preporučuje da u istom paketu budu klase koje će se zajedno ponovo koristiti • Tehnika za sužavanje javnog interfejsa paketa – svodi se na izvoženje samo malog broja operacija javnih klasa paketa – klase paketa se učine privatnim, a uvede se posebna klasa sa javnim operacijama koje pozivaju odgovarajuće javne operacije privatnih klasa paketa (uzorak Fasada) C A B <<import>> <<access>> P PP <<import>>
  • 39. UML – Dijagrami paketa 39 Projektovanje softvera Stereotipovi paketa • Iznad imena paketa može stajati naznaka stereotipa << … >> • Standardni stereotipovi paketa: – koriste se određene ključne reči da označe vrstu paketa – model: <<model>> • semantički potpun opis sistema • umesto ključne reči može da se koristi mali trougao – radni okvir: <<framework>> • generička arhitektura kao proširiv obrazac za apikacije u nekom domenu • tipično elementi predstavljaju osnovu za specijalizaciju • Podsistem <<subsystem>> nije stereotip paketa, već komponente – u UML-u 1 je smatran stereotipom paketa Bankomat Bankomat
  • 40. 40 UML – Dijagrami objekata Elektrotehnički fakultet u Beogradu Dijagrami objekata Uvod • Dijagrami objekata prikazuju primerke (objekte) apstrakcija (klasa) i njihove veze preko kojih objekti mogu da komuniciraju • Oni predstavljaju “snimak”pogleda na sistem u jednom trenutku – prikazuju se objekti sa trenutnim stanjem i trenutne veze • Dijagram objekata opisuje fizički i statički aspekt modela – fizički, jer je objekat fizička stvar, nalazi se u memoriji – statički, jer se prikazuju samo veze, a ne i interakcija preko njih • Elementi dijagrama objekata su: – stvari: objekti i paketi – relacije: veze • Dijagram ima strukturu grafa: objekti su čvorovi, a veze grane Namena • Dve osnovne namene: – prikaz složene strukture koju čini više objekata – prikaz ponašanja kroz vreme preko niza “snimaka” povezanih objekata • Dijagram objekata predstavlja samo primer, a ne specifikaciju (definiciju) modela • Ima dokumentacionu svrhu, može da pomogne razumevanju modela Objekti • Objekat je nešto (u memoriji) što ima stanje, ponašanje i identitet • Objekat je primerak apstrakcije (tipa, klase) • UML notacija: – pravougaonik sa odeljcima imena i vrednosti atributa – ime podvučeno – objekat može biti: konkretan, prototipski, anonimni objekat2 : KlasaKlasa -atribut1: tipAtributa1 -atribut2: tipAtributa2 objekat1 : Klasa atribut1 = vrednost1 atribut2 = vrednost2 : Klasa Veze • Veze su komunikacione putanje između objekata • Veze su primerci (instance) asocijacija – jedna asocijacija između dve klase predstavlja skup veza između objekata tih klasa • Na vezama se mogu naći – svi ukrasi asocijacije osim multiplikativnosti – multiplikativnost je uvek 1 Klasa1 Klasa2 *1 objekat1 : Klasa1 objekat2 : Klasa2 objekat3 : Klasa2 objekat4 : Klasa2
  • 41. UML – Dijagrami objekata 41 Projektovanje softvera Primer – uzorak Kompozicija • Opis hijerarhije objekata uzorka Kompozicija – Sklop je Element koji sadrži druge elemente – rekurzivna struktura sadržanja – hijerarhija objekata tipa stabla Element List Sklop 1 * koren : Sklop list1 : List list2 : List sklop1 : Sklop list3 : List list4 : List Dijagram klasa Dijagram objekata Primer - relacija “pohađa” • Opis relacije “pohađa” između studenata i kurseva – asocijacija označava veze koje se menjaju u vremenu – veze su različite u svakoj školskoj godini Student -brIndeksa: String Kurs +sifra: String student1 : Student brIndeksa = 06/321 student2 : Student brIndeksa = 05/123 kurs3 : Kurs sifra = IR4PS kurs4 : Kurs sifra = IR4XX pohadja ** Dijagram klasa Skolska 2009/10 student1 : Student brIndeksa = 06/321 student2 : Student brIndeksa = 05/123 kurs1 : Kurs sifra = IR2OO1 kurs2 : Kurs sifra = IR2XXX Skolska 2007/08 Dva objektna dijagrama
  • 42. 42 UML – Dijagrami interakcije Elektrotehnički fakultet u Beogradu Dijagrami interakcije Uvod • Interakcija je ponašanje koje obuhvata skup poruka koje se razmenjuju između skupa objekata u nekom kontekstu sa nekom namenom • UML 2.0: interakcija je specifikacija slanja stimulusa između objekata sa ciljem obavljanja nekog zadatka – definiše se u kontekstu neke saradnje (kolaboracije) • Interakcija se koristi za modeliranje dinamičkih aspekata modela • Objektni dijagram je reprezentacija statičkih aspekata komunikacije – prezentiraju se samo objekti i veze između objekata u jednom trenutku • Interakcija uvodi dinamički aspekat komunikacije – prezentira se i sekvenca poruka koje razmenjuju uloge Kontekst interakcije • Kontekst interakcije može biti: – sistem ili podsistem – operacija – klasa – slučaj korišćenja • Kontekst – sistem ili podsistem kao celina – interakcije su u saradnji objekata koji postoje u sistemu ili podsistemu – primer: sistem za e-trgovinu: sarađuju objekti na strani klijenta sa objektima na strani servera • Kontekst – operacija – interakcije su među objektima koji implementiraju operaciju – parametri operacije, lokalni i globalni objekti mogu interagovati da izvrše algoritam operacije • Kontekst – klasa – atributi klase mogu sarađivati međusobno kao i sa drugim objektima (globalnim, lokalnim i parametrima operacija) – interakcija se koristi da opiše semantiku klase • Kontekst – slučaj korišćenja – interakcija reprezentuje scenario za slučaj korišćenja Poruka • Poruka je specifikacija komunikacije između objekata koja prenosi informaciju, iza koje se očekuje da sledi aktivnost • Slanje poruke ulozi označava samo stimulus za aktivnost • Poruka može biti – asinhrona (slanje signala) – sinhrona (poziv operacije ) • Poruka se prikazuje kao strelica na dijagramu interakcije – razne vrste strelica odgovaraju raznim vrstama poruka – na dijagramu sekvence – poruke su linije između linija života – na dijagramu komunikacije – poruke su strelice pored konektora
  • 43. UML – Dijagrami interakcije 43 Projektovanje softvera Vrste dijagrama interakcije • Dijagrami interakcije mogu biti: – dijagrami sekvence – dijagrami komunikacije (u UML 1: dijagrami saradnje, odnosno kolaboracije) – dijagrami pregleda interakcije (UML 2) – vremenski dijagrami (UML 2) • Dijagrami sekvence naglašavaju vremensko uređenje interakcije • Dijagrami komunikacije naglašavaju strukturu veza između učesnika u interakciji • Ove dve vrste dijagrama vizuelizuju na različit način praktično iste informacije • Dijagrami pregleda interakcije kombinuju dijagram aktivnosti sa dijagramima sekvence – u okviru toka kontrole, blokovi (čvorovi) se opisuju interakcijama • Vremenski dijagrami prikazuju promenu stanja jednog objekta (ili uloge) u vremenu – promena stanja se dešava kao posledica prijema stimulusa i dešavanja događaja Dijagrami sekvence i komunikcije • Dijagram sekvence • Dijagram komunikacije a : b : : C d : Klijent 1 : m1() 2 : m2() 3 : m3() 4 : m4() 5 : r4 6 : r37 : r2 8 : r1 a : A b : B : C d : Klijent m1() m2() m3() m4() r5 r3 r2 r1