Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 23

SOFTWARE

MAINTENANCE
AND RELIABILITY
B y Mar y O ng ak i
SC T2 2 1 -C 0 0 2 -0 0 0 5 / 2 0 2 2
SOFTWARE
MAINTENANCE
• software maintenance is the process of modifying
software after it has been delivered to correct
faults, improve performance and adapt it to a
changed environment.

• The goal of software maintenance is to keep the


software system working correctly and securely and
to ensure that it continues to meet the needs of the
users.

• This can include fixing bugs, adding new features,


improving performance or updating the software to
work with the new hardware or software systems.
Importance of software
maintenance

• Lo n g ev i t y - En s u r es t h e s o f t war e r emai n s u s ef u l an d r el ev an t o v er
t i me.

• Co s t man ag emen t - Reg u l ar s o f t war e mai n t en an ce can h el p t o


p r ev en t l arg er, mo r e ex p en s i v e p r o b l ems f r o m o ccu r r i n g r ed u ci n g
o v er al l co s t o f s o f t war e o wn er s h i p .

• Us er s at i s f act i o n - En h an ces u s er ex p er i en ce b y p r o v i d e u p d at es
an d i mp r o v emen t s .

• I mp r o v ed s cal ab i l i t y - Reg u l ar s o f t war e mai n t en an ce can h el p t o


en s u r e t h at t h e s o f t war e i s s cal ab l e an d can h an d l e i n cr eas ed u s er
d eman d .
•I m p r o v e d s o f t w a r e Q u a l i t y- r e g u l a r s o f t w a r e m a i n t e n a n c e h e l p s t o
e n s u r e t h a t t h e s o f t w a r e i s f u n c t i o n i n g c o r r e c t l y a n d e ffi c i e n t l y
and that it continues to meet the needs of the users

•E n h a n c e d S e c u r i t y s y s t e m - M a i n t e n a n c e c a n i n c l u d e s e c u r i t y
updates and patches helping to ensure that the software is
protected against potential threat and attacks

•I n c r e a s e d U s e r S a t i s f a c t i o n - Re g u l a r s o f t w a r e m a i n t e n a n c e h e l p s
t o k e e p t h e s o f t w a r e u p - t o - d a t e a n d r e l e va n t , l e a d i n g t o i n c r e a s e d
user satisfaction and adoption.

•E x t e n d e d S o f t w a r e L i f e : P r o p e r s o f t w a r e m a i n t e n a n c e c a n e x t e n d
the life of the software, allowing it to be used for longer periods
of time and reducing the need for costly replacements.
•Better Alignment with business goals: Regular

sof tware maintenance can help to ensure that the

sof tware remains aligned with the changing needs of

the business. This can help to improve overall business

effi ciency and productivity.

•Reduced Downtime: Sof tware maintenance can help to

reduce downtime caused by system failures or errors.


Types of Software Maintenance

• Co r r ect i v e mai n t en an ce- I n v o l v es F i x i n g b u g s an d er r o r s i d en t i f i ed af t er t h e


s o f t war e r el eas e.

• Ad ap t i v e Mai n t en an ce- Mo d i f y i n g t h e s o f t war e t o wo r k i n a ch an g ed en v i r o n men t .

• P er f ect i v e Mai n t en an ce- en h an ci n g ex i s t i n g f u n ct i o n al i t i es an d i mp r o v i n g


mai n t en an ce o r mai n t ai n ab i l i t y

• P r ev en t i v e Mai n t en an ce- Mak i n g ch an g es t o p r ev en t f u t u r e p r o b l ems , i mp r o v e


r el i ab i l i t y an d ex t en d s o f t war e l i f e.
Identification- Analysis-
Detecting issues or Understanding the
areas for scope and impact
improvement of changes.

Implementation-
Design-Planning
Writing and
the changes
integrating the
needed
necessary code.
Maintenance
Testing-Ensuring
changes work as
Documentation- Process
Updating
intended and do
documentation to
not introduce new
reflect changes
issues.

Release-Deploying
the updated
software to the
users.
• Cost- can be expensive and time-
consuming

• Complexity-Dealing with complex

Challenges in codebases and dependencies

• Documentation-often inadequate, making


Software it hard to understand the existing system.

Maintenance • Regression bugs-New changes can


introduce unexpected issues.

• Skills-Required specialized knowledge


and understanding of the system.
•S c h e d u l e d i s r u p t i o n s : M a i n t e n a n c e c a n c a u s e
disruptions to the normal schedule and operations of
the software, leading to potential downtime and
inconvenience.

•U s e r r e s i s t a n c e : U s e r s m a y r e s i s t c h a n g e s o r u p d a t e s
to the software, leading to decreased satisfaction and
adoption.

