Hierarchy level The hierarchy level of SDL is structured as follows. • Library package • System agent • Block agent • Process agent • Procedure type • Remote procedure
Architecture An SDL system is made of functional blocks and each block can be further decomposed in sub-blocks. The lowest level block is composed of one process or several processes described as finite-state machines.
Communication Blocks are connected through channels that carry the messages (or signals) exchanged between the blocks. A block agent consists of process agents.
Behavior Each process agent is a state machine that contributes to the action carried out by the system. A message stimulus coming from the environment or from another agent to an agent is called a signal. Signals received by a process agent are first placed in a queue (the input port). When the state machine is waiting in a state, if the first signal in the input port is enabled for that state it starts a transition leading to another state. Transitions can output signals to other agents or to the environment. A process agent is allowed to contain procedure types so that the same actions can be invoked from different places. It is also allowed to call a remote procedure type to invoke a procedure in another agent (or even another system) and wait for a response. In this example MyVariable is of type
INTEGER and is the only variable in the process. The first transition is the
start transition that initializes the
local variable. A connection request message
conReq is sent, a 5 seconds timer
conReqTimer is started, and the state machine goes to the
connecting state. In the
connecting state if the timer goes off -that is equivalent to a message receive- the connection request is sent again up to 10 times. If a connection confirmation is received the state machine goes to
connected state. This is a typical telecommunication protocol scenario. Available symbols are:
Data SDL Abstract Data Types (ADT) support basic data types such as INTEGER, REAL, CHARSTRING as well as structured ones such as structures (STRUCT), enumerated (LITERALS), constants (SYNONYMS). Syntax looks like the one from Pascal, for example an assignment is written ':='. == Variants ==