Professional Documents
Culture Documents
Prije UML-a
1960s - 70s
programiranje
vizualizaciju specifikaciju oblikovanje (i konstruiranje) dokumentiranje artefakata programske potpore. UML je posebice prikladan za specificiranje objektno usmjerene arhitekture programske potpore. Dijelovi UML-a pogodni su u specificiranju i drugih arhitektura. Uvoenje arhitekture programske potpore : to je struktura ili strukture sustava koji sadri elemente, njihova izvana vidljiva obiljeja i odnose izmeu njih.
Prednosti UML-a
Otvoren standard. Podupire cijeli ivotni ciklus oblikovanja programske potpore. Podupire razliite domene primjene. Temeljen je na iskustvu i potrebama zajednice oblikovatelja i korisnika programske potpore. Podravaju ga mnogi alati.
Korisnici UML a
Sistem-analitiari i krajnji korisnici: specificiraju zahtjevanu strukturu i ponaanje sustava Voditelji projekata: voenje i usmeravanje kadrova i upravljanje resursima Arhitekti: projektirauju sustav koji zadovoljava zahtjeve Razvojni inenjeri: transformiraju arhitekturu u izvrni kod Kontrolori kvaliteta: provjeravaju strukturu i ponaanje sustava Evidentiari komponenata: kreiraju i vode kataloge komponenti
6 UML 2
Kreiranje UML-a
UML 1.3
OMG Acceptance, Nov 1997
Final submission to OMG, Sep 97 public feedback First submission to OMG, Jan 97 UML partners Web - June 96
OOPSLA 95
Other methods
Booch method
OMT
OOSE
Harel
Statecharts
Gamma, et al
Frameworks and patterns,
Booch
Booch method
HP Fusion
Operation descriptions and message numbering
Rumbaugh
OMT
Embley
Singleton classes and high-level view
Jacobson
OOSE
Wirfs-Brock
Responsibilities
Shlaer - Mellor
Object lifecycles
Odell
Classification
Logiko modeliranje
Fiziko modeliranje
Definiranje zahteva Detaljno projektiranje modeli korisn. funkcija Dijagrami klasa sistema Model za projektiranje b.p. Opisi korisn. funkcija sistema DDL skriptovi Analiza i preliminarno projektiranje Baze podataka Dijagrami klasa Dijagrami komponenti Dijagrami sekvenci Dijagrami rasporeivanja Dijagrami stanja
Modeliranje npr. baze podataka se fokusira uglavnom na opisivanje baze podataka Projektiranje baze podataka obuhvaa ukupan proces od definiranje i postavljanja zahtjeva, poslovnih procesa, logikih analiza i fizikih ogranienja do razmetaja baze podataka
Npr., u projektiranju baze podataka fiziko modeliranje podataka obuhvaa ne samo modeliranje tablica i kolona, nego i prostora za tabele, particije, HW i ukupno sastavljanje ukupnog sustava baze podataka
Uvoenje UMLa omoguava se zajedniki jezik za sve ukljuene timove UML prua mogunost da se jednim jezikom modeluje poslovni sistem, aplikacije, baza podataka i arhitektura sistema
UML se koristi za modeliranje i projektiranje softverskih sustava, naroito sustava pravljenih primjenom objektno-orijentiranih tehnologija.
UML je skup grafikih notacija zasnovanih na jedinstvenom metamodelu. Notacija je skup grafikih elemenata koji se koriste u modelima, tj. grafika sintaksa jezika za modelovanje. Metamodel predstavlja dijagram koji definiran koncepte jezika za modeliranje.
Iako je notacija esto intuitivna, a ne formalna, vrlo se uspjeno koristi u praksi. Metamodel predstavlja pokuaj da se stroe definiran notacija, bez naruavanja njene korisnosti. Ni notacija ni metamodel se ne moraju strogo primenjivati.
13 UML 2
Postupci razvoja
Direktni razvoj (forward engineering)
UML dijagram
generiranje
Programski kod
UML dijagram
14
UML 2
UML
Programski jezik
15 UML 2
Izrada dijagrama
Dijagram opisuju pojedine aspekte sustava koritenjem UML-a kao pomonog sredstva. Osobine dijagrama: predstavljaju najei nain upotrebe UML-a obino se generiraju neformalno i dinamiki, tako da se rade brzo i na tabli nepotpune su (?) omoguavaju jednostavno ispitivanje vie alternativnih reenja mogu se koristiti u dokumentaciji Skice u direktnom razvoju: sadre samo nekoliko znaajnih problema koji e se javiti u kodu predstavljaju ideje i alternative predstojeeg posla vizualiziraju dijelove projekta prije programiranja
16
UML 2
17
UML 2
CASE alati
CASE alati
automatizacija
Programski kod
Programski kod
Programski kod
UML postaje programski jezik u sluaju kada se cijeli sustav modelira UML . dijagramima, a zatim se ti dijagrami primjenom CASE alata neposredno prevode u izvrni kod. Tada UML postaje izvorni kod, to odgovara programskom jeziku. Ovaj nain upotrebe UML-a jo nije doivjeo potpunu primjenu u praksi .
18 UML 2
Modeli i dijagrami
Model je pojednostavljeni opis sustava Iz odreene perspektive. Dokumentira se dijagramima. Pojedini dijagram je pogled u model. Obiljeja dijagrama: Dijagram je pogled u model predstavljen s aspekta odreenog dionika. Daje odreeno predstavljanje sustava Dijagram je djelomian opis sustava. Dijagram mora biti semantiki konzistentan s ostalim pogledima.
Dijagrami
Dijagram je grafika prezentacija skupa elemenata, najee prikazanih kao povezani grafovi vertikala (stvari) i lukova (relacije). Dijagrami se crtaju kako bi se vizualizirao sustav iz razliitih perspektiva, pa to ini dijagram nekom vrstom projekcije u sustav. Za gotovo sve sustave, osim onih vrlo jednostavnih, dijagrami predstavljaju poboljani prikaz elemenata koji ine sustav. Isti elementi mogu se pojaviti u svim dijagramima, nekim dijagramima (najei sluaj) ili se uope ne pojaviti (jako rijetko). Teoretski, dijagram moe sadravati bilo koju kombinaciju stvari i relacija u modelu. U praksi, meutim, samo se mali broj kombinacija pojavljuje, i one su konzistentne sa pet najkorisnijih pogleda na sustav koji ine arhitekturu sustava koji se oslanjaju na programsku podrku.
Modeli
Dijagrami aktivnosti
razmjetaja
Dijagrami UML-a
Dijagram Aktivnosti Klasa
klase, odlike i veze struktura i veze komponenata interakcija izmeu objekata-naglasak na vezama kako dogaaji mijenjaju objekat tijekom njegovog postojanja primjeri konfiguracije instanci hijerarhijska struktura tijeko prevoenja kombinacija dijagrama sekvence i aktivnosti rasporeivanje artefakata po vorovima interakcija izmeu objekata-naglasak na sekvenci razlaganje klasa tijekom izvravanja Interakcija korisnika i sustava interakcija izmeu objekata-naglasak na vremenskoj promeni
40
Namena
proceduralno i paralelno ponaanje
Uvedeno u verziji
UML 1 UML 1 UML 1 UML 1 UML 1 Nezvanino u UML 1 Nezvanino u UML 1 Novo u UML 2 UML 1 UML 1 Novo u UML 2 UML 1 Novo u UML 2
UML 2
Komponenata
Komunikacije Maine stanja Objekata
Paketa
Pregleda interakcije Rasporeivanja Sekvence Sloene strukture Sluajeva korienja Vremenski
Klasifikacija dijagrama
Dijagram klasa Dijagram komponenata Dijagram strukture Dijagram sloene strukture Dijagram rasporeivanja Dijagram objekata Dijagram paketa
Dijagram
Dijagram aktivnosti Dijagram sluajeva korienja Dijagram ponaanja Dijagram stanja Dijagram sekvence
Dijagram komunikacije
Dijagram interakcije Dijagram pregleda interakcije Vremenski dijagram
41 UML 2
Podjela dijagrama
U okviru UML-a postoji devet standardnih dijagrama koji su grupirani u 2 skupine:
Statiki pogledi (5 dijagrama):
Opisuje stanje sustava vrijednosti izabranih varijabli sustava nekim skupom podataka dijagram obrazaca uporabe, dijagram razreda/klasa, dijagram objekata, dijagram komponenti, dijagram razmjetaja
Dinamiki pogledi (4 dijagrama):
Uvodi se dimenzija vremena; dogaaj (u sustavu ili van njega) mijenja stanje sustava u pogledu neke njegove varijable sekvencijski dijagram, komunikacijski (kolaboracijski) dijagram, dijagram stanja (statechart), dijagram aktivnosti
Modeliranje sustava
Sluaj koritenja je niz akcija koje sustav izvrava i koje daju opipljivi rezultat odreenom sudioniku.
sudionik
sluaj koritenja
dijagrami slijeda
46
Naziv i izgled
Najei termin koji se koristi je:
Class dijagram
Hrvatski termin:
Dijagram razreda Dijagram klasa
Svrha i cilj
Class dijagram opisuje vrste objekata unutar nekog sustava i njihove meusobne statine odnose
Jednostavno reeno: class dijagram opisuje razrede (klase) i njihove meusobne veze
Takoer, class dijagrami mogu prikazati atribute i operacije razreda, njihova svojstva, ogranienja nad njima, pakete,
Dozvoljeni su komentari i dokumentacija
6/50
Atributi
jednostavni podaci sadrani u razredima i njihovim instancama.
Operacije
predstavljaju funkcije koje izvode instance razreda (objekti).
Generalizacije
grupiranje razreda u hijerarhiju nasljeivanja.
49
Razred
Razred ili klasa (engl. class) je osnovni tvorbeni element UML class dijagrama 1. Objekt
Predstavlja entitet iz stvarnog svijeta ili neki koncept Apstrakcija neega to ima dobro definirane granice i smisao u sustavu
2. Razred
Opis grupe objekata sa slinim svojstvima Svaki objekt je pojedinac (instanca) jedne klase
10/50
Dijagrami klasa
(Class diagrams)
Dijagram klasa opisuje tipove objekata u sustavu i razliite vrste statikih veza koje postoje meu njima, kao i ogranienja u nainu njihovog povezivanja. Dijagrami klasa su najee korieni dijagrami UML-a. Najbogatiji skup tehnika za modelovanje u UML-u imaju upravo dijagrami klasa. Model klase Ime klase
Primer klase
Porudbina
datumNaruivanja:Date[0..1] plaenoUnapred:Boolean[1] Broj:String[1] cena:Novac
poalji zakljui
51 UML 2
Atributi klase
Operacije klase
Svojstva klase
Svojstva klase predstavljaju strukturne karakteristike klase.
Naini predstavljanja na dijagramu
(properties)
Upotreba
Atributi
Svojstva klase Asocijacije
Veina informacija se moe prikazati ravnopravno na oba navedena naina, mada postoje i neke razlike meu njima. Izbor naina prikazivanja se ne zasniva na znaenju pojmova, ve na tome ta elimo da naglasimo na dijagramu.
52 UML 2
generalizacija naziv razreda lista atributa lista operacija pridruivanje odmah se generira novi razred generalizacija donji razred proiruje NazivRazreda pridruivanje sam sa sobom (atribut tipa razreda)
11/50
Paket
UML paket (engl. package) je skup razliitih objekata Svrha paketa je omoguiti hijerarhijsku organizaciju elemenata u UML dijagramu Moe sadravati druge pakete, objekte, razrede, komponente, UC-ove, itd. U programskom kodu interpretira se kao namespace u C++, package u Javi,
12/50
Primjer paketa
Napomena: Izvorni kod svih primjera dobiven je iz ArgoUML-a (kartica Source Code). Kod je koristan za ilustraciju dijagrama, ali potrebno ga je proiriti i provjeriti njegovu ispravnost u nekom od jezinih procesora.
Viestrukost pridruivanja
Vrh moe odreivati viestrukost veze (engl. multiplicity)
Govori nam koliko objekata moe sudjelovati u odreenom odnosu
= tono 1 pojedinac (podrazumijevana vrijednost) = bilo koji tono odreen broj, npr. 0, 1, 3, 5, 15 = izmeu n1 i n2 = izmeu n1 i vie pojedinaca, neogranieno = vie pojedinaca, neogranieno
17/50
0 ili izmeu 3 i 8
58
18/50
Oznaavanje pridruivanja
Svako pridruivanje moe se oznaiti kako bi se ekspliciralo njegovo znaenje.
60
Company
zaposlenik
61
(0..* i * je ekvivalentno)
Assistant
*
(najmanje 1)
1..**
supervisor
Manager
62
Company
BoardOfDire ctors
63
Izbjegavaj ovo
Uini ovo
64
Okvir oko ovoga dijagrama je opcija koju predvia UML 2.0. (nebitno za ova predavanja)
65
Pridrueni razredi
Ponekad se atribut koji se tie vie razreda ne moe smjestiti niti u jedan od navedenih razreda. Postoje dva ekvivalentna oznaavanja pridruenih razreda:: Ako grade ovdje Ako grade
ovdje nije mogue imati jedan po predmetu (ve samo jedan po studentu) Pridrueni razred, moe imati podrazrede nije mogue imati jedan po studentu (ve samo jedan po grupi za predmet) Sementiki jasnije Jednostavnije se ita
66
Refleksivno pridruivanje
Mogue je da se pridruivanje spaja na isti razred.
vrlo slini predmeti se ne mogu upisivati predmet moe imati druge predmete kao prerekvizite
67
Smjer pridruivanja
Pridruivanja su u osnovici bidirekcijska (u oba smjera) . Mogue je ograniiti smjer pridruivanja dodavanjem strelice na jednom kraju (unidirekcijska).
68
Java Razred Sveuilite public class Sveuilite { public Fakultet Pripadnost sveuilitu; } Razred Fakultet public class Fakultet { public Student Pripadnost fakultetu; } Razred Student public class Student { public Fakultet Pripadnost fakultetu; }
Agregacija
Vrsta pridruivanja koja pokazuje da jedan razred sadri druge, tj. da je dio drugog razreda
Razred je agregiran (sadran) u drugom razredu oblik odnosa podskup/nadskup
C++ #ifndef Fakultet_h #define Fakultet_h #include <vector> #include "Student.h" Java import java.util.Vector; public class Fakultet { public Vector myStudent; }
#endif // Fakultet_h
Kompozicija
Vrsta pridruivanja slina agregaciji, ali kod unitavanja objekta (tj. pojedinca) unitavaju se i pojedinci razreda koji su dio tog objekta
C++ #ifndef Fakultet_h #define Fakultet_h #include <vector> #include "Student.h" Java import java.util.Vector; public class Fakultet { public Vector myStudent; }
Atributi
Atributi (engl. attributes) razreda imaju sljedea svojstva:
Stupanj vidljivosti (engl. visibility) Naziv (engl. name) Vrsta ili tip (engl. type) Poetnu vrijednost (engl. initial value)
Dodatno:
Promjenjivost (engl. changeability) Modifikator (engl. modifier)
19/50
Package
Atribut je dostupan svim razredima istog paketa.
Protected
Atribut je dostupan unutar istog razreda i izvedenih razreda.
Private
Atribut je dostupan samo unutar istog razreda.
20/50
21/50
changeable
Vrijednost atributa moe se nesmetano mijenjati. Podrazumijevana (default) postavka.
frozen
Vrijednost atributa (ili asocijacije) ne smije se promijeniti tijekom ivota (engl. lifetime) pripadajueg objekta.
22/50
read-only
Vrijednost atributa ne moe se mijenjati izvan objekta kojemu pripada.
Nije isto to i frozen.
24/50
Operacije
Operacije (engl. operations) su procesi koje razred moe izvriti.
Drugim rijeima, to su vlastite metode i funkcije razreda
Operacije (1)
Operacije su aktivnosti koje klasa moe da obavi. operacija klase deklaracija procedure metod klase tijelo procedure Vrste operacija: Upiti
(operations)
ne mijenjaju stanje sustava, tj. nemaju sporedne efekte vraaju proitanu vrednost iz klase redoslijed izvravanja im se moe mijenjati, a da se ne promijeni ponaanje sustava
Podtip operacija
metoda1
Podtip operacija
metoda2
Podtip operacija
metoda3
79
Modifikatori
mijenjaju stanje sustava obino nemaju rezultat
UML 2
Operacije (2)
Sintaksa operacija na UML-u
(operations)
tip-rezultata ukazuje na tip rezultata operacije opis-svojstva ukazuje na svojstva operacije (pr. query)
80 UML 2
Nasljeivanje (1/2)
Nasljeivanje (engl. inheritance) je koncept UML-a u kojemu objekt koji se nasljeuje je proiren u objektu koji ga nasljeuje Oblik UML asocijacije ili veze
Nasljedna veza izmeu razreda Jedan razred je roditelj (nadklasa) drugome razredu (dijete ili podklasa)
Nasljeivanje (2/2)
Generalizacija omoguuje stvaranje nadklase koja objedinjuje strukturu i ponaanje zajedniko za nekoliko klasa Specijalizacija omoguuje stvaranje podklase koja predstavlja dodavanje novih elemenata
Podklasa uvijek ima vie ili jednak broj svojstava u odnosu na nadklasu Podklasa nasljeuje od nadklase atribute, relacije i operacije Podklasa moe biti proirena atributima, operacijama ili relacijama Podklasa moe imati svoju implementaciju operacija koje je naslijedila
Primjer nasljeivanja
specijalizacija
public class Automobil extends Vozilo { public int brojPutnika; public int zapreminaPrtljanika;
generalizacija
}
public class SportskiAutomobil extends Automobil { public final int brojCilindara; }
32/50
Generalizacija
Specijalizacija superrazreda u jedan ili vie podrazreda. Generalizacijski skup je oznaena grupa generalizacija s zajednikim superrazredom. Oznaka (katkad nazvana diskriminator) opisuje kriterije za specijalizaciju.
85
Nepogodna hijerarhija razreda, Trebali bi biti instance (objekti). Vidi slijedeu sliku.
86
Dijagram razreda
U dijagramu objekata nema oznaka brojnosti Slika pokazuje poboljani dijagram razreda uz pridrueni dijagram objekata (instanci) Razredi iz prethodnog dijagrama su ovdje objekti (instance) jednog razreda RecordingCategory
87
88
89
Studentov status se moe promijeniti, pa taj objekt (instanca) mora promijeniti razred (trai destrukciju kreaciju novog objekta). Jedno rjeenje: ukljui atribut attendanceStatus u razred Student te ne koristiti podrazrede (ali tako se gubi mogunost polimorfizma - specifinih metoda u razliitim podrazredima).
90
Suelje
Suelje (engl. interface) je kolekcija operacija koja specificira usluge nekog razreda
Suelje definira skup operacijskih specifikacija (tj. njihovih potpisa), ali nikada skup njihovih implementacija
Drugim rijeima, suelje je razred, ali bez atributa i sve operacije imaju samo tijelo, bez implementacije
Primjer suelja
public interface MojeSuelje { public boolean nekaMetoda(int arg1); public void josJednaMetoda(int arg1); }
Realizacija
Realizacija (engl. realisation) je veza UML-a koja oznaava ostvarenje suelja Razred realizira ili ostvaruje suelje
Veza realizacije (strelica) je usmjerena od razreda prema suelju
Realizacija je slina nasljeivanju samo to se kod realizacije nasljeuju samo operacije s parametrima, bez implementacije Realizacija u ArgoUML-u ima dva svojstva:
Supplier = Suelje Client = Razred koji ostvaruje suelje
Stereotipovi
Stereotipovi (engl. stereotypes) su najvaniji nain proirenja definicije UML-a Definiraju suelja i enumeracije kao posebne vrste razreda. Mogu se primijeniti na pridruivanja i generalizacije.
Enumeracije
Enumeracije (engl. enumerations) su oblik tipova podataka koji sadravaju ureene parove imenovanih identifikatora i njima pridruenih vrijednosti
Te vrijednosti nazivaju se enumerirani literali
Napomene i komentari
Napomene predstavljaju objanjenja na dijagramu. Mogu biti nezavisne od drugih elemenata dijagrama, ali mogu biti i spojene isprekidanom linijom sa elementima dijagrama koje objanjavaju. Kao oznaka kraja linije moe se koristiti krui. Auto
Obuhvata kamionete i dipove, ali ne i motocikle
Komentar je tekst koji se moe dodati elementu dijagrama pomou dve crtice ispred teksta (--). Napomene i komentari se mogu pojaviti na svim vrstama dijagrama.
97 2
PRIMJERI UML-A
Zadatak 1
Dijagramom klasa predstaviti model fakulteta. Svaki student upisuje studije na jednom i samo jednom odsjeku, a odsjek pripada jednom i samo jednom fakultetu. Detaljno opisati atribute klase student.
Zadatak 1 rjeenje
Zadatak 2.
Dijagramom klasa predstaviti logiku arhitekturu sistema za automatsku prijavu studenata za kurseve/predmete. Studenti biraju 4 primarna kursa/predmeta. Jedan kurs moe pohaati maksimalno 10 studenata. Minimalan broj studenata za predmet je 3. Jedan profesor moe da ponudi maksimalno 4 kursa, pri emu vie profesora mogu da ponude isti kurs.
Zadatak 2. rjeenje
I na kraju poglavlja
U izradi projekta bit e vam neophodni sljedei dijagrami: Dijagram klasa Dijagram sluajeva koritenja/Use case Dijagram aktivnosti Dijagram razmjetanja/rasporeivanja (opcionalno) Za rjeavanje nekih zadataka bit e poeljno koristiti i neke od preostalih dijagrama, recimo sekvencijalni U ovoj prezentaciji obradit e se detaljno use case i dijagrami aktivnosti