Proiectarea Sistemelor Informatice - Curs 4 - PDF
Document Details
![WellRoundedHeliotrope8061](https://quizgecko.com/images/avatars/avatar-10.webp)
Uploaded by WellRoundedHeliotrope8061
Academia de Studii Economice din București
2024
Tags
Summary
These are lecture notes on the Design of Information Systems, Course 4, covering the creation of UML diagrams including class diagrams, object diagrams and the use of UML. This is a course about system development.
Full Transcript
ACADEMIA DE STUDII ECONOMICE BUCUREŞTI FACULTATEA DE CIBERNETICĂ, STATISTICĂ ŞI INFORMATICĂ ECONOMICĂ PROIECTAREA SISTEMELOR INFORMATICE -CURS 4- BUCUREȘTI 2024-2025 Diagrama de Modelarea struc...
ACADEMIA DE STUDII ECONOMICE BUCUREŞTI FACULTATEA DE CIBERNETICĂ, STATISTICĂ ŞI INFORMATICĂ ECONOMICĂ PROIECTAREA SISTEMELOR INFORMATICE -CURS 4- BUCUREȘTI 2024-2025 Diagrama de Modelarea structurii clase statice Sinteză: Analiza orientată obiect a sistemelor informatice În etapa de analiză a sistemului sunt analizate specificaţiile şi cazurile de utilizare, identificându-se cele mai importante concepte cu care lucrează sistemul, împreună cu relaţiile dintre acestea. Se reprezintă grafic, printr-o diagramă, structura domeniului claselor pentru sistemul analizat. 1. Se iniţiază reprezentarea diagramei de clase, care va fi finisată şi în etapele următoare. Diagrama claselor reprezintă grafic structura statică a sistemului, prin includerea claselor identificate, a pachetelor şi a relaţiilor dintre acestea. Un pachet poate conţine clase, interfeţe, componente, noduri, colaborări, cazuri de utilizare, diagrame sau alte pachete. 2. Se iniţiază construirea diagramei de obiecte care modelează instanţele elementelor conţinute în diagramele de clase. Aceste diagrame cuprind un set de obiecte şi relaţiile dintre acestea la un anumit moment. Sinteză: Analiza orientată obiect a sistemelor informatice 3. Pentru a evidenţia stările prin care poate trece un obiect sau un eveniment (mesaje primite, erori, condiţii de realizare) sunt reprezentate diagramele de stare, care reprezintă ciclul de viaţă al obiectelor, subsistemelor şi sistemelor. Stările obiectelor se schimbă la recepţionarea evenimentelor sau semnalelor. 4. Diagrama de activitate este realizază cu scopul de a evidenţia acţiunile şi rezultatul acestor acţiuni şi pentru a scoate în evidenţă fluxurile de lucru. 5. Pentru a evidenţia interacţiunile dintre obiecte se construiesc diagramele de interacţiune: diagramele de secvenţă şi, respectiv, diagramele de comunicare. ▪ Diagramele de secvenţă descriu modul în care interacţionează şi comunică obiectele, prin focalizare pe mesajele care sunt transmise şi recepţionate. ▪ Diagramele de comunicare permit reprezentarea atât a interacţiunilor, cât şi a legăturilor dintre un set de obiecte care colaborează. Se utilizează când este utilă vizualizarea coordonatei spaţiale. Modelarea structurii statice. Diagrama de clase Diagrama de clase este instrumentul principal de analiză şi proiectare a structurii statice a sistemului. În ea se precizează structura claselor sistemului, relaţiile între clase şi structurile de moştenire. În timpul analizei diagrama este construită urmărind obţinerea unei soluţii ideale. La proiectare se utilizează aceeaşi diagramă şi se modifică pentru a fi conformă cu detaliile de implementare. Diagrama de clase Scopul diagramei claselor este de a prezenta natura statică a claselor punând in evidenţă atributele, operaţiile şi asocierile. Majoritatea instrumentelor de modelare orientate obiect generează cod sursă din diagrama claselor. Celelalte diagrame UML furnizează diferite puncte de vedere din care să fie identificate atributele, operaţiile şi asocierile dintre clase. Ele ajută la validarea diagramei claselor, putând servi la clarificarea unei probleme specifice. Definirea unei clase Ansamblu de obiecte care au aceleaşi caracteristici şi contrângeri. Caracteristicile unei clase sunt atributele şi operaţiile. Clasele abstracte nu pot fi instanţiate. Rolul lor este de a permite altor clase să le moştenească, în vederea reutilizării caracteristicilor. Reprezentarea grafică a unei clase se face sub forma unui dreptunghi cu 3 secțiuni. Exemple de clase stereotipe uzuale ▪ entitate () – o clasă pasivă, care nu iniţiază interacţiuni; ▪ control () – iniţiază interacţiuni, conţine o componentă tranzacţională şi este separator între entităţi şi limite; ▪ limită () – este aflată la periferia sistemului, dar în interiorul său. Reprezintă limita de legătură cu actorul sau cu alte sisteme informatice; ▪ enumerare () - este folosită pentru definirea tipurilor de date ale căror valori sunt enumerate. ▪ primitivă () - o formă de clasă care reprezintă tipuri de date predefinite, cum ar fi tipul Boolean. Atribute Fiecare atribut este descris cel puţin prin numele său. Este de preferat ca numele atributului să înceapă cu literă mică. Se pot adăuga şi informaţii adiţionale, iar forma generală a unui atribut este: [vizibilitate][/]nume[:tip][multiplicitate][=valoare implicită] [{proprietate}] [vizibilitate][/]nume[:tip][multiplicitate][=valoare implicită] [{proprietate}] Atribute - Vizibilitate ⮚ Vizibilitatea poate fi: ▪ + public: poate fi văzută şi folosită de oricine ▪ - private: numai clasa însăşi poate avea acces ▪ # protected: au acces clasa şi subclasele acesteia ▪ ~ package: numai clasele din acelaşi pachet pot avea acces Persoana + nume: String + prenume: String - /dn: Data # adresa: String[1..*] { unique, ordered} - cnp: String {readonly} - parola: Sting =“psw1234” - cod: int - nrPersoane: int [vizibilitate][/]nume[:tip][multiplicitate][=valoare implicită] [{proprietate}] Atribute – Atribut derivate și nume ⮚ / simbolizează un atribut derivat ⮚ acesta se calculează pe baza altor valori și este, de obicei, readonly ⮚ numele sunt desemnate prin substantive Persoana Persoana + nume: String + nume: String + prenume: String + prenume: String -/dn: Data -/dn: Data # adresa: String[1..*] { unique, # adresa: String[1..*] { unique, ordered} ordered} - cnp: String {readonly} - cnp: String {readonly} - parola: Sting =“psw1234” - parola: Sting =“psw1234” - cod: int - cod: int - nrPersoane: int - nrPersoane: int [vizibilitate][/]nume[:tip][multiplicitate][=valoare implicită] [{proprietate}] Atribute – Tip de date Tipuri de date Tipuri de date primitive Predefinite: Boolean, Integer, String Definite de utilizator: «primitive» Tipuri de date compozite: «datatype» Enumerări: «enumeration» Float Date TitluAcademic round(): void zi licenta luna masterat an doctorat [vizibilitate][/]nume[:tip][multiplicitate][=valoare implicită] [{proprietate}] Atribute -Multiplicitate UML permite specificare multiplicităţilor pentru atribute, atunci când dorim să definim mai mult de o valoare pentru un atribut. Au următoarea semnificaţie: Multiplicitate Sens 1 Exact 1 (implicit) 2 Exact 2 Persoana 1..4 De la 1 la 4 (inclusiv) 3, 5 3 sau 5 + nume: String 1..* Cel puţin unul sau mai mulţi + prenume: String -/dn: Data * Nelimitat (inclusiv 0) # adresa: String[1..*] { unique, 0..1 0 sau 1 ordered} - cnp: String {readonly} - parola: Sting =“psw1234” - cod: int - nrPersoane: int [vizibilitate][/]nume[:tip][multiplicitate][=valoare implicită] [{proprietate}] Atribute - Proprietate Proprietate indică o proprietate suplimentară care se aplică atributului: {readonly}: atributul poate fi citit, dar nu modificat {ordered}, {unordered}: o mulţime ordonată sau neordonată {unique}, {non-unique}: mulţimea poate conţine sau nu elemente identice Persoana + nume: String + prenume: String -/dn: Data # adresa: String[1..*] {unique, ordered} - cnp: String {readonly} - parola: Sting =“psw1234” - cod: int - nrPersoane: int Operaţii Forma generală a unei operaţii este: [vizibilitate] nume ([direcţie] lista parametri) [:tip returnat] [{proprietate}] Vizibilitatea – aceeaşi ca şi la clase Direcţie - 'in' | 'out' | 'inout' | 'return' Tip returnat – dacă operaţia returnează ceva, adică este o funcţie Un exemplu de proprietate a unei operaţii: {query} - nu are efecte secundare, nu schimbă starea unui obiect sau a altor obiecte, exemplu operaţiile de tip “get”. Exemple de atribute: Exemple de operaţii: - varsta: Integer {varsta>18} + setVarsta (out varsta: Integer) # nume:String[1..2]=“Ioana” + getVarsta(in Id:String): Integer {query} ~ Id:String {unique} - schimbaNume(inout nume:String) / sumaTotala:Real=0 Constrângeri O constrângere este o expresie care restricţionează un anumit element al diagramei de clase. Aceasta poate fi o expresie formală (scrisă în Object Constraint Language - OCL) sau o formulare semi-formală sau informală. Acestea sunt reprezentate între acolade. Pot fi scrise imediat după definirea elementului sau ca un comentariu. O constrângere poate avea şi un nume, astfel: {nume : expresie booleană } Exemple de constrângeri OCL: context Organizatie inv: self. departamente→isUnique (nume) inv: departamante.angajati→isUnique (cod) Relaţii între clase Relaţia de asociere implică stabilirea unei relaţii între clase. Este caracterizată prin: ▪ denumire (opţională) ▪ multiplicităţi – se trec la cele 2 capete ale asocierii; ▪ roluri ale asocierii: se trec la fiecare capăt al asocierii şi conţin o descriere scurtă şi reprezentativă (1 – 2 substantive) ▪ direcţie de navigare Tipuri de asocieri: ⮚unare ⮚binare ⮚n-are Asocierea binară Conectează între ele instanțele a două clase. Navigare Nume asociere Direcție de citire Multiplicitate Profesor * tineCursPentru * +cadruDidactic Student Non-navigare Vizibilitate Rol Asocierea binară - Navigare Navigare: un obiect cunoaște obiectul său partener și poate accesa atributele și operațiile vizibile ale acestuia ▪ Indicată prin intermediul unui arc Non-navigare ▪ Indicată prin cruce Exemple: ▪ A poate accesa atributele și operațiile vizibile ale lui B ▪ B nu poate accesa niciun atribut și operație a lui A Navigare nedefinită ▪ Navigarea implicită este bidirecțională Navigare- Standard UML vs. bune practici Standard UML Bune practici Asocierea – Multiplicitate și rol Multiplicitate: numărul de obiecte alei unei clase care pot fi asociate cu exact un obiect al clasei de la capătul opus al asocierii Rol: descrie modul în care un obiect este implicat într-o relație de asociere Asocierea binară – constrângere xor Constrângere “sau exclusiv” Un obiect al clasei A se poate asocia cu un obiect al clasei B sau cu un obiect al clasei C,dar nu cu amândouă în același timp. Asocierea n-ară ⚫Mai mult de două obiecte partenere sunt implicate într-o relație. ⚫Nu există direcții de navigare ⚫(Student, Examen) 🡪 (Profesor) ⚫Un student susține un examen cu unul sau niciun profesor ⚫(Examen, Profesor) 🡪 (Student) ⚫Un examen cu un profesor poate fi susținut de oricâți studenți ⚫(Student, Profesor) 🡪 (Examen) ⚫Un student poate fi evaluat de un profesor pentru oricâte examene Asociere ternară Asociere modelată ca o clasă ⚫Asignează atribute unei relații între clase și nu clasei în sine. ⚫Necesară atunci când modelăm asocieri mulți-la-mulți Pentru asocierile unu-la-unu sau unu-la-mulți este posibilă, dar nu necesară X Asociere modelată ca o clasă vs. clasă ≠ Un Student se poate înscrie la Un Student se poate înscrie la un anumit program de studiu o un anumit program de studiu de singură dată mai multe ori Asociere modelată ca o clasă – unique/ non-unique ⚫Implicit: fără duplicate ⚫Non-unique: cu duplicate Unui student i se permite să fie evaluat Unui student i se permit mai multe pentru un examen o singură dată. evaluări pentru un examen. Agregarea Este o formă specială de asociere binară Reprezintă o relaţie de tip parte/întreg Este folosită pentru a arăta că o clasă este parte a altei clase Proprietăți ale agregării: Tranzitivă: dacă B este parte din A și C este parte din B, atunci C este și parte din A. Asimetrică: nu este posibil ca A să fie parte din B și B să fie parte din A, în același timp Poate fi de doua tipuri: Agregare partajată (agregare) Agregare compusă (compunere) Agregarea partajată Exprimă o formă slabă de apartenență a părții la întreg Părțile pot exista independent de întreg Multiplicitatea la capătul agregat poate fi > 1 Aceleaşi părţi partajate pot fi incluse simultan în mai multe clase întreg Dacă se şterge clasa întreg, clasele parte vor exista în continuare Sintaxa: se reprezintă sub forma unui romb gol plasat la capătul clasei întreg Exemplu: Disciplina este parte a unui program de studiu Agregarea compusă Exprimă o formă puternică de apartenență a părții la întreg Multiplicitatea la capătul agregat este maxim 1 ✔ Aceleaşi părţi partajate nu pot fi incluse simultan în mai multe clase întreg Dacă se şterge clasa întreg, se vor șterge și clasele parte Sintaxa: se reprezintă sub forma unui romb plin plasat la capătul clasei întreg Example: Proiectorul este parte a unei săli, iar sala este parte a unei clădiri Dacă este ștearsă Proiectorul poate exista în afară Sălii, Clădirea, dar, dacă este conținut în Sală, se va șterge și Sala când aceasta este ștearsă, va fi șters și Proiectorul Relații de asociere Asociere Obiectele ştiu unele de existenţa celorlalte şi pot lucra împreună. Agregare 1. Protejează integritatea configuraţiei. 2. Funcţionează ca un tot unitar. 3. Control prin intermediul unui singur obiect. Compunere Fiecare parte poate fi membră a unui singur obiect agregat. Relaţii între asociere, agregare şi compunere Agregarea și compunerea Care dintre variantele de agregare se aplică? 0..1 4 Masina Roata 1 4 Masina Roata Masina * 4 Roata Masina * 1..2 TipRoata Agregarea și compunerea Care dintre variantele de agregare se aplică? ----Da--- ---------Nu------- ----Da--- 0..1 4 O Roată poate să existe fără Masina Roata o Mașină. O Roată aparține cel mult unei Mașini. 1 4 Masina Roata O Roată nu poate exista fără o Mașină. Masina * 4 Roata O Roată poate aparține mai multor Mașini. O Mașină are una sau două Masina * 1..2 TipRoata Tipuri de Roți. Mai multe Mașini pot avea același Tip de Roată. Generalizarea Caracteristicile (atributele și operațiile), asocierile și agregările care sunt specifice pentru o clasă generală (superclasă) sunt transferate subclaselor sale. Se mai numeşte informal şi relaţie de genul “este un tip de”. Se reprezintă sub forma unui triunghi gol plasat la capătul superclasei. Clasele abstracte sunt intens utilizate în contextul generalizării. Este permisă moştenirea multiplă. Subclasele își pot defini propriile caracterstici, atribute și agregări. Relaţia de dependență Relaţia de dependenţă este folosită pentru a arăta o gamă largă de dependenţe între elementele unui model. În etapa de analiză, tipul de dependenţă poate să nu fie specificat. În proiectare, dependenţele vor fi personalizate cu stereotipuri sau vor fi înlocuite cu conectori specifici tehnologiei folosite. Se reprezintă sub forma unei linii punctate de la clasa dependentă “client,” pană la clasa “furnizor”, cu o săgeată la capătul clasei “furnizor”. În diagramele de clase, cele mai importante dependenţe sunt relaţiile de utilizare şi de abstractizare. Relaţia de dependență Dependenţa de utilizare (, , etc.) este o relaţie în care clasa client are nevoie de altă clasă sau set de clase (furnizor) pentru a funcţiona. Dependenţa de abstractizare pune în relaţie două elemente sau seturi de elemente (numite client şi furnizor), reprezentând acelaţi concept, dar la niveluri diferite de abstractizare sau din puncte de vedere diferite. Relaţia de realizare este o formă de abstractizare, în care un element de modelare (furnizorul) reprezintă specificaţia, iar celălat element (clientul) reprezintă implementarea specificaţiei. Se reprezintă sub forma unei linii punctate cu o săgeată la capătul clasei furnizor. În modelarea structurată 1. Pentru identificarea entităţilor din domeniul analizat, în analiza structurată se folosea diagrama entitate asociere 2. Acesta nu este inclusă în UML, dar este folosită pe larg de analişti în proiectarea bazelor de date şi de administratorii de baze de date în implementarea bazei de date 3. Nu poate fi folosită pentru a reprezenta relaţii de generalizare sau relaţii parte-intreg Tehnici de identificare a claselor a) Tehnica brainstorming – se utilizează o lista de control cu toate tipurile de entităţi care apar în mod frecvent şi se realizează şedinţe de brainstorming pentru a identifica clasele domeniului pentru fiecare dintre tipurile respective b) Tehnica substantivelor – se identifică toate substantivele care apar în descrierea sistemului şi se hotărăşte dacă substantivul este o clasă a domeniului, un atribut sau un element neimportant a. Tehnica de brainstorming 1. Avem elemente de genul… Entitati Unitati Tangibile Roluri organizatori Dispozitive Locatii Evenimente ce Avion Angajat Divizie Senzor Depozit Zbor Carte Doctor Departament Controler Fabrica Logon Autovehicul Pacient Birou Imprimanta Magazin Logoff Documet Client Sectie Timer Sucursal Comanda Formular Utilizator Grup de lucru Scaner a Contract Administr Sortator Desktop Achizitie ator de Plata sistem b. Tehnica substantivelor 1. Se identifică toate substantivele pe baza cazurilor de utilizare, actorilor şi altor informaţii despre sistem 2. Se preiau informaţiile necesare din sistemele, procedurile, formularele şi rapoartele existente 3. Se rafinează lista de substantive ▪ Aparţine ariei de cuprindere a sistemului analizat? ▪ Este nevoie să pastram mai mult de un astfel de element? ▪ Este un sinonim pentru un element deja identificat? ▪ Este un atribut al altui element inregistrat? ▪ Este doar un output al sistemului obţinut pe baza unui alt element deja identificat? ▪ Este doar un input care rezultă din inregistrarea altui element identificat? 4. Se crează o listă principală de substantive şi se notează care trebuie inclus/exclus/ discutat 5. Se prezintă lista utilizatorilor, beneficiarilor, membrilor echipei spre validare Diagama claselor Tehnica fişelor CRC Este utilizată uneori ca extensie a UML-ului pentru o analiză orientată pe responsabilităţi. Definiţiile claselor sunt rafinate pe baza responsabilităţilor lor şi a altor clase cu care acestea colaborează pentru a îndeplini aceste responsabilităţi. Pentru fiecare clasă se întocmeşte o fişă pe care se evidenţiază responsabilităţile clasei şi care sunt clasele cu care ea colaborează pentru a îndeplini aceste responsabilităţi. Aceste informaţii se transpun direct într-o diagramă a claselor, responsabilităţile corespund metodelor, iar colaborările corespund asocierilor dintre clase. Tehnica fişelor CRC Notații - 1 Nume Notație Descriere Descrie structura și Clasă comportamentul unui set de obiecte Clasă abstractă Clasă care nu poate fi instanțiată Relații între clase: navigare nespecificată, Asociere navigare în ambele direcții, non-navigare într-o direcție 43 Notații - 2 Nume Notație Descriere Asociere n-ară Relație între n clase (aici trei clase) Asociere Descriere mai detaliată a unei modelată ca o asocieri clasă Un obiect A is este într-o relație cu Relație xor un obiect B sau cu un obiect C, dar nu cu amândouă simultan 44 Notații - 3 Nume Notație Descriere Agregare Relație de tip parte/întreg (A este partajată parte din B) Agregare Relație puternică de tip compusă parte/întreg (A este parte din B) Relație de moștenire (A Generalizare moștenește de la B) 45 Diagrama de Modelarea obiecte statică Diagrama de obiecte 1. Constă din obiecte şi legăturile dintre acestea. 2. Are rolul de a valida diagrama de clase. 3. O legătură reprezintă o relaţie între două obiecte. Diagrama de obiecte Diagrama de clase Modelează fapte despre anumite entităţi. Modelează reguli pentru tipuri de entităţi. Reprezintă obiecte reale. Reprezintă abstractizări ale conceptelor. Leagă între ele obiecte. Asociază entităţi. ▪ Un obiect este denumit folosind numele acestuia, semnul “:” urmat de numele clasei căreia îi aparţine: nume obiect : nume clasa. ▪ Pot exista şi obiecte anonime, denumite doar prin numele clasei. Notaţiile diagramei de clase şi obiecte - comparaţie Diagrama de clase Diagrama de obiecte Clasa are trei compartimente: nume, atribute şi Obiectul are numai două compatrimente: operaţii. nume şi atribute. Numele clasei este specificat singur în primul Formatul numelui unui obiect include şi compartiment. numele clasei, toată expresia fiind subliniată. Aceste notaţii vor fi întâlnite şi în alte diagrame care reprezintă obiecte. Al doilea compartiment descrie proprietăţi sub Al doilea compartiment defineşte valori pentru forma atributelor. fiecare atribut, pentru testarea modelului. Operaţiile apar în descrierea clasei. Operaţiile nu sunt incluse în obiecte, deoarece ele sunt identice pentru fiecare obiect al clasei. Clasele sunt conectate prin asocieri, având un Obiectele sunt conectate printr-o legătură, nume, multiplicitate, constrângeri şi roluri. care poate avea un nume, roluri, dar nu şi Clasele sunt o abstractizare a obiectelor, deci multiplicităţi. Obiectele reprezintă entităţi este necesar să specificăm câte clase participă singulare, toate legăturile sunt unu-la-unu, iar într-o asociere. multiplicităţile sunt irelevante. Diagrama de obiecte în Visual Paradigm 1. Se defineşte diagrama de clase în care clasele au specificate atribute. 1. Se defineşte un obiect în diagrama de obiecte (Instance Specification). 2. Se selectează clasa căreia îi aparţine obiectul: Click dreapta pe obiect -> Select Classifier-> se bifează şi selectează clasa corespunzătoare 3. Opţional, se dă un nume obiectului. 4. Se definesc valorile pentru atribute: Click dreapta pe obiect -> Slots, Define Slots (pentru atributele cărora vrem să le dăm valori) ->Edit Values-> Add -> Text (se introduce valoarea dorită). 5. Se creează legături (Link) între obiecte. Diagrama de obiecte în Visual Paradigm - exemplu Cursul 5... Diagrama de Activitate 51