Visualizing Software Design

I’m starting to use a new method to understand how to write software. It’s something I’ve starting doing just by myself, so I don’t know if it’s an established practice. I think it isn’t.

I close my eyes and imagine that I’m looking at the running software. I see the main form as it is on the screen, and then I rotate the view slightly, so I can see what’s behind… and what I see is a lot of little objects hanging beneath. Little services that dangle from the main form, and that are tied in to a complex engineering structure. Like this:

What is so cool is that when I imagine myself looking at this, I can change the little objects as much as I wish. I can see them tied in to each other, I see how all the calls are made and which lines are activated. I realize that object A must speak with object B, which in turn needs to speak to object C, and I ponder in the silence of my bedroom what software design patterns to apply.

I can also walk in between them, dragging the objects apart. I see what services they provide, and I ponder how they are tied into the main form, and what the main form needs to do to work. I examine the objects instanced by these services. I pat them quietly on their head, signing my approval. “Carry on, little objects”, I say.

I don’t know if it makes any difference that I examine the running system in my mind or not. I think that personally it’s a vast improvement from just trying to observe the class design, because now I don’t just see the classes, but I see how they run together, where they grind against each other, and if the design has any problems in running.

Imagination is powerful.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>