0% found this document useful (0 votes)
75 views24 pages

Software Evolution & Maintenance Guide

Softwre metrics and evolution ch1

Uploaded by

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

Software Evolution & Maintenance Guide

Softwre metrics and evolution ch1

Uploaded by

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

Software Evolution and

Maintenance
Chapter One
SOFTWARE EVOLUTION AND MAINTENANCE
CONCEPTS
[2024]
Introduction
❖ Software Evolution Refers to the continual change and improvement of software systems to
adapt to new requirements and operational environments.
➢ Involves adding features, enhancing performance, or porting software to new
platforms​.

❖Software Maintenance Activities to ensure the software operates as intended after


deployment, including bug fixes, adaptations, and optimizations.

❖ Importance
➢ Proper evolution and maintenance ensure software remains relevant, cost-effective, and
efficient​.

BY : - TEKLHIWOT MEKONEN 2
Maintenance vs. Evolution
❖ Maintenance:
➢ Fixing defects and ensuring continued operation without significant architectural changes.
➢ Reactive: Addresses issues like bugs or outdated components.
❖ Evolution:
➢ Incorporates broader, planned changes to adapt and improve the software.
➢ Proactive: Adds features, optimizes performance, or modernizes platforms.
❖ Examples :
❖ Maintenance: Fixing a bug in a photo editing app that crashes when applying a filter ensures the app works as expected without adding new
features.
❖ Evolution: Introducing an AI-powered object removal feature transforms the app by adding advanced functionality, requiring major code and design
changes.

Aspect Maintenance Evolution


Purpose Bug fixes, minor updates Major upgrades and adaptations
Focus Stability Growth and improvement
Activities Corrective, adaptive Strategic, large-scale changes
Types of Maintenance
❖ Corrective Maintenance:
➢ Fixing defects in the software, such as bugs or security vulnerabilities.
❖ Adaptive Maintenance:
➢ Adjusting software to work in new environments (e.g., hardware upgrades, new OS versions).
❖ Perfective Maintenance:

➢ Enhancing system functionalities or performance based on user feedback.

❖ Preventive Maintenance:

➢ Proactively identifying and mitigating potential issues to reduce future problems.

BY : - TEKLHIWOT MEKONEN 4
Cont..

❖ Examples :
❖ Corrective Maintenance:
❖Example: Fixing a login vulnerability in an e-commerce website to prevent unauthorized access.
❖Purpose: Addresses defects or issues that cause the system to deviate from expected behavior.
❖ Adaptive Maintenance:
❖Example: Updating a web application to function properly on the latest versions of Chrome and Firefox.
❖Purpose: Modifies the software to remain compatible with changes in the environment, such as hardware
or software platforms.
❖ Perfective Maintenance:
❖Example: Improving the loading speed of an online shopping website to enhance user experience.
❖Purpose: Enhances performance, usability, or features based on user feedback or emerging needs.
❖ Preventive Maintenance:
❖Example: Refactoring legacy code in a mobile app to make it more modular and easier to maintain in the
future.
❖Purpose: Proactively reduces the risk of future issues by improving the software’s structure and reliability.

BY : - TEKLHIWOT MEKONEN 5
Lehman’s 8 Laws of Software Evolution
Lehman's 8 Laws of Software Evolution describe how software systems must continuously evolve to
remain useful, with increasing complexity unless actively managed.[1]

1. Continuing Change: Software must continuously evolve to remain useful.


2. Increasing Complexity: Without interventions, systems become increasingly complex over time.
3. Self-Regulation: Evolutionary changes follow patterns and distributions.
4. Conservation of Organizational Stability: Resource allocation for evolution tends to stabilize over
time.
5. Conservation of Familiarity: Significant changes require consistent understanding among developers and
stakeholders.
6. Continuing Growth: Functional growth is necessary to meet evolving user needs.
7. Declining Quality: Without upgrades, software quality deteriorates as environments evolve.
8. Feedback System: Software evolution is influenced by multi-agent feedback loops.
6
Software Evolution Models
❖ Software evolution models describe how software systems change over time to meet evolving
user requirements. There are several models that provide different frameworks for
understanding these changes:
➢ Iterative Models These models emphasize that requirements often emerge gradually, and systems
are built incrementally. Feedback from each iteration informs the next, leading to ongoing adjustments
and refinements.
✓ Example: Agile development, where software evolves through repeated cycles (sprints) based
on user feedback.
➢ Staged Models Rajlich and Bennett’s [2] Staged Model proposes four distinct stages for software
evolution:
1. Initial Development: Creation of the first stable version.
2. Evolution: Changes are made based on new requirements and feedback.
3. Servicing: At this stage, the focus shifts to maintaining the system rather than adding
significant new features.
4. Phaseout: The system is replaced as it becomes too expensive or outdated​.

