Software Maintenance
Software maintenance is the modification of a software product after delivery to correct faults, improve performance or other attributes, or adapt the product to a modified environment. It is a critical and often the longest-running phase of the software lifecycle, representing the majority of the total cost of ownership for many systems. Maintenance is not just about fixing bugs; it is the essential work of evolving and sustaining software systems over time to ensure they continue to provide value and remain relevant to their users and the business.
Key Concepts
- Corrective Maintenance: Reactive modification of a software product performed after delivery to correct discovered problems.
- Adaptive Maintenance: Modification of a software product performed after delivery to keep it usable in a changed or changing environment (e.g., new operating system or library).
- Perfective Maintenance: Modification of a software product performed after delivery to improve performance or maintainability (e.g., refactoring or feature enhancement).
- Preventive Maintenance: Modification of a software product performed after delivery to detect and correct latent faults in the product before they become effective faults.
- Software Evolution: The process of a software system undergoing continuous change over its lifetime as it adapts to new requirements and environments.
Common Patterns or Tools
- SLA (Service Level Agreement): A formal commitment between a service provider and a client that specifies the expected performance and response times for maintenance and support activities.
- Root Cause Analysis (RCA): A method used to identify the underlying cause of a problem, helping to develop a solution that prevents the problem from recurring.
- Dependency Management: Using tools and processes to track and update third-party libraries and frameworks, ensuring that security vulnerabilities are addressed and that the system remains compatible.
- Patch Management: The systematic process of testing and applying updates (patches) to software to fix security vulnerabilities and bugs.