Computation actions are an implementation-dependent part of action semantics for the UML, because there is no rigorous definition for primitive actions. Primitive actions can be written in a specific programming language and is left entirely to the modelling environment. The only requirement for the primitive actions is their signatures, including names, a list of input types and a list of output types.
Researchers find it very hard to define primitive actions for computational purposes, given that different application areas have different requirements [AILKC+00]. However, this lack of formal definition for primitive actions forbids the porting of models from a modelling environment to another. Even worse, in practice few models run without any computation action. Actually, the power of computation actions usually tempts designers to abuse them. It is still necessary to define a primitive action set or a primitive language to maximize portability, if it is not ensured.