The lowest layer in the xUML Platform Independent Model is where the Actions are defined. Actions are defined in response to signals in state models and in the methods implementing operations.
The actions are expressed using the Action Specification Language (ASL) which is a high level language providing sequential logic, manipulation of the static model as well as simple arithmetic.

A key feature of ASL is that it allows processing within the xUML model to be expressed at the UML level of abstraction. This means that the actions are specified in an implementation independent manner providing the system designers with the freedom to choose the most appropriate target software organisation.
ASL can also be used to specify the initial conditions for model execution as well as specialist “test” external stimuli. In addition, features are provided to allow models to access pre-existing legacy code, or other implementation domains.
The reasons for using ASL rather than a lower level 3GL such as C++ or Java are the same as the reasons for using 3GLs rather than assembler or binary, namely higher productivity and portability. In particular, ASL has the following advantages over 3GLs:
- ASL operates at the UML level of abstraction;
- ASL avoids implementation information;
- ASL preserves target language independence, increasing the portability of the PIM.
However, it is acknowledged that there will be occasions where us of a platform specific language will be necessary, and ASL therefore includes a $INLINE directive that allows developers to include 3GL statements in their models. Use of ASL is therefore optional - developers can code their entire model using their favourite 3GL if desired!
