TA-8 generates multi-threaded, multi-process Java Standard Edition code. It distributes the implementation of platform-independent iUML models across multiple processes, where each process executes a user defined subset of a model’s functionality in the context of a user defined thread allocation strategy.
Separate Java code sets are generated for each process, and whenever there is a remote (i.e. inter-process) object access or a remote operation invocation, TA-8 automatically generates the necessary code to implement it.
Run Time
The run time is an operating system and middleware independent layer which supports the execution of applications on any Java target platform. In particular, it provides a mechanism for preventing threads from simultaneously accessing shared resources, and an infrastructure for supporting remote communication.
Adaptation Layer
TA-8 uses operating system resources (e.g. threads and semaphores) and middleware resources (e.g. remote procedure calls) to manage the distribution of models across multiple processes and threads.
It accesses these resources indirectly via an adaptation layer which decouples the run time from the details of any particular operating system and middleware.
Locking Schemes
TA-8 supports both implicit and explicit locking schemes.
In the implicit scheme, code is automatically generated to lock objects in order to prevent multiple concurrent access to shared resources from causing run time corruptions or errors. For example, the following Action Language code:
tank = this -> R1
Results in automatically generated that read-locks the object "tank" after the "navigate" down the association R1.
In the explicit scheme, users have control over exactly when locks are acquired and released, e.g.
tank = this -> R1
$OBJECT_READ_LOCK tank
Distribution Strategy
TA-8 distributes code (ASL state actions, operations etc) and data (i.e. attribute data) across multiple processes based on the contents of a user defined configuration file. This file (plus any supporting tags) implicitly defines the location of every attribute of every class, and the location of every ASL statement in a model, e.g.
PROCESS "Process ONE" ONE 1 127.0.0.1 ...
PROCESS "Process TWO" TWO 2 127.0.0.1 ...
PROCESS "Process THREE" THREE 3 127.0.0.1 ...CLASS-PROCESS SIGEX RED ONE
CLASS-PROCESS SIGEX ORANGE TWO
CLASS-PROCESS SIGEX YELLOW THREE
Variants
TA-8 is available in portable and adaptable variants.
The portable variant applies a fixed set of mapping rules for transforming iUML models to Java and the source code for the supporting run time libraries.
The adaptable variant applies a set of mapping rules which can be changed to meet the needs of particular projects or organisations by changing the iCCG configuration that produced the code generator. The adaptable variant comes with full source code.

