Archyno
UMLDiagramy správania

UML sekvenčné diagramy

Diagram správania, ktorý ľudia naozaj kreslia. Účastníci navrchu, čas plynúci nadol a každá správa v poradí, v akom nastane - vrátane vetiev, cyklov a volaní, ktoré zlyhajú.

15 min čítaniaUML 2.5.18 z 35

Krátka odpoveď

  • Sekvenčný diagram odpovedá na to, čo sa deje, v akom poradí a medzi kým. Čas plynie nadol a zvislá vzdialenosť nehovorí nič o trvaní.
  • Plná hlava šípky znamená, že volajúci čaká; otvorená, že pokračuje ďalej. Práve tento jeden rozdiel je to najužitočnejšie, čo notácia o distribuovanom systéme povie.
  • Podmienky a opakovanie sú kombinované fragmenty - alt, opt, loop, par, ref - každý ako rámček s operátorom v ľavom hornom rohu.
  • Keď je šťastná cesta na papieri, zlyhania sa dajú spočítať: pri každej správe sa pýtajte, čo ak odpoveď nepríde, čo ak príde chyba a čo ak príde dvakrát.
UML sekvenčný diagram. Obchodník podá platbu do Checkout, ktorý požiada platobného orchestrátora, aby ju autorizoval. Orchestrátor zaúčtuje kartu cez platobnú bránu a dostane schválenie. Vnútri fragmentu alt zapíše položku do účtovnej knihy, ak sú prostriedky k dispozícii, inak vráti zamietnutie. Checkout nakoniec vráti obchodníkovi potvrdenie.
Autorizácia platby. Čas beží nadol, každá zvislá prerušovaná čiara je účastník a orámovaný box je voľba medzi dvomi alternatívami.

01Čo ukazuje#

Sekvenčný diagram presne odpovedá na jednu otázku: čo sa deje, v akom poradí a medzi kým. Je to diagram, ktorý nakreslíte, keď sa dvaja ľudia nezhodnú, ktorá služba volá ktorú, alebo keď tok prechádza štyrmi systémami a nikto nemá celú cestu v hlave.

Všetku prácu urobí rozloženie. Účastníci sedia pozdĺž horného okraja. Čas beží nadol - nie zľava doprava a nie v mierke. Správa nižšie na stránke nastane po správe vyššie na stránke, a to je celé pravidlo čítania.

02Čiary života, aktivácie, správy#

Tri kusy nábytku, a všetko ostatné je ich obmena.

Čiara života je hlavička hore plus prerušovaná zvislá čiara, ktorá z nej beží nadol. Hlavička pomenúva účastníka. Môže to byť názov triedy, objekt (: Checkout), aktér nakreslený ako panáčik alebo rola so stereotypom ako «boundary» či «control». Čokoľvek si vyberiete, buďte konzistentní po celom diagrame.

Aktivačný pruh - niekedy nazývaný výskyt vykonávania - je tenký obdĺžnik položený na čiare života. Označuje obdobie, počas ktorého ten účastník niečo robí. Vnorené pruhy znamenajú, že účastník zavolal späť sám seba. Aktivácie sú v UML nepovinné a oplatí sa ich kresliť: robia zrejmým, že Checkout stále čaká, kým brána pracuje.

Správa je vodorovná šípka. Jej štýl hovorí, o aký druh volania ide, a to je tá časť, ktorú sa oplatí zapamätať.

03Druhy správ#

PrvokNotáciaČo znamená
SynchrónnaPlná čiara, vyplnená šípka. Volajúci je blokovaný, kým nedostane odpoveď. Bežná metóda alebo blokujúce HTTP volanie.
AsynchrónnaPlná čiara, otvorená šípka. Volajúci ide okamžite ďalej. Publikovanie do fronty alebo vyvolanie udalosti.
OdpoveďPrerušovaná čiara, otvorená šípka. Návrat. Označte ju tým, čo sa vracia, nie slovom „return“.
CreatePrerušovaná šípka končiaca na hlavičke čiary života, ktorá začína niekde nižšie. Označená «create».
Destroykrížik na konci čiary životaÚčastník prestáva existovať; jeho čiara života končí pri krížiku.

Rozdiel medzi vyplnenou a otvorenou šípkou je ten, ktorý má skutočnú váhu. Je to rozdiel medzi „volajúci je teraz blokovaný“ a „volajúci šiel ďalej“, a je to tá najužitočnejšia vec, ktorú sekvenčný diagram povie čitateľovi o distribuovanom systéme.

UML sekvenčný diagram ukazujúci volanie na seba a vytvorenie objektu. Orchestrátor overí sám seba, potom prerušovanou správou create vytvorí Receipt, zavolá na ňom render a nakoniec ho zruší, čo je označené krížikom na konci jeho čiary života.
Volanie na seba vychádza a vracia sa na tú istú čiaru života. Hlavička vytvoreného účastníka klesne k správe, ktorá ho vytvára, a zrušený končí pri krížiku.

04Vetvenie: kombinované fragmenty#