BY : - TEKLHIWOT MEKONEN 7
Cont..
➢ Change Mini-Cycle Model Proposed by Yau [3], this model outlines a repetitive process with five
phases: Change Request, Analyze and Plan Change, Implement Change, Verify and Validate, and
Documentation Change. This cyclical approach addresses the ongoing need for updates and bug fixes​.

BY : - TEKLHIWOT MEKONEN 8
Phases in Software Maintenance
❖ Key Phases in Software Maintenance: Maintenance activities follow specific phases to
ensure systematic changes to the software:
➢ Understanding the Code:
✓ Before any modification, developers must understand the existing software to identify areas requiring
changes. This phase often involves reviewing documentation and source code to establish a solid foundation.
➢ Modifying the Code:
✓Once the code is understood, the necessary modifications are implemented. This can involve bug fixes,
adding new features, or optimizing existing code.
➢ Revalidating the Code:
✓After modifications, it is essential to test the software to ensure that it functions correctly and that no new
issues have been introduced. This phase ensures that the modified code meets the intended requirements and
maintains system stability.

9
Software Maintenance Standards
❖ International Standards for Software Maintenance:
➢ ISO/IEC 14764:
✓ This standard outlines a process for managing software maintenance, including guidelines
for process implementation, problem and modification analysis, and maintenance review.
It emphasizes the need for systematic procedures to ensure software stability during its
lifecycle [4].
➢ IEEE/EIA 1219:

✓ This standard provides a structured process for managing maintenance activities,


including phases such as problem identification, analysis, design, implementation, and testing.
It highlights the need for documentation and metrics for tracking the effectiveness of
maintenance efforts [5].

BY : - TEKLHIWOT MEKONEN 10
Configuration Management in Software Maintenance
❖ Software Configuration Management (SCM): Configuration management is essential for
tracking and controlling changes to the software throughout its lifecycle. In the context of
software evolution, SCM helps in the following:
➢ Identification of Software Configurations:

✓ Defining and categorizing all software artifacts, including source code, documentation,
and test cases, to create a structured representation of the software system.
➢ Control of Software Configurations:

✓ Ensuring that any modifications to the software are approved, tracked, and applied
systematically to avoid uncontrolled changes that could introduce errors or inconsistencies.

BY : - TEKLHIWOT MEKONEN 11
Cont..
➢ Auditing Software Configurations:
✓ SCM systems provide mechanisms to check the current state of the software, ensuring
compliance with the required specifications and documenting all changes for traceability.
➢ Tracking Software Configuration Status:

✓ Recording the history of changes, including when, why, and by whom changes were
made, helps maintain an audit trail of the software evolution process.

BY : - TEKLHIWOT MEKONEN 12
Challenges in Software Evolution
and Maintenance
❖ Managing Complexity:

➢ As software evolves, its complexity tends to increase, especially when adding new features
or making changes to the existing system.
➢ Without proper management, this growing complexity can hinder further evolution and
make the system harder to maintain.
❖ Skills and Knowledge Requirements:

➢ Evolution and maintenance activities often require specialized knowledge of the system
being maintained.
➢ Developers must be familiar with both the existing system and any new technologies that
are being introduced.
BY : - TEKLHIWOT MEKONEN 13
Cont..
➢ The challenge is particularly significant when dealing with legacy systems, where the
original development team may no longer be available​.
❖ Cost and Resource Allocation:

➢ Software maintenance can be resource-intensive, especially when frequent updates are


required or the system is large and complex.
➢ Maintaining a balance between continuing to support an existing system and developing
new systems or features is a significant challenge​.
❖ Risk of System Obsolescence:

➢ Systems that are not regularly updated may become obsolete or incompatible with modern
technologies.

BY : - TEKLHIWOT MEKONEN 14
Cont..
➢ Keeping software up to date and ensuring that it continues to meet user needs is an
ongoing challenge.
➢ Regular updates, refactoring, and adapting to new technologies can mitigate this risk​.

BY : - TEKLHIWOT MEKONEN 15
Future Trends in Evolution and
Maintenance
❖ The field of software evolution and maintenance (SEAM) is rapidly evolving with the
integration of cutting-edge technologies such as automation, AI, and adaptive systems.
❖ These technologies are set to significantly change the landscape of how software systems are
maintained and evolved, enabling more efficient, error-free, and responsive systems. Below is
an exploration of these trends.
1. Automation in Software Maintenance and Evolution
✓ Automation plays a crucial role in modern software evolution by handling repetitive tasks
and reducing human intervention.
✓ This includes the automation of bug fixes, refactoring, and testing, all of which can
improve the speed and accuracy of software evolution.

