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
-
Domain Definition
-
Domain Specification
- Result:
-
Application Engineering User's Guide
- Heuristics:
-
-
Present, in as much detail as possible, a description of how application
engineers would locate and generate work products in the Application
Engineering Process Support. Try to describe reuse as a series of steps that
application engineers can follow. Do so in terms of any procedures and
standards your organization has for performing a given activity. (Section AE
describes a prototypical sequence of steps for an Application Engineering
activity.)
-
Provide an overview that helps application engineers understand the types of
work products in the domain. You can draw on the components of the Domain
Definition for this overview.
-
Create scenarios that describe an Application Engineering activity involving
reuse. These scenarios will help you organize reuse and incorporate it into
your Application Engineering process. Use the targeted project's environment
as the basis for your scenarios.
-
Describe, based on the Process Requirements, the activities where application
engineers can reuse work products of this type.
-
Each work product family has its own Decision Model and Generation Procedures.
A simple way to keep them separate is to describe each work product family in
its own section.
-
When you have described reuse for several work product families, you will
notice similarities in the procedures. You should note these in the User's
Guide as preliminary organizational standards for reuse. Some of these may
come from conventions that exist in your organization, whereas others may have
been introduced to facilitate reuse. Be sure that the conventions you describe
do not interfere with Application Engineering.
-
Describe reuse of a work product as a procedure, i.e., a set of steps to
follow. Make each step of reuse as mechanical as possible. This will help you
eliminate ambiguity and determine which portions you can automate.
-
You can communicate certain concepts to application engineers using domain
engineering work products developed for the work product family:
-
Use Product Requirements to describe the common traits of all work product
family members and the characteristics of individual members.
-
Incorporate concepts from the Procedure for Work Product Creation (from Process
Requirements) into the descriptions of steps for reusing work products.
Ideally, you can present reuse to application engineers as a desirable, but
optional, step in creating a work product.
-
Use the Decision Model to describe the decisions the application engineer must
make to identify an individual work product family members. Incorporate
engineering judgment and domain knowledge that domain experts use to formulate
a set of answers.
-
Use the Product Architecture to describe the internal organization(s) of a
member of the work product family.
-
Use Component Designs to provide detailed interface information that will help
application engineers determine whether they can use a given component in their
work product.
-
Use Generation Procedures to describe how to extract a member of the work
product family. Note that the Generation Procedure does not account for the
automation in the Application Engineering Environment. Automation may allow
application engineers to use tools to perform certain steps; describe the
tools, not the steps.
-
You should understand (and document) the expertise expected of application
engineers. This will affect the type of information you place in the User's
Guide.
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
-
Product Architecture
- 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.
-
You must provide, at a minimum, enough automation to allow application
engineers to access the Adaptable Components. In this step, specify other tools
that you think will be a cost-effective way to simplify the steps of reuse.
-
If the User's Guide asks application engineers to browse through the
Application Engineering Process Support, consider using file system
directory-changing commands.
-
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.
-
Determine how you want application engineers to view the Adaptable Components
and how you want them to perform the task of locating, evaluating, and
extracting them. The tools you allow them to use influence this view. At a
minimum, you can use the native operating system tools to browse and manipulate
the file structure specified as the Organization Structure in the Product
Implementation.
-
The Organization Structure of Product Implementation provides the basic
structure presented by the Application Engineering Environment. You may also
want to implement other structures that help application engineers locate and
evaluate components. For example, if your tools include database facilities,
you can provide alternate indexes.
-
Identify the tools that the targeted project has decided to use as part of
Application Engineering. Make them part of the Application Engineering
Environment, where possible.
-
- Risk:
-
The procedures described in the Application Engineering User's Guide
will be hard to follow (i.e., vague, incomplete).
- Implication:
-
Application engineers will have a difficult time
reusing work products.
This may cause excessive use of the project support staff. It may also cause
application engineers to favor creating work products from scratch rather than
reusing existing work products.
- 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).