Tuesday, March 17, 2009

The difficulties of visualizing software

Since software is not spatial, it is inherently difficult to represent in a way that is easy for the mind to visualize.

From No Silver Bullet (PDF) by Fred Brooks:
As soon as we attempt to diagram software structure, we find it to constitute not one, but several, general directed graphs superimposed one upon another. The several graphs may represent the flow of control, the flow of data, patterns of dependency, time sequence, name-space relationships. These graphs are usually not even planar, much less hierarchical.

...

In spite of progress in restricting and simplifying the structures of software, they remain inherently unvisualizable, and thus do not permit the mind to use some of its most powerful conceptual tools. This lack not only impedes the process of design within one mind, it severely hinders communication among minds.

1 comment:

J R said...

The spatial quality of software might be a matter of abstract perspective. In a sense, diagrams are spatial representations of software.

I do agree though that as we move from the abstract view of a software towards the more concrete, the complex nature of the software is more visible. And this complexity makes the intricacies of software impossible to visualize.

So taking the analogy of our planet, I can visualize the map of the world, I can drill down to India, Maharashtra, and even Mumbai. But I cannot visualize every home in Mumbai city, nor the infrastructural links connecting them.