Requirement Engineering Process
- Requirement Engineering means that requirements for a product are defined, managed and tested systematically
- Requirements engineering builds a bridge to design and construction.
- Requirements engineering provides the appropriate mechanism for understanding what the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution, specifying the solution unambiguously, validating the specification, and managing the requirements as they are transformed into an operational system.
Requirement Engineering Tasks
- Establish a basic understanding of the problem and the nature of the solution
- In project inception, you establish a basic understanding of the problem, the people who want a solution, the nature of the solution that is desired, and the effectiveness of preliminary communication and collaboration between the other stakeholders and the software team
- Draw out the requirements from stakeholders
- Number of problems that are encountered as elicitation occurs are problems of scope, problems of understanding, problems of volatility
Elaboration (Highly structured)
- Create an analysis model that represents information, functional, and behavioral aspects of the requirements
- Elaboration is driven by the creation and refinement of user scenarios that describe how the end user (and other actors) will interact with the system.
- Each user scenario is parsed to extract analysis classes—business domain entities that are visible to the end user
- The attributes of each analysis class are defined, and the services that are required by each class are identified
- The relationships and collaboration between classes are identified, and a variety of supplementary diagrams are produced
- Agree on a deliverable system that is realistic for developers and customers
- The best negotiations strive for a “win-win” result
- That is, stakeholders win by getting the system or product that satisfies the majority of their needs and you (as a member of the software team) win by working to realistic and achievable budgets and deadlines
- activities in negotiation are :
Identification of the system or subsystem’s key stakeholders Determination of the stakeholders’ “win conditions”
- Negotiation of the stakeholders’ win conditions to reconcile them into a set of win-win conditions for all concerned (including the software team).
- Describe the requirements formally or informally
- A specification can be a written document, a set of graphical models, a formal mathematical model, and a collection of usage scenarios, a prototype, or any combination of these
- Review the requirement specification for errors, ambiguities, omissions, and conflicts
- Requirements validation examines the specification to ensure that all software requirements have been stated unambiguously; that inconsistencies, omissions, and errors have been detected and corrected; and that the work products conform to the standards established for the process, the project, and the product
- The primary requirements validation mechanism is the technical review
- The review team that validates requirements includes software engineers, customers, users, and other stakeholders who examine the specification looking for errors in content or interpretation, areas where clarification may be required, missing information, inconsistencies (a major problem when large products or systems are engineered), conflicting requirements, or unrealistic (unachievable) requirements
- Manage changing requirements
- Requirements management is a set of activities that help the project team identify, control, and track requirements and changes to requirements at any time as the project process
- Many of these activities are identical to the software configuration management