Archyno
UMLDiagramy chování

Sekvenční vs komunikační diagram

Tentýž nákup nakreslený oběma způsoby, aby byl kompromis vidět, ne jen popsán: jeden dává čas na svislou osu, druhý na stránku strukturu a zprávy očísluje.

7 min čteníUML 2.5.127 z 35

Krátká odpověď

  • Lepší není ani jeden. Sekvenční diagram činí zjevným pořadí a skrývá strukturu; komunikační to má naopak.
  • Sémanticky jde o tutéž interakci nad týmž UML modelem, takže nástroj umí jeden z druhého vygenerovat mechanicky.
  • Čísla zpráv existují proto, že není časová osa. Bez nich diagram přestává říkat, co se děje kdy.
  • Většina lidí chce sdělit právě pořadí, a proto sekvenční diagram vyhrává téměř každý reálný rozhovor.
UML komunikační diagram téže pokladny. Aktér Customer je propojený s objektem OrderController zprávou jedna, zadat objednávku. Kontroler je propojený s objektem Inventory zprávou dvě, reserve; s objektem PaymentGateway zprávou tři, charge; a s objektem OrderRepo zprávou čtyři, save. Všechna čtyři propojení vycházejí z kontroleru.
Pokladna jako komunikační diagram: struktura je okamžitá, pořadí žije v číslech.

01Jedna interakce, dvě kresby#

Oba diagramy níže popisují tutéž pokladnu: zákazník zadá objednávku, kontroler zarezervuje zboží, strhne z karty, uloží objednávku a odpoví. Nic na systému se mezi nimi neliší. Liší se jen osa, na kterou notace utrácí svůj prostor.

UML sekvenční diagram pokladny. Aktér Customer volá placeOrder na OrderController. Kontroler volá reserve na Inventory a dostane reserved, pak volá charge na PaymentGateway a dostane authorised, pak volá save na OrderRepo a nakonec odpoví zákazníkovi potvrzením.
Tatáž pokladna jako sekvenční diagram: pořadí je svislou osou a vnoření volání je vidět v aktivačních pásech.

Přečtěte si titulní obrázek znovu po tomhle. Komunikační diagram dělá zřejmým to, co sekvenční pohřbívá: každá zpráva jde přes OrderController. Čtyři propojení vycházejí z jednoho uzlu a žádné nespojuje ostatní navzájem, což je tvar návrhu, ne tvar běhu. Na sekvenčním diagramu je ten fakt roztažený přes sedm řádků a musíte ho hledat.

A opak platí stejně. Na sekvenčním diagramu na první pohled vidíte, že karta se strhává po rezervaci zboží a že odpověď o rezervaci přijde dřív, než odejde stržení. Na komunikačním diagramu je to pořadí rozdílem mezi číslicemi 2 a 3.

02Na co každý utrácí svůj prostor#

Obě notace jsou v UML definované nad touž podkladovou interakcí, takže je to volba prezentace, ne modelování. To, co z té volby plyne, je dost konzistentní na to, aby se to dalo zapsat do tabulky.

PrvekNotaceCo znamená
PořadíSekvenčníČte se dolů stránkou, bez počítání. Na komunikačním diagramu sledujete čísla, což je za zhruba šesti zprávami pomalejší.
StrukturaKomunikačníPropojení jsou rozvržením, takže rozbočovače, řetězy a izolovaní účastníci jsou vidět okamžitě. Sekvenční diagram nemá rozvržení, které by se dalo číst.
VnořeníSekvenčníAktivační pásy ukazují, které volání je pořád na zásobníku. Komunikační diagramy to vyjadřují desetinným číslováním - 2.1 uvnitř 2 - což se hůř přehlíží.
Podmínky a smyčkySekvenčníKombinované fragmenty (alt, opt, loop) orámují oblast diagramu. Komunikační diagramy mají jen stráže na popiscích zpráv.
Počet účastníkůKomunikačníSekvenčnímu diagramu dojde vodorovné místo za šesti či sedmi čarami života. Komunikační je rozloží do dvou rozměrů.
SrozumitelnostSekvenčníMnohem víc lidí ho přečte, aniž by je to někdo učil. To není vlastnost notace, ale rozhoduje to většinu reálných voleb.

