Databorough – Producers of X-Analysis

The Laws of Software Evolution

 

Virtually all managers of legacy applications have experienced the fact that their software becomes more and more difficult to maintain over time.

 

Indeed, as software maintenance guru, Alain April, has pointed out, “the very act of maintaining software tends to degrade it.”

 

While there are numerous tools and techniques available to deal with this tendency – many of which are supplied by Databorough – it is worthwhile to step back a little and understand the big concepts that are at work on software systems as time passes by.

 

The evolution of software systems over time has been studied by a number of researchers and academics. Professor Meir Lehman of Imperial College London identified a number of observations of how software evolves over time in what is often called The Eight Laws Of Software Evolution. For the IT manager with a big picture of the forces at work in software maintenance it is worth having some awareness of these forces:

  1. Continuing change – software must be continually adapted or it will become less and less satisfactory
  2. Increasing complexity – as software is changed it becomes increasingly complex unless work is done to mitigate the complexity
  3. Relationship to organization – the software exists within a framework of people, management, rules and goals which create a system of checks and balances which shape software evolution
  4. Invariant work rate – over the lifetime of a system the amount of work performed on it is essentially the same as external factors beyond anyone’s control drive the evolution
  5. Conservation of familiarity – developers and users of the software must maintain mastery of its content in order to use and evolve it; excessive growth reduces mastery and acts as a brake
  6. Continuing growth – seemingly similar to the first law, this observation states that additional growth is also driven by the resource constraints that restricted the original scope of the system
  7. Declining quality – the quality of the software will decline unless steps are taken to keep it in accord with operational changes
  8. Feedback system – the evolution in functionality and complexity of software is governed by a multi-loop, multi-level, multi-party feedback system

Why is this important, and how is it useful?

 

The job of most IT managers is typically to get it done faster, better, cheaper. (“pick two,” as the saying goes) Often unstated is the further directive to continually improve in those measurements. Not just today, but next year, and the year after.

 

But implicit in all of the above is that much of what you do today will slow you down tomorrow. Unless, that is, you take action on the implicit advice of the second law and do work to maintain your system’s maintainability.

 

And indeed, many IT organizations with a long view of the life of their software and its responsiveness to business needs take proactive steps to

 

maintain maintainability
- and -
manage to maintainability

But how is that possible? How do you undertake a program of maintaining maintainability and managing to maintainability?

 

For that, we turn to the wisdom of Bill Hewlett, founder of Hewlett-Packard, who said, “You cannot manage what you do not measure.”

 

How do you measure the maintainability of your software and build that into the management of your maintenance operations?

 

X-Audit – Databorough’s tool for measuring and auditing software applications.

 

For more in depth information please also see this white paper from which this page is excerpted:

Complexity Metrics and Difference Analysis for Better Application Management.