Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
3 views31 pages

Chapter 2

Chapter Two of the document discusses software maintenance support processes, including planning, testing, configuration management, problem management, and supporting tools. It emphasizes the importance of systematic maintenance activities to ensure software reliability, security, and performance throughout its lifecycle. Additionally, it covers maintenance metrics and cost estimation methods to evaluate and optimize maintenance efforts.

Uploaded by

biruk yoseph
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views31 pages

Chapter 2

Chapter Two of the document discusses software maintenance support processes, including planning, testing, configuration management, problem management, and supporting tools. It emphasizes the importance of systematic maintenance activities to ensure software reliability, security, and performance throughout its lifecycle. Additionally, it covers maintenance metrics and cost estimation methods to evaluate and optimize maintenance efforts.

Uploaded by

biruk yoseph
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 31

Software Evolution And

Maintenance (SEng5051)
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

08/13/2025 Software Evolution and Maintenance 2


Introduction:
• Software maintenance processes refer to the systematic activities and
procedures carried out to manage and support the maintenance of
software systems.
• These processes ensure that software remains effective, reliable, and
up-to-date throughout its lifecycle.
• Typically there are corrective, adoptive, perfective, and preventive
software maintenance processes.
• 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
08/13/2025 Software Evolution and providing value to users.
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.
• The planning process typically includes activities such as identifying
maintenance requirements, estimating effort and resources needed,
prioritizing maintenance tasks, scheduling updates and bug fixes, and
allocating resources effectively.
• It also involves considering factors like budget constraints, user needs,
and business goals to ensure that maintenance efforts are aligned with the
overall objectives of the software.
08/13/2025 Software Evolution and Maintenance 4
Contd…
• 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.

08/13/2025 Software Evolution and Maintenance 5


Software Maintenance Testing:
 Software maintenance testing is a crucial part of the software
maintenance process.
 It involves testing the software system after modifications or
enhancements have been made to ensure that the changes do not
introduce new issues or negatively impact existing functionality.
The goal of maintenance testing is to verify the correctness and stability
of the software system after changes have been implemented.
Here are some key aspects of software maintenance testing:
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.

08/13/2025 Software Evolution and Maintenance 6


Contd…
Unit Regression testing:
 Testing only the changes/modifications done by the developer.
Reginal Regression testing:
 Testing the modified modules along with the impacted modules.
 Impact analysis meeting conducts to identify impacted modules with QA
and Dev.
Full Regression testing:
 Testing the main features and the remaining part of the application
Example: developers has done changes in many modules, instead of
identifying impacted module, they perform one round of full regression
testing.

08/13/2025 Software Evolution and Maintenance 7


Contd…
2. Functional testing:
• Functionality is nothing but behavior of application.
• Functional testing talks about how your feature should work.
Example: object properties testing, database testing, error handling testing etc.
3. Integration testing: If the changes made during maintenance involve integrating new
components or modules, integration testing is performed to ensure that the integration is
successful and does not introduce any issues.
4. Performance testing: If the modifications impact the performance of the software
system, performance testing is conducted to assess its performance under different
conditions and ensure it meets the desired performance criteria.
5. Security testing: If security-related changes have been made, security testing is
performed to verify that the software system remains secure and resilient to potential
08/13/2025 Software Evolution and Maintenance 8
threats.
Contd…

 Overall, software maintenance testing plays a critical role in ensuring


that software systems remain reliable, functional, and performant even
after modifications and enhancements have been made.
 It helps identify and rectify any issues introduced during the
maintenance process, ensuring that the software system continues to
meet user expectations.

08/13/2025 Software Evolution and Maintenance 9


Software Configuration Management
 Software Configuration Management (SCM) is a set of practices and
processes used to manage and control changes to software throughout its
lifecycle.
 It involves tracking and managing software artifacts, controlling versions
and releases, and ensuring the integrity and consistency of the software
configuration.
The main objectives of SCM are:

1. Version Control: SCM helps in managing different versions of software


artifacts, such as source code, documentation, and configuration files.
It allows developers to track changes, manage branches, and merge code
changes.
08/13/2025 Software Evolution and Maintenance 10
Contd…
2. Change Management: SCM provides a systematic approach to
managing changes to software. It includes processes for requesting,
reviewing, and approving changes, as well as tracking and documenting
the impact of changes.
3. Configuration Identification: SCM helps in identifying and defining the
software configuration items (SCIs) that make up a software system. 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. It involves compiling, packaging,
and deploying software artifacts, as well as managing dependencies and
ensuring consistent builds.

08/13/2025 Software Evolution and Maintenance 11


Contd…
5. Baseline Management: SCM establishes baselines, which are snapshots
of the software configuration at specific points in time. Baselines provide
a reference for future changes and help in reproducing previous versions
of the software.
6. Traceability: SCM enables traceability by linking software artifacts,
changes, and issues. It helps in understanding the relationships between
different components and tracking the history of changes.

Overall, SCM helps in ensuring that software is developed, tested, and


delivered in a controlled and organized manner. It promotes
collaboration, reduces risks, and improves the efficiency of software
development and maintenance processes.
08/13/2025 Software Evolution and Maintenance 12
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.
•The main objectives of problem management are to minimize the impact
of problems on the software system and its users, improve the overall
system stability and reliability, and enhance user satisfaction.
•It involves the following key steps:

