System Scope and Requirements
The granularity of refinement of low-level system goals and requirements depends on whether the agent type they are assigned to are part of the system scope and thus have to be fully designed and implemented.
Relationships
Main Description

During requirements analysis, it is very important to keep in mind which parts of the system actually have to be designed and implemented and which part of the system either already exist or will be implemented by third parties. This distinction defines the scope of the system which contains the components and features that have to be implemented.

In the KAOS method, requirements are defined by assigning low-level system goals to agent types. Some of these agent types will be within the scope of the system, i.e., they will have to be designed and implemented by the development team. For these agent types, a thorough and complete specification of the behaviour is essential. Other agent types, however, are not under control by the development team, either because they already exist or because they will be implemented by others. For these agent types, the requirements should be limited to those that define the interface to the external component and the behaviour the system has to expect from these components. It should also be stated in the models (e.g., as a note) that the agent type is outside the scope as documentation and explanation.

Requirements for external components serve two purposes:

  1. They are useful for designing the interface to the components, i.e., the datatypes that have to be exchanged as well as the messages and protocols.
  2. They act as a specification for external developers who are tasked to develop these external components. The requirements and the designed interfaces can thus serve as a specification book and clearly define the scope of these external components.

If existing components have to be integrated into the system, the requirements specified for them have to be informed by the existing interface. In such a case, it can be helpful to design a wrapper around the components and define the requirements for this wrapper, e.g., the way it has to modify data coming from the existing component for use in the system.

More Information
Checklists