The Feature-Oriented Domain Analysis (FODA) methodology resulted from an
in-depth study of other domain analysis approaches . Successful
applications of various methodologies pointed towards approaches that
focused on the process and products of domain analysis. As a result, the
FODA feasibility study
[CMU/SEI-90-TR-21]
(postscript version1) established
methods for performing a domain analysis, described the products of the
domain analysis process, and established the means to use these products
for application development.
The FODA methodology was founded on a set of modeling concepts and
primitives used to develop domain products that are generic and widely
applicable within a domain. The basic modeling concepts are abstraction
and refinement. Abstraction is used to create domain products from the
specific applications in the domain. These generic domain products
abstract the functionality and designs of the applications in a domain.
The generic nature of the domain products is created by abstracting away "factors"
that make one application different from other related applications. The
FODA method advocates that applications in the domain should be abstracted
to the level where no differences exist between the applications.
Refinements are used to both refine the generic domain products and to
refine the domain products into applications. Once the abstraction of the
applications in the application domain is completed, the factors that make
each application unique are incorporated into the generic domain products
as refinements of the abstractions. Specific applications in a domain may
be developed as further refinements of the domain products by using the
general abstraction as a baseline and selecting among alternatives and
options to develop the application (i.e., those factors that have been
abstracted away must be made specific and reintroduced).
Abstracting the applications in the application domain is accomplished
by using the modeling primitives of: aggregation/decomposition,
generalization/specialization, and parameterization. The FODA method
applies the aggregation and generalization primitives to capture the
commonalities of the applications in the domain in terms of abstractions.
Differences between applications are captured in refinements. An
abstraction can usually be refined (i.e., decomposed or specialized) in
many different ways depending on the context in which the refinements are
made. Parameters are defined to uniquely specify the context for each
specific refinement. The result of this approach is a domain product
consisting of a collection of abstractions and a series of refinements of
each abstraction with parameterization. Understanding what differentiates
applications in a domain is most critical since it is the basis for
abstractions, refinements, and parameterization.
The feature-oriented concept of FODA is based on the emphasis placed by
the method on identifying prominent or distinctive user-visible features
within a class of related software systems. These features lead to the
conceptualization of the set of products that define the domain.
The FODA methodology has been well defined and documented in both the
window manager and movement control domains [FODA_bib].
Numerous documents have captured FODA's
evolution conceptually and in both the representation and use of the
methodologies products.
1. It must be noted that the postscript
version of the FODA feasibility study is missing Table 3-2 and divides
page 36 into 2 pages.