SlideShare a Scribd company logo
1 of 112
Download to read offline
Ingineria programării
2. Limbajul unificat de modelare, UML
Florin Leon
Universitatea Tehnică „Gheorghe Asachi” din Iași
Facultatea de Automatică și Calculatoare
http://florinleon.byethost24.com/curs_ip.htm
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Limbajul unificat de
modelare, UML
1. Modelarea
2. Limbajul unificat de modelare
3. Clasificarea diagramelor UML 2.0
4. Diagramele UML 2.0
5. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Limbajul unificat de
modelare, UML
1. Modelarea
2. Limbajul unificat de modelare
3. Clasificarea diagramelor UML 2.0
4. Diagramele UML 2.0
5. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Modelarea
 Un model este o simplificare a unui anumit sistem, care
permite analizarea unora dintre proprietățile acestuia
 Reține caracteristicile necesare
 Folosirea de modele facilitează abordarea problemelor
complexe, comunicarea și înțelegerea
 Divide et impera
 Exemple:
 Formalismul matematic
 Reprezentările din fizică
 Orice limbaj „intern” poate fi folosit pentru modelare,
însă într-un context formal este nevoie de standardizare
4
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Limbajul unificat de
modelare, UML
1. Modelarea
2. Limbajul unificat de modelare
3. Clasificarea diagramelor UML 2.0
4. Diagramele UML 2.0
5. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
6
Scurt istoric
 Între 1989 și 1994 erau folosite mai mult de 50 de limbaje de
modelare software, fiecare cu propriile notații
 Utilizatorii doreau un limbaj standardizat, o lingua franca a
modelării
 La mijlocul anilor ’90 trei metode s-au dovedit mai eficiente:
 Booch (Grady Booch): potrivită mai ales pentru proiectare și
implementare, cu dezavantajul unor notații complicate
 OMT, Object Modeling Technique (Jim Rumbaugh): potrivită
pentru analiză și sisteme informatice cu multe date
 OOSE, Object Oriented Software Engineering (Ivar Jacobson):
această metodă a propus așa-numitele cazuri de utilizare, care
ajută la înțelegerea comportamentului sistemului în ansamblu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
7
Precursorii UML
 Booch
 OMT
 OOSE
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8
Scurt istoric
 1994: Jim Rumbaugh, creatorul OMT, a părăsit General
Electric, alăturându-se lui Grady Booch la Rational Corp.
 1995: Ivar Jacobson, creatorul OOSE, a venit la Rational
iar ideile lui, în special conceptul de cazuri de utilizare,
au fost adăugate „Metodei unificate”
 Metoda rezultată a fost numită „Limbajul unificat de
modelare”, UML
 1996: Formarea de către Rational a consorțiului
„Partenerilor UML” din care făceau parte giganți precum
Hewlett-Packard, Microsoft și Oracle
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
9
UML
 Limbaj pentru specificarea, vizualizarea,
construirea și documentarea elementelor
sistemelor software
 Un limbaj grafic care ne permite să reproducem
„pe hârtie” ceea ce este produs în procesul de
dezvoltare a unui sistem software
 Poate fi folosit și pentru alte sisteme, cum ar fi
procesele comerciale (engl. “business processes”)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
10
Versiuni și standardizare
 Ianuarie 1997: a fost propus spre standardizare UML 1.0
în cadrul OMG (Object Management Group)
 Noiembrie 1997: a fost adoptată versiunea UML 1.1 ca
standard de către OMG
 Martie 2003: a fost lansată versiunea UML 1.5
 Octombrie 2004: versiunea UML 2.0
 Iunie 2015: versiunea UML 2.5
 UML este standardul ISO/IEC 19501:2005
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
11
UML
 Ca orice limbaj, UML are:
 Notații (alfabetul de simboluri)
 Sintaxă și gramatică (reguli pentru combinarea
simbolurilor)
 UML este un instrument de comunicare
 UML nu este o metodologie de dezvoltare
 Dar este determinat de cele mai bune practici în
domeniu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Limbajul unificat de
modelare, UML
1. Modelarea
2. Limbajul unificat de modelare
3. Clasificarea diagramelor UML 2.0
4. Diagramele UML 2.0
5. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
13
Clase de diagrame
 Diagrame de structură
 Prezintă elementele unei specificații independent de timp
 Includ: diagramele de clase, componente, desfășurare
(deployment), obiecte, pachete și structuri compuse
 Diagrame de comportament
 Prezintă trăsăturile comportamentale ale sistemului
 Includ: diagramele de activități, mașini de stare și cazuri de
utilizare, precum și cele 4 diagrame de interacțiune
 Diagrame de interacțiune
 Scot în evidență interacțiunile dintre obiecte
 Includ: diagramele de secvențe, comunicare, interacțiuni generale
(interaction overview) și cronometrare (timing)
 Legendă: utilitate practică mare, medie, mică
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
14
Diagramele UML 2.0
 Diagrame de structură:
ce conține sistemul
 Clase
 Componente
 Desfășurare
 Obiecte
 Pachete
 Structuri compuse
 Diagrame de comportament:
ce se întâmplă în sistem
 Activități
 Mașini de stare
 Cazuri de utilizare
 Diagrame de interacțiune:
fluxurile de control și date
dintre componentele sistemului
 Secvențe
 Comunicare
 Interacțiuni generale
 CronometrareDiagrame introduse în UML 2.0
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
15
Diagramele UML 2.0
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
OCL și XMI
 Object Constraint Language (OCL)
 Pe lângă diagrame, UML mai dispune de un limbaj
suplimentar pentru descrierea unor reguli care se
aplică elementelor din model, de exemplu constrângeri
 XML Metadata Interchange (XMI)
 Standard pentru transferul de metadate între diferite
instrumente de modelare UML
 Mai simplu, un limbaj în care se pot salva modele UML,
