# Specification and Description Language

Die Spezifikations- und Beschreibungssprache (SDL, englisch Specification and Description Language) ist eine von der ITU-T, d. h. dem Telekommunikations-Standardisierungs-Sektor der Internationalen Fernmeldeunion, in den sogenannten Standards (Recommendations) Z.100ff definierte Modellierungssprache.
Sie ist im Telekommunikationsbereich verbreitet, um (verteilte) Systeme mittels erweiterter Zustandsautomaten (Prozesse) zu beschreiben. Die verschiedenen Prozesse werden über Kanäle verbunden und können darüber Signale austauschen und sich damit gegenseitig beeinflussen.
Ein in SDL spezifiziertes System kann man entweder als Text (Textual Phrase Representation/PR) oder in graphischer Form (Graphic Representation/GR) darstellen.

## Aufbau einer SDL-Spezifikation
### Struktur und Ablauf

Eine SDL-Spezifikation strukturiert sich im Allgemeinen hierarchisch in System, Blöcke und Prozesse. Seit SDL-2000 sind dabei Blöcke und Prozesse zu Agenten vereinheitlicht, die sich hinsichtlich der genauen Semantik ihrer Nebenläufigkeit unterscheiden. Daneben gibt es auch noch Bibliotheken (Library Package) und Prozeduren. Andere Konzepte wie Makros und Services sollten nicht mehr benutzt werden.
System, Block und Prozess verfügen über definierte Zugangspunkte (Gate), Verbindungen zu anderen Agenten werden mit Kanälen (Channel) hergestellt. Über diese laufen (nur) die für diesen Kanal und dieses Gate definierten Signale.
Alle genannten Strukturelemente sind typisiert, und es kann mehrere Instanzen von ihnen in einem System geben. Auch eine scheinbar nichttypisierte Instanz definiert immer einen impliziten Typ.
Ein Prozess (in SDL-2000 jeder Agent) hat einen Zustandsautomaten. Zustandsübergänge (Transitionen) werden durch den Empfang von Signalen ausgelöst. Es können zudem auch spontane Zustandsübergänge definiert werden, um Nichtdeterminismus abbilden zu können. Außerdem verfügt SDL über ein eigenes Zeitkonzept: Es können Zeitgeber (Timer) gesetzt werden und die abgelaufenen Timer wie Signale empfangen werden.

### Daten

In SDL existieren vordefinierte Datentypen wie PId, Integer und Charstring, die auch zu Strukturen zusammengefasst werden können oder in Listen, Mengen etc. abgelegt werden können.
Das zugrundeliegende Datentypkonzept ist semantisch äquivalent zu ACT ONE und dem Datentypkonzept von LOTOS. Dabei können neue Datentypen axiomatisch definiert werden. Allerdings gibt es dafür keine Unterstützung durch Werkzeuge, und so spielt die axiomatische Definition in der Praxis keine Rolle.

### Beispielspezifikation

Die nebenstehenden Abbildungen zeigen eine SDL-Spezifikation für das DeamonGame, wie es erstmals in Turner 1993 beschrieben wurde. Die vorliegende Variante ist Piefel 2011 entnommen. In dieser Variante gibt es keinen expliziten Dämonen, sondern der Wechsel des internen Zustands wird mit einem Timer gesteuert.

## Normen und Standards

* Z.100: Specification and Description Language (SDL)
* Z.104: Encoding of SDL data
* Z.105: SDL combined with ASN.1 modules (SDL/ASN.1)
* Z.106: Common interchange format for SDL
* Z.107: SDL with embedded ASN.1 (Zurückgezogen)
* Z.109: SDL-2000 combined with UML
* Z.121: Specification and Description Language (SDL) data binding to Message Sequence Charts (MSC)