User:Ipoxylari/KAOS (software development)

KAOS, is an acronym for Knowledge Acquisition in autOmated Specification. KAOS, has been designed by Axel van Lamsweerde, Anne Dardenn, and Stephen Fickas from the University of Oregon and the University of Louvain.(Belgium)

It is considered a goal-Oriented requirements engineering approach that is used in the requirements acquisition phase of the software lifecycle. KAOS is used in a variety of fields, including mechanics, telecommunications, and healthcare. This method is based on the idea of building requirements models and is thought to be an efficient method for eliciting goal-oriented requirements.

As a result of KAOS, requirements can be structured methodically and logically, and problems can be solved by using graphical methods.

Constructs of KAOS
This section describes the basic constructs for documenting goals and assigning goal responsibilities to agents provided by the KAOS framework. In KAOS a goals is either a behavioural goal or a soft-goal and is defined as a prescriptive statement of intent that the system should satisfy through the cooperation of its agents.

Behavioural goal
A behavioural goal describes a set of admissible system behaviours. Behavioural goals can be defined in a clear-cut manner. For example one can verify whether the system satisfies a behavioural goal or not.

Example
"The train doors shall remain closed while the train is moving."

KAOS differentiates between two types of behavioural goals


 * Achieve goal: An achieve goal demands that the defined property must eventually hold
 * Maintain goal: A maintain goal requires that the defined property always holds (possibly under some condition).

Soft-goal
In KAOS, soft-goals are used to document preferences among alternative system behaviours. There is no clear-cut criterion for verifying the satisfaction of a soft-goal. Therefore, soft-goals are expected to be satisfied within acceptable limits rather that absolutely.

Example
"The system shall minimise the travelling time."

Agent
In KAOS agents are primarly related to users and components of software intensive systems. An agent is thus defined as an active system component which has a specific role for satisfying a goal. An agent can be a human agent, a device or a software component.

Goal relationships in KAOS
Dependencies between gaols are represented in KAOS goal model using AND-decomposition links and conflict links. Alternative decompositions of a goal are expressed by attaching multiple AND-decomposition links to the same goal. In the agent sub-model, goals can be assigned to agents by means of responsibility assignment links.

AND/OR-decomposition
An AND-OR decomposition link relates a super goal to a set of sub-goals. It indicates that a goal has been met if all of its subgoals have been met, or at least one of them has been met.

Alternative decomposition
OR-decomposition of a goal are documented in KAOS by assigning multiple AND-decompositions to the super-goal. Therefore, each alternative is represented as an AND-decomposition(which may also consist of just ne sub-goal). The set of assigned AND-decompositions refines the super-goal into the different sets of sub-goals. The super-goal is satisfied if one of the alternatives is satisfied.

Potential Conflict
Conflicts between goals are documented using potential conflict links. A potential conflict link documents that satisfying one goal may prevent the satisfaction of the other goal under certain conditions.

Responsibility Assignment
Responsibility assignment links relate goal sub-model to elements of the goal sub-model to elements of the agent sub-model. A responsibility assignment link between a goal and an agent means that this agent is responsible for satisfying the goal. Only terminal goals can be assigned to an individual agent. If a goal is assigned to an individual agent it can thus not be further decomposed. In addition, alternative responsibility assignments can be defined, i.e. a goal can be related to multiple agents using a responsibility assignment relationship. When implementing the system, at least one of the alternative assignments needs to be chosen.

Sub-models
In KAOS, the requirements can be represented in the form of goals, which can be functional or non-functional. Six sub-models are used for the representation of the goals. In these six sub-models, the object model and the goal model are the two main sub-models. The object model uses the UML class diagram for the representation of domain vocabulary. The goal model is used for the determination of requirements to be satisfied by the system and of expectations with regard to the environment through a goals hierarchy.

Goal
Goals describe acceptable behaviors for a system. In order to verify whether a system meets a goal, it should be defined clearly.

Responsibility model
The responsibility model describes the requirements or expectations of each agent and the tasks assigned to him.

Object Model
The object model is used to define and document relevant concepts in the application domain, presenting static constraints between concepts so as to satisfy design requirements. Entities, agents and associations are the three types of objects that consist in the object model.

Operational process model
The operational process model of KAOS describes the requirements that the agent needs to fulfill.

Obstacle Model
An obstacle is a situation that violates a goal, expectation or requirement. For a secure system, it is important to address potential barriers, which allows the analyst to address special situations that may occur during the requirements engineering phase, rather than coming to a solution when the system is running out of steam, thus ensuring the robustness of the system.

Components
The approach taken in KAOS has three components including a conceptual model for capturing and structuring requirements models, with an associated acquisition language, a set of strategies for formulating requirements models in this framework, and an automated assistant to provide guidance in the acquisition process based on these strategies.

Conceptual model
Conceptual models provide abstract representations of requirements models that need to be acquired. Therefore, it is considered a meta-model. Ideally, it should allow the precise and natural capture of both functional and non-functional requirements for any kind of composite system.

Acquisition strategies
The acquisition strategy defines a coherent set of steps for acquiring components of the requirements model as instances of meta-model components. To put it another way, a strategy describes how the meta-model graph is traversed to acquire instances of its various nodes and links.

The acquisition assistant
With the acquisition assistant, it is possible to follow one or more acquisition strategies using automated assistance. It is constructed around two repositories: a requirements database and a requirements knowledge base. They are both structured based on the meta-model components. It is the requirements database that maintains the requirements model that has been built gradually during the acquisition process.

== Process of writing a requirement document using KAOS ==


 * 1) Give a description of the problem.
 * 2) Give a target model for the system, including which target model you have used
 * 3) Give one of the responsibility models for the system.
 * 4) Give one of the object models of the system.
 * 5) Give the operational process model for the main objects in the system.
 * 6) Give potential obstacles to the achievement of the system's objectives
 * 7) Write a requirements document for the system based on the IEEE standard template.

Objectiver
Objectiver is a powerful tool to engineer the technical and business requirements owned by Respect-IT, a spin-out of the University of Louvain.

Objectiver is a modeling and support tool for writing requirements documents. It follows the KAOS methodology and allows us to generate a completed and consistent requirements document in Word format.

Main features

 * Automatic generation of Request for quotation (RFQ)/ Request for proposal (RFP)
 * Goal driven requirements analysis
 * Multiple views on documents with easy navigation
 * Completeness and consistency checks
 * Traceability inside models, source, output documents
 * Queries

GRAIL
GRAIL relies on KAOS and  is  a tool designed for requirement engineer practitioners to enable them to do real requirements engineering. GRAIL helps with proceeding to produce requirements documents and doing efficiently standard checking. The GRAIL kernel combines a graphical view, a textual view, an abstract syntax view, and an object base view of specifications. GRAIL has already been applied in the industry's cases, which plays an important role of a call for tender management tool, requirement management tool and requirements management tool connector. The textual editor supports template-driven requirements acquisition, and incremental checking of syntax and semantics both at declaration and assertion level. The graphical editor complements the detailed textual view with a high-level graphical view of the specification. The navigator allows specifiers to browse the entire specification in hypertext mode. The object base provides persistence, querying and concurrent access to the specification. The current version allows multiple specifiers to cooperate on the same specification in real-time.

Other goal-oriented modeling methods

 * i*
 * Goal Oriented Language(GRL)