0% found this document useful (0 votes)
50 views33 pages

Chapter 1

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)
50 views33 pages

Chapter 1

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

Debre Berhan University

College Of Computing

Software Engineering Department


Software Evolution and Maintenance
(SEng5082)

Chapter One:
Software Evolution and maintenance concepts

12/16/2024 Software Evolution and Maintenance 1


Outline
 Evolution Vs Maintenance

 Software Evolution

 The necessity of Software evolution

Several Key Aspects of Software Maintenance

 Types of Software Maintenance

 Maintenance Process Models

 Need for Maintenance

 Challenges in Software Maintenance

 Disadvantages of Software Maintenance


12/16/2024 Software Evolution and Maintenance 2
Introduction:
 Software maintenance is a very broad activity that includes:

• Error corrections

• Enhancements of capabilities

• Deletion of obsolete capabilities and

• Optimization

 As per IEEE, it is a modification of s/w product after delivery to correct faults, to


improve performance or other attributes or to adopt the product to a modified
environment.
 As per ISO, it is a set of activities performed when s/w undergoes modification to code
and associated documentations due to a problem or the need for improvement or
adaptation.
12/16/2024 Software Evolution and Maintenance 3
Evolution Vs Maintenance
• The terms evolution and maintenance are used interchangeably. us
• However there is a semantic difference.
• Lowell Jay Arthur distinguish the two terms as follows:
“Software maintenance means to preserve from failure or decline.”
“Software evolution means a continuous change from lesser, simpler, or worse
state to a higher or better state.”
• Bennett and Xu made further distinctions between the two as follows:
• All support activities carried out after delivery of software are put under the category
of maintenance.
• All activities carried out to effect changes in requirements are put under the
category of evolution.
• Maintenance is considered to be set of planned activities whereas evolution concern
whatever happens to a system over
12/16/2024
time.
Software Evolution and Maintenance 4
Cont…
• Software maintenance comprises all activities associated with the process of

changing software for the purposes of:


o fixing bugs; and/or

o improving the design of the system so that future changes to the system are less

expensive.

• Evolution of software systems means creating new but related designs from

existing ones. The objectives include:


o supporting new functionalities

o making the system perform better and


12/16/2024 Software Evolution and Maintenance 5
o making the system run on a different operating system
Software evolution
• Fundamental work in the field of software evolution was done by Lehman and his
collaborators.

• Based on empirical studies, Lehman and his collaborators formulated some


observations and they introduced them as laws of evolution.

• The “laws” themselves have “evolved” from three in 1974 to eight by 1997.

• Those laws are the results of studies of the evolution of large-scale proprietary or
closed source software (CSS) systems.

• The laws concern a category of software systems called E-type systems.

12/16/2024 Software Evolution and Maintenance 6


E-Type System
• E-Type stands for “Embedded Type” and describes systems that are tightly
connected to real-world processes or environments.
• These systems are designed to solve problems or perform tasks in a specific
domain, and they evolve over time as the environment and requirements change.
• Characteristics of E-Type Systems:
1. Real-World Dependency:
• E-Type systems are deeply embedded in and influenced by the real world,
such as business, social, or technical environments.
2. Continuous Evolution:
• The system must adapt to changing user needs, laws, regulations, or
technological advancements.

12/16/2024 Software Evolution and Maintenance 7


E-Type System
3. Complexity:
• E-Type systems often grow in size and complexity as new features are added
and old ones are modified.
4. Unpredictable Behavior:
• Changes in the system or its environment can lead to unexpected interactions
or challenges.
 Examples of E-Type Systems:
1. Banking Software:
• A core banking system evolves as new regulations, customer needs, or
technologies (like mobile banking) emerge.

12/16/2024 Software Evolution and Maintenance 8


E-Type System
2. Air Traffic Control Systems:
• These systems must adapt to changes in regulations, airplane technology, or
air traffic patterns.
3. E-Commerce Platforms:
• Platforms like Amazon constantly evolve based on user behavior, market
trends, and competition.
4. Healthcare Management Systems:
• Hospital software systems evolve to incorporate new medical practices,
compliance requirements, or data analysis methods.

12/16/2024 Software Evolution and Maintenance 9


S-Type and P-Type
 S-Type (Static/Specified Type) Systems:
• This is a software, which works strictly according to defined specifications and
solutions.
• The solution and the method to achieve it, both are immediately understood before
coding.
• The s-type software is least subjected to changes hence this is the simplest of all.
• Example, a calculator program for mathematical calculation.
 P-Type (practical Type) Systems:
• This is a software with a collection of procedures.
• This is defined by exactly what procedures can do. The specification can be described
but the solution is not obviously instant.
• Example, gaming software
12/16/2024 Software Evolution and Maintenance 10
The eight laws of Lehman are briefly explained as
follows:
1. Continuing change: Unless a system is continually modified to satisfy emerging
needs of users, the system becomes increasingly less useful.
2. Increasing complexity: Unless additional work is done to explicitly reduce the
complexity of a system, the system will become increasingly more complex due to
maintenance-related changes.
3. Self-regulation: The evolution process is self-regulating in the sense that the
measures of products and processes, that are produced during the evolution, follow
close to normal distributions.
4. Conservation of organizational stability: The average effective global activity rate on
an evolving system is almost constant throughout the lifetime of the system. In other
words, the average amount of additional effort needed to produce a new release is
almost the same.

