Real Time Web Analytics

Design is beneficially relating elements

Permaculture is a discipline of designing productive ecosystems that mimic the resilience of natural ecosystems. The scope of design in Permaculture is extraordinarily broad: decades of time, people in a whole society, and an incredible array of natural factors. I will try to do justice to Permaculture later, but for now I’ll focus on the Permaculture definition of design: beneficially relating elements.

 

  • Elements–a design is made up of distinct things, each with an inside and an outside. Boundaries aren’t always clear or rigid, but looking for elements helps organize the complexity of the real situation. Elements are hierarchical, with elements containing other elements and in turn being contained by elements.
  • Relating–elements stand in relation with each other. It doesn’t help much to consider a chicken in isolation, but rather to see it in relation to other chickens, to the plants it eats or fertilizes, the soil it scratches, and so on.
  • Beneficially–relationships bring benefits to elements as well as costs.

 

The definition can be read two ways. If “relating” is an adjective modifying “elements”, then “beneficially relating elements” describes a state of the world–here are the elements, their relationships, and the benefits that accrue. If, however, “relating” is a verb, then “beneficially relating elements” describes the process of designing. The designer introduces, eliminates, and restructures elements; introduces, eliminates, and restructures relationships; and enhances the benefit of relationships.

Using “beneficially relating elements” to describe both the process and product of software design is deliberately abstract. Software is scale-free, fractal (I’ll provide quantitative evidence of this later). Arbitrarily separating “implementation”, “design”, and “architecture” decisions discourages one of the most powerful techniques of the designer–moving between and reformulating the relationship between scales.

Speaking in terms of abstract elements makes the full range of decisions available at all scales. Beneficially relating two expressions within a statement creates value, as does beneficially relating two computers in a distributed system or two apparently competing business sponsors.

Relationships can be temporal as well as spatial. A designer can responsibly introduce an element that is good enough for today’s needs, as long as he is confident that the element can be replaced in the future by one that is more robust or higher capacity. These two elements are related by succession, providing the benefit of early feedback about the whole system. I will return to the topic of succession later, as I am beginning to suspect it is important to responsive design and displays more structure that expected.

These essays are appearing in writing order, not reading order. The previous essay on coupling and cohesion logically follows this one. Coupling and cohesion describe a particular relationship between elements, the “if A changes then B must change as well” relationship. This turns out to be a critical relationship to manage in order to lower the overall cost of software development and increase responsiveness.

I am looking for sponsors for the Responsive Design Project. If your organization would like early access to results, workshops, reading groups, and the karma that attaches to those who fund Good Works, please contact me.

2 Comments

Klaus WuestefeldApril 15th, 2009 at 12:30 am

“Software is scale-free, fractal”

It is interesting to see someone mention that.

I have observed that only coders who are really careful with the simplicity and beauty of their methods are capable of producing simple and beautiful designs. The inverse is also true.

[...] Beck says, “Design is beneficially relating elements”. Posted by jfranzoi Filed in Design, [...]

Leave a comment

Your comment