Good Practices for Requirements Engineering
Good Practices for Requirements Engineering
Development Process
Iterative, incremental, interleaved.
Steps: Elicitation, Analysis, Specification, Validation.
Focus on re-evaluation, clarification, rewriting, correctness.
3.1 Elicitation
Define the requirements development process.
Write a vision and scope document: define objectives, set boundaries.
Identify user classes: roles, goals, usage frequency, knowledge levels.
Engage product champions and focus groups for user input.
Identify use cases and system events/responses.
Workshop and observe users to capture data flow.
Examine problem reports and reuse requirements from past projects.
3.2 Analysis
Create context diagrams and prototypes for feedback.
Prioritize requirements, adjusting for resources and market needs.
Model using abstract representation and rigorous notation.
Identify interfaces among systems and subsystems.
3.3 Specification
Document requirements consistently and accessibly using an SRS template.
Label requirements uniquely for traceability.
Record business rules and specify quality attributes affecting user satisfaction.
3.4 Validation
Inspect documents through formal and informal reviews.
Define test cases and acceptance criteria tracing back to specifications.
3.5 Management
Establish a change control process and a Change Control Board.
Perform impact analysis and maintain a change history.
Measure volatility, using tools to automate tasks.
Create a traceability matrix to connect requirements, code, and tests.
3.6 Summary of Good Practices
Elicitation: Define vision, identify stakeholders, hold workshops, observe users.
Analysis: Model environment, create prototypes, prioritize and analyze requirements.
Specification: Use templates, label requirements, specify nonfunctional needs.
Validation: Review, test requirements, define acceptance criteria.
Management: Control process, educate stakeholders, maintain history and traceability.
Development Process Steps
Define business requirements.
Identify user classes and representatives.
Plan elicitation and identify requirements.
Prioritize and flesh out user requirements.
Derive functional and specify nonfunctional requirements.
Review and develop prototypes.
Validate requirements through iterations.