logo

Diagrame de secvență | Limbajul de modelare unificat (UML)

Limbajul de modelare unificat (UML) este un limbaj de modelare în domeniul ingineriei software care își propune să stabilească modalități standard de vizualizare a designului unui sistem. UML ghidează crearea mai multor tipuri de diagrame, cum ar fi diagramele de interacțiune, structură și comportament. A Diagrama secvenței este cel mai des folosit interacţiune diagramă.

Secvență-Diagrame-2



Diagrama de interacțiune

O diagramă de interacțiune este utilizată pentru a arăta comportament interactiv a unui sistem. Deoarece vizualizarea interacțiunilor dintr-un sistem poate fi dificilă, folosim diferite tipuri de diagrame de interacțiune pentru a surprinde diverse caracteristici și aspecte ale interacțiunii într-un sistem.

  • O diagramă de secvență descrie pur și simplu interacțiunea dintre obiecte într-o ordine secvențială, adică ordinea în care apar aceste interacțiuni.
  • De asemenea, putem folosi termenii diagrame de evenimente sau scenarii de evenimente pentru a ne referi la o diagramă de secvență.
  • Diagramele de secvență descriu cum și în ce ordine funcționează obiectele dintr-un sistem.
  • Aceste diagrame sunt utilizate pe scară largă de oamenii de afaceri și dezvoltatorii de software pentru a documenta și înțelege cerințele pentru sistemele noi și existente.

Subiecte importante pentru diagramele de secvență

1. Notarea diagramei secvențe

1.1. Actori

Un actor într-o diagramă UML reprezintă un tip de rol în care interacționează cu sistemul și obiectele acestuia. Este important de reținut aici că un actor se află întotdeauna în afara domeniului de aplicare al sistemului pe care ne propunem să îl modelăm folosind diagrama UML.



Actor-11

Folosim actori pentru a descrie diferite roluri, inclusiv utilizatori umani și alți subiecți externi. Reprezentăm un actor într-o diagramă UML folosind o notație stick person. Putem avea mai mulți actori într-o diagramă de secvență.

De exemplu:



Aici, utilizatorul din sistemul de rezervare a locurilor este prezentat ca un actor acolo unde acesta există în afara sistemului și nu face parte din sistem.

Utilizatorul care interacționează cu sistemul de rezervare a locurilor

1.2. Liniile de salvare

O linie de salvare este un element numit care ilustrează un participant individual într-o diagramă de secvență. Deci, practic, fiecare instanță dintr-o diagramă de secvență este reprezentată de o linie de salvare. Elementele Lifeline sunt situate în partea de sus într-o diagramă de secvență. Standardul în UML pentru denumirea unei linii de salvare urmează următorul format:

Nume instanță: Nume clasă

Secvență-Diagrame

ce este un personaj special

Afișăm o linie de salvare într-un dreptunghi numit cap cu numele și tipul ei. Capul este situat deasupra unei linii întrerupte verticale (denumită tulpină), așa cum se arată mai sus.

  • Dacă dorim să modelăm o instanță fără nume, vom urma același model, cu excepția faptului că acum partea din numele liniei de viață este lăsată necompletată.
  • Diferența dintre un colac de salvare și un actor
    • O linie de salvare înfățișează întotdeauna un obiect intern al sistemului, în timp ce actorii sunt folosiți pentru a descrie obiecte externe sistemului.

Următorul este un exemplu de diagramă de secvență:

Secvență-Diagrama-223

1.3. Mesaje

Comunicarea dintre obiecte este descrisă folosind mesaje. Mesajele apar într-o ordine secvențială pe linia de salvare.

  • Reprezentăm mesajele folosind săgeți.
  • Liniile de viață și mesajele formează nucleul unei diagrame secvențe.

Diferite-Tipuri-de-Mesaje

Mesajele pot fi clasificate în linii mari în următoarele categorii:

Mesaje sincrone

