UML diagramy s graphvizem

cs v kategorii code • 3 min. čtení
Mind the age! Most likely, its content is outdated. Especially if it’s technical.

Školu nemám rád, často jsem z ní na nervy, ale za jednu věc jsem jí vděčný – za předmět „Technická dokumentace.“ Díky tomu jsem se dostal k LaTeXu, graphvizu a dalším zajímavým aplikacím. Dnes chci poukázat na graphviz a možnost s ním vytvářet UML diagramy, protože na něj těžce narazíte. Neviděl jsem na něj doporučení, pokud jsem ho přímo nehledal.

Graphviz

Graphviz lze nainstalovat (na Debian-like systémech) pomocí příkazu apt-get install graphviz. Pokud máte nainstalováno, tak si zkuste vytvořit soubor (řekněme že test.dot) s tímto obsahem:

digraph G {
    A -> B
    A -> C
}

a vygenerovat z toho například PNG obrázek pomocí příkazu dot -T png -O test.dot. Výsledek je dobrý, že? Pro více informací, ukázek a dalšího materiálu navštivtě stránky projektu.

Graphviz se sám postará o rozložení prvků – jen se nadefinují prvky a vztahy mezi nimi – a jde mu to dobře! To je přesně to, co se mi na tom líbí. Když jsem potřeboval vytvořit UML diagram, prošel jsem spoustu aplikací, ale buď aplikace nešla zkompilovat, nainstalovat, používat a nebo měla nějaký jiný problém. S graphvizem jsem udělal UML diagram za půl hodinky bez problémů.

UML diagramy

Nebudu to zbytečně okecávat – našel jsem si a upravil „šablonu“ pro UML diagramy:

digraph G {
    fontname = "Bitstream Vera Sans"
    fontsize = 8

    node [
        fontname = "Bitstream Vera Sans"
        fontsize = 8
        shape = "record"
    ]

    edge [
        fontname = "Bitstream Vera Sans"
        fontsize = 8
        arrowtail = "dot"
        arrowhead = "none"
    ]

    user [
        label = "{User|id: int\lname: varchar\l|delete()\lcreateContact()\l}"
    ]

    contact [
        label = "{Contact|user_id: int\lname: varchar\lnote: varchar\l|delete()\l}"
    ]

    user -> contact [
        taillabel = "1"
        headlabel = "0..*"
        label = "own"
    ]

    contact -> user [
        arrowhead = "empty"
        taillabel = "1"
        headlabel = "1"
        label = "contain"
    ]

}

A to vygeneruje následující obrázek:

Myslím, že z ukázky je vše patrné a není třeba to komentovat. Souhlasím, že zápis samotných boxíků není zrovna ideální, ale raději překousnu tento zápis než bojovat s aplikacemi, které si myslí, že mi usnadňují práci s rozmístěním boxů a čar (například aplikace Dia se mi stále snaží vnucovat divné rozložení čar i když si sám řeknu, jak to má být rozložené).



Sdílejte:   Facebook   Twitter   Reddit   Tumblr   Pinterest




Může se vám také líbit

en What Makes Good Program?, November 20, 2018
en Old Code, October 31, 2018
en Fast JSON Schema for Python, October 1, 2018
en Open Source Responsibilities, September 6, 2018
en Deployment of Python Apps, August 15, 2018


Populární v kategorii code

en Makefile with Python, November 6, 2017
en Deployment of Python Apps, August 15, 2018
cs Jasně, umím Git…, August 6, 2014
cs Checklist na zabezpečení webových aplikací, March 1, 2016
cs Pokročilé regulární výrazy, August 17, 2014