Thursday, October 15, 2009

VSTS2010 as a modeling tool II

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.

Tuesday, October 6, 2009

VSTS2010 as a modeling tool

Earlier this week I had the opportunity to take the VSTS beta out for a test drive as a modeling tool. My task was to suggest and describe possible scenarios of usage for an external vendor. Luckily I had a virtual environment with vsts2010 beta at hand (I never leave home without it :) ) So I took vsts out for a spin as my modeling tool.

Communicating at an abstract level
The task was really to communicate, at a high abstraction level, complex scenarios and interactions between the user, part of our system and part of the vendor's system. After thinking about it for a while I decided to try a sequence diagrams to illustrate the interactions. So I started creating a new sequence diagram. Doing so was quite easy and in a couple of minutes I had my first sequence ready. But drawing a sequence diagram is only usefull if you can publish it. In order to do so I simply copied and pasted the diagram into my word document.

VSTS2010 as a basic UML drawing tool
As a drawing tool for basic UML illustration I must say VSTS2010 looks really good. Of course there are always things you miss or wish for, especially in a version one beta. My biggest issue was that I wasn’t able to change the icon for the objects in the head of the lifeline. The first overall impression is that it is easy to work with and have a good feeling as a drawing tool.

VSTS2010 as a requirements modeling tool
As it felt good as a drawing tool I got curious if it could be used more as a modeling tool in a project. One of the first things in a project is in most cases modeling requirements in some way.

In VSTS2010 modeling requirements is mainly done by creating use case diagrams. Once again it is fast and easy to create a use case diagram and populate it with actors, use case and systems boundaries. In VSTS2010 you can create (or link to ) a user story work item (or any other work item). This gives you a direct link from the high level model to the detailed requirements documentation. Another feature in VSTS2010 is that you can add artifacts to your use case diagram and link them to either work items or files in general. My colleague Clemens Reijnen wrote a post on this Enrich VSTA 2010 Use case diagram with SketchFlow Screens

Summary and reflections
I have many times over the years reflected over the lack of a good tools, or perhaps good enough tools, for UML modeling. Either you had a graphic library like Visio or a highly specialized tool for design with a steep learning curve, like Rational Rose/XDE. I hope and it feels like the VSTS2010 UML modeling tools could finally fill that gap and provide something in between Visio and the specialized tools. Let’s hope Microsoft package this so it can widely spread and used from all vsts editions.
Speaking about filling holes, I’m also impressed with the way it’s possible to tie together requirements modeling, specification and even test, out of the box in vsts2010.

In the next post I will take a look if and how the UML modeling tools in VSTS2010 can be used for analyzing and designing a system.