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.
   270   271   272   273   274   275   276   277   278   279   280