The image I created for my earlier post on the auto layout feature in Beta 2 was created using the "Export Diagram as Image" feature coming online in Class Designer Beta 2.

This is also another feature that was highly requested by customers.  When you start a software project, we come up with an initial sketch of the class structures, their members, relationships etc.  This picture often gets embedded in some design specification.  We may even print this out and paste it on the wall.  Soon, the implementation phase begins.  In almost all projects I have been involved with (and I haven't heard anything to the contrary), there are changes made to the design.  A few weeks later you find that the image in the design spec no longer matches the actual implementation.  Since the Class Diagrams created in VS 2005 are just another view of your code, they are always in sync with any changes (there are a few situations when the class diagram may go out of sync - but it will let you know when this is the case - there is a cool feature called "Orphaned Shapes" which I'll have to write about!).  The Export Diagram as Image command allows you to publish/update the image in a shared folder.  If you have the image linked in your document, you'll then be able to get the image that reflects the latest implementation.  Well, now it will be up to you to actually update your documentation. :)

While writing this blog, a couple of things that the Class Designer doesn't address in V1 that came to mind.  When you actually start designing your project, you may just want to sketch out the classes and their members.  You don't want code being generated while you are doing this.  Unfortuately that is not possible with Class Designer.  This was one of those things that fell below the cut line during the planning stages.  It was a hard call but we felt that given the resource constraints we had to focus on the two most important things for V1 - robustness and performance.

The other thing we don't do is display the full method signatures of methods.  In Beta 2, you'll have the option to display the types of members (return types for methods).  However, method parameters will not be displayed on the design surface (they will be available via tooltips).  This was a subject of a big debate within the team.  But we decided to not display parameter information because of concern that it will take up too much screen real estate.  It will be interesting to get feedback on this issue.