0% found this document useful (0 votes)
5 views

Chapter 2

Uploaded by

miki
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)
5 views

Chapter 2

Uploaded by

miki
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/ 34

Software Evolution And

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

12/16/2024 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 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.

• 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


12/16/2024 Software Evolution and Maintenance 4
Cont…
• 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.

• 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.

 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 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.
12/16/2024 Software Evolution and Maintenance 6
Types of Regression Testing:
1. Unit Regression testing:

 Testing only the changes/modifications done by the developer.

2. Reginal Regression testing:

 Testing the modified modules along with the impacted modules.

 Impact analysis meeting conducts to identify impacted modules with QA and Dev.

3. 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.
12/16/2024 Software Evolution and Maintenance 7
Cont…
2. Functional testing:
• Functionality is nothing but behavior of application.
• Functional testing talks about how your software system 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
threats.

12/16/2024 Software Evolution and Maintenance 8


Cont…
 In general, 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.

12/16/2024 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.

12/16/2024 Software Evolution and Maintenance 10


Cont…
2. Change Management: SCM provides a systematic approach to managing changes to software
product.

• 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


12/16/2024 Software Evolution and Maintenance 11
dependencies and ensuring consistent builds.
Cont…
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
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.

•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 steps:


12/16/2024 Software Evolution and Maintenance 13
Cont…
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 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.

 It is an essential component of maintaining a stable and reliable software system.

12/16/2024 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.
• These 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 fixes.
12/16/2024 Software Evolution and Maintenance 17
Cont…
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.

• 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…

7. Collaboration Tools: These tools facilitate communication and collaboration among


team members involved in software maintenance.

• 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.

 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
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.

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 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 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
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.

12/16/2024 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 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.

• 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.
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.

12/16/2024 Software Evolution and Maintenance 29


Maintenance metrics
1. Mean Time Between Failure (MTBF): It is the average time available for a system or
component to perform its normal operations between failure.
• MTBF describes the expected time between two failures for a repairable system.
• It is expressed in hours.
• A higher MTBF number indicates a higher reliability of a product or system.

• MTBF = (operational time/total number of failures)


2. Mean Time To Repair (MTTR): It is the average time required to repair a failed
system/component.
• Expressed in hours.
• MTTR = (downtime/ total number of failures)

Availability = MTBF/(MTBF + MTTR)


• Reliability can be defined as the probability that a product or system will perform its intended
function adequately for a specified period of time without failure.
•12/16/2024
If a system or a component or a device no longer
Software Evolution produce a desire result, which is known
and Maintenance 30 as
Software Evolution and Maintenance 31
Example:
Q) A machine/system that runs for 24 hours. During that time it failed
twice, and each time it took an hour to get it back up and running.
Find MTBF and MTTR?

12/16/2024 Software Evolution and Maintenance 32


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. Conclusion
14. Questions and Answers
12/16/2024 Software Evolution and Maintenance 33
!!
o u
k Y
a n A
Th Q&

12/16/2024 Software Evolution and Maintenance 34

You might also like