mne osobne sa paci http://yuml.me/ hlavne kvoli scruffy stylu. v kladanie do html je uplne fantasticke, nakolko dostanete vzdy url adresu vasho diagramu, pricom uz priamo v url moze byt samotny kod pre jeho vytvorenie. fantazia. akurat ma obcas problemy...
No neviem. Kreslim pomerne vela diagramov ale moznost difnut to mi nikdy nechybala a ani som ju nikdy nepotreboval. Zmeny medzi verziami modelu su zdokumentovane, lebo ich niekto musel iniciovat (pripomienky od zakaznika alebo niekoho, kto ten navrh reviewuje/audituje). Inak su casti modelu zamknute. Samotne verzionovanie modelovacie nastroje podporuju (aj Git).
Ucit sa zvlast syntax na zapis tried (akokolvek jednoduchy) mi pride ako zabijanie casu. Ked uz chcem zapisat ako ma vyzerat trieda a nekreslit ju, najpriamocarejsi postup je jednoducho naklepat to v oblubenom jazyku a par klikmi importnut. Pri kresleni use cases a roznych business processov si zas neviem predstavit textovy vstup ako zaklad, s tym sa treba casto vizualne pohrat.
Keby som chcel opakovane generovat diagramy z nejakeho specifickeho vstupu, ktory modelovaci nastroj nepodporuje, tak to negenerujem do takehoto textaku ale do XML, ktore importnem. Predsa len, ten modelovaci nastroj ma v sebe kopec dalsich funkcii a nebudem casti modelu udrziavat v dvoch systemoch.
Lahke generovanie... Obrazky sice vygenerujem, ale ten modelovaci tool ma vsetko dalsie na to, aby sa vygenerovala rozumna dokumentacia s hlavickami, omackami, spravu toho, ake kapitoly (casti modelu) tam chcem mat, atd.
Nejde o to ci nejake XML alebo tato syntax. Ide o to, ze ked to importnem do modelovacieho toolu, moznost, co s tym dalej su 5x vacsie a sprava 2x lahsia, lebo je vsetko pokope.
Jo ale PlantUML lze chapat jako vystup toho modelovaciho nastroje, pokud ho tedy clovek ma a potrebuje. Takze kdyz preferujes rucni kresleni UML, tak to nastroj doda v nejakem XML a vetsinou velmi jednoduchou transformaci to dostanes do PlantUML. Ale napriklad v mem pripade se jedna/bude jednat o generovani diagramu - ja sam je nepotrebuju, ale pro komunikaci jsou nekdy vhodnejsi nez nejaky DSL.
To myslis vazne?
1. Nakreslim si UML vo vizualnom nastroji.
2. Vyexportujem z toho XML.
3. XML transformujem do PlantUML.
4. Vygenerujem z toho obrazok.
5. Obrazok manualne vlozim do dokumentacie.
Wow. V com bude ten diagram lepsi? V tom, ze som sa s tym babral dlhsie a vo viac krokoch?
Ale to si asi nerozumime, co znamena modelovaci nastroj. To neni jen nejake UML kreslitko, ale napriklad nastroje zalozene na rozhodovacich tabulkach, protoze ty jsou v mnoha pripadech dost dobry nastroj jak na komunikaci v resitelskem tymu, tak i na ladeni (a vlastne i implementaci, ty tabulky muzou byt prima nacitany do zdrojaku). Z toho lze relativne snadno vygenerovat jak flow chart, tak i diagram aktivit, protoze to bude pro nektere lidi prehlednejsi nez tabulka. Toto prece nekdo porad nebude prekreslovat v nejakem UML GUItku, to je dost zbytecna prace ne?
Mne sa skor zda, ze necitate, co pisem. Skusim konkretejsie.
Zoberte si (len ako priklad) nastroj typu Enterprise Architect. Tam uz teraz importujem rozne data, z ktorych sa mi robia diagramy, vsak? Zdrojaky kvoli diagramu tried, databazove schemy kvoli fyzickym datovym modelom, WSDL-ka do integracneho modelu, atd.
Ak chcem pouzit iny typ podkladu, napr. vasu tabulku alebo zapis v nejakom domenovo specifickom jazyku, nebudem to patlat v cez PlantUML. Spravim si "udelatko", ktore to do toho EA naimportuje. Naprogramujem sa pri tom tak isto, ako vy pri transformacii povodneho podkladu do PlantUML syntaxe.
Naviac, k dispozicii tam mam engine na generovanie diagramov, ktoremu PlantUML nemoze konkurovat . PlantUML nezvladne deployment diagram (jedine woraroundom cez komponentovy), nepodporuje to BPMN, atd, atd.
Narozdiel od vasho hrubeho vystupu z PlantUML (obrazky), ja to budem mat rovno v nastroji, kde s tym viem dalej pracovat. Mozem to mat namapovane na poziavky, mozem to drag&dropom pridat ako kapitolu do spolocnej, automaticky generovanej dokumentacie a 100 dalsich veci.
Zhrniem:
Ak by som robil vlastny SW, kde potrebujem jednoduchy engine na generovanie vybranych typov diagramov, PlantUML vyzera fajn. Ako nastroj pre analytika/architekta prilis obmedzene s mizivou pridanou hodnotou (ak vobec nejakou).
Jo ja to chapu, pokud se skutecne UML pouziva jako centralni nastroj pro analyzu (a potom pro IS architekta), tak je to fajn mit si moznost ty diagramy kreslit a treba i se zakaznikem upravovat. Ostatni muzou mit a maji jine pozadavky, proto PlantUML nebo Graphviz nebo Ditaa vitaji.
BPM: to je na delsi diskuzi, tam ani Enterprise Architekt nema moc co nabidnout, ale nechci tady delat neplacenou komercni reklamu :) Vim ze EA byl jenom priklad, ale musel jsem reagovat.
Ty zde uvedené příklady nejsou zrovna nejšťastnější, přišly mi zmateně zapsané a autor z nějakého divného důvodu nepoužívá odsazení, které kód taky hodně zpřehledňuje.
Plantuml používám občas v práci, nejčastěji v kombinaci s webem http://codeuml.com, který zobrazuje "live" náhledy na to co právě píšete.
Plantuml je docela jednoduchý a teoreticky v něm můžete dělat i přesnější pozicování, prakticky však ten router stojí za hovno a trvá mi někdy třeba půl hodiny, než ho dokopu k tomu co po něm chci (například umístit dva elementy vedle sebe, i když nejsou propojené). V takových chvílích lituji, že jsem nepoužil nějaký klikací tool, kde bych prvek prostě vzal a přesunul myší, místo abych se spoléhal na demenci routeru a snažil se to nějak ohackovat.
Příště zkusím použít graphviz, na který jsem nedávno někde narazil, zběžným pohledem vypadá dobře.
No, graphviz jsem opustil, protože je vcelku peklo to "napozicovat", teda kromě toho, že výstupy jsou hnusné (subjektivní, já vím) ...
Teď zkouším toto http://www.yworks.com/en/products/yfiles/yed/
Pro mne to má 3 zajímavé vlastnosti:
- umí to "generovat" diagramy podle "tabulky vztahů" a to včetně typu nodů a hran
- lze exportovat do XML, takže se s výsledným diagramem stále ještě dá automatizovaně pracovat
- na co nejde použít ani 1. ani 2. způsob, to lze udělat v gui ...
- a vlastně ještě jedna vlastnost, je to obecné, ne pouze UML
Jasně, já popravdě vždycky šáhl po školní licenci enterprise architectu, jehož ovládání je sice hodně daleko od toho, co bych si představoval, ale alespoň ten výstup vypadal docela slušně.
Každopádně nástroj z dnešního článku se mi líbil a příště ho vyzkouším. Myslím, že kdyby jeho výstup konzultovali s někým, kdo má grafický cit, trochu sladili barvičky a velikosti různých věcí (např ty šipky u diagramu tříd), vypadalo by to skvěle.
Dia je totalni humus, v tom SW je spatne snad uplne vsechno. Kdysi jsem to pouzil -- krome toho, ze se v tom pitome dela, to ma (melo?) divne zaokrouhlovaci chyby, zamorujici uplne vsechno, vc. pismenek, rovnobeznosti car, atd. Viditelne kostrbatej a nesourodej vzhled vysledku.
Presel jsem na Ipe. (Ciste klikaci wysiwyg.)
Pouzivam PlantUML hlavne pro sekvencni diagramy.
Psani slozitejsich diagramu, zvlaste pokud potrebuji vice variant neni prilis jednoducha. Napsal jsem si Groovy builder se kterym se PlantUML "programuje".
https://bitbucket.org/novakmi/plantumlbuilder/overview
Priklad: