Limbajul unificat de modelare, UML - Universitatea Tehnică ...
Limbajul unificat de modelare, UML - Universitatea Tehnică ...
Limbajul unificat de modelare, UML - Universitatea Tehnică ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Ingineria programării<br />
2. <strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong> mo<strong>de</strong>lare, <strong>UML</strong><br />
Florin Leon<br />
<strong>Universitatea</strong> <strong>Tehnică</strong> „Gh. Asachi” Iaşi<br />
Facultatea <strong>de</strong> Automatică şi Calculatoare<br />
http://florinleon.byethost24.com/curs_ip.htm<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
<strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong><br />
mo<strong>de</strong>lare, <strong>UML</strong><br />
1. Mo<strong>de</strong>larea<br />
2. <strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong> mo<strong>de</strong>lare<br />
3. Clasificarea diagramelor <strong>UML</strong> 2.0<br />
4. Diagramele <strong>UML</strong> 2.0<br />
5. Concluzii<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
<strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong><br />
mo<strong>de</strong>lare, <strong>UML</strong><br />
1. Mo<strong>de</strong>larea<br />
2. <strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong> mo<strong>de</strong>lare<br />
3. Clasificarea diagramelor <strong>UML</strong> 2.0<br />
4. Diagramele <strong>UML</strong> 2.0<br />
5. Concluzii<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Mo<strong>de</strong>larea<br />
Un mo<strong>de</strong>l este o simplificare a unui anumit sistem, care<br />
permite analizarea unora dintre proprietăţile acestuia<br />
Reţine caracteristicile necesare<br />
Folosirea <strong>de</strong> mo<strong>de</strong>le poate înlesni abordarea problemelor<br />
complexe, facilitând înţelegerea<br />
Divi<strong>de</strong> et impera<br />
Exemple:<br />
Formalismul matematic<br />
Reprezentările din fizică<br />
Orice limbaj „intern” poate fi folosit pentru mo<strong>de</strong>lare,<br />
însă într-un context formal este nevoie <strong>de</strong> standardizare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
4
<strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong><br />
mo<strong>de</strong>lare, <strong>UML</strong><br />
1. Mo<strong>de</strong>larea<br />
2. <strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong> mo<strong>de</strong>lare<br />
3. Clasificarea diagramelor <strong>UML</strong> 2.0<br />
4. Diagramele <strong>UML</strong> 2.0<br />
5. Concluzii<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Scurt istoric (I)<br />
Între 1989 şi 1994 erau folosite mai mult <strong>de</strong> 50 <strong>de</strong> limbaje <strong>de</strong><br />
mo<strong>de</strong>lare software, fiecare cu propriile notaţii<br />
Utilizatorii doreau un limbaj standardizat, o lingua franca a<br />
mo<strong>de</strong>lării<br />
La mijlocul anilor ’90 trei meto<strong>de</strong> s-au dovedit mai eficiente:<br />
Booch (Grady Booch): potrivită mai ales pentru proiectare şi<br />
implementare, cu <strong>de</strong>zavantajul unor notaţii complicate<br />
OMT, Object Mo<strong>de</strong>ling Technique (Jim Rumbaugh): potrivită<br />
pentru analiză şi sisteme informaţionale cu multe date<br />
OOSE, Object Oriented Software Engineering (Ivar Jacobson):<br />
această metodă a propus aşa-numitele cazuri <strong>de</strong> utilizare, care<br />
ajută la înţelegerea comportamentului sistemului în ansamblu<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
6
Precursorii <strong>UML</strong><br />
Booch<br />
OMT<br />
OOSE<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
7
Scurt istoric (II)<br />
1994: Jim Rumbaugh, creatorul OMT, a părăsit General<br />
Electric, alăturându-se lui Grady Booch la Rational Corp.<br />
1995: Ivar Jacobson, creatorul OOSE, a venit la Rational<br />
iar i<strong>de</strong>ile lui, în special conceptul <strong>de</strong> cazuri <strong>de</strong> utilizare,<br />
au fost adăugate „Meto<strong>de</strong>i <strong>unificat</strong>e”<br />
Metoda rezultată a fost numită „<strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong><br />
mo<strong>de</strong>lare”, <strong>UML</strong><br />
1996: Formarea <strong>de</strong> către Rational a consorţiului<br />
„Partenerilor <strong>UML</strong>” din care făceau parte giganţi precum<br />
Hewlett-Packard, Microsoft şi Oracle<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
8
<strong>UML</strong><br />
Limbaj pentru specificarea, vizualizarea,<br />
construirea şi documentarea elementelor<br />
sistemelor software<br />
Un limbaj grafic care ne permite să reproducem<br />
„pe hârtie” ceea ce este produs în procesul <strong>de</strong><br />
<strong>de</strong>zvoltare a unui sistem software<br />
Poate fi folosit şi pentru alte sisteme, cum ar fi<br />
procesele <strong>de</strong> afaceri (business processes)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
9
Standar<strong>de</strong><br />
Ianuarie 1997: <strong>UML</strong> 1.0 a fost propus spre<br />
standardizare în cadrul OMG (Object<br />
Management Group)<br />
Noiembrie 1997: versiunea <strong>UML</strong> 1.1 a fost<br />
adoptată ca standard <strong>de</strong> către OMG<br />
Martie 2003: a fost lansată versiunea 1.5<br />
Octombrie 2004: versiunea 2.0<br />
August 2011: versiunea 2.4.1<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
10
<strong>UML</strong><br />
Ca orice limbaj, <strong>UML</strong> are:<br />
Notaţii (alfabetul <strong>de</strong> simboluri)<br />
Sintaxă şi gramatică (reguli pentru combinarea<br />
simbolurilor)<br />
<strong>UML</strong> este un instrument <strong>de</strong> comunicare<br />
<strong>UML</strong> nu este o metodologie <strong>de</strong> <strong>de</strong>zvoltare<br />
Dar este <strong>de</strong>terminat <strong>de</strong> cele mai bune practici în<br />
domeniu<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
11
<strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong><br />
mo<strong>de</strong>lare, <strong>UML</strong><br />
1. Mo<strong>de</strong>larea<br />
2. <strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong> mo<strong>de</strong>lare<br />
3. Clasificarea diagramelor <strong>UML</strong> 2.0<br />
4. Diagramele <strong>UML</strong> 2.0<br />
5. Concluzii<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
Clase <strong>de</strong> diagrame<br />
Diagrame <strong>de</strong> structură<br />
Prezintă elementele unei specificaţii in<strong>de</strong>pen<strong>de</strong>nt <strong>de</strong> timp<br />
Includ: diagramele <strong>de</strong> clase, structuri compuse, componente,<br />
<strong>de</strong>sfăşurare (<strong>de</strong>ployment), obiecte şi pachete<br />
Diagrame <strong>de</strong> comportament<br />
Prezintă trăsăturile comportamentale ale sistemului<br />
Includ: diagramele <strong>de</strong> activităţi, maşini <strong>de</strong> stare şi cazuri <strong>de</strong><br />
utilizare, precum şi cele 4 diagrame <strong>de</strong> interacţiune<br />
Diagrame <strong>de</strong> interacţiune<br />
Scot în evi<strong>de</strong>nţă interacţiunile dintre obiecte<br />
Includ: diagramele <strong>de</strong> secvenţe, comunicare, interacţiuni generale<br />
(interaction overview) şi cronometrare (timing)<br />
Legendă: utilitate practică mare, medie, mică<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
13
Diagramele <strong>UML</strong> 2.0 (I)<br />
Diagrame <strong>de</strong> structură:<br />
ce conţine sistemul<br />
Clase<br />
Structuri compuse<br />
Componente<br />
Desfăşurare<br />
Obiecte<br />
Pachete<br />
Diagrame introduse în <strong>UML</strong> 2.0<br />
Diagrame <strong>de</strong> comportament:<br />
ce se întâmplă în sistem<br />
Activităţi<br />
Maşini <strong>de</strong> stare<br />
Cazuri <strong>de</strong> utilizare<br />
Diagrame <strong>de</strong> interacţiune:<br />
fluxurile <strong>de</strong> control şi date<br />
dintre componentele sistemului<br />
Secvenţe<br />
Comunicare<br />
Interacţiuni generale<br />
Cronometrare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
14
Diagramele <strong>UML</strong> 2.0 (II)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
15
<strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong><br />
mo<strong>de</strong>lare, <strong>UML</strong><br />
1. Mo<strong>de</strong>larea<br />
2. <strong>Limbajul</strong> <strong>unificat</strong> <strong>de</strong> Mo<strong>de</strong>lare<br />
3. Clasificarea diagramelor <strong>UML</strong> 2.0<br />
4. Diagramele <strong>UML</strong> 2.0<br />
5. Concluzii<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm
1. Diagrama cazurilor <strong>de</strong> utilizare<br />
Descrie interacţiunile dintre utilizatori şi<br />
sistem<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
17
Actori şi cazuri multiple<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
18
Granularitatea<br />
Un caz <strong>de</strong> utilizare trebuie să satisfacă un scop pentru actor<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
19
Avantaje<br />
Suma cazurilor <strong>de</strong> utilizare este întregul<br />
sistem<br />
Permit comunicarea cu persoane fără<br />
cunoştinţe tehnice IT<br />
Partiţionează funcţionalitatea, ghi<strong>de</strong>ază<br />
<strong>de</strong>zvoltarea iterativă<br />
Ajută planificarea şi testarea<br />
Ajută la crearea manualurilor <strong>de</strong> utilizare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
20
Determinarea cazurilor <strong>de</strong><br />
utilizare<br />
Interviuri cu utilizatori potenţiali<br />
Întâlniri cu părţile interesate (stakehol<strong>de</strong>rs)<br />
Facilitator, asistent (scribe), mo<strong>de</strong>lare CASE<br />
Brainstorming<br />
Mai întâi actorii<br />
Apoi posibilele cazuri <strong>de</strong> utilizare<br />
Justificarea fiecărui caz <strong>de</strong> utilizare<br />
Descriere simplă, <strong>de</strong> o linie sau un paragraf<br />
Toate i<strong>de</strong>ile trebuie documentate<br />
Cazurile <strong>de</strong> utilizare nu trebuie să fie perfecte <strong>de</strong> prima<br />
dată, se vor rafina ulterior<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
21
Actori primari şi secundari<br />
beneficiază ia parte<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
22
I<strong>de</strong>ntificarea actorilor<br />
Exemplu: timpul poate fi un actor<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
23
Generalizarea actorilor<br />
„note” (comentarii)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
24
Relaţiile dintre<br />
cazurile <strong>de</strong> utilizare (I)<br />
Inclu<strong>de</strong>: pentru reutilizare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
Doar Check i<strong>de</strong>ntity este<br />
conectat cu Author<br />
Cre<strong>de</strong>ntials database<br />
25
Relaţiile dintre<br />
cazurile <strong>de</strong> utilizare (II)<br />
Generalizarea cazurilor <strong>de</strong> utilizare:<br />
reutilizare cu modificări<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
26
Relaţiile dintre<br />
cazurile <strong>de</strong> utilizare (III)<br />
Extend: comportament<br />
opţional, <strong>de</strong>pinzând <strong>de</strong> o<br />
<strong>de</strong>cizie (<strong>de</strong> implementare<br />
sau din timpul execuţiei)<br />
Complet diferit <strong>de</strong><br />
incluziune şi generalizare!<br />
Un tip <strong>de</strong> relaţie mai greu<br />
<strong>de</strong> înţeles<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
27
Specificarea cazurilor<br />
<strong>de</strong> utilizare (I)<br />
Pre-condiţii<br />
Ex.: Utilizatorul s-a<br />
logat şi s-a<br />
autentificat ca<br />
administrator<br />
Post-condiţii<br />
Ex.: Participantul a<br />
fost eliminat <strong>de</strong> la<br />
curs<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
28
Specificarea cazurilor<br />
<strong>de</strong> utilizare (II)<br />
Fluxuri <strong>de</strong> extensie (fluxuri alternative sau fluxuri <strong>de</strong> excepţie)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
29
Storyboard (tablă <strong>de</strong> naraţiune)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
30
2. Diagrama <strong>de</strong> clase<br />
Clasa<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
31
Vizibilitatea trăsăturilor<br />
Public<br />
Protejat<br />
Pachet<br />
Privat<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
32
Vizibilitatea în C# şi Java<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
33
Reprezentarea atributelor<br />
Inline (în interiorul clasei)<br />
Prin asociere<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
34
Vizibilitatea atributelor<br />
De obicei private sau protejate<br />
Nu se recomandă atribute publice, <strong>de</strong>cât:<br />
Pentru constante<br />
Atribute read-only<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
35
Operaţiile<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
36
Parametrii şi tipurile <strong>de</strong> return<br />
Constructor<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
37
Trăsături statice<br />
Trăsături (features) = atribute şi operaţii<br />
Trăsăturile statice se subliniază<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
38
Relaţii între clase<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
39
Depen<strong>de</strong>nţa<br />
O clasă foloseşte pentru scurt timp o altă clasă: trimiterea<br />
unui mesaj, trimiterea ca parametru<br />
Exemplu: meto<strong>de</strong>le clasei Math<br />
Din punct <strong>de</strong> ve<strong>de</strong>re al implementării:<br />
Instanţierea unei clase într-o metodă<br />
Primirea unui obiect ca parametru într-o metodă<br />
Crearea şi returnarea unui obiect dintr-o metodă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
40
Asocierea<br />
De obicei, o clasă are un câmp instanţiat din<br />
cealaltă clasă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
41
Direcţia <strong>de</strong> citire<br />
Direcţia <strong>de</strong> citire este <strong>de</strong> obicei <strong>de</strong> la stânga<br />
la dreapta şi <strong>de</strong> sus în jos<br />
Direcţia <strong>de</strong> citire se poate indica explicit<br />
Săgeata care indică direcţia <strong>de</strong> citire nu trebuie<br />
pusă pe linia <strong>de</strong> asociere!<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
42
Validarea asocierilor<br />
Fiecare. Obiect. Este predat ca. 0 sau mai multe. Cursuri.<br />
Fiecare. Curs. Este pentru. Unul şi numai unul. Obiect.<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
43
Asociere complexă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
44
Asociere unidirecţională<br />
Numai o clasă „ştie” <strong>de</strong> cealaltă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
45
Cardinalitatea (multiplicitatea)<br />
asocierii<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
46
Asocieri multiple (I)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
47
Asocieri multiple (II)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
48
Agregarea<br />
O clasă are dar partajează obiecte din<br />
cealaltă clasă<br />
Este o relaţie <strong>de</strong> tip ARE-UN / ARE-O<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
49
Compunerea<br />
Atributele compun clasa<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
50
Implementarea<br />
Din punct <strong>de</strong> ve<strong>de</strong>re al implementării,<br />
asocierea, agregarea şi compunerea sunt<br />
i<strong>de</strong>ntice<br />
Presupun introducerea unui atribut (câmp)<br />
Dacă nu sunt evi<strong>de</strong>nte sau foarte importante<br />
distincţiile privind agregarea sau<br />
compunerea, este mai simplu să se<br />
folosească numai relaţiile <strong>de</strong> asociere<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
51
Moştenirea (generalizarea)<br />
Este o relaţie <strong>de</strong> tip ESTE-UN / ESTE-O<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
52
Regula 100%<br />
Toate <strong>de</strong>finiţiile clasei <strong>de</strong> bază trebuie să se<br />
aplice tuturor claselor <strong>de</strong>rivate<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
53
Corectitudinea generalizărilor<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
54
Moştenire multiplă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
55
Recomandare<br />
Compunerea ar trebui preferată moştenirii<br />
Moştenirea este cea mai puternică formă <strong>de</strong><br />
cuplare<br />
În general, compunerea este mai uşor <strong>de</strong><br />
gestionat<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
56
Clase şi operaţii abstracte<br />
virtuală<br />
<br />
abstractă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
57
Interfeţe<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
58
Template-uri<br />
De exemplu: List – tipul este specificat în implementare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
59
Constrângeri<br />
Tipuri <strong>de</strong> constrângeri:<br />
Invariante<br />
Pre-condiţii<br />
Post-condiţii<br />
OCL (Object Constraint Language) – parte din <strong>UML</strong> 2.0<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
60
Recomandări<br />
Nu introduceţi prea multe informaţii în diagramă<br />
Ignoraţi atributele şi operaţiile necritice<br />
Arătaţi într-o diagramă numai clasele relevante<br />
pentru un caz <strong>de</strong> utilizare<br />
Nu inclu<strong>de</strong>ţi clasele sistem (string, Hashtable<br />
etc.)<br />
Nu inclu<strong>de</strong>ţi prea <strong>de</strong>vreme informaţii <strong>de</strong>spre<br />
implementare (navigabilitate, vizibilitate)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
61
3. Diagrama <strong>de</strong> obiecte<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
62
Template-uri<br />
De exemplu: List – tipul este specificat în momentul execuţiei<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
63
4. Diagrama <strong>de</strong> activităţi<br />
“merge” = îmbinare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
64
Activităţi şi acţiuni<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
65
Decizii şi îmbinări<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
66
Teste incomplete<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
67
Procese paralele<br />
“fork” = ramificaţie<br />
“join” = reunire<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
68
Evenimente <strong>de</strong> timp<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
69
Apelarea altor activităţi<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
70
Semnale<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
71
Întreruperi şi terminări <strong>de</strong> flux<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
72
Partiţii (culoare)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
73
Adnotări<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
74
Conectori<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
75
Exemple<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
76
5. Diagrama <strong>de</strong> secvenţe<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
77
Mesaje imbricate<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
78
Tipuri <strong>de</strong> mesaje<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
79
Diagramă complexă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
80
Fragmente<br />
Controlul secvenţial natural poate fi extins cu<br />
ajutorul fragmentelor <strong>de</strong> interacţiune<br />
Fragmentele sunt asemănătoare structurilor <strong>de</strong><br />
control care există într-un limbaj <strong>de</strong> programare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
81
Fragmente opţionale<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
82
Fragmente alternative<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
83
Referinţe<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
84
6. Diagrame <strong>de</strong> comunicare<br />
Mesaje imbricate<br />
Mesaje concurente<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
85
Alte tipuri <strong>de</strong> mesaje<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
86
Diagramă complexă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
87
7. Diagrama maşinilor <strong>de</strong> stare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
88
Semnale<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
89
Stări compuse (I)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
90
Stări compuse (II)<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
91
8. Diagrama <strong>de</strong> componente<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
92
Interfaţarea componentelor<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
93
Accent pe interfeţe<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
94
Accent pe <strong>de</strong>pen<strong>de</strong>nţe<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
95
Clasele componentelor<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
96
9. Diagrama <strong>de</strong> pachete<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
Organizarea logică<br />
97
Clase în pachete<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
98
Depen<strong>de</strong>nţe<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
99
10. Diagrama <strong>de</strong> <strong>de</strong>sfăşurare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
Organizarea fizică<br />
100
Instanţe <strong>de</strong> noduri<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
101
Comunicaţia între noduri<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
102
Exemplu <strong>de</strong> utilizare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
103
11. Diagrama<br />
structurilor compuse<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
104
12. Diagrama <strong>de</strong> cronometrare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
105
Constrângeri<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
106
Notaţie alternativă<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
107
13. Diagrama<br />
interacţiunilor generale<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
108
Diagramele <strong>UML</strong> şi ciclul <strong>de</strong><br />
<strong>de</strong>zvoltare software<br />
Faza mo<strong>de</strong>lării cazurilor <strong>de</strong> utilizare<br />
Faza mo<strong>de</strong>lării domeniului<br />
Diagrame statice <strong>de</strong> structură, diagrame <strong>de</strong> secvenţe<br />
Faza mo<strong>de</strong>lării proiectării<br />
Diagrame <strong>de</strong> comunicare, <strong>de</strong> clase, <strong>de</strong> maşini <strong>de</strong> stare,<br />
<strong>de</strong> activităţi<br />
Faza mo<strong>de</strong>lării implementării<br />
Diagrame <strong>de</strong> componente, <strong>de</strong> <strong>de</strong>sfăşurare<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
109
Diagramele <strong>UML</strong> şi ciclul <strong>de</strong><br />
<strong>de</strong>zvoltare software<br />
Perspectiva logică<br />
Clase, obiecte, maşini <strong>de</strong><br />
stare, diagrame <strong>de</strong><br />
interacţiune<br />
Perspectiva <strong>de</strong> proces<br />
Activităţi<br />
Perspectiva <strong>de</strong><br />
<strong>de</strong>zvoltare<br />
Pachete, componente<br />
Perspectiva fizică<br />
Desfăşurare<br />
Mo<strong>de</strong>lul vizualizării 4+1<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
110
Concluzii<br />
<strong>UML</strong> este un limbaj pentru specificarea,<br />
vizualizarea, construirea şi documentarea<br />
elementelor sistemelor software<br />
Este un standard <strong>de</strong> facto pentru mo<strong>de</strong>larea<br />
software<br />
<strong>UML</strong> 2.0 are 13 diagrame, clasificate în:<br />
Diagrame <strong>de</strong> structură<br />
Diagrame <strong>de</strong> comportament<br />
Diagrame <strong>de</strong> interacţiune<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
111
Referinţe<br />
Majoritatea diagramelor incluse în acest curs<br />
au fost preluate din următoarele surse:<br />
Hamilton, K., Miles, R. (2006). Learning <strong>UML</strong> 2.0,<br />
O'Reilly<br />
Ariadne Training. <strong>UML</strong> Applied, 2nd edition,<br />
http://ariadnetraining.com/software-courses/images/stories/YesNo/<br />
ariadne/file/<strong>UML</strong>_Applied\_Second\_Edition.pdf<br />
Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm<br />
112