Requirement Engineering

What is Requirement Engineering?

Definition – In the realm of engineering design, Requirements Engineering (RE) is a crucial process for defining, documenting, and continuously maintaining project requirements. By using RE techniques, engineering teams can better understand the customer’s needs, analyze project feasibility, negotiate practical solutions, provide clear specifications, validate requirements, and manage changes as they are implemented in the final system. This practice requires the application of established principles, methods, tools, and notation to describe the proposed system’s behavior and associated constraints in a systematic and disciplined manner. Ultimately, effective Requirements Engineering plays a vital role in building successful software that meets the needs of its users.

Process of Requirement Engineering

The process of Requirements Engineering typically involves the following stages:

  • Requirements Elicitation/ Gathering
  • Requirements Analysis
  • Requirements Specification
  • Requirements Validation
  • Requirements Management

Requirement Engineering Process

Feasibility Study

Feasibility Study is an important process in Requirement Engineering that determines the practicality of a project, assessing its viability and potential success. It includes a thorough evaluation of the project requirements, market demand, available resources, potential risks, and estimated costs.

The following data highlights the key aspects of Feasibility Study in Requirement Engineering:

  • Purpose: The main purpose of a feasibility study is to determine whether a proposed project is feasible, both financially and technically, and whether it is worth pursuing.
  • Evaluation Criteria: The feasibility study is typically based on several evaluation criteria such as technical feasibility, operational feasibility, economic feasibility, legal feasibility, and schedule feasibility.
  • Technical Feasibility: Technical feasibility determines whether the project can be implemented using existing technology, software, and hardware infrastructure.
  • Operational Feasibility: Operational feasibility determines whether the project
  • Economic Feasibility: Economic feasibility evaluates the cost-effectiveness of the project, including the estimated costs and benefits, return on investment, and break-even point.

Requirements Elicitation/ Gathering

Requirements Elicitation is a crucial part of Requirement Engineering that involves collecting and defining the needs and expectations of stakeholders for a particular project. The purpose of Requirements Elicitation is to identify the requirements, including functional and non-functional requirements, for a particular project. Techniques used in requirements elicitation can include interviews, surveys, questionnaires, observation, prototyping, and workshops. Stakeholders involved in requirements elicitation can be classified into primary stakeholders who use the product and secondary stakeholders who are affected by it.

Constraints such as budget, timeline, and resources should be considered while gathering requirements. The requirements should be analyzed for conflicts, dependencies, and inconsistencies, and documented in a format that is easily understandable by all stakeholders. Verification should be done to ensure the requirements are complete, consistent, and accurate through reviews, walkthroughs, and other verification methods.

Requirements Analysis

Requirements analysis is a critical phase in the software development process. It involves gathering, analyzing, and documenting requirements to ensure that the software system meets the needs of the stakeholders.

Steps in requirements analysis

  • Elicitation
  • Analysis
  • Specification
  • Validation
  • Management

Requirements Elicitation and Analysis

Requirements Specification

Requirements specification is a critical part of the requirement engineering process. It involves documenting the requirements for a software system, which serves as a foundation for the entire software development life cycle. A requirements specification document outlines the functional and non-functional requirements, constraints, and assumptions that define the system’s desired behavior.

Check the Models Used in Requirement Specification from the below section

  • Data Dictionaries are a crucial tool in requirement engineering for storing information about all the data items that are defined in Data Flow Diagrams (DFDs). They serve as a centralized repository where developers and stakeholders can access and reference data definitions and terminologies.
  • Data Flow Diagrams (DFDs) are commonly used in requirement engineering to model the requirements of a system. A DFD is a graphical representation that shows how data flows through a system. The system being modeled can be any entity, such as a company, an organization, a set of procedures, a computer hardware system, a software system, or a combination of these.
  • Entity-Relationship Diagrams (ERDs) are a commonly used tool in requirement engineering for specifying and documenting software requirements. An ERD is a detailed graphical representation that illustrates the logical structure of the data in an organization or system.

Requirements Validation

Once the requirement specifications have been developed, it is important to validate the requirements to ensure they are accurate and feasible. It is possible that the user may request an illegal or impossible solution, or that experts may misunderstand the requirements. Therefore, it is necessary to check the requirements against several conditions, including:

  • Feasibility: Can the requirements be practically implemented?
  • Correctness: Are the requirements accurate and consistent with the functionality and purpose of the software?
  • Ambiguity: Are the requirements clear and unambiguous?
  • Completeness: Do the requirements cover all necessary features and functions?
  • Descriptiveness: Do the requirements fully describe the desired software behavior and outcomes?

By validating the requirements against these conditions, it is possible to identify any issues or discrepancies and make the necessary revisions. This helps ensure that the final software product meets the needs and expectations of the users and stakeholders.

There are several techniques used in requirement engineering to validate and ensure the accuracy of the requirements. These techniques include:

  • Requirements reviews/ inspections: This involves a systematic and manual analysis of the requirements to identify any issues, errors, or inconsistencies. The goal is to ensure that the requirements meet the necessary standards and specifications.
  • Test-case generation: Developing test cases to check the requirements and their testability. This involves creating a set of scenarios that simulate user behavior to test the functionality and behavior of the software.
  • Prototyping: Using an executable model of the system to check and test the requirements. This allows for a visual representation of the software and helps to identify potential problems before the software is developed.
  • Automated consistency analysis: Checking for consistency in structured requirements descriptions. This involves using automated tools to analyze the requirements and identify any inconsistencies or errors in the specifications.

Requirements Management

Requirement management is a crucial process in requirement engineering and system development. It involves managing the changing requirements that arise during the software development lifecycle. As the business needs change and a better understanding of the system is developed, new requirements may emerge.

Throughout the development process, the priority of requirements from different viewpoints may also change, as stakeholders gain a better understanding of the software’s functionality and purpose. Additionally, the business and technical environment of the system may change, which can have an impact on the requirements.

Effective requirement management ensures that the requirements are properly documented, tracked, and controlled throughout the development process. This helps to ensure that the software product meets the necessary standards, specifications, and user expectations. By managing the changing requirements, software development teams can adapt to the evolving needs of the stakeholders and deliver high-quality software products that meet business and technical requirements.

Requirement Engineering Advantages

Using requirements engineering has several advantages.

  • Firstly, the processing overhead is reduced as the analysis and documentation of requirements are quicker and more precise. This leads to more efficient communication between stakeholders and software engineers.
  • Secondly, requirements engineering helps to identify critical requirements early in the development process, allowing for efficient implementation.
  • Finally, a quick response to changes in requirements is possible as the identification and documentation of requirements undergo iterations before finalization. This makes it easier and less expensive to make changes when necessary.
  • Overall, requirements engineering helps to ensure that software development projects are more efficient, cost-effective, and able to meet the needs of stakeholders.

Hope you have gathered all the required information you need to know about the Requirement Engineering. For further updates or data regarding Software Engineering keep following our tutorials.freshersnow.com portal regularly.