When dealing with object-oriented design, it is all too easy to fixate on the objects themselves. In a way, the objects are highly visible and very tangible.
The problem with this fixation is that there is an equally important, but harder to visualise partner to all of these objects, and that is the relationships.
I once worked with some very smart developers who created a meta-program – and they talked to me about it a great deal. I was a total novice at the time and was absolutely fascinated by their description… and one of the things that stuck was how the relationships in their program were as important as the objects themselves.
In architectural sketches of programs, our bias towards objects is evidenced. An object is a big box with a name (no matter whether you are using UML or WBS the objects get big boxes. Relationships and interactions get anonymous lines.
What would be different if we named each line?