Welcome to Atalasoft Community Sign in | Help

So Where Does the Time Go?

We're starting up an intern program this summer for students to create an application.  I won't go into detail about the application right now, but I will talk about some design process.

During the start of the internship program, I'm going to be fairly swamped with other work, so I'm trying to do a little stitch in time for this application.  That means doing design and architecture.  Since this application will be written with Visual Studio 2005 and will have the benefits of .NET 2.0, I'm keeping that in my mind.

I decided to try out the Class Designer in VS 2005 for this task.  It's not too bad.  Decent enough for stubbing out the what's of the classes and being able to represent some of the relationships visually.  I'd like it if I could group some of the entities together to show functional associations more formally instead of by apparent geometry.  For example, if an action fires a pile of related events, I use a pattern with one delegate, an enum to distinguish what's going on and an EventArgs descendent.  I'd like to group this trinity together as a design pattern and then be able to make code instances of that pattern, or at the very least be able to group the visual representation as one triptych.

With functional groupings, I'd also like to be able to hide all the sub parts so they don't waste quite so much visual space all the time.  Think about it this way - I was trying to create a visual representation of 19 classes and interfaces.  The file list alone takes up 1/12 of the real estate on one monitor.  Many of the source files would take up the entire monitor, so it's no surprise that the class diagram uses all the real estate.  You can have multiple class diagrams, but I don't see any way to link them together.  Ideally, you could break your code down into logical systems and then reflect that in the class diagram as you build it and then a new user or the implementor could navigate the various diagrams to explore the relationships.

The code also puts in very nice NotImplementedExceptions as you stub out methods.  Terrific.  It'd also be nice if it marked these methods in the class diagram so you could get a visual indication of the work you need to do as well as collect statistics and monitor progress.

There are some refactoring tools, but they're still in the toy-ish stage.  For example, I added a method to an interface implemented by at least one other object.  In VS 2003, you wait for the compiler errors and then go adding in the methods.  It's just as bad here.  I didn't see a way to formally add in a new method and have it propogate out to child classes or a way to remove an interface and have it either delete or comment out existing implementations.

On the practical side, I used this to design a framework for plug-ins.  It took me about one day total (after wasting close to half a day removing VS 2005 beta 2 and installing the final version).  The funny thing is that at this point, I'm excited about the design and the functionality that I've spec'ed out, and now I want to implement it.  I'm pretty sure that I could get it implemented in a few hours.  We'll have in intern do it in May and it will be a learning experience for everybody.

Now the final thing is that while this tool is decent enough for describing what and how, it's pretty heinous for the why.  It was still more natural for me to type that up in a text document.
Published Tuesday, April 11, 2006 4:59 PM by Steve Hawley


No Comments
Anonymous comments are disabled