Chapter 5: Software Maintenance
- 1 Software Maintenance Fundamentals
- 2 Key Issues in Software Maintenance
- 3 Maintenance Process
- 4 Techniques for Maintenance
- 5 Software Maintenance Tools
- Modification Request
- Problem Report
- Software Configuration Management
- Service-Level Agreement
- Software Quality Assurance
- Verification and Validation
Software development efforts result in the delivery of a software product that satisfies user requirements. Accordingly, the software product must change or evolve. Once in operation, defects are uncovered, operating environments change, and new user requirements surface. The maintenance phase of the life cycle begins following a warranty period or postimplementation support delivery, but maintenance activities occur much earlier.
Software maintenance is an integral part of a software life cycle. However, it has not received the same degree of attention that the other phases have. Historically, software development has had a much higher profile than software maintenance in most organizations. This is now changing, as organizations strive to squeeze the most out of their software development investment by keeping software operating as long as possible. The open source paradigm has brought further attention to the issue of maintaining software artifacts developed by others.
In this Guide, software maintenance is defined as the totality of activities required to provide cost-effective support to software. Activities are performed during the predelivery stage as well as during the postdelivery stage. Predelivery activities include planning for postdelivery operations, maintainability, and logistics determination for transition activities [1*, c6s9]. Postdelivery activities include software modification, training, and operating or interfacing to a help desk.
The Software Maintenance knowledge area (KA) is related to all other aspects of software engineering. Therefore, this KA description is linked to all other software engineering KAs of the Guide.
The breakdown of topics for the Software Maintenance KA is shown in Figure 5.1.
1 Software Maintenance Fundamentals
1.1 Definitions and Terminology
1.2 Nature of Maintenance
1.3 Need for Maintenance
=== Majority of Maintenance Costs
=== Evolution of Software
1.4 Categories of Maintenance
2 Key Issues in Software Maintenance
2.1 Technical Issues
2.1.1 Limited Understanding
2.1.3 Impact Analysis
2.2 Management Issues
2.2.1 Alignment with Organizational Objectives
2.2.4 Organizational Aspects of Maintenance
2.3 Maintenance Cost Estimation
2.3.1 Cost Estimation
2.3.2 Parametric Models
2.4 Software Maintenance Measurement
2.4.1 Specific Measures
3 Maintenance Process
3.1 Maintenance Processes
3.2 Maintenance Activities
3.2.1 Unique Activities
3.2.2 Supporting Activities
3.2.3 Maintenance Planning Activities
3.2.4 Software Configuration Management
3.2.5 Software Quality
4 Techniques for Maintenance
4.1 Program Comprehension
4.3 Reverse Engineering
5 Software Maintenance Tools
 IEEE Std., 14764-2006 (a.k.a.ISO/IEC 14764:2006) Standard for Software Engineering—Software Life Cycle Processes-Maintenance, IEEE, 2006.
 P. Grubb and A.A. Takang, Software Maintenance: Concepts and Practice, 2th ed., World Scientific Publishing, 2003.
 H.M. Sneed, "Offering Software Maintenance as an Offshore Service", Proc. IEEE Int'l Conf. Software Maintenance (ICSM 08), IEEE, 2008, pp. 1–5.
 J.W. Moore, The Road Map to Software Engineering: A Standards-Based Guide, Wiley-IEEE Computer Society Press, 2006.
 IEEE, ISO/IEC/IEEE 24765:2010 Systems and Software Engineering—Vocabulary, ISO/IEC/IEEE, IEEE, 2010.
 A. April and A. Abran, Software Maintenance Management: Evaluation and Continuous Improvement, Wiley-IEEE Computer Society Press, 2008.
 M. Kajko-Mattsson, Towards a Business Maintenance Model, Proc. Int’l Conf. Software Maintenance, IEEE, 2001, pp. 500–509.