Diagrama de componente

Diagramele de componente reprezintă relaţiile dintre componentele sistemului descris. În cadrul UML 2.0 o componentă este considerată independentă şi oferă altor componente acces la anumite funcţionalităţi prin intermediul unor interfeţe. În mod uzual diagramele de componentele sunt utilizate pentru descrierea la nivel înalt a structurii sistemului.

Principalele elemente ale unei diagrame de componente sunt:

  • Componenta – este reprezentată sub forma unui dreptunghi în interiorul căruia este notat numele componentei;
  • Interfaţa – o componentă oferă servicii altor componente prin intermediul unor interfeţe. O interfaţă este reprezentată sub forma unui segment de dreaptă ce pleacă din componentă şi se termină cu un cerc. O interfaţă a unei componente poate fi echivalată cu o interfaţă de clasă – respectiv un set de funcţii pe care componenta le pune la dispoziţie altor componente;
  • Utilizator interfaţă – o componentă poate specifica faptul că necesită o anumită interfaţă pentru aşi desfăşura activitatea prin intermediul unei notaţii de tip utilizator interfaţă. O astfel de notaţie este reprezentată sub forma unui segment de dreaptă ce pleacă din componentă şi se termină cu un semicerc;
  • Port – reprezentat sub forma unui dreptunghi mic amplasat pe graniţa componentei şi reprezintă un punct de interacţiune prin intermediul căruia o componentă poate să comunice cu alte componente.

O componentă expune un set de interfeţe ce reprezintă servicii pe care aceasta le oferă sau pe care le utilizează. În figura 1 este exemplificată diagrama de componente compusă din componentele Sensor ce implementează interfaţa ISensorData şi componenta Controller ce utilizează interfaţa pusă la dispoziţie de Sensor.

FIGURA 1

Între două componente pot fi reprezentate şi asocieri simple reprezentate printr-o linie ce le uneşte. Aceste asocieri specifică o relaţie de colaborare între două componente fără a intra în detalii cu privire la interfeţele expuse sau cele folosite. Un exemplu de asociere între două componente este prezentat în figura 3. A se remarca modul în care componentele sunt reprezentate, această notaţie fiind introdusă în versiunea UML 2.0.

FIGURA 3

O componentă poate fi formată la rândul ei din mai multe componente. În această situaţie elementul componentă poate fi reprezentat având o dimensiune mai mare şi înăuntrul ei fiind plasate alte componente ce fac parte din aceasta. În figura 2.4.35 este reprezentată componenta CofeeMaker formată din componentele Heater, DosageUnit şi Controller ce interacţionează.

FIGURA 4

În figură a fost introdusă şi notaţia de port. În sensul diagramelor UML portul este un mecanism prin care o componentă internă a unei componente expune către exterior o serie de funcţionalităţi ( de exemplu componenta Controller expune interfaţa IOrderProduct) sau prin care o componentă internă accesează funcţii externe (de exemplu componenta Controller utilizează interfaţa IPayment a unei entităţi externe). În mod uzual între o componentă internă şi un port se realizează o asociere de tip delegat.

Pentru a specifica faptul că două componente comunică între ele prin intermediul porturilor se poate realiza atât asociere directă între cele două porturi cât şi asociere prin intermediul interfeţelor expuse de porturi. Un exemplu în acest sens este prezentat în figura 6.

FIGURA 5

Diagrama de componente este o diagramă utilă folosită de arhitectul de sistem în fazele iniţiale de proiectare a sistemului pentru a evidenţia principalele componente software ale acestuia şi modul în care acestea colaborează.