本研究で導入する開発プロセスを説明するために,3章以降では,進化するシステムの開発 例としてシミュレータ上で動作する清掃ロボットの構築を取り上げ,提案する開発プロセスを 論じる.本節では,この清掃ロボットの例題について説明する.
2.5.1 シミュレータ仕様
図2.9は清掃ロボットシミュレータのGUIである.シミュレータの主な特徴は以下の通り である.
• シミュレータはフィールド情報を読み込むことで,フィードの状態をキャンバスに描画
図2.9.清掃ロボットシミュレータ
することができる.フィールドの状態はx-y平面上に表現され,フィールドには各種ご みやバッテリーステーションなどが配置されている.清掃ロボットもフィールド上の一 地点に存在している.
• シミュレータは清掃ロボットの動作により,フィールド情報を変更することができる.
ここでの変更とは,清掃ロボットの移動や,ごみ清掃によるごみの削除,下記に述べる イベントによるごみなどの追加,移動を指す.
• フィールド上には以下のオブジェクトを配置することができる.
– ごみ:清掃ロボットの清掃対象となるオブジェクトである.ごみはPile(山),Litter
(散乱したもの),Can(缶)などの形状をもつ.図2.9中の座標(4, 0)などに存在 するオブジェクトは,Litterの形状をした紙くずを指す.
– バッテリーステーション:清掃ロボットのバッテリーが充電可能なステーションで ある.清掃ロボットはバッテリーステーションと同一の座標に到達し,充電アク ションを実行することにより,バッテリーを充電することができる.図2.9中の座
標(4, 3)に位置するオブジェクトが,バッテリーステーションである.以降,バッ
テリーステーションのことを,単にステーションと呼ぶ.
• シミュレータのGUIからフィールドに対して以下のイベントを発生させることがで
きる.
– オブジェクトの投入:“Inject Item”リストでオブジェクトを選択し,“Inject”ボタ ンを押した後に,フィールド上の一地点を選択することで,フィールド上の選択し た座標に,指定したオブジェクトを新たに投入することができる.
– オブジェクトの移動:“Move Item”ボタンを押した後にフィールド上のオブジェ クトをドラッグすることで,オブジェクトの位置を変更することができる.
• シミュレータのGUI上で,清掃ロボットのバッテリー残量とごみの積載量を確認する ことができる.
また,シミュレータ上における清掃ロボットの制約は以下の通りである.なお,図2.9中の
座標(0, 6)に位置するオブジェクトが,清掃ロボットである.
• ロボットは,隣接するマス(座標)に対して,1マスずつ移動できる.
• ロボットは,現在地からもっとも近くにあるごみ,あるいはステーションの座標を検出 することができる.
• ロボットは,缶型,山型,ステーション型などの対象物の形状を認識することができる.
• ロボットはごみに対して,ほうきで掃くか,アームで掴むことによりフィールド上のご みを清掃することができる.
• ロボットが所持するバッテリーは最大容量が100であり,初期状態では最大容量まで充 電されている.バッテリーは,1マスの移動に4,1回のごみ清掃アクションの実行に4 消費する.
2.5.2 清掃ロボットに対する要求
前節で示したシミュレータ上において構築する清掃ロボットに対する要求を以下のように定 義する.
[清掃ロボットに対する初期要求]清掃ロボットはフィールド上のごみを検知して清掃する ことができる.ロボットは形状からごみを認識し,その形状から適切な清掃方法を選択する.
ロボットはごみに対して,ほうきで掃くか,アームで掴むことによりフィールド上からごみ を清掃し,清掃後はごみを積載する.また,ロボットはバッテリー残量が少なくなると,ス テーションを発見し,ステーションに移動後,バッテリーを充電することができる.
これらの機能により,ステーションで随時バッテリーを充電しながら,フィールド上の すべてのごみを清掃することができる.
本例題では,上記の初期要求に従って開発された清掃ロボットに対して,以降の2つの進化 要求が,順次与えられると想定する.
進化1(ごみ積載量管理機能の追加):適用フィールドの拡大により,本清掃ロボットに対し て以下の要求変化が生じる.
[清掃ロボットに対する要求変化1]フィールド上のごみの増加により,清掃ロボットのご み積載量では一度に全てのごみが清掃できない場合が生じることとなった.そこで,清掃ロ ボットがごみの積載量を管理できる機能を新たに追加したい.清掃ロボットはごみの積載量 を監視し,積載量が一定値以上になった場合,ごみ箱の場所を探し,ごみ箱の場所へ移動後,
積載しているごみをごみ箱に捨てるという動作が求められる.
ここで,図2.9のシミュレータ上の座標(3, 2)に位置するオブジェクトが,ごみ箱である.
進化2(障害物回避機能の追加):続いて,フィールド上に回避して移動しなければならない 障害物が追加されたと想定する.シミュレータ上では,図2.9中の座標(1, 3)に位置するオブ ジェクトが障害物を示す.
[清掃ロボットに対する要求変化2]フィールド上にごみではない,通過不能であるオブジェ クト(障害物)が設置される状況が生じることとなった.そこで,清掃ロボットには進行方 向に障害物が存在する場合,迂回して目的の座標に到達する機能が求められることとなった.
本論文では,次章以降,このような清掃ロボットの構築事例を例として,提案する開発プロ セスについて論じる.
2.6 まとめ
本章では,ソフトウェア進化に対応するための本研究におけるアプローチについて述べ,本 研究で導入する開発プロセスGCLDの概要について説明した.GCLDにおいては,特に要求 分析フェーズに着目し,ゴール指向要求分析法により記述されるゴールモデルを用いた開発プ ロセスを定義する.また,システム開発を通じて,システムの構成要素をControl loopとして 定義,構築することによるソフトウェア進化を実現する.
次章以降では,GCLDの各開発フェーズにおいて,提案手法がどのようにソフトウェア進化 に対応するかを詳細に論じていく.
第 3 章
ゴール指向要求記述を用いた Control loop の同定
3.1 はじめに
2章で述べたように,本研究では,進化の影響が分析可能であり,進化を容易に実現できる ソフトウェア開発プロセスとして,システムの構成要素をControl loopの観点から同定する開 発手法を検討する.Control loopの概念に基づいてシステムを構成する場合,まず,システム が持つべきControl loopが明確に同定されていなければならない.また,各Control loopが協 調して動作するには,これらの関係が明示され,Control loop間で生じ得る競合についても事 前に把握されていなければならない.
本研究では,進化の要因となる要求変化と,機能実現に対する責務を同時に可視化,分析す るのは要求分析時が最も適していると考え,要求記述を利用したシステム構成の決定法を提案 する.図3.1は,本研究における,システム構成要素としてのControl loop同定のイメージを 示したものである.本研究ではまず,要求をゴール指向要求記述(ゴールモデル)上に記述し,
本研究で導入する整形プロセスを経ることで,システムを構成するために必要なControl loop をゴールモデル上で同定する.その後,システムの構成要素として同定したControl loopを,
システム構成を表現するコンフィギュレーション上に配備する.
本章においては,まず,ゴールモデル上でControl loopを同定するためのゴールモデル整形 プロセスについて論じる.その後,ゴールモデルからシステム構成を導出するコンフィギュ レーション決定法と,これらを用いたソフトウェア開発法について言及する.
システム構成
(コンフィギュレーション)
Control loops ゴールモデル 整形後
要求記述
(ゴールモデル)
プロセス 整形
図3.1.Control loopの位置づけ