Learn something new every day
More Info... by email
Software evolution is a process whereby a commercial computer program requires continual updating, maintenance, and improvement over time in order for it to remain a viable product. In this respect, software evolution is driven by external business and consumer needs that change as other software and technologies advance around it. The driving factor behind software evolution, however, is often an internal one focused on the engineering team that produced the product and the company that is dependent on its success for profitability. The Imperial College of London, England, first promulgated three fundamental laws of software evolution in the early 1970s, which have since been expanded to a total of eight laws as of 2011. Other attempts have also been made to quantify the process utilizing models such as the Linear Sequential Model and Prototype Model, but the paradigm that seems to best fit software entropy life cycles is that of one resembling Darwinian evolution for living things.
The basic driving factors behind changes in software architecture resemble the same forces that motivate businesses to upgrade industrial machinery or standard operating procedures as societal needs change. As software is increasingly used, new needs or functions for it become apparent that must be worked into later releases of the product. All software is also released with previously unknown errors, so periodic patches and maintenance procedures must be carried out to correct situations such as security loopholes that could make a company vulnerable to attack through the software itself. A key to software evolution is also the fact that such programs must increasingly be adapted to work on different types of emerging computer equipment and within various operating system architectures so that the program has broader appeal.
Meeting all of these needs is crucial to determining if a software program remains viable, and, since software assets are such a crucial aspect of the information economy as of 2011, software evolution has become a fundamental aspect of business adaptation and growth. Meir Lehman, a computer scientist at the Imperial College of London, is credited with creating Lehman's Laws, which succinctly defined the process of software evolution and guided developers in the forward thinking of software visualization. Lehman's Laws are based upon the premise that software evolves as feedback on its performance increases and that its inevitable tendency is to become increasingly complex.
Lehman has stated that the nature of software evolution mirrors natural changes such as mutation in fruit flies, the way that cities expand over time, and how military structures incrementally improve upon weapons systems. The first three laws of the process emulate these trends in detailing Continuing Change, Increasing Complexity, and what is known as Large Program Evolution. Continuing Change refers to the fact that the program must be adapted to meet current real-world business conditions, and this reflects Increasing Complexity as the program must meet an ever growing diversity of unexpected needs. Large Program Evolution refers to the necessity for error correction and new releases of the program that are tied inexorably to the demands of the marketplace.
Of the five remaining laws in software evolution, number four is Organizational Stability and refers to the fact that the growth of a program takes on a life of its own regardless of the level of resources intentionally devoted to it, and number five is Conservation of Familiarity that states that incremental growth of the program is inevitable. Number six in the eight Lehman Laws is Continuing Growth, which is necessary to satisfy consumer demand, and number seven is Declining Quality, which emphasizes the fact that all software eventually faces limits on functionality that it cannot meet. The final Lehman Law for software evolution is the Feedback System itself, which ties together all of the forces affecting the viability of a software program to rapidly drive it either to greater success or unavoidable obsolescence and death.
@Logicfest -- we know that goes on and saw the process in full force when we jumped from 8 to 16 bit CPUS then to 32 bit and again at 64 bit. There are times software has to evolve or be replaced with whole new versions entirely.
But that raises a question. When new operating systems come out, was that taken to replace one that just couldn't evolve to cope with new technology or was that done because the manufacturer wanted to sell a lot of new software and force users to upgrade?
Anyone using a modern operating system is very familiar with this. Service packs, updates and the like are all very common as they are meant to both extend the life of the operating system and make it more attractive to both current and new users.
And, what happens? Eventually, the operating system can't be updated (evolved) much more and a whole, new OS is released to replace the one that has been taken about as far as it will go.
One of our editors will review your suggestion and make changes if warranted. Note that depending on the number of suggestions we receive, this can take anywhere from a few hours to a few days. Thank you for helping to improve wiseGEEK!