independent de instrumentele de modelare folosite
16
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Limbajul unificat de
modelare, UML
1. Modelarea
2. Limbajul unificat de Modelare
3. Clasificarea diagramelor UML 2.0
4. Diagramele UML 2.0
5. Concluzii
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
18
1. Diagrama cazurilor de utilizare
 Descrie interacțiunile dintre utilizatori și
sistem
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
19
Actori și cazuri multiple
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
20
Granularitatea
Un caz de utilizare trebuie să satisfacă un scop pentru actor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
21
Avantaje
 Suma cazurilor de utilizare este întregul sistem
 Permit comunicarea cu persoane fără cunoștințe
tehnice IT
 Partiționează funcționalitatea, ghidează
dezvoltarea iterativă
 Ajută planificarea și testarea
 Ajută la crearea manualelor de utilizare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
22
Actori primari și secundari
beneficiază ia parte
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
23
Identificarea actorilor
Exemplu: timpul poate fi un actor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
24
Generalizarea actorilor
„note” (comentarii)
Administratorul poate face
tot ce face și utilizatorul,
dar și ceva în plus
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
25
Relațiile dintre
cazurile de utilizare
 Reutilizare: include
Doar Check Identity
este conectat cu
Author Credentials
Database
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
26
Relațiile dintre
cazurile de utilizare
 Generalizarea cazurilor de utilizare:
reutilizare cu modificări
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
27
2. Diagrama de clase
 Clasa
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
28
Vizibilitatea trăsăturilor
 Public
 Protejat
 Pachet
 Privat
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
29
Vizibilitatea în C# și Java
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
30
Reprezentarea atributelor
 Inline (în interiorul clasei)
 Prin asociere
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
31
Vizibilitatea atributelor
 De obicei private sau protejate
 Nu se recomandă vizibilitatea publică, decât:
 Pentru constante
 Pentru atribute read-only
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
32
Operațiile
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
33
Parametrii și tipurile de return
Constructor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
 Trăsături (features) = atribute și operații
 Trăsăturile statice se subliniază
34
Trăsături statice
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
35
Relații între clase
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
36
Dependența
 O clasă folosește pentru scurt timp o altă clasă
 Trimiterea unui mesaj, de exemplu apelul unei metode din
clasa Math
 Instanțierea unei clase într-o metodă
 Primirea unui obiect ca parametru într-o metodă
 Crearea și returnarea unui obiect dintr-o metodă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
37
Asocierea
 O clasă folosește un timp îndelungat o altă clasă
 De obicei, o clasă are un câmp instanțiat din cealaltă
clasă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
38
Direcția de citire
 Direcția de citire este de obicei de la stânga la
dreapta și de sus în jos
 Direcția de citire se poate indica explicit
 Săgeata care indică direcția de citire nu trebuie pusă
pe linia de asociere!
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
39
Validarea asocierilor
 Fiecare obiect | este predat ca | 0 sau mai multe | cursuri
 Fiecare curs | este pentru | un singur | obiect
Course = obiect
Course event = curs
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
40
Asociere complexă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
41
Asociere unidirecțională
 Numai o clasă „știe” de cealaltă
 Manager va avea un câmp de tip Adresă și nu invers
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
42
Cardinalitatea (multiplicitatea)
asocierii
Cardinalitatea * conține mai puține informații
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
43
Asocieri multiple
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
44
Asocieri multiple
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
45
Agregarea
 O clasă are dar partajează obiecte din
cealaltă clasă
Este o relație de tip ARE-UN / ARE-O
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Agregarea
46
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
47
Compunerea
 Atributele compun clasa
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Compunerea
48
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
49
Implementarea
 Din punct de vedere al implementării,
asocierea, agregarea și compunerea
presupun introducerea unui atribut (câmp)
 Dacă nu sunt evidente sau foarte importante
distincțiile privind agregarea sau
compunerea, este mai simplu să se
folosească numai relațiile de asociere
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
50
Generalizarea (moștenirea)
Este o relație de tip ESTE-UN / ESTE-O
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
51
Regula 100%
 Toate definițiile clasei de bază trebuie să se
aplice tuturor claselor derivate
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
52
Corectitudinea generalizărilor
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
53
Recomandare
 Compunerea ar trebui preferată moștenirii
 Moștenirea este cea mai puternică formă de
cuplare
 În general, compunerea este mai ușor de
gestionat
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
54
Clase și operații abstracte
virtuală
<<virtual>>
abstractă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
55
Interfețe
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
56
Template-uri
De exemplu: List<int> – tipul este specificat în implementare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
57
Constrângeri (în OCL)
 Tipuri de constrângeri:
 Invariante
 Pre-condiții
 Post-condiții
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
58
Recomandări
 Nu introduceți prea multe informații în diagramă
 Ignorați atributele și operațiile necritice
 Arătați într-o diagramă numai clasele relevante
pentru un caz de utilizare
 Nu includeți clasele sistem (string, Dictionary
etc.)
 Nu includeți prea devreme informații despre
implementare (navigabilitate, vizibilitate)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
59
3. Diagrama de obiecte
Arată cum se comportă
obiectele într-un anumit
scenariu, cum interacționează
Asocierile corespund
asocierilor dintre clase
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
60
Template-uri
De exemplu: List<ClasaDeBaza> – tipul derivat din ClasaDeBaza este specificat
în momentul execuției
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
61
4. Diagrama de activități
“merge” = îmbinare
Aceste diagrame descriu logica
procedurală, procesele
Sunt asemănătoare schemelor logice,
dar suportă și paralelismul
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Activități și acțiuni
 Activitatea este procesul modelat
 O acțiune este un pas din activitate
62
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Decizii și îmbinări
 Condițiile trebuie să fie complete și mutual exclusive
 Pasul următor trebuie să fie unic determinat
