CH-1-Software Evolution and Maintenance Concepts
CH-1-Software Evolution and Maintenance Concepts
Maintenance
Chapter 1
Software Evolution and Maintenance
Concepts
• Evolution versus maintenance
o dy
• Software Evolution b
ry e.
v e
e anc t, Jr
• Types of Software Maintenance a t
th inten egu
is
• Evolution & Maintenance Models c t er o ma Vonn
• Configuration Management h a ra to d urt
a n c ants —K
• Reengineering h um dy w
• Legacy Systems n the nobo
i
• Refactoring fla w a nd
h e r u ild
• Software Reuse ot b
An s to nt
wa
• E-type programs: An E-type program is one that is embedded in the real world
and
it changes as the world does.
• These programs mechanize a human or society activity, make simplifying
assumptions, and interface with the external world by requiring or providing
services.
• An E-type system is to be regularly adapted to:
⁃ (i) stay true to its domain of application
⁃ (ii) remain compatible with its executing environment
⁃ (iii) meet the goals and expectations of its stakeholders
• 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.
• Lehman and his colleagues have postulated eight “laws” over 20 years starting
from
the mid-1970s to explain some key observations about the evolution of E-type
software systems
Intention-based …
II. Adaptive maintenance
• The purpose of adaptive maintenance is to enable the system to adapt to changes in
its data environment or processing environment.
• modifies the software to properly interface with a changing or changed
environment
Some generic examples are:
i. changing the system to support new hardware configuration;
ii. converting the system from batch to online operation;
iii. changing the system to be compatible with other applications.
iv. an application software on a smartphone can be enhanced to support WiFi-
based communication in addition to its present 3G cellular communication
Intention-based …
III. Perfective maintenance
• The purpose of perfective maintenance is to make a variety of improvements,
namely: user experience, processing efficiency, and maintainability.
• For example:
i. the program outputs can be made more readable for better user experience
ii. the program can be modified to make it faster, thereby increasing the
processing efficiency
iii. the program can be restructured to improve its readability, so increasing its
maintainability.
• In general, activities for perfective maintenance include:
• restructuring of the code
• creating and updating documentations
• tuning the system to improve performance
Intention-based …
IV. Preventive maintenance
• The purpose of preventive maintenance is to prevent problems from occurring by
modifying software products.
• For example
• good programming styles can reduce the impact of change, thereby reducing the
number of failure.
• Preventive maintenance is very often performed on safety critical and high
available
software systems
• software rejuvenation is a preventive maintenance measure to prevent, or at least
postpone, the occurrences of failures due to continuously running the software
system.
• Software rejuvenation is a proactive fault management technique aimed at cleaning
up the system internal state to prevent the occurrence of more severe crash in the
future
Software Evolution and Maintenance Concepts 14
Ty p e s o f M a i n t e n a n c e …
Evidence-Based…
¨ Software maintenance should have its own software maintenance life cycle (SMLC) model.
¨ A number of SMLC models with some variations are available in literature. Three common
features of the SMLC models found in the literature are:
⁃ Understanding the code
⁃ Modifying the code
⁃ Revalidating the code
¨ There are three main software maintenance and evolution models view
⁃ Reuse-oriented Model
⁃ Staged model of maintenance
⁃ Change mini-cycle models
I. Reuse-oriented Model
• A new version of the system can be created after the maintenance activities are
implemented on some of the old system’s components.
• Based on this concept, three process models for maintenance have been proposed
by Basili:
⁃ Quick fix model. In this model, necessary changes are quickly made to the code
and then to the accompanying documentation (Figure 3.2).
⁃ Iterative enhancement model. In this model, as illustrated in Figure 3.3, first
changes are made to the highest level documents. Eventually, changes are
propagated down to the code level.
⁃ Full reuse model. In this model, as illustrated in Figure 3.4, a new system is
built from components of the old system and others available in the repository
Fig: The simple staged model for the CSS life cycle
¨ A different kind of software evolution model, called staged model of maintenance and
evolution, has been proposed by Rajlich and Bennett.
¨ The model is descriptive in nature, and its primary objective is to improve the understanding
of how long-lived software evolves.
¨ The model considers four distinct, sequential stages of the lifetime of a system, as explained
below:
1. Initial development: When the initial version of the system is produced, detailed knowledge
about the system is fresh. Before delivery of the system, it undergoes many changes.
Eventually, a system architecture emerges and soon it stabilizes.
2. Evolution: Significant changes involve higher cost and higher risk. In the period
immediately following the initial delivery, knowledge about the system is still almost fresh
in the minds of the developers.
In general, for many systems, their lifespan are spent in this stage, because the systems
continue to be of importance to the organizations.
3. Servicing: When the knowledge about the system has significantly decreased, the
developers mainly focus on maintenance tasks, such as fixing bugs, whereas architectural
changes are rarely effected.
4. Phaseout: When even minimal servicing of a system is not an option, the system enters its
very final stage.
The organization decides to replace the system for various reasons:
(i) it is too expensive to maintain the system; or
(ii) there is a newer solution available.
Life Cycle Stage Maintenance Task User Population
Initial development – –
Evolution Corrections, enhancements Small
Servicing Corrections Growing
Phaseout Corrections Maximum
Closedown Corrections Declining
Staged Model Maintenance Task
¨ The first element “reverse engineering” is the activity of defining a more abstract
and easier to understand representation of the system.
¨ For example, the input to the reverse engineering process is the source code of the
system, and the output is the system architecture.
¨ The core of reverse engineering is the process of examination of the system, and it is
not a process of change.
¨ The third element “forward engineering” is the traditional process of moving from
a high-level abstraction and logical, implementation-independent design to the
physical implementation of the system.
The second element “Δ” captures alterations performed to the original system.
¨ A legacy software system is an old program that continues to be used because it still
meets the users’ needs, in spite of the availability of newer technology or more
efficient methods of performing the task.
¨ It is the phase out stage of the software evolution model of Rajlich and Bennet
described earlier.
There are a number of options available to manage legacy systems. Typical solution
include:
Freeze: The organization decides no further work on the legacy system should be
performed.
Outsource: An organization may decide that supporting software is not core
business, and may outsource it to a specialist organization offering this service.
¨ Impact analysis is the task of estimating the parts of the software that can be
affected if a proposed change request is made.
¨ Impact analysis techniques can be partitioned into two classes:
¨ Traceability analysis In this approach the high-level artifacts such as requirements,
design, code and test cases related to the feature to be changed are identified.
¨ A model of inter-artifacts such that each artifact in one level links to other artifacts is
constructed, which helps to locate a pieces of design, code and test cases that need to be
maintained.
¨ Dependency (or source-code) analysis Dependency analysis attempt to assess the affects
of change on semantic dependencies between program entities.
¨ This is achieved by identifying the syntactic dependencies that may signal the presence
of such semantic dependencies.
¨ The two dependency-based impact analysis techniques are: call graph based
analysis and dependency graph based analysis.
Benefits of Reuse
Increased reliability
Reduced process risk
Increase productivity
Standards compliance
Accelerated development
Improve maintainability
Reduction in maintenance time and effort
• Alain April, Alain Abran (2008), Software Maintenance Management Evaluation and
Continuous Improvement.
• Priyadarshi Tripathy, Kshirasagar, 2015, Naik, Software evolution and maintenance : a
practitioner’s approach.
• Penny Grub, Armstrong A Takang, Software Maintenance Concepts and Practice, 2 nd edition