Synthesis Opportunistic Domain Engineering
PRODUCT DESCRIPTION
PROCESS DESCRIPTION
INTERACTIONS WITH OTHER ACTIVITIES
Domain Engineering is an activity of a Synthesis process that creates and
supports
work products which support the Application Engineering process in a business
area, particularly with respect to the needs of a specific project (hereafter
termed the targeted project).
Domain Engineering is a comprehensive iterative life-cycle process with
management, analysis, implementation, and support activities for a product
family. A product family is represented by a collection of work product
families.
The objectives of Domain Engineering are to:
-
Organize and direct resources to facilitate opportunities for reuse of existing
application engineering work products by the targeted project within
an organization
-
Define the nature, extent, and substance of a set of work product families
that complements those
opportunities for reuse
Domain Engineering requires the following information:
-
Domain knowledge (including existing products)
-
Business objectives
Domain Engineering requires domain and software knowledge and experience in:
-
The needs that motivate systems in the domain (i.e., application engineering
work products) and associated work products
-
The environments in which the systems in the domain will operate
-
How the systems in the domain are built
-
How application engineering projects in the domain are managed
Domain Engineering creates four work products: Domain Plan, Domain Definition,
Domain Specification, and Domain Implementation. Domain engineers evolve these
products in subsequent iterations of Domain Engineering to support future
projects, consistent with organizational business objectives.
-
- Purpose:
-
A Domain Plan (see
Section DE.1)
establishes the scope of domain development
and defines the tasks and resource allocations for domain development
increments.
- Verification Criteria:
-
The expected needs of planned projects
in the business area are sufficient to compensate for projected costs and risks
of domain development.
-
- Purpose:
-
A Domain Definition (see
Section DE.2.1)
defines the informal scope and orientation that characterize a viable domain.
- Verification Criteria:
-
The Domain Definition captures sufficient information to allow domain engineers
to describe any existing or potential system in the
domain (in particular, the system being built by the targeted project).
-
- Purpose:
-
A Domain Specification (see
Section DE.2.2)
defines a set of work product families that provides increased opportunities
for reuse to the targeted project within its Application Engineering process.
- Verification Criteria:
-
The Domain Specification precisely expresses the domain as captured in the
Domain Definition.
-
- Purpose:
-
A Domain Implementation (see
Section DE.3)
is an implementation (with documentation and automated support) of
a set of work product families,
as prescribed by the Domain Specification.
- Verification Criteria:
-
The Domain Implementation provides each work product family
described in the Domain Specification.
Domain Engineering is an interaction among the four steps shown in
Figure DE-1. Domain Engineering.
Follow these steps for the Domain Engineering Activity.
Activity:
Domain Management
-
- Action:
-
Plan, monitor, and control the use of domain resources to provide reusable work
product families for a domain of interest to projects within a business-area
organization.
- Result:
-
Domain Plan
- Heuristics:
-
Define
near-term objectives
that support the application engineering project targeted by Domain
Engineering.
Organize and manage domain resources to achieve those objectives.
Activity:
Domain Analysis
-
- Action:
-
Scope and specify a domain based on an analysis of needs of a targeted project
in
an organization.
- Input:
-
Domain Plan
- Result:
-
-
Domain Definition
-
Domain Specification
- Heuristics:
-
-
Create an informal definition of the domain. Characterize its scope, the
aspects common to all systems in the domain, and the features that vary across
systems in the domain. Also characterize the work products commonly produced
as part of Application Engineering.
Explicitly state what is not part of the domain. Provide a glossary of common
terms. Assess the viability of supporting each of the aspects you have
characterized.
-
Precisely specify problems within the scope of the domain. Describe both
common problems and variations in those problems. Specify solutions to the
problems in the domain so that the solutions vary in the same way as the
problems.
Identify important work products (i.e., those susceptible to reuse). Specify
the Application Engineering process commonly used in the domain, showing when a
given work product is developed. Determine the work products for which
(reusable) work product families will be developed.
Activity:
Domain Implementation
-
- Action:
-
Implement the domain as defined by the Domain Specification.
- Input:
-
-
Domain Definition
-
Domain Specification
-
Domain Plan
- Result:
-
Domain Implementation
- Heuristics:
-
-
Implement the work
product families
and process described in the Domain Specification. Incorporate variations into
the implementation of the solutions. Structure the implementation of the
solutions as a set of work product families, each of which supports reuse for a
particular work product that application engineers might want to develop.
-
Describe conventions, procedures, and standards for using these work products.
Document how application engineers can perform reuse based on these
descriptions. If time and resources permit, automate routine time-consuming
tasks.
Activity:
Project Support
-
- Action:
-
Support a project in performing the Application Engineering process.
- Input:
-
Domain Implementation
- Heuristics:
-
Deliver, install, and support the Domain Implementation for use by the targeted
project.
-
- Risk:
-
The products of Domain Engineering
will not lead to standardized
reuse
practices on projects.
- Implication:
-
The Domain Engineering investment will not produce projected benefits for the
targeted project or
the business organization.
- Mitigation:
-
-
Staff the Domain Engineering work with experienced project managers and
engineers. Ensure that all work is actively reviewed by other experienced
managers and engineers and is adequately reviewed by all participants of
application engineering projects. Include engineers familiar with the needs of
the targeted project.
-
Evaluate the effectiveness of the Domain Engineering process and work products
relative to past project experiences. Ensure that the characteristics of that
experience or the resulting systems are not in conflict with the process and
work products.
None
-
- Contingency:
-
The
work product families are
inadequate to support the needs of
the targeted project.
- Source:
-
Application Engineering
- Response:
-
-
Determine that expressed needs are outside of or otherwise conflict with chosen
domain objectives or cannot be viably satisfied given available domain
resources.
-
Evolve the domain to satisfy current needs.