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 Design


Researchers are currently studying and classifying software architectures [GARLAN93]. The identification of common architectural styles and system patterns could lead to the application of these styles and patterns in new/reengineered systems to promote reuse.

Domain design is the process of developing a design model from the products of domain analysis and the knowledge gained from the study of software requirement/design reuse and generic architectures. [CARDS94] states that "The key to design reuse is to develop and document an architecture that is generic enough for most systems in the domain and that supports the reuse of code components in the domain". The design model represents the generic architecture developed for the domain analyzed and provides the framework for the development of the reusable components in domain implementation.

The generic architecture is represented by an architectural style which is most appropriate for the product family. This architecture defines the computational platform for all applications in the family and provides guiding principles for constructing a generic design. The result is a partitioning strategy for allocating domain features to software elements and a coordination model describing how these elements are activated and share information.

A coordination model defines the activation and communication protocols for software elements that implement the behavior model. A coordination model typically defines the type of interactions allowed among software elements in an abstraction hierarchy and the mechanisms that support the interactions.

A partitioning strategy defines the "legal" software elements (e.g. subsystems, objects,. data types etc.) and how the domain features are allocated to them. Examples of partitioning strategies include allocation by real-world entities, allocation by control processes, allocation by user modes or allocation by objects. Some of these strategies may be more appropriate to one product family than another. For example, flight simulators which simulate aircraft performance are partitioned by the real-world entities present on the real aircraft [CMU/SEI-93-TR-14]. Selection of a strategy in part depends on the major factors of change identified in the domain models.

Applying the coordination model to the domain models, the internal operations of the system are identified. The system mechanisms and their performance parameters are specified. For example, one model may specify that a shared data region is used for communication instead of messages, or that a kernel executive is used instead of rendezvous for activation.

The internal behavior of applications in the product family is formalized in a design specification. This specification describes the internal operations identified in partitioning the domain information and specifies their associated constraints (e.g. definition of error conditions). If applications in the product family are embedded in a hardware system, the constraints (i.e. acceptable states) imposed by the coordination model and hardware are paramount. If the product family is an information system, the business rules are captured as constraints.

A domain-specific software architecture (DSSA) is an example of a generic architecture. A DSSA is a software architecture based on the actual and projected commonalities and differences of applications in a domain[CARDS94]. It is a reusable design component providing the basis for other reusable design and code components. The SEI has built a DSSA from the Movement Control Domain Model by mapping the products of Feature-Oriented Domain Analysis (FODA) onto an architectural style called the Object Connection Architecture (OCA). This produced the generic design for the Movement Control Domain.

Indepth information on software architectures is provided in the Product Line Systems and Software Architecture web pages. These SEI web sites are intended as a starting point and information clearinghouse for anyone interested in software architecture.



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