Abstract
The engineering of a software system depends crucially upon the requirements specification of the system. The specification of requirements is a complex and interactive process involving an analyst and a client in a requirements definition activity. The principal medium for this activity is natural language, and we observe that special terms or jargon are used to abbreviate the communication between an analyst and the client. The information available to an analyst during this communication is inherently ambiguous and incomplete and often defined by the client without context. We emphasise the all-pervasive use of natural language during the requirements definition activity. Natural language is used from the very start of a project and used throughout requirements acquisition, expression and analysis for software specification. Furthermore, a substantial amount of relevant information about the client's system is also available in natural language. An analyst performs various tasks to elicit and understand software requirements. We identify a number of techniques to expedite these tasks for an analyst. These techniques have their origins in three different fields: knowledge engineering (for system knowledge acquisition); information science (searching for key concepts underlying the user's domain directly from its text); and natural language studies (schema for formalizing the user's domain knowledge). The main advantage of our framework is that it does not constrain (in the form of arbitrary method constructs) the thinking processes of an analyst. Instead, our framework emphasises the functional behaviour of natural language in a specific domain and allows the analyst to elicit and understand the requirements themselves in natural language.