Synthesis Leveraged Domain Engineering
PRODUCT DESCRIPTION
PROCESS DESCRIPTION
INTERACTIONS WITH OTHER ACTIVITIES
The Process Support Development Activity is the activity of Domain
Implementation for creating the Process Support component of Domain
Implementation. Process Support is the infrastructure that supports the
practice of Application Engineering by defining the procedures and standards by
which application engineers develop applications (i.e., the Application
Engineering process). It optionally provides automated mechanisms which
support the effective and correct performance of
the Application Engineering process and associated use of the Product
Implementation component of Domain Implementation.
The objectives of the Process Support Development Activity are to:
-
Document policies and procedures that
institute a standard
Application Engineering process and that guide its proper performance
-
Determine the appropriate degree of automation that will support the
Application Engineering process and construct the automated support
The Process Support Development Activity requires the following information:
-
Process Requirements
-
Product Implementation
The Process Support Development Activity requires domain knowledge and
experience in:
-
Documenting, in a coherent and usable form, the use of conventions, policies,
and procedures
-
How to develop and communicate process standards in a concise and usable form
-
Software production processes, methods, and practices
-
Tools and technologies that can support an Application Engineering process
(e.g., producing code/documents/tests, simulation/modeling)
-
Developing user documentation and training courses for software development
processes
This activity also requires the following additional expertise if you are
planning to automate portions of the Application Engineering process:
-
The principles and use of appropriate software development methods.
-
Human-machine interface factors and related technology.
-
Database technologies supportive of computer-aided software engineering.
-
Host platform capabilities. The host platform is the hardware/software
environment in which the automated portions of the Application Engineering
process execute.
-
Target platform capabilities. The target platform is the hardware/software
environment in which the application produced by the Application Engineering
process executes.
-
- Name:
- Process Support
- Purpose:
-
Process Support is a description and explanation of the policies and procedures
by which application engineers produce a work product (the Application
Engineering process)
and automated support for efficient performance of the Application Engineering
process.
- Content:
-
Process Support consists of
five
parts:
-
Application Engineering Process Standard.
This establishes the policies and procedures that govern the Application
Engineering process within the framework defined by the Process Requirements.
-
Application Engineering User's Guide.
A document that guides application engineers in how to
perform the Application Engineering process
to produce
a product.
-
Application Engineering Environment.
The environment consists of the automated mechanisms that support the
Application Engineering process.
-
Application Engineering Environment Support Manual.
This is a system administration manual describing how to install and maintain
the Application Engineering Environment for a project. It provides appropriate
information on any vendor-supplied software technologies contained in the
environment.
-
Application Engineering Training Courses.
This material is used to train application engineers on how to perform the
Application Engineering process and how to use Application Engineering Process
Support.
- Verification Criteria:
-
-
Members of the product
family can be produced using the Application Engineering Environment by
following the User's Guide.
-
Process Support prescribes an effective and efficient Application Engineering
process.
-
Process Requirements are fully satisfied by Process Support.
-
Process Support provides the ability to
specify and generated the entire product family
supported by Product Implementation.
-
- Purpose:
-
The Application Engineering Process Standard gives an overview of the
standards, policies, and procedures that govern how application engineers
should practice application engineering satisfactorily.
- Content:
-
The Application Engineering Process Standard documents the essentials of the
Application Engineering process including what has to be done, why, and who
completes the work. It also identifies and prescribes standards for form and
content of application engineering work products.
- Form and Structure:
-
The form and structure of the Application Engineering Process Standard should
adhere to your organization's current standards for documenting policies and
procedures.
- Verification Criteria:
-
-
The policies and procedures documented in the Application Engineering Process
Standard are consistent with the Process Requirements.
-
The policies and procedures documented in the Application Engineering Process
Standard do not conflict with other applicable organizational or customer
standards.
-
- Purpose:
-
The Application Engineering User's Guide provides a detailed description of how
application engineers
should perform to comply with the Application Engineering Process Standard.
This guide expresses the decision-making process that application engineers
follow for a domain.
- Content:
-
The Application Engineering User's Guide instructs application engineers on how
to build applications that have particular characteristics and explains how to
create, interpret, and evaluate Application Models properly.
This guide also designates and explains the effective use of automated
mechanisms that support the process.
- Form and Structure:
-
The User's Guide should conform to your organization's standards and guidelines
for documentation.
- Verification Criteria:
-
The User's Guide describes how to
build an application product.
-
- Purpose:
-
The Application Engineering Environment consists of all automated mechanisms,
described in the User's Guide, that
support creating and evaluating Application Models and generating and
delivering equivalent application products.
The Application Engineering Environment automates the mechanical portions of
the process for increased consistency within a product and less opportunities
for undetected
error in producing a product.
- Content:
-
The Application Engineering Environment consists of both tools that are part of
the host operating system and tools developed during this activity. Together,
they
support the Application Engineering process.
- Form and Structure:
-
-
The tools adhere to the organization's standards and conventions for its
software development environment.
-
The view of the
domain
provided by the Application Engineering Environment must facilitate the tasks
application engineers undertake when using it. The Application Engineering
User's Guide describes these tasks in detail.
- Verification Criteria:
-
-
All automated tools described in the User's Guide exist and behave as the
User's Guide states. All Adaptable Components produced during Component
Implementation Activities are accessible.
-
Automated mechanisms contain no residual errors.
-
- Purpose:
-
The Application Engineering Environment Support Manual describes how to install
the automated mechanisms of the Application Engineering Environment.
- Content:
-
The instructions contained in this manual will be specific to your
organization.
- Form and Structure:
-
The form and structure of the support manual should adhere to your
organization's current standards for such work products.
- Verification Criteria:
-
Automated mechanisms can be installed on supported platforms without additional
unspecified information or excessive effort.
Purpose:
These courses are used to train application engineers on how to perform the
Application Engineering process using the Process Support.
Content:
The content is determined by how much expertise application engineers need in
your organization to effectively perform Application Engineering.
Form and Structure:
The form and structure of the training courses should adhere to your
organization's current standards for such work products.
Verification Criteria:
-
The training course covers all topics application engineers need to know to
effectively perform Application Engineering.
-
The material in the training courses is consistent with the knowledge and
experience in management and engineering of the anticipated attendees.
The Process Support Development Activity consists of all activities necessary
to create appropriate Process Support
consistent with the Process Requirements for the domain.
In many respects, this activity involves work which is similar to that of a
conventional software development project. You document the standards and
procedures that establish how Application Engineering is to be practiced. You
develop training courses and other support documentation that is used by the
project support staff in helping projects use the domain product effectively.
Furthermore, if you decide to automate some or all of the Application
Engineering process (i.e., create an Application Engineering Environment), then
you apply software development methods to accomplish that goal. The Process
Support Development Activity consists of the
five
steps shown in
Figure 3.2-1. Process Support Development Process
Follow these steps for the Process Support Development Activity. Perform these
steps in the order listed but iterate through them until you are satisfied with
the work product as a whole.
Step:
Document the Application Engineering Process Standard
-
- Action:
-
Document the standard policies and procedures by which an application engineer
develops applications in the domain.
- Input:
-
Process Requirements
- Result:
-
Application Engineering Process Standard
- Heuristics:
-
-
The Process Requirements defines the essentials of the Application Engineering
process. The Process Standard cannot conflict with the Process Requirements,
but you will need to extend the Process Standard to provide a complete process
description. The degree to which you plan to automate the process is a major
factor in how you elaborate Process Requirements into a Process Standard.
-
This document elaborates the essentials prescribed by the Process Requirements
to establish the specific framework of the Application Engineering process.
Your description of the process should define what has to be done, why it has
to be done, and who completes the work. You should provide procedures that
explain how to complete the process (the sequence of tasks or task steps that
have to be performed), when the work is performed, and the criteria for
measuring the quality of the work.
-
The purpose of standards is to promote a consistent approach in the development
of application products. Your description of the standards should incorporate
the standards used by your organization as well as cover detailed process
requirements.
Step: Develop
the Application Engineering User's Guide
-
- Action:
-
Create a detailed guide for application engineers which instructs them on how
to perform every aspect of Application Engineering including manual steps and
effective use of any automated mechanisms.
- Input:
-
-
Process Requirements
-
Application Engineering Process Standard
- Result:
-
Application Engineering User's Guide
- Heuristics:
-
-
Describe all aspects of performing the Application Engineering process in the
User's Guide. This description should be sufficient for experienced application
engineers to understand and follow the process routinely (i.e., without
assistance after initial training) and effectively. Within this description,
explain effective use of the automated mechanisms provided by the Application
Engineering Environment.
-
Determine the degree to which the Application Engineering process is
automated. Indicate additional aspects of the Application Engineering process
to automate (beyond what Process Requirements and the Process Standard
prescribe). Your guidance to the application engineer must reflect this
decision. The choice of appropriate automation is governed by Process
Requirements, economics, and human factors:
-
Process Requirements.
The Process Requirements may dictate preferences on process and presentation
automation mechanisms. For example, it may dictate display of certain
information in a graphical form or the extent of automated support for
Application Modeling. If Process Requirements imposes such preferences, you
must either implement them or refer changes to the Process Requirements
Activity.
-
Economics.
You must determine whether reduced Application Engineering effort will be
sufficient to justify the cost of automating. That cost may include the
acquisition of software tools and hardware for application engineering
projects, as well as the development resources (both time, people, and
material) from your organization. Additionally, you must also consider the
costs of maintaining and enhancing this automated support.
-
Human Factors.
Manual procedures are usually labor-intensive and can result in many errors
being introduced during any aspect of Application Engineering, particularly in
the Application Production phase. A project may lose much time trying to
identify and correct errors, and then repeating the process from where the last
error was introduced. Automation, whether specially-built or a commercial
tool, can reduce the effort needed during labor-intensive activities. It can
also help to reduce or eliminate errors in the process. Another benefit of
using automation is to reduce training requirements for the application
engineering staff. For example, a project may need more training to perform
Application Modeling manually than if automated support were provided.
-
Decide what expertise and experience application engineers are expected to
have. Write the User's Guide with the perspective and assumptions that people
with that expertise should have.
-
Provide whatever domain knowledge application engineers will need to perform
Application Engineering correctly and effectively. You should consider, as a
minimum, paraphrasing the Product Requirements in a form usable by application
engineers. This information will help application engineers understand the
implications of decisions to be made in Application Modeling.
-
Describe what the application engineer should do when confronted with a problem
during Application Engineering. Include descriptions of common mistakes and
known bugs (and corresponding work-arounds).
-
Provide advice to the application engineer on how to build systems with
particular characteristics (e.g., particular capabilities or performance).
Explain the meaning and purpose of different Application Models that could be
developed.
Step: Develop
the Application Engineering Environment
-
- Action:
-
Design, implement, and verify the automated mechanisms needed to support the
Application Engineering process.
- Input:
-
-
Application Engineering User's Guide
-
Product Implementation
- Result:
-
Application Engineering Environment
- Heuristics:
-
-
The Application Engineering User's Guide specifies what aspects of the
Application Engineering process are automated. Revise the User's Guide if this
cannot be fully satisfied.
-
Creating an Application Engineering Environment is a software development
task. You must design an environment, implement that design in a programming
language (or via equivalent commercially-available software technology), and
test it to verify that the resulting environment implements the Application
Engineering User's Guide correctly.
-
Reduce your up-front development costs by taking advantage of available
technology to automate various activities within the infrastructure. For
example, there are planning and scheduling tools for project management;
object-oriented databases and user interface tools that can support specifying
an Application Model; testing, prototyping, and environment simulation tools
for validation; simulation and dynamic assessment tools for assessment; and
metaprogramming and system generation tools for product generation. However,
you must also consider what resources you will need to integrate these or other
technologies into a coherent infrastructure.
-
Consider, as a minimum, automating the specification task of the Application
Modeling Activity and the Application Production Activity. These are the core
of Application Engineering and provide the most direct benefits.
-
Decide what code construction tools (e.g., compiler, linker, debugger) will be
used by application engineers to construct Application Product Software. For
code components, you must consider factors such as target hardware and
operating system and, if different from the host environment, how the code will
be tested (e.g., in a host-simulated target environment or directly in the
target environment) and created in executable form for the target environment
(e.g., cross-compilers).
-
Consider how the Generation Procedure fits into this environment. From the
perspective of Process Support, a Generation Procedure is a black-box that can
apply the decisions resolved by an Application Model to Adaptable Components to
create Application Product Software. If automated input of an Application Model
is not supported, then additional effort is required from the application
engineer to transform his Application Model into a form suitable for use by the
Generation Procedure.
Step:
Develop the Application Engineering Environment Support Manual
-
- Action:
-
Create a manual that defines the information, resources, and steps required to
install the Application Engineering Environment for use by a project.
- Input:
-
Application Engineering Environment
- Result:
-
Application Engineering Environment Support Manual
- Heuristics:
-
Describe installation instructions for the automated mechanisms of the
environment. These instructions are specific to your organization. However,
consider, at a minimum:
-
Inventory.
This is a list of all materials (code, software utilities, documentation) to be
provided to the Project Support Activity.
-
Distribution Media.
This describes the media and formats on which the automated mechanisms are
provided to Project Support (e.g., tape, disk). It should also describe how to
extract the contents from the medium.
-
Build Procedures.
These are instructions on how to build the automated environment from supplied
source code.
-
Software Resources.
These describe software resources needed to build and execute the automated
mechanisms (e.g., operating system, compiler, supporting utility programs,
version numbers). These also identify the vendor and version of any
commercially supported off-the-shelf software that supports portions of the
environment.
-
Hardware Resources.
These describe the host platforms on which the environment can successfully
execute (e.g., CPU, operating system).
-
Limitations.
These describe known discrepancies or unimplemented features in the delivered
environment and any known workarounds.
Step: Develop Training Courses
-
- Action:
-
Develop courses to train managers and application engineers in the effective
use of the application engineering process and supporting mechanisms.
- Input:
-
-
Application Engineering Process Standard
-
Application Engineering User's Guide
-
Application Engineering Environment Support Manual
- Result:
-
Application Engineering Training Courses
- Heuristics:
-
The content of these courses will be determined by how much expertise your
organization believes application engineers need to practice Application
Engineering effectively and correctly. You should consider, at a minimum, the
following topics:
-
How to build systems in your domain using the Application Engineering process.
-
How to manage application engineering projects successfully.
-
How to use the automated capabilities of the Application Engineering
Environment.
-
- Risk:
-
The Application Engineering process will be inconsistent with the Process
Requirements.
- Implication:
-
Application engineers may not be able to produce applications that satisfy
customer requirements.
- Mitigation:
-
Review the Process Standards with experienced managers and engineers to check
viability. Review the design and use of automated mechanisms with experienced
engineers to ensure that those mechanisms satisfy the Process Requirements and
Process Support documentation.
- Risk:
-
Automation will not address the major difficulties of engineering applications
in a domain.
- Implication:
-
The Application Engineering process will be too labor-intensive, error-prone,
or difficult, increasing the cost required to build an application.
- Mitigation:
-
-
Review other Application Engineering processes to see what areas were automated
and the rationale for doing so.
-
Review past Application Engineering process efforts from other, similar domains
to see what areas of difficulties were encountered and how they were resolved.
-
Measure and analyze the performance of the Application Engineering process to
help identify deficiencies.
- Risk:
-
The Application Engineering process
will be hard to follow (i.e., vague, incomplete).
- Implication:
-
Application engineers will have a difficult time developing applications.
This may cause excessive use of the project support staff. It may also cause
incorrect applications to be developed and increase the time required to
deliver an acceptable product to the customer.
- Mitigation:
-
Review the Process Support documentation with application engineers to see what
areas of the process are incomplete, inconsistent, or ambiguous. Have them
generate example work products, noting where they misinterpret or misuse the
documentation.
-
- Contingency:
-
The Process Requirements work product is incomplete, ambiguous, or
inconsistent.
- Source:
-
Process Requirements Activity
- Response:
-
Describe specifically where the Process Requirements work product is inadequate
and suggest improvements. Proceed with the implementation of Process Support
as far as possible while the Process Requirements are being updated.
- Contingency:
-
The Generation Procedure cannot be used in its current form in the Application
Engineering process.
- Source:
-
Generation Implementation Activity
- Response:
-
Describe how the Generation Procedure needs to be changed so that it will fit
within the Application Engineering process.
-
- Contingency:
-
The Application Engineering process is difficult to use or is too
labor-intensive.
- Source:
-
Project Support Activity
- Response:
-
Identify where the problems exist and discuss, with the application engineers,
ways of reducing (or eliminating) these problems (e.g., through the use of
automation).
- Contingency:
-
Suggestions are made to automate various aspects of the Application Engineering
process.
- Source:
-
Project Support Activity
- Response:
-
Consider the economic and human factors to help you decide whether to pursue
automating the suggested areas of the Application Engineering process.
- Contingency:
-
The Domain Specification is not satisfied.
- Source:
-
Domain Verification Activity
- Response:
-
-
Correct errors as part of the next iteration of Process Support Development.
-
Refer capabilities that cannot be supported to Domain Analysis for revision.