True Integration with VSTS 2010
Microsoft (India) conducted the "VSTS 2010 Launch" session at the Infosys Bangalore campus this week to familiarize the software community with VSTS 2010 before the official launch (planned in April, 2010). The session included a keynote followed by an intensive hands-on demonstration of the various facilities that are on offer in the latest edition of Visual Studio Team System Suite. There were a number of features on demo, but what was of special importance was the support for the architect community in this release.
The Visual Studio environment, in all its various avatars over the years, has always been known to be an IDE (Integrated Development Environment) - but as a tool the focus has been more on its use as a 'Development Environment' used primarily by the developer community. The term 'Integrated' seemed to be a misfit with regard to how Visual Studio was generally used. However, with the VSTS 2005 suite Microsoft had signaled its intentions of developing Visual Studio into a complete Application Lifecycle Management solution providing tools for everyone involved in the lifecycle - be it the project manager, the architect, the developer or the tester. The Team Foundation Server along with its assorted client side solutions helped achieve this to a large extent. Microsoft’s new VSTS 2010 release builds on the same platform and provides a lot more. A lot of what VSTS 2010 promises has to do with aligning to current technology trends (APIs for multicore programming, cloud computing etc.) and business needs (cutting costs by introducing more avenues for automation). Though you may argue that this has been true for the various Visual Studio releases over the decade, with VSTS 2010 this seem to have been a foremost thought considering that it was a ‘work under progress’ during the year of the 'Great IT Depression' - 2009.
There are a number of invaluable features built into VSTS 2010, but what is heartening is the importance that has been accorded to the architect community in this release. Microsoft has realized the need to support UML within VSTS acknowledging that UML is a hugely popular modeling language. As a result, one will no longer have to look at using other detached tools like Microsoft’s Visio or tools from Rational (Rational Software Architect for example) to model architecture and class diagrams - though the support for DSL (Domain Specific Language) is still retained in VSTS 2010.Significantly, VSTS 2010 also provides facilities to generate source code from UML diagrams and vice versa - a feature that has been considered an important USP of other like tools. VSTS 2010 allows a ‘work item’ or task (from the project management perspective) to be automatically generated from a use case diagram - for example, and assigned to a particular developer – an example of the integration of an ‘architect’ responsibility with a ‘project management’ responsibility.
With VSTS 2010, a lot of importance has been accorded to support maintenance/reverse engineering. Other than the ability to generate UML diagrams (sequence diagrams etc.) from code, VSTS2010 also provides a facility to generate dependency graphs based on assemblies, namespaces, classes etc. Dependency graphs help understand the dependencies between assemblies. In addition, it goes beyond to show details of the exact dependency in terms of the function call being made, the class object being instantiated across dependencies etc. This is of great importance today with a number of customers wanting to re-engineer legacy applications to modern technologies but having absolutely no relevant documentation in place to guide in the initial understanding. A recent project involved the need to re-engineer a native VB/C++ based application to .NET with nothing but the source code made available. In a world where time-to-market is all important, such projects do not involve a complete migration of the application. Rather, complex algorithmic engines are maintained ‘as-is’ in the native code base with the remaining parts of the application migrated to latest technologies to provide a more modern perspective to the end user. (Such native implementations are typically invoked using facilities available in the platform -JNI for Java, interop for .NET) The availability of dependency graphs helps understand the various components and the interfaces to those components without spending time on code reading.
Another neat feature provides the facility to allow the architect to monitor if the source code being developed is on the lines of the architectural decisions that had been written down. For example, in a 3-tiered architecture, the normal rule is for the presentation layer to access the data layer only through the business layer APIs, but during development it is quite normal that such rules are ignored under pressure or as a result of bug fixes resulting in code which works but defies architectural decisions. Such deviations which break architectural rules will result in compile time violations in the VSTS 2010 Error List, thus allowing corrections early in the development life cycles without the reviewer having to point this out. According to Somasegar in his blog here - "The Layer designer enables you to define the logical layers and valid communication paths between layers of your project. Once you have associated assemblies, namespaces, and classes with layers in the Layer diagram, you can validate existing or new code against the layering constraints."
While wholesome support for the Architect community is a novel addition, there are a number of features supporting configuration management and the build process. In addition, Microsoft has deeply focused on testing by providing a suite of facilities to bridge gaps between the developer and the tester. A bug "that manifests on the testers machine but is not reproducible on the developer's machine" is a common incident that repeats in projects across companies. Using VSTS 2010, a tester can now save the environment in which the bug had manifested as a virtual machine instance (using virtualization facilities provided on the OS platform) for the developer to reproduce and investigate better.
To a critic, the sheer number of features available might seem be overkill besides of course, the enormous demands on system RAM requirements when installing and using the complete suite. Microsoft has been making videos of various features available online, in addition to detailed documentation already being made available. It is necessary to install only those components of VSTS2010 that one would really be using to overcome system RAM demands.
VSTS 2010 is truly meant to be an "Integrated Development Environment”. So, go ahead – irrespective of what role you play in the project team - and get your hands dirty using VSTS 2010!

