Key SDL-2000 feature: Data
Variables (owned by processes)
Parameters (for example in signals)
Built-in with defined operations
Boolean, Character, Charstring, Integer, Natural, Real, Duration, Time, Bit, Bitstring, Octet, Octetstring, Pid (agent references)
Build-in parameterised with operations
Strings (lists)of any type (not just characters) indexed by Naturals
Arraysof any type indexed by any type
Structures (records)with optional (and default) fields
ChoiceStructure with all fields optional
Powerset, Bag (maths. set and bag)
User defined sorts of data with operations
Object type - elements are references
Value type - elements are values
Syntype - check on range of values
prev, next this Linkedlist;
"in" (Elementsort, Linkedlist) ->Boolean;
operator "in" referenced;
method delete referenced;
endobject type Linkedlist;
inherits Linkedlist <Natural>
It is the data within process agents and passed by signals which provides the SDL system with its behaviour. Data has no existence in SDL without process agents. Variables defined in block (or system) are contained within the block’s (or system’s) process agent1, which is implicit if one is not defined explicitly. Variable objects in other agents are accessed by an implicit exchange of signals between agents.
A data type defines a set of elements and operations. An element of an object type is a reference to a variable object associated with a value. An element of a value type is one of the defined simple or composite values of the type. The operations can be operators that take data elements as parameters and produce a data element as a result, or methods which act on a variable object and may have parameters and may produce a result.
Data elements are either associated with variable objects within and owned by a process agent, or are in signals output by one process agent and put in the input queue of another process agent. Nothing can happen to data while it is communicated. To model imperfect communication requires explicit process agents to corrupt signals.
An assignment to a variable object, or passing a parameter, invokes checks that the data element is valid. Many checks can be done statically because SDL is strongly typed. Some checks can only be done dynamically. In addition the user can define Syntypes to check that values passed and stored are within limited ranges.
The user can introduce a new value or object data types, that inherits the properties of an existing data type in the same way as other types can inherit in SDL (see the following presentation on types)
A data element can also refer to an agent. The data type Pid can refer to any agent, but an interface name can also be used to limit references to just agents reachable via that interface. Every agent definition has an implied interface with the same name.
1 The state machines of agents of the SDL standard are considered as “process agents” in this short presentation.