Skutočné toky majú podmienky aj opakovanie. UML rieši oboje kombinovaným fragmentom: boxom nakresleným okolo série správ, s operátorom v štítku v jeho ľavom hornom rohu.

  • alt - alternatívy. Rozdelený prerušovanou čiarou na priehradky, každá so strážou v hranatých zátvorkách. Prebehne práve jedna. Toto je if/else.
  • opt - nepovinné. Jedna priehradka so strážou; buď prebehne, alebo nie. Toto je if bez else.
  • loop - opakovanie. Stráž udáva podmienku alebo hranice, ako v loop [1..*] alebo loop [kým sú ďalšie strany].
  • par - paralelne. Priehradky bežia súbežne, bez zaručeného poradia.
  • ref - odkaz na interakciu definovanú na inom diagrame. Takto zabránite tomu, aby jeden sekvenčný diagram narástol na tri strany.
  • critical - oblasť, ktorá sa nesmie prepliesť s ničím iným.

05Rámec, brány a správy odnikiaľ#

Všetko vyššie sedí v boxe, ktorý väčšina diagramov kreslí a málokto si ho všimne: rámec interakcie, obdĺžnik okolo celého diagramu so štítkom v ľavom hornom rohu, na ktorom je sd a názov interakcie. Vyzerá ako výzdoba a nie je - je to to, čo interakcii dáva meno, a práve meno umožňuje ref. Bez neho nemôžete dlhý tok rozrezať na kusy, čo znamená, že každý tok sa musí zmestiť na jednu stranu.

PrvokNotáciaČo znamená
Rámecsd AuthorizePaymentBox okolo diagramu a názov interakcie v ňom. To, na čo ukazuje ref na inom diagrame.
Bránašípka končiaca na rámciSpráva, ktorá prekračuje hranicu rámca namiesto toho, aby začínala či končila na čiare života. Je to zoznam parametrov interakcie: takto ref čokoľvek prijíma a vracia.
Nájdená správavyplnený krúžok na chvostePrichádza od odosielateľa, ktorého diagram nemodeluje - kliknutie používateľa, plánovač, webhook. Poctivé a oveľa lepšie než vymyslieť čiaru života pre vonkajší svet.
Stratená správavyplnený krúžok na hlavePoslaná príjemcovi, ktorého diagram nemodeluje, alebo naozaj nikdy nedorazí. Zriedkavá na návrhovom diagrame, užitočná na tom, ktorý popisuje zlyhanie.
Obmedzenie trvania{ < 200ms }Obmedzenie v zložených zátvorkách preklenujúce dva body na čiare života. Jediný spôsob, ako sekvenčný diagram vie povedať čokoľvek o čase, keďže zvislá vzdialenosť nehovorí nič.
Stavový invariant{ order = PLACED }Podmienka napísaná na čiare života, ktorá v tom bode musí platiť. Užitočná priamo nad správou, ktorej celý dôvod existencie je práve tá podmienka.

Zoznam fragmentov v predchádzajúcej sekcii je pracovná sada, nie celá. Existujú ďalšie štyri operátory a tri z nich si občas svoje miesto zaslúžia: break opustí zvyšok obklopujúceho fragmentu, keď platí jeho stráž, čo je prirodzený tvar skorého návratu pri chybe; strict vynúti poradie svojich priehradiek tam, kde ich obyčajné seq necháva voľné; neg označuje interakciu, ktorá nesmie nastať, čo je spôsob, ako do obrázka zapísať negatívny test. assert, ignore a consider patria do formálnej špecifikácie a pokojne ich preskočte, kým vás k nim niečo nedotlačí.

06Ako z neho vyčítať cesty zlyhania#

Najcennejšie na sekvenčnom diagrame nie je zdokumentovanie šťastnej cesty. Je to to, že keď je šťastná cesta raz na papieri, zlyhania sa dajú spočítať - a tok cez štyri systémy ich má oveľa viac, než ktokoľvek z hlavy odhadne.

Prejdite diagram nadol a pri každej správe si položte tri otázky v poradí. Odpovede sú vaše rozšírené cesty a každá z nich je buď fragment, ktorý máte nakresliť, alebo rozhodnutie, ktoré musí niekto urobiť.

  1. Čo ak nepríde odpoveď? Každá synchrónna správa je miesto, kde volajúci môže blokovať navždy. Niekde existuje hodnota vypršania; ak ju nikto v miestnosti nepozná, to je to zistenie. Nakreslite to ako alt so strážou [timeout] a číslo skončí na diagrame, kde sa o ňom dá polemizovať.
  2. Čo ak je odpoveďou zlyhanie? Odlišné od žiadnej odpovede a znepokojivo veľkým množstvom produkčného kódu spracované rovnako. Zamietnutá autorizácia a mŕtva akvizičná banka potrebujú iné ošetrenie a práve na diagrame sa ten rozdiel zviditeľní.
  3. Čo ak sa toto doručí dvakrát? Pýtajte sa to pri každej asynchrónnej správe, lebo fronty doručujú znova a klienti opakujú. Ak je odpoveďou „zákazníkovi sa strhne dvakrát“, našli ste požiadavku na idempotenciu, ktorá v tickete nebola.

