· Tasks and techniques that lead to an understanding of requirements is called requirement engineering.
· Requirement engineering provides the appropriate mechanism for understanding
o What customer wants
o Analyzing needs
o Assessing feasibility
o Negotiating a reasonable solution
o Specifying solution unambiguously
o Validating the specification
o Managing requirements
· Requirements generally fall into two types:
o Functional requirements
o Non-Functional requirements
· A functional requirement will describe a particular behaviour of function of the system when certain conditions are met, for example: “Send email when a new customer signs up” or “Open a new account”.
· A non-functional requirement will describe how a system should behave and what limits there are on its functionality.
Requirement Engineering Tasks
Inception
· Roughly define scope
· A basic understanding of a problem, people who want a solution, the nature of solution desired
Elicitation (Requirement Gathering)
· Define requirements
· The practice of collecting the requirements of a system from users, customers and other stakeholders
Elaboration
· Further define requirements
· Expand and refine requirements obtained from inception & elicitation
· Creation of User scenarios, extract analysis class and business domain entities
Negotiation
· Reconcile conflicts
· Agree on a deliverable system that is realistic for developers and customers
Specification
· Create analysis model
· It may be written document, set of graphical models, formal mathematical model, collection of user scenarios, prototype or collection of these
· SRS (Software Requirement Specification) is a document that is created when a detailed description of all aspects of software to build must be specified before starting of project
Validation
· Ensure quality of requirements
· Review the requirements specification for errors, ambiguities, omissions (absence) and conflicts
Requirements Management
· Activities to identify, control & trace requirements (Umbrella Activities)