Specification and Description Language


Specification and Description Language is a specification language targeted at the unambiguous specification and description of the behaviour of reactive and distributed systems.

Overview

The ITU-T has defined SDL in Recommendations Z.100 to Z.106. SDL originally focused on telecommunication systems; its current areas of application include process control and real-time applications in general. Due to its nature it can be used to represent simulation systems without ambiguity and with a graphical notation.
The Specification and Description Language provides both a graphical Graphic Representation as well as a textual Phrase Representation, which are both equivalent representations of the same underlying semantics. Models are usually shown in the graphical SDL/GR form, and SDL/PR is mainly used for exchanging models between tools. A system is specified as a set of interconnected abstract machines which are extensions of finite state machines.
The language is formally complete,
so it can be used for code generation for either simulation or final targets.
The Specification and Description Language covers five main aspects: structure, communication, behavior, data, and inheritance. The behavior of components is explained by partitioning the system into a series of hierarchies. Communication between the components takes place through gates connected by channels. The channels are of delayed channel type, so communication is usually asynchronous, but when the delay is set to zero the communication becomes synchronous.
The first version of the language was released in 1976 using graphical syntax. This was revised in 1980 with some rudimentary semantics. The semantics were refined in 1984, the textual form was introduced for machine processing and data was introduced. In 1988, SDL-88 was released with a formal basis for the language: an abstract grammar as well as a concrete grammar and a full formal definition. The version released in 1992 introduced object-oriented concepts such as inheritance, abstract generic types etc., with the object-oriented features described by transformations into non-object oriented ones. SDL-2010 is the latest version, an updated version of SDL-2000 that was completely based on object-orientation, rather than description by transformations. This version is accompanied by a UML-Profile: ITU-T Recommendation Z.109, SDL-2010 combined with UML. SDL-2010 also introduced the support of C data types as initially introduced by SDL-RT.

Organization

Hierarchy level

The Hierarchy level of SDL is structured as follows.
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 or several process described as finite state machines.

Communication

Blocks are connected through channels that carry the messages 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. 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 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 support basic data types such as INTEGER, REAL, CHARSTRING as well as structured ones such as structures, enumerated, constants. Syntax looks like the one from Pascal, for example an assignment is written ':='.

SDL tools

The most well-known SDL modelling tools are Telelogic Tau, PragmaDev Studio, Cinderella, Safire-SDL, and ObjectGeode. PragmaDev Studio supports both SDL and SDL-RT which is used to develop real-time and embedded software. There are also some open source projects relative to SDL modeling like JADE which is a Java-based specification environment, and OpenGEODE, a Python/Qt implementation of an SDL editor from the European Space Agency.