Abstract
Software maintenance is a much-maligned and misunderstood area of software engineering. Although systems have been maintained for years, relatively little is written about the topic. Funding for research is essentially nonexistent, and thus the academic researchers publish very little about software maintenance. Practitioners publish even less because of corporate fear of giving away the “competitive edge.” Whereas several books have been written specifically about software maintenance, only a few are suitable as textbooks. Further, periodicals address the topic infrequently.
This lack of publications contributes to the misunderstanding of software maintenance. This article attempts to provide a better appreciation of software maintenance by providing a historical perspective on maintenance and a discussion of current practices. Sections provide information which suggests that maintenance is more than fixing bugs or mistakes and is in fact performed prior to delivery of a software product. Finally, the article provides some insight into future directions of software maintenance.
Bibliography
- A. Abran and H. Nguyenkim, Analysis of Maintenance Work Categories Through Measurement, in Proceedings of the Conference on Software Maintenance-1991, IEEE Computer Society Press, Los Alamitos, CA, 1991, pp. 104–113.
- R. Agarwal, P. De, and A. P. Sinha, Comprehending Object and Process Models: An Empirical Study, IEEE Transactions on Software Engineering 25(4), 541–555 (1999).
- ANSI (American National Standards Institute), IEEE Standard Glossary of Software Engineering Terminology, 730, ANSI, New York, 1981.
- R. S. Arnold, Software Reengineering, in Conference on Software Maintenance Tutorial-1990, IEEE Computer Society Press, Los Alamitos, CA, Nov. 1990.
- R. S. Arnold, Software Reengineering, IEEE Computer Society Press, Los Alamitos, CA, 1992.
- L. J. Arthur, Software Evolution: The Software Maintenance Challenge, Wiley, New York, 1988.
- V. R. Basili, Quantitative Evaluation of Software Methodology, Proceedings 1st Pan-Pacific Computer Conference, Sept. 1985.
- B. Beizer, Software Testing and Techniques, 2nd ed., Van Nostrand-Reinhold, New York, 1990.
- B. Beizer, Black-Box Testing: Techniques for Functional Testing of Software and Systems, Van Nostrand-Reinhold, New York, 1995.
- K. H. Bennett, Software Maintenance: A Tutorial, Software Engineering, IEEE Computer Press, New York, 1997.
- H. R. Berlack, Software Configuration Management, Wiley, New York, 1991.
-
B. W. Boehm,
Software Engineering,
IEEE Transactions on Computers
C-25(12),
25–32
(1976).
10.1109/TC.1976.1674590 Google Scholar
- B. W. Boehm, Software Engineering Economics, Prentice-Hall, Englewood Cliffs, NJ, 1981.
- L. Briand, C. Bunse, J. Daly, and C. Differding, An Experimental Comparison of the Maintainability of Object-Oriented and Structured Design Documents, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1997, pp. 130–138.
- F. J. Buckley, Implementing Software Engineering Practices, Wiley, New York, 1989.
- F. W. Calliss and D. L. Calliss, Suggested Scenarios of Software Maintenance Education, Technical Report TR-92-011, Arizona State University, Tempe, Apr. 29, 1992.
- D. N. Card and R. L. Glass, Measuring Software Design Quality, Prentice-Hall, Englewood Cliffs, NJ, 1990.
- J. Cardow, You Can't Teach Software Maintenance!, Proceedings of the 6th Annual Meeting and Conference of the Software Management Association, 1992, pp. 335–362.
- N. Chapin, The Job of Software Maintenance, in Proceedings of the Conference on Software Maintenance-1987, IEEE Computer Society Press, Los Alamitos, CA, 1987, pp. 4–12.
- N. Chapin, Software Maintenance Life Cycle, in Proceedings of the Conference on Software Maintenance-1988, IEEE Computer Society Press, Los Alamitos, CA, 1988, pp. 6–13.
- R. Cherinka, C. M. Overstreet, and J. Ricci, Maintaining a COTS Integrated Solution—Are Traditional Static Analysis Techniques Sufficient for this New Programming Methodology?, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1998, pp. 160–169.
- E. Chikofsky and J. H. Cross, II, Reverse Engineering and Design Recovery: A Taxonomy, IEEE Software, pp. 13–17 (Jan. 1990).
- CMU/SEI, Capability Maturity Model for Software, Version 1.1, CMU/SEI-93-TR 24, Carnegie-Mellon University, Software Engineering Institute, Pittsburgh, PA, 1993, p. 20.
- J. Cope, If it's 1/1/00 Then It Must Be 1900!: What the Y2K Problem Is and Why Its Important, PC Novice-Guide to Y2K, pp. 4–8 (Jan. 1999).
- S. Date, Y2K Work is Paying Off, Government Computer News, Jan. 31, 2000. Available at: http://currents.net/newstoday/00/01/31/news1.html
- S. Dennis, Don't Waste Y2K Experiences, Newsbytes, Feb. 4, 2000. Available at: http://currents.net/newstoday/00/02/04/news1.html
- J. Dodd, Taking on the Year 2000, PC Novice-Guide to Y2K, Jan. 1999, pp. 9–11.
- R. E. Donnelly, Initiating a Software Metrics Program, Proceedings of the 6th Annual Meeting and Conference of the Software Management Association, 1992.
- C. Engel, G. Ford, and T. Korson, Software Maintenance Exercises for a Software Engineering Project Course, CMU/SEI-89-EM-1 ADA235779, Carnegie-Mellon University, Software Engineering Institute, Pittsburgh, PA, 1989.
- F. Fioravanti, P. Nesi, and F. Stortoni, Metrics for Controlling Effort During Adaptive Maintenance of Object-oriented Systems, in Proceedings of the Conference on Software Maintenance-1999, IEEE Press, Oxford, England, Sept. 1999, pp. 483–492.
- FIPS (Federal Information Processing Standards), Guideline on Software Maintenance, 106, FIPS, June 15, 1984.
- K. B. Gallagher and J. R. Lyle, Using Program Slicing in Software Maintenance, IEEE Transactions on Software Engineering 17(8), 751–761 (1991).
- S. A. Gamalel-Din and L. J. Osterweil, New Perspectives on Software Maintenance Processes, in Proceedings of the Conference on Software Maintenance-1988, IEEE Computer Society Press, Los Alamitos, CA, Oct. 1988, pp. 14–22.
- Gartner Group, Year 2000 Global State of Readiness and Risks to the General Business Community, Gartner Group, Oct. 1998.
- General Accounting Office (GAO), Year 2000 Computing Crisis: Business Continuity and Contingency Planning, GAO, Washington, DC, August 1998.
- R. B. Grady, Practical Software Metrics for Project Management and Process Improvement, Prentice-Hall, Englewood Cliffs, NJ, 1992, p. 91.
- R. B. Grady and D. L. Caswell, Software Metrics: Establishing a Company-wide Program, Prentice-Hall, Englewood Cliffs, NJ, 1987.
- M. H. Halstead, Elements of Software Science, Elsevier/North-Nolland, New York, 1977.
- A. Harrison, Government, Industry Discuss Y2K Lessons, Computerworld, Jan. 31, 2000. Available at: http://www.computerworld.com/home/print.nsf/all/000131E492
- S. A. Hissam, Experience Report: Correcting system Failure in a COTS Information System, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1998, pp. 170–176.
- C. D. Howe, J. L. Butt, S. D. Patel, and M. Cussen, The Y2K Hangover-Analysis, The Forrester Report, Jan. 13, 2000. Available at: http://www.forrester.com/ER/Research/Report/Analysis/0,1338,7065/FF.html
- C. P. Howerton, Software Maintenance in the Computing Curricula, Proceedings of the 6th Annual Meeting and Conference of the Software Management Association, May 1992, pp. 364–381.
- W. S. Humphrey, Managing the Software Process, Addison-Wesley, Reading, MA, 1989.
- IEEE, IEEE Guide to Software Configuration Management, IEEE Standard 1942, IEEE, New York, 1987.
- IEEE, IEEE Glossary, IEEE Standard 610.12, IEEE, New York, 1990a, p. 28.
- IEEE, Standard for Software Configuration Management Plans, IEEE Standard 828, IEEE, New York, 1990b.
- IEEE, Guide for Software Quality Assurance Plan, IEEE Standard 730.1, IEEE, New York, 1995.
- IEEE, IEEE Standard for a Software Quality Metrics Methodology, IEEE Standard 1061, IEEE, New York, 1998a, p. 42.
- IEEE, Standard for Software Maintenance, IEEE Standard 1219, IEEE, New York, 1998b.
- ISO/IEC, Information Technology—Software Life Cycle Processes, ISO/IEC 12207, ISO/IEC, Geneva, 1995.
- ISO/IEC, Information Technology—Guide for ISO/IEC 12207, ISO/IEC TR 15271, ISO/IEC, Geneva, 1998.
- ISO/IEC, Software Engineering—Software Maintenance, ISO/IEC 14764, ISO/IEC, Geneva, 1999a.
- ISO/IEC, Information Technology—Software Life Cycle Processes-Configuration Management, ISO/IEC TR 15846, ISO/IEC, Geneva, 1999b.
- C. Jones, Programming Productivity, McGraw-Hill, New York, 1986.
- C. Jones, Applied Software Measurement, McGraw-Hill, New York, 1991.
- C. Jones, Estimating Software Costs, McGraw-Hill, New York, 1998.
- M. I. Kellner and G. A. Hansen, Software Process Modeling, SEI/CM Technical Report, Software Engineering Institute, Carnegie-Mellon University, Pittsburgh, PA, 1988.
- G. A. Kiran, S. Haripriya, and P. Jalote, Effect of Object Orientation on Maintainability of Software, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1997, pp. 114–121.
- E. Kit, Software Testing in the Real World: Improving the Process, Addison-Wesley, Reading, MA, 1995.
-
M. M. Lehman,
On Understanding Laws, Evolution, and Conversation in the Large-Program Life Cycle,
Journal of Systems and Software
1,
213–221
(1980).
10.1016/0164-1212(79)90022-0 Google Scholar
- M. M. Lehman, Laws of Software Evolution Revisted, EWSPT96, October 1996, LNCS 1149, Springer-Verlag, New York, 1997, pp. 108–124.
- B. P. Lientz and E. B. Swanson, Software Maintenance Management, Addison-Wesley, Reading, MA, 1980.
- E. C. Lynd, Year 2000 Maintenance Using a Procedural Solution, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1997, pp. 206–212.
- M. Mattsson, Effort Distribution in a Six Year Industrial Application Framework Project, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1999, pp. 326–333.
- T. McCabe, A Complexity Measure, IEEE Transactions on Software Engineering SE-1(3), 312–327 (1976).
- Military Handbook Mission-Critical Computer Resources Software Support (MIL-HDBK-347), May 22, 1990.
- J. C. Munson and T. M. Khoshgoftaar, The Detection of Fault-Prone Program, IEEE Transactions on Software Engineering 18(5), 423–433 (1992).
- G. J. Myers, The Art of Software Testing, Wiley, New York, 1979.
- G. Parikh, Handbook of Software Maintenance, Wiley, New York, 1986.
- D. L. Parnas, Software Aging, Proceedings of the 16th International Conference on Software Engineering, Sorrent, Italyo, May 1994, pp. 279–287.
- W. Perry, Effective Methods for Software Testing, Wiley, New York, 1995.
- S. L. Pfleeger, Software Engineering—Theory and Practice, Prentice-Hall, Upper Saddle River, NJ, 1998.
- T. M. Pigoski, A Review of MIL-HDBK-347, Software Maintenance News 9(5), 16–17 (May 1991a).
- T. M. Pigoski, Quality Customer Relations, Software Maintenance News 9(12), 2 3 (Dec. 1991b).
- T. M. Pigoski, Practical Software Maintenance: Best Practices for Managing Your Software Investment, Wiley, New York, 1997.
- T. M. Pigoski and C. Cowden, Software Transition: Experiences and Lessons Learned, in Proceedings of the Conference on Software Maintenance-1992, IEEE Computer Society Press, Los Alamitos, CA, 1992, p. 28.
- T. M. Pigoski and L. E. Nelson, Software Maintenance Metrics: A Case Study, in Proceedings of the Conference on Software Maintenance-1994, IEEE Computer Society Press, Los Alamitos, CA, 1994.
- T. M. Pigoski and J. Sexton, Software Transition: A Case Study, in Proceedings of the Conference on Software Maintenance-1990, IEEE Computer Society Press, Los Alamitos, CA, 1990, pp. 200–204.
- R. S. Pressman, Software Engineering: A Practitioner's Approach, McGraw-Hill, New York, 1992.
- S. J. Reed, DLA's Year 2000 Remediation Program: Managing Organization-Wide Conversion and Compliance, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1997, pp. 198–205.
- R. V. Rodriguez, Proceedings of the First Software Engineering Research Forum, University of West Florida Press, Pensacola, 1991.
- S. R. Schach, Classical and Object-Oriented Software Engineering with UML and C++, WCB/McGraw-Hill, Boston, MA, 1999.
- N. F. Schneidewind, The State of Software Maintenance, IEEE Transactions on Software Engineering SE-13, 303–310 (Mar. 1987).
- W. K. Sharpley, Software Maintenance Planning for Embedded Computer Systems, in Proceedings of the IEEE COMPSAC, IEEE Computer Society Press, Los Alamitos, CA, Nov. 1977, pp. 303–310.
- D. B. Smith, H. A. Muller, and S. C. Tilley, The Year 2000 Problem: Issues and Implications, CMU/SEI-97-TR 002, 1997. Available at: http://www.sei.cmu.edu.publications/documents/97.reports/97tr002//97tr002abstract.html
- I. Sommerville, Software Engineering, 3rd ed., Addison-Wesley, Wokingham, England, 1989.
- I. Sommerville, Software Engineering, 5th ed., Addison-Wesley, Wokingham, England, 1996.
- G. E. Stark, L. C. Kern, and C. V. Vowell, A Software Metric Set for Program Maintenance Management, Journal of Systems and Software (1994).
- E. B. Swanson, The Dimensions of Maintenance, Proceedings of the 2nd International Conference on Software Engineering, 1976, pp. 492–497.
- E. B. Swanson and C. M. Beath, Maintaining Information Systems in Organizations, Wiley, New York, 1989.
- A. Takang and P. Grubb, Software Maintenance Concepts and Practice, International Thomson Computer Press, 1997.
- M. R. Vidger and J. C. Dean, Building maintainable COTS Based Systems, Proceedings of the IEEE Computer Society International Conference on Software Maintenance (ICSM), 1998, pp. 132–138.
- T. E. Vollman, Transitioning from Development to Maintenance, in Proceedings of the Conference on Software Maintenance-1990, IEEE Computer Society Press, Los Alamitos, CA, 1990, pp. 189–199.
- A. von Mayrhauser, Software Engineering – Methods and Management, Academic Press, San Diego, CA, 1990.
- M. Wood, A Re-engineering Economics Model, CROSSTALK, pp. 20–25 (June/July 1992).
- S. S. Yau and J. S. Collofello, Some Stability Measures for Software Maintenance, IEEE Transactions on Software Engineering SE-6(6), 545–552 (1980).
- H. Zuse, Software Complexity: Measures and Methods, de Gruyter, Berlin, 1991.
- N. Zvegintzov, Software Maintenance Exercises for a Software Engineering Project Course, Software Maintenance News 8(4), 6 (Apr. 1990a).
- N. Zvegintzov, Rising's College Course with Existing Software, Software Maintenance News 8(5), 10 (May 1990b).
- N. Zvegintzov, Real Maintenance Statistics, Software Maintenance News 9(2), 6–9 (Feb. 1991).