.NET Survival Guide: Application Lifecycle Development
BACK TO .NET SURVIVAL GUIDE
Application Lifecycle Development
Application Lifecycle Management (ALM) is a critical measure of a team's maturity and development effectiveness. Even teams of only two and three can benefit from a good ALM process and the tools to support it. Fortunately, modern day development has some excellent tooling for all phases of ALM -- both on the developer workstation side and on the server side -- enabling data sharing between team members.
Not surprisingly, Microsoft offers excellent solutions at both locations.
On the workstation, Microsoft leads the tooling with a well-established, best-of-breed IDE in Visual Studio 2010. It not only includes a fantastic code editor, but also a strong suite of additional functionality (how much functionality varies depending on which Visual Studio SKU you purchase). Additions include unit testing, code coverage, coded UI testing, static code analysis, code metrics, performance profiling, architecture design tools and IntelliTrace.
With such a plethora of excellent tools to increase the quality, perhaps the most challenging part is having the discipline -- especially with unit testing -- to use them all. In spite of the vast list, there's still room to consider additional third-party tooling such as TypeMock, NUnit, NDepends, Resharper, CodeRush, Reflector and other solutions.
Team Foundation Server (TFS) is well-established in the mainstream when it comes to sharing and collaborating with other team members. It includes several main pillars: source-code control, project tracking, automated build, collaboration software, reporting and ALM guidance (Capability Maturity Model Integration [CMMI], Agile and Scum are available via download).
As a group, TFS has one of the best offerings because of the integration between each of the pillars. For example, when checking in code you can associate a requirement (work item) with a set of code changes (changeset), triggering an automated build to verify the work and even reject the check (through gated check-in) if the build doesn't succeed. Collaboration is supported through Microsoft SharePoint, which includes support for a knowledge base in the form of a wiki and provides a launching pad to access the SQL Server reporting system, allowing team members to review ALM quality for the team project. In summary, TFS offers a best-of-breed solution for the full suite of functionality with perhaps only one contender -- a product from Atlassian Pty Ltd. -- that matches the breadth of what's available in TFS.
Even if a development team only needs a portion of the TFS suite, the individual pillars certainly have a lot to offer. However, teams willing to invest the time and energy in setup, configuration and integration may find they prefer to select from the plethora of alternative applications in the same space:
- Source-code control: Mercurial, GIT, Subversion
- Project tracking: Bugzilla, TFS, Mantis, JetBrains
- Collaboration: ScrewTurn Wiki, PHP Wiki, Cloud
- Build server: TeamCity, Cruise or CruiseControl
Most of these turnkey solutions have established mainstream status in the industry.
Visual Studio 2010 and TFS offer a formidable array of tools and capabilities to support team-based development, with third-party tooling providing valuable ways to fill gaps.
About the Author
Mark Michaelis (http://IntelliTect.com/Mark) is the founder of IntelliTect and serves as the Chief Technical Architect and Trainer. Since 1996, he has been a Microsoft MVP for C#, Visual Studio Team System, and the Windows SDK and in 2007 he was recognized as a Microsoft Regional Director. He also serves on several Microsoft software design review teams, including C#, the Connected Systems Division, and VSTS. Mark speaks at developer conferences and has written numerous articles and books - Essential C# 5.0 is his most recent. Mark holds a Bachelor of Arts in Philosophy from the University of Illinois and a Masters in Computer Science from the Illinois Institute of Technology. When not bonding with his computer, Mark is busy with his family or training for another triathlon (having completed the Ironman in 2008). Mark lives in Spokane, Washington, with his wife Elisabeth and three children, Benjamin, Hanna and Abigail.