63
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
64
Teste incomplete
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
65
Procese paralele
“fork” = ramificație
“join” = reunire
Se folosesc pentru procese sau fire de execuție multiple
La reunire, se așteaptă terminarea tuturor acțiunilor incidente
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
66
Evenimente de timp
Perioadă de așteptare
Eveniment de timp recurent
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
67
Apelarea altor activități
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
68
Semnale
Așteaptă tot timpul
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
69
Întreruperi și terminări de flux
Un flux se poate termina fără a termina
întreaga activitate
Dacă se mai poate îmbunătăți soluția în
2 secunde, este foarte bine, dacă nu, se
returnează rezultatul existent
După 2 secunde, se returnează orice
rezultat disponibil, îmbunătățit sau nu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
70
Partiții (culoare)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
71
Adnotări
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
72
Conectori
Un conector este reprezentat de obicei de o singură literă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
73
Alte exemple
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
5. Diagrama de secvențe
 Arată modul cum lucrează sistemul, ceea ce
poate fi mai greu de înțeles doar din descrierea
statică a structurii
 O diagramă corespunde unui singur scenariu
 Include în principal obiecte și mesaje
 Un mesaj este în general un apel de metodă
 Indică ordinea evenimentelor
 Timpul reprezintă aici ordinea, nu durata
 Pentru durată, se folosește diagrama de cronometrare
74
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
75
Participanți
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
76
Mesaje imbricate
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
77
Tipuri de mesaje
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
78
Diagramă complexă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
79
Fragmente
 Controlul secvențial natural poate fi extins cu
ajutorul fragmentelor de interacțiune, introduse
în UML 2.0
 Fragmentele sunt asemănătoare structurilor de
control dintr-un limbaj de programare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
80
Fragmente opționale
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
81
Fragmente alternative
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Bucle
82
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Paralelism
83
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
84
Referințe
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
85
6. Diagrame de comunicare
Mesaje imbricate (1 → 1.1, 1.2)
Mesaje concurente (2a, 2b, 2c)
Similare diagramelor de secvențe,
dar se concentrează pe legăturile
dintre participanți
Diagramele de secvențe și cele de
comunicare pot fi transformate
automat unele în altele
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
86
Alte tipuri de mesaje
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
87
Diagramă complexă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
7. Diagrama mașinilor de stare
 Obiectele pot reacționa diferit în funcție de stare
 Diagramele mașinilor de stare se realizează pentru un
singur obiect
 Pot descrie comportamentul unui obiect de-a lungul mai multor
cazuri de utilizare
 Nu sunt potrivite pentru a descrie colaborarea mai multor obiecte
 Sunt folosite intens în anumite tipuri de aplicații software
și hardware, precum:
 Sisteme critice de timp real
 Bancomate
 Jocuri (de exemplu “first person shooter”)
88
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
89
Stări, tranziții, declanșatoare, condiții
lift/lower switch = declanșatoare (triggers)
Stări active – ce face (de exemplu prepară cafeaua)
Stări pasive – cum este (de exemplu becul e stins sau aprins)
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
90
Diagramă complexă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
8. Diagrama de componente
 Pentru proiectele mai complexe, este greu de
trecut de la analiză direct la definirea claselor
 O componentă este o parte încapsulată,
reutilizabilă și înlocuibilă a sistemului
 Componentele comunică prin interfețe, pentru a
asigura cuplarea slabă
 Componentele pot fi compuse din câteva clase
sau pot reprezenta subsisteme de mari
dimensiuni
91
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
92
Notații pentru componente
UML 1.x
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
93
Notații pentru interfețe
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
94
Clasele componentelor
Notație compactă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
9. Diagrama de pachete
 Sistemele software pot avea sute de clase
 Pachetele modelează grupuri de clase
 Majoritatea limbajelor de programare importante au un corespondent
al pachetelor
 C#: namespace
 Java: package
 Deseori, diagramele sunt folosite pentru a indica dependențele dintre
pachete
 Pachetele pot cuprinde orice element UML, nu doar clase
 De exemplu: cazuri de utilizare
 Componentele corespund nivelului conceptual (mai generale)
 Pachetele corespund nivelului logic, în corespondență cu faza de
implementare
95
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
96
Pachete
Organizarea logică
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
97
Clase în pachete
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
98
Dependențe
Java: import
C#: using
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
10. Diagrama de desfășurare
 Corespunde nivelului fizic: modelează elemente
fizice ale sistemului
 Fișiere executabile
 Entități hardware
 Arată cum sunt atribuite entitățile software către
cele hardware și cum comunică acestea
 Poate include hardware, firmware, sisteme de
operare, medii de execuție, drivere etc.
 Dar trebuie să cuprindă doar detaliile importante
pentru audiență
99
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
100
Dispozitive și artefacte
hardware software
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
101
Dispozitive și artefacte
Organizarea fizică
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
102
Instanțe de noduri
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
103
Comunicația între noduri
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
104
Exemplu
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
105
11. Diagrama
structurilor compuse
Arată cum lucrează
obiectele în interiorul
unei clase sau cum
îndeplinesc un scop
Un port reprezintă un mod
distinct de utilizare a unei
clase, de obicei de către tipuri
diferite de clienți
Porturile pot grupa
interfețe înrudite
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
106
12. Diagrama de cronometrare
Folosită mai ales pentru sisteme de timp
real sau încorporate
Arată stările unui obiect și momentele de
timp când se află obiectul în aceste stări
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
107
Notații alternative
Recomandată pentru puține stări
Recomandată pentru multe stări
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
108
13. Diagrama
interacțiunilor generale
Arată cum interacționează
mai multe entități pentru a
realiza un caz de utilizare
(sau un scop)
Poate fi văzută ca o
diagramă de activități,
dar fiecare acțiune este
o interacțiune completă
descrisă de o diagramă
distinctă
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
109
Diagramele UML și ciclul de
dezvoltare software
 Modelul vizualizării 4+1 Perspectiva logică
 Clase, mașini de stare,
