270 likes | 430 Views
複雑度と機能量に基づくアプリケーションフレームワークの実験的評価. † 藤原 晃 † 楠本 真二 † 井上 克郎 ‡ 大坪 稔房 ‡ 湯浦 克彦 † 大阪大学大学院基礎工学研究科 ‡ 株式会社日立製作所ビジネスソリューション事業部. 研究の背景. 再利用のひとつとしてフレームワークを用いた手法が注目されている. フレームワーク:アプリケーション開発者がカスタマイズできるアプリケーションの半完成品 開発組織によっては現場独自の再利用の仕組みを確立しており,フレームワークを用いた再利用手法を新たに導入するのは難しい.
E N D
複雑度と機能量に基づくアプリケーションフレームワークの実験的評価複雑度と機能量に基づくアプリケーションフレームワークの実験的評価 †藤原 晃 †楠本 真二 †井上 克郎 ‡大坪 稔房 ‡湯浦 克彦 †大阪大学大学院基礎工学研究科 ‡株式会社日立製作所ビジネスソリューション事業部
研究の背景 • 再利用のひとつとしてフレームワークを用いた手法が注目されている. • フレームワーク:アプリケーション開発者がカスタマイズできるアプリケーションの半完成品 • 開発組織によっては現場独自の再利用の仕組みを確立しており,フレームワークを用いた再利用手法を新たに導入するのは難しい. • フレームワークを用いた再利用手法の効果を定量的に示す必要がある.
研究の目的 • フレームワークを用いた再利用手法の効果を定量的に評価する. • 工数が削減されるか、品質は向上するか. • 対象:特定のアプリケーション開発(地方自治体向け窓口アプリケーション) • 開発言語:Java
B1:データベース更新プログラム 画面遷移制御部 B11:データ 問い合わせ B12:問い合わせ 結果表示 B13: データの更新 (b)地方自治体B向けアプリケーション 従来の再利用手法 • 各画面単位で処理プログラムを部品化して再利用する. A1:データベース更新プログラム 画面遷移制御部 A11:データ 問い合わせ A12:問い合わせ 結果表示 A13: データの更新 (a)地方自治体A向けアプリケーション
データベース更新 プログラム B 地方自治体B固有の パラメータ フレームワークを用いた再利用手法 • 画面単位の処理プログラムの部品化に加え,画面遷移単位の処理をフレームワーク化し,再利用する • 選択,検索,更新,参照などの処理が持つ画面遷移のタイプごとにフレームワーク化 データベース更新 プログラム A F1: フレームワーク データベース更新フレームワーク 地方自治体A固有の パラメータ データ 問い合わせ 問い合わせ 結果表示 データの更新
評価方法 • 従来の再利用手法とフレームワークを利用した場合の再利用とで工数や品質に関する比較を行う. (ケーススタディ1) 類似アプリケーションを複数開発する場合. (ケーススタディ2) あるアプリケーションに対して機能を順次追加していく場合. • 使用するメトリクス • 工数: オブジェクト指向ファンクションポイント(OOFP)→機能量 • 品質: ChidamberとKemererのメトリクス(C‐Kメトリクス)→複雑度 • 計測対象:Javaソースコード
機能量(1)OOFP(Object Oriented Function Points§) • ファンクションポイント(FP)法に基づいて,オブジェクト指向ソフトウェアの開発プロジェクトのサイズを見積る手法. • FP法では論理ファイル(内部論理ファイル:ILF、外部インターフェイスファイル:EIF)とトランザクション(外部入力:EI、外部出力:EO、外部照会:EQ)から計測 • OOFPでは論理ファイル(ILF、EIF)とトランザクション(Service Request: SR)から計測する. • 論理ファイル → クラス • トランザクション(SR) → メソッド §:G.Caldiera, G.Antoniol, R.Fiutem, C.Lokan, “Definition and Experimental Evaluation of Function Points for Object-Oriented Systems”, IEEE, 1998
機能量(2)OOFPの算出方法(1) OOFP=OOFPILF+OOFPEIF+OOFPSR • 各内部論理ファイル(ILF)について、データ項目数(DET)とレコード種類数(RET)からOOFPILFを算出. • 各外部インターフェイスファイル(EIF)について、データ項目数(DET)とレコード種類数(RET)からOOFPEIFを算出. • 各トランザクション(SR)について、データ項目数(DET)と関連ファイル数(FTR)からOOFPSRを算出. • 合計し、アプリケーションのOOFPを算出.
機能量(3)OOFPの算出方法(2) • JavaソースコードからOOFPを算出するため、OOFPの各概念とJavaの要素を以下のように対応させた。
複雑度ChidamberとKemererのメトリクス • オブジェクト指向プログラムの複雑度をあらわす6つのメトリクス.
ケーススタディ1 評価対象 • 4つの機能 fa, fb, fc, fdの各機能を持つアプリケーション. • C : フレームワークを用いて開発したアプリケーション • P : フレームワークを用いずに開発したアプリケーション
ケーススタディ1 概要 • 同機能を持つアプリケーションの開発において,フレームワークを用いる場合と用いない場合の機能量と複雑度を比較する. フレームワークあり Ca フレームワークなし Pa 機能 fa FW FW:フレームワーク C:フレームワークを用いたアプリケーション P:フレームワークを用いないアプリケーション ・・・計測範囲
ケーススタディ1:OOFP計測結果 ※各クラスのOOFP値の総和 • フレームワークを用いている方が機能量が少ない. • →フレームワークによって開発工数が削減されている.
ケーススタディ1:複雑度計測結果(1) ※各クラスのメトリクス値の平均 • フレームワークありの方がクラス間のメソッド呼び出しが多い. • →呼び出すメソッドはすべてフレームワーク内のクラスのメソッドなので、フレームワーク部分の品質が高ければ影響は少ない.
ケーススタディ1:複雑度計測結果(2) ※各クラスのメトリクス値の平均 フレームワークを用いたほうがクラスあたりのメソッド数が多い. →属性のset, get(処理が1行程度のメソッド)がほとんどなので品質にあまり影響しない.
ケーススタディ2 評価対象 • アプリケーションに機能を fa, fb, fc, fdの順に追加していく. • C : フレームワークを用いて開発したアプリケーション • P : フレームワークを用いずに開発したアプリケーション
フレームワークあり Ca+b フレームワークなし Pa+b 機能 fa+b ケーススタディ2 概要 • システムに新たに機能を追加する時の機能量、複雑度の変化をフレームワークを用いる場合と用いない場合で比較する フレームワークあり Ca フレームワークなし Pa FW 機能 fa FW:フレームワーク C:フレームワークを用いたアプリケーション P:フレームワークを用いないアプリケーション ・・・計測範囲
75 89 327 234 165 235 ケーススタディ2:OOFP計測結果(1) ※各クラスのOOFP値の総和 機能 fcを追加する時にフレームワークありのほうがOOFP値が高い →機能 fcとフレームワークの適合性がよくない 機能 fcの機能にあわせたコンポーネントが必要
ケーススタディ2:OOFP計測結果(2) ※各クラスのOOFP値の総和 fa+b+c+dではフレームワークを用いた方がOOFP値が小さい →全体ではフレームワークを用いたことにより開発工数が削減された
1.2 0.9 2.3 1.1 0.9 0.9 13.4 1.7 -0.1 0.3 -1.8 1.9 ケーススタディ2:複雑度計測結果(1) ※各クラスのメトリクス値の平均 フレームワークありで機能fcを追加したとき、RFC値の増加量が大きい →機能fcは処理するデータ項目が多いため、フレームワーククラスのメソッド呼び出しが多くなっている。
ケーススタディ2:複雑度計測結果(2) ※各クラスのメトリクス値の平均 fa+b+c+dではフレームワークありの方がメソッド呼び出しが多い →呼び出しているメソッドはすべてフレームワークに含まれるクラスのメソッドなので、フレームワーク部分の品質が高ければ影響は少ない.
-1.3 -0.1 8.5 -0.2 -3.0 8.2 0.2 0.0 0.7 0.0 -0.4 0.6 ケーススタディ2:複雑度計測結果(3) ※各クラスのメトリクス値の平均 フレームワークありで機能fcを追加するときにLCOM値の増加量が多い →処理するデータ項目が多いため、属性のset,getメソッドが多い
-1.3 -0.1 8.5 -0.2 -3.0 8.2 0.2 0.0 0.7 0.0 -0.4 0.6 ケーススタディ2:複雑度計測結果(4) ※各クラスのメトリクス値の平均 フレームワークなしで機能fdを追加するときにLCOM値の増加量が多い →機能fdでは複雑な画面処理があり、その処理を行うクラスでLCOMが高かった. フレームワークありの場合、この画面処理はフレームワークが行っている。
ケーススタディ2:複雑度計測結果(5) ※各クラスのメトリクス値の平均 fa+b+c+dではフレームワークを用いたほうがクラスあたりのメソッド数が多い. →属性のset, get(処理が1行程度のメソッド)がほとんどなので品質にあまり影響しない.
まとめ • 主な結果 • ChidamberとKemererのメトリクス,OOFPを用いてフレームワークの効果を評価する手法を検討した. • 実際のアプリケーションを対象にOOFPとC-Kメトリクスを用いて機能量と複雑さの計測と評価を行った. • 全体的にフレームワークを用いた方が機能量が少なく、複雑度が高くなる • フレームワーク部分の品質が高ければアプリケーション全体の品質には影響が少ないと考えられる • 今後の課題 • 計測結果の妥当性の評価. • ファンクションポイントを用いた機能量の計測.