Applying Economic Theory to Software

Share the article!


All this talk about the Pareto Principle and Manageability reminded me of this analogy of Object Oriented systems and private ownership:

[ Friedrich ] Hayek’s explanation of the primary virtue of property rights for organizing large scale economic activity parallels the rationale for encapsulation in object-oriented systems: to provide a domain (an object’s encapsulation boundary) in which an agent (the object) can execute plans (the object’s methods) that use resources (an object’s private state), where the proper functioning of these plans depends on these resources not being used simultaneously by conflicting plans. By dividing up the resources of society (the state of a computational system) into separately owned chunks (private object states), we enable a massive number of plans to make use of a massive number of resources without needing to resolve a massive number of conflicting assumptions.

However, regardless of the kind of economic system, the Pareto Principle remains enforced. The interesting discovery however is that increasing the degrees of freedom in the interaction of individuals improves the equality of the distribution. 

The analogy with software is that, if you build more resusable interfaces, you then achieve a wider distribution of responsibility over the over all computational state. In practice, this is analogous to the Kent Beck’s CRC methodology, that is an emphasis in distributing responsibility among several classes as opposed to placing everything in manager classes.

The question crops up, is this a good thing?  The tradeoffs are efficiency versus flexibility,  correctness versus redundancy, security verses usability, etc.  In environments which require innovation, then a more agile approach would be preferred.  However, in contrast, in an enviroment where efficiency or correctness is a more desired property, then equal distribution of responsibility is an added complexity. 

Share the article!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>