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
Domain Engineering: A Model-Based Approach


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



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/
Last Modified: 11 January 2007