21.01.2022 Views

Sommerville-Software-Engineering-10ed

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

280 Chapter 9 ■ Software evolution

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.

Legacy systems are older software systems, developed using obsolete software and hardware

technologies, that remain useful for a business.

It is often cheaper and less risky to maintain a legacy system than to develop a replacement system

using modern technology.

The business value of a legacy system and the quality of the application software and its environment

should be assessed to determine whether a system should be replaced, transformed,

or maintained.

There are three types of software maintenance, namely, bug fixing, modifying 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.

Further Reading

Working Effectively with Legacy Code. Solid practical advice on the problems and difficulties of

dealing with legacy systems. (M. Feathers, 2004, John Wiley & Sons).

“The Economics of Software Maintenance in the 21st Century.” This article is a general introduction

to maintenance and a comprehensive discussion of maintenance costs. Jones discusses the factors

that affect maintenance costs and suggests that almost 75% of the software workforce are involved

in software maintenance activities. (C. Jones, 2006) http://www.compaid.com/caiinternet/ezine/

capersjones-maintenance.pdf

“You Can’t Be Agile in Maintenance?” In spite of the title, this blog post argues that agile techniques

are appropriate for maintenance and discusses which techniques as suggested in XP can be effective.

(J. Bird, 2011) http://swreflections.blogspot.co.uk/2011/10/you-cant-be-agile-in-maintenance.html

“Software Reengineering and Testing Considerations.” This is an excellent summary white

paper of maintenance issues from a major Indian software company. (Y. Kumar and Dipti, 2012)

http://www.infosys.com/engineering-services/white-papers/Documents/software-re-engineeringprocesses.pdf

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!