中川 博之 電気通信大学大学院情報システム学研究科 助教 |
[背景]継続的なソフトウェア進化の難しさと重要性
[問題]進化時における要求記述と設計・実装とのギャップ
[貢献]要求記述の整形によるトレーサビリティの確立
[問題]進化時における要求記述と設計・実装とのギャップ
[貢献]要求記述の整形によるトレーサビリティの確立
近年,ソフトウェアシステムは社会基盤としてだけでなく,Webアプリケーションや組込みシステムのように,我々の身近でも生活を支える存在となっている.一方で,ソフトウェアを取り巻く環境やユーザ要求の多様化により,従来のようなバグ対応に代表される受動的な保守だけでなく,要求や環境の頻繁な変化に対応するための機能の追加や変更,つまりソフトウェア進化(Software Evolution)が強く求められるようになっている.
しかし,ソフトウェア進化,特に継続的なソフトウェア進化を実現するためには,変更要求に対してソフトウェア上に生じる変更影響を正確に分析する必要があり,また,変更により生じるコードの複雑さの増加をできる限り抑制することが求められる.この継続的なソフトウェア進化は,ユーザ嗜好の変化に追随しなければならないWebアプリケーションの開発や,類似の仕様で多数のソフトウェアを生産・管理しなければならないソフトウェアプロダクトライン開発においても前提とされている進化スタイルである.
本研究では,継続的なソフトウェア進化を実現するために,機能単位での拡張を容易に実現するソフトウェア開発手法を追求した.本研究では,進化の影響を局所化・限定化するために,制御モデルとして知られるControl loopに着目し,Control loopをシステムの構成要素と位置付けるシステム開発プロセスを提案する.
Control loopは環境情報の収集,状況分析,意思決定,アクション実行といった一連の制御動作を独立して提供可能な実行単位であり,独立性の高いControl loopを複数組み合わせてシステムを構築することにより,進化時における変更影響の局所化が期待できる.提案する開発プロセスでは,要求を構造的に記述するゴールモデルを利用し,ゴールモデルに対する整形プロセスを定義することで,要求記述からのControl loop抽出を実現し,また,Control loopにより構成されるシステム構成を決定する.
また本研究では,提案する開発プロセスを実践するための開発支援ツール群を構築した.具体的には,整形後ゴールモデルから,システム構成図や進化による変更影響範囲を表現した差分情報など,進化時のシステム設計・実装を支援する各種情報を自動生成するゴールモデルコンパイラと,Control loop を構成要素としたシステムの実装を支援するプログラミングフレームワークを構築した.
さらに本研究では,提案する開発プロセスの有効性を評価するために,ゴール指向要求分析手法KAOSのモデリングツールとして実利用されているk-toolと,シミュレータ上での制御システムを模した清掃ロボットを対象としたソフトウェア進化実験を実施した.本実験結果から,Control loopを構成要素とした場合においても,実用ソフトウェアが構築可能であることが確認できたとともに,提案する開発プロセスにおいては,ソフトウェア進化に対してより正確な影響範囲分析が可能となること,実装コードの複雑さ増加を抑制できることが確認できた.本研究成果により,継続的な要求の変化に対しても柔軟に進化可能なソフトウェアシステムの実現が期待できる.
しかし,ソフトウェア進化,特に継続的なソフトウェア進化を実現するためには,変更要求に対してソフトウェア上に生じる変更影響を正確に分析する必要があり,また,変更により生じるコードの複雑さの増加をできる限り抑制することが求められる.この継続的なソフトウェア進化は,ユーザ嗜好の変化に追随しなければならないWebアプリケーションの開発や,類似の仕様で多数のソフトウェアを生産・管理しなければならないソフトウェアプロダクトライン開発においても前提とされている進化スタイルである.
本研究では,継続的なソフトウェア進化を実現するために,機能単位での拡張を容易に実現するソフトウェア開発手法を追求した.本研究では,進化の影響を局所化・限定化するために,制御モデルとして知られるControl loopに着目し,Control loopをシステムの構成要素と位置付けるシステム開発プロセスを提案する.
Control loopは環境情報の収集,状況分析,意思決定,アクション実行といった一連の制御動作を独立して提供可能な実行単位であり,独立性の高いControl loopを複数組み合わせてシステムを構築することにより,進化時における変更影響の局所化が期待できる.提案する開発プロセスでは,要求を構造的に記述するゴールモデルを利用し,ゴールモデルに対する整形プロセスを定義することで,要求記述からのControl loop抽出を実現し,また,Control loopにより構成されるシステム構成を決定する.
また本研究では,提案する開発プロセスを実践するための開発支援ツール群を構築した.具体的には,整形後ゴールモデルから,システム構成図や進化による変更影響範囲を表現した差分情報など,進化時のシステム設計・実装を支援する各種情報を自動生成するゴールモデルコンパイラと,Control loop を構成要素としたシステムの実装を支援するプログラミングフレームワークを構築した.
さらに本研究では,提案する開発プロセスの有効性を評価するために,ゴール指向要求分析手法KAOSのモデリングツールとして実利用されているk-toolと,シミュレータ上での制御システムを模した清掃ロボットを対象としたソフトウェア進化実験を実施した.本実験結果から,Control loopを構成要素とした場合においても,実用ソフトウェアが構築可能であることが確認できたとともに,提案する開発プロセスにおいては,ソフトウェア進化に対してより正確な影響範囲分析が可能となること,実装コードの複雑さ増加を抑制できることが確認できた.本研究成果により,継続的な要求の変化に対しても柔軟に進化可能なソフトウェアシステムの実現が期待できる.

(2013年5月23日受付)