Seeing the Big Picture
K. Scott Allen’s post on the limits to visual tools is an interesting read. The main contention is that visual tools don’t scale and consequently have a limit. The examples in the post back up this point. I wonder if this is a problem with visual tools per se, a limitation of current tools or a misuse of the tools. It may be a combination of these factors. The first question to ask is: do text based tools scale well? The good news is that we can split a system up into an arbitrary number of files. This is great for understanding the contents of a file – but the system as a whole is still very difficult to understand, especially for those coming to the system cold. Putting everything into one diagram is the equivalent of putting all our code into one text file – I’m going to assume you agree with me that that’s a bad idea for all but the most trivial of system. With a well factored codebase, the best route into the system for most people, in my experience, is some sort of graphical overview – the key here being that it must be at the right level of abstraction.
In creating and reviewing architectural documents and walkthroughs, I’ve often faced the same issue of getting the right amount of information into diagrams. There is a temptation to have one diagram that shows everything – this temptation should be resisted as it leads to confusion. Having a number of views of a model (each at differing levels of abstraction and with a different perspective and focus) is the best way I’ve found of distilling the right amount of information. What we need from the tooling is a way to link the views together. When you think about it, the principle here is similar to that used in splitting up a codebase into multiple files. Diagrams and models are, of course, not text free – but in the right context one diagram can save a lot of time and effort.
So, I’m not convinced that there is an inherent quality of visual tools that limits their ability to scale – but the way in which we use them and some of the functionality provided may need to change to accommodate scale. Another thing to consider is that models can be represented with both text and diagrams – potentially allowing different people to use representations that are closest to their natural strengths.