Un mesaj sincron așteaptă un răspuns înainte ca interacțiunea să poată continua. Expeditorul așteaptă până când destinatarul a finalizat procesarea mesajului. Apelantul continuă numai atunci când știe că destinatarul a procesat mesajul anterior, adică primește un mesaj de răspuns.

  • Un număr mare de apeluri în programarea orientată pe obiecte sunt sincrone.
  • Folosim a cap de săgeată solid pentru a reprezenta un mesaj sincron.

Synchronus-Message-22

Mesaje asincrone

Un mesaj asincron nu așteaptă un răspuns de la destinatar. Interacțiunea avansează, indiferent dacă receptorul procesează sau nu mesajul anterior. Folosim a cap de săgeată căptușit pentru a reprezenta un mesaj asincron.

Asincron-Mesaj

1.4. Creați mesaj

Folosim un mesaj Creare pentru a instanția un nou obiect în diagrama de secvență. Există situații când un anumit apel de mesaj necesită crearea unui obiect. Este reprezentat cu o săgeată punctată și creați un cuvânt etichetat pe el pentru a specifica că este simbolul de creare a mesajului.

De exemplu:

cadru de colecție java

Crearea unei noi comenzi pe un site de comerț electronic ar necesita crearea unui nou obiect din clasa Order.

Creare-Mesaj

1.5. Sterge mesajul

Folosim un mesaj de ștergere pentru a șterge un obiect. Când unui obiect i se dealoca memorie sau este distrus în sistem, folosim simbolul Ștergere mesaj. Distruge apariția obiectului în sistem. Este reprezentat de o săgeată care se termină cu x.

De exemplu:

În scenariul de mai jos, când comanda este primită de utilizator, obiectul clasei de comandă poate fi distrus.

Șterge-Imagine

1.6. Mesaj personal

Anumite scenarii pot apărea în care obiectul trebuie să își trimită un mesaj. Astfel de mesaje sunt numite Self Messages și sunt reprezentate cu a Săgeată în formă de U .

imaginea de sine-1

Alt exemplu:

Luați în considerare un scenariu în care dispozitivul dorește să-și acceseze camera web. Un astfel de scenariu este reprezentat folosind un mesaj de sine.

Imagine de sine-2

1.7. Mesaj de răspuns

Mesajele de răspuns sunt folosite pentru a afișa mesajul trimis de la destinatar către expeditor. Reprezentăm un mesaj de răspuns/răspuns folosind un cap săgeată deschis cu o linie punctată . Interacțiunea avansează numai atunci când un mesaj de răspuns este trimis de către destinatar.

Răspuns-Mesaj

De exemplu:

Luați în considerare scenariul în care dispozitivul solicită o fotografie de la utilizator. Aici mesajul care arată fotografia trimisă este un mesaj de răspuns.

Răspuns-Mesaj-Exemplu

1.8. Mesaj găsit

Un mesaj găsit este folosit pentru a reprezenta un scenariu în care o sursă necunoscută trimite mesajul. Este reprezentat cu ajutorul unui săgeată îndreptată spre o linie de salvare dintr-un punct final.

De exemplu:

Luați în considerare scenariul unei defecțiuni hardware.

găsit-mesaj

Poate fi din mai multe motive și nu suntem siguri cu privire la ce a cauzat defecțiunea hardware.

găsit-mesaj-exemplu

1.9. Mesaj pierdut

Un mesaj pierdut este folosit pentru a reprezenta un scenariu în care destinatarul nu este cunoscut de sistem. Este reprezentat folosind o săgeată îndreptată către un punct final dintr-o linie de salvare.

De exemplu:

Luați în considerare un scenariu în care este generată o avertizare.

imagine pierdută

Avertismentul poate fi generat pentru utilizator sau alt software/obiect cu care interacționează linia de viață. Deoarece destinația nu este cunoscută dinainte, folosim simbolul Mesaj pierdut.

Imagine pierdută-Exemplu

1.10. Gardienii

Pentru a modela condițiile folosim gărzi în UML. Sunt folosite atunci când trebuie să restricționăm fluxul de mesaje sub pretextul îndeplinirii unei condiții. Gardienii joacă un rol important în a permite dezvoltatorilor de software să cunoască constrângerile atașate unui sistem sau unui anumit proces.

De exemplu:

