- Requirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users.
- Requirements analysis is critical to the success of a development project.
- Requirements must be documented, actionable, measurable, testable, related to identified business needs or opportunities, and defined to a level of detail sufficient for system design.
- Requirements can be architectural, structural, behavioral, functional, and non-functional.
- Requirements analysis can be a long and tiring process during which many delicate psychological skills are involved.
- Large systems may confront analysts with hundreds or thousands of system requirements.
- New systems change the environment and relationships between people, so it is important to identify all the stakeholders, take into account all their needs and ensure they understand the implications of the new systems.
- Analysts can employ several techniques to elicit the requirements from the customer.
- These may include the development of scenarios (represented as user stories in agile methods), the identification of use cases, the use of workplace observation or ethnography, holding interviews, or focus groups (more aptly named in this context as requirements workshops, or requirements review sessions) and creating requirements lists.
- Prototyping may be used to develop an example system that can be demonstrated to stakeholders.
- Where necessary, the analyst will employ a combination of these methods to establish the exact requirements of the stakeholders, so that a system that meets the business needs is produced.
Conceptually, requirements analysis includes three types of activities:
- Eliciting requirements: business process documentation, and stakeholder interviews. This is sometimes also called requirements gathering.
- Analyzing requirements: determining whether the stated requirements are clear, complete, consistent and unambiguous, and resolving any apparent conflicts.
- Recording requirements: Requirements may be documented in various forms, usually including a summary list and may include natural-language documents, use cases, user stories, or process specifications.
Requirements quality can be improved through these and other methods
- Visualization. Using tools that promote better understanding of the desired end-product such as visualization and simulation.
- Consistent use of templates. Producing a consistent set of models and templates to document the requirements.
- Documenting dependencies. Documenting dependencies and interrelationships among requirements, as well as any assumptions and congregations.