In requirements engineering, requirements elicitation is the practice of collecting the requirements of a system from users, customers and other stakeholders.  The practice is also sometimes referred to as requirements gathering.
The term elicitation is used in books and research to raise the fact that good requirements can not just be collected from the customer, as would be indicated by the name requirements gathering. Requirements elicitation is non-trivial because you can never be sure you get all requirements from the user and customer by just asking them what the system should do. Requirements elicitation practices include interviews, questionnaires, user observation, workshops, brainstorming, use cases, role playing and prototyping.
Before requirements can be analyzed, modeled, or specified they must be gathered through an elicitation process. Requirements elicitation is a part of the requirements engineering process, usually followed by analysis and specification of the requirements.
Commonly used elicitation processes are the stakeholder meetings or interviews. For example, an important first meeting could be between software engineers and customers where they discuss their perspective of the requirements.
In 1992, Christel and Kang identified problems that indicate the challenges for requirements elicitation:
- 'Problems of scope'. The boundary of the system is ill-defined or the customers/users specify unnecessary technical detail that may confuse, rather than clarify, overall system objectives.
- Problems of understanding. The customers/users are not completely sure of what is needed, have a poor understanding of the capabilities and limitations of their computing environment, don’t have a full understanding of the problem domain, have trouble communicating needs to the system engineer, omit information that is believed to be “obvious,” specify requirements that conflict with the needs of other customers/users, or specify requirements that are ambiguous or untestable.
- Problems of volatility. The requirements change over time. The rate of change is sometimes referred to as the level of requirement volatility
In 1997, Sommerville and Sawyer suggested a set of guidelines for requirements elicitation, to address concerns such as those identified by Christel and Kang:
- Assess the business and technical feasibility for the proposed system
- Identify the people who will help specify requirements and understand their organizational bias
- Define the technical environment (e.g., computing architecture, operating system, telecommunications needs) into which the system or product will be placed
- Identify "domain constraints" (i.e., characteristics of the business environment specific to the application domain) that limit the functionality or performance of the system or product to be built
- Define one or more requirements elicitation methods (e.g., interviews, focus groups, team meetings)
- Solicit participation from many people so that requirements are defined from different points of view; be sure to identify the rationale for each requirement that is recorded
- Identify ambiguous requirements as candidates for prototyping
- Create usage scenarios or use cases to help customers/users better identify key requirements
Sequence of steps
In 2004, Goldsmith suggested a "problem pyramid" of "six steps which must be performed in sequence":
- Identify the real problem, opportunity or challenge
- Identify the current measure(s) which show that the problem is real
- Identify the goal measure(s) to show the problem has been addressed and the value of meeting it
- Identify the "as-is" cause(s) of the problem, as it is the causes that must be solved, not the problem directly
- Define the business "whats" that must be delivered to meet the goal measure(s)
- Specify a product design how to satisfy the real business requirements
However Goldsmith notes that identifying the real problem "is exceedingly difficult".
In 2009, Alexander and Beus-Dukic proposed a set of complementary approaches for discovering requirements:
- Identifying stakeholders
- Modeling goals
- Modeling context
- Discovering scenarios (or Use cases)
- Discovering "qualities and constraints" (Non-functional requirements)
- Modeling rationale and assumptions
- Writing definitions of terms
- Analyzing measurements (acceptance criteria)
- Analyzing priorities
Alexander and Beus-Dukic suggested that these approaches could be conducted with individuals (as in interviews), with groups (as in focused meetings known as workshops, or via Electronic meeting systems), or from "things" (artifacts) such as prototypes.
In 2009, Miller proposed a battery of over 2,000 questions to elicit non-functional requirements. Her approach is to build a stakeholder profile and then interview those stakeholders extensively. The questions are grouped into three sections, all focused on user needs:
- Operation: how well does the system perform for daily use?
- Revision: how easy is it to correct errors and add functions?
- Transition: How easy is it to adapt to changes in the technical environment?
- Alexander, Ian and Beus-Dukic, Ljerka. Discovering Requirements: How to Specify Products and Services. John Wiley, 2009.
- Goldsmith, Robin F. Discovering Real Business Requirements for Software Project Success. Artech House, 2004.
- Miller, Roxanne E. The Quest for Software Requirements. Mavin Mark Books, 2009.
- Sommerville, Ian and Sawyer, Pete. Requirements Engineering: A Good Practice Guide. John Wiley, 1997.
- Requirements Engineering A good practice guide, Ramos Rowel and Kurts Alfeche, John Wiley and Sons, 1997
- Christel, Michael and Kyo C. Kang (September 1992). "Issues in Requirements Elicitation". Technical Report CMU/SEI-92-TR-012. CMU / SEI. Retrieved January 14, 2012.
- Sommerville and Sawyer, 1997.
- Goldsmith, 2004. Page 12
- Alexander and Beus-Dukic, 2009.
- Miller, 2009.