Diagramele de implementare surprind
aspecte privind modelele de implementare, fizice, ale sistemelor informatice,
inclusiv structura codului sursă şi arhitectura sistemului in executie. În UML există două tipuri distincte de
diagrame de implementare:
- diagramele de
componente, care descriu dependentele dintre componentele software (cod
sursa, fisiere binare, executabile) şi
- diagramele de
exploatare, care descriu configuratia elementelor de procesare a executiei
unui sistem informatic si componentele, procesele si obiectele ce se executa in
cadrul acestor elemente de procesare.
O diagramă de componente prezintă dependenţele existente între diverse componente software (cod sursă, cod binar, executabile, librarii cu legare dinamica etc) ce compun un sistem informatic. Aceste dependente sunt statice (au loc in etapele de compilare sau link-editare) sau dinamice (au loc in timpul executiei).
O componenta este un modul soft (cod sursa, cod binar, dll, executabil etc) cu o interfata bine definita. Un tip de componentă reprezintă o parte distinctă, realocabilă, a implementării unui sistem. Instanţa unei componente este o unitatea de implementare în execuţie şi poate fi utilizată pentru reprezentarea unităţilor de implementare care au o identitate în momentul execuţiei.
Reprezentarea grafică a componentelor în UML este dată în figura 1. Un tip de componentă are asociat un nume, iar o instanţă a unei componente are asociate (opţional) un nume şi un tip. In general numele unei componente este numele fisierului reprezentat de componenta. Obiectele implementate de o instanţă de componentă se reprezintă grafic în interiorul simbolului instanţei de componentă. În mod analog se reprezintă grafic clasele implementate în componente.
Figura 1. Reprezentarea grafica a componentelor in
UML
Diagrama de componente este un graf de componente între care există relaţii de dependenţă sau de compunere (componente incluse fizic în alte componente).
Dependentele intre componente se reprezinta grafic prin linii întrerupte între o componentă client şi o componentă furnizor de servicii, orientate spre componenta furnizor. Relatia de dependeta semnifica faptul ca clasele incluse in componenta client pot mosteni, instantia sau utiliza clase incluse in componenta furnizor (sau server).
O diagramă care conţine tipuri de componente poate fi utilizată, spre exemplu, pentru reprezentarea de dependenţe statice, cum este dependenţa de compilare între diverse programe (figura 2).

Figura 2. Dependente statice si doua
reprezentari grafice alternative
a componentelor in Rational Rose
De asemenea, pot exista relatii de dependenta intre componente si interfete ale altor componente, relatii care semnifica faptul ca clientul utilizeaza operatii ale componentei server (figura 3).

Figura 3. Dependente dinamice intre componentele unui sistem informatic
de gestiune a biletelor de
calatorie cu avionul
Compunerile se reprezinta grafic prin 'incuibarirea' simbolurilor asociate obiectelor sau claselor in cadrul simbolului unei componente.
Instrumentul Rational Rose introduce o serie de stereotipuri predefinite pentru
componente:
- programe principale (<<Main
Program>>)
- subprograme
(<<SubProgram>>)
- pachete
(<<Package>>)
- librarii cu legare dinamica
(<<DLL>>)
- procese ( <<Task>>
)
-
executabile ( <<EXE>> )
Diagramele de exploatare prezintă configuraţia elementelor de procesare din timpul execuţiei şi componentele, procesele şi obiectele care le conţin. Fiecare model al unui sistem informatic are asociata o singura diagrama de exploatare. Instanţele componentelor soft reprezintă manifestări a unor unităţi de cod în cadrul execuţiei. Componentele care nu există ca entităţi de execuţie nu apar în aceste diagrame, ci doar în diagramele de componente.
O diagramă de exploatare este un graf de noduri conectate prin asocieri de comunicare. Nodurile pot conţine instanţe ale componentelor (componenta există sau se execută pe nodul respectiv). Componentele pot conţine obiecte (acestea sunt localizate în componente). Componentele sunt conectate cu alte componente sau interfeţele acestora prin intermediul unor relaţii de dependenţă (săgeţi întrerupte) ceea ce reprezintă faptul că o componentă foloseşte serviciile altei componente. Pot fi utilizate stereotipuri pentru a preciza în detaliu tipul dependenţei dintre componente.
Un nod este o entitate fizică ce reprezintă o resursă de procesare, având o memorie şi anumite capabilităţi de procesare (dispozitive de calcul, resurse umane, resurse de procesare mecanică).
Un nod este reprezentat grafic prin intemediul unui paralelipiped. Un tip de nod are asociat un nume, iar o instanţă a unui nod are asociate (opţional) un nume de instanţă şi un nume de tip (nume instanţă : nume tip). O asociere între două noduri indică existenţa unei căi de comunicare între noduri. Asocierea poate avea un stereotip care să indice tipul de comunicare (tipul de canal, reţea).
Diagramele de exploatare pot fi utilizate pentru reprezentarea componentelor ce pot aparţine anumitor noduri. Această relaţie se reprezintă grafic prin intermediul unei linii întrerupte între un nod şi o componentă, având stereotipul <<support>> sau prin ‘încuibărirea’ grafică a simbolului componentei în cadrul simbolului ce reprezintă nodul (figura 4).

Figura 4. Diagrama de
exploatare pentru o aplicatie
de gestiune a biletelor de calatorie cu
avionul
Migrarea instanţelor de componente dintr-un nod în altul, sau migrarea obiectelor de la o componentă la alta poate fi implementată grafic utilizând stereotipul <<become>> ataşat relaţiei de dependenţă. În această situaţie instanţa componentei/obiectul vor aparţine unei instanţe a unui nod/unei instanţe de componentă doar o perioadă de timp din ciclul lor de viaţă.
Instrumentul Rational Rose contine un editor de diagrame de exploatare particulare. Aceste diagrame de exploatare contin noduri de doua tipuri: procesoare si dispozitive. Intre aceste noduri se pot trasa relatii de conexiune.
Procesoarele reprezinta componente hard capabile sa execute programe. La nivelul fiecarui procesor pot fi identificate procese si modul de planificare al acestora (preemptiv, non-preemptiv, ciclic, prin intermediul unui algoritm particular sau manual) - figura 5.
In aceste diagrame, procesele reprezintă fire de excutiedistince (ex. programul principal, sau obiecte active).

Figura 5. Reprezentarea
grafica a procesoarelor in Rational Rose
Dispozitivele reprezinta componente hard fara putere de calcul. Numele asociat unui dispozitiv este in general unul generic (ex. imprimanta, modem, terminal etc) - figura 6.
O conexiune reprezinta o legatura hard (in general bidirectionala) intre doua dispozitive sau procesoare.

Figura 6. Diagrama de exploatare
a unui sistem informatic oarecare