Sunday, November 02, 2008

Visual Studio 2010 is huge!

During this week’s PDC 2008, I’ve been spending particular attention to sessions related to the new features of Visual Studio 2010 Team System and Team Foundation Server 2010. The one statement almost every session started with was that this release is huge, and I totally agree! I’ve not seen so many new development environment features since the introduction of Visual Studio .NET in 2001. And the best of it all, almost all of them are intended to integrate the many roles team member are typically working in.

Microsoft .NET 4.0 Logo

To gain a sense of feeling for the many new features, I compiled a comprehensive list for you. Notice that these included only the things related to Visual Studio itself or the Team System features. I tried to keep all the application and technology specific things out of it.

General

  • Custom folders within the Reports, Builds and Work Items nodes.
  • Most toolbars have a revamped design or have been split up so that they only appear when necessary.
  • Multi-monitor support
  • VSTS now uses WPF as the built-in technology for rendering the user interface therefore allowing some great visual effect such as a rich-editor for code comments or better integration with bug tracking.
  • More advanced code generation a la Resharper (generate class, generate stub). Its intention is to facilitate TDD by introducing shortcuts for generated stubbed classes, methods and other members. Hopefully, Jetbrains will start working on a 2010-compatible version soon.

Work Item Tracking

  • Work item queries support hierarchical views to see parent-child relationships. You can even use drag-and-drop to change the order in which tasks occur.
  • The work item description and history fields now support rich editing features.
  • The layout of the bug entry form has been redesigned to use the available desktop space more efficiently. The history and the description are all on the same page now, and many fields and drop-downs have been shrunken to get a better overview.
  • The work item query editor now supports having a filter that specifies which child work items should be displayed in the tree-view. And that same filter can also be used to show only work items that have (or not) specific child work items.
  • You can now filter work items on groups of users, so you no longer need to use Areas to organize your work items by team.

Source Control

  • Branched folders use a new icon in the Source Control Explorer to distinct them from ordinary folders.
  • Annotate has been enhanced to show the change set of the branch from where it originated, instead of the change set at which it was merged.
  • New branch viewer that shows the branches and their merge points in time or in a hierarchy. It even supports dragging-and-dropping a branch onto another to initiate a merge.
  • Merge conflicts during check-in or branch merges now appear in the Pending Changes window instead of the currently blocking modal window.

Architecture

  • Dependency Viewer to find the amount of dependencies between assemblies, namespaces and classes in different views (tree-view, graphs, zoomable, navigable, jump to code.). For example, if you see a Death Star pattern, then you know you have a super class.
  • Reverse engineer a UML 2.0 sequence diagram from an arbitrary location to understand how some piece of code works together. You can create your own as well and generate code from it (not required). The Demeter pattern is obvious from that.
  • UML 2.4 Class Diagram, including UML profiles, packages,
  • Also Component Diagrams, Use Case Diagram, Activity Diagrams. Use Case Diagrams can be associated with Word documents and work items.
  • On great addition is the Layer Diagrams that allow you to model the architecture of your solution. It specifies which classes, assemblies or namespaces are allowed to use each other. Whenever you build this solution, MSBuild will verify whether any dependencies are violated.

Project Management

  • There is a new process template called VSTS for Agile Development. It is has different work item types which contain more information that might just be very help-full to bridge the gap between the current MSF Agile and MSF CMMI templates.
  • All work item queries have received a Create Report in Excel context-menu item that will create a nice Excel worksheet with figures on current values or trends which can be fully customized.
  • I’ve tried a excellent Excel worksheet for planning available team capacity against the planned work for one or more iterations. It supports dealing with holidays and sports various graphs for detecting any planning issues. It even includes the possibility to let TFS calculate the average productivity in a previous iteration.
  • New Sharepoint (MOSS/WSS) team site with special TFS WebParts to display various customizable Excel reports, graphs, list of bugs and tasks, KPIs. Visual Studio Web Access is now integrated in that site.
  • All existing reports have been cleaned up and improved and also include a short list of questions explaining the purpose of the report. Moreover, each report lists the query parameters used, a reference to on-line help, and a few links that bring you to related reports using the same query parameters (such as the data range, area, iterations).
  • Conditional formatting or extra columns in MS Excel lists are retained after synchronizing a work item list with TFS.
  • VSWA has received a new layout as well, including the tree views introduced in VSTS.
  • Full synchronization between Microsoft Project and the corresponding work items in TFS, hour estimations, scheduling, ordering between tasks, and many more.
  • Team sites can be created as a site collection or as a individual site.

Testing

  • Double-clicking on a test result jumps to the code instead of the test result details.
  • There is a new tool window that shows the tests that are affected by the current pending changes.
  • Codename “Camano” is a standalone test suite for managing test cases, execution of them in a set of managed virtual servers (through Hyper-V, Systems Center or ESX), being able to get access to the test environment, get checkpoints, record videos, etc. It is integrated with TFS to link test cases with requirements and bugs in TFS The goal? To easily reproduce bugs because all information needed to investigate the defect is all there.
  • Part of “Camano” is a standalone manual test runner tool that can be used by testers to get everything they do recorded as a video. It also records the detailed system info, and a comprehensive stack dump of the system-under-test that allows debugging the application from your development PC as if it is running locally. The current codename for this is Historical Debugging. No more ‘can’t reproduce the bug’. If you create a bug, everything is attached to it.
  • .NET 4.0 introduces a partial implementation of Spec# called Contract Library which allows you to include statements that specify the pre- and post-conditions of your methods and invariants and let those be validated both compile-time and run-time.
  • There is a new UI recorder that you can use to record an interactive test of a WPF, Windows Forms or ASP.NET application. It will generate unit tests (annotated with the new [CodedUITest] that talk to generated code to simulate the interaction with the application-under-test.

Building & Deployment

  • It includes a tray tool that serves a build notification agent.
  • VSTS introduces a new check-in policy named Gated Check-In. Whenever a developer attempts to check-in a new change set, the policy will automatically shelve that change set and start a Buddy Build on the configured build machine. If this succeeded, then the change will become available to the rest of the team.
  • Also, whenever a team member wants to verify its changes against a number of other shelve sets, he can start a Buddy Build. He can simply select the shelve sets to include and let it build on the build machine.
  • The build log has been redesigned from scratch. Through collapsible regions, it provides much more details on each individual step, such as the exact timings of that step. It hosts clickable actions to jump right into the corresponding code or other related artifact. And it has a nice histogram that shows the performance and the success of the last couple of builds.
  • More refurbished and redesigned hierarchical build log, including collapsable items, detailed timings, action buttons with common tasks such as opening the drop folder, and a mini map (like the document structure in Word), little graph showing the timing and succesrate of the last couple of bugs
  • New build reports showing a better overview of the success rate, unit tests and code coverage.
  • New option to index and share symbol files on a central symbol share in case you need to debug release files
  • If you have multiple build agents, you can tag those agents with one or more tags that describe the agent’s capabilities. Whenever you set up a new build, you can then specify the tags that your build needs. Visual Studio will then automatically try to find an available build machine that matches the requirements.
  • The internal structure of a build representing by an MSBuild project file is now available by a fully customizable Windows Workflow. This essentially allows you to modify or tweak every step that occurs within a typical build. For instance, you can now change the way build IDs are generated, or every execute specific steps within a builds in parallel.
  • You can delete builds without loosing any labels or test results related to them.
  • Brian Harry demonstrated the cooperation of Eclipse / Team Prise with Visual Studio. You can, with the right tools, let Team Build build Java projects and even run unit tests using MSTest. Obviously, the corresponding results and build-logs are available from within Team Explorer.