{"id":278,"date":"2005-09-13T12:57:39","date_gmt":"2005-09-13T18:57:39","guid":{"rendered":"http:\/\/jameskovacs.com\/2005\/09\/13\/UML+20+Stencil+For+Visio"},"modified":"2005-09-13T12:57:39","modified_gmt":"2005-09-13T18:57:39","slug":"uml-20-stencil-for-visio","status":"publish","type":"post","link":"https:\/\/www.jameskovacs.com\/index.php\/2005\/09\/13\/uml-20-stencil-for-visio\/","title":{"rendered":"UML 2.0 Stencil for Visio"},"content":{"rendered":"<p><P>I&#8217;ve had this kicking around in my bookmarks for ages, but I thought I&#8217;d share&#8230;<\/P><br \/>\n<P>Have you ever had to diagram in UML using Visio? It&#8217;s a painful process. The UML add-in for Visio has a number of deficiencies:<\/P><br \/>\n<UL><br \/>\n<LI>Doesn&#8217;t support the latest spec (UML 2.0)<br \/>\n<LI>Even with the spec it supports, it gets some things wrong (e.g. Completely valid UML will show up with red errors around it.)<br \/>\n<LI>Using it to really design a software system downright hurts*<\/LI><\/UL><br \/>\n<P>* Try the following: Create a sequence diagram. Add some objects and method calls between those objects. Realize that you forgot a step. Marquee and move all the method calls down a notch so that you can insert the forgotten method. Guess what? Visio just forgot all the&nbsp;method names previously entered. You have to manually wire-up the method names again. When actually designing a software system, you are constantly re-ordering methods, removing methods, inserting methods, etc. The team that maintains the Visio UML Add-in should really use their own tool for designing version N+1.<\/P><br \/>\n<P>You can&#8217;t fault Visio completely. It&#8217;s a diagraming tool, not a software engineering tool. So how do you stop Visio from pretending to be a software engineering tool and force it to do what it&#8217;s good at (being a diagraming tool)? You grab <A href=\"http:\/\/www.phruby.com\/index.html\">Pavel Hruby<\/A>&#8216;s <A href=\"http:\/\/www.phruby.com\/stencildownload.html\">UML 2.0 Stencil for Visio<\/A>. Thank you, Pavel! You&#8217;ve made my time&nbsp;with Visio that much more tolerable.<\/P><br \/>\n<P>P.S. Some of you might ask, &#8220;Why don&#8217;t you use a real UML tool like [insert favourite UML tool here]?&#8221; I&#8217;m a consultant. As a consultant, it&#8217;s often hard to convince a client to buy tools and Visio comes free with many versions of Visual Studio. Typically I&#8217;ll need to give my client soft copies of any design artifacts in a file format that they can read. Typically that also means Visio. So like it or hate it, Visio is often the lowest common denominator that all developers on a team can use or have access to.<\/P><br \/>\n<P>P.P.S. Some of you might be wondering, given my choice, what my favourite UML tool is? Rational Rose, Borland Together, Sparx Systems&#8217; Enterprise Architect, &#8230; I&#8217;ve tried a lot of different UML tools over the years and while Borland Together is my favourite UML software package, the best UML designer I&#8217;ve ever worked with is definitely a large whiteboard and a digital camera. Honestly, if you can&#8217;t design good UML on a whiteboard, the software packages aren&#8217;t going to help you much.<\/P><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve had this kicking around in my bookmarks for ages, but I thought I&#8217;d share&#8230; Have you ever had to diagram in UML using Visio? It&#8217;s a painful process. The UML add-in for Visio has a number of deficiencies: Doesn&#8217;t support the latest spec (UML 2.0) Even with the spec it supports, it gets some [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[],"class_list":["post-278","post","type-post","status-publish","format-standard","hentry","category-software-design"],"_links":{"self":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/posts\/278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/comments?post=278"}],"version-history":[{"count":0,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/posts\/278\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/media?parent=278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/categories?post=278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jameskovacs.com\/index.php\/wp-json\/wp\/v2\/tags?post=278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}