Specifying Compositional Units for Correct Program Development in Computational Logic Kung-Kiu Lau Department of Computer Science, University of Manchester Manchester M13 9PL, United Kingdom kung-kiu@cs.man.ac.uk Mario Ornaghi Dipartimento di Scienze dell'Informazione, Universita' degli studi di Milano Via Comelico 39/41, 20135 Milano, Italy ornaghi@dsi.unimi.it Abstract: In order to provide a formalism for defining program correctness and to reason about program development in Computational Logic, we believe that it is better to distinguish between specifications and programs. To this end, we have developed a general approach to specification that is based on a model-theoretic semantics. In our previous work, we have shown how to define specifications and program correctness for open logic programs. In particular we have defined a notion of correctness called steadfastness, that captures at once modularity, reusability and correctness. In this paper, we review our past work and we show how it can be used to define compositional units that can be correctly reused in modular or component-based software development.