Software Evolution: Importance & Challenges

Instructor: Toya Stiger

Toya has a masters of computer science in computer science and has taught college students as an adjunct instructor.

In this lesson, we will discuss software evolution and the importance of keeping large software systems updated. We will also discuss some challenges software engineers face while maintaining large software systems.

Software Evolution

In software engineering, software evolution is referred to as the process of developing, maintaining and updating software for various reasons. Software changes are inevitable because there are many factors that change during the life cycle of a piece of software. Some of these factors include:

  • Requirement changes
  • Environment changes
  • Errors or security breaches
  • New equipment added or removed
  • Improvements to the system

For many companies, one of their largest investments in their business is for software and software development. Software is considered a very critical asset and management wants to ensure they employ a team of software engineers who are devoted to ensuring that the software system stays up-to-date with ever evolving changes.

Software Maintenance

With software ever changing, it is important for software engineers to ensure they perform periodic maintenance on the software. There are four different types of software maintenance: corrective, adaptive, perfective and preventive.

Corrective maintenance is the most common type of maintenance. It addresses bugs, errors, faults in software that has already been released and is being used by the users. Sometimes, some of the defects are reported by the users themselves.

Adaptive maintenance deals with an environment change for the software. These changes could include hardware, software, operating system, and organizational policy changes. Any changes in the software's environment will usually cause for changes to be made in the software to ensure that the software will work in the new environment without any hiccups.

Perfective maintenance is concerned with making functional changes that are new or based on user requirements. This includes adding new functionalities or enhancements to the existing software that can help to increase the systems performance.

Preventive maintenance is concerned with making changes that ensures the longevity of the software. This may include code optimizing, code restructuring and documentation.

Maintaining Large Software Systems

Managing large software systems is a big task for many software engineers, mainly due to the constant evolution of software and systems. They have to ensure they keep up with these changes and make certain that the system meets the requirements of the changes in the software with little downtime and cost as possible.

Software engineers face many challenges when trying to maintain large software systems. Some of these challenges might include:

  • Availability of original system documentation and any documentation related to changes made since the original implementation.
  • Ensuring any changes are scaled and within the scope of the current system.
  • Ensuring there is enough storage on the system to implement the changes and for storing data. *Finding and tracking changes to the source code.
  • Managing the growing complexity of the software system.

In order to ensure that updates and changes to the system are documented and tracked properly, engineers should follow the maintenance phase process model. As shown in Figure 1, there are seven phases in this model: Change Request, Impact Analysis, Design, Regression Testing, Acceptance Testing, System Implementation and System Release.

Figure 1 - Software Maintenance Phase Processes
maintenance phas eprocess

Change Management

In this phase, the software engineer receives a modification request from the customer. The request is then reviewed to see if the changes can be implemented and then a plan for implementation is prepared.

To unlock this lesson you must be a Member.
Create your account

Register to view this lesson

Are you a student or a teacher?

Unlock Your Education

See for yourself why 30 million people use

Become a member and start learning now.
Become a Member  Back
What teachers are saying about
Try it risk-free for 30 days

Earning College Credit

Did you know… We have over 200 college courses that prepare you to earn credit by exam that is accepted by over 1,500 colleges and universities. You can test out of the first two years of college and save thousands off your degree. Anyone can earn credit-by-exam regardless of age or education level.

To learn more, visit our Earning Credit Page

Transferring credit to the school of your choice

Not sure what college you want to attend yet? has thousands of articles about every imaginable degree, area of study and career path that can help you find the school that's right for you.

Create an account to start this course today
Try it risk-free for 30 days!
Create an account