Process patterns

The software process can be defined as a collection of patterns that define a set of activities, actions, work tasks, work products, and/or related behaviors required to develop computer software.

A process pattern provides us with a template—a consistent method for describing an important characteristic of the software process. A pattern might be used to describe a complete process or a task within a framework activity.

Pattern name

The pattern is given a meaningful name that describes its function within the software process.

Intent

The objective of the pattern is described briefly.

Type

The pattern type is specified. There are three types:

Task patterns

  • Define a software engineering action or work task that is part of the process

  • Relevant to successful software engineering practice

  • Example: Requirement Gathering

Stage patterns

  • Define a framework activity for the process

  • Incorporate multiple task patterns that are relevant to the stage

  • Example: Communication

Phase patterns

  • Define the sequence of framework activities that occur within the process

  • Apply even when the overall flow of activities is iterative in nature

  • Example: Spiral model or Prototyping

Initial context

The conditions under which the pattern applies are described before the pattern begins. We ask:

  • What organizational or team-related activities have already occurred?

  • What is the entry state for the process?

  • What software engineering or project information already exists?

Problem

The problem to be solved by the pattern is clearly described.

Solution

The implementation of the pattern is explained.
This section describes:

  • How the initial state of the process is modified after the pattern begins

  • How the available project or software engineering information is transformed after the pattern is successfully executed

Resulting context

The conditions that will result once the pattern has been successfully implemented are described. Upon completion, we ask:

  • What organizational or team-related activities must have occurred?

  • What is the exit state for the process?

  • What software engineering or project information has been developed?

Known uses

The specific instances where the pattern is applicable are indicated.


Process patterns provide an effective mechanism for describing any software process.
These patterns enable a software engineering organization to develop a hierarchical process description that begins at a high level of abstraction.

Once process patterns have been developed, they can be reused to define process variants. A customized process model can then be defined by a software team using these patterns as building blocks.