How Software Changes Over Time: Evolution and Maintenance

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

← Software Testing Essentials: Methods, Mindsets, and Techniques for Quality AssuranceNext lesson: Refactoring in Agile: Cleaning Code Without Breaking It →

Earn 3 college credits for Software EngineeringRecommended for credit by NCCRS · Computer Science 301 · self-paced · one payment, lifetime access

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.

Compare: Software Engineering vs Systems Analysis

Why take it here

Why students take Software Engineering with UPI Study

How professional software gets builtSoftware Engineering covers how teams turn requirements into working, maintainable software: process models, agile, requirements, design, testing, reliability and project management. It is a core course in computer science and software degrees.
Credit at a fraction of the priceThe same 3 credits can cost $750 or more at a US college. Here it is one payment, self-paced, with lifetime access.
Finish your degree soonerTransfer credits reduce the courses you still owe, so you can graduate earlier or lighten a heavy semester.
Strengthen an applicationA completed college-level course on an official transcript shows admissions and scholarship committees you can do the work.
Study on your own scheduleNo start dates, no deadlines. Watch the lessons, practice, and take the final when you are ready.
130,000+students helped with college creditsACE and NCCRS have over 2,100 cooperating colleges that will consider accepting credits; the final decision is with the universities.

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.

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?
Software needs maintenance because the world around it keeps changing, even though the code itself does not degrade. Businesses change their processes, users discover new needs, operating systems and hardware are updated, new security threats emerge, and laws shift. Maintenance is the ongoing work of keeping a released system correct, current, and useful as those outside pressures accumulate.
What are the four types of software maintenance?
The four types are corrective, adaptive, perfective, and preventive maintenance. Corrective maintenance fixes defects. Adaptive maintenance keeps a system working as its environment changes, such as a new operating system or regulation. Perfective maintenance improves or extends a working system for new user needs. Preventive maintenance restructures a system proactively to reduce the risk or cost of future problems.
How do you tell adaptive maintenance from perfective maintenance?
Ask what triggered the request. Adaptive maintenance is triggered by a change in the external environment, such as a new tax law that changes how payroll deductions must be calculated. Perfective maintenance is triggered by a new or better-understood user need on a system that already works, such as users asking to export their data to a spreadsheet.
Why are legacy systems so hard to maintain?
Legacy systems are hard to maintain because several pressures build up over a long lifetime and tend to arrive together. Documentation is missing or outdated, the original developers are gone, the technology stack is old, and hidden dependencies make every change risky. Meanwhile the business still depends on the system daily, so it becomes expensive and risky to change.

About the Software Engineering course

How many college credits is Software Engineering?
Software Engineering (Computer Science 301) carries a NCCRS credit recommendation for 3 semester credits. ACE and NCCRS have over 2,100 cooperating colleges that will consider accepting credits; the final decision is with the universities.
How much does Software Engineering cost and what is included?
$250, paid once, with lifetime access: all 103 video lessons, a practice quiz after each, the graded work and final exam, and an official transcript when you finish. Students who want several courses choose UPI Study PRO instead.
Which universities accept UPI Study credits?
UPI Study has signed partner agreements with universities such as Thomas Edison State University, University of the People and Charter Oak State College, and works with universities such as Penn State, SNHU and SUNY. ACE and NCCRS have over 2,100 cooperating colleges that will consider accepting credits; the final decision is with the universities. Use "Find my college" on this page to check yours.
How long does Software Engineering take?
It is self-paced with no deadlines. The 103 lessons total about 11 hours of video; most students add reading and practice time and finish in a few weeks to a few months, on their own schedule.
How are the exams done?
Quizzes and assignments are online in the course. The final exam is taken online with proctoring; a person on the UPI Study team checks assignments, usually within two days.
How do my credits reach my college?
When the course shows 100% complete, request the official transcript from your dashboard. It is sent to the college you name, and you can send it to more than one. Check your college first with "Find my college" on this page, or ask Athena.

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.

Software Engineering
3 credits · NCCRS
Enroll →