Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

The Software Engineering Process: Definition and Scope

Watts S. Humphrey
Software Engineering Institute
Carnegie-Mellon University

With the growing interest in the software engineering process, it is increasingly important to define what
we mean by these words. This, however, also requires definitions for software and software engineering
as well as some agreement on the scope and boundaries of these activities.

Definition - Software
lThe term software refers to a program and all of the associated information and materials
needed to support its installation, operation, repair and enhancement.
This is consistent with Fred Brooks’ definition of a program as a set of instructions which can be run on
a computer and a programming product as a program together with all those items required to make it
intelligible, usable and extendible.’ With this understanding the term software is used to refer to
programming products.

Definition - Software Engineering


Software engineering refers to the disciplined application of engineering, scientific, and
l

mathematical principles and methods to the economical production of quality software.


While each term in this definition could be discussed further, we will only focus here on the words
discipline and quality and rely on generally accepted usage for the rest. In complex engineering and
scientific fields, professional discipline provides a framework for building on the lessons of the past. By
using such established disciplines as configuration management, coding standards, or naming
conventions, a software organization can avoid repeatedly solving previously encountered problems.
Such disciplines are just as valuable to the software engineer as clean-rooms are to the semi-conductor
engineer or calibrated instruments are to the experimental scientist.

The term quality refers to the- degree to which a product meets its users’ needs, This may refer to
functional content, error rates, performance, extendibility, usability, or any other product characteristics
which are important to the users.

‘F. P. Brooks, “The Mythical Man-Month’, Addison Wesley, 1975.

O-89791-3 I44/88/000S/0082 $I .O

82
Definition - Software Engineering Process
l The software engineering process is the total set of software engineering activities needed to
transform a user’s requirements into software.
This process may include, as appropriate, requirements specification, design, implementation,
verification, installation, operational support, and documentation. It also may include either temporary or
long term repair and/or enhancement to meet continuing needs. The term maintenance is not used here
,since its meaning is not universally accepted. In DOD, it refers to software repair and enhancement while
in the commercial computer field software maintenance deals with the servicing and repair of software
defects and does not include enhancements.

Since the user’s needs and/or the operational environment may not be fully knowable in advance, the
software engineering process is at least partly a learning process. This may require that the professionals
learn the users’ needs, embody those needs in a requirements definition, and modify this definition as
more knowledge is gained during design and implementation.

Scope of the Software Engineering Process


The software engineering process starts with a decision to implement some task in software. It does
not include such system related activities as defining overall system objectives and requirements,
allocating system functions between hardware and software, defining hardware/software interfaces,
conducting hardware/software integration and test, and full system acceptance test or operation.

While all of these activities are essential and while they may require considerable software expertise,
they properly fall in the category of system design and/or system management and should be considered
part of the systems engineering process.

Definition - Software Process Architecture


A software process architecture is a framework within which project specific processes are
l

defined.
Since the software engineering process used for a specific project should reflect its particular needs, a
framework is needed to provide consistency between projects. A software process architecture provides
the key checkpoints, tasks, and definitions needed to permit the adoption of common technology,
methods, and measurements. This provides many of the benefits of standardization while allowing the
process ffexibility that advanced software projects require. It also provides a framework for assessing and
improving the software engineering process.

83

You might also like