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