![]() |
![]() |
![]() |
![]() |
![]() |
Language Compatibility
Compatibility with ITU SDL
The SDL language support in the SDL Suite includes nearly all of SDL'92, as defined in the ITU-T Z.100 recommendation.
The main divergencies between SDL supported in the SDL Suite and the Z.100 recommendation are:
- The concept of a generic system is only partially supported.
- Macro calls are only allowed within flowchart diagrams.
- The names of diagrams and diagram pages must conform to the lexical rules of SDL, except that spaces are not allowed.
More detailed limitations can be found in SDL Restrictions and SDL Editor.
The SDL Editor supports a few extensions to the SDL/GR notation:
- An additional heading symbol, intended for defining inheritance, specialization, formal parameters, signalsets, etc.
- An operator reference symbol, making operators visible in the SDL structure handled by the Organizer.
The SDL Suite supports several new SDL concepts, some of which are defined in an addendum to the latest Z.100 Recommendation, known as SDL-96, and some others which are IBM Rational-specific extensions to SDL. The extensions are supported in all relevant tools.
SDL-96 Extensions
- Remote procedures on channels and signal routes: This extension allows names of remote procedures to be put in signal lists of channels and signal routes. This has the main advantage that it enables processes to call remote procedures implemented in the environment of the SDL system, and also the other way around; remote procedures can be called from the environment of the SDL system.
- External procedures: External procedures are called like normal SDL procedures, but they are implemented in the target language (C). This makes it easier to use C functions in SDL.
- External operators: External operators are called like normal SDL operators, but they are implemented in the target language (C). This makes it easier to use C functions in SDL.
Other SDL-96 features are not supported in the SDL Suite.
SDL Suite specific Extensions
The following extensions to SDL are SDL Suite-specific. A detailed description of these extensions can be found in Data Types and Using SDL Extensions.
- Choice: With this construct you can define types with values where only one of a number of components can be present. Choice types replace the #UNION code generator directive (although #UNION is still supported for backward compatibility reasons).
- Optional/default components in structs: It is now possible to specify that fields of struct types are optional, or have a default value. This feature is useful in the design and implementation of protocols.
- Size constraints: With this construct it is possible to define types that should have a limited length.
- Bit fields: Integer fields in struct types can be specified as bit fields, very similar to C. This is useful when reusing C data types that contains bit fields in SDL.
- Z.105 types and generators: The following new predefined data types and generators from Z.105 have been added: Bit, Bit_String, Octet, Octet_String, Object_Identifier, IA5String, NumericString, PrintableString, VisibleString, Null, and the Bag generator.
- Powerset operators: Powerset has been extended with Length and Take operators, which make it possible to iterate over powersets and thereby make powersets more useful.
- Pointers: There are syntactic extensions that make it easier to work with pointers in SDL. In order to use pointers, the Ref generator from the package ctypes should be used.
- Own and ORef: The generators Own and ORef support safe pointers, making it possible to speed up applications by sending pointer values instead of copying data during signal sending. Allocation and deallocation of memory is handled automatically.
- Algorithms in SDL: A number of new constructs have been added to allow algorithms to be expressed within a Task symbol, e.g. if-then-else, loops and decisions.
- Extended operator: Added support for operators without parameter, operators without result, and in/out parameters to operators (both operator signatures and diagrams). As an alternative to an assignment statement an operator application statement may invoke a non value returning operator.
- External variables supported.
- Latin One: ISO-Latin-1 supported in predefined sort character.
- I18n: Predefined sort charstring supports multi-byte character literals.
- Names: Underscore may be used without restrictions in names.
- A make operator has been added to the predefined items String, Powerset, Bag, and Object_identifier. The operator takes a variable number of arguments (0 and up). It is invoked by the "(. .)" notation. The signatures for the operators are:
make! : * Itemsort -> String;make! : * Itemsort -> Powerset;make! : * Itemsort -> Bag;make! : * Natural -> Object_identifier;- New operator in predefined type Object_identifier:
append : in/out Object_identifier, Natural;SDL-2000 Extensions
- Binary and hexadecimal literals for Integer, Bit_string, Octet, and Octet_string sorts. Examples `'b `1001'B `'H `Fe'h.
- Mix of block and process:
Compatibility with ITU MSC
The MSC language support in the SDL Suite includes full support for basic MSCs (MSC'93), and also parts of MSC'96, as defined in the ITU-T Z.120 recommendation.
The key points for the MSC'96 support are:
- Roadmaps, or High-level Message Sequence Charts (HMSC), are supported in the HMSC Editor with the exception of the comment symbol and the parallel frame symbol.
- MSC diagrams support the reference symbol with MSC reference expressions, allowing references to other (H)MSC diagrams.
- MSC diagrams support qualifiers.
- MSC diagrams support inline expressions, allowing several scenarios to be expressed in the same diagram. Since the MSC Editor does not support gates, the inline expressions always cover all instances.
- Separate timer symbols are supported in MSC diagrams.
- MSC diagrams support lost and found messages (black and white holes).
Limitations to the MSC support can be found in UML and MSC Restrictions and MSC Editor.
The MSC Editor also supports a few extensions to Z.120:
- Messages and timers may be assigned additional statuses that map the Z.100 recommendation, allowing to express a graphical trace in a more intuitive way.
- Messages are allowed to be sent to self, where the out event and the in event resides on the same instance (Z.120 does neither explicitly allow or forbid this).
MSC'96 Reserved Words
The following words are reserved in MSC'96:
- action, all, alt, as, before, begin, block, by, comment, concurrent, condition, connect, create, decomposed, empty, end, endconcurrent, endmsc, endexpr, env, exc, expr, external, found, from, gate, in, inf, inline, inst, instance, loop, lost, msc, mscdocument, msg, opt, order, par, process, reference, related, reset, service, seq, set, shared, stop, subst, system, text, timeout, tim, to, via
The reserved words may not be used as names/identifiers even if the MSC Editor does not support the corresponding language construct; this to avoid compatibility problems either when the editors support more of the MSC'96 language or if the MSC/PR is to be exported to other tools with a different subset of the language supported.
MSC'93 Reserved Words
The following words are also treated as reserved words in the (H)MSC Editors but are mapped to (corresponding) MSC'96 reserved words.
This mapping is done to give old scripts and MSC/PR generators a chance to work.
Unsupported Reserved words
The following reserved words are not supported by the (H)MSC Editors (i.e. they are treated as reserved words with respect to names/identifiers but the Editors have no support for the constructs that can be created with these words).
- before, begin, external, found, gate, lost, order, related, via
In addition, the SDL Explorer does not support the following reserved words:
- subst, by, msg
Parameter Lists
Note that MSC/PR import allows empty parameter lists and an empty duration name when setting a timer, due to backward compatibility. This is not in accordance with either MSC'93 or MSC'96.
SDL Restrictions
This section describes the major SDL restrictions with respect to the ITU-T Z.100 recommendation of 1992. The restrictions lie in one or several specific tools. This means that even if a concept is not fully supported, it may sometimes be possible to use it in a limited part of the tool set.
This listing deals with restrictions in the following tools:
For more detailed information on the SDL restrictions in the Analyzer and the SDL to C Compiler, see SDL Analyzer and Cadvanced SDL to C Compiler.
For a description of SDL restrictions regarding the Simulator, the SDL Explorer, the TTCN Link kernels and the Cmicro SDL to C Compiler, please see the following sections in the User's Manual:
UML and MSC Restrictions
This section lists the major UML and MSC restrictions in the SDL Suite, with respect to the OMG specification for UML, and the ITU-T recommendation for MSC.
References below are to sections in the OMG document "ad/99-06-08" (UML Notation Guide, version 1.3, June 1999), and the Z.120 recommendation.
UML Class Diagrams
The following features of UML 1.3 Static Structure (Class) diagrams are not supported:
- Packages (section 3.13), but package references are allowed in class names
- Interfaces (section 3.28)
- Parametrized class, or template (section 3.29)
- Composite objects (section 3.39)
- Xor-associations (section 3.41.5)
- Navigability in associations (section 3.42.2)
- N-ary associations (section 3.46)
- Constraints in generalizations (section 3.49.2)
- Dependency, i.e. dashed arrows (section 3.50)
UML Statechart Diagrams
The following features of UML 1.3 Statechart diagrams are not supported:
- Hidden decomposition indicator icon (section 3.76)
- Substate compartment with concurrent states (section 3.76)
- Transition times (section 3.78)
- Concurrent transitions (section 3.79)
- History state indicator (section 3.80)
- Stubbed transitions (section 3.80)
- Factored transition paths (section 3.81)
- Submachine states (section 3.82)
- Synch states (section 3.83)
UML Implementation Diagrams
The notation used in the DP Editor diagrams is based on UML 1.3 Implementation diagrams. The major differences are the following:
- No dashed-arrow dependencies (on nodes and components)
- No interfaces (on components)
- No migration (of components from node to node or of objects from component to component)
- No graphical nesting (only composite aggregation) to show containment
- The thread concept has been added
MSC and HMSC
- General ordering for events is not supported (Z.120 chapter 4.5).
- Gates are not supported (Z.120 chapter 4.4).
- Comment symbols in HMSC diagrams are not supported.
- Parallel frames in HMSC diagrams are not supported (Z.120 chapter 5.5).
TTCN Restrictions
- The TTCN language supported in the TTCN Suite is according to an interim version of the new TTCN standard labeled Delivery 8.3, August 2, 1996, with the exception of the Modular TTCN features that are according to the Delivery 9.6 version.
- Due to the Delivery 9.6 Modular TTCN features, the support for the TTCN Package document type has been dropped.
- The import/export mechanism of the Modular TTCN feature is currently not able to handle import that uses the "xxx[yyy]" construct needed for importing named numbers, and neither able to handle the "xxx::yyy" construct for importing objects with name collisions.
- More general restrictions and modifications to the TTCN and ASN.1 support in the TTCN Suite is described in Languages Supported in the TTCN Suite.
http://www.ibm.com/rational |
![]() |
![]() |
![]() |
![]() |