![]() |
![]() |
![]() |
![]() |
![]() |
SDL
SDL (Specification and Description Language) is mainly used for specifying behavior of real-time systems. This section provides a small overview of the language. For further reading, we recommend [27], [28] and [29] as useful textbooks about SDL. The SDL language is standardized by ITU-T, as recommendation Z.100 [24].
An SDL system consists of the following components:
Structure
Figure 630 shows the hierarchical levels in SDL: system, block, process, procedure and service.
A system must contain at least one block and a block must contain at least one process. Services can exist within a process, being executed one at a time, controlled by the received signals. Thus the incoming signal sets of services in one process must be disjoint. Using procedures is a way to structure the information within processes and services. Processes, services and procedures are described by a flow chart-alike notation, see Behavior.
The static structure of a system is defined in terms of blocks. Blocks communicate by means of channels.
The dynamic structure of an SDL system consists of a set of processes that run in parallel. A process is a finite state machine extended with data. Processes are independent of each other and communicate with discrete signals by means of signal routes.
Communication
Since SDL does not allow any use of global data, all information that has to be exchanged must be sent along with signals between processes, or between processes and environment. Signals are sent asynchronously, i.e. the sending process continues executing without waiting for an acknowledgment from the receiving process.
Signals travel through channels between blocks, and from one process to another via signal routes. See Figure 630.
Synchronous communication is possible via a shorthand, remote procedure call. This shorthand is transformed to signal sending with an extra signal for the acknowledgment. Remote procedures are often used when a process wants to offer services to other processes.
Behavior
The dynamic behavior in an SDL system is described in the processes. Processes in SDL can be created at system start or created and terminated dynamically at run time. More than one instance of a process can exist. Each instance has a unique process identifier (PId). This makes it possible to send signals to individual instances of a process. The concept of processes and process instances that work autonomously and concurrently makes SDL appropriate for distributed applications.
A process must have one start symbol. Since a process is a state machine, a transition between two states is made only after a signal has been received. If there are no incoming signals the process is inactive in a state. In SDL a transition takes no time. To be able to model time, and to set time restrictions, there is a timer concept. Each process has its own set of timers that can be set to expire on different durations.
Data
The set of predefined sorts in SDL makes it possible to work with data in SDL in a traditional way:
More complex data sorts can be created by using arrays, strings and structs.
Abstract Data Types in SDL can be used for more than representing data, e.g:
- Hide data manipulation
- Hide algorithmic parts of a specification
- Create an interface to external routines
Data manipulation is hidden in operators. For a more thorough description on how to use complex data structures with operators in practice, please see [32].
Structural Typing Concepts
The object-oriented concepts of SDL give you powerful tools for structuring and reuse. The concept is based on type definitions. All structural building blocks can be typed: system type, block type, process type and service type. An exception is the procedure that is a type in its original form.
Type definitions may be placed outside the system in packages. Packages can be seen as libraries of frequently used functions. The structural typing concepts are shown in Figure 632. All types can inherit from other types of the same kind.
One of the major benefits of using an object oriented language is the possibility to create new objects by adding new properties to existing objects, or to redefine properties of existing objects. This is what is commonly referred to as specialization.
In SDL-92, specialization of types can be accomplished in two ways:
- A subtype may add properties not defined in the supertype. One may, for example, add new transitions to a process type, add new processes to a block type, etc.
- A subtype may redefine virtual types and virtual transitions defined in the supertype. It is possible to redefine the contents of a transition in a process type, to redefine the contents/structure of a block type, etc.
Figure 633 and Figure 634 describe adding and redefining properties in a system and in a block type while Figure 635 describes the same features in a process type diagram.
To be able to instantiate a type regardless the context (by means of channels), a special concept is needed: gates.
Since a channel always has to be connected to a signal route and the connection mechanism lies inside the process, a gate is necessary since it is a way to specify the connection in a transparent manner.
Graphical and Textual Notation
The SDL language supports two notations that are equivalent. Beside the graphical representation (SDL/GR), a textual phrase representation (SDL/PR) is standardized.
http://www.ibm.com/rational |
![]() |
![]() |
![]() |
![]() |