08/13/2025 Software Evolution and Maintenance 13


Contd…
1. Problem Identification: This step involves identifying and documenting
problems reported by users or detected through monitoring and analysis.
Problems can include software defects, performance issues, system
crashes, or any other recurring issues affecting the software's functionality
or user experience.
2. Problem Analysis: Once a problem is identified, it is analyzed to
determine its root cause. 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
information and conduct thorough investigations.
08/13/2025 Software Evolution and Maintenance 14
Contd…
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 the immediate problem, problem
management also focuses on preventing similar problems from occurring 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 resolution and
preventing the recurrence of similar issues.
08/13/2025 Software Evolution and Maintenance 15
Contd…

 Effective problem management in software maintenance helps minimize


disruptions, improve system performance, and enhance user satisfaction.
It is an essential component of maintaining a stable and reliable software
system.

08/13/2025 Software Evolution and Maintenance 16


Maintenance supporting tools:
• Maintenance supporting tools are software tools or applications that assist in
various aspects of software maintenance activities.
• These tools are designed to streamline and enhance the efficiency of
maintenance processes, improve collaboration among team members, and
provide valuable insights and analysis.
Some common types of maintenance supporting tools include:
1. Bug Tracking Systems: These tools help in tracking and managing reported
defects or issues throughout the maintenance lifecycle. They allow teams to
log, prioritize, assign, and track the progress of bug fixes, ensuring that issues
are addressed in a timely manner.
Example: Bugzilla: A widely used bug tracking system that helps teams track
and manage reported defects or issues. It allows for easy logging, prioritization,
assignment, and tracking of bug
08/13/2025
fixes.
Software Evolution and Maintenance 17
Contd…
2. Version Control Systems: These tools enable teams to manage and track
changes made to software code and other project files. 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. They help ensure code quality, identify potential issues or bugs, and
08/13/2025 Software Evolution and Maintenance 18
Contd…
Example: SonarQube: A code review tool that helps 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. They include tools for generating and managing
technical documentation, user manuals, API documentation, and other types of
08/13/2025 Software Evolution and Maintenance 19
documentation, ensuring that information is easily accessible and up to date.
Contd…
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. They 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.
It helps identify bottlenecks, track system metrics, and troubleshoot issues.

08/13/2025 Software Evolution and Maintenance 20


Contd…
7. Collaboration Tools: These tools facilitate communication and
collaboration among team members involved in software maintenance. They
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.
08/13/2025 Software Evolution and Maintenance 21
Contd…
 These maintenance supporting tools play a crucial role in improving the
efficiency, quality, and collaboration of software maintenance activities.
By leveraging these tools, organizations can streamline their maintenance
processes, reduce manual effort, and enhance the overall effectiveness of
their maintenance efforts.
 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 maintenance team and the software being maintained.
08/13/2025 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.
Maintenance metrics can be divided into several categories, including:
1. Corrective Maintenance Metrics: These metrics focus on measuring the
effectiveness of resolving reported defects or issues.
Examples include the number of defects resolved, average time to resolve a
08/13/2025 Software Evolution and Maintenance 23
Contd…
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 number of preventive maintenance tasks completed, the
percentage of preventive tasks executed on time, and the effectiveness of
preventive measures in reducing future defects.
3. Adaptive Maintenance Metrics: These metrics evaluate the efficiency and
effectiveness of adapting software to changes in the environment, such as
operating system upgrades or hardware changes.
Examples include the time taken to adapt software to new environments, the
number of successful adaptations, and the impact of adaptations on system
08/13/2025 Software Evolution and Maintenance 24
Contd…
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
08/13/2025 Software Evolution and Maintenance 25
availability.
Contd…
 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.

08/13/2025 Software Evolution and Maintenance 26


Maintenance cost estimation
 Maintenance Cost Estimation is the process of estimating the financial
resources required to maintain and support a software system over its
lifetime.
 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:
1. Size-based Estimation: This approach estimates maintenance costs
based on the size of the software system.
One common metric used is Lines of Code (LOC).
By analyzing historical data and considering factors such as the average
cost
08/13/2025 per LOC, the maintenance team
Software Evolution can estimate the effort and cost
and Maintenance 27
Contd…
2. Function Points: Function Points are a measure of the functionality
provided by a software system.
By quantifying the number of function points, maintenance costs can be
estimated based on historical data and industry benchmarks.
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.
08/13/2025 Software Evolution and Maintenance 28
Contd…
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.

08/13/2025 Software Evolution and Maintenance 29


Assignment:
 Prepare your own software maintenance plan by considering these
outlines below are parts of your plan:
1. Introduction
2. Overview of Software Maintenance
3. Objectives of the Maintenance Plan
4. Maintenance Team and Roles
5. Maintenance Process Flow
6. Issue Tracking and Management
7. Change Management
8. Configuration Management
9. Release Management
10. Documentation and Knowledge Management
11. Maintenance Schedule and Prioritization
12. Communication and Reporting
13.
08/13/2025 Conclusion Software Evolution and Maintenance 30
1
!!
o u
k Y
a n A
Th Q&

08/13/2025 Software Evolution and Maintenance 31

You might also like