Eliciting Requirements

The Stakeholder Requirements Definition Process, User Stories

SEEK Topics

  • Eliciting requirements

    1. Elicitation sources (e.g., stakeholders, domain experts, and operational and organization environments) (c) E

    2. Elicitation techniques (e.g., interviews, questionnaires/surveys, prototypes, use cases, observation, and participatory techniques) (a) E

k = knowledge, remembering previously learned material, c = comprehension, understanding information, a = application, using learned material

E = essential, D = desirable / time-permitting

Eliciting requirements

Requirements elicitation is concerned with the origins of software requirements and how the software engineer can collect them. It is the first stage in building an understanding of the problem the software is required to solve. It is fundamentally a human activity and is where the stakeholders are identified and relationships established between the development team and the customer. It is variously termed “requirements capture,” “requirements discovery,” and “requirements acquisition.”

SWEBOK Chapter 1 Section 3

Elicitation sources

Requirements have many sources in typical software, and it is essential that all potential sources be identified and evaluated. This topic is designed to promote awareness of the various sources of software requirements and of the frameworks for managing them. The main points covered are as follows:

Goals. The term “goal” (sometimes called “business concern” or “critical success factor”) refers to the overall, high-level objectives of the software. Goals provide the motivation for the software but are often vaguely formulated. Software engineers need to pay particular attention to assessing the value (relative to priority) and cost of goals. A feasibility study is a relatively low-cost way of doing this.

Domain knowledge. The software engineer needs to acquire or have available knowledge about the application domain. Domain knowledge provides the background against which all elicited requirements knowledge must be set in order to understand it. It’s a good practice to emulate an ontological approach in the knowledge domain. Relations between relevant concepts within the application domain should be identified.

Stakeholders (see section 2.2, Process Actors). Much software has proved unsatisfactory because it has stressed the requirements of one group of stakeholders at the expense of others. Hence, the delivered software is difficult to use, or subverts the cultural or political structures of the customer organization. The software engineer needs to identify, represent, and manage the “viewpoints” of many different types of stakeholders.

Business rules. These are statements that define or constrain some aspect of the structure or the behavior of the business itself. “A student cannot register in next semester’s courses if there remain some unpaid tuition fees” would be an example of a business rule that would be a requirement source for a university’s course-registration software.

The operational environment. Requirements will be derived from the environment in which the software will be executed. These may be, for example, timing constraints in real-time software or performance constraints in a business environment. These must be sought out actively because they can greatly affect software feasibility and cost as well as restrict design choices.

The organizational environment. Software is often required to support a business process, the selection of which may be conditioned by the structure, culture, and internal politics of the organization. The software engineer needs to be sensitive to these since, in general, new software should not force unplanned change on the business process.

Elicitation techniques

Elicit stakeholder requirements from the identified stakeholders.

Techniques

  • Interviews. Interviewing stakeholders is a “traditional” means of eliciting requirements. It is important to understand the advantages and limitations of interviews and how they should be conducted.

  • Survey or Questionnaire: used to identify organizational gaps or stakeholder concerns.

  • Scenarios. Scenarios provide a valuable means for providing context to the elicitation of user requirements. They allow the software engineer to provide a framework for questions about user tasks by permitting “what if” and “how is this done” questions to be asked. The most common type of scenario is the use case description. There is a link here to topic 4.2 (Conceptual Modeling) because scenario notations such as use case diagrams are common in modeling software.

  • Prototypes. This technique is a valuable tool for clarifying ambiguous requirements. They can act in a similar way to scenarios by providing users with a context within which they can better understand what information they need to provide. There is a wide range of prototyping techniques—from paper mockups of screen designs to beta-test versions of software products—and a strong overlap of their separate uses for requirements elicitation and for requirements validation (see section 6.2, Prototyping). Low fidelity prototypes are often preferred to avoid stakeholder “anchoring” on minor, incidental characteristics of a higher quality prototype that can limit design flexibility in unintended ways.

    • Wireframe basic visual representation of the design.

    • Mockup looks more like a finished product but it is not interactive and not clickable.

    • Prototype very close to the finished product, processes can be simulated and user interaction can be tested.

  • Facilitated meetings. The purpose of these meetings is to try to achieve a summative effect, whereby a group of people can bring more insight into their software requirements than by working individually. They can brainstorm and refine ideas that may be difficult to bring to the surface using interviews. Another advantage is that conflicting requirements surface early on in a way that lets the stakeholders recognize where these occur. When it works well, this technique may result in a richer and more consistent set of requirements than might otherwise be achievable. However, meetings need to be handled carefully (hence the need for a facilitator) to prevent a situation in which the critical abilities of the team are eroded by group loyalty, or in which requirements reflecting the concerns of a few outspoken (and perhaps senior) people that are favored to the detriment of others.

  • Observation. The importance of software context within the organizational environment has led to the adaptation of observational techniques such as ethnography for requirements elicitation. Software engineers learn about user tasks by immersing themselves in the environment and observing how users perform their tasks by interacting with each other and with software tools and other resources. These techniques are relatively expensive but also instructive because they illustrate that many user tasks and business processes are too subtle and complex for their actors to describe easily.

  • User stories. This technique is commonly used in adaptive methods (see Agile Methods in the Software Engineering Models and Methods KA) and refers to short, high level descriptions of required functionality expressed in customer terms. A typical user story has the form: “As a <role>, I want <goal/desire> so that <benefit>.” A user story is intended to contain just enough information so that the developers can produce a reasonable estimate of the effort to implement it. The aim is to avoid some of the waste that often happens in projects where detailed requirements are gathered early but become invalid before the work begins. Before a user story is implemented, an appropriate acceptance procedure must be written by the customer to determine whether the goals of the user story have been fulfilled.

    • See video and slides below

    • Storyboards

  • Other techniques. A range of other techniques for supporting the elicitation of requirements information exist and range from analyzing competitors’ products to applying data mining techniques to using sources of domain knowledge or customer request databases.

Requirements Elicitation Techniques (Part 1) video 3:51

Requirements Elicitation Techniques (Part 2) video 4:21

Selecting requirement elicitation techniques for software projects IEEE

The Top Five Go-To Requirements Elicitation Methods modernanalyst

Stakeholders

Templates

  • As <user> when < this action happens> then <this will be the output>

  • As a <role>, I want <goal/desire> so that <benefit>.

  • <Person> is a <role> who wants to <goal/desire>.

User Stories in Jira

INVEST

An ideal User Story would have the following characteristics: Independent, Negotiable, Valuable, Estimable, Small and Testable. This is called the INVEST principle.

  • Make stories as independent as possible.

  • Avoid using stories as written contracts, they should be negotiable.

  • Make User Stories valuable to the user and consumers.

  • A story may not be estimable if the implementers lack domain knowledge or technical knowledge.

  • Predefined test criteria should be mentioned in the done criteria of an ideal User Story.

https://reqtest.com/requirements-blog/5-essential-agile-techniques-to-improve-your-requirements-documentation/

“Walking on water and developing software from a specification are easy if both are frozen.”

Edward V. Berard