Share via


A picture is worth a thousand words

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:

  1. Make class diagrams relevant throughout the development cycle.
  2. Focus on the experience to make class diagrams easy and approachable.

 

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:

  • Download VS 2005 and give Class Designer a try (we aim to have a Beta2 available in a few months time).
  • Log bugs (you can even collect votes)
  • Let us know what you think on our newsgroup and this blog.  

 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.

 

John Stallo

Program Manager

Visual Studio Class Designer Team

Comments

  • Anonymous
    February 26, 2005
    Nice stuff. I'm really looking forward to the release and have been working with the alphas/betas since mid last year. This stuff just plain rocks and Software Factories are going to just plain shift mindsets.

    One question is that I would like to switch documenting my systems that I'm currently building in Visio. Our standard is to use UML and the Visio templates are not bad but I would like to use the look and feel that the VSTS designers use, even if they aren't functional like they are in Class Designer.

    Any chance of getting some Visio templates so that when we are ready to move to the new system, we could import our old diagrams to create working systems (as much as they can). Sort of how you can import Visio diagrams into BizTalk 2004?
  • Anonymous
    February 26, 2005
    Can it export to the standard UML XML format for importing into other UML designer tools?

  • Anonymous
    February 28, 2005
    If you haven't already, take a [http://blogs.msdn.com/classdesigner/archive/2005/02/25/380023.aspx|look at the next generation Class Designer] that the Visual Studio team have been working on. It's q
  • Anonymous
    March 01, 2005
    Wrt exporting to the UML XML format, I am assuming you're referring to the XMI export. No, it will not be in this V1 release. Since you broght it up, I wonder what's you thoughts on mapping custom attribute (in C#) to the UML construct (custom defined stereotype?). I've been working in the UML tools (ie Visio software modeling) in the past and often found that there's a gap between the UML and the actual programming language. When we initially design our meta-model (for capturing the language), we've struggled a little bit and finally decided to model accordingly to the language (as opposed to modeling it closely to the UML meta-model). By following this approach, it allows us to model the user's code straightforwardly...
  • Anonymous
    March 08, 2005
    Does the Class Designer have support for Attributes?
  • Anonymous
    March 09, 2005
    The comment has been removed
  • Anonymous
    June 21, 2007
    I've now done a few interviews with my co-workers building Visual Studio 2005.
  • Anonymous
    June 09, 2009
    PingBack from http://insomniacuresite.info/story.php?id=4167