ALM for C++ in Visual Studio 11 at TechEd NA 2011

Rong Lu

Greetings!! I’m Rong Lu, Program Manager with the Visual C++ team.

It’s been extremely exciting in Atlanta at TechEd North America 2011!

Terry Leeper, Diego Dagum and I had a chance to be at TechEd and joined the announcement of Application Lifecycle Management (ALM) roadmap in Visual Studio 11. On Monday, Jason Zander announced ALM Roadmap in Visual Studio 11 (check out his blog post for the entire roadmap and details), and then Cameron Skinner did a demo intensive foundational session which showed lots of the ALM features we’re putting in VC11 (check out his blog post and session recording).

But you may ask: so, what does it mean to C++ developer teams? Terry and I gave a talk about this on Tuesday at TechEd (check out recording if you missed it! Smile) and short answer is C++ has made up a lot of ground and nearly all the VC11 features work as well (the only exception is the code cloning feature which we’re working on to enable for C++). In the session, we talked about what’s already available in VS 2010 for C++ as well as highlighted and demonstrated some of the new things will be available in VC11 that might be especially interesting to C++ developer teams.

Here is a list of what these new features are in VC11 (check out Cameron Skinner’s session recording for demos on them):

  • Agile Planning Tools – create transparency across the planning process and full team participation through solutions like the new backlog and task board.
  • Lightweight Requirements – a natural way to capture and receive feedback on requirements early in the process.
  • Stakeholder Feedback – working code which matches the expectations of stakeholders.
  • Continuous Testing – unit test coverage ensures quality in the final product.
  • Agile Quality Assurance – increased code quality with code review support, enhanced unit testing frameworks and new exploratory testing support.
  • Enhanced User Experience – more time ‘in the zone’, through improved experiences for day-to-day tasks.
  • Aligning Development with Operations – increased connections and insight between the operations and development teams lowering the time it takes to fix a bug in production.

Pretty cool, eh? And now I’d like to highlight some of the new features that will be especially useful to you C++ developer teams (hope you feel the same! Smile). Check out our TechEd session recording for demos of these features as well. Smile

 

Static Analysis

Static Analysis (aka Code Analysis) can help you to identify common coding errors before the application runs. It’s already available in VS 2010 (works for C++!), and in VC11 the experience will be significantly enhanced.

  • The UI is re-designed to provide richer information.
  • The analysis engine is more powerful to diagnose errors and warnings.

Static Analysis (click for a larger image)

 

Architecture Tools

Yes, we brought it to native C++ world. The set of architecture tools can help you visually discover the architecture of your application, design architecture and enforce the implementation to be compliant.

  • Dependency Diagrams: create the most up-to-date architecture diagrams right from your code! The dependency diagrams can be created by binary, namespace, class or include files (specially designed for C++!).
  • Architecture Explorer: explore the assets in your application and generate diagrams by drag and drop onto the design surface!
  • Layer Diagram and Dependency Validation: use layer diagram to create your architecture layers and run validation to detect if the implementation is in compliant with the design.

Dependency diagram by binary

Dependency diagram by binary

 

Dependency diagram by include files (click for a larger image)

Dependency diagram by include files

 

Create a layer diagram and run validation

Create a layer diagram and run validation

 

Errors are reported if any architecture violations (click for a larger image)
Errors are reported if any architecture violations

 

Unit testing

In VC11, you will be able to write unit tests for your native C++ applications. The unit tests can be written in C++, and run in the unit test framework which itself is also native!

Unit testing (click for a larger image)

 

Code Coverage

Now you’ve got unit tests, and here comes code coverage which is well integrated with the unit test framework. You can get code coverage data by running the unit tests and learn how much of the code has been covered by the tests. The enhanced code coverage feature not only works great with the native unit test framework, but also will work the same way for managed test frameworks. In addition, it now does dynamic binary instrumentation as oppose to static binary instrumentation in the past, so it’s also a lot easier to use!

Code Coverage (click for a larger image)

 

 

Hope you would like these features! Look forward to hearing what you think of them.

 

Best Regards,
Rong.-

PS: our session at TechEd on all these was just posted in Channel 9. [Watch it here] Enjoy! Winking smile