We have built a software development tool, CLIME, that uses constraints to ensure the consistency of the different artifacts associated with software. This approach to software development makes the environment responsible for detecting most inconsistencies between software design, specifications, documentation, source code, and test cases. It effectively defines the semantics of each software artifacts using constraints between it and the program or other artifacts. The tool provides facilities to ensure that the various artifacts remain consistent as the software is written and evolves. This paper describes the techniques that underlie the tool, concentrating on the diversity of artifacts the tool supports and on the definition and incremental maintenance of constraints between these artifacts.
Steven P. Reiss