Monday, August 14, 2006

Sofware Products & Lehman's Law

Sometime back, in a software engineering book I had read and thought about Lehman's Law. After my last post some three month's back on Good Software, I have often wondered whether in the last few years, if we as a community of software developers improved.  First let me summarise some aspects of Lehman's law.
 

Lehman's Law

 

Law
Description
Continuing change
A program that is used in a real-world environment necessarily must change or become progressively less useful in that environment.
Increasing complexity
As an evolving program changes, its structure tends to become more complex. Extra resources must be devoted to preserving and simplifying the structure.
Large program evolution
Program evolution is a self-regulating process. System attributes such as size, time between releases and the number of reported errors is approximately invariant for each system release.
Organisational stability
Over a program’s lifetime, its rate of development is approximately constant and independent of the resources devoted to system development.
Conservation of familiarity
Over the lifetime of a system, the incremental change in each release is approximately constant.
Continuing growth
The functionality offered by systems has to continually increase to maintain user satisfaction.
Declining quality
The quality of systems will appear to be declining unless they are adapted to changes in their operational environment.
Feedback system
Evolution processes incorporate multi-agent, multi-loop feedback systems and you have to treat them as feedback systems to achieve significant product improvement.

Looking back, there has been a lot of changes since the advent of UML and Unified Process in the are of software development. I am sure now we are more in control than earlier.  But, have we built a defence against the inevitable adverse effects of the laws described above on our software products?  
 
And to those who use software and get involved in decisions of evaluating, purchasing and using business systems software -- Are you aware of these laws? 
 
I, for one, believe that both the business user community and software development community should be aware of these issues and work in tandem with each other to face the realities and bring down the adverse consequences on the use of software, especially critical business systems.  After all today's business require more reliable systems which can outlive the "software versions".
 
What do you think?

No comments: