Daniel M. Berry
Cheriton School of Computer Science
University of Waterloo
Waterloo, ON, Canada
When requirements are written, as they usually are, in natural language, ambiguity is a major cause of their not specifying what they should and implementers implementing the wrong system. Simple misuse of the language in which the document is written is one source of these ambiguities.
This talk argues that even when formal methods are used, natural language is key in requirements engineering. The talk describes the ambiguity phenomenon from several points of view, including linguistics and software engineering. Several strategies for avoiding and detecting ambiguities are presented. Strong emphasis is given on the problems arising from the use of heavily used and seemingly unambiguous words, phrases, and constructs such as ``all'', ``each'', ``every'', and plural in defining or referencing sets; the positioning of ``only'' and ``also''; and referents of pronouns. Many examples from requirements documents are examined. The talk concludes with a discussion of requirements for automated tools for finding ambiguities.