UPI Study › Courses › Software Engineering › Free lessons › Lesson 4.5 Free with a free account
How Software Changes Over Time: Evolution and Maintenance
Software Engineering · Chapter 4: Rapid Development, Testing, and Software EvolutionSection 4.5 · lesson 28 of 1038 min · free with a free account
Free preview
Create a free account to keep watching
It takes a minute and costs nothing. Your free account unlocks all of Chapter 1 and 3 more lessons of Software Engineering.
Lesson complete
Earn the 3 college credits for Software Engineering
Enrolling adds a quiz after each lesson, the graded work and the official transcript. Recommended for credit by NCCRS.
Next lesson: Refactoring in Agile: Cleaning Code Without Breaking It →← Software Testing Essentials: Methods, Mindsets, and Techniques for Quality AssuranceNext lesson: Refactoring in Agile: Cleaning Code Without Breaking It →
In this lesson
Evolution, the 4 types of maintenance, and the weight of legacy systems.
- Explain why software keeps changing after release
- Define corrective, adaptive, perfective, and preventive maintenance
- Classify a maintenance request by type
- Describe what makes legacy systems hard to maintain
Transcript
Everything said in the video, section by section (1,059 words). Read along, or search it.
Rapid Development, Testing, and Software Evolution
How Software Changes Over Time
Software has no moving parts to wear down. And yet it keeps needing work, for years after release. This section looks at why that happens, the four different kinds of maintenance work involved, and why long-running legacy systems are so hard to maintain.
A Puzzle
No Moving Parts, Yet Always Changing
Here is a small puzzle. Software has nothing that physically wears out. Yet almost no system in real use looks, six months after release, exactly the way it looked on launch day. The code itself does not degrade. What changes is everything around it. The business the software serves, the hardware and operating systems it runs on, and what its users now need from it. Maintenance, the final phase of the life cycle, is where all of that ongoing change actually gets handled.
Why Software Evolves
Pressures From Outside the Code
A system's requirements are rarely frozen the moment it ships. The business changes its processes and priorities. And users discover things they need that nobody anticipated. The technical environment keeps moving. Operating systems are updated, hardware is replaced, and connected systems change their behavior. New security threats emerge. And laws and regulations shift, sometimes forcing changes to a system that was fully compliant at release. None of these pressures come from the code aging. They come from the world continuing to move, while the code, left alone, stays exactly as written. So maintenance is the ongoing work of keeping a system aligned, with a world that refuses to hold still.
The 4 Types (1 of 2)
Corrective and Adaptive
Maintenance work comes in four types. The first two are corrective and adaptive. Corrective maintenance fixes defects, places where the system does not behave the way its requirements said it should. It is maintenance in its most reactive form. Something is genuinely broken, and the work is to repair it. Adaptive maintenance keeps a system working correctly as its external environment changes. That might be a new operating system version, new hardware, a changed regulation, or a connected system that changed its own behavior. Nothing about the software was necessarily wrong when it was written. The ground underneath it simply moved.
The 4 Types (2 of 2)
Perfective and Preventive
The other two types are perfective and preventive. Perfective maintenance improves or extends a system, based on new or better-understood user needs. It might add a feature nobody originally requested, improve performance, or make an existing feature easier to use. This is not fixing something broken. It is making something that already works genuinely better. Preventive maintenance changes a system proactively, before any specific failure occurs. It improves the system's internal structure, so that later corrective, adaptive, and perfective work becomes easier and safer. So maintenance is not always a response to a current problem. Sometimes it is an investment against a future one.
Figure 4.5A
Where Maintenance Effort Goes
So where does maintenance effort typically go? The proportions vary widely from project to project, so treat these numbers as illustrative. But the pattern is common. Corrective work, fixing defects, is often around a fifth of the effort. Adaptive work is roughly a quarter. Perfective work, improving what already works, is typically the largest share, around half. And preventive work is usually the smallest, around five percent. The surprising part is this. Fixing outright defects is usually a smaller share than improving and extending working software.
Table 4.5
The 4 Types at a Glance
Here are the four types at a glance. Corrective maintenance is triggered by an actual defect, like a calculation that produces the wrong result. Adaptive maintenance is triggered by a change in the external environment, like a new operating system version. Perfective maintenance is triggered by a new or better-understood user need, like a requested feature, or better performance. And preventive maintenance is triggered by anticipated future risk, like restructuring a fragile module before it causes a defect.
Legacy Systems
Why Legacy Systems Are Hard
Now, legacy systems. A legacy system has been running, and accumulating changes, long enough that maintaining it has become noticeably harder than maintaining a newer system. That is not because legacy systems are inherently bad. Certain pressures simply build up over a long lifetime. The documentation is missing, or out of date. The original developers are long gone. And the technology stack itself is outdated. Hidden dependencies make any change genuinely risky, and complexity has accumulated for years. And through all of it, the business still depends on the system every day.
Why It Compounds
Pressures That Arrive Together
Individually, none of these pressures is unique to old systems. What makes a legacy system genuinely difficult is that they tend to arrive together. Missing documentation is far more costly when the people who could explain the system are also gone. And hidden dependencies are far riskier to touch, when nobody on the current team understands how the pieces connect. The result is a system the business relies on daily, that has become expensive and risky to change. That is exactly the condition preventive maintenance tries to head off, before it fully sets in.
Think About It
Classify the Request
Let's practice classifying some requests. Monthly report totals are off by a few cents. The behavior does not match the requirements, so that is corrective. A new tax law changes how payroll deductions must be calculated. The environment changed, not the code, so that is adaptive. Users ask to export their data to a spreadsheet. That is a new need, on a system that already works, so it is perfective. And a team untangles a fragile module that nobody dares to touch. Nothing has failed yet, so that is preventive. In each case, the key is to ask what triggered the request. A defect, the environment, a need, or a risk.
Key Terms
The Vocabulary of This Section
Let's lock in the key terms. Maintenance is the ongoing work of changing a system after release, to keep it correct, current, and useful. Corrective maintenance fixes a defect. Adaptive maintenance keeps a system working as its external environment changes. Perfective maintenance improves or extends a system, based on new or better-understood user needs. Preventive maintenance is performed proactively, to reduce the risk or cost of future problems. And a legacy system is a long-running system, where accumulated pressures make maintenance noticeably harder.
Key Takeaways
What to Carry Forward
To pull this together. Software keeps changing after release because the world around it keeps changing, not because the code degrades. The four maintenance types are corrective, adaptive, perfective, and preventive. Perfective work, improving what already works, typically takes a larger share of effort than fixing outright defects. Legacy systems build up pressures like missing documentation, departed developers, and accumulated complexity. And those pressures compound each other, which is exactly why preventive maintenance matters.
About Software Engineering at UPI Study
Software Engineering (Computer Science 301) is a self-paced online course of 103 video lessons in 15 chapters, from process models and agile to requirements, design, user interfaces, reliability, security and project management. It carries a NCCRS credit recommendation for 3 semester credits.
Every lesson transcript is free on pages like this one, and the videos are free with a free UPI Study account. Enrolling adds a practice quiz after each lesson, the graded work and final exam that earn the credit, lifetime access, and an official transcript on completion. UPI Study has helped over 130,000 students with college credits. ACE and NCCRS have over 2,100 cooperating colleges that will consider accepting credits; the final decision is with the universities.
Enroll now → Course details Download the syllabus All Computer Science courses Every course with PRO →
Why take it here
Why students take Software Engineering with UPI Study
Where the credit goes
Universities that work with NCCRS
Software Engineering carries a NCCRS credit recommendation. These universities work with NCCRS; some are UPI Study's signed partners. ACE and NCCRS have over 2,100 cooperating colleges that will consider accepting credits; the final decision is with the universities.
Thomas Edison State UniversitySigned partner
University of the PeopleSigned partner
Charter Oak State CollegeSigned partner
Strayer UniversitySigned partner
Columbia Southern UniversitySigned partner
Indiana TechSigned partner
Penn StateWorks with NCCRS
Southern New Hampshire UniversityWorks with NCCRS
SUNYWorks with NCCRS
+many more cooperating universitiesFind my college →Find my college → Not listed? Ask Athena in the corner of this page, or book a 15-minute call.
FAQ
Questions students ask us
About How Software Changes Over Time: Evolution and Maintenance
Why does software need maintenance if it does not wear out?
What are the four types of software maintenance?
How do you tell adaptive maintenance from perfective maintenance?
Why are legacy systems so hard to maintain?
About the Software Engineering course
How many college credits is Software Engineering?
How much does Software Engineering cost and what is included?
Which universities accept UPI Study credits?
How long does Software Engineering take?
How are the exams done?
How do my credits reach my college?
Ready for the full course? Earn 3 credits in Software Engineering.
103 video lessons, a quiz after each one, and the graded work that earns the credit. Recommended for credit by NCCRS.
3 credits · NCCRSEnroll →