Beginner Topic 17 of 50 Software Engineering
Software Maintenance
Fixing, adapting and improving software after release.
How it works
Software maintenance covers all work after initial release, typically most of a system's total cost. It includes corrective maintenance to fix bugs, adaptive maintenance to keep up with changing environments such as new operating systems, perfective maintenance to improve features or performance and preventive maintenance such as refactoring and dependency updates. Lehman's laws note that useful software must keep evolving and its complexity grows unless actively managed.
Step-by-step walkthrough
- Corrective maintenance fixes bugs.
- Adaptive maintenance adjusts to new platforms or laws.
- Perfective maintenance adds features and speed.
- Preventive maintenance reduces future problems through refactoring.
- Maintenance often costs more than the first build.
Where it is used
Updating libraries for security patches, migrating to new platforms, fixing production defects and extending features in long-lived systems are maintenance work.
Common pitfall
Neglecting maintenance accumulates technical debt, outdated dependencies and security vulnerabilities. Lack of tests and documentation makes changes risky. Knowledge loss when original authors leave slows teams. Budget regular time for upgrades and cleanup, automate tests and builds, monitor in production and track dependency health.
Where it fits in the course
Software Maintenance is topic 17 of 50 in Software Engineering, rated Beginner. It follows Bug Tracking. The next topic is SOLID Principles.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Software Engineering quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Software Engineering quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Software Maintenance?
Where do people use Software Maintenance?
What is the most common mistake with Software Maintenance?
What should I learn before this topic?
How can I practice it?
Is Software Maintenance hard to learn?
How long does it take to learn Software Maintenance?
Which topics are related to Software Maintenance?
What should I study after Software Maintenance?
Related topics
- Bug Tracking (Software Engineering)
- SOLID Principles (Software Engineering)
- Software Documentation (Software Engineering)
- DRY, KISS and YAGNI (Software Engineering)
- Software Transactional Memory (Concurrency & Parallelism)
- Software-Defined Networking (Computer Networks)
- Automotive Software (Mobile, Embedded & IoT)