Requirements Engineering: A Comprehensive Guide to Gathering, Analyzing, and Managing System Requirements
Requirements Engineering: A Comprehensive Guide
Introduction
Requirements engineering is the process of discovering, analyzing, documenting, and verifying the services required for a system and its operational constraints.
Types of Requirements
User Requirements:
- Statements in natural language plus diagrams of services the system provides and its operational constraints.
- Written for the users.
System Requirements:
- A structured document setting out detailed descriptions of the functions, services, and operational constraints of the system.
- Defines what should be implemented, can be part of a contract between the customer and developer.
Functional Requirements:
- Describe functionality or system services.
- Depend on the type of software, expected users, and the type of system where the software is used.
- Can be high-level declarations, functional system requirements should describe the system services in detail.
Non-Functional Requirements:
- Define system properties and constraints, e.g., reliability, response time, and storage requirements.
- Restrictions on the ability of devices I/O, system representations, etc.
- May be more critical than functional requirements.
Domain Requirements:
- Derived from the application domain and describe system features that reflect the domain.
- May restrict the existing functional requirements or define specific calculations should be performed.
- If domain requirements are not met, the system cannot work.
Document Specification Requirements
Must be composed of sentences in natural language, following certain standards:
- Use “shall” for mandatory requirements and “should” for desirable requirements.
- The requirements must be organized logically.
- Each requirement must have a unique identifier, for example, a numeric identifier for later reference.
- The software requirements should be divided into functional and nonfunctional requirements.
- Avoid the use of computer jargon.
Format Requirements Specification
- IEEE/ANSI 830/1998. (Introduction > Overview > Specific requirements > Appendices > Index)
Problems with Natural Language Specification
Ambiguity:
- Readers and writers of the requirement must interpret the same words the same way.
- Natural language is inherently ambiguous, therefore, very difficult.
Excessive Flexibility:
- The same thing can be said in several different ways in the specification.
Lack of Modularization:
- Language structures are inadequate to structure system requirements.
Requirements Engineering Phases
- Feasibility Study: Decides whether or not it is worth spending time and effort with the proposed system.
- Elicitation and Requirements Analysis: Gather information about the proposed system and the existing Source: documents, organization, existing specifications, observations, interviews, …
- Requirements Validation: Requirements error costs are high and thus, the validation is very important.
- Requirements Management: The process of managing changing requirements during the requirements engineering and system development.
Traceability
- Is related to relationships between requirements, their sources, and the system design.
- Traceability of the Source: Links from requirements to stakeholders who proposed these requirements.
- Requirements Traceability: Links between dependent requirements.
- Traceability Project: Links from requirements to modules project.