• 検索結果がありません。

本研究の成果と得られた知見

本論文では,進化を考慮したソフトウェアシステムの開発プロセスについて述べた.ソフト ウェアシステムの進化を要求分析段階から捉えるために,本研究では,要求の構造化が可能で あるゴール指向要求分析法に着目し,進化の影響を限定化するためにControl loopをシステム 構成要素とした,ゴールモデルからシステム構成を決定するためのゴールモデル成形法を導入 した.また,提案する開発プロセスを支援するツール群として,システムの構成を表現したコ ンフィギュレーションの生成や,進化に際してシステムを設計・実装するための各種情報を 生成するコンパイラgoccと,Control loopの実装を支援する1つのプログラミングフレーム ワークを導入し,これらにより構成されるソフトウェアシステム開発プロセスGCLDを提案 した.

また,本研究で提案する開発プロセスの有効性を評価するために,実用化されているモデリ ングツールk-toolと制御システムを想定した清掃ロボットを題材としたソフトウェアシステム 進化開発実験を実施し,実験結果をもとに提案手法の有効性を評価した.

以下に,本研究の成果と得られた知見をまとめる.

8.1.1 進化を考慮したソフトウェアシステム開発プロセス GCLD

本研究では,進化を考慮したソフトウェアシステム開発プロセスを実現するために,要求が 構造化して記述されるゴールモデルを開発プロセスの中心となるモデルと定義した.提案する 開発プロセスGCLDにおいては,ゴールモデルからControl loopを同定するための整形プロ セスを導入している.整形プロセスの大きな目的は,ゴールモデル内において主要な役割を担 う主要ゴールを同定する点と,同定した主要ゴールに対して,Control loopパターンを導入す

ることによるControl loopのゴールモデル上での配備にある.整形プロセスにおいては,ゴー ルモデル中のゴール,エンティティ間関係を特に利用している.主要ゴール同定時には,主要 ゴールの候補となり得るゴールをエンティティ間の関係を利用して選定し,Control loopごと に関連エンティティを分離する.また,主要ゴール同定後は,Control loopごとに割り当てら れた各エンティティに対して,プロセス変数としての責務を割当てている.

整形プロセスにおいては,2種類のパターンを導入した.一つは,Control loop間で発生し 得る競合を検出するための,Entity-conflictパターンであり,もう一方は,Control loop内で の責務を同定するためのControl loopパターンである.前者は,モデル上に望ましくない状態

(競合状態)が存在するかどうかを検査するためのパターンであり,後者は,期待する状態ま でモデリングを推進するためのパターンである.このように本研究では,ゴールモデルに対し て,期待する状態,つまりシステム構成が決定可能な状態に到達するための整形プロセスと,

整形を支援するパターンを導入したが,記述の自由度が高くモデリングが困難であると指摘さ れているゴールモデルに対して,一定の水準を要求するモデリングの支援に,本手法のような プロセスおよびパターンの導入は効果があるということが,評価実験からも確認できた.

また,本研究においては,整形したゴールモデルの構造を利用した,コンフィギュレーショ ンの決定法を導入した.コンフィギュレーションとはシステムのアーキテクチャを示すもので あり,本研究では,ゴールモデル上の一部のゴールとコンフィギュレーション上のコンポーネ ントとを対応付けたモデル変換により,コンフィギュレーションの生成を実現している.この ようなコンフィギュレーションの決定法においては,ソフトウェアシステムの進化を考慮した 場合にも,要求記述上の変更箇所を反映したコンフィギュレーションの獲得が可能であること を,評価実験からも確認することができた.

このようなゴールモデルを利用した開発プロセスにおいては,ゴールモデルへの分析結果に より,適用範囲が判断される.整形後のゴールモデル上でControl loopが少数しか抽出されな い場合は,提案する開発プロセスを適用する効果が薄くなると考えられる.システムにおける 多くのアクションが,同一の入力変数に依存するようなシステムなどは,このようなゴールモ デルとなる可能性があり,例えば,数値計算や,会計処理アプリケーションなどはこのクラス に属すると考えられる.一方で,整形後のゴールモデルにおいて複数のControl loopが構築さ れている場合は,本開発プロセスの効果が期待できる.このようなシステムは,多種にわたる 入力変数を扱うシステムであり,また,入力変数ごとに取り得るアクションが異なるシステム であり,例えば豊富なGUIを持つシステムやWebアプリケーション,ユビキタスアプリケー ションなどが該当する.

8.1.2 ゴールモデルコンパイラ gocc の構築

本研究では,提案する開発プロセスGCLDを支援するためのツールも導入した.その一つ は,ゴールモデルコンパイラgoccである.goccは,整形されたゴールモデルから,システ ム構成を表現するコンフィギュレーションを生成するが,その過程で利用する情報を,ソフト ウェア進化に必要な各種情報として生成するコンパイラである.

まず,ゴールモデルを解析することで,本研究で導入する2種類の競合パターン,つまり Entity-conflictパターンとGoal-conflictパターンに一致する箇所を検出し,その結果を競合リ ストとして生成する.コンフィギュレーションを生成した後には,Collectタイプなど,Control loop内での責務を同定した結果をもとに,クラステンプレートを生成する.また,進化前の ゴールモデルも入力情報とし,ゴールモデルと生成されるコンフィギュレーションにおいてそ れぞれ差分を検出することで,進化が及ぼすゴールモデル上およびコンフィギュレーション上 の影響を検出することができる.

このように,goccを利用することで,ソフトウェア進化に必要な様々な情報を,ゴールモ デルから抽出できることが確認できた.ただし,現段階で抽出できる多くの情報は,システム の構造的な側面に対する情報であることから,更なるControl loopの設計・実装支援には,シ ステムの振舞いに関する情報の抽出法の検討が有益であると考える.

8.1.3 Control loop 実装のためのプログラミングフレームワークの構築

本研究では,goccとともに,本研究で提案する開発プロセスGCLDを支援するプログラミ ングフレームワークを実装した.このプログラミングフレームワークは,Control loopの実装 を支援し,また構築されたControl loop群をシステムとして動作させるプラットフォームとし ての役割を持つ.

実装支援という観点での特徴としては,Control loopを3種類のコンポーネントにより構築 し,複数のControl loopを並行動作させる点が挙げられる.実装に関しては,本研究ではコン ポーネント実装時のイディオムも導入し,コンポーネントの構成により,Control loopの実現 が可能であることが確認できた.

一方で,プラットフォームとしての観点からは,開発者がシステム動作中に,Control loop を制御,デプロイ可能なコマンドセットを提供する点が特徴として挙げられる.このコマンド セットを利用することで,一部の動的進化が実現可能であることも確認できた.本プログラミ ングフレームワークを利用することで,コンポーネント連携によるControl loopの構築が可 能であり,Control loopを構成要素とするような自己適応システムのプログラミングフレーム

ワークとしての応用も期待できる.

ただし,提案する開発プロセスが想定するシステム構成においては複数のControl loopが存 在するため,複数Control loopの並行動作や,複数コンポーネントの並行動作によるオーバー ヘッドが存在するのは事実である.従って,実用を考えた場合には,性能面に関する検討も今 後必要と思われる.