CH 0005
CH 0005
Maintenance (Evolution)
1
Topics covered
Development testing
Test-driven development
Release testing
User testing
Evolution processes
Program evolution dynamics
Software maintenance
Legacy system management
2
Program testing
3
Program testing goals
5
Testing process goals
Validation testing
To demonstrate to the developer and the system customer that
the software meets its requirements
A successful test shows that the system operates as intended.
Defect testing
To discover faults or defects in the software where its behaviour
is incorrect or not in conformance with its specification
A successful test is a test that makes the system perform
incorrectly and so exposes a defect in the system.
6
An input-output model of program testing
7
Verification vs validation
Verification:
"Are we building the product right”.
Validation:
"Are we building the right product”.
8
V & V confidence
9
Inspections and testing
10
Inspections and testing
11
Software inspections
12
Advantages of inspections
13
Inspections and testing
14
A model of the software testing process
15
Stages of testing
17
Unit testing
19
Automated testing
A setup part, where you initialize the system with the test
case, namely the inputs and expected outputs.
A call part, where you call the object or method to be
tested.
An assertion part where you compare the result of the
call with the expected result. If the assertion evaluates to
true, the test has been successful if false, then it has
failed.
21
Testing strategies
22
Partition testing
23
Testing guidelines (sequences)
24
General testing guidelines
25
Component testing
27
Interface testing
28
Interface errors
Interface misuse
A calling component calls another component and makes an
error in its use of its interface e.g. parameters in the wrong order.
Interface misunderstanding
A calling component embeds assumptions about the behaviour
of the called component which are incorrect.
Timing errors
The called and the calling component operate at different
speeds and out-of-date information is accessed.
29
Interface testing guidelines
31
System and component testing
32
Use-case testing
34
Software Evolution
35
Software change
36
Importance of evolution
37
A spiral model of development and evolution
38
Evolution and servicing
39
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.
40
Evolution processes
41
Change identification and evolution processes
42
The software evolution process
43
Change implementation
44
Change implementation
45
Software maintenance
46
Types of maintenance
47
Maintenance effort distribution
48
Maintenance costs
49
Development and maintenance costs
50