We are independent & ad-supported. We may earn a commission for purchases made through our links.
Advertiser Disclosure
Our website is an independent, advertising-supported platform. We provide our content free of charge to our readers, and to keep it that way, we rely on revenue generated through advertisements and affiliate partnerships. This means that when you click on certain links on our site and make a purchase, we may earn a commission. Learn more.
How We Make Money
We sustain our operations through affiliate commissions and advertising. If you click on an affiliate link and make a purchase, we may receive a commission from the merchant at no additional cost to you. We also display advertisements on our website, which help generate revenue to support our work and keep our content free for readers. Our editorial team operates independently of our advertising and affiliate partnerships to ensure that our content remains unbiased and focused on providing you with the best information and recommendations based on thorough research and honest evaluations. To remain transparent, we’ve provided a list of our current affiliate partners here.
Software

Our Promise to you

Founded in 2002, our company has been a trusted resource for readers seeking informative and engaging content. Our dedication to quality remains unwavering—and will never change. We follow a strict editorial policy, ensuring that our content is authored by highly qualified professionals and edited by subject matter experts. This guarantees that everything we publish is objective, accurate, and trustworthy.

Over the years, we've refined our approach to cover a wide range of topics, providing readers with reliable and practical advice to enhance their knowledge and skills. That's why millions of readers turn to us each year. Join us in celebrating the joy of learning, guided by standards you can trust.

What Is Software Evolution?

By Ray Hawk
Updated: May 16, 2024
References

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.

EasyTechJunkie is dedicated to providing accurate and trustworthy information. We carefully select reputable sources and employ a rigorous fact-checking process to maintain the highest standards. To learn more about our commitment to accuracy, read our editorial process.
Link to Sources
Discussion Comments
By Vincenzo — On Jul 07, 2014

@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?

By Logicfest — On Jul 06, 2014

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.

Share
https://www.easytechjunkie.com/what-is-software-evolution.htm
EasyTechJunkie, in your inbox

Our latest articles, guides, and more, delivered daily.

EasyTechJunkie, in your inbox

Our latest articles, guides, and more, delivered daily.