VND - Ms Powerpoint&Rendition 1
VND - Ms Powerpoint&Rendition 1
Evolution processes
Change processes for software systems
Software maintenance
Making changes to operational software systems
3
Software change
4
Software maintenance and evolution
5
Case Study 1: NASA's Space Shuttle Software
6
Case Study 2: Google's Search Engine
7
Case Study 2: Google's Search Engine
The GSE also had to deal with diverse and dynamic data
sources, user preferences, market trends, and
competitors. Google's GSE is an example of how
software maintenance and evolution can deliver value
and differentiation to a software product in a competitive
and evolving market.
8
Importance of evolution
9
A spiral model of development and evolution
10
Evolution and servicing
11
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
12
Evolution processes
13
Change identification and evolution processes
14
The software evolution process
15
Change implementation
16
Change implementation
17
Exploratory Refactoring
18
System re-engineering
19
Urgent change requests
20
The emergency repair process
21
Software maintenance
22
System re-engineering
23
Types of maintenance
24
Figure 9.8 Maintenance effort distribution
25
Maintenance costs
26
Figure 9.9 Development and maintenance costs
27
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
28
Maintenance prediction
29
Maintenance prediction
30
System re-engineering
31
Advantages of reengineering
Reduced risk
There is a high risk in new software development. There may be
development problems, staffing problems and specification
problems.
Reduced cost
The cost of re-engineering is often significantly less than the
costs of developing new software.
32
The reengineering process
33
Reengineering process activities
34
Reengineering cost factors
35
Preventive maintenance by refactoring
36
Refactoring and reengineering
37
“Bad smells” in program code
Duplicate code
The same or very similar code may be included at different
places in a program. This can be removed and implemented as
a single method or function that is called as required.
Long methods
If a method is too long, it should be redesigned as a number of
shorter methods
Switch (case) statements
These often involve duplication, where the switch depends on
the type of a value. The switch statements may be scattered
around a program. In object-oriented languages, you can often
use polymorphism to achieve the same thing.
38
Key points
39
Key points
40
41