ISCurs 3
ISCurs 3
Curs 3
Introducere în UML
1. Apariţie şi evoluţie
2
Inginerie Software
2.1 View-uri
Modelarea unui sistem poate fi o muncă foarte dificilă. Ideal ar fi ca pentru descrierea
sistemului să se folosească un singur graf, însă de cele mai multe ori acesta nu poate să surprindă
toate informaţiile necesare descrierii sistemului. Un sistem poate fi descris luând în considerare
diferite aspecte:
Funcţional: este descrisă structura statică şi comportamentul dinamic al sistemului;
Non-funcţional: necesarul de timp pentru dezvoltarea sistemului;
Din punct de vedere organizatoric: organizarea lucrului, maparea modulelor de cod.
Aşadar pentru descrierea unui sistem sunt necesare un număr de view-uri, fiecare
reprezentând o proiecţie a descrierii întregului sistem şi care reflectă un anumuit aspect al său.
Fiecare view este descris folosind un număr de diagrame ce conţin informaţii relative la
un anumit aspect particular al sistemului. Aceste view-uri se acoperă unele pe altele, deci este
posibil ca o anumită diagramă să facă parte din mai multe view-uri.
View-ul View-ul
Componentelor Logic
nt View-ul
Cazurilor
de Utilizare
View-ul View-ul
de de concurenţă
desfaşurare
Acest view surprinde funcţionalitatea sistemului, aşa cum este ea percepută de actorii
externi care interacţionează cu sistemul - de exemplu utilizatorii acestuia sau alte sisteme. În
componenţa lui intră diagrame ale cazurilor de utilizare şi ocazional, diagrame de activitate.
Cei interesaţi de acest view sunt deopotrivă clienţii, designerii, dezvoltatorii dar şi cei
care vor realiza testarea şi validarea sistemului.
3
Inginerie Software
2.2 Diagrame
4
Inginerie Software
Semnarea unei
poliţe de asigurare
Client
Situaţia Societate
vânzărilor de asigurări
Situaţia
clienţilor
Poliţa de
asigurare
0..1
1
1 are 0..* Contract de
Companie
asigurare
de asigurări aparţine
0..*
refera are
1..*
Persoana
5
Inginerie Software
şi diagrama claselor cu două mici diferenţe: obiectele sunt scrise subliniat şi sunt vizualizate
toate instanţele relaţiei (vezi figura 4).
Deşi nu este la fel de importantă ca diagrama claselor, diagrama obiectelor este folosită
pentru exemplificarea unei diagrame a claselor de complexitate mare, permiţând vizualizari ale
instanţelor actuale şi a relaţiilor exact aşa cum sunt ele realizate. Mai poate fi folosită ca o parte a
diagramelor de colaborare, în care sunt vizualizate colaborările dinamice existente în cadrul unei
mulţimi de obiecte.
Calculator
Angajat
foloseşte
nume:String Diagrama claselor
nume:String
varsta:Integer
0..1 1..* memorie:Integer
PCServici : Calculator
nume=”Dell 466”
Popescu : Angajat memorie=64
nume=”Popescu Ion” Diagrama obiectelor
varsta=30
PCAcasa : Calculator
nume=”Compaq Pentium
MMX”
memorie=32
soseşte la parter
urcă (etaj)
Mută la
parter soseşte
Staţionează
Mută jos timp=0
soseţte
do/creşte timp
do/ schimba nivelul
Time-out
6
Inginerie Software
Nu vom construi diagrame de stare pentru toate clasele din sistem ci numai pentru acelea
care au un număr de stări bine definit iar comportamentul clasei este afectat şi modificat de
acestea.
[imprimanta ocupată]
Stochează (fişier)
1: Print (fisier)
[imprimanta liberă]
1.1: Print(fişier)
:ServerImprimantă :Imprimantă
7
Inginerie Software
Cum decidem ce tip de diagramă să folosim? Dacă cel mai important aspect este timpul
sau secvenţa de mesaje vom folosi diagrama de secvenţă, dar dacă trebuie scos în evidenţă
contextul, vom apela la o diagramă de colaborare.
Afişeaza mesajul
[spaţiu liber pe disc] “Printing”
pe ecran
Window
Hander
([Link])
Window Graphic
Hander Lib
([Link]) ([Link]
Command
Hander Command
([Link]
Hander Program
([Link] Client
([Link])
Main Main
Class Class
([Link]) ([Link])
8
Inginerie Software
Client A: <<TCP/IP>>
Compaq
Pro PC
<<Net 8>>
Application Database
<<TCP/IP>> Server: Server:
Silicon Oracle
Graphics O2
Client B:
Compaq
Pro PC
9
Inginerie Software
Modelarea cu UML
1. Elemente de modelare
Un element poate fi regăsit în mai multe tipuri de diagrame, şi pentru fiecare context
există propriile reguli. În figura 11 sunt prezentate câteva exemple de elemente de modelare
împreună cu modul lor de reprezentare.
Clasă Obiect
Stare
Atribute Atribute
Operaţii Operaţii
Caz de Interfaţă
utilizare
Nod
2. Modelarea cu UML
A modela cu UML înseamnă a construi mai multe modele pentru diferitele faze ale
dezvoltării cât şi pentru diverse scopuri.
În faza de analiză, scopul modelării se referă la a surprindere necesităţile sistemului şi să
modeleze clasele de bază din “lumea reală” precum şi colaborările existente între acestea.
În faza de design, este detaliat modelul din faza de analiză şi este formulată o soluţie
tehnică luându-se în considerare caracteristicile mediului în care acesta va fi reprezentat.
10
Inginerie Software
În faza de implementare, modelul este transpus în cod sursă şi apoi este compilat într-un
program, pentru ca în final, în modelul de desfăşurare, să se utilizeze o descriere care să explice
modalitatea prin care sistemul va fi adaptat arhitecturii fizice concrete.
Model
Sistem
Modelul de Modelul Modelul de Modelul de
Analiză Design Implementare Desfăşurare
Toate modelele construite de-a lungul procesului de modelare vor fi salvate, fiind uşor
astfel să se revină în orice moment asupra unuia dintre ele, în vederea extinderii analizei
modelului iniţial prin rafinări succesive, sau să se introducă, treptat, modificări în modelele de
design sau de implementare.
UML este o un limbaj independent de fază, ceea ce înseamnă că acelaşi limbaj generic şi
aceleaşi diagrame pot fi folosite pentru modelarea lucrurilor distincte în faze de modelare
diferite. Limbajul de modelare furnizează numai posibilitatea de a crea modele într-o manieră
expresivă şi consistentă.
În mod normal, în momentul în care construim un model sau o simplă diagramă vom
începe prin a colecta informaţii de la clienţi sau de la potenţialii utilizatori ai sistemului. Această
fază continuă până în momentul în care participanţii nu mai au de făcut adaugări sau sugestii
modelului de bază. Modelul este transpus apoi în diagrame conform regulilor impuse de limbajul
de modelare, după care urmează un proces iterativ şi incremental, pe parcursul căruia sunt
adăugate noi detalii soluţiei şi este realizată o documentare a modelului. În final, modelul este
verificat, evaluat şi sunt corectate eventualele deficienţe înregistrate în funcţionalitatea lui, de
exemplu lipsuri în funcţionalitate, performanţă scăzută, preţ ridicat de dezvoltare etc., toate
acestea presupunând reluarea paşilor ce cauzează aceste carenţe şi găsirea unor soluţii
satisfăcătoare.
11
Inginerie Software
Un model use case (caz de utilizare) este descris folosind una sau mai multe diagrame use
case. Acestea pot să conţină următoarele elemente de modelare: actori, cazuri de utilizare şi
diferite relaţii între aceste elemente (generalizare, asociere, dependenţă).
Actorul
Un actor poate fi orice sau oricine interacţionează cu sistemul, adică trimite sau
recepţionează mesaje de la sistem sau schimbă informaţii cu acesta. Actorul joacă un rol în
cadrul sistemului, nefiind un utilizator individual al acestuia - prin urmare reprezintă un tip (o
clasă) nu o instanţă. În descrierea “Studentul Popescu vrea să împrumute o carte de la
bibliotecă”, rolul persoanei este de abonat al bibliotecii. Orice mesaj trimis de către actor
sistemului reprezintă un caz de utilizare, câteodată numit şi stimul.
Un actor poate fi:
Actor primar, dacă foloseşte funcţionalitatea de bază a sistemului - de exemplu într-un
sistem de gestiune a unei biblioteci, bibliotecarul.
12
Inginerie Software
Identificarea actorilor
Bibliotecar
13
Inginerie Software
limbaj de programare. Un caz de utilizare nu este complet până când nu se obţine valoarea
finală, chiar dacă pentru realizarea acestui lucru sunt necesare câteva dialoguri.
Un caz de utilizare este o clasă şi nu o instanţă a acesteia. Clasa descrie funcţionalitatea ca
un întreg, incluzând alternative posibile, erori şi excepţii ce pot să apară pe parcursul execuţiei.
O instanţiere a unui caz de utilizare se numeşte scenariu şi reprezintă o utilizare actuală a
sistemului, de exemplu “Studentul Popescu cere bibliotecarului să îi facă o rezervare pentru
cartea de programare care în momentul respectiv nu este disponibilă”.
Cazurile de utilizare sunt conectate cu actorii prin asocieri, numite şi asocieri de
comunicare. În mod normal acestea sunt relaţii unu-la-unu nedirecţionate ceea ce înseamnă că o
instanţă actor comunică cu o instanţă a cazului de utilizare şi că această comunicare se realizează
în ambele sensuri.
Nume sistem
Use Case
A
Nume Actor
Asociere de
comunicare Use Case
B
Nume
Use Case
Use Case
C
14
Inginerie Software
Relaţia de generalizare a unui actor înseamnă că un actor poate moșteni rolul altui actor.
Descendentul moștenește toate cazurile de utilizare ale strămoșului său. Descendentul are unul
sau mai multe cazuri de utilizare specifice acestui rol.
În exemplul următor diagrama de cazuri de utilizare anterioară este extinsă pentru a
conţine relaţia de generalizare a unui actor.
15
Inginerie Software
<<include>> <<include>>
Multe persoane confundă relația de extindere pentru cazurile de utilizare. După cum îi
spune şi numele, relaţia extinde cazul de utilizare de bază și adaugă mai multe funcționalități
sistemului.
Cazul de utilizare extins depinde de cazul de utilizare de bază. În diagrama din figură,
cazul de utilizare „Calculate bonus” nu are sens fără cazul de utilizare „Deposit funds”.
Cazul de utilizare extins este, de obicei, opțional și poate fi declanșat în mod condiționat.
În diagramă, puteți vedea că cazul de utilizare extins este declanșat numai pentru
depozitele peste 10.000 de unităţi sau când vârsta depășește 55 de ani.
16
Inginerie Software
Cazul de utilizare de bază trebuie să aibă sens atunci când este singur. Aceasta înseamnă
că ar trebui să fie independent și nu trebuie să se bazeze pe comportamentul cazului de
utilizare extins.
Deși extinderea unui caz de utilizare este opțională, de cele mai multe ori nu este obligatoriu.
Un caz de utilizare extins poate avea și un comportament non-opțional. Acest lucru poate fi
întâlnit mai ales atunci când se modelează comportamente complexe.
17
Inginerie Software
18