Synthesis Opportunistic Domain Engineering
PRODUCT DESCRIPTION
PROCESS DESCRIPTION
INTERACTIONS WITH OTHER ACTIVITIES
The Generation Design Activity is an activity of the Product Design Activity
for creating a Generation Design. A Generation Design is a specification of
production procedures that an application engineer uses to produce
draft
application engineering work products. A Generation Design defines a
transformation (or mapping) from an Application Model
to the equivalent application engineering work products. For each application
engineering work product, a Generation Design specifies how to select and adapt
Adaptable Components according to decisions in an Application Model and to
compose them according to the internal organization of that work product in the
Product Architecture. The Generation Design Activity is performed for each work
product
specified by the Product Requirements.
The objective of the Generation Design Activity is to produce a specification
for the production procedures that can be used to produce application
engineering work products for a member of a work
product family through reuse of Adaptable Components. The specification
establishes a correspondence between an Application Model and equivalent domain
engineering work products that implement the intent of the model correctly.
The Generation Design Activity requires the following information:
-
Decision Model
-
Product Architecture
-
Component Designs
The Generation Design Activity requires domain and software knowledge and
experience in:
-
How work products of systems in the domain are designed
-
The principles and use of the design method used for the Product Architecture
-
The concepts and practice of abstraction-based reuse (
Parnas 1976; Campbell 1989)
-
- Name:
-
Generation Design
- Purpose:
-
A Generation Design is a specification for a production procedure for creating
draft
application engineering work products.
- Content:
-
A Generation Design relates the decisions from the Decision Model to the
elements of a work product's internal organization defined in the Product
Architecture. A Generation Design consists of three mappings:
-
Architecture Mapping.
The Architecture Mapping is a description of the relation between decisions in
the work
product family's Decision Model and the decisions of the corresponding
adaptable Product Architecture. This mapping describes how values for the
Product Architecture's decisions are determined from values of decisions in the
Decision Model. As a result, the Architecture Mapping defines the internal
organization of a work product that describes a member of the work
product family based on decisions in the Decision Model (i.e., from an
Application Model).
-
Component Mapping.
A Component Mapping is a description of the relation of each element of the
organizational structure to an Adaptable Component that implements that
element. This mapping defines how each component of a work product is to be
produced.
-
Decision Mapping.
A Decision Mapping is a description of the relation between decisions in the
work
product family's Decision Model and the instantiation parameters in the
adaptation specification of a Component Design for each work product
component. This relation describes how values for the instantiation parameters
are determined from values of decisions in the work
product family's Decision Model.
- Form and Structure:
-
There is a Generation Design for each supported work product. The Architecture
Mapping is represented as a statement for each instantiation parameter of the
work product's Product Architecture. The statement contains a pairing between
an instantiation parameter and an expression. The expression to determine the
value to assign an instantiation parameter is described in terms of decisions
in the work
product family's Decision Model. The expression may involve iteration over a
group of decisions or conditional testing of one or more decisions.
The Decision Mapping representation is similar to the Architecture Mapping,
except that the instantiation parameters come from the adaptation specification
of the Component Design for the work product.
The Component Mapping is represented as a "use" statement. If the expression
bracketing the use statement is True, then the use statement describes which
Adaptable Component contains the needed implementation. The expression is
usually described in terms of decisions in the work
product family's Decision Model. However, if the Adaptable Component is always
used, then an expression of True is sufficient to describe this situation.
Example
DE.2.2.4.3-1
illustrates a fragment of a Generation Design for a work product family of the
TLC domain. It depicts
one way of representing the expressions discussed for Architecture, Component,
and Decision Mapping. The decisions used the metaprogramming notation come
directly from the Decision Model shown in
Example DE.2.2.1-1.
The parameters on the lefthand side of the "=" statements in the Architecture
and Decision Mapping come from Examples
DE.2.2.4.1-1
and
DE.2.2.4.2-1,
Architecture Mapping
ARCH_pedestrian_lanes =
and
S.Pedestrian_Lane.Push_Button_Mechanism = no then>
yes
no
ARCH_pedestrian_lanes_pb =
yes
no
.... Component Mapping
Required topic: Pedestrian_Lanes_With_Push_Buttons
use component "Pedestrian lanes with Push Buttons
(TLC-PL-PB-1)"
use component "Pedestrian lanes with Push Buttons
(TLC-PL-PB-2)"
.... Decision Mapping
Pedestrian lanes with Push Buttons (TLC-PL-PB-1)
COMP_interface =
TL-A
TL-B
....
.... Example DE.2.2.4.3-1. Fragment of TLC Generation Design for the
System/Segment Specification Work Product Family
- Verification Criteria:
-
-
The Generation Design specifies mappings that will produce application work
products which exhibit the internal organization specified in the Product
Architecture.
-
The Generation Design specifies mappings that produce application work products
which satisfy the Product Requirements (i.e., the mappings are consistent with
Product Requirements variation).
-
All variabilities allowed by decisions are properly represented as product
variations.
-
The effects of variabilities among work products are mutually consistent (i.e.,
all mappings are consistent).
The Generation Design Activity consists of two steps shown in
Figure DE.2.2.4.3-1 Generation Design Process.
Step: Define Work Product Structure
-
- Action:
-
Define how decisions in the Decision Model affect the structure of the work
product.
- Input:
-
-
Decision Model
-
Product Architecture
- Result:
-
Generation Design: Architecture and Component Mappings
- Heuristics:
-
-
It is sufficient to define the work product structure as a mapping from the
Decision Model to the internal organization of the Product Architecture for the
work product. The internal organization defines the components that are
required to implement the work product. This mapping determines which elements
of the Product Architecture are implemented for a particular Application Model.
-
The Product Architecture determines (conditionally and iteratively) how
components of each work product are to be derived from Adaptable Components
(i.e., the component mapping is provided implicitly by the Product
Architecture). The Generation Design should not modify that mapping.
-
Represent this mapping in metaprogramming notation associated with components
in the Product Architecture. The mapping is defined in terms of decisions in
the Decision Model and determines whether (one or more of) the associated
component(s) should be included in the product created for a given Application
Model. This mapping is formed by analyzing the Product Architecture and noting
conditions that must be true if a particular component is to be included. If a
component is always included in the product, metaprogramming notation is not
required.
-
Several Adaptable Components might be used to implement a single Product
Architecture component, depending on decisions in the Application Model. In
this case, use a conditional in the Component Mapping to qualify the
association between the Product Architecture and Adaptable Components, thus
indicating when a particular Adaptable Component is used.
Step: Define Component Adaptation
-
- Action:
-
Define a mapping from the decisions in the Decision Model to adaptations of the
Adaptable Components referenced by the Component Mapping.
- Input:
-
-
Decision Model
-
Component Design
-
Generation Design: Component Mapping
- Result:
-
Generation Design: Decision Mapping
- Heuristics:
-
When a particular Component Design is to be used to implement a particular
component in the Product Architecture, the variability of the Adaptable
Component (i.e., its parameterization) must be realized in terms of decisions
from the Decision Model. Define the value of each parameter (by name) as a
derivation from Decision Model decisions.
-
- Risk:
-
The Generation Design will not produce correctly-structured work products.
- Implication:
-
Application Production will not produce acceptable application engineering work
products.
- Mitigation:
-
Derive work product structures from the Generation Design for Application
Models of familiar work products
and review the result with experienced engineers to determine whether the
result is acceptable.
-
- Contingency:
-
The Decision Model is incomplete, ambiguous, or inconsistent.
- Source:
-
Decision Model Activity
- Response:
-
Describe the inadequacies in the Decision Model. Proceed with Product
Architecture and document any assumptions made regarding the inadequate
portions of the Decision Model.
- Contingency:
-
The Product Requirements for a work product family
are incomplete, ambiguous, or inconsistent.
- Source:
-
Product Requirements Activity
- Response:
-
Describe the inadequacies in the Product Requirements. Proceed with Generation
Design, and document any assumptions made regarding the inadequate portions of
the Product Requirements.
- Contingency:
-
The Domain Plan cannot be satisfied with available technical capabilities.
- Source:
-
Domain Management Activity
- Response:
-
Propose (alternative) revisions to the Domain Plan that better match available
capabilities. Complete a Generation Design that satisfies the Domain Plan as
closely as possible.
- Contingency:
-
The practices and procedures specified in the Domain Plan are either
ineffective or inefficient.
- Source:
-
Domain Management Activity
- Response:
-
Describe the ways in which the practices and procedures are either ineffective
or inefficient. Propose revisions to the practices and procedures to make them
more effective.
- Contingency:
-
The Product Architecture for a work product family
is incomplete, ambiguous, or inconsistent.
- Source:
-
Product Architecture Activity
- Response:
-
Describe the inadequacies in the Product Architecture. Proceed with Generation
Design, and document any assumptions made regarding the inadequate portions of
the Product Architecture.
- Contingency:
-
The Component Design for a work product family is incomplete, ambiguous, or
inconsistent.
- Source:
-
Component Design Activity
- Response:
-
Describe the inadequacies in the Component Design. Proceed with Generation
Design, and document any assumptions made regarding the inadequate portions of
the Component Design.
-
- Contingency:
-
The Generation Design for a work product family
does not satisfy the Product Requirements.
- Source:
-
Domain Verification Activity
- Response:
-
Modify the Generation Design to be consistent with the Product Requirements.
- Contingency:
-
The Generation Design for a work product family
is incomplete, ambiguous, or inconsistent.
- Source:
-
Generation Implementation Activity
- Response:
-
Refine the Generation Design to correct inadequacies.