We use the term requirements to denote what are often called functiona
l requirements. Requirements are located in the environment, which is
distinguished from the machine to be built. A requirement is a conditi
on over phenomena of the environment. A specification is a restricted
form of requirement, providing enough information for the implementer
to build the machine (by programming it) without further environment k
nowledge. To describe requirements appropriately we must fit our descr
iptions into an appropriate structure. This structure must respect the
distinction between the machine and the environment, and the distinct
ion between those environment properties that are given (indicative de
scriptions) and those that must be achieved by the machine (optative d
escriptions). Formalisation is a fundamental problem of requirements e
ngineering. Since most environments are parts of the physical world, a
nd therefore informal, the formalisation task is inescapable. Some tec
hniques are discussed for tackling this task. In particular, the use o
f designations is explained, and the distinction between definition an
d assertion. By using the smallest possible set of designated terms, a
ugmented by appropriate definitions, the developer can create a narrow
bridge between the environment and its descriptions in the requiremen
ts. In this way a sufficiently faithful approximation. to the informal
reality can be obtained.