17.04.2013 Views

Limbajul unificat de modelare, UML - Universitatea Tehnică ...

Limbajul unificat de modelare, UML - Universitatea Tehnică ...

Limbajul unificat de modelare, UML - Universitatea Tehnică ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!