secvențe ș.a.
 Perspectiva de proces
 Activități
 Perspectiva de
dezvoltare
 Pachete, componente
 Perspectiva fizică
 Desfășurare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
110
Diagramele UML și ciclul de
dezvoltare software
 Faza modelării cazurilor de utilizare
 Faza modelării domeniului
 Diagrame statice de structură, diagrame de secvențe
 Faza modelării proiectării
 Diagrame de clase, de mașini de stare, de activități
 Faza modelării implementării
 Diagrame de componente, de desfășurare
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
111
Concluzii
 UML este un limbaj pentru specificarea,
vizualizarea, construirea și documentarea
elementelor sistemelor software
 Este un standard de facto pentru modelarea
software
 UML 2.0 are 13 diagrame, clasificate în:
 Diagrame de structură
 Diagrame de comportament
 Diagrame de interacțiune
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
112
Referințe
 Majoritatea diagramelor incluse în acest curs
au fost preluate din următoarele surse:
 Hamilton, K., Miles, R. (2006). Learning UML 2.0,
O'Reilly
 Ariadne Training. UML Applied, 2nd edition,
http://ariadnetraining.com/software-courses/images/stories/YesNo/
ariadne/file/UML_Applied_Second_Edition.pdf
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

More Related Content

Similar to Limbaje de modelare. UML

Sabloane de proiectare creationale (I)
Sabloane de proiectare creationale (I)Sabloane de proiectare creationale (I)
Sabloane de proiectare creationale (I)Florin Leon
 
Sabloane de proiectare structurale (II)
Sabloane de proiectare structurale (II)Sabloane de proiectare structurale (II)
Sabloane de proiectare structurale (II)Florin Leon
 
Aspecte conexe procesului de dezvoltare
Aspecte conexe procesului de dezvoltareAspecte conexe procesului de dezvoltare
Aspecte conexe procesului de dezvoltareFlorin Leon
 
Faza de testare (II)
Faza de testare (II)Faza de testare (II)
Faza de testare (II)Florin Leon
 
Introducere in domeniul agentilor
Introducere in domeniul agentilorIntroducere in domeniul agentilor
Introducere in domeniul agentilorFlorin Leon
 
Programator Fisa Postului
Programator Fisa PostuluiProgramator Fisa Postului
Programator Fisa Postuluionaca stela
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentationlogan123
 
Excel in mediul economic
Excel in mediul economicExcel in mediul economic
Excel in mediul economicAlice James
 
Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...
Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...
Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...expertadrian
 
Simatic step 7 v5 prog
Simatic step 7 v5 progSimatic step 7 v5 prog
Simatic step 7 v5 progMARIUS scutaru
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispicostagiipebune
 

Similar to Limbaje de modelare. UML (15)

Sabloane de proiectare creationale (I)
Sabloane de proiectare creationale (I)Sabloane de proiectare creationale (I)
Sabloane de proiectare creationale (I)
 
Sabloane de proiectare structurale (II)
Sabloane de proiectare structurale (II)Sabloane de proiectare structurale (II)
Sabloane de proiectare structurale (II)
 
Aspecte conexe procesului de dezvoltare
Aspecte conexe procesului de dezvoltareAspecte conexe procesului de dezvoltare
Aspecte conexe procesului de dezvoltare
 
Faza de testare (II)
Faza de testare (II)Faza de testare (II)
Faza de testare (II)
 
Curs1-POO-Loga
Curs1-POO-LogaCurs1-POO-Loga
Curs1-POO-Loga
 
Proiect flexform
Proiect flexformProiect flexform
Proiect flexform
 
Introducere in domeniul agentilor
Introducere in domeniul agentilorIntroducere in domeniul agentilor
Introducere in domeniul agentilor
 
Programator Fisa Postului
Programator Fisa PostuluiProgramator Fisa Postului
Programator Fisa Postului
 
Lupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis PresentationLupu Vitaliy Bachelor thesis Presentation
Lupu Vitaliy Bachelor thesis Presentation
 
Excel in mediul economic
Excel in mediul economicExcel in mediul economic
Excel in mediul economic
 
Extreme programming(xp)
Extreme programming(xp)Extreme programming(xp)
Extreme programming(xp)
 
Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...
Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...
Studiu referitor la evaluarea instrumentelor de realizare de raţionamente ont...
 
Simatic step 7 v5 prog
Simatic step 7 v5 progSimatic step 7 v5 prog
Simatic step 7 v5 prog
 
Simatic step 7 v5
Simatic step 7 v5Simatic step 7 v5
Simatic step 7 v5
 
Graduation projects in Crispico
Graduation projects in CrispicoGraduation projects in Crispico
Graduation projects in Crispico
 

More from Florin Leon

Modele bazate pe energie
Modele bazate pe energieModele bazate pe energie
Modele bazate pe energieFlorin Leon
 
Retele neuronale profunde
Retele neuronale profundeRetele neuronale profunde
Retele neuronale profundeFlorin Leon
 
Regresia liniara, logistica, softmax
Regresia liniara, logistica, softmaxRegresia liniara, logistica, softmax
Regresia liniara, logistica, softmaxFlorin Leon
 
Clasificarea bazata pe ansambluri. Selectia trasaturilor
Clasificarea bazata pe ansambluri. Selectia trasaturilorClasificarea bazata pe ansambluri. Selectia trasaturilor
Clasificarea bazata pe ansambluri. Selectia trasaturilorFlorin Leon
 
Algoritmi de clasificare
Algoritmi de clasificareAlgoritmi de clasificare
Algoritmi de clasificareFlorin Leon
 
Algoritmi de grupare (clustering)
Algoritmi de grupare (clustering)Algoritmi de grupare (clustering)
Algoritmi de grupare (clustering)Florin Leon
 
