Page 275 -
P. 275
258 Chapter 9 Software evolution
Working Effectively with Legacy Code. Solid practical advice on the problems and difficulties of
dealing with legacy systems. (M. Feathers, John Wiley & Sons, 2004.)
EXERCISES
9.1. Explain why a software system that is used in a real-world environment must change or
become progressively less useful.
9.2. Explain the rationale underlying Lehman’s laws. Under what circumstances might the laws
break down?
9.3. From Figure 9.4, you can see that impact analysis is an important subprocess in the
software evolution process. Using a diagram, suggest what activities might be involved in
change impact analysis.
9.4. As a software project manager in a company that specializes in the development of
software for the offshore oil industry, you have been given the task of discovering the
factors that affect the maintainability of the systems developed by your company. Suggest
how you might set up a program to analyze the maintenance process and discover
appropriate maintainability metrics for your company.
9.5. Briefly describe the three main types of software maintenance. Why is it sometimes difficult
to distinguish between them?
9.6. What are the principal factors that affect the costs of system reengineering?
9.7. Under what circumstances might an organization decide to scrap a system when the system
assessment suggests that it is of high quality and of high business value.
9.8. What are the strategic options for legacy system evolution? When would you normally
replace all or part of a system rather than continue maintenance of the software?
9.9. Explain why problems with support software might mean that an organization has to
replace its legacy systems.
9.10. Do software engineers have a professional responsibility to produce code that can be
maintained and changed even if this is not explicitly requested by their employer?
REFERENCES
Arthur, L. J. (1988). Software Evolution. New York: John Wiley & Sons.
Banker, R. D., Datar, S. M., Kemerer, C. F. and Zweig, D. (1993). ‘Software Complexity and
Maintenance Costs’. Comm. ACM, 36 (11), 81–94.
Boehm, B. W., Abts, C., Brown, A. W., Chulani, S., Clark, B. K., Horowitz, E., Madachy, R., Reifer, D. and
Steece, B. (2000). Software Cost Estimation with COCOMO II. Upper Saddle River, NJ: Prentice Hall.