12/16/2024 Software Evolution and Maintenance 11


Cont…
5. Conservation of familiarity: As a system evolves all kinds of personnel, namely,
developers and users, for example, must gain a desired level of understanding of the
system’s content and behavior to realize satisfactory evolution. A large incremental
growth in a release reduces that understanding.
Therefore, the average incremental growth in an evolving system remains almost the
same.
6. Continuing growth: As time passes, the functional content of a system is
continually increased to satisfy user needs.
7. Declining quality: Unless the design of a system is diligently fine-tuned and adapted to
new operational environments, the system’s qualities will be perceived as declining over
the lifetime of the system.

12/16/2024 Software Evolution and Maintenance 12


Cont…
• 8. Feedback system: The system’s evolution process involves multi-loop, multi agent,
multi-level feedback among different kinds of activities.

• Developers must recognize those complex interactions in order to continually evolve an


existing system to deliver more functionalities and higher levels of qualities.

12/16/2024 Software Evolution and Maintenance 13


Cont…
 Generally, Software Evolution is a term which refers to the process of developing
software initially, then timely updating it for various reasons, i.e., to add new
features or to remove obsolete functionalities etc.

 The evolution process includes fundamental activities of change analysis, release


planning, system implementation and releasing a system to customers.

12/16/2024 Software Evolution and Maintenance 14


The necessity of Software evolution
 Software evaluation is necessary just because of the following
reasons:
 Change in requirement with time: With the passes of time, the organization’s
needs and modus Operandi of working could substantially be changed so in this
frequently changing time the tools(software) that they are using need to change for
maximizing the performance.
 Environment change: As the working environment changes the things(tools) that
enable us to work in that environment also changes proportionally same happens in
the software world as the working environment changes then, the organizations
need reintroduction of old software with updated features and functionality to
adapt the new environment.
12/16/2024 Software Evolution and Maintenance 15
Contd…
• Errors and bugs: As the age of the deployed software within an organization
increases their preciseness or impeccability decrease and the efficiency to bear the
increasing complexity workload also continually degrades. So, in that case, it
becomes necessary to avoid use of obsolete and aged software.
• Security risks: Using outdated software within an organization may lead you to at
the verge of various software-based cyberattacks and could expose your
confidential data illegally associated with the software that is in use.
• For having new functionality and features: In order to increase the performance
and fast data processing and other functionalities, an organization need to
continuously evolute the software throughout its life cycle so that stakeholders &
clients of the product could work efficiently.

12/16/2024 Software Evolution and Maintenance 16


Contd…
• Software Evolution Process:

12/16/2024 Software Evolution and Maintenance 17


Software Maintenance
• There will always be defects in the delivered software application because
software defect removal and quality control are not perfect.
• Therefore, software maintenance is needed to repair these defects in the released
software.
• Software Maintenance refers to the process of modifying and updating a software
system after it has been delivered to the customer. This can include fixing bugs,
adding new features, improving performance, or updating the software to work
with new hardware or software systems.
• The goal of software maintenance is to keep the software system working
correctly, efficiently, and securely, and to ensure that it continues to meet the
needs of the users.
• Software maintenance is a continuous process that occurs throughout the entire
life cycle of the software system.
12/16/2024 Software Evolution and Maintenance 18
Several Key Aspects of Software Maintenance
 Bug Fixing: The process of finding and fixing errors and problems in the
software.
 Enhancements: The process of adding new features or improving existing
features to meet the evolving needs of the users.
 Performance Optimization: The process of improving the speed, efficiency, and
reliability of the software.
 Porting and Migration: The process of adapting the software to run on new
hardware or software platforms.
 Re-Engineering: The process of improving the design and architecture of the
software to make it more maintainable and scalable.
 Documentation: The process of creating, updating, and maintaining the
documentation for the software, including user manuals, technical specifications,
and design documents.

12/16/2024 Software Evolution and Maintenance 19


Types of Software Maintenance
 Corrective Maintenance: This involves fixing errors and bugs in the
software system.
 Patching: It is an emergency fix implemented mainly due to pressure from
management. Patching is done for corrective maintenance but it gives rise
to unforeseen future errors due to lack of proper impact analysis.
 Adaptive Maintenance: This involves modifying the software system to
adapt it to changes in the environment, such as changes in hardware or
software, government policies, and business rules.
 Perfective Maintenance: This involves improving functionality,
performance, and reliability, and restructuring the software system to
improve changeability.
 Preventive Maintenance: This involves taking measures to prevent future
problems, such as optimization, updating documentation, reviewing and
testing the system, and implementing preventive measures such as backups.
12/16/2024 Software Evolution and Maintenance 20
Types of Software Maintenance Process Models:
1. Quick-Fix Model:
• This is an ad hoc approach used for maintaining the software system.
• It is a fire fighting approach, waiting the problem to occur and then trying to fix it
as quick as possible.
• The advantage is that it performs its work quickly and at a low cost.
• This model is an approach to modify the software code with little consideration for
its impact on the overall structure of the software system

