Task: Refine System Goals to Requirements
Uses system goals as the basis for a refinement towards requirements for the different agent types.
Disciplines: Requirements
Relationships
Main Description

In an ideal case, all stakeholders work together to find all the requirements the system has to satisfy. As a crucial part of the refinement process, the high-level system goals have to be broken down to sub-goals and finally to requirements. This should be a joint effort of the Product Owner, the Stakeholders, and the development team. During this process step, the final functionality of the system is defined and the correct and concise formulation of goals and requirements is established. At the same time non-functional goals and requirements can be identified, e.g., for the performance of the system, its usability, or its reliability.

The end user might have different ideas of what the system's functionalities should be than the system designers or the product owners. It is thus especially important to take her needs into consideration. Based on the system goals document, potential users of the system should thus be consulted and the requirements they have regarding the achievement of these system goals should be identified.

As always, the user requirements should first be formulated as abstract goals that are then refined to functional and non-functional requirements.

Steps
Select high-level goals to work on
In each iteration, a subset of high-level goals should be refined this way. Select the most risky goals or the ones that potentially have the biggest impact to work on first.
Refine goals into sub-goals and requirements
Iteratively select one of the high-level goals identified and start refining the goals. Identify the prerequisites necessary to achieve the goal and create a suitable hierarchy. A requirement is a leaf goal, i.e., it can be directly assigned to an agent type which is then responsible to fulfill it.
Identify Agent Types

After the system goals have been sufficiently refined, the resulting requirements can be assigned to different agent types. The assignment indicates which agent type is responsible for fulfilling the requirement, i.e., which agent type needs to be implemented so that it provides the required functionality. Identify the different agent types that are responsible for fulfilling the requirements and assign the requirements to them.

As agent types can be arranged in a hierarchy, bear in mind that assigning a requirement to a more general agent type, specialised agents derived from it inherit the responsibility.

Capture Domain Concepts in the Conceptual Domain Model
During the requirements analysis process, a number of concepts relevant in the domain the system is developed in will come up. Capture these concepts in a simple domain model, depicting their relations and possibly attributes and methods.
Identify and describe glossary terms

While refining the goals and identifying concepts, terms may come up in the discussion that are part of the domain-specific terminology or that are important in the scope of the project without becoming part of the domain model. These terms should be captured in a Glossary to document them, enable team members to look up definitions, and to facilitate communication within the team and with stakeholders.

Identify additional obstacles that can prevent the system from achieving its requirements
On the requirement level, obstacles are often technical, such as unreliable communication link or sensors. Identify these obstacles and introduce them in the model to mitigate them at a later point in time.
Key Considerations

As requirements elicitation is usually an iterative process, focus on requirements that refine the currently defined system goals. If new goals arise during the analysis, incorporate them in the next iteration.

During the requirements analysis process it is important to keep in mind the scope of the system to be developed. Especially if the system interacts with external systems extensively, it is easy to define requirements that are in the scope of these external components. Refer to System Scope and Requirements for more details.

More Information
Supporting Materials