Sunteți pe pagina 1din 18

Diagrame de componente şi

de desfăşurare
Diagrame de componente

O diagramă de componente prezintă dependenţele existente între


diverse componente software (cod sursă, cod binar, executabile, librării
cu legături dinamice-DLL, etc.) care compun un sistem software. Aceste
dependenţe sunt statice (au loc în etape de compilare sau link-editare)
sau dinamice (au loc în timpul execuţiei).

O componentă este o parte fizică dintr-un sistem, un lucru real, care


există pe un calculator. În UML, noţiunea de componentă poate să
desemneze atât un tip (o categorie) de obiecte, cât şi fiecare obiect din
tipul respectiv (instanţa tipului).

De exemplu, o aplicaţie executabilă este o componentă care reprezintă


un tip (o categorie), în timp ce o aplicaţie care se execută la un moment
dat, care are o identitate în momentul execuţiei, este o instanţă a acelui
tip.
Reprezentare

Exemplu
Relaţia dintre componente şi clase

Asemănări:
- Au un nume format dintr-un şir de caractere.
- Au instanţe, care au un nume separat prin “:” de numele clasei, respectiv
al componentei.
- Pot realiza interfeţe.
- Pot participa la relaţii de asociere, de generalizare, de dependenţă, de
realizare şi de agregare (clase sau componente incluse în alte clase,
respectiv componente).

Deosebiri:
- Clasele sunt abstracţii ale unui set de atribute şi de operaţii;
componentele sunt părţi fizice dintr-un sistem, rezidente într-un nod. Se
utilizează componente când modelăm un lucru rezident într-un nod; în
celelalte cazuri, folosim, în modelare, clase.
- Clasele au atribute şi operaţii, pe când componentele au numai operaţii,
accesibile numai prin intermediul interfeţelor lor.
- O componentă este implementarea fizică a uneia sau a mai multor entităţi
conceptuale, cum sunt clasele şi colaborările; între componente şi
implementările ei există o relaţie de dependenţă.
Componentele folosite în UML pot fi împărţite în trei categorii:
• Componente fundamentale (desfăşurare) – care formează baza
sistemelor executabile, ca de exemplu: executabile, DLL-uri, controale
ActiveX, JavaBeans, componente COM+, pagini WEB, tabelele bazelor
de date, etc.
• Componente create de utilizator – care sunt produse rezultate din
procesul de dezvoltare şi care formează componentele fundamentale, ca
de exemplu: fişiere cu codul sursă şi de date. Aceste componente sunt
folosite în crearea, în modificarea şi în dezvoltarea executabilelor.
• Componente de execuţie – create ca o consecinţă a folosirii unui sistem
executabil.
UML foloseşte şi stereotipuri standard:
• <<executable>> - pentru o componentă care poate fi executată în
noduri;
• <<library>> - pentru o componentă care reprezintă biblioteci;
• <<file>> - pentru o componentă care reprezintă un fişier de date sau
fişier sursă;
• <<table>> - pentru o componentă care reprezintă o tabelă a unei baze de
date;
• <<document>> - pentru o componentă care reprezintă un fişier
document.
Interfeţe
Componentele au numai operaţii, care pot fi accesate numai prin
intermediul interfeţelor lor. Interfeţele unei entităţi (clase sau componente)
reprezintă un set de operaţii pe care entitatea le pune la dispoziţia celorlalte
entităţi şi care sunt ascunse prin încapsulare.

Reprezentare

O interfaţă realizată de o componentă se numeşte interfaţă de export, în


sensul că interfaţa furnizează serviciile componentei celorlalte componente.
O componentă poate furniza mai multe interfeţe de export.
O interfaţă folosită de o componentă se numeşte interfaţă de import, în
sensul că o componentă care accesează serviciile alteia trebuie să se
conformeze interfeţei acesteia.
Relaţiile de dependenţă dintre componente

Relaţia de dependenţă dintre componente este o relaţie de la o


componentă client la o componentă furnizor (server) şi semnifică faptul
că entităţile (clasele) incluse în componenta client pot moşteni, instanţia
sau utiliza clasele incluse în componenta furnizor (server).

Dependenţele dintre componente se reprezintă, ca şi în cazul claselor,


prin linii punctate între componenta utilizator (client) şi componenta
furnizor de servicii (server), cu o săgeată orientată spre componenta
furnizor.

Se folosesc trei tipuri speciale de dependenţe stereotipizate, şi anume:


a) dependenţe de utilizare (use dependencies);
b) dependenţe de apartenenţă (reside dependencies);
c) dependenţe de desfăşurare (deploy dependencies).
a) Dependenţe de utilizare (use dependencies)

O dependenţă de utilizare este o relaţie de la componenta utilizator (client)


la componenta furnizor (server), care indică faptul că componenta client
foloseşte sau depinde de componenta furnizor.

O dependenţă de utilizare este reprezentată în mod asemănător cu relaţia


de dependenţă dintre clase, printr-o linie punctată, cu o săgeată spre
componenta furnizor sau spre interfaţa acesteia.
b) Dependenţe de apartenenţă (reside dependencies)

O dependenţă de apartenenţă este o relaţie de la o componentă client la un


element UML furnizor şi indică faptul că elementul furnizor aparţine
componentei (asemănător relaţiei de agregare dintre clase). Elementul
furnizor poate fi o clasă concretă sau o clasă stereotip (<<type>>,
<<implementation class>>, <<interface>>), pachete sau subsisteme.

Exemplu
componente:
- Interfaţa Utilizator, care furnizează o interfaţă prin care utilizatorul poate
interacţiona cu sistemul;
- Date – pentru implementarea funcţionalităţii datelor memorate;

