Computer programming, the design of computer programs, what a wonderful pursue!.
Many of us take great joy in doing this peculiar activity, and I have observed that the greatest of these joys is seeing our programs begin used successfully to solve end-user problems. There is where methods, tools and techniques make all sense.
Currently, I am designing and implementing a tool for analyzing and extracting a directed acyclic graph (DAG) from a set of Visual Studio .NET 2003 projects and solutions, along with their dependencies. By now, the output is an Office Excel 2003 table with the dependencies (project and file references) and an Office Visio 2003 drawing with the DAG.
Do we want to know what really the architecture of a particular design and implementation is?
We make use of this tool and we can see a picture of the reality, the Visio 2003 Drawing shows either a messy, big ball of mud (if the designers knew nothing about dependency management) or you can see identifiable clusters in a well crafted structure (if the designers scrupulously managed each dependency in their design).
Now, I have a design to breed!