12/16/2024 Software Evolution and Maintenance 21


Cont…
2. Iterative Enhancement Model:
• Iterative enhancement model considers the changes made to the system are iterative
in nature.
• This model incorporates changes in the software based on the analysis of the
existing system.
• It assumes complete documentation of the software is available in the beginning.
Moreover, it attempts to control complexity and tries to maintain good design.

12/16/2024 Software Evolution and Maintenance 22


Cont…
3. Re-use Oriented Model:
• The parts of the old/existing system that are appropriate for reuse are identified and
understood.
• These parts are then go through modification and enhancement, which are done on
the basis of the specified new requirements.
• The final step of this model is the integration of modified parts into the new system.

12/16/2024 Software Evolution and Maintenance 23


Cont…
4. Boehm's Model:
• Boehm’s Model performs maintenance process based on the economic models and
principles.
• It represents the maintenance process in a closed loop cycle, wherein changes are
suggested and approved first and then are executed.

12/16/2024 Software Evolution and Maintenance 24


Cont…
5. Taute Maintenance Model:
• Named after the person who proposed the model, Taute’s model is a typical
maintenance model that consists of eight phases in cycle fashion.
• The process of maintenance begins by requesting the change and ends with its
operation. The phases of Taute’s Maintenance Model are:

12/16/2024 Software Evolution and Maintenance 25


Need for Maintenance
Software Maintenance must be performed in order to:
 Correct faults.
 Improve the design.
 Implement enhancements.
 Interface with other systems.
 Accommodate programs so that different hardware, software, system features,
and telecommunications facilities can be used.
 Migrate legacy software.
 Retire software.
 Requirement of user changes.
 Run the code fast
12/16/2024 Software Evolution and Maintenance 26
Challenges in Software Maintenance
 Lack of documentation: Poorly documented systems can make it difficult to
understand how the system works, making it difficult to identify and fix
problems.
 Legacy code: Maintaining older systems with outdated technologies can be
difficult, as it may require specialized knowledge and skills.
 Complexity: Large and complex systems can be difficult to understand and
modify, making it difficult to identify and fix problems.
 Changing requirements: As user requirements change over time, the software
system may need to be modified to meet these new requirements, which can be
difficult and time-consuming. Software Evolution and Maintenance
12/16/2024 27
Cont…
 Interoperability issues: Systems that need to work with other systems or software
can be difficult to maintain, as changes to one system can affect the other systems.
 Lack of test coverage: Systems that have not been thoroughly tested can be
difficult to maintain as it can be hard to identify and fix problems without knowing
how the system behaves in different scenarios.
 Lack of personnel: A lack of personnel with the necessary skills and knowledge to
maintain the system can make it difficult to keep the system up-to-date and
running smoothly.
 High-Cost: The cost of maintenance can be high, especially for large and complex
systems, which can be difficult to budget for and manage.
12/16/2024 Software Evolution and Maintenance 28
Disadvantages of Software Maintenance
 Cost: Software maintenance can be time-consuming and expensive, and may
require significant resources and expertise.
 Schedule disruptions: Maintenance can cause disruptions to the normal schedule
and operations of the software, leading to potential downtime and inconvenience.
 Complexity: Maintaining and updating complex software systems can be
challenging, requiring specialized knowledge and expertise.
 Risk of introducing new bugs: The process of fixing bugs or adding new features
can introduce new bugs or problems, making it important to thoroughly test the
software after maintenance.

12/16/2024 Software Evolution and Maintenance 29


Cont…
 User resistance: Users may resist changes or updates to the software, leading to
decreased satisfaction and adoption.
 Compatibility issues: Maintenance can sometimes cause compatibility issues
with other software or hardware, leading to potential integration problems.
 Lack of documentation: Poor documentation or lack of documentation can make
software maintenance more difficult and time-consuming, leading to potential
errors or delays.
 Technical debt: Over time, software maintenance can lead to technical debt,
where the cost of maintaining and updating the software becomes increasingly
higher than the cost of developing a new system.
12/16/2024 Software Evolution and Maintenance 30
Cont…
 Skill gaps: Maintaining software systems may require specialized skills or
expertise that may not be available within the organization, leading to potential
outsourcing or increased costs.
 Inadequate testing: Inadequate testing or incomplete testing after maintenance
can lead to errors, bugs, and potential security vulnerabilities.
 End-of-life: Eventually, software systems may reach their end-of-life, making
maintenance and updates no longer feasible or cost-effective. This can lead to
the need for a complete system replacement, which can be costly and time-
consuming.

12/16/2024 Software Evolution and Maintenance 31


Assignment:
1. Enumerate different types of software maintenance standards and
explain them?

12/16/2024 Software Evolution and Maintenance 32


.
!!
o u
k Y
a n A
Th Q&

12/16/2024 Software Evolution and Maintenance 33

You might also like