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#
| Prvek | Notace | Co znamená |
|---|---|---|
| Diagram tříd | Dobré | Třídy, členy, viditelnost, všech šest druhů vztahů a násobnosti. Nejbližší shoda s UML v celé syntaxi. |
| Sekvenční diagram | Dobré | Účastníci, synchronní i asynchronní zprávy, aktivace a bloky alt, opt, loop a par. |
| Stavový diagram | Dobré | Stavy, přechody se strážemi, složené stavy a historie. |
| ER diagram | Dobré | 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é
- 01Mermaid nese ze tří formátů nejméně a je jediný, který žije v diffu.
- 02Třídy, sekvence, stavy a ER se mapují dobře; komponenty, nasazení a časování nemají syntaxi.
- 03Stereotypy, poznámky, omezení i rozvržení se ztrácejí - a ztráta rozvržení je tu v pořádku.
- 04Exportujte ty dva tři pohledy, které vývojáři konzultují, ne celý model.
- 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
- 01UML do XMI
- 02Sparx .qea tam a zpět
- 03UML do Mermaidu
Související články
Praxe modelování
Praxe modelování
Praxe modelování
Diagramy chování