•I n a d e q u a t e t e s t i n g : I n a d e q u a t e t e s t i n g o r i n c o m p l e t e
testing after maintenance can lead to errors, bugs,
and potential security vulnerabilities.

•Te c h n i c a l d e b t : O v e r t i m e , s o f t w a r e m a i n t e n a n c e c a n
lead to technical debt, where the cost of maintaining
and updating the software
Quick-fix model-Immediate patching of bugs without
thorough analysis; suitable for urgent fixes.

Iterative Enhancement Model-Gradual improvement of


the software through repeated iteration

Maintenance
Reengineering Model-Comprehensive analysis and
redesign of the system to improve its structure and Models
performance

Perfective Maintenance Model-Ongoing enhancements


and optimizations of the system.
• Version Control systems-Tools like Git to
make changes and maintain code history

• Automated system- continuous integration


and automated testing to catch issues early
Tools and • Code Analysis Tools-Static and dynamic
analysis to identify potential problems
Techniques
• Issue tracking systems-Tools like Bugzilla
to track and manage maintenance tasks

• Refactoring-Improving the code structure


without changing its external behavior.
Best Practices
• Maintain Documentation-Keep all documentation up to
date to aid future maintenance

• Follow coding Standards-Use consistent coding


standards to make the codebase easier to understand
and maintain

• Regular Reviews-Conduct regular code reviews to


identify potential issues early

• A u t o m a t e Te s t i n g - I m p l e m e n t a u t o m a t e d t e s t s t o
quickly identify regressions

• Plan for Maintenance-Allocate time and resources for


ongoing maintenance activities
Conclusion

By implementing best practices and


utilizing appropriate tools and
Software maintenance is essential to
techniques, software engineers can
ensure the continued relevance and
manage the challenges of
effectiveness of software systems.
maintenance and deliver high-quality
software throughout its lifecycle.
SOFTWARE
RELIABILITY
• Sof tware Reliability is the
probability that software will
operate without failure under given
c o n d i t i o n s f o r a s p e c i fi e d p e r i o d .

• It is a crucial aspect of software


engineering that focuses on the
dependability and consistency of
software performance.
Importance of software
reliability

• Dependability- Critical for applications where failure


can result in significant consequences

• User Satisfaction- Enhances user trust and satisfaction


by providing consistent performance.

• C o s t E ff i c i e n c y - R e d u c e s m a i n t e n a n c e c o s t s a n d
downtime.
• Software Complexity- Higher
complexity increases the likelihood of
errors.

Factors Affecting • Development Process-Quality of


design, coding standards, and testing
Software methodologies.

• Operational Environment-Conditions
Reliability under which the software operates

• Human Factors- Skills and experience


of developers and users.
Mean Time To Failure (MTTF)-Average
time between failures.

Mean Time To Repair (MTTR)-


Metrics for Average time to repair after a failure.

Software
Failure Rate- Number of failures per
Reliability unit time.

Availability-Proportion of time the


software is operational and accessible.
Reliability Models

Exponential Distribution Model- Assumes constant failure rate; suitable for the initial
phase of software operation.

Weibull Distribution Model- Flexible model accommodating increasing or decreasing


failure rates.

Musa-Okumoto Model- Time-dependent model reflecting the actual fault detection


and correction process.

Jelinski-Moranda Model- Assumes a finite number of faults and decreasing failure


intensity over time.
Techniques to Improve Software
Reliability

Fault Tolerance: Techniques like redundancy, exception handling, and graceful degradation to maintain
functionality.

Error Detection and Correction: Implementing robust testing, debugging, and validation processes.

Software Verification and Validation (V&V): Ensuring the software meets specifications and requirements.

Formal Methods: Using mathematical models to specify, develop, and verify software systems.

Code Reviews and Inspections: Regularly reviewing code to identify and fix potential issues early.
Software Reliability Engineering (SRE)

Process- Incorporates reliability considerations throughout the


software development lifecycle.

Standards- Adherence to industry standards and best practices


e.g., ISO/IEC 25010
NASA Software: High-reliability
requirements for space missions.

Banking Systems: Ensuring transactional


integrity and uptime.
Case Studies
and Examples

Medical Devices: Critical need for reliable


performance to ensure patient safety.
Conclusion

By focusing on rigorous development


Software reliability is integral to processes, testing, and validation,
creating dependable and trustworthy software engineers can enhance the
software systems. reliability and overall quality of their
software products.
REFERENCES

Handbook of Software Reliability Engineering by Michael R. Lyu(9 May 1995)

Reliability and Maintainability in Perspective by David J. Smith(20 April 2005)

Software Maintenance: Concepts and Practice by Penny Grubb and Armstrong


A. Takang(7 September 2003)

Software Reliability Engineering: More Reliable Software Faster and


Cheaper by John D. Musa(20 September 2004)

https://www.geeksforgeeks.org

You might also like