Page 45 -
P. 45
28 Chapter 2 Software processes
A software process is a set of related activities that leads to the production of a soft-
ware product. These activities may involve the development of software from scratch
in a standard programming language like Java or C. However, business applications
are not necessarily developed in this way. New business software is now often devel-
oped by extending and modifying existing systems or by configuring and integrating
off-the-shelf software or system components.
There are many different software processes but all must include four activities
that are fundamental to software engineering:
1. Software specification The functionality of the software and constraints on its
operation must be defined.
2. Software design and implementation The software to meet the specification
must be produced.
3. Software validation The software must be validated to ensure that it does what
the customer wants.
4. Software evolution The software must evolve to meet changing customer needs.
In some form, these activities are part of all software processes. In practice, of
course, they are complex activities in themselves and include sub-activities such as
requirements validation, architectural design, unit testing, etc. There are also support-
ing process activities such as documentation and software configuration management.
When we describe and discuss processes, we usually talk about the activities in
these processes such as specifying a data model, designing a user interface, etc., and
the ordering of these activities. However, as well as activities, process descriptions
may also include:
1. Products, which are the outcomes of a process activity. For example, the out-
come of the activity of architectural design may be a model of the software
architecture.
2. Roles, which reflect the responsibilities of the people involved in the process.
Examples of roles are project manager, configuration manager, programmer, etc.
3. Pre- and post-conditions, which are statements that are true before and after a
process activity has been enacted or a product produced. For example, before
architectural design begins, a pre-condition may be that all requirements have
been approved by the customer; after this activity is finished, a post-condition
might be that the UML models describing the architecture have been reviewed.
Software processes are complex and, like all intellectual and creative processes,
rely on people making decisions and judgments. There is no ideal process and most
organizations have developed their own software development processes. Processes
have evolved to take advantage of the capabilities of the people in an organization
and the specific characteristics of the systems that are being developed. For some