Microsoft significantly overhauled its application life-cycle technology in the “Ultimate” edition of Visual Studio 2010, eclipsing the capabilities of its predecessor, Visual Studio Team System. But better code quality doesn’t come out of the box: Using Microsoft’s tools to their full effect requires organizations and developers to behave and think differently, experts say.
ALM requires a mindset that emphasizes doing it right the first time, said Benjamin Day, founder of Benjamin Day Consulting and a Microsoft Most Valuable Professional (MVP) award winner for Visual Studio Team System. MVPs are recognized by Microsoft for their work in supporting Microsoft technology communities. “Hundreds of developers haven’t gotten the religion of doing things the right way” in terms of creating quality software, he said.
Visual Studio 2010 Ultimate’s ALM tool set addresses software quality. It incorporates tools for architecture, builds, testing and work-item management, and it is available to MSDN subscribers at no additional cost beyond the license and subscription.
Individually, Microsoft’s ALM tools are not best of breed, but instead are integrated well together, said Martin Hinshelwood, a solution architect at SSW Consulting Services of Sydney, Australia, and a Microsoft MVP for ALM. “There is one support model, one set of installations, and one person to call for support,” he said.
Customers who want to adopt those tools must acknowledge that they are also implanting a software process as well as the tools into their organization, said Chris Menegay, a principal consultant for Notion Solutions and a Microsoft regional director (recognized by Microsoft’s Developer Platform evangelism group for technical expertise). Adopting ALM practice is not as simple as just buying the tools, he said.
Developer buy-in is key
Driving developer buy-in is the key to success, because Visual Studio 2010 Ultimate brings about “big change” for organizations from a procedural and tooling perspective in software testing, Menegay explained. He said in discussing what he believes is the disadvantage of using best-of-breed tools, “With HP’s Mercury testing tools, testing is on an island separate from the development teams. They are two different tool sets: HP Quality Center on one side, and Visual Studio on the other.”
Visual Studio’s new testing tools are designed to bridge the work, or “islands,” of developers and QA professionals, and have created visibility into testing as a practice inside of organizations, Menegay said.
Microsoft built tools, including Test Manager and Lab Manager, that are meant to address discrepancies in the maturity of customers’ testing practices. Test Manager helps non-technical QA professionals build and manage test cases, and Lab Manager provides a virtual environment for provisioning “snapshots” of testing environments, said Hinshelwood.
Test Manager records testers running through test steps, and it can convert those recordings into coded UI tests. That eliminates the need for many manual tests, Hinshelwood said. For example, a person was required to enter something like “2+2” into MS Calc to read its values, but now a coded UI test can read the values, he explained.
“Everywhere I go, you don’t have technical testers; you have generalists that do manual testing, clicking buttons,” said Ed Blankenship, an ALM consultant at Notion Solutions and MVP of the year for Team Foundation Server and Visual Studio ALM in 2010. “Microsoft has solved the manual testing problem—for now.”
While it has tackled manual testing, Microsoft’s strategy for automated testing is still unrolling, Blankenship said. Technical testers are still required for the performance and stress-testing of .NET applications in Visual Studio, he said.
Lab Manager is a server-side tool (currently available as a release candidate) that “pools everything together,” Hinshelwood said. It utilizes Microsoft’s Hyper-V hypervisor technology to create and preserve test environments, and a build server to manage the scenario. If a manual test passes, the virtual machine shuts down and the build passes, he explained. A failure generates a point-in-time image across the entire test environment for further re-tests.
“The developer knows they are looking three builds back instead of trying to debug against code that changed since an error was found,” said Patrick Hynds, president of consulting firm CriticalSites and a Microsoft regional director.
Visual Studio 2010’s IntelliTrace debugging tool works in tandem with Lab Manager to record the application’s execution history. “It’s changed the way I’ve done development…You can find when it’s the tester’s fault and not the program’s fault,” Blankenship remarked.
Lab Manager does not yet support Microsoft’s Silverlight Web application platform, Day said. “As soon as they add Silverlight, it will be the awesomest test tool ever.” Visual Studio 2010 includes templates for Silverlight 3 projects and a Silverlight application designer.
Nonetheless, using Lab Manager, which sorts out requests from multiple testers on a shared machine, requires a significant investment in hardware, and the feature is likely intended for larger Microsoft customers, Hinshelwood said. He added, though, that he has observed a growing interest within smaller development organizations that are willing to make the investment in new hardware.
Moreover, interest alone does not equate to success. Organizations that are just buying the tools with the intention of having a developer figure out what to do with them won’t be successful, Menegay said. There needs to be a coordinated effort to use the tools through the entire team to manage test cases and the test environments, he added. “One person can’t do it alone; it must be a team-based process decision.”
Other ALM feature additions in VS 2010 Ultimate, including build tools and a new hierarchical work-item tracking capability, also require a process implementation that will change how organizations manage work and run projects, Menegay said. “The process requires people working together in agreement. There cannot be one person saying, ‘This process sucks, I won’t do it.’ [Implementers] need to be committed to process improvement and wade through organization politics.”
Building quality
The two most significant changes to Visual Studio’s build tools are the inclusion of gated check-ins and Windows Workflow Foundation (WF) to enable developers to write scripts that automate builds, Hinshelwood said. The main beneficiaries will be organizations that do continuous integration, he added.
Developers can automate builds using WF as opposed to MSBuild, Microsoft’s longstanding build system for Visual Studio. MSBuild wasn’t designed to do anything except compiling, so WF is better suited for team workflows and customizing builds, Blankenship noted.
Continuous integration is a development practice focused on quality control wherein team members integrate their work frequently and in small bits. The approach is meant to cut down on integration build and testing errors, and to allow teams to build software more cohesively and rapidly.
Microsoft’s gated check-in checks the build into a temporary area and only commits to the mainline source repository if the build passes, Day explained. “It’s way, way harder to break the build now.” The time lost from developers checking in broken builds can be a problem that accumulates and causes hours of downtime every day, he said.
Day also praised Microsoft’s source-control tools, which he said can help organizations more easily handle merge conflicts and visualize where a change set has gone in a complex branch hierarchy. Dependency diagrams and a tool called Architecture Explorer visualize application architecture.
“People are surprised when they see architecture on paper and say, ‘Whoa, is it really doing that?'” Blankenship said. A new hire would also be able to save a lot of time by viewing the high-level diagrams, he added.
Developers may also create their own private source branch to run against the main build to see how their code performs. An impact assessment tools determines which code paths have changed since the last check-in and which tests to run on those code paths. “There are fewer tests, and the build finishes faster,” Hinshelwood said.
One downside is that many organizations do not have enough build hardware to use the gated check-in feature, Blankenship said. “If 10 developers check in five times per day, that’s 50 builds that have to happen. Fifty builds takes 50 hours, so it will take two days to get through one day’s check-in.” He recommends purchasing commodity hardware to scale out the build servers.
The inclusion of hierarchical work items into Visual Studio means that development teams no longer have to do “crazy workarounds” to support hierarchies, and Microsoft Project hierarchies can be saved into TFS, Hinshelwood said. The benefit is that developers gain a lot more visibility into the context of what they are doing, he added. “A developer working on a single task can identify where the task has come from, and see the user story or bug that is associated with it…It’s almost self documenting.”
Menegay believes that work-item tracking can give development organizations their “biggest bang for the buck,” if they are willing to change how they coordinate and manage project work efforts. It works equally well for both agile and more traditional waterfall development processes, he said. “People always have project plans, but nobody actually tracks them.”
“Work items can have parents and children, and work-item links can have types (e.g., a bug can be linked to a test by a ‘tested by’ link type),” said Terry Clancy, business development manager for Microsoft’s developer tools ecosystem in a previous interview.
That ability enables work items to be leveraged for reporting purposes, Blankenship said. “You can find user stories without test case IDs. You don’t need products like [HP] Quality Center to track testing. By keeping everything in the same system, you can easily report off of it and have traceability.”
Many moving parts
Having all of those ALM features integrated into the same system requires a delicate balancing act on Microsoft’s part, said CriticalSites’ Hynds. “Microsoft has greatly improved the installation, configuration and functionality of Visual Studio, but it has a lot of moving parts. My hope is that it doesn’t go the way of an ERP and become a behemoth.”
Installing Visual Studio 2008 Team System took days to complete and was a “nightmare,” Hinshelwood said. In contrast, installing TFS in Visual Studio 2010 took about 20 minutes, he claimed. “The machine I’m sitting at now is literally a laptop running Windows 7.”
There are now many supported installation topologies to pick from, and the installation is broken out from configuration, Hynds said. Installing TFS used to require architects, developers and network engineers to all work together, he added. “Most people don’t have the skills to work in all three domains. Prior to this version, I didn’t feel comfortable having anyone do the task of setting up TFS without my skill set.”
This version of Visual Studio Ultimate is the “sweet spot” for how much functionality Microsoft should provide in the core product, offering about 80% of what organizations need from everything from product management to development and testing, Hynds said. More advanced features that only 1% of customers use should be rolled into accelerator packs, he suggested. “My view is they leave that stuff as a separate product like they did with BizTalk.”
Microsoft offers solution accelerators for BizTalk Server for specialized customer needs, such as Health Insurance Portability and Accountability Act compliance. It has also build an extensibility framework into Visual Studio.
The Microsoft Extensibility Framework opens Visual Studio’s architecture to partners to add Windows Presentation Foundation-based components to the IDE. Microsoft’s new approach to how TFS handles hierarchal work items and work-item linking also creates new opportunities for partners, Clancy noted.
More than 57 Visual Studio industry partners announced solutions for Visual Studio 2010 when it launched in April, ranging from ALM tools to interoperability solutions, installers, parallel programming tools, process templates, productivity add-ons, and .NET control suites.
As for Microsoft, it should continue to innovate to make developers more productive, Hynds offered. “Gated check-in is the kind of things we need to see more of from them.”
What’s new under the Visual Studio hood
Visual Studio 2010 Ultimate delivers a slew of new features designed to help teams work more efficiently, improve code quality, and incorporate testing throughout the entire development life cycle.
Microsoft cycled much of its resources toward architecture and build management tools. A suite of architectural tools offers requirements compliance, modeling and visual representations of source code.
A tool called Architecture Explorer provides new source control features, including branch visualization, which helps developers maintain multiple releases of software in parallel.
The build system moved to Windows Workflow Foundation for customizing and deploying builds.
For project management, Visual Studio now supports hierarchical work items, which enables work items to be queried with the context of their user stories.
Team Foundation Server (TFS) integrates with Microsoft Office and SharePoint to populate spreadsheets with project data. Microsoft provides Excel templates for managing agile projects, as well as for following its Security Development Lifecycle.
Microsoft has made it easier to back up and move projects across servers, to scale applications across servers, and to configure and install TFS.
Other features are designed to support continuous integration. The build server verifies code in isolation as it is checked into a TFS repository to make sure that it is not damaged in any way. Code quality was another primary focus of the 2010 release.
New test planning tools help organizations execute against plans and report back on the progress of tests. Microsoft has included Lab Manager, a tool that captures and recreates manual testing environments using its Hyper-V virtualization technology. The data captured from the tests can be sent directly to developers.
Visual Studio’s ALM capabilities can be extended by third-party solutions due to a new extensibility framework.