TOPシステム開発> 【新・言語進化論】仕様記述言語を知っていますか?> 第4回:Z言語とVDM-SLの違いとその効果 (1/3)

【新・言語進化論】仕様記述言語を知っていますか?

【新・言語進化論】仕様記述言語を知っていますか?

第4回:Z言語とVDM-SLの違いとその効果

著者:NTTデータ 山本 修一郎

公開日:2007/11/28(水)

Z言語とVDM-SLの特徴と仕様記述言語の効果を探る

今回はZ言語とVDM-SLの言語的な特徴を比較する。次いで、仕様記述言語を最先端で活用している方々によって得られた有効性や課題についての議論を紹介しよう。

Z言語とVDM-SLのデータ型の違い

まず、Z言語とVDM-SLの型定義の比較表を図に示す。Z言語では集合と関数に基づいて、データ型を定義する。VDM-SLでは関数の代わりに写像を用いる。

仕様記述言語では、データ型の詳細を決めなくても、そのようなデータ型があると仮定して仕様を抽象的に記述することができる。この抽象性が重要である。

Z言語の所与集合では、[Address]のように記述して、Addressの詳細なデータ型の内容を隠して抽象化することができる。同じようにVDM-SLではオプション型を用いることで抽象化できる。またVDM-SLにはトークン型がある。トークン型はトークンと呼ばれる値を持つが、それがどのようなものかを定義する必要はない。

このような考え方は仕様記述では非常に重要である。もし仕様定義段階で値の詳細を決めてしまうと、設計段階までそれを引きずることになり、設計の自由度を低下させてしまうことになるからだ。

つまり、下流工程で決めればいいことは先に延ばし、上流工程で決める必要のあることだけを定義するのが重要である。

またZ言語では要素の値を列挙することで集合からなる単純データ型を定義できる。



VDM-SLでは列型があらかじめ用意されており、Z言語では列型seqを上図のように定義する。上図の「●」は右辺の制約式が成立するような左辺の変数を宣言している。また、「1..n」は1からnまでの集合である。このように、Z言語ではVDM-SLのデータ型を集合と関数を用いて定義できるのである。一方で、VDM-SLでは、集合をset of型として用意している。

Z言語では直積とべき集合で複数の集合の関係を定義しておき、特殊な性質を持つ関係として写像を定義する。VDM-SLでは写像型map 〜 to 〜を持っていることを前回の「第3回:Z言語とVDM-SLの記述例」で紹介した。

レコード構造については、Z言語ではスキーマで記述する。VDM-SLでは複合型を用いて記述できる。

次に、Z言語とVDM-SLの振る舞い記述の違いについて解説しよう。 次のページ




株式会社NTTデータ 山本 修一郎
著者プロフィール
株式会社NTTデータ 山本 修一郎
フェロー プリンシパルR&Dスペシャリスト 技術開発本部 システム科学研究所 所長
1979年日本電信電話公社入社、2002年NTTデータへ転籍、2007年4月NTTデータ 初代フェロー、技術開発本部システム科学研究所所長に就任。ソフトウェア工学、要求工学、Webデータベース連携、ICカードプラットフォーム、ユビキタスコンピューティング等の研究開発に従事し、最近は知識創造デザイン技術やサービスイノベーションの研究にも取組んでいる。


INDEX
第4回:Z言語とVDM-SLの違いとその効果
Z言語とVDM-SLの特徴と仕様記述言語の効果を探る
  Z言語とVDM-SLの振る舞い記述の違い
  仕様記述言語とコミュニケーション