UML 2

2010 memIQ

Cuprins
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Introducere Diagrame de clase Diagrame secvenţă Diagrame de obiecte Diagrame de pachete Diagrame de instalare (deployment) Cazuri de folosire (Use Cases) Diagrame State Machine Diagrame de activitate Diagrame de comunicare Structuri composite Diagrame de componente Colaborări Diagrame sintetice de interacţiune (Interaction Overview Diagrams) Diagrame de timp Bibliografie 2 7 15 19 21 25 26 29 33 38 39 41 42 44 45 46

DV1.3 - 11112010

1

UML 2

2010 memIQ

1 Introducere
UML – Unified Modeling Language; curent - versiunea 2.3. Three amigos: Grady Booch, James Rumbaugh, Ivar Jacobson UML este limbajul standard de modelare vizuală pentru modelarea de busines, aplicaţii software şi arhitecturi de aplicaţii. Este un standard gestionat de OMG – Object Management Group (http://www.omg.org/). A fost conceput pentru a fi flexibil şi personalizabil. Este un limbaj, nu o metodologie (cum se rezolvă o problemă), poate fi folosit şi în afara OO.

Modelarea se face pentru a gestiona complexitatea, pentru a exprima structura și comportarea unui sistem. Un model este o abstracție a unui obiect real, este o simplificare a lui pentru a permite înțelegerea unui design.

Perspective (view) ale modelarii: - Vederea proiectarii – diagrame clasa, de obiecte, state machine, de interactiune
DV1.3 - 11112010

2

UML 2 Vederea interactiunilor –diagrame de activitate Vederea implementarii – diagrame package si de component Vederea instalarii (deployment) – diagrame de instalare Vederea cazurilor de folosire – diagram cazurilor de folosire

2010 memIQ

Folosire: • Pentru schiţarea unor aspecte legate de un sistem (idei) o Forward engineering o Reverse engineering • Blueprint – plan detaliat, complet; CASE (Computer Aided Software Engineering); round-trip tools • UML ca şi limbaj de programare, UML devine cod sursă; MDA – Model Driven Architecture: PIM – Platform Independent Model, PSM – Platform Specific Model. Executable UML – compilator.

UML defineşte o notaţie şi un metamodel. Notaţia este formată din simbolurile grafice folosite; metamodelul defineşte conceptele limbajului.

UML 2.2 descrie 14 tipuri oficiale de diagrame:

Profile UML – subseturi UML pentru zone particulare de aplicare: - Data distribution - Integrarea sistemelor enterprise - Analiza si design a sistemelor real-time si embedded - Testare - Etc.
DV1.3 - 11112010

3

UML 2

2010 memIQ

Observaţii: • Nu există reguli clare de cum se mapează UML pe un limbaj de programare particular. • Se folosesc şi alte feluri de diagrame; Exemple: o Diagrame ce descriu cum se leagă formele prezentate utilizatorului (UI flow diagrams):

o Tabele de decizie Conditions 1. Divisible by 4 2. Divisible by 100 3. Divisible by 400 Actions 1. Leap Year 2. Not Leap Year 3. Impossible 1 2 3 4 5 67 8 YYYYNNNN YYNNYYNN YNYNYNYN X X X XXX X X

DV1.3 - 11112010

4

faze: inception. • Design: o Diagrame de clase din perspectiva software-ului o Diagrame de secvenţă pentru diferite scenarii o Diagrame pachet pentru a arăta organizarea software o Diagrame de stare pentru clase cu cicluri de viaţă complexe DV1. time boxing. principii: o Condus de cazurile de folosire o Centrat pe arhitectura o Gestionarea riscurilor o Bazat pe component si interfete o Iterative si incremental UML se foloseşte la: • Analiza cerinţelor: o Use cases – pentru descrierea interacţiunii cu sistemul o Diagrama de clasă din perspectiva conceptuală (vocabularul domeniului) o Diagrama de activitate – pentru a arăta cum interacţionează activităţile umane şi software o Diagrame de stare – pentru concepte ce au cicluri de viaţă mai interesante. elaboration. • Iterative.3 .UML 2 2010 memIQ Procese de dezvoltare software – context pentru modelare UML. continuous integration • Predictive & adaptive planning • Procese agile (XP. Scrum. Dynamic Systems Development Method). transition. Feature Driven Development. Crystal.11112010 5 . refactoring. lightweight • Rational Unified Process. automated regression testing. construction.

11112010 6 .3 .UML 2 2010 memIQ o Diagrame de instalare (deployment) pentru a arăta distribuţia fizică a software-ului. Documentaţie Înţelegerea codului moştenit (legacy) • • DV1.

UML 2 2010 memIQ 2 Diagrame de clase Descrie tipuri de obiecte din sistem şi relaţiile statice dintre ele.11112010 7 .3 . Asocieri Reprezentare proprietăţi ca şi atribute sau asocieri: DV1. Atribute visibility name: type multiplicity = default {property-string} 2. Proprietăţi – reprezintă calităţi structurale ale clasei: 1.

getting şi setting method Operaţii (semnatura) şi metode (implementare) Generalizare. subtyping. sincronizarea informaţiei Operaţii visibility name (parameter-list) : return-type {property-string} parametrii: direction name: type = default value Operaţii: query (proprietate {query}) şi modificatori. comentarii inline -DV1. subclassing Note şi comentarii.UML 2 2010 memIQ Multiplicitate. unique. constrangeri: ordered. bag.11112010 8 . Exerciţiu: implementare într-un limbaj Asocieri bidirecţionale Exerciţiu: implementare.3 . etc.

sursa creează instanțe de țintă 3. <<use>> . <<derive>> . <<refine>> .sursa este derivată din țintă 4. <<call>> . <<create>> .OCL Responsabilităţile clasei – se arată ca şi comentarii: DV1.pentru a indica urmele pe care le lasă cerințele în clase 10. <<instantiate>> . <<permit>> .sursa apelează operații din țintă 2.11112010 9 .3 .sursa este clasa de la design a clasei de la analiză 8. <<trace>> .sursa este o instanîă a țintei 5.ținta permite sursei să acceseze elementele private ale țintei 6.sursa poate înlocui ținta 9. <<substitute>> . <<realize>> .UML 2 2010 memIQ Dependenţe: modificări într-o parte duc la modificări în cealaltă parte Nu e tranzitivă Tipuri de dependenţe: 1.sursa are nevoie de țintă pentru implementare Constrângeri – {} • Se poate folosi limbaj natural • Limbaj de programare • Object Constraint Language .implmentare de interfață 7.

3 .11112010 10 .UML 2 Operaţii şi atribute statice: 2010 memIQ Agregare şi compoziţie Proprietăţi derivate – se pot calcula din alte valori DV1.

3 .11112010 11 .UML 2 Interfeţe şi clase abstracte 2010 memIQ Notaţie mai compactă: Constrângeri Read-only şi Frozen (imutabil) Reference Objects / value objects <<value>> Asocieri calificate DV1.

clasă) (is a) Clasificări multiple 2010 memIQ Clasificări – dinamice (delegare) şi statice (moştenire) Clasa de asociere Exerciţii: relaţie Person .Skill (level). Person Company (Employment. period) DV1.3 .11112010 12 . Company .clasă) şi generalizare (clasă .UML 2 Clasificări (obiect .Contract (Role).

11112010 13 .3 .UML 2 Clasa template (parametrizată) 2010 memIQ Enumerări Clase active DV1.

nomenclator produse. recepţie. student. programare • Modelare entități implicate întrun sistem de gestiune a unei biblioteci • Modelare sistem de vânzare cărți prin internet • Sistem de gestiune a unei magazii: magazie.3 . # 2010 memIQ Teme: • Modelare sistem de planificare cursuri (orar): curs.UML 2 Vizibilitate: *.11112010 14 . profesor. livrare • <<singleton>> DV1. sala. ~. +.

Exemplu: Variantă (control distribuit): DV1.11112010 15 .UML 2 2010 memIQ 3 Diagrame secvenţă Diagramele de interacţiune descriu colaborarea obiectelor pentru a realiza o anumită comportare. Cea mai folosită diagramă de interacţiune este diagrama de secvenţă.3 .

UML 2 Crearea şi ştergerea participanţilor 2010 memIQ Cicluri.value > $10K) careful.dispatch else regular.dispatch end if DV1.3 . condiţii (frame-uri de interacţiune): procedure dispatch foreach (lineitem) if (product.11112010 16 .

se execută doar de către un thread • neg – negativ. fragmentul arată o interacţiune invalidă • ref – referinţă.3 . fragment definit în altă diagramă • sd – diagramă de secvenţă. fragmentul se execută de mai multe ori • region – regiune critică. doar cea cu condiţia adevărată se execută • opt – opţional.confirm end procedure 2010 memIQ Operatori pentru frame-uri de interacţiune: • alt – fragmente multiple alternative.11112010 17 . toate fragmentele se execută în paralel • loop – ciclu. cuprinde opţional întreaga diagramă Apeluri sincrone şi asincrone Exemplu: DV1.UML 2 end for if (needsConfirmation) messenger. se execută doar dacă condiţia este true • par – paralel.

UML 2 2010 memIQ Observaţie: Carduri CRC (Class-Responsibility-Collaboration) în analiza cerinţelor pentru a descoperi interacţiunea dintre obiecte Exerciţii: • descrierea unui UC prin diagrama de secventa • reprezentarea tratării comenzilor sincrone în WS • funcționare observator (publisher/subscriber) • proxy (virtual) DV1.3 .11112010 18 .

UML 2 2010 memIQ 4 Diagrame de obiecte Reprezintă un ansamblu de obiecte din sistem la un moment dat.11112010 19 . Se foloseşte de obicei pentru a exemplifica organizări particulare de obiecte. Exemplu: DV1.3 . Se mai numeşte diagramă instanţă.

3 . DV1.11112010 20 .UML 2 2010 memIQ Se observă că: • un obiect Point poate să fie folosit în mai multe obiecte Triangle • • un obiect Point poate să fie folosit de un obiect Triangle sau nu punctele ce definesc un triunghi nu pot fi coliniare Modificaţi diagrama de clase pentru a include aceste observaţii.

Numele sunt unice pentru elemente de acelaşi tip în acelaşi pachet. vizibilitatea unui element individual din pachet se poate defini public. Acest tip de relaţie este prin definiţie o compoziţie. privat sau protejat. ca de exemplu clase.3 . alte pachete. DV1. Prin definiţie. sunt o unealtă flexibilă pentru a organiza elementele modelului când acesta devine mare sau complex. Pachetele sunt containere de uz general.UML 2 2010 memIQ 5 Diagrame de pachete Pachetul grupează elemente în unităţi. Totuşi.NET. cel puţin o clasă cu o interfaţă publică. Pentru a le folosi trebuie să calificăm numele lor cu numele pachetului – “::” (scope resolution). Faptul că pachetele pot conţine alte pachete permite organizarea modelelor în ierarhii. interfeţe. Dacă pachetul este distrus atunci şi conţinutul lui este distrus. Pot exista elemente cu acelaşi nume în pachete diferite. spaţii de nume în C++ şi . Pachete Java. Se spune că pachetele sunt proprietarii elementelor pe care le conţin. diagrame. Orice pachet trebuie să aibă cel puţin o interfaţă publică. Pachetele pot conţine orice element din modelul logic. Denumirea elementelor din pachet trebuie să specifice şi tipul ei.11112010 21 . elementele plasate într-un pachet sunt vizibile doar în acel pachet. De obicei se grupează clase. Ele pot fi folosite pentru a grupa componente software.

UML 2 2010 memIQ Dependenţe: DV1.3 .11112010 22 .

11112010 23 .UML 2 Implementarea pachetelor 2010 memIQ Dependenţa unui pachet de alte pachete: DV1.3 .

11112010 24 . Există stereotipul subsystem sau system pentru a desemna pachetul ca având această semnificaţie.UML 2 2010 memIQ Se foloseşte de obicei în sisteme mari pentru a arăta dependenţele dintre elementele majore ale sistemului. DV1.3 .

Exemplu: UML 1. combinare cu componente DV1. arată ce (artifact) rulează pe fiecare nod hardware.11112010 25 .3 .4.UML 2 2010 memIQ 6 Diagrame de instalare (deployment) Arata structura fizică a sistemului.

0 Autor JJ Ultima modificare 10. Nu există un mode standard de a scrie conţinutul unui UC.11112010 26 .2010 Presupuneri Utilizatorul a furnizat un card valid şi parola Pre-condiţii Utilizatorul a specificat o sumă validă Descriere Iniţializare Cazul de folosire porneşte la cerere (alternative sunt detecţia unei condiţii.3 . Exemplu – scenariu principal şi extensii: Exemplu descriere caz de folosire: Nume Retragere Numerar Versiune 2.09. Dacă suma nu respectă aceste cerinţe. Ele descriu interacţiunea dintre utilizatori şi sistem. Un caz de folosire cuprinde un set de scenarii înrudite prin obiectivul lor comun. Actor – rol fata de sistem. condiţii legate de timp) Dialog Sistemul cere suma ce se doreşte a fi retrasă Utilizatorul specifică suma ATM-ul verifică că suma respectă politica predefinită relativ la limitele permise şi că suma este divizibilă cu o sumă fixată (de exemplu 10 lei).UML 2 2010 memIQ 7 Cazuri de folosire (Use Cases) Se folosesc pentru a capta cerinţele funcţionale ale sistemului. Exemplu: plata unui serviciu prin diferite metode. descriu modul de folosire a sistemului. DV1.

Un UC poate specifica: • Precondiţii – condiţiile ce trebuie să fie îndeplinite înainte de a începe UC • Rezultate garantate – ce realizează UC • Trigger – evenimentul ce declanşează UC DV1. sistemul afişează mesajul că suma este invalidă 3. utilizatorul anulează tranzacţia Terminare Post-condiţii La terminare: 1. contul din bancă este actualizat.11112010 27 .3 . tranzacţia este înregistrată 2. Dupa comanda de anulare ATM-ul se întoarce la starea iniţială Fiecare UC are un actor principal. sistemul afişează mesajul că nu se poate conecta la bancă 4. sistemul eliberează suma şi tipăreşte chitanţa 2.UML 2 2010 memIQ utilizatorul va primi un mesaj de eroare. Altfel: ATM-ul încearcă să se conecteze la bancă Dacă nu se stabileşte legătura utilizatorul primeşte un mesaj de eroare Dacă suma este disponibilă în cont utilizatorul primeşte banii şi o chitanţă Dacă suma nu este disponibilă utilizatorul primeşte un mesaj de eroare. Un UC poate include alte UC. După orice eroare ATM-ul se întoarce la starea iniţială 3. de exemplu pasul 1 din exemplul anterior. sistemul tipăreşte suma rămasă în cont pe chitanţă. UC precede proiectarea interfeţei utilizator. 1.

Cerinte nefunctionale – performanta.3 . carti) din magazine virtuale • cumpararea unei cafele de la un automat • programarea la un consult medical • weblogs (blogs) DV1.UML 2 2010 memIQ Relatii intre UC: • include • Mostenire – specializari de UC • extent – includere optionala Niveluri UC: • Sistem • Business – răspunsul pentru un client sau eveniment UC şi „feature” din XP (user stories). securitate. robustete UC sunt baza pentru testele functionale.11112010 28 . Exemplu: • cumpărarea de produse (de ex.

tranziţii: trigger-signature [guard]/activity Activităţi interne Stări de activitate (do): DV1.3 . În OOP se descrie ciclul de viaţă al obiectelor.UML 2 2010 memIQ 8 Diagrame State Machine Este o tehnică pentru descrierea comportarii sistemului.11112010 29 . Exemplu: Stări.

11112010 30 .UML 2 Activităţile do pot fi intrerupte.3 . 2010 memIQ Superstări Stări concurente Modalități de implementare a stărilor: • Switch-uri imbricate • Pattern state • Tabele de stări DV1.

UML 2 Exemplu: 1.Lock. CurrentState = PanelState. break. DV1. case PanelState.3 .SafeClosed : CurrentState = PanelState. CurrentState = PanelState. } break. } break. case PanelState.CandleRemoved : if (isDoorOpen) { RevealLock(). } break. public void HandleEvent (PanelEvent anEvent) { switch (CurrentState) { case PanelState.Wait : switch (anEvent) { case PanelEvent.11112010 31 .Wait. CurrentState = PanelState.Final. } break.Lock : switch (anEvent) { case PanelEvent. } break.KeyTurned : if (isCandleIn) { OpenSafe(). } } } 2010 memIQ 2.Open : switch (anEvent) { case PanelEvent.Open. } else { ReleaseKillerRabbit().

Dacă plătesc la timp şi au comenzi mai mari de 100 de milioane în ultimele şase luni ei trec în categoria ”preferenţiali”.UML 2 3. Dacă nu plătesc la timp sunt incluşi în categoria ”cu probleme”. Aceştia pot ieşi din această stare dacă întârzie cu cel puţin două plăţi. Ei se întorc atunci în grupa clienţilor activi.11112010 32 . când fac prima comandă devin clienţi activi. 2010 memIQ Exerciţiu: construiţi diagrama de stare pentru a modela starea clienţilor după următorul text: Toţi clienţii sunt consideraţi ca fiind clienţi potenţiali.3 . Temă: Modelarea stărilor unui ATM DV1.

process de business şi workflow.11112010 33 .3 .UML 2 2010 memIQ 9 Diagrame de activitate Este o tehnică pentru a descrie logică procedurală. Poate descrie paralelismul. Descompunerea unei acţiuni în subactivităţi DV1.

11112010 34 .UML 2 Folosire: 2010 memIQ Partiţii: DV1.3 .

11112010 35 .3 .UML 2 Semnale de timp 2010 memIQ Legături între acţiuni: DV1.

UML 2 Dacă dorim să specificăm transformări de parametrii: 2010 memIQ Regiuni de expansiune Prescurtare: DV1.3 .11112010 36 .

3 .banca). DV1.11112010 37 .UML 2 Terminare: 2010 memIQ Specificarea join-ului Temă: descrierea retragerii de bani de la un ATM prin diagramă de activitate (client – ATM .

Echivalenţa dintre diagram de comunicare şi diagrama de secvenţă.11112010 38 .UML 2 2010 memIQ 10 Diagrame de comunicare Este un fel de diagramă de interacţiune.3 . Temă: modelare funcţionare cache cu informaţii despre o persoană DV1.

Exemplu (2 variante): Descompunere: DV1.11112010 39 .3 .UML 2 2010 memIQ 11 Structuri composite Permite descrierea conţinutului unui obiect complex (run time).

UML 2 Folosire port-uri: 2010 memIQ DV1.11112010 40 .3 .

Exemplu: Exemplu: DV1.11112010 41 .UML 2 2010 memIQ 12 Diagrame de componente Componentele sunt bucăţi relativ independente upgradabile independent.3 .

UML 2 2010 memIQ 13 Colaborări Exemplu licitaţie: Comportare prin diagrama de secvenţă: .3 .11112010 42 .roluri! .participant-name /role-name : class-name DV1.

UML 2 2010 memIQ Specificarea colaborării într-o diagrama de clase: DV1.3 .11112010 43 .

11112010 44 .UML 2 2010 memIQ 14 Diagrame sintetice de interacţiune (Interaction Overview Diagrams) Combină diagrama de activitate şi de secvenţă. DV1.3 .

3 .UML 2 2010 memIQ 15 Diagrame de timp Alternativă: Temă: reprezentaţi metoda de aducere a datelor la BS în reţeaua wireless seismograph.11112010 45 . DV1.

0.3 . 2005. Russel Miles. Editura Addison Wesley Professional. ISBN 0-321-26797-4 DV1. The Unified Modeling Language User Guide. Martin Fowler. ISBN 0-32119368-7 2. ISBN 0-596-00982-8 3.11112010 46 . Third Edition. 2003. Leraning UML 2. Kim Hamilton. Editura Addison Wesley. James Rumbaugh. 2006. Ivar Jacobson.UML 2 2010 memIQ 16 Bibliografie 1. Second Edition. UML Distilled: A Brief Guide to the standard Object Modeling Language. Grady Booch. Editura O’Reilly.

Sign up to vote on this title
UsefulNot useful