Archyno
ExportsPrax modelovania

UML v repozitári: Mermaid

Export, ktorý sa vzdá najviac a kúpi jedinú vec, ktorú ostatné nevedia: diagram, ktorý žije vedľa kódu a mení sa v tom istom pull requeste.

5 min čítaniaXMI 2.5.13 z 3

Krátka odpoveď

  • Diagram tried, sekvenčný, stavový, prípadov použitia a ER majú priame ekvivalenty. Komponenty, nasadenie, časové a zložená štruktúra nemajú v Mermaide žiadnu syntax.
  • Dôvod, prečo tú stratu prijať, je, že Mermaid je text - a text patrí do repozitára.
  • Mermaid diagram sa objaví v diffe pull requestu a prejde revíziou spolu so zmenou, ktorú opisuje - a to je jediný mechanizmus, ktorý diagram spoľahlivo udrží pravdivý.
  • Nie je to modelovací nástroj. Premenovanie triedy v Mermaide je úprava jedného súboru; premenovanie v modeli aktualizuje každý pohľad, ktorý ju zobrazuje.

01Obchod, povedaný narovinu#

Mermaid je z troch exportných formátov najhorší v prenášaní modelu a jediný z nich rieši problém, ktorý väčšina dokumentácie naozaj má. XMI nesie metamodel; .qea nesie metamodel aj rozloženie; Mermaid nesie zhruba to, čo sa zmestí do odseku textu - a vykreslí sa v README bez akéhokoľvek build kroku.

To je celý argument a je dobrý. Diagram exportovaný ako PNG do wiki je do štvrťroka nesprávny a nikto si to nevšimne, pretože nič na zmene kódu nikoho nenúti sa naň pozrieť. Diagram v docs/architecture.md sa objaví v diffe, keď sa jeho súbor zmení, a recenzent, ktorý vie prečítať zmenu, uvidí, že diagram s ňou nesúhlasí.

02Čo Mermaid nakreslí a čo nie#

PrvokNotáciaČo znamená
Diagram triedDobréTriedy, členy, viditeľnosť, všetkých šesť druhov vzťahov a násobnosti. Najbližšia zhoda s UML v celej syntaxi.
Sekvenčný diagramDobréÚčastníci, synchrónne aj asynchrónne správy, aktivácie a bloky alt, opt, loop a par.
Stavový diagramDobréStavy, prechody so strážami, zložené stavy a história.
ER diagramDobréKardinalita vranej nohy a zoznamy atribútov. Blízka zhoda s článkom o ER.
Diagram prípadov použitiaČiastočnéAktéri a prípady, ale bez plnohodnotného include či extend.
Komponenty, nasadenie, časovanieChýbaŽiadna syntax. Priblíženie vývojovým diagramom je možné a nie je to ten istý diagram.

Aj v dobrých riadkoch stojí za to pomenovať, čo sa stráca: stereotypy, poznámky, obmedzenia a každá stopa po rozložení. Mermaid si diagramy rozloží sám, takže usporiadanie, nad ktorým ste strávili hodinu, neprežije - a pri diagrame, ktorý sa bude regenerovať pri každej zmene, je to skôr výhoda než strata.

03Ako to udržať#

Exportujte pohľady, ktoré by vývojár naozaj otvoril, čo takmer nikdy nie sú všetky. Jeden diagram tried jadra domény a jeden sekvenčný diagram toku, ktorý všetci ladia, je lepší repozitár než štrnásť súborov, ktoré nikto nečíta.

Commitujte Mermaid, nie vykreslený obrázok. GitHub, GitLab aj väčšina generátorov statických stránok vykreslia bloky mermaid priamo. Obrázok uložený vedľa zdroja je druhá kópia, ktorá s ním prestane súhlasiť.

Regenerujte, neupravujte ručne. V okamihu, keď niekto opraví názov triedy v Markdowne namiesto v modeli, export prestal byť exportom a obe verzie sa začínajú rozchádzať - a presne o tomto zlyhaní je udržiavanie modelu aktuálneho.

Po jednom riadku na každé

  1. 01Mermaid nesie z troch formátov najmenej a je jediný, ktorý žije v diffe.
  2. 02Triedy, sekvencie, stavy a ER sa mapujú dobre; komponenty, nasadenie a časovanie nemajú syntax.
  3. 03Stereotypy, poznámky, obmedzenia aj rozloženie sa strácajú - a strata rozloženia je tu v poriadku.
  4. 04Exportujte tie dva-tri pohľady, ktoré vývojári konzultujú, nie celý model.
  5. 05Commitujte text, nikdy vykreslený obrázok, a regenerujte namiesto ručných úprav.

04Časté otázky#

Ktoré UML diagramy Mermaid podporuje?

Diagram tried, sekvenčný, stavový a prípadov použitia majú priame ekvivalenty a existuje aj diagram entít a vzťahov. Diagramy komponentov, nasadenia, časové, zloženej štruktúry a ďalšie nemajú syntax, takže model, ktorý ich obsahuje, sa exportuje len čiastočne alebo vôbec.

Prečo vôbec exportovať do Mermaidu, keď stráca detail?

Pretože je to text a text patrí do repozitára. Mermaid diagram sa objaví v diffe pull requestu, na GitHube a GitLabe sa vykreslí sám a prejde revíziou spolu so zmenou, ktorú opisuje - a to je jediný mechanizmus, ktorý spoľahlivo udrží diagram pravdivý.

Je Mermaid náhradou modelovacieho nástroja?

Nie. Mermaid kreslí diagramy; modelovací nástroj drží jeden model za mnohými pohľadmi. Keď premenujete triedu v Mermaide, upravili ste jeden súbor - keď ju premenujete v modeli, aktualizuje sa každý pohľad, ktorý ju zobrazuje. Mermaid použite na pohľady, ktoré musia žiť v repozitári.

V tejto sérii

Súvisiace články

Všetky články