In my last post I wrote about VSTS 2010 as a modeling tool for more abstract levels like general UML illustrations and requirements modeling. In this post I will take a look at VSTS2010 as a modeling tool for more technical modeling.
UML at the concrete level
The next step after requirements is usually to do some kind of analyzing and/or basic design as the first step towards the destination - real code. After the initial design the next step is to complete the design into a fully technical specification. Now days many projects tend to skip formal analyzing and initial design and go direct to coding. For the people who do go all the way there is/has been tools like Rational Rose/XDE, Enterprise Architect and UModel who could even go the whole way to generate code from the design.
VSTS2010 as an analyzing and initial design tool
Doing analyzing and initial design requires more of your tool than just fancy images. You need some kind of repository to share and reuse your discovered elements. VSTS2010 handles this through the UML Model Explorer. The model explorer act as an in memory repository making it possible to browse through your defined elements. You can organize your elements hierarchy in the model explorer by creating package.
In VSTS2010 you can create class, activity and sequence diagrams and drag and drop elements from the model explorer to your diagrams. Changing objects, like renaming classes or operations, updates all diagrams. It is also possible to promote object and messages to classes and operations. Basically it got most of the capabilities needed for analyzing and initial design of a system.
VSTS2010 as an advanced design first tool
When it comes to doing model first design and more advanced scenarios this first version of Microsoft’s UML modeling tools hits its limitation. The first and most important limitation for using as a complete or advanced design tool is the lack of connection to the source code. Other tools like Enterprise Architect from SparxSystems or UModel from Altova can go the whole way and synchronize (round tripping) your design model and source code.
Even if I could model everything inside VSTS it is not much use going to that kind of detail, if I can’t reuse it to create code. Putting that much effort in a design model requires the ability to generate code and sync changes in code back to the model.
The second limitation or showstopper is the lack of import export features. Especially the capability to import models or code to the model makes it harder to start using it on an existing project. You basically have to create all your elements by hand if you want to use it on an existing project. It would be really useful to have the capability to import source code to generate classes in the model.
VSTS2010 features for understanding existing code
Even if VSTS2010 lack some vital capabilities as an advanced design first model tool, it has many advanced features for architecture and design. VTST2010 focus a lot on understanding your existing code, and the architectural explorer and the architectural tools provides good value and is worth a own post. When it comes to design and UML tools VSTS2010 has a great function for generating sequence diagrams from code, and beta2 promise to be even better, providing drilldown, comments and interactivity in the sequence diagrams making it even easier to understand the existing design.
Summary and reflections
I think that the VTST2010 modeling tools can provide a value in most projects, as a general UML tool or as a tool for analyzing and initial design. If you don't have a modeling tool today, or have an advanced tool you're not using to the full extent should definitely take a look at the model capabilities of VSTS2010. One good way is to stay tuned to Cameron Skinner's blog and his coming post on modeling in VSTS2010.