Compaq ACMS for OpenVMS
Concepts and Design
Guidelines
Chapter 9
Designing Task Group and Application Definitions
This chapter provides guidelines for grouping tasks into task groups,
and for defining applications.
9.1 Designing Task Groups
A task group describes a collection of tasks and the resources
available to those tasks. Resources include workspaces, request
libraries, forms, user request procedure libraries, message files, and
the procedure servers in which processing is done.
9.1.1 Grouping Common Elements in a Task Group
You group tasks together into a task group based on common resources
used by the task:
- Procedure servers
Task groups cannot share procedure server
processes at run time. Therefore, group together tasks that use the
same server to allow those tasks to share the same pool of server
processes.
- DECforms forms
ACMS enables DECforms form sessions based on
the task group in which the form is declared. Therefore, if multiple
tasks need to share form data in a DECforms form, you must include
those tasks in a single task group.
- Group and user workspaces
Group and user workspaces cannot be
shared between tasks in different task groups. Therefore, include tasks
that use the same group or user workspaces into a single task group.
Also, if you use the task-call-task facility, you must include both
parent and called tasks in the same task group
9.1.2 Determining the Number of Task Groups in an Application
Combining tasks into a single task group offers the advantage of:
- Decreasing the number of procedure servers required for the
application
Every task group within an application must have at
least one procedure server. By creating only a single task group, you
save system resources by servicing all the tasks with one procedure
server, or with only a few.
- Promoting sharing of resources
For example, group and user
workspace contents can be shared. This is helpful if a sequence of
tasks with similar data is necessary. The user need not repeatedly type
in the same data.
- Easing application growth
If new tasks are added that have to
share resources with other tasks, you don't have to restructure the
task group.
- Easing application building
With only one task group, building
the application is less complicated.
Single task groups have the disadvantage of:
- Increasing build time
Increasing the task group size increases
the time necessary to build the task group. If you have to rebuild your
task group often, take into consideration the resources and time
required to build.
- Causing possible maintenance problems
If your task group
becomes too large, or the scope of the functions included in the task
group become too varied, coordinating task group maintenance can become
a problem.
- Inhibiting ability to group tasks logically
In some instances,
it may be beneficial to group tasks according to function. For example,
if an application has tasks for accounting and tasks for engineering,
separate the tasks into two groups to ease maintenance and create
logically defined groups of tasks.
Consider using multiple task groups during the development of an
application, and then combining those groups when the application is
put into production. Using multiple task groups during development has
advantages such as decreased build time. Combining the task groups
before the application is put into production allows you to realize the
benefits of fewer, or a single task group.
9.1.3 Improving Performance with the Task Group Definition
This section discusses task group definition syntax likely to have
significant positive or negative effects on performance.
- RUNDOWN ON CANCEL procedure server subclause
If you use the RUNDOWN ON CANCEL clause, and a task is canceled
while it is executing or retaining context in a server process, ACMS
runs down the process and starts a new one if required. To avoid
unnecessary server process rundowns, use the RUNDOWN ON CANCEL IF
INTERRUPTED clause. Using this clause, ACMS only runs down a server
process if ACMS interrupted the server process while it was executing.
If a task is canceled while retaining context in a server, the server
process is not canceled and can be used by another task. RUNDOWN ON
CANCEL is the default.
- USERNAME IS TERMINAL USER procedure server subclause
The REUSABLE server subclause in the task group definition is the
default for both DCL and procedure servers. However, using the clause
USERNAME IS TERMINAL USER in application or task group definitions
overrides this default and creates procedure servers that are not
reusable.
Every time a terminal user selects a task running in a
procedure server defined with the USERNAME IS TERMINAL USER subclause,
a new server process must be created for that task instance.
- If your application includes both inquiry and update tasks, you can
avoid a good measure of database contention by defining two procedure
servers for your application:
- One whose procedures access the database in read-only mode for
inquiry purposes
- One whose procedures use read-write access for updates
AVERTZ makes this distinction, using the VR_READ_SERVER and the
VR_UPDATE_SERVER. With this kind of separation, tasks that only query
the database do not contend with tasks that update it. More
importantly, the number of server processes simultaneously accessing
the database for update is usually fewer with this approach,
significantly reducing contention.
Also, you can create servers
that access specific sets of relations in the database. This allows you
to further reduce database contention by giving you greater control
over the number of servers that are used to access particular areas of
the database. AVERTZ employs this technique by using the
VR_UPDATE_SERVER to access the RESERVATIONS, VEHICLES, and
VEHICLE_RENTAL_HISTORY relations, and the VR_CU_UPDATE_SERVER to access
the CUSTOMERS and CU_ID_INC_CONTROL relations.
9.2 Designing Applications
In the application definition, you describe the application environment
by defining control characteristics for the application. Access to
tasks is always controlled from the application definition. An
application definition does the following:
- Names the task groups that contain the tasks of the application
- Assigns a user name to the Application Execution Controller (EXC),
the ACMS system process that controls the application
- Assigns user names to the server processes created by the
application
You can optionally assign characteristics that:
- Control access to tasks
- Audit task events
- Enable and disable tasks
- Specify transaction timeouts
You control procedure servers in an application by assigning server
control attributes in the application definition. These attributes
determine the processing characteristics of a procedure server.
Compaq ACMS for OpenVMS Writing Applications gives details about writing application definitions.
9.2.1 Determining the Number of Applications
Combining applications has the following advantages:
- Decreases the number of Application Execution Controllers, and
improves the overall use of system resources.
- Minimizes the duplication of similar or identical task groups.
Each application supports at least one task group. With a single
application, you can eliminate some task groups. Fewer task groups
require fewer procedure servers, thereby further improving overall
resource use.
Multiple applications have the following advantages:
- Allows for moving or separating of applications to separate
machines
- Eases maintenance by separating applications by specialized
functions
- Conserves resources if you have functions that do not need to
process simultaneously
For example, you can design an application
that is active only one day a week, freeing resources on other days.
- Meets needs for financial accounting
If resource costs are to
be shared on an application basis, multiple applications are needed .
For example, OpenVMS accounting for an application's users cannot be
done because processes and resources are shared among all the users. If
separate applications exist you can charge each user individually based
on the unique application name.
9.2.2 Improving Performance with the Application Definition
Application design and hardware configuration together have the
greatest effect on the performance of the ACMS system. Tuning the
OpenVMS parameters of the ACMS system itself after implementation has a
lesser effect. Tuning the definition of your application, however, can
have a significant effect on performance. For example:
- Adjust the number of server processes that your application runs
At definition time, you can establish parameters for an application
that reduce the amount of tuning you need to do after implementation.
For example, you can set the minimum and maximum values for the server
process count to a number likely to eliminate unnecessary server
process creation and deletion.
AVERTZ sets VR_READ_SERVER to a
maximum of 3, and to a minimum of 1. VR_UPDATE_SERVER has both a
maximum and minimum of 1. As you monitor the performance of your
application, you can adjust these values.
- Segregate procedure servers by function
Providing separate
servers for read or write functions is a common design model. You can
also choose to provide one or more procedure servers for CPU-intensive
procedures. Or, you can provide one or more separate procedure servers
for activity with special security considerations.
The AVERTZ
application uses the VR_LOG_SERVER for security and auditing purposes.
AVERTZ segregates procedure servers by read or write functions.
- Create separate user names for the various procedure servers
This use of separate user names allows for specific privileges and
quotas.
- Avoid the USERNAME IS TERMINAL USER procedure server subclause
The REUSABLE procedure server subclause in the task group
definition is the default for both DCL and procedure servers. However,
using the clause USERNAME IS TERMINAL USER in application or task group
definitions overrides this default and creates procedure servers that
are not reusable.
Every time a terminal user selects a task with a
processing step running in a procedure server defined with the USERNAME
IS TERMINAL USER subclause, a new server process must be created for
that user. ACMS, however, places its emphasis on shared and reusable
resources. To take advantage of this, your application should run as
few server processes as needed to do the work of the application.
- Use the server subclause NO PROTECTED WORKSPACES
The default
is PROTECTED WORKSPACES. The default action is for the server to map
only the portion of the task instance workspace pool used by the
current task. This portion is mapped at the start of a processing step
and unmapped at the end of the step, ensuring that one task cannot
access the workspaces of any other task in the group.
The NO
PROTECTED WORKSPACE clause saves workspace mapping time. However, use
it carefully since it maps the entire task instance workspace pool for
a task group. Use it only after you have thoroughly debugged your
procedure server and are certain that task procedures will not
accidentally write over workspaces belonging to another task.
- Exercise care with the SERVER MONITORING INTERVAL clause
This
clause determines how often ACMS checks the queues of tasks waiting for
procedure servers. You use it in conjunction with the CREATION
INTERVAL, CREATION DELAY, DELETION INTERVAL, and DELETION DELAY
clauses, which alter the ACMS-supplied defaults for these values. Use
of these clauses affects the rate and interval at which new server
processes are created or deleted. If you set the server monitoring
interval too low, ACMS can use up most of its resources in checking on
its own performance.
- Choose whether or not to use the AUDIT subclause
The AUDIT
subclause records application and task activity in the ACMS audit trail
log. For example, if you enable application auditing, ACMS records
application events, such as online modifications to the application. If
you enable task auditing, ACMS records the start and end of task
instances. ACMS always audits unusual events, such as unexpected server
deaths and unexpected task cancellations, in the ACMS audit trail log.
Some OpenVMS and ACMS system parameters also require monitoring before
they can be set optimally. Working set sizes for the Application
Execution Controller (EXC) and server processes can be monitored after
installation of your application and changed to meet your requirements.
For information about tools with which to make these observations and
change corresponding parameter values, see Compaq ACMS for OpenVMS Managing Applications, which
includes sections on ACMS system monitoring, tuning, and setting the
OpenVMS SYSGEN parameters that ACMS affects.
Performance problems often have their root in database performance. You
can determine if your database is responsible for your problems through
monitoring. Each of the following database management system
documentation sets includes a manual on tuning and performance:
- For RMS files, see Guide to OpenVMS File Applications
- For Rdb databases, see the Rdb documentation
- For DBMS databases, see the DBMS documentation
Appendix A
Requirements Specification Template
The Requirements Specification specifies the business need and the
requirements that must be met to solve that business need. The
Requirements Specification is high level and can be produced in a
limited time frame. It does not contain specific design details unless
these are considered to be a business requirement. It bridges that gap
between a customer's business need and the Functional Specification and
Programming Specification.
A.1 Overview
This section presents an overview of the system and basic requirements.
A.2 Business Objectives
This section covers the business needs to which the eventual solution
will respond, and the business goals with related measurements.
A.2.1 Business Needs
Identify the business needs of the customer.
A.2.2 Business Goals and Measurements
Identify the business goals of the customer and how they are measured.
A.3 Solution Requirements
A.3.1 Current Business System
The following sections describe the scope of the analysis in terms of
business areas being looked at and the business functions carried out
by these business areas:
- Business area A
- Business functions
- Communication being used (forms, letters, telephone, computer...)
- Average time required to carry out each business function
- Frequency of each business function
- Drawbacks of current approach
- Business area B
As for business area A
A.3.2 Proposed Business System
- Information flow
- What information
- Where information originates
- Where information terminates
- Execution time
- Availability
- Reliability
- Recoverability
- Processing immediacy
- Security
- Access
- Audit/Tracking
- Authentification
- Usability
- Flexibility
- Maintainability
- Enhancement cost
- Maintenance cost
- Ease of change
- Evolution (expected change)
- Business constraints
- Company policies
- Development costs
- Operational costs
- Time scale and deadlines
A.4 Scope
This section covers the business-related system environment needs. It
also covers the business related general solution needs, which
typically are defined by strategies external to the project. Training,
documentation, and support requirements are presented here. It
specifies any requirements that will not be met by the project and
explains why they will not be met:
A.4.1 Environment
- Current systems
- Geographic distribution
- Space constraints
A.4.2 Proposed Implementation
- Phased or one-off
- Timetable
- Rollout
- Responsibilities
A.4.3 Forecast Benefits
A.4.4 Quality Requirement
- Maintainability
- Service response
A.4.5 General Solution Requirements
- Coexistence/interoperability
- Implementation requirements
- Cost
- Tools
- Training
- Product
- Internationalization
- Standards
- Business rules
- Operation requirements
- Centralized/decentralized operation
- Number and organization of operational staff
- Compatibility between processes and existing user habits
A.4.6 Project Limitation
List any limitations to implementing the solution.
A.5 Alternative Solutions Rejected
Any other solutions with the reason why they were not selected.
Appendix B
Functional Specification Template
The Functional Specification specifies, in non-technical terms, what
the solution does for the customer. It is a detailed specification of
the functionality to be addressed by the solution. This document
defines what functions the system will be capable of performing. It is
the blueprint for the subsequent design and programming of the system.
Functional specifications are used for monitoring progress during
system development, and are the basis of final customer acceptance of
the complete system. A definitive Functional Specification ensures that
the Customer's functional needs are correctly identified.
B.1 Overview
The overview is a brief description of the system allowing the readers
an understanding of the aims of the system. The system can also be
depicted pictorially, typically using data flow diagrams. A brief
description is given of each external entity covering its interactions
with the system. Processes and data stores are also described. The
overview consists of:
- Introduction
- Solution description
- Objective and customer goals
- Existing methods and processes
- Required methods and processes
- Impact
- Implementation requirements
B.2 Solution Detail
This is the main section of the Specification. It provides sufficient
detail to constitute the definition of the system. It describes
what is required, how the requirements will be met,
and includes a logical model of the proposed solution.
B.2.1 External Interfaces
- General principles and common characteristics
- Layout of the different reports and screens
- Help information
B.2.2 Transaction Analysis
Transform the business transactions defined in the Requirements
Specification into logical transactions:
- Create a logical database design
- Refine the business transactions into database transactions
- Identify details of distributed transactions
- Determine transaction volumes and their origination
- Define transaction availability
- Define the concurrency
- Define the transaction and data immediacy
- Define the distributed forms processing
- Define the deferred processing
B.2.3 Inputs/Outputs
- Data volumes
- Availability
- Fault tolerance
- Throughput
- Response time
B.3 Environmental Requirements
This section describes the characteristics of the system's users,
software and hardware requirements for installing, operating and
interfacing the system, and security requirements:
- Organizational
- User
- Physical
- Hardware environmental requirements
- Software environmental requirements
- Security
B.4 Quality Requirements
This section describes the customer's quality requirements in terms of:
- Ease of use
- Maintainability
- Reliability
- Evolvability
- Compatibility
B.5 General Requirements
Any general requirements not covered in the sections above are
described here:
- Performance
- Packaging
- Implementation
- Installation
B.6 Solution Limitations
Any stated requirements not met or specific limitations imposed for the
new system are listed here.
B.7 Documentation
This section describes the publications to be provided for the system,
including user, system, and technical documentation.
B.8 Training
This section describes training requirements and how they will be met.
The training may include user, operation, and technical training.
B.9 Definitions
B.10 Glossary