BY : - TEKLHIWOT MEKONEN 16
Cont..
✓ Automated Maintenance Tasks: Software maintenance involves regular updates and fixes.
▪ There is a trend of automated impact analysis and automated regression testing to
ensure that changes do not break existing functionality​.
▪ This minimizes manual labor and the likelihood of errors.
✓ Automated Refactoring: As systems become more complex, automated refactoring tools
are expected to play a key role in maintaining software quality.
▪ These tools can suggest or directly implement code optimizations and improvements
without altering the software's observable behavior​.
2. AI Integration in Evolution and Maintenance
✓ AI technologies, especially machine learning and natural language processing (NLP), are
poised to revolutionize software evolution processes.
17
Cont..
✓ They bring efficiency, scalability, and intelligence to tasks like code analysis, bug
detection, and maintenance prediction.
✓ AI in Code Understanding: AI tools, particularly machine learning algorithms, are becoming
integral in program comprehension.
▪ AI can analyze vast amounts of code and identify potential issues or optimization areas,
greatly assisting maintenance engineers​.
✓ AI-Driven Predictive Maintenance: One of the most exciting future trends involves AI's
ability to predict when software will fail or require maintenance.
▪ AI models can analyze historical data to predict bugs or performance issues before they
happen, allowing for proactive maintenance​​.

18
Cont..
✓ AI-Based Impact Analysis: AI is also transforming impact analysis—a task critical in
software maintenance.
▪ With AI, systems can automatically detect which parts of the codebase might be affected
by changes, significantly reducing the risks associated with software modifications​.
3. Adaptive Systems for Dynamic Software Evolution
✓ Adaptive systems are those that can modify themselves in response to changing conditions
without human intervention.
✓ The future of software evolution lies in building systems that can autonomously adjust to
new requirements, environments, and workloads.
✓Self-Adaptive Software: Self-adaptive systems are a key component of future software
evolution.
19
Cont..
▪ These systems monitor their own behavior and make adjustments to improve
performance or functionality based on real-time data.
▪ This trend is crucial in environments where software needs to constantly evolve to meet
changing business needs​.
✓ Evolution Without Human Input: Moving towards autonomous evolution, systems will not
only be able to self-monitor but also evolve themselves to meet new requirements.
▪ continuous software evolution without human intervention, especially in environments
such as open-source systems where the evolution is driven by the community's needs​. .
✓ Feedback Loops in Evolution: Adaptive systems also rely heavily on feedback mechanisms
to continually improve themselves.

20
Cont..
▪ The multi-level feedback systems highlighted in the book will allow software to evolve
continuously in response to user input, environmental changes, and system performance​.

21
References
❖ [1] M. M. Lehman, D. E. Perry, and J. F. Ramil. 1998. On Evidence Supporting the Feast Hypothesis and the Laws of
Software Evolution. Proceedings of the 5th International Software Metrics Symposium (Metrics), November 1998. IEEE
Computer Society Press, Los Alamitos, CA.

❖ [2] V. T. Rajlich and K. H. Bennett. 2000. A staged model for the software life cycle. IEEE Computer.

❖ [3] S. S. Yau, J. S. Collofello, and T. MacGregor. 1978. Ripple Effect Analysis of Software Maintenance. COMPSAC,
November 1978, Chicago, Illinois. IEEE Computer Society Press, Piscataway, NJ.

❖ [4] ISO/IEC 14764:2006 and IEEE Std 14764-2006. 2006. Software Engineering–Software Life Cycle Processes–
Maintenance. Geneva, Switzerland.

❖ [5] IEEE Standard 1219-1998. 1998. Standard for Software Maintenance. IEEE Computer Society Press, Los Alamitos, CA.

BY : - TEKLHIWOT MEKONEN 22
Books
❖ Software Evolution and Maintenance: A Practitioner's Approach , by , by Priyadarshi
Tripathy, Kshirasagar Naik .
❖ Software Evolution , by , Tom Mens , Serge Demeyer
❖ Software Maintenance Management: Evaluation and Continuous Improvement , by ,
Alain April , Alain Abran.

BY : - TEKLHIWOT MEKONEN 23
End of Lesson !
Q&A

BY : - TEKLHIWOT MEKONEN 24

You might also like