Pentru a putea retrage numerar, a avea un sold mai mare de zero este o condiție care trebuie îndeplinită după cum se arată mai jos.

Gardienii

Exemplu-secventa-diagrama-2

bucle java

Diagrama de secvență de mai sus prezintă diagrama de secvență pentru un player muzical bazat pe emoții:

  1. În primul rând, aplicația este deschisă de utilizator.
  2. Dispozitivul primește apoi acces la camera web.
  3. Camera web captează imaginea utilizatorului.
  4. Dispozitivul folosește algoritmi pentru a detecta fața și pentru a prezice starea de spirit.
  5. Apoi solicită baza de date pentru dicționarul de dispoziții posibile.
  6. Starea de spirit este preluată din baza de date.
  7. Starea de spirit este afișată utilizatorului.
  8. Muzica este solicitată din baza de date.
  9. Lista de redare este generată și în cele din urmă afișată utilizatorului.

2. Cum se creează diagrame de secvență?

Crearea unei diagrame de secvență implică mai mulți pași și, de obicei, se face în faza de proiectare a dezvoltării software pentru a ilustra modul în care diferitele componente sau obiecte interacționează în timp. Iată un ghid pas cu pas despre cum să creați diagrame de secvență:

  1. Identificați scenariul:
    • Înțelegeți scenariul specific sau cazul de utilizare pe care doriți să îl reprezentați în diagrama de secvență. Aceasta ar putea fi o interacțiune specifică între obiecte sau fluxul de mesaje într-un anumit proces.
  2. Listați participanții:
    • Identificați participanții (obiecte sau actori) implicați în scenariu. Participanții pot fi utilizatori, sisteme sau entități externe.
  3. Definiți liniile de viață:
    • Desenați o linie verticală întreruptă pentru fiecare participant, reprezentând linia de viață a fiecărui obiect în timp. Linia de salvare reprezintă existența unui obiect în timpul interacțiunii.
  4. Aranjați linii de salvare:
    • Poziționați liniile de salvare orizontal în ordinea implicării lor în interacțiune. Acest lucru ajută la vizualizarea fluxului de mesaje între participanți.
  5. Adăugați bare de activare:
    • Pentru fiecare mesaj, desenați o bară de activare pe linia de salvare a participantului care trimite. Bara de activare reprezintă durata de timp în care participantul procesează în mod activ mesajul.
  6. Desenați mesaje:
    • Utilizați săgețile pentru a reprezenta mesaje între participanți. Mesajele curg orizontal între liniile de viață, indicând comunicarea dintre obiecte. Diferite tipuri de mesaje includ mesaje sincrone (săgeată continuă), asincrone (săgeată întreruptă) și mesaje proprii.
  7. Includeți mesajele de retur:
    • Dacă un participant trimite un mesaj de răspuns, trageți o săgeată întreruptă care se întoarce la expeditorul inițial pentru a reprezenta mesajul de răspuns.
  8. Indicați timpul și ordinea:
    • Utilizați numere pentru a indica ordinea mesajelor în succesiune. De asemenea, puteți utiliza linii întrerupte verticale pentru a reprezenta apariția unor evenimente sau trecerea timpului.
  9. Includeți condiții și bucle:
    • Utilizați fragmente combinate pentru a reprezenta condiții (cum ar fi instrucțiunile if) și bucle în interacțiune. Acest lucru adaugă complexitate diagramei secvențe și ajută la detalierea fluxului de control.
  10. Luați în considerare execuția paralelă:
    • Dacă au loc activități paralele, reprezentați-le desenând linii verticale paralele întrerupte și plasând mesajele în consecință.
  11. Examinați și rafinați:
    • Examinați diagrama de secvență pentru claritate și corectitudine. Asigurați-vă că reprezintă cu exactitate interacțiunea dorită. Rafinați după cum este necesar.
  12. Adăugați adnotări și comentarii:
    • Includeți orice informații suplimentare, adnotări sau comentarii care oferă context sau clarificări pentru elementele din diagramă.
  13. Ipoteze și constrângeri ale documentului:
    • Dacă există presupuneri sau constrângeri legate de interacțiune, documentați-le alături de diagramă.
  14. Instrumente:
    • Utilizați un instrument de modelare UML sau un software de diagramă pentru a crea o diagramă de secvență îngrijită și cu aspect profesional. Aceste instrumente oferă adesea funcții pentru editare, colaborare și documentare ușoară.

