The 8 Laws of Software Evolution

Share the article!

I stumbled upon something I’ve never heard before, that is “The 8 Laws of Software Evolution“. I haven’t quite digested its meaning however for reference I’m reproducing it here.

  1. Continuing Change – A system must be continually adapted else they become progressively less satisfactory in use.
  2. Increasing Complexity – As a system is evolved its complexity increases unless work is done to maintain or reduce it.
  3. Self Regulation – Global system evolution processes are self regulating.
  4. Conservation of Organizational Stability – Unless feedback mechanisms are appropriately adjusted, average effective global activity rate in an evolving system tends to remain constant over product lifetime.
  5. Conservation of Familiarity – In general, the incremental growth and long term growth of systems tend to decline.
  6. Continuing Growth – The functional capability of systems must be continually increased to maintain user satisfaction over the system lifetime.
  7. Declining Quality – Unless rigorously adapted to take into account for changes in the operational environment, the quality of a system will appear to be declining.
  8. Feedback System – Evolution processes are mult-level, multi-loop, multi-agent feedback systems.

The laws seems to come from feedback control systems, the interesting take away though is that these laws have been empirically validated! I however am curious how they relate to my early speculation on “Laws of Software Complexity“. It’s a bit dense however, the 1st, 2nd, 5th, 6th and 7th Laws seem to coincide with the Complexity Laws. However, I still have to grasp the significance of the 3rd, 4th and 8th laws. Incidentally, the Agile Development folks seem, for some strange reason, to love this stuff!


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>