Evolution Phase
Evolution Phase
1
Software change
Software change is inevitable
New requirements emerge when the software is used;
The business environment changes;
Errors must be repaired;
New computers and equipment is added to the system;
The performance or reliability of the system may have to
be improved.
A key problem for all organizations is implementing
and managing change to their existing software
systems.
2
Importance of evolution
Organisations have huge investments in their
software systems - they are critical business assets.
To maintain the value of these assets to the
business, they must be changed and updated.
The majority of the software budget in large
companies is devoted to changing and evolving
existing software rather than developing new
software.
3
A spiral model of development and evolution
4
Software Stages: Evolution and servicing
Evolution
The stage in a software system’s life cycle where it is in
operational use and is evolving as new requirements are
proposed and implemented in the system.
Servicing
At this stage, the software remains useful but the only
changes made are those required to keep it operational
i.e. bug fixes and changes to reflect changes in the
software’s environment. No new functionality is added.
Phase-out
The software may still be used but no further changes are
made to it.
5
Change identification and evolution processes
7
Change implementation
8
Change implementation
Iteration of the development process where the
revisions to the system are designed, implemented
and tested.
A critical difference is that the first stage of change
implementation may involve program understanding,
especially if the original system developers are not
responsible for the change implementation.
During the program understanding phase, you have
to understand how the program is structured, how it
delivers functionality and how the proposed change
might affect the program.
9
Urgent change requests
Urgentchanges may have to be implemented
without going through all stages of the software
engineering process
If a serious system fault has to be repaired to allow
normal operation to continue;
If changes to the system’s environment (e.g. an OS
upgrade) have unexpected effects;
If there are business changes that require a very rapid
response (e.g. the release of a competing product).
10
The emergency repair process
11
Agile methods and evolution
Agilemethods are based on incremental
development so the transition from development to
evolution is a seamless one.
Evolution is simply a continuation of the development
process based on frequent system releases.
Automatedregression testing is particularly valuable
when changes are made to a system.
Changes may be expressed as additional user
stories.
12
Handover problems
Where the development team have used an agile
approach but the evolution team is unfamiliar with
agile methods and prefer a plan-based approach.
The evolution team may expect detailed documentation to
support evolution and this is not produced in agile
processes.
Where a plan-based approach has been used for
development but the evolution team prefer to use
agile methods.
The evolution team may have to start from scratch
developing automated tests and the code in the system
may not have been simplified as is expected in agile
development.
13
Program evolution dynamics
Program evolution dynamics is the study of the
processes of system change
After major empirical studies, Lehman and Belady
proposed that there were a number of “laws” which
applied to all systems as they evolved
There are sensible observations rather than laws.
They are applicable to large systems developed by
large organisations. Perhaps less applicable in
other cases
14
Lehman’s laws
Law Description
Continuing change A program that is used in a real-world environment must necessarily
change, or else become progressively less useful in that
environment.
Increasing As an evolving program changes, its structure tends to become more
complexity complex. Extra resources must be devoted to preserving and
simplifying the structure.
Large program Program evolution is a self-regulating process. System attributes
evolution such as size, time between releases, and the number of reported
errors is approximately invariant for each system release.
Organizational Over a program’s lifetime, its rate of development is approximately
stability constant and independent of the resources devoted to system
development.
15
Lehman’s laws
Law Description
Conservation of familiarity Over the lifetime of a system, the incremental change in each
release is approximately constant.
Continuing growth The functionality offered by systems has to continually
increase to maintain user satisfaction.
Declining quality The quality of systems will decline unless they are modified to
reflect changes in their operational environment.
Feedback system Evolution processes incorporate multiagent, multiloop
feedback systems and you have to treat them as feedback
systems to achieve significant product improvement.
16
Applicability of Lehman’s laws
Lehman’s laws seem to be generally applicable to
large, tailored systems developed by large
organisations.
Confirmed in early 2000’s by work by Lehman on the
FEAST project.
It is not clear how they should be modified for
Systems that incorporate a significant number of COTS
components;
Small organisations;
Medium sized systems.
17
Key points
Software development and evolution can be thought of
as an integrated, iterative process that can be
represented using a spiral model.
For custom systems, the costs of software maintenance
usually exceed the software development costs.
The process of software evolution is driven by requests
for changes and includes change impact analysis,
release planning and change implementation.
Lehman’s laws, such as the notion that change is
continuous, describe a number of insights derived from
long-term studies of system evolution.
18