3. Cazuri de utilizare ale diagramelor secvențe

  • Vizualizarea comportamentului sistemului:
    • Diagramele de secvență sunt folosite pentru a ilustra comportamentul dinamic al unui sistem, arătând interacțiunile dintre diverse componente, obiecte sau actori de-a lungul timpului.
    • Ele oferă o reprezentare clară și vizuală a fluxului de mesaje și evenimente într-un scenariu specific.
  • Design și arhitectură software:
    • În timpul fazei de proiectare a dezvoltării software, diagramele de secvență ajută dezvoltatorii și arhitecții să planifice și să înțeleagă modul în care diferitele componente și obiecte vor interacționa pentru a realiza funcționalități specifice.
    • Ele oferă un model pentru comportamentul sistemului.
  • Comunicare și colaborare:
    • Diagramele secvențe servesc ca instrument de comunicare între părțile interesate, inclusiv dezvoltatori, designeri, manageri de proiect și clienți.
    • Ele ajută la transmiterea interacțiunilor complexe într-un format vizual ușor de înțeles, favorizând colaborarea și înțelegerea comună.
  • Clarificarea cerințelor:
    • La rafinarea cerințelor de sistem, diagramele de secvență pot fi utilizate pentru a clarifica și specifica interacțiunile așteptate între componentele sistemului sau între sistem și entitățile externe.
    • Ele ajută la asigurarea unei înțelegeri comune a comportamentului sistemului în rândul tuturor părților interesate.
  • Depanare și depanare:
    • Dezvoltatorii folosesc diagramele de secvență ca instrument de depanare pentru a identifica și analiza problemele legate de ordinea și sincronizarea mesajelor în timpul interacțiunilor cu sistemul.
    • Oferă o reprezentare vizuală a fluxului de control și ajută la localizarea și rezolvarea problemelor.

4. Provocări ale utilizării diagramelor secvențe

  • Complexitate și dimensiune:
    • Pe măsură ce sistemele cresc în complexitate, diagramele secvențe pot deveni mari și complicate. Gestionarea dimensiunii diagramei în timp ce reprezentând cu exactitate interacțiunile poate fi o provocare, iar diagramele prea complexe pot deveni dificil de înțeles.
  • Nivel de abstracție:
    • Găsirea echilibrului corect în ceea ce privește abstractizarea poate fi o provocare. Diagramele de secvență trebuie să fie suficient de detaliate pentru a transmite informațiile necesare, dar prea multe detalii pot copleși cititorii. Este important să vă concentrați pe cele mai critice interacțiuni fără a vă bloca în detalii.
  • Natura dinamică:
    • Diagramele de secvență reprezintă aspecte dinamice ale unui sistem și, ca urmare, se pot schimba frecvent în timpul procesului de dezvoltare. Menținerea la zi a diagramelor de secvență cu sistemul în evoluție poate fi o provocare, mai ales în mediile de dezvoltare în schimbare rapidă sau agile.
  • Ambiguitate în mesaje:
    • Uneori, poate fi dificil să definiți natura exactă a mesajelor între obiecte. Ambiguitatea în conținutul sau înțelesul mesajului poate duce la neînțelegeri în rândul părților interesate și poate afecta acuratețea diagramei de secvență.
  • Concurență și paralelism:
    • Reprezentarea proceselor concurente și paralele poate fi complexă. În timp ce diagramele de secvență au mecanisme pentru a indica execuția paralelă, vizualizarea interacțiunilor multiple care au loc simultan poate fi o provocare și poate necesita elemente schematice suplimentare.
  • Constrângeri în timp real:
    • Reprezentarea constrângerilor în timp real și a cerințelor precise de sincronizare poate fi o provocare. În timp ce diagramele de secvență oferă o reprezentare secvențială, capturarea și comunicarea cu precizie a aspectelor în timp real ar putea necesita documentație suplimentară sau diagrame complementare.