Chapter 2
Chapter 2
Maintenance (SEng5082)
Chapter Two
Maintenance Support Processes
Outlines
o Introduction
o S/w maintenance plant
o S/w maintenance testing
o S/w Configuration mgt
o Problem mgt
o Maintenance supporting tools
o S/w maintenance metrics
o maintenance cost estimation
• These processes ensure that software remains effective, reliable, and up-to-date
throughout its lifecycle.
• These maintenance processes are typically carried out in a cyclical manner, with
each process being performed as needed throughout the software's lifecycle.
• Effective software maintenance processes help ensure that software systems remain
functional, secure, and adaptable to changes, ultimately extending their lifespan and
12/16/2024 Software Evolution and Maintenance 3
Software Maintenance Plan
• Software maintenance planning refers to the process of strategically managing and
organizing the activities involved in maintaining and updating software systems.
• It involves creating a plan that outlines the necessary steps, resources, and timelines for
maintaining the software's functionality, performance, and security over its entire lifecycle.
business goals to ensure that maintenance efforts are aligned with the overall
objectives of the software.
• Effective software maintenance planning helps ensure that software systems remain
reliable, secure, and up-to-date, minimizing downtime and disruptions.
• It also allows for the efficient allocation of resources and helps organizations
prioritize maintenance activities based on their impact and urgency.
12/16/2024 Software Evolution and Maintenance 5
Software Maintenance Testing
Software maintenance testing is a crucial part of the software maintenance process.
The goal of maintenance testing is to verify the correctness and stability of the
software system after changes have been implemented.
1. Regression testing: testing conducts on modified build to make sure there will not
be impact on existing functionality because of changes like adding/deleting/
modified features.
12/16/2024 Software Evolution and Maintenance 6
Types of Regression Testing:
1. Unit Regression testing:
Impact analysis meeting conducts to identify impacted modules with QA and Dev.
Testing the main features and the remaining part of the application
It helps identify and rectify any issues introduced during the maintenance process,
ensuring that the software system continues to meet user expectations.
It allows developers to track changes, manage branches, and merge code changes.
• It includes processes for requesting, reviewing, and approving changes, as well as tracking
and documenting the impact of changes.
• SCIs can include source code files, libraries, databases, and other components.
4. Build and Release Management: SCM supports the creation of software builds and the
management of releases.
• Baselines provide a reference for future changes and help in reproducing previous
versions of the software.
• Overall, SCM helps in ensuring that software is developed, tested, and delivered in a
controlled and organized manner. It promotes collaboration, reduces risks, and
12/16/2024 Software Evolution and Maintenance 12
improves the efficiency of software development and maintenance processes.
Problem Management
•Problem management in software maintenance refers to the process of identifying,
analyzing, and resolving recurring issues or problems in a software system.
•It aims to address the root causes of problems and prevent them from recurring in the
future.
To minimize the impact of problems on the software system and its users
• Problems can include software defects, performance issues, system crashes, or any
other recurring issues affecting the software's functionality or user experience.
• This involves investigating the underlying factors that contribute to the problem,
such as coding errors, design flaws, or environmental factors.
• Problem analysis may require collaboration between developers, testers, and other
stakeholders to gather relevant Software
12/16/2024
information and conduct thorough investigations.
Evolution and Maintenance 14
Cont…
3. Problem Resolution: After the root cause is identified, appropriate actions are taken to resolve the
problem.
• This may involve code fixes, system configuration changes, database updates, or other corrective
measures.
• The resolution process aims to eliminate the root cause and restore the software system to its
expected functionality.
4. Problem Prevention: In addition to resolving immediate problem, problem management also
focuses on preventing similar problems from occurring again in the future.
• This can involve implementing preventive measures such as code reviews, process improvements,
or system enhancements.
• By addressing the underlying causes, problem prevention helps improve the overall quality and
reliability of the software system.
5. Knowledge Management: Throughout the problem management process, knowledge and
information are captured and documented.
• This knowledge base serves as a valuable resource for future reference, enabling faster problem
12/16/2024 Software Evolution and Maintenance 15
resolution and preventing the recurrence of similar issues.
Cont…
Effective problem management in software maintenance helps minimize disruptions,
improve system performance, and enhance user satisfaction.
• They provide features like branching, merging, and version history, ensuring that changes are
properly managed and tracked, and enabling easy rollback to previous versions if needed.
Example: Git: A popular version control system that enables teams to manage and track
changes made to software code and project files. It provides features like branching, merging,
and version history.
3. Code Review Tools: These tools facilitate the peer review process by providing a platform
for developers to review and provide feedback on code changes.
• This help to ensure code quality, identify potential issues or bugs, and promote collaboration
among team members.
12/16/2024 Software Evolution and Maintenance 18
Cont…
Example: SonarQube: A code review tool that helps to analyze and review code for quality and
security issues.
• It provides automated code analysis, identifies potential bugs, and offers suggestions for
improvement.
4. Testing Tools: These tools assist in automating the testing process, allowing for efficient and
comprehensive testing of software systems.
• They include tools for unit testing, integration testing, performance testing, and other types of
testing, helping to identify and fix defects and ensure software quality.
Example: Selenium: A testing tool that allows for automated testing of web applications.
• It helps in creating test scripts, executing tests, and verifying the functionality of web
applications.
5. Documentation Tools: These tools aid in creating, organizing, and maintaining documentation
related to software systems. These include tools for generating and managing technical
documentation, user manuals, API documentation,
12/16/2024 and other types of documentation, ensuring
Software Evolution and Maintenance 19
Cont…
Example: Doxygen: A documentation tool that helps generate documentation from
source code.
• It supports various programming languages and allows for easy creation and
maintenance of technical documentation.
6. Monitoring and Logging Tools: These tools help in monitoring the performance and
health of software systems.
• These provide real-time insights into system behavior, track system metrics, and
generate logs for troubleshooting and analysis.
Example: New Relic: A monitoring and logging tool that provides real-time insights
into the performance and health of software systems.
12/16/2024 Software Evolution and Maintenance 20
Cont…
• These include tools for project management, task tracking, team messaging, and file
sharing, ensuring effective coordination and collaboration.
Example: Slack: A team messaging and collaboration tool that facilitates communication
among team members involved in software maintenance.
• It allows for real-time messaging, file sharing, and integration with other tools.
• JIRA: A comprehensive project management tool that supports bug tracking, issue
tracking, task management, and collaboration.
• It enables teams to plan, track, and manage software maintenance activities effectively.
12/16/2024 Software Evolution and Maintenance 21
Cont…
These maintenance supporting tools play a crucial role in improving the efficiency,
quality, and collaboration of software maintenance activities.
These are just a few examples of maintenance supporting tools available in the
market.
There are many more tools out there, each with its own unique features and
capabilities, catering to different aspects of software maintenance.
The choice of tools depends on the specific needs and requirements of the
12/16/2024 Software Evolution and Maintenance 22
Software Maintenance metrics
Maintenance metrics, also known as software maintenance metrics or software
maintenance performance indicators, are quantitative measurements used to evaluate
and assess the performance and effectiveness of software maintenance activities.
These metrics provide insights into various aspects of software maintenance, such as
the quality of maintenance efforts, the efficiency of processes, and the overall health of
the software system.
Examples include the number of defects resolved, average time to resolve a defect, and
12/16/2024 Software Evolution and Maintenance 23
Cont…
2. Preventive Maintenance Metrics: These metrics assess the effectiveness of preventive
maintenance activities, which aim to identify and address potential issues before they
cause problems.
Examples include the time taken to adapt software to new environments, the number of
12/16/2024 Software Evolution and Maintenance 24
successful adaptations, and the impact of adaptations on system performance.
Cont…
4. Perfective Maintenance Metrics: These metrics measure the improvements made
to the software system to enhance its functionality, performance, or user experience.
Examples include the number of enhancements implemented, user satisfaction
ratings, and the impact of enhancements on system performance.
5. Maintenance Cost Metrics: These metrics focus on measuring the cost-
effectiveness of maintenance activities.
Examples include maintenance costs per defect resolved, maintenance costs as a
percentage of total development costs, and the return on investment (ROI) of
maintenance efforts.
6. System Health Metrics: These metrics assess the overall health and stability of the
software system.
Examples include system uptime, mean time between failures (MTBF), and system
12/16/2024 Software Evolution and Maintenance 25
availability.
Cont…
By tracking and analyzing maintenance metrics, organizations can gain valuable
insights into the effectiveness of their maintenance processes, identify areas for
improvement, and make data-driven decisions to optimize their software maintenance
efforts.
These metrics help ensure that software systems remain reliable, performant, and meet
the evolving needs of users.
It involves analyzing various factors such as the complexity of the system, the size of
the codebase, the number of users, and the anticipated changes and enhancements.
Here are a few examples of how maintenance cost estimation can be approached:
• By analyzing historical data and considering factors such as the average cost per LOC,
the maintenance team can estimate the effort and cost required for ongoing maintenance.
12/16/2024 Software Evolution and Maintenance 27
Cont…
2. Function Points: Function Points are a measure of the functionality provided by a
software system.
• This approach focuses on the functionality provided rather than the size of the
codebase.
3. Expert Judgment: In some cases, maintenance cost estimation relies on the expertise
and experience of the maintenance team or external consultants.
• They assess the complexity of the system, the anticipated changes, and the required
resources based on their knowledge of similar projects or industry standards.
12/16/2024 Software Evolution and Maintenance 28
Cont…
4. Maintenance Metrics: Maintenance metrics, such as the number of reported defects,
the time taken to fix issues, and the effort required for enhancements, can be used to
estimate future maintenance costs.
• By analyzing historical data and trends, the maintenance team can make informed
predictions about the resources needed for ongoing support.
It's important to note that maintenance cost estimation is not an exact science and can
be influenced by various factors.
• Therefore, it's crucial to regularly review and update the estimates as the project
progresses and new information becomes available.