Sei sulla pagina 1di 40

TSE 3351 - Lecture 1

Software Evolution Process

1
2

Lecture 1 - Outline
• Introduction
• Software Maintenance
• Software Evolution
• Models of Software Evolution
• Planning for Evolution

Software Evolution Process


Introduction
4

Software Development Life Cycle

Software Evolution Process


5

What Happens After Software Is


Developed?
• Deployment
– Installation
– Settings & Configurations
– Testing
– Training
• User Acceptance Testing
• Maintenance
– There will be a cut-off date to start maintenance formally
– Usually after a sign-off document

Software Evolution Process


Software Maintenance
7

What is Maintenance?

Software Evolution Process


8

Software Maintenance

• The work needed to keep a software in good condition

• Modification of a software product after delivery, to


correct faults, to improve performance or other attributes,
or to adapt the product to a modified environment.

Software Evolution Process


9

Why Software Maintenance is Needed

• To provide continuity of service


• To support mandatory upgrades
• To support user requests for improvements
• To facilitate future maintenance work

Software Evolution Process


10

Categories of Maintenance Activities


• Corrective - Modification initiated by defects in
the software
• Adaptive - Change driven by the need to
accommodate modifications in the environment
of the software system
• Perfective - Change undertaken to expand the
existing requirements of a system
• Preventive - Change undertaken to prevent
malfunctions

Software Evolution Process


11

Importance of Software Maintenance


• Correct use and functioning of a software system can be
a matter of life and death.
• Changes will usually be required to support the
usefulness of a system.
• Greatest challenges facing software engineers is the
management and control of these changes.
• Results from studies undertaken to investigate the
characteristics and costs of changes carried out on a
system after delivery show estimated expenditure at 40-
70% of the costs of the entire life cycle of the software
system.

Software Evolution Process


Software Evolution
13

What is Evolution?

Software Evolution Process


14

Software Evolution

• The gradual process of change and development of a


software from one version to another

Software Evolution Process


15

Software Evolution Example

Software Evolution Process


16

Software Evolution Example

Software Evolution Process


17

Release Notes
• Documents the changes for the new versions

Example:
• JDK 8u171 Update Release Notes
• Android Studio release notes

Software Evolution Process


18

Lehman’s Laws of Evolution


• Lehman et al. formulated their observations on software
evolution
• Based on empirical studies of the evolution of large-
scale proprietary or closed source software (CSS)
systems
• Introduced as “Laws of Evolution”

Software Evolution Process


19

Lehman’s Laws of Evolution


Continuing
change

Feedback Increasing
system complexity

Declining Laws of Self-


quality regulation
Evolution

Conservation
Continuing of
growth organizational
stability
Conservation
of familiarity

Software Evolution Process


20

Lehman’s Laws of Evolution


Law Description
Continuing change A system will become progressively less satisfying
to its user over time, unless it is continually
adapted to meet new needs.
Increasing complexity A system will become progressively more
complex, unless work is done to explicitly reduce
the complexity.
Self-regulation The process of software evolution is self regulating
with respect to the distributions of the products and
process artifacts that are produced.
Conservation of The average effective global activity rate on an
organizational stability evolving system does not change over time, that is
the average amount of work that goes into each
release is about the same.

Software Evolution Process


21

Lehman’s Laws of Evolution


Law Description
Conservation of The amount of new content in each successive release
familiarity of a system tends to stay constant or decrease over
time..
Continuing growth The amount of functionality in a system will increase
over time, in order to please its users.
Declining quality A system will be perceived as losing quality over time,
unless its design is carefully maintained and adapted
to new operational constraints.
Feedback system Successfully evolving a software system requires
recognition that the development process is a multi-
loop, multi-agent, multi-level feedback system.

Software Evolution Process


22

Evolution vs Maintenance
• 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.”
• Keith H. Bennett and Lie Xu use the term:
– “Maintenance for all post-delivery support and evolution to those
driven by changes in requirements.”
– Maintenance is considered to be set of planned activities
whereas evolution concern whatever happens to a system over
time.

Software Evolution Process


23

Evolution vs Maintenance

• 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.

Software Evolution Process


Models of Software Evolution
25

Categories of Models

• Iterative Models
• Change Mini-cycle Models
• Staged Models

Software Evolution Process


26

Iterative Models

• The developers do not know how to build the full


system.
• Systems are constructed in builds, each of which
is a refinement of requirements of the previous
build.
• A build is refined by considering feedback from
users

Software Evolution Process


27

Iterative Models

Software Evolution Process


28

Change Mini-cycle Models


Consist of five major phases:
• change request
• analyze and plan change
• implement change
• verify and validate
• documentation change

Software Evolution Process


29

Staged Models
• Closed Source Software (CSS)
• Versioned Staged Model
• Free, Libre, Open Source Software (FLOSS)

Software Evolution Process


30

Staged
Stage Model
Models for CSS

Software Evolution Process


31

Staged Model for CSS


Sequence of 5 stages:
• Initial Development – develop the first functioning
version of the software
• Evolution – developers improve the functionalities and
capabilities of the software to meet the needs and
expectations of customer
• Servicing – developers only fix minor and emergency
defects, and no major functionality included
• Phaseout – no more servicing is undertaken, while the
vendor seek to generate revenue as long as possible
• Closedown – software is withdrawn from the market, and
customers are directed to migrate to a replacement
Software Evolution Process
32

Version Staged Model

Software Evolution Process


33

Version Staged Model


• Each version passed full conventional phases
• e.g. full cycles of Unified Process
• New versions branch in parallel to maintenance

Software Evolution Process


34

FLOSS Systems

Software Evolution Process


35

FLOSS Systems
• In some software, after a transition from
Evolution to Servicing, a new period of evolution
was observed (dotted line from Servicing to
Evolution)
• In general, active developers of FLOSS systems
get frequently replaced by new developers.
There are possibilities to transition from
Phaseout to Evolution (dotted line)

Software Evolution Process


Planning for Software Evolution
37

Purpose of Planning

• To transform a troublesome system (often a


legacy system) into a form which can continue
in long term use
• To justify an approach to transforming a system
(i.e. forward or reverse engineering) so that a
realistic project plan can be formulated
• To provide information to help managers plan
system transformation and evolution

Software Evolution Process


38

Evolution Planning Activities


• Define constraints on evolution project
• Define business goals and processes
• Obtain understanding of legacy system
• Identify target systems
• Formulate possible evolution strategies
• Assess target systems and strategy alternatives
• Chose the best alternative
• Plan evolution project

Software Evolution Process


39

Evolution Strategies
• Continued maintenance
– if reengineering or replacement cannot reduce
maintenance or cannot be justified on the basis of
costs and benefits
• Reengineering
– when new development is too expensive, COTS is
unavailable, and current system is not maintainable
• Replacing
– COTS systems exist and the other two options are not
feasible

Software Evolution Process


40

Learning Outcomes
After completing this lecture, you should be able to:
• Define and describe software maintenance.
• Define and describe software evolution.
• Explain the different models for software evolution.
• Describe the activities in planning for software evolution.

Software Evolution Process

Potrebbero piacerti anche