Inside VSTS

Doing Architecture with Team System Rosario

Jeff goes through some features in the upcoming Rosario, including UML models and the new Architecture Explorer.

This is the first column in a series that will highlight new features in the next release of Team System (codename "Rosario"). While this next release is a ways out, I'm extremely excited about the new features and I think you will be, too.

Team System's initial release -- and the 2008 release -- under-delivered on the promise of the Architecture edition, in my opinion. Microsoft spent a great deal of time adding to this edition for the next release, and I think this will become the preeminent SKU in the Rosario release of Team System.

Now, before we get started, keep in mind that everything covered in this article is available in the Rosario April CTP, which is publicly available from Microsoft. Note also that this is a pre-beta release and, as such, is subject to change. For the following examples, I used the eBanking application included with the April CTP.

Architecture Explorer
The first great new feature of the Rosario Architecture Edition is the Architecture Explorer, a WPF interface for (and this is a no-brainer) exploring your architecture. It allows you to drill through all of the projects, classes, methods, code metrics, relationships and just about anything else you can think of.

Figure 1 shows a basic view of the Architecture Explorer. The lists at the top let you select which objects show up on the design surface. At this point, the design surface is a read-only and all navigation is done via the lists.

If you look closely, you can see that for each object (solution, project, class, etc.) you can select items contained within, objects which contain the object and objects/methods which are called by the object. You can also see which interfaces are implemented by an object, run code metrics on an object and perform various other pieces of analysis (there are so many options I could write an entire article on them). The resulting views on the design surface can be saved as .XPS files and distributed.

The design surface also allows you to view the information in different ways. Instead of showing you all of the different views here, I'll just pick my favorite: the dependency view, as shown in Figure 2. This shows the relationships between classes, which makes understanding the impact of changes much, much easier than it's possible today.

UML Diagrams
Microsoft has listened to the community feedback and added the standard UML models to the Architecture Edition. These models include the Activity (see Figure 3), Component, Logical Class Diagram, Use Case and Sequence diagrams (at least, those are the diagrams that are currently there). All of the diagrams are UML 2.x compliant.

The interesting feature of the Use Case diagram (see Figure 4) is that it begins to provide a platform for requirements traceability from the model to the code. This functionality isn't implemented (and may not even be fully thought-out) at this time, but the community is crossing its fingers.

Figure 5 shows the Component Diagram, which allows you to easily visualize your entire application at the component level and show aggregations of components that the current architecture diagrams don't allow you to easily do. It's also possible now to represent non-semantic information on the diagrams because these diagrams aren't tied directly to code.

The last diagram I'll show you in this article is the Sequence Diagram, probably one of the most exciting diagrams available in the new tool. (OK, I know calling a diagram "exciting" is a stretch, but go with me on this -- it's cool.) Figure 6 shows the Sequence Diagram but that isn't the cool part. I'm getting there...

I did not create this diagram! I reverse-engineered it. The diagram (at this point) is slightly different than the other diagrams in that the information represented on the diagram can represent semantic information. You can either create this diagram from scratch and forward-engineer your code (i.e., your methods, not necessarily which objects they call as that, is in the method code), or you can reverse-engineer your code through the Architecture Explorer. This allows you to look at a method and instantly discover the exact code path that a method calls up through. You can also depict loops and branch conditions on this diagram which makes it extremely powerful.

The Rosario release of the Team System Architecture Edition provides incredibly powerful functionality to help you architect applications from the ground up, but it also helps you understand how your system works. And this is just the beginning. Because this is an early version of the Architecture Edition, you can expect a great architecture experience and additional tools to help you manage your applications from an architectural perspective.

Stay tuned for further updates. And if you have any questions/suggestions, please visit my blog and leave a comment; I'll try to pass it along to the Architecture Edition team.

About the Author

Jeff Levinson is the Application Lifecycle Management practice lead for Northwest Cadence specializing in process and methodology. He is the co-author of "Pro Visual Studio Team System with Database Professionals" (Apress 2007), the author of "Building Client/Server Applications with VB.NET" (Apress 2003) and has written numerous articles. He is an MCAD, MCSD, MCDBA, MCT and is a Team System MVP. He has a Masters in Software Engineering from Carnegie Mellon University and is a former Solutions Design and Integration Architect for The Boeing Company. You can reach him at [email protected].

comments powered by Disqus

Featured

  • Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds

    New Vision support with GitHub Copilot in the latest Visual Studio Code Insiders build takes a user-supplied mockup image and creates a web page from it in seconds, handling all the HTML and CSS.

  • Naive Bayes Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the naive Bayes regression technique, where the goal is to predict a single numeric value. Compared to other machine learning regression techniques, naive Bayes regression is usually less accurate, but is simple, easy to implement and customize, works on both large and small datasets, is highly interpretable, and doesn't require tuning any hyperparameters.

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

Subscribe on YouTube

Upcoming Training Events