We may earn an affiliate commission when you visit our partners.

Software Maintenance

Save
May 1, 2024 Updated May 11, 2025 18 minute read

Software maintenance encompasses all the modifications and updates made to a software product after its initial delivery to the end-user. Far from being a mere afterthought, it is an integral and ongoing phase of the software lifecycle, ensuring that applications remain functional, relevant, and secure over time. This process involves correcting faults, improving performance or other attributes, or adapting the software to a modified environment. Essentially, software maintenance keeps software alive and effective throughout its operational lifespan.

Working in software maintenance can be surprisingly dynamic and engaging. It offers the intellectual challenge of diagnosing complex problems in existing systems, often requiring a detective-like approach to uncover the root cause of issues. Professionals in this field also play a crucial role in the evolution of software, adapting applications to new technologies, user needs, and business requirements. This continuous improvement and adaptation ensure that valuable software assets continue to deliver benefits long after their initial development, making software maintenance a critical function in any technology-driven organization.

What Exactly is Software Maintenance?

Path to Software Maintenance

Take the first step.
We've curated eight courses to help you on your path to Software Maintenance. Use these to develop your skills, build background knowledge, and put what you learn to practice.
Sorted from most relevant to least relevant:

Share

Help others find this page about Software Maintenance: by sharing it with your friends and followers:

Reading list

We've selected 20 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Software Maintenance.
This classic text is fundamental to understanding how to improve the internal design of existing code without changing its external behavior. Refactoring key practice in software maintenance to improve code quality and maintainability. The book provides a catalog of refactorings and is an essential reference for developers. The second edition includes updated examples and considerations for contemporary programming practices.
Focuses on writing understandable, readable, and maintainable code. It provides practical guidance on formatting, naming, functions, and error handling, all of which are crucial for reducing the cost and effort of software maintenance. It's considered a must-read for developers aiming to improve their coding practices.
Offers a solid understanding of software evolution and maintenance models, techniques, and practices. It covers topics like reengineering, impact analysis, refactoring, and program comprehension, directly addressing core software maintenance activities. Based on the IEEE SWEBOK, it provides a structured and comprehensive overview suitable for both students and practitioners. It serves as a strong reference and can be used as a textbook.
Focuses on designing and building software systems that are resilient and reliable in production, which key aspect of software maintenance. It covers topics like stability patterns and antipatterns, crucial for ensuring systems can be maintained and operated effectively in the real world. The second edition includes contemporary topics like microservices and DevOps.
This comprehensive guide to software construction emphasizes writing high-quality code. While focused on initial development, the principles and practices discussed, such as defensive programming, testing, and code style, are directly applicable to creating code that is easier to maintain. It serves as an excellent reference for developers at all levels.
Offers a wide range of practical advice for software developers, including tips on writing flexible, maintainable, and adaptable code. Its emphasis on building resilient systems and the importance of continuous learning are highly relevant to long-term software maintenance. It's a valuable resource for professional development.
Explores modern software engineering practices that contribute to building evolvable and maintainable systems. It covers principles like continuous integration, continuous delivery, and automated testing, which are essential for effective software maintenance in agile environments. It is valuable for understanding contemporary approaches.
Software testing is an integral part of software maintenance, ensuring that changes do not introduce new defects. provides a comprehensive overview of software testing and quality assurance, offering essential knowledge for anyone involved in maintaining software systems. It is particularly useful for understanding how testing supports maintenance activities.
Provides a broad introduction to software engineering, covering the entire software lifecycle, including maintenance. It is an excellent starting point for gaining a foundational understanding of the principles and practices that underpin effective software maintenance. While not solely focused on maintenance, its comprehensive nature makes it valuable for context and prerequisite knowledge. It is widely used as a textbook in academic institutions.
Based on rigorous research, this book identifies the practices that drive high performance in software development and delivery, including aspects crucial for effective maintenance. It provides data-driven insights into the impact of technical practices, architecture, and culture on lead time, deployment frequency, and mean time to restore services – all key maintenance indicators. It's valuable for understanding the business impact of maintenance practices.
Microservices architecture contemporary approach to building software systems that significantly impacts how software is maintained and evolved. provides a comprehensive guide to designing and implementing microservices, offering valuable insights for professionals dealing with or transitioning to such architectures. It's highly relevant for understanding modern maintenance challenges.
Software architecture significantly impacts the maintainability of a system. provides a comprehensive overview of software architecture concepts, patterns, and practices. Understanding these principles is essential for making informed decisions during both development and maintenance that affect the long-term evolvability of software. It strong reference for architects and senior developers.
Known as the 'Gang of Four' book, this classic introduces fundamental design patterns that lead to more flexible and maintainable object-oriented software. Understanding these patterns is crucial for both developing new systems and maintaining existing ones effectively. While not directly about maintenance, its impact on creating maintainable code is significant.
Domain-Driven Design (DDD) is an approach to software development that focuses on creating a shared understanding of the domain and modeling the software accordingly. This is highly relevant to software maintenance as a clear and well-modeled domain makes the code easier to understand and evolve. foundational text for understanding DDD.
This business novel illustrates the principles of DevOps, which are highly relevant to improving the efficiency and effectiveness of software maintenance and operations. It provides a relatable narrative that highlights the importance of collaboration, feedback loops, and continuous improvement in managing complex IT systems. It's a good starting point for understanding the operational context of maintenance.
This edited volume provides a collection of chapters on various aspects of software evolution research. It delves into more theoretical and advanced topics, making it suitable for graduate students and researchers interested in deepening their understanding of the field's complexities and emerging trends. It is more valuable as additional reading or a reference for specific research areas.
While not exclusively about maintenance, this classic book offers timeless insights into the challenges of managing software projects. Its discussions on system complexity, communication, and the difficulties of adding manpower to late projects are highly relevant to understanding the managerial and organizational aspects that impact software maintenance efforts. It provides valuable historical context and foundational knowledge.
Provides a case study-based approach to software maintenance. It valuable resource for software engineers and managers.
Provides a tutorial on software maintenance. It valuable resource for software engineers and managers.
Table of Contents
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser