Doing Architecture with Team System Rosario
Jeff goes through some features in the upcoming Rosario, including UML models and the new Architecture Explorer.
- By Jeff Levinson
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.
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.
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.
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 Jeff.Levinson@nwcadence.com.