Strategies For Requirements Discovery
The Requirements Discovery Canvas is a visual tool that helps teams discover and organise software requirements. Inspired by the Business Model Canvas, it provides a framework for collaboration, that can be used by both agile and traditional software development teams. How the Canvas Helps The Requirements Discovery Canvas guides teams through the discovery process in two ways. First, it prompts the team to consider some fundamental requirements questions. Secondly, it serves as a visual framework for organising what the team discovers.
The canvas is not tied to a particular requirements philosophy or approach. Teams are free to choose the approach that suits them best. They can choose between a simple approach guided by the structure of the canvas. Or use the canvas in conjunction with a more elaborate approach if they wish.
Fundamental Requirements Questions The canvas is based on a short list of fundamental requirements questions.
- Who is involved? This question prompts the team to identify the stakeholders who have some interest in a proposed (or existing) software solution.
- What do they do? This question prompts the team to identify the activities performed by stakeholders and use these as a way of understanding stakeholder goals.
- What do they need? This question prompts the team to identify the business needs that support stakeholder goals.
- How can they use software as a tool? This question prompts the team to define a set of software features that support stakeholder goals and satisfy their business needs.
- What is the proposed (or existing) solution? This question prompts the the team to identify the most important components of a solution.
The five questions provide the headings for the columns of the canvas. With the body of the canvas providing space for teams to organise their discoveries.
There are a number of simple strategies that can be used for discovering requirements.
Needs-Driven Approach Teams delivering a new software solution, often adopt a needs-driven strategy for requirements discovery. The team starts by identifying the stakeholders and understanding their goals. Next, they identify what is needed to support these goals. Finally, they define a set of software features that will satisfy the stakeholder’s needs.
The needs-driven strategy tends to populate the canvas from left-to-right.
Solution-Driven Approach
Teams supporting an existing software solution or implementing a packaged solution, often adopt a solution-driven strategy for requirements discovery. This approach is also useful for teams that want to compare the benefits of alternative solutions.
The team starts by identifying the major components, APIs and user interfaces of the solution. This understanding is used to reverse engineer the software features implemented by the solution.
Next, the team investigates how well these features satisfy stakeholder needs. Finally, the team explores strategies for improving the “fit” of features and needs. Strategies often include, enhancing the solution or encouraging stakeholders to revise their needs.
The solution-driven strategy tends to populate the canvas from right-to-left.
Needs vs. Solution Driven Strategies Teams are often involved in activities that sit somewhere between the two extremes of delivering a new solution and supporting an existing solution. For example, delivering a major enhancement to an existing solution often requires a combination of the needs-driven and solution-driven strategies.
The canvas is well suited to such hybrid strategies as the columns can be populated in the order that best suits the team’s strategy.
Brainstorming Approach Teams searching for novel solutions often adopt a brainstorming strategy for requirements discovery. For these teams, the canvas provides a place for them to organise ideas as they emerge.
Responding to Change Teams that must respond to change, adopt a reactive strategy for requirements discovery. For these teams, the canvas provides a context for change that allows them to investigate the impact of a change on existing requirements and solutions.