Tuesday, December 16, 2008

Visual Studio 2008 Class Designer Flaws

Occasionally, typically as I am in the designing stage of creating software, I find it difficult to work out and reason about my software in my head. It is often difficult to play around with ideas in ones head, especially ideas of multiple dimensions. If you are a developer you often times solve this type of a problem through the use of diagrams of various types. In the object-oriented world of software development, the choice of most developers for class diagrams is UML, created by the OMG back in the 90s.

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