Page 274 -
P. 274
Chapter 9 Further reading 257
the other systems. If senior management in an organization decide to move to a new
hardware platform, then this may require applications to be replaced. If there is no
budget available for system transformation in a particular year, then system mainte-
nance may be continued, even though this will result in higher long-term costs.
KEY POINTS
Software development and evolution can be thought of as an integrated, iterative process
that can be represented using a spiral model.
For custom systems, the costs of software maintenance usually exceed the software
development costs.
The process of software evolution is driven by requests for changes and includes change
impact analysis, release planning, and change implementation.
Lehman’s laws, such as the notion that change is continuous, describe a number of insights
derived from long-term studies of system evolution.
There are three types of software maintenance, namely bug fixing, modifying the software to
work in a new environment, and implementing new or changed requirements.
Software reengineering is concerned with restructuring and redocumenting software to make
it easier to understand and change.
Refactoring, making small program changes that preserve functionality, can be thought of as
preventative maintenance.
The business value of a legacy system and the quality of the application software and its
environment should be assessed to determine whether the system should be replaced,
transformed, or maintained.
FURTHER RE ADING
‘Software Maintenance and Evolution: A Roadmap’. As well as discussing research challenges,
this paper is a good, short overview of software maintenance and evolution by leading
researchers in this area. The research problems that they identify have not yet been solved.
(V. Rajlich and K.H. Bennett, Proc. 20th Int. Conf. on Software Engineering, IEEE Press, 2000.)
http://doi.acm.org/10.1145/336512.336534.
Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business
Practices. This excellent book covers general issues of software maintenance and evolution as
well as legacy system migration. The book is based on a large case study of the transformation
of a COBOL system to a Java-based client-server system. (R. C. Seacord, D. Plakosh and G. A. Lewis,
Addison-Wesley, 2003.)