Professional Documents
Culture Documents
SSD9U8
SSD9U8
Maintenance
Unit 8. Deployment and Maintenance
8.1 What is Maintenance?
8.2 Managing Maintenance
8.3 Maintaining Object-Oriented Software
8.4 Aids to Maintenance
Assessments
Exercise 9
Multiple-Choice Quiz 8
8.1 What is Maintenance?
Types of Maintenance
Skills Required for Maintenance
Types of Maintenance
Maintenance should be considered part of product
development. 而不是额外做的事情
Few if any software products are completely free of faults,
even after undergoing extensive testing.
the client’s requirements or environment may change,
necessitating corresponding changes to the product.
There are 3 basic types of maintenance reflecting different
motivations for making changes to the software product:
Corrective maintenance removes residual faults in the product.
Perfective maintenance enhances the product with respect to
performance and functionality.
Adaptive maintenance occurs in response to changes in the client�s
computing facilities and environment.
maintenance time
One study found that
perfective maintenance claims the bulk of time devoted to
maintenance, approximately 60 percent.
Corrective maintenance consume about 18 percent of the
time
Adaptive maintenance consume about 18 percent of the time
the remainder is accounted for by other types of activities.
When releasing a new version of the product after
performing maintenance, it is usually a good idea
not to include more than one kind of maintenance in the
same release. 每次只做一种类型的维护!
维护程序 员的难堪!
Maintenance of a software product is a rather thankless
task.
Many programmers perceive
it as a low-glamour activity:
all the fun and glory in software construction are in the design and
development phases.
Instead of building a shiny new product, maintenance
programmers 遭批评及白眼(替别人受的)
have to deal with criticisms and requests from unhappy customers.
Often they are faced with poorly documented software to
the design of which they did not contribute. 文档很差
Management perpetuates the myth and bad reputation of
maintenance programming by assigning less-skilled and
lower-paid programmers to this activity. 公司也不重视
The reality is that maintenance programming is extremely
Maintenance is difficult
Maintenance is difficult because
it incorporates aspects of all other phases of software
development. 需要各开发阶段的技巧
locating
When a user files a problem report, the maintenance
programmer must
first determine whether it is indeed a software problem.
The user could have misunderstood 用户不明白是否真有错
误
what the product is supposed to do,
there may be a problem in the documentation.
Sometimes faults are triggered by a sequence of user
commands only.
The user 用户通常描述不清,得依靠维护程序员查错!
may have trouble duplicating the fault and
may be able to specify only vaguely the circumstances under which the
error occurs.
locating
If indeed the software does not conform to its
specifications and documentation
the maintenance programmer must try to locate the source of
the fault in the code.
This requires significant diagnostic and debugging
skills.
Not only is the code likely to be complex and poorly
documented
but also the fault itself may be poorly documented.
testing
After the fault has been removed, the maintenance
programmer must
test the module(s) in which the fault occurred and
test integration of the repaired module(s) with the rest of the
system.
regression testing against existing testing suites in
order to verify that
other faults have not been introduced inadvertently
documenting
Finally, before considering the fault fixed and
releasing a new version of the product,
the maintainer must also document each change and update
the relevant
specification
design
testing documents