Software Maintenance Presentation 082104
Software Maintenance Presentation 082104
Software engineering
Presentation by:
Roll no: 22010203033, 22010203034,
22010203035, 22010203036,
22010203060
OVERVIEW
• Software maintenance
• Planning for maintenance
• Maintenance activities
• Characteristics
• Potential solution to maintenance
• Software maintenance process models
• Reengineering
Introduction to Software
Maintenance with Importance
➢ Software maintenance - Software maintenance is a crucial part of the
software development lifecycle (SDLC) that involves updating and
modifying software after deployment to ensure it continues to function
effectively and efficiently.
●
Establishing Maintenance Policies
●
Resource Allocation
●
Setting Objectives and Metrics
●
Risk Management
●
Documentation and Knowledge Transfer
Maintenance Activities
• Maintenance activities vary based on the specific needs and objectives but
generally include corrective, adaptive, perfective, and preventive
maintenance.
Types of Software Maintenance
• Corrective Maintenance
• Adaptive Maintenance
• Perfective Maintenance
• Preventive Maintenance
Corrective Maintenance - Detailed
Explanation
Corrective maintenance: Involves fixing bugs, errors, and faults discovered in the
software. This is reactive maintenance,because it involves reacting to a failure or issues
after it has already occurred.
● Purpose: Corrective maintenance addresses issues that arise after deployment,
such as bugs or functional errors.
● - This may involve also improving the user interface, or optimizing code for
performance.
● Purpose- Preventive maintenance aims to prevent potential issues before they arise,
enhancing software longevity.
● - Proactive approach ensures that the software is stable and minimizes the risk of
disruptions.
Diagram: Software Maintenance
Lifecycle
12
10
Column 1
6
Column 2
Column 3
4
0
Row 1 Row 2 Row 3 Row 4
Characteristics of Software
Maintenance - Overview
➢ Maintenance is often complex and costly, requiring substantial resources.
• Resource Intensive: Maintenance can consume a significant portion of the overall project budget,
with personnel and time being primary resources.
• Complexity and Uncertainty: Software changes can introduce unexpected issues, necessitating
rigorous testing and validation.
● - Complexity arises from dependencies, evolving requirements, and the size of the
codebase.
● - Key documents include system architecture, design, code comments, and testing
protocols.
● - Technical debt from previous quick fixes can complicate new updates or
modifications.
● - Balancing new feature development with ongoing bug fixes and updates.
● - Automated testing tools reduce the time and effort needed for testing
maintenance changes.
● - Reuse-oriented maintenance
leverages pre-existing
components to save development
time and cost.
● - Reengineering is resource-
intensive but ideal for outdated
systems needing substantial
updates.
● - Incorporates modern
technologies and best practices.
Reengineering - Purpose and
Benefits
● -Reengineering is the process of redesigning and improving software to
enhance performance or adapt to new environments while retaining core
functionalities. Unlike traditional maintenance, which may only address
specific issues, re engineering involves substantial redesign and
restructuring.
● - Reengineering enhances system performance, maintainability, and
adaptability.