仕様記述言語(SDL)は、リアクティブシステムや分散システムの動作を明確に仕様記述することを目的とした仕様記述言語です。
ITU -Tは勧告Z.100からZ.106でSDLを定義しました。SDLは当初、電気通信システムに焦点を当てていました。2016年現在現在の応用分野には、プロセス制御や一般的なリアルタイムアプリケーションが含まれます。その性質上、シミュレーションシステム[ 1 ]を曖昧さなくグラフィカル表記で表現するために使用できます。
仕様記述言語は、グラフィカルなグラフィック表現(SDL/GR)とテキスト形式のフレーズ表現(SDL/PR)の両方を提供しており、どちらも同じ基礎となる意味論の等価な表現です。モデルは通常、グラフィカルなSDL/GR形式で表示され、SDL/PRは主にツール間でモデルを交換するために使用されます。システムは、有限状態機械(FSM)の拡張である相互接続された抽象機械の集合として指定されます。[ 2 ]
この言語は形式的に完全であるため、[ 3 ] シミュレーションまたは最終ターゲットのコード生成に使用できます。
仕様記述言語は、構造、通信、動作、データ、継承という5つの主要な側面を網羅しています。コンポーネントの動作は、システムを階層構造に分割することで説明されます。コンポーネント間の通信は、チャネルで接続されたゲートを介して行われます。チャネルは遅延チャネルタイプであるため、通信は通常非同期ですが、遅延をゼロ(つまり遅延なし)に設定すると、通信は同期になります。
言語の最初のバージョンは、グラフィカル構文を使用して 1976 年にリリースされました (SDL-76)。これは、1980 年に基本的な意味論を追加して改訂されました (SDL-80)。意味論は 1984 年に洗練され (SDL-84)、機械処理のためにテキスト形式が導入され、データが導入されました。1988 年に、抽象文法、具体文法、完全な形式定義を含む言語の形式的基盤を備えた SDL-88 がリリースされました。1992 年にリリースされたバージョン (SDL-92) では、継承、抽象ジェネリック型などのオブジェクト指向概念が導入され、オブジェクト指向機能は非オブジェクト指向機能への変換によって記述されました。SDL-2010 は最新バージョンであり、変換による記述ではなく、完全にオブジェクト指向に基づいた SDL-2000 の更新バージョンです。このバージョンには、 UMLプロファイル(ITU-T勧告Z.109(04/12)、SDL-2010とUMLの組み合わせ)が付属しています。また、SDL-2010では、SDL-RTで最初に導入されたCデータ型のサポートも導入されています。
SDLの階層構造は以下のとおりです。
SDLシステムは機能ブロックで構成され、各ブロックはさらにサブブロックに分解できます。最下位レベルのブロックは、有限状態機械として記述される1つまたは複数のプロセスで構成されます。
ブロックは、ブロック間で交換されるメッセージ(または信号)を伝送するチャネルを介して接続されます。ブロックエージェントは、プロセスエージェントで構成されます。

各プロセスエージェントは、システムによって実行されるアクションに貢献するステートマシンです。環境または他のエージェントからエージェントに送られるメッセージ刺激はシグナルと呼ばれます。プロセスエージェントが受信したシグナルは、まずキュー(入力ポート)に格納されます。ステートマシンがある状態で待機しているときに、入力ポート内の最初のシグナルがその状態に対して有効になると、別の状態への遷移が開始されます。遷移は、他のエージェントまたは環境にシグナルを出力できます。プロセスエージェントはプロシージャタイプを含むことができるため、同じアクションを異なる場所から呼び出すことができます。また、リモートプロシージャタイプを呼び出して、別のエージェント(または別のシステム)のプロシージャを呼び出し、応答を待つこともできます。

この例では、MyVariable はINTEGER型で、プロセス内の唯一の変数です。最初の遷移は、ローカル変数を初期化する開始遷移です。接続要求メッセージconReqが送信され、5 秒のタイマーconReqTimerが開始され、ステート マシンは接続状態に移行します。接続状態では、タイマーがオフになると (これはメッセージの受信に相当します)、接続要求が最大 10 回再送信されます。接続確認を受信すると、ステート マシンは接続状態に移行します。これは、典型的な電気通信プロトコルのシナリオです。
使用可能な記号は以下のとおりです。

SDL の抽象データ型 (ADT) は、INTEGER、REAL、CHARSTRING などの基本データ型に加え、構造体 (STRUCT)、列挙型 (LITERALS)、定数 (SYNONYMS) などの構造化データ型もサポートしています。構文は Pascal に似ており、例えば代入は ':=' と記述します。
{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)-RTの主な用途は、リアルタイムおよび組み込みソフトウェアの開発です。SDL-RTは、メッセージを介して情報を交換し、セマフォを使用して互いに同期する、並行して実行されるタスクに基づいています。