Saturday, January 07, 2006

Values in Design: Reduce Complexity

Why is software development so difficult? 

Why does software tend to become complex?  Seemingly clever humans revel in complexity.

How do you reduce complexity?

You need to measure the complexity and then make appropriate changes that will reduce the complexity.
Then you measure again to verify the results.

 Do we need measurements that are seemingly artificial and contrived?

Yes we need all the metrics we can get as long as we understand the meaning and application of the metric. Most software developed today has requirements to solve problems created by humans. The problems are already artificial and contrived. The problem space does not contain a set of coherent natural forces. Some developers are lucky enough to be working with a problem space that is to some extent more natural.

What do I mean by natural? 

Natural problems come from nature and where around before humans appeared on the scene. A natural problem space is a lot more testable than a human-made problem. It is simpler if mathematical models exist that can be simulated or used to measure outcomes. It is more complex if we need to discover those mathematical models. Not all aspects of software development have a neat underlying mathematical model. Thus we need to come up with mathematics and metrics to help measure the impact of various forces. We need to reduce complexity and so improve the design.

Measure, refine, refactor and verify.

No comments: