A STEP-BY-STEP SOFTWARE DEVELOPMENT PROCESS MODEL
Date
1990-04-01
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
There are three things needed to increase productivity in the
software development domain: software development knowledge,
an advanced and general level of underlying software
technology, and better software tools. The knowledge
defines the goals, the technology allows and supports the
development of better tools, and the tools implement and achieve
the goals set by the knowledge. The order of the three is
especially important to understand: the knowledge and purpose for
the tool must precede its development.
The purpose of this document is to advance knowledge, so that
better tools can be built to improve software productivity. In
particular, this document makes a relatively hard statement about
how software should be developed, by providing a concrete,
step-by-step description of the overall software development process.
Tool builders can thereby make more assumptions about the
software production process, and so can build more effective, more
special purpose tools.
As a beginning, the process model described in this essay only
addresses a very small and limited class of software projects: single
person "software tool" projects of up to 50K source lines in size.
The following general project activities are discussed in this essay:
project startup, analysis, preliminary design, detailed design,
implementation, product evaluation, project shutdown, and periodic
procedures. Template documents are included for the requirements
specification, functional specification, and post mortem document.
The appendices contain brief discussions on software cost estimation,
on software component structure and design, and on change control systems.
In the author's opinion, the process model described in this document
meets the Level 2 maturity rating criteria established by the
Software Engineering Institute, as described in [17] and [19].
It is important for the reader to understand that this document does
not claim to be the only way, the best way, nor even the most
appropriate way to develop software. Its only intention is to more
concretely describe the general software development used by the
author, so that new tools could be developed in the presence of stronger
assumptions about the steps in the development process. The utility
of this document to other developers, novice or expert, remains to be
seen.
Regrettably, many worthy topics have been omitted from this document
due to unavoidable time constraints. A list of such topics is contained
in the conclusion of the paper.
Description
Keywords
Computer Science