Quality Without A Name

I've been reading Patterns of Software by Richard P Gabriel. It is very deep and thought-provoking, though somewhat rough around the edges. A large part of PoS is devoted to discussing what quality in software is, comparing it to architecture and examining the application of the ideas of Christopher Alexander (an architect -- a real one, not the bogus software or systems kind) to software.

He dwells at length on something that Christopher Alexander calls Quality Without A Name. It is very hard to articulate exactly what this is, but some examples are given (from outside the realm of software), e.g. "a corner of an English country garden where a peach tree grows against a wall ...".

I've been thinking about this and came up with an idea, which RPG came close to articulating when attempting to describe software which possesses QWAN: "It is like a fractal, in which every level of detail is as locally coherent and as well thought out as any other level".

Perhaps he had in mind an oak tree, or something similar. It has a trunk, boughs connected to the trunk, large branches connected to the boughs, smaller branches connected to the larger branches, twigs connected to the smaller branches, and finally leaves connected to the twigs. If you look at a mature oak tree, you can see that it possesses QWAN.

You can recognize software that possesses QWAN (e.g. Minix, CLOSette) and also software which though it mostly works fine and is maintainable doesn't possess it. But what is the difference?

I think you that software possessing QWAN resembles that oak tree I described earlier. The frequency of functions of a certain size is a decreasing function of their size, i.e. there are many more small functions than larger ones.

There are hardly any really large functions (ones that cannot be displayed on a single screen). The smaller ones are called from larger functions and only very rarely vice-versa.

This doesn't mean that if you write code with those properties, it inevitably possesses QWAN, but the converse does apply: if you write software that possesses QWAN it will have those properties.

In other words, the rule (or rather, pattern) is descriptive rather than prescriptive.


This page was linked to from

and was last updated on 2006-01-03 at 20:56.

© Copyright Donald Fisk 2006