Before a system can be formally defined, it is common to write a specification in a natural language as the basis for the formal definition. Natural languages are not well suited for this task; documentation written in a natural language is often ambiguous and imprecise. Inspection of real documentation also reveals that, without special training, most writers do not produce concise, clear or consistent statements. We present here an experimental interface to a general-purpose natural-language processing system designed to control the writing of specification statements in a natural language. The interface is designed to reduce the degree of imprecision and ambiguity in the natural-language statements, as well as contributing to the writing of shorter statements, with clear structure and punctuation. We compare our approach to similar work in this area.
I N T R O D U C T I O NIt is generally accepted that the initial phase in the production of software must be a careful description of the system to be developed [1]. Any such specification should ideally be carried out in a formal language, but it is almost always the case that a previous specification in a natural language must be written. This is because formalspecification languages are often intelligible only to a small group of people, and formal specifications must thus be translated into a language that both client and developers can understand [2]. Several techniques have been advanced to assist non-specialists in the understanding of formal specifications, but natural-language specifications will continue to be used for the foreseeable future.The use of natural language in this context is not without problems. It is well known that natural languages lack the properties we associate with those languages used for formal specification tasks, namely well-defined syntax and semantics. In order to use natural languages for specification purposes, we must therefore carefully consider how to do it, in order to reduce the risk of producing deficient specifications. It has been noted in the literature that the requirements specification phase, particularly the production of natural-language specifications, is one of the weakest links in the process of formally developing a system (e.g. [3][4][5]).We describe in this paper a system consisting of a window-based interface to a natural-language processing system designed to write specifications in a controlled manner. Our primary goal is to provide a tool that can be used for this purpose in any setting. We assume that the typical users will be those with enough technical knowledge of the system to be specified, but not necessarily conversant with formal specification methods. Before we describe in more detail our system, we review the most salient characteristics found in some specification documents, and the problems they present.
1The fundamental problem of natural-language processing is the great amount of ambiguity at every linguistic level: morphological, syntactic, semantic and pragmatic. As expected, all these...