Teoria jocurilor (II)
Teoria jocurilor (II)Teoria jocurilor (II)
Teoria jocurilor (II)Florin Leon
 
Teoria jocurilor (I)
Teoria jocurilor (I)Teoria jocurilor (I)
Teoria jocurilor (I)Florin Leon
 
Arhitecturi de agenti (II)
Arhitecturi de agenti (II)Arhitecturi de agenti (II)
Arhitecturi de agenti (II)Florin Leon
 
Arhitecturi de agenti (I)
Arhitecturi de agenti (I)Arhitecturi de agenti (I)
Arhitecturi de agenti (I)Florin Leon
 
Faza de testare (I)
Faza de testare (I)Faza de testare (I)
Faza de testare (I)Florin Leon
 
Sabloane de proiectare structurale (I)
Sabloane de proiectare structurale (I)Sabloane de proiectare structurale (I)
Sabloane de proiectare structurale (I)Florin Leon
 
Sabloane de proiectare creationale (II)
Sabloane de proiectare creationale (II)Sabloane de proiectare creationale (II)
Sabloane de proiectare creationale (II)Florin Leon
 
Complexitate si emergenta
Complexitate si emergentaComplexitate si emergenta
Complexitate si emergentaFlorin Leon
 
Invatarea cu intarire
Invatarea cu intarireInvatarea cu intarire
Invatarea cu intarireFlorin Leon
 
Retele neuronale (II)
Retele neuronale (II)Retele neuronale (II)
Retele neuronale (II)Florin Leon
 
Retele neuronale (I)
Retele neuronale (I)Retele neuronale (I)
Retele neuronale (I)Florin Leon
 
Rationament probabilistic
Rationament probabilisticRationament probabilistic
Rationament probabilisticFlorin Leon
 
Logica vaga (fuzzy)
Logica vaga (fuzzy)Logica vaga (fuzzy)
Logica vaga (fuzzy)Florin Leon
 

More from Florin Leon (19)

Modele bazate pe energie
Modele bazate pe energieModele bazate pe energie
Modele bazate pe energie
 
Retele neuronale profunde
Retele neuronale profundeRetele neuronale profunde
Retele neuronale profunde
 
Regresia liniara, logistica, softmax
Regresia liniara, logistica, softmaxRegresia liniara, logistica, softmax
Regresia liniara, logistica, softmax
 
Clasificarea bazata pe ansambluri. Selectia trasaturilor
Clasificarea bazata pe ansambluri. Selectia trasaturilorClasificarea bazata pe ansambluri. Selectia trasaturilor
Clasificarea bazata pe ansambluri. Selectia trasaturilor
 
Algoritmi de clasificare
Algoritmi de clasificareAlgoritmi de clasificare
Algoritmi de clasificare
 
Algoritmi de grupare (clustering)
Algoritmi de grupare (clustering)Algoritmi de grupare (clustering)
Algoritmi de grupare (clustering)
 
Teoria jocurilor (II)
Teoria jocurilor (II)Teoria jocurilor (II)
Teoria jocurilor (II)
 
Teoria jocurilor (I)
Teoria jocurilor (I)Teoria jocurilor (I)
Teoria jocurilor (I)
 
Arhitecturi de agenti (II)
Arhitecturi de agenti (II)Arhitecturi de agenti (II)
Arhitecturi de agenti (II)
 
Arhitecturi de agenti (I)
Arhitecturi de agenti (I)Arhitecturi de agenti (I)
Arhitecturi de agenti (I)
 
Faza de testare (I)
Faza de testare (I)Faza de testare (I)
Faza de testare (I)
 
Sabloane de proiectare structurale (I)
Sabloane de proiectare structurale (I)Sabloane de proiectare structurale (I)
Sabloane de proiectare structurale (I)
 
Sabloane de proiectare creationale (II)
Sabloane de proiectare creationale (II)Sabloane de proiectare creationale (II)
Sabloane de proiectare creationale (II)
 
Complexitate si emergenta
Complexitate si emergentaComplexitate si emergenta
Complexitate si emergenta
 
Invatarea cu intarire
Invatarea cu intarireInvatarea cu intarire
Invatarea cu intarire
 
Retele neuronale (II)
Retele neuronale (II)Retele neuronale (II)
Retele neuronale (II)
 
Retele neuronale (I)
Retele neuronale (I)Retele neuronale (I)
Retele neuronale (I)
 
Rationament probabilistic
Rationament probabilisticRationament probabilistic
Rationament probabilistic
 
Logica vaga (fuzzy)
Logica vaga (fuzzy)Logica vaga (fuzzy)
Logica vaga (fuzzy)
 

