# Specification and Description Language

Le Specification and Description Language (SDL) ou Langage de description et de spécification (LDS) est un standard de l'Union internationale des télécommunications (ITU-T) sous la référence Z.100. Ce langage a pour objectif de décrire de manière non ambiguë les protocoles de télécommunications. On retrouve ainsi des descriptions SDL dans les standards de l'ETSI tels que le X.25 ou le GSM.

## Versions

SDL est mis à jour tous les 4 ans et on considère que sa première version stable et utilisable est sa version de 1988. On notera les étapes importantes suivantes :
* 1988 : première version stable et complète.
* 1992 : introduction de l'orientation objet.
* 1996 : Introduction des Remote procedure call.
* 2000 : Introduction de diagrammes UML.
* 2004 : Addendum pour assurer la compatibilité ascendante et alignement pour un futur profile UML.
* 2007 : Profil UML basé sur SDL (Z.109) standardisé par l'ITU-T.
* 2010 : Nouvelle organisation du standard de la Z.101 qui décrit le "Basic SDL" jusqu'à la Z.106.

## Domaines d'utilisation

Le langage SDL est ce qu'on appelle un langage de modélisation qui permet de décrire les protocoles de télécommunications mais de manière plus générale il est aussi utilisé pour modéliser des applications temps réels. Ceci vient du fait que la sémantique du langage s'appuie sur des services qui sont ceux que l'on retrouve dans les systèmes d'exploitation temps réels tels que
* Description sous forme de machines d'état
* Échange d'information via des messages asynchrones (dénommés SIGNAL en SDL)
* Utilisation de timers (temporisateurs)

## Particularités

Comme beaucoup de langages de modélisation, le SDL propose une abstraction graphique de concepts et services utilisés dans les protocoles de télécommunications. Ainsi l'envoi de message depuis une machine d'état est représenté par un symbole graphique. Mais surtout le SDL définit des types de données abstraits (TDA) et une syntaxe de manipulation ce qui permet de décrire le système de manière formelle; c’est-à-dire de manière complète et non ambiguë.

## Quatre vues
### Architecture

Un système SDL est composé de blocks fonctionnels et chaque block peut être décomposé en sous-blocks et ainsi de suite. Le block de plus bas niveau est composé de un ou plusieurs process qui sont décrits sous forme de machines d'états.

### Communication

Les blocks de l'architecture sont connectés entre eux par des channels qui décrivent les différents messages (ou signaux) qui sont échangés entre les blocks.

### Comportement

Le comportement est décrit graphiquement sous forme d'une machine d'état étendue.
Dans cet exemple MyVariable de type INTEGER est la seule variable locale au process. La première transition est la transition start qui initialise la variable locale. Un message de demande de connexion est envoyé (conReq), un timer de 5 secondes est démarré (conReqTimer), et l'automate se met dans l'état connecting. Dans l'état connecting si le timer claque -ce qui est l'équivalent de la réception d'un message- on renvoie la demande de connexion jusqu'à 10 fois. Si on reçoit une confirmation de connexion, l'automate passe dans l'état connected. C'est un scenario typique dans les protocoles de télécommunications.
Les symboles disponibles sont les suivants:

### Données

Les types de données abstraits SDL offrent les types de base comme INTEGER, REAL, CHARSTRING et des types structurés comme les structures (STRUCT), les énumérés (LITERALS), les constantes (SYNONYMS). La syntaxe ressemble à celle du Pascal, par exemple une assignation s'écrira ':='.