Software Developing Process
Software Developing Process
Software Developing Process
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.
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.
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.
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.
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