Limbaje de modelare. UML

  • 1. Ingineria programării 2. Limbajul unificat de modelare, UML Florin Leon Universitatea Tehnică „Gheorghe Asachi” din Iași Facultatea de Automatică și Calculatoare http://florinleon.byethost24.com/curs_ip.htm Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 2. Limbajul unificat de modelare, UML 1. Modelarea 2. Limbajul unificat de modelare 3. Clasificarea diagramelor UML 2.0 4. Diagramele UML 2.0 5. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 3. Limbajul unificat de modelare, UML 1. Modelarea 2. Limbajul unificat de modelare 3. Clasificarea diagramelor UML 2.0 4. Diagramele UML 2.0 5. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 4. Modelarea  Un model este o simplificare a unui anumit sistem, care permite analizarea unora dintre proprietățile acestuia  Reține caracteristicile necesare  Folosirea de modele facilitează abordarea problemelor complexe, comunicarea și înțelegerea  Divide et impera  Exemple:  Formalismul matematic  Reprezentările din fizică  Orice limbaj „intern” poate fi folosit pentru modelare, însă într-un context formal este nevoie de standardizare 4 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 5. Limbajul unificat de modelare, UML 1. Modelarea 2. Limbajul unificat de modelare 3. Clasificarea diagramelor UML 2.0 4. Diagramele UML 2.0 5. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 6. 6 Scurt istoric  Între 1989 și 1994 erau folosite mai mult de 50 de limbaje de modelare software, fiecare cu propriile notații  Utilizatorii doreau un limbaj standardizat, o lingua franca a modelării  La mijlocul anilor ’90 trei metode s-au dovedit mai eficiente:  Booch (Grady Booch): potrivită mai ales pentru proiectare și implementare, cu dezavantajul unor notații complicate  OMT, Object Modeling Technique (Jim Rumbaugh): potrivită pentru analiză și sisteme informatice cu multe date  OOSE, Object Oriented Software Engineering (Ivar Jacobson): această metodă a propus așa-numitele cazuri de utilizare, care ajută la înțelegerea comportamentului sistemului în ansamblu Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 7. 7 Precursorii UML  Booch  OMT  OOSE Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 8. 8 Scurt istoric  1994: Jim Rumbaugh, creatorul OMT, a părăsit General Electric, alăturându-se lui Grady Booch la Rational Corp.  1995: Ivar Jacobson, creatorul OOSE, a venit la Rational iar ideile lui, în special conceptul de cazuri de utilizare, au fost adăugate „Metodei unificate”  Metoda rezultată a fost numită „Limbajul unificat de modelare”, UML  1996: Formarea de către Rational a consorțiului „Partenerilor UML” din care făceau parte giganți precum Hewlett-Packard, Microsoft și Oracle Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 9. 9 UML  Limbaj pentru specificarea, vizualizarea, construirea și documentarea elementelor sistemelor software  Un limbaj grafic care ne permite să reproducem „pe hârtie” ceea ce este produs în procesul de dezvoltare a unui sistem software  Poate fi folosit și pentru alte sisteme, cum ar fi procesele comerciale (engl. “business processes”) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 10. 10 Versiuni și standardizare  Ianuarie 1997: a fost propus spre standardizare UML 1.0 în cadrul OMG (Object Management Group)  Noiembrie 1997: a fost adoptată versiunea UML 1.1 ca standard de către OMG  Martie 2003: a fost lansată versiunea UML 1.5  Octombrie 2004: versiunea UML 2.0  Iunie 2015: versiunea UML 2.5  UML este standardul ISO/IEC 19501:2005 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 11. 11 UML  Ca orice limbaj, UML are:  Notații (alfabetul de simboluri)  Sintaxă și gramatică (reguli pentru combinarea simbolurilor)  UML este un instrument de comunicare  UML nu este o metodologie de dezvoltare  Dar este determinat de cele mai bune practici în domeniu Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 12. Limbajul unificat de modelare, UML 1. Modelarea 2. Limbajul unificat de modelare 3. Clasificarea diagramelor UML 2.0 4. Diagramele UML 2.0 5. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 13. 13 Clase de diagrame  Diagrame de structură  Prezintă elementele unei specificații independent de timp  Includ: diagramele de clase, componente, desfășurare (deployment), obiecte, pachete și structuri compuse  Diagrame de comportament  Prezintă trăsăturile comportamentale ale sistemului  Includ: diagramele de activități, mașini de stare și cazuri de utilizare, precum și cele 4 diagrame de interacțiune  Diagrame de interacțiune  Scot în evidență interacțiunile dintre obiecte  Includ: diagramele de secvențe, comunicare, interacțiuni generale (interaction overview) și cronometrare (timing)  Legendă: utilitate practică mare, medie, mică Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 14. 14 Diagramele UML 2.0  Diagrame de structură: ce conține sistemul  Clase  Componente  Desfășurare  Obiecte  Pachete  Structuri compuse  Diagrame de comportament: ce se întâmplă în sistem  Activități  Mașini de stare  Cazuri de utilizare  Diagrame de interacțiune: fluxurile de control și date dintre componentele sistemului  Secvențe  Comunicare  Interacțiuni generale  CronometrareDiagrame introduse în UML 2.0 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 15. 15 Diagramele UML 2.0 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 16. OCL și XMI  Object Constraint Language (OCL)  Pe lângă diagrame, UML mai dispune de un limbaj suplimentar pentru descrierea unor reguli care se aplică elementelor din model, de exemplu constrângeri  XML Metadata Interchange (XMI)  Standard pentru transferul de metadate între diferite instrumente de modelare UML  Mai simplu, un limbaj în care se pot salva modele UML, independent de instrumentele de modelare folosite 16 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 17. Limbajul unificat de modelare, UML 1. Modelarea 2. Limbajul unificat de Modelare 3. Clasificarea diagramelor UML 2.0 4. Diagramele UML 2.0 5. Concluzii Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 18. 18 1. Diagrama cazurilor de utilizare  Descrie interacțiunile dintre utilizatori și sistem Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 19. 19 Actori și cazuri multiple Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 20. 20 Granularitatea Un caz de utilizare trebuie să satisfacă un scop pentru actor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 21. 21 Avantaje  Suma cazurilor de utilizare este întregul sistem  Permit comunicarea cu persoane fără cunoștințe tehnice IT  Partiționează funcționalitatea, ghidează dezvoltarea iterativă  Ajută planificarea și testarea  Ajută la crearea manualelor de utilizare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 22. 22 Actori primari și secundari beneficiază ia parte Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 23. 23 Identificarea actorilor Exemplu: timpul poate fi un actor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 24. 24 Generalizarea actorilor „note” (comentarii) Administratorul poate face tot ce face și utilizatorul, dar și ceva în plus Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 25. 25 Relațiile dintre cazurile de utilizare  Reutilizare: include Doar Check Identity este conectat cu Author Credentials Database Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 26. 26 Relațiile dintre cazurile de utilizare  Generalizarea cazurilor de utilizare: reutilizare cu modificări Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 27. 27 2. Diagrama de clase  Clasa Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 28. 28 Vizibilitatea trăsăturilor  Public  Protejat  Pachet  Privat Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 29. 29 Vizibilitatea în C# și Java Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 30. 30 Reprezentarea atributelor  Inline (în interiorul clasei)  Prin asociere Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 31. 31 Vizibilitatea atributelor  De obicei private sau protejate  Nu se recomandă vizibilitatea publică, decât:  Pentru constante  Pentru atribute read-only Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 32. 32 Operațiile Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 33. 33 Parametrii și tipurile de return Constructor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 34.  Trăsături (features) = atribute și operații  Trăsăturile statice se subliniază 34 Trăsături statice Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 35. 35 Relații între clase Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 36. 36 Dependența  O clasă folosește pentru scurt timp o altă clasă  Trimiterea unui mesaj, de exemplu apelul unei metode din clasa Math  Instanțierea unei clase într-o metodă  Primirea unui obiect ca parametru într-o metodă  Crearea și returnarea unui obiect dintr-o metodă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 37. 37 Asocierea  O clasă folosește un timp îndelungat o altă clasă  De obicei, o clasă are un câmp instanțiat din cealaltă clasă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 38. 38 Direcția de citire  Direcția de citire este de obicei de la stânga la dreapta și de sus în jos  Direcția de citire se poate indica explicit  Săgeata care indică direcția de citire nu trebuie pusă pe linia de asociere! Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 39. 39 Validarea asocierilor  Fiecare obiect | este predat ca | 0 sau mai multe | cursuri  Fiecare curs | este pentru | un singur | obiect Course = obiect Course event = curs Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 40. 40 Asociere complexă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 41. 41 Asociere unidirecțională  Numai o clasă „știe” de cealaltă  Manager va avea un câmp de tip Adresă și nu invers Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 42. 42 Cardinalitatea (multiplicitatea) asocierii Cardinalitatea * conține mai puține informații Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 43. 43 Asocieri multiple Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 44. 44 Asocieri multiple Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 45. 45 Agregarea  O clasă are dar partajează obiecte din cealaltă clasă Este o relație de tip ARE-UN / ARE-O Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 46. Agregarea 46 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 47. 47 Compunerea  Atributele compun clasa Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 48. Compunerea 48 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 49. 49 Implementarea  Din punct de vedere al implementării, asocierea, agregarea și compunerea presupun introducerea unui atribut (câmp)  Dacă nu sunt evidente sau foarte importante distincțiile privind agregarea sau compunerea, este mai simplu să se folosească numai relațiile de asociere Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 50. 50 Generalizarea (moștenirea) Este o relație de tip ESTE-UN / ESTE-O Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 51. 51 Regula 100%  Toate definițiile clasei de bază trebuie să se aplice tuturor claselor derivate Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 52. 52 Corectitudinea generalizărilor Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 53. 53 Recomandare  Compunerea ar trebui preferată moștenirii  Moștenirea este cea mai puternică formă de cuplare  În general, compunerea este mai ușor de gestionat Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 54. 54 Clase și operații abstracte virtuală <<virtual>> abstractă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 55. 55 Interfețe Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 56. 56 Template-uri De exemplu: List<int> – tipul este specificat în implementare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 57. 57 Constrângeri (în OCL)  Tipuri de constrângeri:  Invariante  Pre-condiții  Post-condiții Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 58. 58 Recomandări  Nu introduceți prea multe informații în diagramă  Ignorați atributele și operațiile necritice  Arătați într-o diagramă numai clasele relevante pentru un caz de utilizare  Nu includeți clasele sistem (string, Dictionary etc.)  Nu includeți prea devreme informații despre implementare (navigabilitate, vizibilitate) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 59. 59 3. Diagrama de obiecte Arată cum se comportă obiectele într-un anumit scenariu, cum interacționează Asocierile corespund asocierilor dintre clase Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 60. 60 Template-uri De exemplu: List<ClasaDeBaza> – tipul derivat din ClasaDeBaza este specificat în momentul execuției Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 61. 61 4. Diagrama de activități “merge” = îmbinare Aceste diagrame descriu logica procedurală, procesele Sunt asemănătoare schemelor logice, dar suportă și paralelismul Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 62. Activități și acțiuni  Activitatea este procesul modelat  O acțiune este un pas din activitate 62 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 63. Decizii și îmbinări  Condițiile trebuie să fie complete și mutual exclusive  Pasul următor trebuie să fie unic determinat 63 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 64. 64 Teste incomplete Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 65. 65 Procese paralele “fork” = ramificație “join” = reunire Se folosesc pentru procese sau fire de execuție multiple La reunire, se așteaptă terminarea tuturor acțiunilor incidente Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 66. 66 Evenimente de timp Perioadă de așteptare Eveniment de timp recurent Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 67. 67 Apelarea altor activități Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 68. 68 Semnale Așteaptă tot timpul Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 69. 69 Întreruperi și terminări de flux Un flux se poate termina fără a termina întreaga activitate Dacă se mai poate îmbunătăți soluția în 2 secunde, este foarte bine, dacă nu, se returnează rezultatul existent După 2 secunde, se returnează orice rezultat disponibil, îmbunătățit sau nu Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 70. 70 Partiții (culoare) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 71. 71 Adnotări Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 72. 72 Conectori Un conector este reprezentat de obicei de o singură literă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 73. 73 Alte exemple Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 74. 5. Diagrama de secvențe  Arată modul cum lucrează sistemul, ceea ce poate fi mai greu de înțeles doar din descrierea statică a structurii  O diagramă corespunde unui singur scenariu  Include în principal obiecte și mesaje  Un mesaj este în general un apel de metodă  Indică ordinea evenimentelor  Timpul reprezintă aici ordinea, nu durata  Pentru durată, se folosește diagrama de cronometrare 74 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 75. 75 Participanți Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 76. 76 Mesaje imbricate Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 77. 77 Tipuri de mesaje Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 78. 78 Diagramă complexă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 79. 79 Fragmente  Controlul secvențial natural poate fi extins cu ajutorul fragmentelor de interacțiune, introduse în UML 2.0  Fragmentele sunt asemănătoare structurilor de control dintr-un limbaj de programare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 80. 80 Fragmente opționale Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 81. 81 Fragmente alternative Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 82. Bucle 82 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 83. Paralelism 83 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 84. 84 Referințe Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 85. 85 6. Diagrame de comunicare Mesaje imbricate (1 → 1.1, 1.2) Mesaje concurente (2a, 2b, 2c) Similare diagramelor de secvențe, dar se concentrează pe legăturile dintre participanți Diagramele de secvențe și cele de comunicare pot fi transformate automat unele în altele Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 86. 86 Alte tipuri de mesaje Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 87. 87 Diagramă complexă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 88. 7. Diagrama mașinilor de stare  Obiectele pot reacționa diferit în funcție de stare  Diagramele mașinilor de stare se realizează pentru un singur obiect  Pot descrie comportamentul unui obiect de-a lungul mai multor cazuri de utilizare  Nu sunt potrivite pentru a descrie colaborarea mai multor obiecte  Sunt folosite intens în anumite tipuri de aplicații software și hardware, precum:  Sisteme critice de timp real  Bancomate  Jocuri (de exemplu “first person shooter”) 88 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 89. 89 Stări, tranziții, declanșatoare, condiții lift/lower switch = declanșatoare (triggers) Stări active – ce face (de exemplu prepară cafeaua) Stări pasive – cum este (de exemplu becul e stins sau aprins) Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 90. 90 Diagramă complexă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 91. 8. Diagrama de componente  Pentru proiectele mai complexe, este greu de trecut de la analiză direct la definirea claselor  O componentă este o parte încapsulată, reutilizabilă și înlocuibilă a sistemului  Componentele comunică prin interfețe, pentru a asigura cuplarea slabă  Componentele pot fi compuse din câteva clase sau pot reprezenta subsisteme de mari dimensiuni 91 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 92. 92 Notații pentru componente UML 1.x Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 93. 93 Notații pentru interfețe Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 94. 94 Clasele componentelor Notație compactă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 95. 9. Diagrama de pachete  Sistemele software pot avea sute de clase  Pachetele modelează grupuri de clase  Majoritatea limbajelor de programare importante au un corespondent al pachetelor  C#: namespace  Java: package  Deseori, diagramele sunt folosite pentru a indica dependențele dintre pachete  Pachetele pot cuprinde orice element UML, nu doar clase  De exemplu: cazuri de utilizare  Componentele corespund nivelului conceptual (mai generale)  Pachetele corespund nivelului logic, în corespondență cu faza de implementare 95 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 96. 96 Pachete Organizarea logică Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 97. 97 Clase în pachete Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 98. 98 Dependențe Java: import C#: using Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 99. 10. Diagrama de desfășurare  Corespunde nivelului fizic: modelează elemente fizice ale sistemului  Fișiere executabile  Entități hardware  Arată cum sunt atribuite entitățile software către cele hardware și cum comunică acestea  Poate include hardware, firmware, sisteme de operare, medii de execuție, drivere etc.  Dar trebuie să cuprindă doar detaliile importante pentru audiență 99 Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 100. 100 Dispozitive și artefacte hardware software Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 101. 101 Dispozitive și artefacte Organizarea fizică Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 102. 102 Instanțe de noduri Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 103. 103 Comunicația între noduri Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 104. 104 Exemplu Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 105. 105 11. Diagrama structurilor compuse Arată cum lucrează obiectele în interiorul unei clase sau cum îndeplinesc un scop Un port reprezintă un mod distinct de utilizare a unei clase, de obicei de către tipuri diferite de clienți Porturile pot grupa interfețe înrudite Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 106. 106 12. Diagrama de cronometrare Folosită mai ales pentru sisteme de timp real sau încorporate Arată stările unui obiect și momentele de timp când se află obiectul în aceste stări Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 107. 107 Notații alternative Recomandată pentru puține stări Recomandată pentru multe stări Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 108. 108 13. Diagrama interacțiunilor generale Arată cum interacționează mai multe entități pentru a realiza un caz de utilizare (sau un scop) Poate fi văzută ca o diagramă de activități, dar fiecare acțiune este o interacțiune completă descrisă de o diagramă distinctă Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 109. 109 Diagramele UML și ciclul de dezvoltare software  Modelul vizualizării 4+1 Perspectiva logică  Clase, mașini de stare, secvențe ș.a.  Perspectiva de proces  Activități  Perspectiva de dezvoltare  Pachete, componente  Perspectiva fizică  Desfășurare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 110. 110 Diagramele UML și ciclul de dezvoltare software  Faza modelării cazurilor de utilizare  Faza modelării domeniului  Diagrame statice de structură, diagrame de secvențe  Faza modelării proiectării  Diagrame de clase, de mașini de stare, de activități  Faza modelării implementării  Diagrame de componente, de desfășurare Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 111. 111 Concluzii  UML este un limbaj pentru specificarea, vizualizarea, construirea și documentarea elementelor sistemelor software  Este un standard de facto pentru modelarea software  UML 2.0 are 13 diagrame, clasificate în:  Diagrame de structură  Diagrame de comportament  Diagrame de interacțiune Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
  • 112. 112 Referințe  Majoritatea diagramelor incluse în acest curs au fost preluate din următoarele surse:  Hamilton, K., Miles, R. (2006). Learning UML 2.0, O'Reilly  Ariadne Training. UML Applied, 2nd edition, http://ariadnetraining.com/software-courses/images/stories/YesNo/ ariadne/file/UML_Applied_Second_Edition.pdf Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm