Requirements Engineering (RE) is the activity of investigating the customer's needs in the context of a software development project. The specification of requirements, which describes functional and non-functional properties of the system and of its environment, can be distinguished from the specification of the design, which describes the system alone for the benefit of software engineers.
The ICARUS project is concerned with the study of formal methods for building requirements specifications.
A wide spectrum requirement engineering (RE) language has been defined and coupled with a process description mechanism. The requirements engineering language is a formal specification language making it possible to express requirements in a natural operational and/or declarative style, to structure large requirements documents and to apply consistency and completeness checks on possibly incomplete specifications. The process description technique is based on a concept of workplan describing the planning and the organization of the tasks already done and/or to be achieved. A prototype environment has been developed actively to support their use. This environment is based on a process driven RE assistant integrating active analyst guidance, consistency and completeness checking, and specification visualization. A qualitative assessment of the formal concepts and tools developed has been achieved by performing case studies on selected families of real world applications.
Three levels of analysis have been identified in the study of such methods: the specification product (the description of the desired system in its environment); the specification process (the set of activities by which the specification is produced); and the specification rationale (the set of reasons that have led to the choice of a particular process).