General Navigation Buttons - Home | Search | Contact Us | Site Map | Whats New
engineering graphic
white space
engineering
Engineering
CERT Coordination Center
COTS-Based Systems
Integration of Software-Intensive Systems
Performance-Critical Systems
Predictable Assembly from
Certifiable Components (PACC)
Information Repositories
Team & Personal Software Process
Product Line Practice
Software Architecture Technology
Software Engineering Measurement
& Analysis (SEMA)
white space
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
pixel
Rollover Popup Hints for Topic Navigation Buttons above
pixel
Feature-Oriented Domain Analysis


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.



The Software Engineering Institute (SEI) is a federally funded research and development center sponsored by the U.S. Department of Defense and operated by Carnegie Mellon University.

Copyright 2007 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/domain-engineering/FODA.html
Last Modified: 11 January 2007