G’day! I’m John Stallo, a Program Manager working on the Visual Studio Class Designer. In this blog entry I’d like to give an overview of what our goals for Class Designer in this release are, and perhaps more if not equally important, invite folks in a lively discussion to help us direct our future path in delivering useful tools for our users.
But, before I get started, here’s a screenshot to help you get a better idea of the tool I’m talking about (incidentally, it’s a diagram visualizing File System classes in System.IO, which is part of the .NET Framework):
(click the above bitmap to show the full picture)
This reminds me of a quip someone on our team came up with when we first starting building the designer. It went something like:
A picture may be worth a thousand words, but a class diagram is worth thousands of lines of code.
V1 Class Designer goals
There are certainly many class diagramming tools out in the market today, with some enjoying widespread use. So while the concept of class diagrams isn’t new, we set ourselves two main goals for the first version when we decided to build a Class Designer from the ground up and fully integrated within Visual Studio:
Making diagrams relevant not only means that they should provide functionality that makes them useful for development tasks such as code design through to documentation, but also making sure the diagrams remain up to date with the many code changes that occur in a team environment. This has actually been the biggest gripe with class diagramming tools today, where the diagram is ok for sketching out an initial design, but the headache of managing the synchronization between the code and diagrams becomes such a hassle that the diagrams are thrown away. Or worse, out of date diagrams end up being included in documentation anyway!
With Visual Studio Class Designer, we’ve tried our hardest to promote the user model that the diagram is just a view of the code. Any changes you make to the diagram are automatically updated in code, and vice versa – much like today’s Windows Forms designer. No manual synchronization, no worrying about a model and its code – just choose where you want to make edits and the code and diagram are always in synch for you. Hopefully, throughout the articles written by my colleagues, you’ll see the work we’ve done to achieve and mitigate tricky scenarios such as team development.
A little about making class diagrams easy and approachable. This goal is really about reaching critical mass with mainstream .NET developers – so instead of putting the stress on developers to learn new modeling terminology and constructs, Class Designer treats .NET language concepts and terminology as first class citizens on the diagram. This means that if you’re a C# developer, you’ll see terminology such as ‘public’, ‘protected’, and work with concepts such as fields, properties, methods, and events. If you’re a VB.NET developer, Class Designer actually surfaces VB terminology such as ‘Public’ and ‘Friend’ and concepts such as Module. We felt this avoids the developer having to mentally map concepts between diagrams and code when switching between the two.
In general, we felt the experience when using the designer needed to shine. Shapes needed to look nice and professional, it should be easy to get a quick, default diagram up and running, and customizations that are made in the diagram (such as line routing) should be protected as much as possible. In short, the tool shouldn’t get in the way of getting work done!
So, what’s next?
To be totally honest, I’m not sure! :) We certainly have many ideas around what we could do, but ultimately much of what we end up doing depends on your feedback. Here’s how you can participate:
In the upcoming weeks, you’re going to see more in-depth blog entries being written by team members on Class Designer features. This is where your feedback really matters – what have we done well, where can we improve, what are we totally missing altogether? As our efforts become more focused around planning for the next release, we’ll be sure to share these with you. I look forward to your input… thanks for your time.
Visual Studio Class Designer Team