Learn More
We report on the software development techniques used in the New Zealand software industry, paying particular attention to requirements gathering. We surveyed a selection of software companies with a general questionnaire and then conducted in-depth interviews with four companies. Our results show a wide variety in the kinds of companies undertaking(More)
The refinement calculus for the development of programs from specifications is well suited to mechanised support. We review the requirements for tool support of refinement as gleaned from our experience with existing refinement tools, and report on the design and implementation of a new tool to support refinement based on these requirements. The main(More)
Existing refinement calculi provide frameworks for the stepwise development of imperative programs from specifications. This paper presents a refinement calculus for deriving logic programs. The calculus contains a wide-spectrum logic programming language, including executable constructs such as sequential conjunction, disjunction, and existential(More)
In this paper an outline is given of an approach to formally reasoning about importation , parameterisation and instantiation of speciications written in a modular extension of the Z language (called Sum). Interpretation and instantiation of theories in rst order logic are well understood. We illustrate how to use these results directly to provide a(More)
We describe some of the technology we used to build a user interface for a programmable theorem prover. By separating the user interface from the application itself, it is possible to experiment with new interface features very easily, without compromising the soundness of the proof tool. INTRODUCTION In this paper, we describe some of the technology that(More)
A program can be reened either by transforming the whole program or by reening one of its components. The reenement of a component is, for the main part, independent of the remainder of the program. However, reenement of a component can depend on the context of the component for information about the variables that are in scope and what their types are. The(More)
In this paper we demonstrate a refinement calculus for logic programs, which is a framework for developing logic programs from specifications. The paper is written in a tutorial-style, using a running example to illustrate how the refinement calculus is used to develop logic programs. The paper also presents an overview of some of the advanced features of(More)