Archyno
ExportsPraxe modelování

UML v repozitáři: Mermaid

Export, který se vzdá nejvíc a koupí jedinou věc, kterou ostatní neumí: diagram, který žije vedle kódu a mění se ve stejném pull requestu.

5 min čteníXMI 2.5.13 z 3

Krátká odpověď

  • Diagram tříd, sekvenční, stavový, případů užití a ER mají přímé ekvivalenty. Komponenty, nasazení, časové a složená struktura nemají v Mermaidu žádnou syntaxi.
  • Důvod, proč tu ztrátu přijmout, je, že Mermaid je text - a text patří do repozitáře.
  • Mermaid diagram se objeví v diffu pull requestu a projde revizí spolu se změnou, kterou popisuje - a to je jediný mechanismus, který diagram spolehlivě udrží pravdivý.
  • Není to modelovací nástroj. Přejmenování třídy v Mermaidu je úprava jednoho souboru; přejmenování v modelu aktualizuje každý pohled, který ji zobrazuje.

01Obchod, řečeno na rovinu#

Mermaid je ze tří exportních formátů nejhorší v přenášení modelu a jediný z nich řeší problém, který většina dokumentace opravdu má. XMI nese metamodel; .qea nese metamodel i rozvržení; Mermaid nese zhruba to, co se vejde do odstavce textu - a vykreslí se v README bez jakéhokoli build kroku.

To je celý argument a je dobrý. Diagram exportovaný jako PNG do wiki je do čtvrtletí špatně a nikdo si toho nevšimne, protože nic na změně kódu nikoho nenutí se na něj podívat. Diagram v docs/architecture.md se objeví v diffu, když se jeho soubor změní, a recenzent, který umí přečíst změnu, uvidí, že diagram s ní nesouhlasí.

02Co Mermaid nakreslí a co ne#

PrvekNotaceCo znamená
Diagram třídDobréTřídy, členy, viditelnost, všech šest druhů vztahů a násobnosti. Nejbližší shoda s UML v celé syntaxi.
Sekvenční diagramDobréÚčastníci, synchronní i asynchronní zprávy, aktivace a bloky alt, opt, loop a par.
Stavový diagramDobréStavy, přechody se strážemi, složené stavy a historie.
ER diagramDobréKardinalita vraní nohy a seznamy atributů. Blízká shoda s článkem o ER.
Diagram případů užitíČástečnéAktéři a případy, ale bez plnohodnotného include či extend.
Komponenty, nasazení, časováníChybíŽádná syntaxe. Přiblížení vývojovým diagramem je možné a není to tentýž diagram.

I v dobrých řádcích stojí za to pojmenovat, co se ztrácí: stereotypy, poznámky, omezení a každá stopa po rozvržení. Mermaid si diagramy rozvrhne sám, takže uspořádání, nad kterým jste strávili hodinu, nepřežije - a u diagramu, který se bude regenerovat při každé změně, je to spíš výhoda než ztráta.

03Jak to udržet#

Exportujte pohledy, které by vývojář opravdu otevřel, což téměř nikdy nejsou všechny. Jeden diagram tříd jádra domény a jeden sekvenční diagram toku, který všichni ladí, je lepší repozitář než čtrnáct souborů, které nikdo nečte.

Commitujte Mermaid, ne vykreslený obrázek. GitHub, GitLab i většina generátorů statických stránek vykreslí bloky mermaid přímo. Obrázek uložený vedle zdroje je druhá kopie, která s ním přestane souhlasit.

Regenerujte, neupravujte ručně. Ve chvíli, kdy někdo opraví název třídy v Markdownu místo v modelu, export přestal být exportem a obě verze se začínají rozcházet - a přesně o tomhle selhání je udržování modelu aktuálního.

Po jednom řádku na každé

  1. 01Mermaid nese ze tří formátů nejméně a je jediný, který žije v diffu.
  2. 02Třídy, sekvence, stavy a ER se mapují dobře; komponenty, nasazení a časování nemají syntaxi.
  3. 03Stereotypy, poznámky, omezení i rozvržení se ztrácejí - a ztráta rozvržení je tu v pořádku.
  4. 04Exportujte ty dva tři pohledy, které vývojáři konzultují, ne celý model.
  5. 05Commitujte text, nikdy vykreslený obrázek, a regenerujte místo ručních úprav.

04Časté dotazy#

Které UML diagramy Mermaid podporuje?

Diagram tříd, sekvenční, stavový a případů užití mají přímé ekvivalenty a existuje i diagram entit a vztahů. Diagramy komponent, nasazení, časové, složené struktury a další nemají syntaxi, takže model, který je obsahuje, se exportuje jen částečně nebo vůbec.

Proč vůbec exportovat do Mermaidu, když ztrácí detail?

Protože je to text a text patří do repozitáře. Mermaid diagram se objeví v diffu pull requestu, na GitHubu a GitLabu se vykreslí sám a projde revizí spolu se změnou, kterou popisuje - a to je jediný mechanismus, který spolehlivě udrží diagram pravdivý.

Je Mermaid náhradou modelovacího nástroje?

Ne. Mermaid kreslí diagramy; modelovací nástroj drží jeden model za mnoha pohledy. Když přejmenujete třídu v Mermaidu, upravili jste jeden soubor - když ji přejmenujete v modelu, aktualizuje se každý pohled, který ji zobrazuje. Mermaid použijte na pohledy, které musí žít v repozitáři.

V této sérii

Související články

Všechny články