Abstract
In the 'requirements phase' of the software life cycle, an analyst must acquire an understanding of how the software will be used and the environment in which it will be used. The understanding should be expressed as an environment model; the requirements should be expressed in relation to the model. Features desirable in a language supporting requirements engineering are presented. Features of the RML language are illustrated and its origin, as a confluence of two streams of thought, is traced. Language design issues are discussed.