Abstract
The authors present a methodology for developing large modular software, in which the modules may exist and interact while at different development stages. Each module may be either fully abstract (i.e., an algebraic specification), fully concrete (in which case computations are run directly in the object code) or anywhere in the middle. In the proposed approach, the authors consider executable specifications in which axioms are Horn clauses built over equations or predicates, mixed evaluation with Horn clauses, and computing goals using logic computation rules. For the 'concrete' parts, examples are developed in Ada. An essential aspect of this approach is that prototyping may be performed at every moment, whatever the state of the different modules. This introduces the usual advantages of running a prototype (debug, test, conformity to the requirements, etc.), without the usual drawbacks: having to program stubs and drivers, having to care about the evolution of the module interfaces, etc. The methodology allows for both locally top-down and bottom-up development strategies and stimulates systematic stepwise refinement schemes.<>

This publication has 14 references indexed in Scilit: