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.
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#
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Synchrónna | Plná čiara, vyplnená šípka. Volajúci je blokovaný, kým nedostane odpoveď. Bežná metóda alebo blokujúce HTTP volanie. | |
| Asynchrónna | Plná č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“. | |
| Create | Prerušovaná šípka končiaca na hlavičke čiary života, ktorá začína niekde nižšie. Označená «create». | |
| Destroy | kríž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.
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 vloop [1..*]aleboloop [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.
| Prvok | Notácia | Čo znamená |
|---|---|---|
| Rámec | sd AuthorizePayment | Box okolo diagramu a názov interakcie v ňom. To, na čo ukazuje ref na inom diagrame. |
| Brána | šípka končiaca na rámci | Sprá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áva | vyplnený krúžok na chvoste | Prichá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áva | vyplnený krúžok na hlave | Poslaná 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ť.
- Č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
altso strážou[timeout]a číslo skončí na diagrame, kde sa o ňom dá polemizovať. - Č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í.
- Č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#
- 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.
- Ší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ží.
- Miešanie úrovní abstrakcie. Čiara života pre celú platobnú platformu vedľa čiary života pre jednu pomocnú triedu. Vyberte si jednu výšku.
- Žiadna chybová cesta. Samotná šťastná cesta je tá menej zaujímavá polovica. Práve
alts vetvou vypršania robí diagram hodným revízie. - 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é
- 01Účastníci pozdĺž horného okraja, čas nadol; zvislá vzdialenosť nie je trvanie.
- 02Vyplnená šípka je synchrónna a blokujúca, otvorená šípka je asynchrónna.
- 03Prerušované šípky sú odpovede; prerušovaná do zníženej hlavičky je «create».
- 04Aktivačné pruhy ukazujú, kto je zaneprázdnený, a stoja za tú námahu.
- 05alt, opt, loop, par a ref pokryjú vetvenie; nikdy nevnárajte hlbšie než dve úrovne.
- 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
- 01Čo je UML?
- 02Symboly UML
- 03Výber diagramu
- 04Diagramy tried
- 05Príklady diagramov tried
- 06Ako nakresliť diagram tried
- 07Symboly diagramu tried
- 08Sekvenčné diagramy
- 09Príklady sekvenčných diagramov
- 10Ako nakresliť sekvenčný diagram
- 11Diagramy prípadov použitia
- 12Príklady prípadov použitia
- 13Diagramy aktivít
- 14Príklady aktivít
- 15Stavové diagramy
- 16Príklady stavových diagramov
- 17Diagramy komponentov
- 18Príklady komponentov
- 19Kreslenie diagramu komponentov
- 20Symboly komponentov
- 21Diagramy nasadenia
- 22Príklady nasadenia
- 23Diagramy objektov
- 24Diagramy balíkov
- 25Diagramy zloženej štruktúry
- 26Komunikačné diagramy
- 27Sekvenčný vs komunikačný
- 28Časové diagramy
- 29Diagramy prehľadu interakcií
- 30Diagramy profilov
- 31UML pomocou AI
- 32Príklad e-shopu
- 33Príklad banky
- 34Príklad mikroslužieb
- 35Príklad AWS
Súvisiace články
Základy
Diagramy správania
Diagramy správania
Diagramy štruktúry
Základy
Diagramy správania