The goal-driven approach
Goal-driven
requirements engineering takes the view that requirements should initially
focus on the why and how questions rather than on the question of what needs to
be implemented.
"Traditional"
analysis and design methods focused on the functionality of the system to be
built and its interactions with users. Instead of asking what the system needs
to do, goal-driven methods ask why a certain functionality is needed and how it
can be implemented. Thus goal-driven methods give a rationale for system
functionality by answering why certain functionality is needed while also
tracking different implementation alternatives and the criteria for the
selection among these alternatives.
Goals are important in several
respects. They lead to the incorporation of requirements which should support
them. They justify and
explain the presence of requirements which are not necessarily comprehensible
to clients. They may be used to assign the respective responsibilities of
agents in the system; more precisely, they may provide the basis for defining
which agents should best perform which actions to fit prescribed constraints
(according to their capabilities, reliability, cost, load, motivation, and so
forth). Finally, they provide basic information for detecting and resolving
conflicts that arise from multiple viewpoints among human agents.
Goals are
targets for achievement which provide a framework for the desired system. Goals
are high level objectives of the business, organization, or system. They
express the rationale for proposed systems and guide decisions at various
levels within the enterprise. "Maximize corporate profits" is an
example of a high-level enterprise goal.
Goals can
be broken down into sub-goals and allocated to individual parts of the business
(such as processes).
An
important aspect of a goal is to know whose goal it is: the owner of a goal. Goals
can be assigned to individual agents (private or personal goals) or to the
system as a whole (system or corporate goals).
The
advantage of goal-driven methods over standard OOAD is in the explicit search
for sub-goals, super-goals and alternative goals. A goal model is built hierarchically
starting with the ultimate goal (usually) at the top of the diagram. For each
goal the question “How do I achieve this goal” is asked. The answer is
decomposed into sub-goals that must be achieved or events that must occur in
order to achieve that goal. This decomposition is iterated until all goals can
be satisfied or denied. Goal-driven methods will explicitly attempt to define:
· sub-goals by asking how a goal can or should be implemented
· super-goals by asking why a goal is necessary or needed
· alternatives by asking what different ways of satisfying the super-goal exist
· conflicting goals by asking what obstacles can be found for a goal and what goals may conflict with one another