[net.ai] Incomplete specifications ...

band@ccivax.UUCP (Bill Anderson) (04/16/84)

In reference to the recent discussion about Software
Engineering and incomplete specifications.

   For any new computer system, specifications at some
point must be incomplete.  A computer program is a
new machine -- it's never been constructed before.
So the final details always remain until the end.  This does
not mean that one does not begin construction.  On the
contrary, it seems to this writer that all too often
construction begins before any specifications are written.
What's needed is a middle path.  Design people need
enough requirements and constraints ( specifications )
to start work.  What should be provided is concise
documentation of the requirements and constraints, as
well as documentation of the unknowns and the risk.
Designers as they work will learn more about what is
and is not possible and this information will refine
the specifications.  But holes will remain.  This kind
of "evolutionary" development has been described by
Carl Hewitt in an article entitled "Evolutionary
Programming" in SOFTWARE ENGINEERING, edited by
H. Freeman and P.M. Lewis II (NY: Academic Press, 1980).

   I submit that any computer system development must
be a risk, and that it can only be developed by proceeding
with incomplete specifications.  The complement to this
is that large projects must be reviewed for viability
as knowledge is gained through this evolutionary
growth.  Sometimes it's better to quit before good money
is wasted.

   There's more to this issue that what is written here.
But it is not correct to hold AI programming up as some
sort of magical paradigm that is not subject to rudimentary
engineering discipline.  Software Engineering may indeed
have much to learn from the AI style of programming,
but programming in general has much to learn from engineering
disciplines also.

	Bill Anderson

    ...!ucbvax!amd70!rocksvax!ritcv!ccivax!band
    ...!{allegra | decvax}!rochester!ccivax!band