Unit 9 - Software Evolution
Unit 9 - Software Evolution
1
Review {Testing}
2
3
Evolution
Windows 10 4
Software change
5
O
r
g Importance of evolution
a
n
i
z
a
t
i
o
n
s
h
a
v
e
h 6
u
A spiral model of development and evolution
7
Stages of Software
8
Stages of Software
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.
9
S
o
f Evolution processes
t
w
a
r
e
e
v
o
l
u
t
i
o
n 10
Change identification and evolution processes
11
The software evolution process
12
Change implementation
13
Change implementation
Iteration of the development process where the revisions to the system are
designed, implemented and tested.
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.
14
U
r
g Urgent change requests
e
n
t
c
h
a
n
g
e
s
m
a
y 15
The emergency repair process
16
Agile methods and evolution
17
P
r
o Program evolution dynamics
g
r
a
m
e
v
o
l
u
t
i
o
n
d
y 18
n
Lehman’s laws
Law Description
Organizational stability Over a program’s lifetime, its rate of development is approximately constant
and independent of the resources devoted to system development.
19
Lehman’s laws
Law Description
Declining quality The quality of systems will decline unless they are modified to
reflect changes in their operational environment.
20
M
o
d Software maintenance
i
f
y
i
n
g
p
r
o
g
r
a 21
m
M
a
i Types of maintenance
n
t
e
n
a
n
c
e
t
o
r
e
p 22
a
U
s
u Maintenance costs
a
l
l
y
g
r
e
a
t
e
r
t
h 23
a
Maintenance cost factors
Team stability
Maintenance costs are reduced if the same staff are involved with them for some time.
Contractual responsibility
The developers of a system may have no contractual responsibility for maintenance so
there is no incentive to design for future change.
Staff skills
Maintenance staff are often inexperienced and have limited domain knowledge.
Program age and structure
As programs age, their structure is degraded and they become harder to understand and
change.
24
R
e
- System re-engineering
s
t
r
u
c
t
u
r
i
n
g
o
r
25
r
R
e
d Advantages of reengineering
u
c
e
d
r
i
s
k
T
h
e
r
e
i 26
s
S
o
u Reengineering process activities
r
c
e
c
o
d
e
t
r
a
n
s
l 27
a
T
h
e Reengineering cost factors
q
u
a
l
i
t
y
o
f
t
h
e
s 28
o
Preventative maintenance by refactoring
29
Refactoring and reengineering
Re-engineering takes place after a system has been maintained for some
time and maintenance costs are increasing.
Refactoring is a continuous process of improvement throughout the
development and evolution process. It is intended to avoid the structure and
code degradation that increases the costs and difficulties of maintaining a
system.
30
O
r
g Legacy system management
a
n
i
s
a
t
i
o
n
s
t
h
a
t 31
L
o
w Legacy system categories
q
u
a
l
i
t
y
,
l
o
w
b 32
u
A
s
s Business value assessment
e
s
s
m
e
n
t
s
h
o
u
l
d
33
t
Issues in business value assessment
34
B
u
s System quality assessment
i
n
e
s
s
p
r
o
c
e
s
s
a 35
s