posted on 2022-12-12, 09:47authored byDavid Lorge Parnas
In traditional engineering design, preparation of a sequence of documents precedes the actual
construction begins. Each document is used for review and analysis and, after revision, serves as
input to the next phase in the development. When errors are discovered or changes are required,
the design documents previously approved are updated and reviewed again. Each new document
is reviewed against the previous documents. Whenever a document is revised, those based on it
are reviewed and revised if necessary.
In software design this approach is rarely properly applied. Practitioners seem unable or willing to
write the precise documents that would be required. Instead, they write vague statements that
cannot be subject to rigorous analysis and are of little value to those making the next decisions.
We will provide precise definitions of a set of software documents and how these
documents can be produced as part of an improved software development process.