UML diagramy s graphvizem

cs in code

Školu nemám rád, často jsem z ní na nervy, ale za jednu věc jí jsem 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, tak jsem prošel 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é).

Na záver přidám ještě jednu ukázku – můj diagram vytvářený pro semestrální práci předmětu Databázové systémy: dbs- dot.zip.





You may also like