Key SDL-2000 feature: Structure
Systems and blocks can contain
It would be too complex to draw a complete SDL model on a single diagram, and would not provide layers of abstraction which is one of the major benefits of a graphical form. There is a diagram for each procedure or process in a process, each procedure or process or block in a block, each procedure or process or block in the system.
The components are referenced by name. The referenced component can contain information about the context of the component in a qualifier before the name. For example, the full identification for p2 is
<<system example/block b1>> p2.
The left parts of a qualifier can be omitted if the remaining part of the identification is unique, so that usually (as in the example) only a name needs to be written (see headings in the referenced diagrams).
The whole system is structured as a tree of referenced diagrams with the system diagram at the root. When the system is interpreted there will be one instance of the system agent, and one or more instances of other agents (blocks and processes). The number of instances can change during the life of the system, as agents are created, and agents stop themselves.
A diagram may be too complex to be on one page, and so can be split onto multiple pages. The identity of the diagram (such as block b1) appears in the top left of every page, and a different page number (a name or number followed by the number of pages) on the top right every page.
The set of diagrams can be built into a complete model (manually or by a tool), by the name in the diagram reference matching and the context of the reference matching the name and qualifier (respectively) given in the referenced diagram. If the name is unique for the kind of diagram, the qualifier can be (and therefore usually is) omitted. The same principle applies for both SDL and MSC, but in the case of MSC a qualifier cannot be given in a heading, so all MSC diagrams of the same kind in an MSC document must have unique names.
Although not shown, the diagrams can represent types (for example a block type or a process type), and definitions of agents (blocks and processes respectively) can be written that inherit the properties from the type. This feature together with specialization and parameterization provides a powerful language for object based descriptions.