In the research paper “Requirements Engineering: A Roadmap”, the authors Bashar Nuseibeh and Steve Easterbrook state that the “primary measure of success of a software system is the degree to which it meets the purpose for which it was intended”. Requirements Engineering is also considered a branch of systems engineering because “software cannot function in isolation from the system in which it is embedded and Requirements Engineering must encompass a systems level view” (Nuseibeh and Easterbrook). The role of Requirements Engineering (RE) plays a vital role in the completion of this goal during the software development process. The process of Requirements Engineering consists of five core activities:
Modeling and Analyzing Requirements
Each of these steps are further analyzed in the next paragraphs.
According to Nuseibeh and Easterbrook, the elicitation of the requirements software project is typically regarded as the first step in the Requirements Engineering process. During this step, the scope, stakeholders, and goals of the project are defined through information that is acquired by the requirements engineer. During this step, the requirements engineer is more focused on the origination of the problem and the stakeholders’ requirements instead of correcting any issues that have been identified. The requirements engineer can use a variety of elicitation techniques to gather the necessary information. Some of the elicitation techniques are traditional (questionnaires and surveys), group processes (brainstorming and focus groups), prototyping, model-driven (goal-based and scenario-based methods), cognitive techniques, and contextual techniques (participant observation). The technique utilized in the elicitation process depends on the project and the resources available to the requirements engineer.
Another core activity in the Requirements Engineering process is the modeling and analyzing of the requirements. Nuseibeh and Easterbrook state that “the key question to ask for any modeling approach is ‘what is it good for?’ and the answer should always be in terms of the kind of analysis and reasoning it offers”. There are different methods of modeling that are useful on many types of projects. One example is enterprise modeling which focuses on the structure of the organization and is used to capture the purpose of the system. Another modeling technique is data modeling which is used to manage large amounts of data to show what information that the system will represent. Behavior modeling is another modeling technique that “involves modeling the dynamic or functional behavior of stakeholders and systems, both existing and required”. Other modeling techniques exist, such as domain modeling (used to develop domain descriptions), non-functional requirements modeling (related to quality, safety, security, etc.), and analyzing requirements modeling (include requirements animation, automated reasoning, etc.). Once again, the type of modeling technique utilized for a projects depends on numerous variables specific to the associated project.
Communications requirements is another core activity of the Requirements Engineering process. According to Nuseibeh and Easterbrook, communications requirements is “the process of facilitating effective communication of the requirements among the different stakeholders”. The requirements engineer must be able to communicate the requirements of the...