With the advent of intelligent computer aided design systems, companies suc
h as Boeing are embarking on an era in which core competitive engineering k
nowledge and design rationale is being encoded in software systems. The pro
mise of this technology is that this knowledge can be leveraged across many
different designs, product families, and even different uses (e.g., genera
tive process planning for manufacturing). The current state of the practice
attempts to achieve this goal through the reuse of software components. A
fundamental problem with this approach to knowledge sharing and reuse is th
at what we are trying to reuse is software-the end artifact in a long and c
omplicated process that goes from requirement specifications, through a pro
cess of design, to implementations. Knowledge sharing and reuse can not eas
ily and uniformly occur at the software level.
So what can be done as an alternative? This paper describes a theory, metho
dology, language, and tool for the semi-automatic development and maintenan
ce of engineering software from requirement specifications. In essence, thi
s paradigm for software development and maintenance is one that explicitly
captures requirement specifications, designs, implementations, and the refi
nement processes that lead from requirements all the way down to software.
By recording this entire refinement history, we stand a better chance of le
veraging knowledge for different uses.