The software engineering process is concerned with the definition, implementation, measurement, change, and improvement of software processes. This short article presents software engineering process knowledge along the lines of the software engineering body of knowledge (International Organization for Standardization & International Electrotechnical Commission [ISO/IEC], 2005b). The objective of the software engineering process is to implement new or better processes in current software engineering practice.
Software engineering is a young discipline, and many authors maintain that process engineering is crucial to its success, as well as being key to software quality assurance activities. This article presents generally accepted knowledge about the software engineering process. This knowledge has been adapted from industrial engineering, the management sciences, and human resources management. We have witnessed the emergence of software engineering process literature during the past 20 years and watched as some process topics have appeared while others have disappeared. This article presents four key topics (see Figure 1) that represent the fundamental concepts that must be acquired by all software engineers.
Figure 1. Top
Key topics in the software engineering process and its improvement
Process Implementation And Evolution
Process implementation and change concern the initial deployment of processes and ongoing changes designed to improve and develop a supporting infrastructure (software process assets). Software engineering process activities typically follow a life cycle in which some process models are used as a reference, and certain practical considerations must be considered to ensure their success.
The first section of this article introduces concepts relating to the initial deployment of processes and to the improvement of current processes. In both cases, existing software engineering practices have to evolve. If the evolution process is extensive, then the possibility of cultural changes within the organization may need to be addressed to lower the risk of resistance and failure.
Software process improvement typically follows an improvement life cycle composed of four activities: (a) Establish the process infrastructure and assets, (b) plan the implementation (or improvement), (c) implement and evolve the process, and (d) evaluate the process. Improvement is often a project in and of itself, requiring appropriate planning, resources, monitoring, and review. Completing these life cycle activities permits continuous feedback and improvement of the software process. The first activity, establishing the process infrastructure and assets, involves establishing commitment to the process implementation and change, and acquiring the appropriate resources and personnel. The objective of the second activity, planning the implementation (or improvement), is to describe and communicate the improvement project’s objectives and process needs following an assessment of the strengths and weaknesses of the current processes. The third activity, implementing and evolving the process, involves executing the planning step and deploying new processes or evolving existing processes, or both. This activity will often require piloting the new or enhanced processes. The last activity, evaluating the process, is concerned with measuring the resulting process and assessing how well it has achieved the initial objectives. This information is then used as input for subsequent improvement cycles.
Key Terms in this Chapter
Process Assets: They are a collection of items, maintained by an organization, for use by programs in developing, tailoring, maintaining, and implementing their processes.
Measurement Program: A measurement program is the set of related elements for addressing an organization’s measurement needs. It includes the definition of organization-wide measurements, methods, and practices for collecting organizational measurements and analyzing data, and measurement goals for the organization.
Maturity Level: It is a well-defined evolutionary plateau toward achieving a mature software acquisition process. The typical five maturity levels are initial, repeatable, defined, quantitative, and optimizing.
Measurement Process: This is a set of interrelated resources, activities, and influences related to a measurement.
Capability Maturity Model: The model is a description of the stages through which organizations evolve as they define, implement, measure, control, and improve their processes.
Software Process Assets: They are a collection of entities, maintained by an organization, for use by projects in developing, tailoring, maintaining, and implementing their software processes.
Process Assessment: It is a disciplined evaluation of an organization’s software processes against a model compatible with the reference model.