5.8.1 実験概要
実験4では,提案手法の進化時の影響分析に対する有効性を評価する実験を実施した.具体 的には,実験3を実施した4名の被験者に,従来のk’-toolと提案手法により構築されたc-tool
それぞれのソフトウェア進化における設計モデル上の影響範囲を分析してもらった.本実験で は,進化における影響範囲を分析するためのソフトウェア開発用文書として,要求が記述され たゴールモデルと,主要クラスと主要クラス間の関係が記載されたクラス図により構成される クラス設計書を用意した.k’-toolのゴールモデルとしては実験1で用いた図5.2の初期(整 形前)ゴールモデルを用い,c-toolのゴールモデルとしては実験1で整形した図5.7の整形後 ゴールモデルを用いた.本分析実験では,進化範囲の分析は被験者のソフトウェア開発スキ ルにも大きく依存すると考え,k’-toolとc-toolの分析実験を同一の被験者4名により実施し た.ただし,k’-tool分析の前にc-tool分析においてゴールモデルを再整形すると,k’-tool分析 での進化影響範囲同定においても提案手法の効果を与えてしまうと考えられるため,k’-tool,
c-toolの順で分析を実施した.
k’-toolとc-toolいずれの進化分析においても,ゴールモデル上で進化に対する要求を分析・
記述した後に,クラス設計書上での追加・変更箇所を同定してもらった.c-toolにおける分析 では,3.5節で示したプロセスに従って,進化に対する要求分析後にゴールモデルを再整形し,
その後,goccにより生成される情報をもとに,クラス設計書上での追加・変更箇所を同定し てもらった.
得られた分析結果は,各被験者ごとに各進化における追加・変更が必要なクラスとして指摘 したクラス数をもとに正解率を算出し,それらをk’-toolとc-toolとで比較することにより評 価した.正解率には再現率(recall)を用い,以下の数式により算出した.ここで,Cは追加・
変更すべきクラスの集合であり,P は被験者により同定されたクラスの集合である.
正解率(recall)= |C∩P|
|C|
5.8.2 実験結果
本実験の実験結果として,まず,各被験者の各進化ごとの正解率を表5.11に示す.表5.11 の実験結果からは,進化2と進化3において,各被験者ともc-toolの正解率が向上しているこ とが分かる.これは,1つはc-toolの方が,k-toolよりも,追加・変更すべきクラス数が少な いことによるものである.k’-toolにおいては修正すべきクラスが,MVCモデル内の各要素,
つまりModel,View,Control内の共通クラスに広く分散する傾向があったのに対して,c-tool においては追加すべき機能に閉じたControl loopの追加や修正にとどまっていた.
別の理由としては,c-toolにおいてはMVCモデルにおけるModelに関する変更影響を分析 できたことが挙げられる.k’-toolに対する分析については,全被験者とも,ビューの更新と追 加すべき操作(MVCにおけるViewとController)については,追加・修正が必要なクラスや 変更内容の多くを指摘することができたが,進化2,進化3で必要となるModelの変更につい
表5.11.実験4における正解率r(=recall)
■k’-tool
被験者A 被験者B 被験者C 被験者D 平均
|C| |P| r |P| r |P| r |P| r |P| r 進化1 6 2 0.33 3 0.50 3 0.50 2 0.33 2.5 0.42 進化2 34 5 0.15 6 0.18 8 0.24 12 0.35 7.75 0.23
進化3 8 3 0.38 4 0.50 3 0.38 1 0.125 2.75 0.34
■c-tool
被験者A 被験者B 被験者C 被験者D 平均
|C| |P| r |P| r |P| r |P| r |P| r 進化1 2 2 1.00 2 1.00 2 1.00 2 1.00 2 1.00
進化2 31 24 0.77 27 0.87 27 0.87 25 0.81 25.75 0.83
進化3 6 4 0.67 6 1.00 6 1.00 4 0.66 5.0 0.83
ては,ほとんど指摘することができなかった.一方,提案する開発プロセスを用いたc-toolに 対する分析においては,実験2で示したように,ゴールモデル上での変更箇所から,変更の可 能性のあるControl loopを特定することが可能であり,例えば,進化2におけるKAOSモデ ルの各要素・関係への属性情報追加など,KAOSモデル管理に関するControl loopにも変更 の可能性があることを被験者が認識することができた.ただし,c-toolにおいても,すべての 変更箇所を同定できるわけではなかった.例えば進化2,進化3において,属性情報が追加さ れることに伴い,KAOSモデル管理に関するControl loop内で,XML形式への保存,XML 形式からの読込に関するクラスのメソッドを修正する必要があるが,このKAOSモデルデー タの永続化に関するクラス修正を指摘できない被験者もいた.従って,提案手法においては,
システムを構成するControl loopとゴールモデルの構造を関連付けることで,変更影響のある
Control loopを同定することができるが,各Control loop内での影響の同定は,設計者のスキ
ルに依存する部分が残ることも分かった.
さらに,共通変数を定義しているクラスの存在も正解率の違いの要因として挙げられる.実 験2で示したように,k’-toolの進化においては共通変数を扱うクラスに対しても変更影響が 及ぶが,共通変数の変更をクラス設計書上で分析するのは容易ではなく,変更の影響範囲の把 握を難しくしていると言える.