Tatáž informace, dva velmi rozdílné zážitky ze čtení.

03Volba mezi nimi#

Rozhodnutí je snazší, pokud si napíšete větu, kterou má diagram někomu vložit do úst. Pokud je v té větě pořadí, chcete čáry života. Pokud je v ní tvar, chcete propojení.

Sáhněte po něm, když

  • Sekvenční, když je pointou, co se děje před čím - protokoly, navázání spojení, souběhy.
  • Sekvenční, když jsou podmínky a smyčky součástí příběhu a potřebujete rámy alt nebo loop.
  • Komunikační, když je pointou, kdo s kým mluví - provázanost, rozbočovač, porušení vrstvení.
  • Komunikační, když je účastníků víc, než se vejde na stranu jako čáry života.

Sáhněte po něčem jiném, když

  • Komunikační, když je potřeba publikum nejdřív naučit číslování, aby ho vůbec přečetlo.
  • Sekvenční, když ve skutečnosti popisujete strukturu - to je diagram tříd nebo komponent.
  • Oba, když není otázkou ani pořadí, ani spolupráce. Próza je kratší.
  • Kreslit tutéž interakci dvakrát jako dokumentaci. Nechte si jednu; druhou umí nástroj vygenerovat.

V praxi většina týmů kreslí sekvenční diagramy a občas nějaký komunikační přečte, což je rozumná rovnováha: pořadí bývá to, co se lidé snaží vysvětlit. Jediné místo, kde si komunikační diagram jednoznačně zaslouží místo, je návrhový posudek o provázanosti, kde čtyři propojení sbíhající se do jednoho uzlu udělají argument rychleji než jakýkoli seznam míst volání.

04Co si zapamatovat#

Po jednom řádku na každé

  1. 01Obě notace popisují tutéž interakci. Volba je o tom, čeho si čtenář všimne první.
  2. 02Sekvenční dává pořadí na svislou osu; komunikační dává na stranu strukturu a zprávy očísluje.
  3. 03Vnoření je na jednom aktivační pás a na druhém desetinné číslo.
  4. 04Rámy alt, opt a loop mají jen sekvenční diagramy - podmínky jsou důvodem, proč u nich většina týmů zůstává.
  5. 05Komunikační a kolaborační diagram je tentýž obrázek pod názvy z UML 2 a UML 1.

05Časté dotazy#

Co je lepší, sekvenční, nebo komunikační diagram?

Ani jeden není lepší, jen zdůrazňují jiné osy. Sekvenční diagram činí zjevným pořadí a skrývá strukturu. Komunikační diagram činí zjevným tvar spolupráce a pořadí ztěžuje. Vyberte ten, jehož silná stránka odpovídá vaší otázce.

Obsahují sekvenční a komunikační diagram tytéž informace?

Sémanticky ano - oba popisují jednu interakci a UML je definuje nad týmž modelem, takže nástroj umí vygenerovat jeden z druhého. Liší se to, čeho si člověk všimne nejdřív, a to je jediný důvod mít dvě notace.

Proč komunikační diagramy číslují zprávy?

Protože nemají časovou osu, ze které by se pořadí dalo číst. Pořadí nese číslování, přičemž vnořená čísla jako 2.1 a 2.2 ukazují, která volání probíhají uvnitř kterých. Bez čísel diagram přestává říkat, co se děje kdy.

Lze sekvenční diagram převést na komunikační?

Ano a mechanicky. Z každé čáry života se stane uzel, z každé zprávy očíslovaný popis spoje mezi dvěma uzly a z pořadí shora dolů číslování. Mnohé modelovací nástroje převádějí oběma směry z jedné uložené interakce.

Proč se komunikační diagramy používají tak zřídka?

Většina lidí chce sdělit právě pořadí a vyčíst ho ze sady čísel je pomalejší než přečíst ho shora dolů. Komunikační diagram vyhrává, když jde o to, kdo s kým mluví, a ne v jakém pořadí - a to je menší část reálných rozhovorů.

V této sérii

Související články

Všechny články