Potom si diagram prečítajte ešte raz, odzadu, kvôli otázke, ktorú prechod dopredu nikdy nezachytí: čo sa už stalo a teraz sa to musí vrátiť späť? Zlyhanie pri štvrtej správe necháva účinky prvých troch na mieste. To je kompenzačná logika a sekvenčný diagram je najlacnejším miestom na svete, kde zistíte, že nejakú potrebujete.

07Kedy taký diagram kresliť#

Siahnite po ňom, keď

  • Tok prechádza viacerými službami a poradie volaní nie je zrejmé
  • Potrebujete rozhodnúť spor o tom, kto je zodpovedný za volanie koho
  • Dokumentujete protokol, handshake alebo integráciu pre iný tím
  • Zisťujete, kde sú režimy zlyhania - diagram zviditeľní chýbajúce chybové cesty

Siahnite po niečom inom, keď

  • Interakcia sú dvaja účastníci a tri správy - napíšte proste tú vetu
  • Zaujíma vás uplynutý čas alebo termíny - použite časovací diagram
  • Otázkou je štruktúra, nie poradie - použite diagram tried alebo komponentov
  • Tok je väčšinou vetviaca logika - diagram aktivít bude oveľa čitateľnejší

Sekvenčný diagram je tiež najúčinnejším UML artefaktom na revíziu návrhu skôr, než sa postaví, lebo vytláča nepríjemné otázky na svetlo. Čo sa stane, ak bráne vyprší čas? Kto to opakuje? Je to volanie blokujúce? Diagram sa nedá nakresliť bez toho, aby ste na ne odpovedali.

08Časté chyby#

  1. Každá šípka nakreslená plná a vyplnená. Ak všetko vyzerá synchrónne, diagram zahodil svoje najužitočnejšie rozlíšenie. Na „pošli a zabudni“ použite otvorené hlavy.
  2. Šípky odpovede na všetko. Odpoveď na synchrónne volanie je často implicitná a dá sa vynechať. Kreslite ju, keď na vrátenej hodnote záleží.
  3. Miešanie úrovní abstrakcie. Čiara života pre celú platobnú platformu vedľa čiary života pre jednu pomocnú triedu. Vyberte si jednu výšku.
  4. Žiadna chybová cesta. Samotná šťastná cesta je tá menej zaujímavá polovica. Práve alt s vetvou vypršania robí diagram hodným revízie.
  5. Dvadsať čiar života. Zhruba nad sedem sa diagram prestane zmestiť na obrazovku a začne sa skôr rolovať než čítať. Rozdeľte ho a použite ref.

Po jednom riadku na každé

  1. 01Účastníci pozdĺž horného okraja, čas nadol; zvislá vzdialenosť nie je trvanie.
  2. 02Vyplnená šípka je synchrónna a blokujúca, otvorená šípka je asynchrónna.
  3. 03Prerušované šípky sú odpovede; prerušovaná do zníženej hlavičky je «create».
  4. 04Aktivačné pruhy ukazujú, kto je zaneprázdnený, a stoja za tú námahu.
  5. 05alt, opt, loop, par a ref pokryjú vetvenie; nikdy nevnárajte hlbšie než dve úrovne.
  6. 06Nakreslite cestu zlyhania - je to tá polovica, ktorá robí diagram užitočným.

09Časté otázky#

Čo je čiara života v sekvenčnom diagrame?

Prerušovaná zvislá čiara pod každým účastníkom, ktorá predstavuje jeho existenciu v čase. Čas plynie nadol, takže správa nakreslená nižšie na stránke nastane neskôr než tá nad ňou.

Aký je rozdiel medzi synchrónnou a asynchrónnou správou?

Synchrónna správa má plnú vyplnenú šípku a znamená, že odosielateľ čaká na návrat volania. Asynchrónna správa má otvorenú čiarovú šípku a znamená, že odosielateľ pokračuje okamžite. Odpoveď na synchrónne volanie je prerušovaná čiara s otvorenou šípkou.

Čo znamenajú alt, opt, loop a par?

Sú to kombinované fragmenty: pomenované rámy obopínajúce časť interakcie. alt je vetvenie so strážami, opt je jediná vetva, ktorá nemusí prebehnúť, loop opakuje svoj obsah a par znamená, že sa jeho oblasti môžu prekladať. Názov stojí v päťuholníku vľavo hore.

Čo je pruh aktivácie?

Úzky obdĺžnik kreslený na čiare života, kým účastník niečo robí, formálne špecifikácia vykonávania. Začína, keď účastník dostane správu, a končí, keď sa vráti - a práve preto vidno vnorené volania ako naskladané pruhy.

Kedy použiť sekvenčný diagram namiesto komunikačného?

Sekvenčný, keď ide o poradie správ: protokol, chybová cesta, vypršanie času. Komunikačný, keď ide o štruktúru, teda kto je s kým spojený. Oba nesú tú istú informáciu a líšia sa len rozložením.

V tejto sérii

Súvisiace články

Všetky články