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

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

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

第3回:Z言語とVDM-SLの記述例

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

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

Z言語による仕様記述の具体例

まず下図にZ言語の操作定義で用いる入出力変数や状態に関する名称の表記法を示す。Z言語による住所登録の記述例もまとめて紹介する。

Z言語では変数名の直後に「?」がついていれば入力とし、「!」がついていれば出力とみなす。また名前の直後に「'」があれば事後オブジェクトであるとみなす。


(画像をクリックすると別ウィンドウに拡大図を表示します)

それでは順番に説明していこう。

型宣言

所与の型「CHAR」では、その内容の詳細にはそれ以上立ち入らず、何かしら定義されていると仮定して、以下の仕様を記述しようというものである。これによって仕様記述の抽象性を管理できることになる。

列型「seq」によって文字列型「String」をCHARの列として宣言することができる。Name型とAddress型はString型として宣言する。ここで「==」によって、右辺の式を左辺の式で示すことができるようにしている。

状態宣言

AddressBookを定義するスキーマでは、addressBookという変数が型「Name -|-> Address」を持つ変数として定義されている。つまり定義域をName型の集合、値域をAddress型の集合とする写像として定義する。「-|->」は部分関数をあらわす演算子である。

InitAddressBookの述語部では、AddressBook型の初期状態満たすべき条件が空写像であるという制約条件を表現している。

操作宣言

AddAddress操作では、⊿AddressBookによって、addressBookの事前状態と事後状態がまとめて引用されている。このように「⊿」は型の変数の事前状態と事後状態が同時に引用されていることを示す記号である。また入力変数nameとaddressを宣言している。

AddAddress操作の述語部では、この操作に関する事前条件と事後条件を記述する。まず事前条件では、nameがaddressBookの定義域の集合の要素として含まれていないことを求めている。また事後条件では、addressBookの事前状態の集合と、入力変数の値の組(name, address)との和集合が、addressBookの事後状態の集合になるという制約条件を記述している。

このように、Z言語では集合や写像の概念を用いてソフトウェアの仕様を自然に記述することができる。

Z言語についてのさらに詳しい説明については、玉井先生の教科書が参考になる。またMike SpiveyのWebサイトから、Z言語の参照マニュアルをダウンロードできる。LinuxなどのUNIXか環境があればZ言語の型チェッカーをダウンロードして使うこともできるので参考にしていただきたい。

参考図書
ソフトウェア工学の基礎
玉井哲雄著
岩波書店刊(2004)

参考URL
http://hello.to/zed
http://spivey.oriel.ox.ac.uk/mike/zrm/index.html
http://spivey.oriel.ox.ac.uk/mike/fuzz/

さて次にVDM-SLの具体例をみていこう。 次のページ




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


INDEX
第3回:Z言語とVDM-SLの記述例
  Z言語とVDM-SLの特徴
Z言語による仕様記述の具体例
  VDM-SLによる仕様記述の具体例