ÍNDICE DE ILUSTRACIONES
TOTAL AHORRADO EN LOS CINCO
A key part of obtaining value from a software endeavor is eliciting requirements. Fully understanding and developing requirements is crucial to determining stakeholder value propositions, that, simply, what they value. Goal modeling is a technique that can be used to establish requirements. The establishment and definition of goals is recognized as an important component in many aspects of requirements engineering. The creation of a hierarchy of related goals at varied levels of abstraction can lead to better identification, elicitation and elaboration of requirements. Analysis of goals by refinement, asking “how”, and by abstraction, asking “why”, can lead to a more complete set of requirements. Common GORE approaches include GBRAM [19] [20], i* [21] [22], the NFR framework [23] and KAOS [24] [25]. Detailed study of these approaches is outside
the scope of this thesis, but the interested reader is directed to the references noted. General GORE concepts are described below.
3.2.5.2 Goal-Oriented Requirements Engineering Concepts
Goals are fundamental to the requirements process. Yu noted [22]: “Perhaps the elucidation and manipulation of goals is a natural and inherent part of doing RE, even though earlier RE methods have not made this explicit, and have not provided the associated support. This interpretation is plausible since requirements by its very nature represents a target to be reached, a wish to be fulfilled, a vision to be materialized”.
“Goal-oriented requirements engineering (GORE) is concerned with the use of goals for eliciting, elaborating, structuring, specifying, analyzing, negotiating, documenting, and modifying requirements” [24]. Traditional requirements practices focus on what the system is intended to do, that is, on its functionality. Users and other sources of requirements typically express their needs as list of features. In contrast, GORE techniques focus on why, leading to a more thorough understanding of the proposed system within its environmental context and to a more complete, consistent set of requirements, and on how, which allows generation and comparison of alternative implementations. A better understanding of the project can lead to better achievement of value.
The relationship between goals and requirements is analogous to the relationship between design and code. Requirements implement the goals. Alternate sets of requirements can be evaluated to determine how well they satisfy an identified hierarchy of goals.
Gore techniques can play a role across many aspects of requirements engineering, but they are particularly relevant early in the process. Goals are fundamentally at a high level and fully understanding stakeholder intent and motivations first can lead to successful requirements development. Two fundamental approaches to GORE are:
Begin with an initial set of user goals at a high level and derive sub goals. Successive and iterative refinement of sub goals leads to requirements.
Begin with a system description, scenarios or functional specification. From these, determine an initial set of goals. Successive and iterative refinement of these goals leads to a more complete set of requirements.
The concept of a goal is fundamental. A goal is an objective or intended purpose for a system. Goals exist at varied levels of abstraction. At the highest level they may express the overall strategy of the organization, for instance, "offer accounting services to clients". At the lowest level they may be satisfied by the actions of a single agent and map directly into a requirement or assumption. Goals can be concerned with either functional or non-functional aspects of a system. Functional goals represent the individual operations or services that the system supports. Non-functional goals are system qualities. Goal oriented techniques provide a means for the qualitative and quantitative systematic evaluation of both functional and non-functional goals. Requirements can be linked back to non-functional goals and the satisfaction of these goals by the proposed set of requirements can be evaluated.
Many non-functional goals are soft goals. A soft goal is one that can be satisfied to varied extent. For instance, usability is a soft goal. The final system usability will be supported to different extents by different sets of requirements, designs and implementations.
Goals are interrelated or linked. Goal hierarchies can be established linking each goal with its sub goals. Satisfaction of each goal can require that all sub goals are satisfied, called AND-refinement, or satisfaction of any sub goal can result in satisfaction of the parent goal, called OR-refinement. Soft goals linked to sub goals lead to the notion of a goal being satisficed by its sub goals. Sub goals either add or detract from the completion of a parent goal.
Development of a goal hierarchy is done by iteratively asking why and how. Refinement of goals can be achieved by asking “how” to break each goal into sub goals. Abstraction of higher level goals can be achieved by asking “why”, that is, why is a lower level goal needed.
Goal based approaches examine the composite system, that is, the software system within its larger environment. Explicit consideration of actors is also done. “Within such frameworks why, who, and when questions can be addressed in addition to the usual what questions. It then becomes possible to reason formally about goal satisfaction” [25]. Goal based approaches are seen as a means to determine the requirements necessary as a prerequisite to deliver value.