仕様エージェントによる分散ソフトウェア開発支援
臼井義美(奈良先端科学技術大学院大学)
仕様を部品化する理由
- Balzerらが提唱した実行可能仕様を目標
- ソースコードより上流工程で仕様を確定できる
- 仕様書とソースコードの相違を防止できる
構造化設計技法とオブジェクト指向設計技法の融合
【オブジェクト指向設計】
- 現実世界とシステム内部の写像関係が明確である
- オブジェクトの独立性が高く再利用しやすい
- オブジェクトは逐次的にも並列的にも実行できる
【構造化設計】
- トップダウンアプローチによる設計の詳細化
- 機能分解による設計はわかりやすい
- 仕様書の段階で、処理の内容や手順が確定する
設計支援ツールの試作「ObjectFlow」
図1 ObjectFlowの画面例
分散ソフトウェアの仕様記述モデル
図2 分散ソフトウェアの仕様記述モデル
図3 分散ソフトウェアの仕様記述例
仕様エージェントの利用
- 各仕様エージェントに知識を分散できる
- 知識を局所化できるので、整理しやすい
- 粒度の異なる仕様部品に、最適な知識を与える
- ネットワーク上のサーバから部品を調達できる
- 部品合成時に、仕様部品を自動的に書き換える
- 関係するエージェントが相互に協調し調整する
- 仕様の変更時に、影響する部品を調整する
仕様エージェントの構造
図4 仕様エージェントの構成
仕様エージェントで利用可能な知識
- 論理的知識
- 経験的知識
- プロセスに関する知識
- プロダクトに関する知識
- 形式的仕様の適用
- ペトリネットの適用
ルールベースの知識を適用したツールの例
図5 制約ルールを適用した場合のObjectFlowの実行環境
仕様エージェントの機能と協調メカニズム
図6 仕様エージェントの機能
Webを利用した仕様エディタの動作
- ユーザがWebサーバから仕様エディタをダウンロードする
- 仕様エディタは必要に応じてWebサーバに仕様部品を要求する
- 仕様部品(アプレットバイトコード)が仕様エディタに送られる
- ユーザホスト上の仕様エディタが仕様部品を組み込む
- 完成した仕様から、目的のプログラムコードを生成する
図7 仕様エディタの動作原理
本設計支援ツールの動作
- サーバより場エージェントをダウンロード
- 場エージェントのエディタで仕様を記述
- 必要に応じて、仕様部品エージェントを検索
- 仕様部品を設計中の仕様に組み込む
図8 本設計ツールの動作原理