Practice: Goal-driven Requirements Elicitation
This is a practice for eliciting system requirements in a goal-driven way.
Relationships
Purpose

Create requirements models that are driven by system goals.

Main Description

When defining the requirements of an open self-organising system, the goals of the system are paramount. The process of refining them to requirements for the individual agent types will reveal necessary interactions, the obstacles the system has to deal with, and additional system goals that need to be in place to make the system adaptive.

A clear picture of the system's goals also defines the scope of the system. Only requirements that contribute directly to attaining the system goals should be defined and elaborated during design and implementation. Therefore, this practice can also facilitate the communication between Product Owner and the development team: only system goals defined consensually and refined accordingly are going to be implemented. It is also possible to explore sub-goals and mark them for implementation during the next iteration. Such conventions clearly define the targets for the next iteration and make it easy to manage expectations.

How to read this practice

Start by familiarising yourself with the basic concepts of goal-driven requirements engineering, e.g., by reading some of the literature provided with this practice, especially the papers on KAOS, referenced in Goal-Driven Requirements Engineering with KAOS. If adaptivity plays a role in the system, refer to Cheng et al., 2009 - A Goal-Based Modeling Approach to Develop Requirements of an Adaptive System with Environmental Uncertainty which explains succinctly how adaptive system behaviour can be modelled in a system. Make sure you understand the refinement process and how goals, requirements, obstacles, and agents interrelate.

If you are responsible for the creation of the requirements model, familiarise yourself with the tools necessary, such as Objectiver. Go through the tasks given above and familiarise yourself with the way the requirements model is repeatedly refined in successive iterations. If the identification of system limitations and constraints is important, make sure you have a solid understanding of the concepts and their impact.

In case you plan to use goal-driven requirements elicitation in the context of an agile process, especially in the context of Scrum, refer to  Goal-driven Requirements Engineering and Scrum for an explanation of the dependencies between agile requirements engineering methods and the approach proposed in this practice.