Abstract: Developers of software intensive systems have problems delivering systems within cost and schedule, and many of the delivered systems do not do what users really want. Inadequate requirements engineering is a major contributor to these problems.. There are a number of reasons why the set of specified requirements is not normally equivalent to the set of ‘true’ requirements, including: natural language is imprecise; different disciplines use inconsistent terminology; conflicts are not readily recognized and therefore not properly negotiated; and assumptions are not clearly documented. Also practitioners “use different representation schemes, even within a single discipline (drawings, tables, natural language, and semi-formal models), leading to inconsistencies and ambiguities that are not likely to be discovered until the system is operational. To address these problems, classification methods and cognitive theories are discussed.