VS.NET 2005 Team System ships with a number of designers, and you should pay particular attention to the Class Designer. Like all Class Designers, this canvas lets you visualize the structure of classes and types in your project generating source code as you go. In fact, don’t think of this tool like round trip engineering since changes you make to your code are instantly reflected in the diagram and visa versa. Why do you want to use the class designer? Well, you can use it to document or understand existing code (trying to figure out someone elses code bugs me sometimes), you could use it to help take what’s in your head to your screen – and you can also do fancy things like refactoring your code. What I really like about this particular designer is that it is tied to the CLR where a lot of other designers are strictly UML based. This designer is even language specific – for example, if I’m in a VB.NET project I get Public, Private, and Friend access levels… in a C# project I get public, private, and internal. Nice. I simply love the fact that I can toggle between code and picture seamlessly (did I mention I love making pretty pictures?). I can also create enumerations, abstract classes, structures, delegates, and modules… and the Class Details window ROCKS I might add.
Now, where this breaks down for me is at the analysis level. Sometimes I don’t want code behind… sometimes I just want to “think” – especially when I’m just getting to understand the system I’m trying to build. I still need a scratch pad design surface. That kinda bugged me about Borland Together as well… I want to sit down and do class extraction and go “hmm.. that’s a boundary type of class, that’s a controller type of class…,” and “hmmm… I wonder if I could abstract that out a bit more – let’s try…” Borland Together allowed me to add class diagrams, but they were only fully functional when the class diagram appeared within a project – otherwise the design surface would only allow me to create objects. So, I guess that leaves Visio as my scratch pad… There just doesn’t seem to be an easy transition from my scratch pad to the Class Designer – kinda hard to establish traceability.
In fact, I find that traceability seems to be lacking throughout Team System … unless you want to track to Team System Work Items – and for things like code checkins and specific implementation I’m sure this will work nicely. However, considering TS doesn’t really provide any analysis tools other than Visio – there doesn’t seem to be anything to trace to. One could probably get creative and find ways to have transitive trace relationships through work items and Visio files…but I don’t think that’s correct either. But, this is a first release – and for a first release it is a whopper! However, I don’t want to sacrifice requirements/analysis traceability just because its not there – so, I’ll have to find some solution some how.