Domain
engineering is an activity for building reusable components. For domain
engineering to be successful, organizations must understand the similarities
and differences among components used to build software applications. This web
site provides the information involved in creating and using reusable software
following a model-based approach that produces models of the similarities and
differences of components, and models of the components and their
connectors.
Domain engineering addresses the systematic creation of domain models
and architectures. Domain engineering also supports application engineering
which uses the models and architectures to build systems. The emphasis is on
reuse and product lines.
Domain models represent the set of requirements that are common to
systems within a product line. There may be many
domains, or areas of expertise, represented in a single product line and a
single domain may span multiple product lines. The requirements represented in
a domain model include:
- definition of scope for the domain
- information or objects
- features or use cases, including factors that lead to variation
- operational/behavioral characteristics
A product line definition will describe the domains necessary to build
systems in the product line.
Software architectures are the structures
used to build systems in a product line. The product line architecture defines:
- structure
- common components
- communication mechanisms
- guidelines for use and evolution of the product line
architecture
used to build those systems.
In application engineering, a developer uses the domain model(s)
within the product line to understand the capabilities offered by the product
line architecture and specifies a system for development. The developer then
uses the product line architecture to build the system.
The SEI has developed a framework for product line practice.
This framework describes product line practice essentials, accommodates the
various starting points at which an organization might find itself, and
outlines recommended steps and practices that an organization should adopt to
move closer to sound, repeatable product line development. This framework
replaces Model-Based Software
Engineering (MBSE) in discussing domain engineering, application
engineering, the relations between them and their supporting technologies.
Domain Engineering Information