A schedule is a set of tasks that may execute in a given system mode. The tasks may operate in sequence and in multi-threaded systems the tasks may operate in parallel. Each schedule refers to the connection scheme that is installed in the corresponding system mode.
The specification states the index of the thread on which the task will reside. In single-threaded systems, this index is ignored.
Further the specification contains:
· A reference to the package that contains the class where the task is started
· A reference to the class where the task is started
· A Boolean stating whether the instance is created dynamically
· The index of the instance where the task is started
· The name of the interface where the primary task is started
· A specification of the primary method
· For each parameter of this method the initial value is specified
· A Boolean that states whether the task is vulnerable
· If the task is vulnerable
o The name of the interface where the repair task is started
o A specification of the repair method
o For each parameter of this method the initial value is specified
· The initial priority of the task
· The stack-size of the task
· A Boolean whether the task is preempted
The initial values of priorities of tasks are set by the designer or they are computed by the scheduler. For real-time tasks, the scheduler may use a scheduling algorithm based on rate monotonic priority assignment. For equal RMA priorities the scheduler may use the closest deadline criterion.
A scheme is a set of connections that exist in a given state between modules. A connection is a combination of two instances of module classes, a require interface of the client module and a normal interface of the server module.
Connections consist of:
· Client module class
· Client module instance index
· Client module require interface name
· Server module class
· Server module instance index
If the client or the server is created dynamically then in the specification the index of the instance is a negative value.
A state contains a set of references to assets and the values of these assets. A state can be divided in sub-states. The smallest sub-state contains a single reference and a single value. The relation between a state and its sub-states can be viewed via state-charts. State-charts can also indicate potential state transitions.
A state transition consists of an ordered set of references to assets for which the values have changed and two ordered sets of asset values. The first set contains the original values. The second set contains the values after the transition. During a state transition a complete sub-state transfers into a sub-state that covers the same assets.
A trigger consists of four parts:
· The current state
· A set of target states
· A set of candidate subtasks
· A reasoning why the chosen subtask must be used
The chosen subtask is a selection out of a set of possible subtasks. Each task out of this set could lead to one of the target tasks. The chosen subtask transforms the current state into one of the target states. The chosen subtask is the most relevant part of the trigger. It determines the next step in the execution path. The reasoning is helpful in understanding why that execution path is taken. The chosen subtask may be stopped and the rest of the execution can be taken by a subtask that follows a different execution path. As with plans, execution paths are followed until new insights arrive.
A target consists of a set of states. It may be so that these states have a common sub-state that completely specifies the target.
A scheduler may rephrase the target.