Now if you are a Windows developer, the choice is quite simple, Microsoft Visio! This software is loaded with all sorts of different diagarams that can be used to help prototype software in the early development stage. In these software packages you can do two helpful things: reverse engineering and forward engineer software.
Reverse engineering is the process of taking code that you wrote and whipping it back into a UML diagram. On the other hand forward engineering is taking your carefully typed UML diagrams and whipping them into code.
Fortunately Visual Studio 2005 and Visio 2007 support the reverse engineer feature, meaning that I can take my code and make sense of it using UML. However, here is where the bad news sets in : Visual Studio 2008 does not natively support reverse engineering through Visio! Instead you have to use the class diagram system in Visual Studio 2008. This system has its ups and downs:
On the positive side:
- Classes and all data types in your VS solution can be easily pulled into the diagram (i.e. reverse engineering)
- As changes are made to your code they are automatically reflected in the class diagram(s)
- Included in all editions of VS 2008, meaning no need to buy Visio
On the negative side:
- UML is not fully supported, if anyone has taken CS246 at the University of Waterloo would know, basic UML concepts like composition and various relationships are not there!
- The system has a steep learning curve because tools are not obviously displayed, for instance in Visio you can draw a line to link two classes together, in VS you have to go through several steps to accomplish something like that
- The diagram produced, while it describes the solution, it can give rise to ambiguity in ways that a strict UML tool wouldn't allow
So the verdict is out! If you want a free somewhat acceptable modelling tool stick with VS 2008's class diagramming tool. If you want something that is harder to use, due to its lack of reverse engineering in VS 2008 try Visio. Visio is a wonderful tool in that it allows you to model and diagaram everything from user interfaces all the way to UML, networking and even database diagrams. It is definately worth the effort and money if you are doing any serious project. Just my thoughts...
No comments:
Post a Comment