Last year Microsoft launched the "Microsoft Application Platform". The application platform is Microsoft's vision for how businesses can use Microsoft technology to improve information & knowledge management within their organisation and focuses on 5 key areas as follows, each of which wraps a number of Microsoft product & services offerings:
- Business Intelligence
- SOA & Business Process
- User Experience, and
- Data Management
I'm not going to iterate through the various products that sit under each umbrella, instead I'm going to drill into the Development area as that's the one I find most interesting.
The Development area of the application platform is actually called Development & Application Life-Cycle Management, and normally gets tagged with the ALM acronym. The good news is that this isn't just an attempt by Microsoft's to sell you on their tools (though obviously that's a major element of it) but it's also an acknowledgement that good processes and practices need to be followed to ensure that applications don't cost an arm and a leg to not only develop, but also to maintain in the future.
From a Microsoft ALM whitepaper comes this little gem: "Acquiring tools to support ALM, such as Microsoft® Visual Studio® Team System (VSTS), is straightforward. Introducing and driving an ALM strategy within your organization, and understanding the necessary changes required within your business, is more difficult."
The introduction section of the same whitepaper talks to the fact that project failures can be traced to a limited number of root causes described as:
- Lack of visibility into project status
- Ineffective Team Communication
- Balancing Business Demands with Project Risk
- Unpredictable Delivery Times and Quality
These are all valid and legitimate issues. Issues which both traditional and agile development methodologies attempt to resolve.
What is ALM?
Microsoft's ALM offering is a combination of both development processes and supporting software to help automate whichever ALM provided process you follow. In the ALM offering Microsoft have included processes for both agile and traditional development models.
Because technology is always on the move a normal development methodology won't specify what technology a team should use, just the processes and practices to follow. A team can be using .NET, Ruby, Java, PHP, Cobol, whatever. The difference with ALM is that even though it includes methodologies to follow, it also includes tools and technologies to support those methodologies - namely Visual Studio Team System (VSTS).
Knowing that VSTS is part of the Microsoft ALM offering it might be easy to fall into a trap of thinking that ALM is just VSTS by another name. It's not. VSTS in and of itself does not require any specific development process. It is designed to help you automate your development activities now matter what they might be. How a team then uses VSTS is up to them. In fact, you can easily find teams using VSTS that have a development process as loosely defined as "write code and see if it works". That's not something that can be considered as ALM, simply because it fails to address the project management aspects of application development.
How Does VSTS support ALM processes?
So, knowing that VSTS is part of the ALM offering, how does it help? What should the ALM support tool offer us?
According to Wikipedia, ALM offerings are generally expected to cover the following features:
- Requirements Visualization
- Requirements Management
- Feature Management
- Project Management
- Change Management
- Configuration Management
- Build Management
- Release Management
- Monitoring and Reporting
And VSTS offers support for all of these items.
Project Management, Requirements Management, Change Management, etc are all process/methodology related items and Team Foundation Server includes process templates for both agile and traditional development methodologies (the MSF Agile and MSF CMMI templates) as well as letting you plug in your own process templates if you wish to use an alternative methodology (e.g the Scrum template).
For more info on VSTS and how it supports ALM have a look at the Team System site.
It should be noted that Microsoft has an online assessment tool to help you gauge how well you are performing Application Life-Cycle Management.