JAVAを対象とした 動的複雑度メトリクスの実験的評価 竹原元康†,神谷年洋†,楠本真二†,井上克郎†‡,毛利幸雄* †大阪大学 ‡奈良先端科学技術大学院大学 *日本ユニシス株式会社 背景(1/2) オブジェクト指向開発方法論による ソフトウェア開発の活発化 オブジェクト指向ソフトウェアの開発管理を効果的に行 うためには各工程においてメトリクスを使用し,品質や 進捗状況の定量的な評価が必要 Chidamberらの複雑度メトリクス(C&Kメトリクス) 6種類のメトリクスを定義し,それぞれのメトリクスでクラス間 の結合や継承関係等の複雑さを計測 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 1 背景(2/2) ソフトウェアの動的複雑度(実行時のソフトウェアの振舞い) の重要性が指摘されている Yacoubらによるオブジェクト指向ソフトウェアに対する動的な 複雑度メトリクス† 特定の入力データシナリオに対する評価 クラス間メッセージの送受信回数 状態遷移の複雑さ 提案のみがされており有効性についての評価が不十分 †Yacoub S., Ammar H. and Robinson T.: ``Dynamic Metrics for Object Oriented Designs'', Proceedings of the Sixth International Symposium on Software Metrics(METRICS99), Boca Raton, Florida USA, pp. 50-61 (1999). 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 2 本研究の目的 動的メトリクスの有効性を実験的に評価 動的メトリクス値と静的メトリクス値の関係 動的メトリクス値が以下の品質特性を間接的に 評価可能であるか 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 3 静的メトリクスと動的メトリクス 静的メトリクス 設計書やソースコードから収集される情報のみで計測 動的メトリクス ソフトウェアの実行時の振舞いから収集される情報で計測 例 クラスC1がクラスC2のある1つのメソッドを実行時に10回呼ぶ 静的= 1 動的= 10 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 4 静的メトリクス:CBO CBO(Coupling Between Object classes) クラス間の結合による複雑度 計測対象クラスが「結合」しているクラスの数 結合とは,計測対象クラスが他のクラスの属性 やメソッドを用いていることを意味する 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 5 動的メトリクス(1/5) シナリオ x : 入力データ、イベントによって実行されるオブジェクト間の一連の 相互作用 シナリオの確率 PSx : すべてのシナリオに対するあるシナリオの実行頻度 シナリオプロファイル : シナリオの実行確率の集合 メッセージ集合 Mx(Oi,Oj) : シナリオxの実行の間オブジェクトOiからオブジェクトOjに送信され るメッセージ集合 シナリオ内の総メッセージ MTx : シナリオxの実行の間オブジェクト間で交換されるメッセージの総数 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 6 動的メトリクス(2/5) x x (T 1) O1 O 2 O3 x(T 2) O 2 O3 O1 2 x (T 3) O1 O 2 1 2015/10/01 Mx ソフトウェアサイエンス研究会 (SIGSS) MTx 2 7 動的メトリクス(3/5) Export Object Coupling; EOCx(oi,oj) シナリオxの実行中に交換されるメッセージの総数のうちOi からOjに送信されるメッセージの割合 | {Mx (oi, oj ) | oi, oj O oi oj} | EOCx (oi, oj ) 100 MTx Object Request for Service(OQFS) シナリオxの実行中に交換されるメッセージの総数のうちOi から他の全てのオブジェクトに送信されるメッセージの割合 K OQFSx(oi ) | { Mx(oi, oj ) | oi, oj O oi oj} | j 1 MTx 100 K EOCx(oi, oj ) j 1 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 8 動的メトリクス(4/5) Import Object Coupling; IOCx(oi,oj) シナリオxの実行中に交換されるメッセージの総数のうち OiがOjから受信するメッセージの割合 IOCx (oi, oj ) | {Mx (oj , oi ) | oi, oj O oi oj} | 100 MTx Object Response for Service(OPFS) シナリオxの実行中に交換されるメッセージの総数のうち Oiが他の全てのオブジェクトから受信するメッセージの K | { Mx(oj , oi ) | oi, oj O oi oj} | 割合 j 1 OPFSx(oi ) MTx 100 K IOCx(oi, oj ) 2015/10/01 ソフトウェアサイエンス研究会 j 1 (SIGSS) 9 動的メトリクス(5/5) シナリオプロファイルとの統合 シナリオの実行確率を導入することでメトリクスを拡張 することが可能 |X | IOC(oi, oj ) PSxIOCx(oi, oj ) x 1 |X | OPFS(oi ) PSx OPFSx(oi ) x 1 |X | EOC(oi, oj ) PSxEOCx(oi, oj ) x 1 |X | OQFS(oi ) PSx OQFSx(oi ) x 1 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 10 OQFSの具体例 A B M2 A =3/4×100 =75(%) B =1/4×100 =25(%) M3 C=0 M1 2015/10/01 C M4 ソフトウェアサイエンス研究会 (SIGSS) 11 品質特性評価への利用 動的メトリクスがソフトウェアの品質特性を 評価するのに有効であると予想している 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 12 Yacoubらの評価 Yacoubらはペースメーカーシステムの5つのコンポーネン ト(RS, CD, CG, AR, VTと名付けられているいる)に対して 動的,静的それぞれのメトリクスを適用した シナリオの個数=2 RS CD CG AR VT OPFS 0.08 0.5 0.25 42.35 56.82 OQFS 0.27 0.27 0.46 53.53 45.47 CBO 13.5 23.1 28.8 17.3 17.3 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 13 問題点 メトリクスの計測値の比較に過ぎない 動的複雑度と静的複雑度の違い 動的メトリクスと静的メトリクス間の相関関係 品質特性評価可能性 4つの品質特性を間接的に評価するものとの相関関係 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 14 評価実験 ー目的 動的メトリクスと静的メトリクス間の関係 実験により作成された複数のクラスに対して,動的メト リクスのOQFSと静的メトリクスのCBOを計測し,それ らの間の相関関係の評価 動的メトリクスによるエラーの伝播と発生可能性 についての評価 各クラスで発生したエラー数とOQFSの間の関係を調 べる 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 15 評価実験ー概要(1/3) 実験データ: 2000年7月に行われたある企業の新人研修にお けるJavaプログラム開発プロジェクト(オークション システムの作成) 被験者 (研修生)は事前に, オブジェクト指向開発につい て講習を受けている 1チーム4~5名からなるチームで, 全36チームが独立し て同じシステムの開発を行う 各グループのメンバーがオークションシステムを構築す る上で必要なコンポーネントを作成する(22種類) 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 16 評価実験ー概要(2/3) コンポーネント 内容 AuctionClient オークションクライアント AuctionServer オークションサーバ MemberImpl 会員オブジェクトの実装 BidDialog 入札ダイアログ : 2015/10/01 : ソフトウェアサイエンス研究会 (SIGSS) 17 評価実験ー概要(3/3) 会員登録処理: 実際に出品あるいは入札を行うために会員登 録を行うための処理 出品処理: ユーザが売却したい品物をオークション(競 売)にかけるために行う処理 入札処理: 客が出品物の入札価格を書いて提出するた めの処理 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 18 収集データ(1/2) プログラムコード メトリクス値を計測するためのデータ 1時間ごとにプログラムコードを自動的に収集 エラーデータ 設計レビュー,コードレビュー,テストにおいて発見さ れたエラーと各エラーの修正に要した時間に関する データ 記入フォームに被験者が記入する 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 19 収集データ(2/2) 分析対象データ 被験者である36チームのソースコードのうち仕様を満 たしている24チーム分 収集された各クラスのソースコードの行数は, 50 行程のものから500 行程度のものまで幅広く分 散している(空白行や, コメント行も含まれる) これらの137個のクラスから収集されたエラー データの総数は, 258個である 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 20 使用したシナリオ ユーザ3人:A~C A:会員登録→B:会員登録→A:出品→ C:会員登録→B:出品→ C:入札 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 21 計測結果 クラス メトリクス AuctionClient AuctionManagerImpl AuctionServer ・ ・ OQFS CBO 2015/10/01 OQFS 67.6 18.3 0.7 ・ ・ CBO 14 18 1 ・ ・ 最大値 最小値 平均値 標準偏差 70.7 19 0.27 1 14.9 6.97 16.0 5.54 ソフトウェアサイエンス研究会 (SIGSS) 22 OQFSとCBOの相関 OQFSとCBOの相関係数=0.59 あまり強く相関していない OQFSとCBOは異なった複雑度を評価し ている(Yacoubらの評価を補完) CBOは,アプリケーションが実行された際 のオブジェクト間の頻繁なメッセージの送 受信を考慮していないため 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 23 エラー数との相関 エラー数 OQFS 0.51 メトリクスとエラー数との相関はあまり高くない 動的メトリクスを計測する際に,シナリオを1つし か用いていないため さらにシナリオを増やし,かつ1個あたりの実行シ ナリオを長いものにして,再実験を行う必要があ る 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 24 個々のクラス特性 20 18 16 14 12 CBO 10 8 6 4 2 0 0 10 20 30 40 50 60 70 80 OQFS 設計段階での静的な結合度とシナリオの上で実行させた ときの結合度の比較 どのクラスがどれぐらいの割合でアクセスされるかを判断する指 標となる 動的メトリクスは,各クラス別の特性を見る上でも重要な 役割を果たしている 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 25 考察 シナリオの追加 シナリオ確率の導入 規模と機能による分類 他の静的メトリクスとの比較 クラスのError-Pronenessの評価 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 26 シナリオの追加(1/2) ある程度長いシナリオで計測することが必要 全てのクラスが,実行時に少なくとも1回使用され るようなシナリオの集合が必要 実行時に使用されないクラスの存在 そのクラスの動的メトリクスは計測されないので,評価 することが不可能 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 27 シナリオの追加(2/2) 更に20シナリオ程度追加予定 例:ユーザ10人:A~J A:会員登録→B:会員登録→A:出品→ C:会員登録→D:会員登録→D:入札→ C:出品→B:出品→E:会員登録→E:出品→ E:入札・ ・ ・ 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 28 シナリオ確率の導入 シナリオ1つに対して実験を行ったために,シナリ オの確率は導入されていない シナリオの確率の設定 設計段階において考えられるユースケースに基づい て設定することが必要 設計段階でどのようなユースケースがあるのかを詳 細に考慮することが必要 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 29 規模と機能による分類 動的メトリクスの値が高いクラス AuctionClientクラス AuctionManagerImplクラス クラス分類を行った上での評価の必要性 これらの2つのクラスと同程度の規模のクラス 同種の機能を持つクラス 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 30 他の静的メトリクスとの比較 BriandらのMM(Method-Method interaction) LiらのMPC(Message Passing Coupling) HitzらのCLC(Class Level Coupling)と OLC(Object Level Coupling) LeeらのICP(the Information Flow-Based Coupling) 引数の個数によって重み付けされた他のクラスの呼 び出されたメソッドの数 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 31 クラスのError-Pronenessの評価 アプリケーションの品質の評価 複数のメトリクスを合わせて評価することが必要 例:ロジスティック回帰分析を用いた手法 P( X 1, X 2,・・・ 1 ) 1 exp((C 0 C1 X 1 C 2 X 2 ・・・ )) あるクラスにエラーが存在するかどうかを予測するときに,複数 のメトリクスを指標として使用し,分析する方法 動的メトリクスを指標の1 つに加えることでエラー予測の精度が 上昇すると考えられる 精度が上昇すれば開発工程の期間の短縮にもつながり,アプリ ケーションの保守,管理にも役立つと考えられる 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 32 まとめ Yacoubらの提案したオブジェクト指向ソフトウェア に対する動的複雑度メトリクスの有効性について の実験的評価を行った Chidamberらの静的メトリクスとの間の相関関係 はあまり高くなく,静的な複雑さとは異なる観点 の複雑さを評価していることを確認 今後,分析を引き続き行い更に詳細な評価をす る予定 2015/10/01 ソフトウェアサイエンス研究会 (SIGSS) 33
© Copyright 2024 ExpyDoc