pachete şi subsisteme:
- Interfaţa Utilizator, care grupează clasele care furnizează interfaţa cu
utilizatorul;
- Utilităţi – conţine date, timpul şi alte clase de utilităţi;
- Date - subsistem pentru prelucrarea datelor.

interfeţe:
IProduse – produse realizate (create sau scrise);
IConsumabile – produse folosite (citite sau distruse).
- pachetul Utilităţi aparţine ambelor componente;
- componenta Date conţine şi subsistemul Date, care este reprezentat
în interiorul componentei (modul doi de reprezentare), în timp ce
pachetul Utilităţi este legat printr-o relaţie de dependenţă de
componenta client Date (modul întâi de reprezentare);
- deoarece între pachetele Utilităţi şi Interfaţă Utilizator există o relaţie
de dependenţă, ele trebuie să facă parte din aceeaşi componentă, altfel
pachetul Interfaţă Utilizator nu va putea fi utilizat.
Diagrame de desfăşurare
Diagrama de desfăşurare descrie structura sistemului în momentul
execuţiei. Ea prezintă dispunerea fizică a diferitelor elemente hardware,
numite noduri, care intră în componenţa unui sistem, şi repartizarea
programelor executabile pe aceste elemente. În diagrama de desfăşurare,
se indică nodurile şi conexiunile unui model.

Noduri
Un nod este resursa care este disponibilă în timpul execuţiei unui sistem
software şi reprezintă un procesor sau un dispozitiv, pe care vor fi
desfăşurate şi executate componentele sistemului.
Un procesor este un nod care poate executa o componentă (calculatoare în
reţea). Fiecare nod trebuie să aibă un nume. La nivelul fiecărui procesor pot
fi identificate procese. Un procesor trebuie să aibă memorie şi anumite
capabilităţi de procesare (dispozitive de calcul, resurse umane, etc.)

Un dispozitiv (echipament periferic) reprezintă un element hardware care, în


sistemul din care face parte, nu are putere de calcul. Fiecare dispozitiv
trebuie să aibă un nume, care poate fi generic, ca de exemplu: monitor,
imprimantă, tastatură, modem, etc.
Distincţia dintre un dispozitiv şi un procesor depinde de punctul de vedere
asupra acestora. De exemplu: un terminal T va fi privit ca un dispozitiv de
către utilizatorul terminalului şi ca un procesor pentru un produs software
care se execută pe procesorul terminalului T.

În UML, un nod se reprezintă printr-un paralelipiped (de multe ori este un


cub), care este etichetat cu numele nodului, ca în figura de mai jos:

Observaţii privind numele unui nod:


- în cazul în care nodul este o clasă, numele poate fi stereotipizat;
- în cazul în care nodul face parte dintr-un pachet, numele este prefixat
de numele pachetului şi separat de acesta prin simbolul “::”;
- în cazul în care nodul este un nod exemplu, numele său este urmat de
simbolul “:” şi de numele clasei de noduri, având toate părţile numelui
subliniate; ambele nume sunt opţionale, iar simbolul “:” este prezent
numai dacă este specificat numele clasei de noduri;
Exemple

Clase de noduri:
- Client – tip procesor, pe care se execută componenta Interfaţă Utilizator;
- ServerBaze – tip procesor, pe care se execută componenta Date;
- Imprimantă – tip dispozitiv, folosită de sistem pentru a lista rapoarte;
Instanţe de clase de noduri:
- Andrei: Client; Ana: Client;
- O instanţă a nodului Server;
- Hp100: Imprimantă.
Organizarea nodurilor şi legăturile dintre ele
Nodurile pot fi organizate în pachete, în acelaşi mod ca şi clasele şi
componentele.

O conexiune reprezintă un tip hardware care realizează cuplarea între două


noduri. Conexiunea poate fi directă, ca de exemplu prin cablu, reţea
Ethernet, linii telefonice, etc., sau indirectă, ca de exemplu conexiunea prin
satelit.
unde

T-connector
Dependenţe de desfăşurare
O dependenţă de desfăşurare este o relaţie de la o componentă, numită şi
componentă client, la un nod, numit nod furnizor, şi indică faptul că nodul
conţine componenta respectivă.

O dependenţă de desfăşurare poate fi reprezentată în două moduri:


- printr-o relaţie de dependenţă (o linie punctată cu o săgeată) de la
componentă la nod şi având stereotipul <<desfăşurare>> sau <<deploy>>;
- componenta este reprezentată în interiorul nodului pe care este
desfăşurată (modul cel mai des utilizat).
Exemplu de diagramă de componente şi de desfăşurare

Se consideră, iniţial, pachetele: Interfaţă Utilizator şi Utilităţi şi subsistemul


Raportare, care furnizează interfeţele: IVizualizare (pentru vizualizarea pe
ecran a rapoartelor) şi IPrintare (pentru printarea rapoartelor). Pe
parcurs se rafinează diagrama cu următoarele cerinţe:

1. Pachetul Interfaţă Utilizator foloseşte interfeţele IVizualizare şi IPrintare,


furnizate de subsistemul Raportare.
2. Pachetele Interfaţă Utilizator şi Utilităţi aparţin componentei
InterfaţăUtilizator.
3. Subsistemul Raportare şi pachetul Utilităţi aparţin de componenta
Raportare.
4. Componenta Interfaţă Utilizator este desfăşurată pe nodul Client.
5. Componenta Raportare este desfăşurată pe nodul Server Raport.
6. Nodul Client este conectat la nodul Server Raport, iar nodul Server
Raport este conectat la nodul Imprimantă .

S-ar putea să vă placă și