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