What are the differences between software maintenance and software development from a service point of view, and the consequences thereof for the maturity of software maintenance organizations.
It can be argued that software maintenance can be seen as providing a service, whereas software development is concerned with the development of products.
Differences between products and services affect the way in which customers assess their respective quality. Consequently, customers will judge the quality of software maintenance differently from that of software development. This in turn implies a need for different processes than those used by the average software development organization.
We will discuss two overall approaches to achieve a high-quality IT service organization which include these service-specific processes: ITIL and the Capability Maturity Model (CMM)
- ITIL is a set of best practices widely used within the IT service industry.
- CMM is a maturity growth model is a set of best practices (KPA) for software engineering & development
Here we will investigate the differences between software maintenance and software development from a service point of view. There are differences between products and services in general. These differences affect the way in which customers assess the quality of products and services.
In particular, service quality is assessed on two dimensions: the technical quality—what the result of the service is—and the functional quality—how the service is delivered.
It can be argued that software maintenance can be seen as providing a service, whereas software development is concerned with the development of products. Consequently, customers will judge the quality of software maintenance differently from that of software development.
In order to provide high-quality software maintenance, different and additional processes are needed than provided by a high-quality software development organization.
- Services are produced and consumed simultaneously, whereas for products production and consumption can be separated. For example, a car can be produced first, sold a few months later, and then be consumed over a period of several years. For services the production and consumption has to take place in parallel.
Software maintenance is defined as (IEEE, 1990): “The process of modifying a software system or component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment”.
It is important that maintenance commitments be planned and documented. This works best if the maintenance organization and customer work together towards the specification of relevant and realistic maintenance service commitments (often called Service Level Agreement—SLA), based on the needs of the customer.
Examples of such conditions could be that the customer should use a certain format for documenting change requests or, in case of a bug, provide the maintenance department with the input that caused the fault to manifest itself. This includes the planning of the maintenance activities themselves, the transfer of the results thereof to the customer, the estimation of resources needed, the scheduling of maintenance activities, and the identification of possible risks.
IT Service Support covers configuration management, problem management, change management, help desk, and software control and distribution. Whereas the Software CMM targets software development processes that are key to producing and implementing high quality software products.
Process, Software Engineering Institute, Carnegie Mellon University, SEI Series in Software Engineering, Addison-Wesley Publishing Company, Reading, Mass., 441 pp. Singer, Janice (1998) ‘Practices of Software Maintenance’, in Proceedings of the International Conference on Software Maintenance, IEEE Computer Society Press, Los Alamitos, CA., pp. 139-145.
Frank Niessink received a MSc in Computer Science and a MSc in Economics from the Vrije Universiteit.