JAVAを対象とした 動的複雑度メトリクスの実験的評価

Slides:



Advertisements
Similar presentations
1 プリミティブ Web サービスの 入出力データに関する一考察 2005 年 3 月 21 日 松江工業高等専門学校 情報工学科 奈良先端科学技術大学院大学 情報科学研究科 越田高志 電子情報通信学会 2005年総合 大会.
Advertisements

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
OWL-Sを用いたWebアプリケーションの検査と生成
シーケンス図の生成のための実行履歴圧縮手法
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
情報伝播によるオブジェクト指向プログラム理解支援の提案
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
プログラムの動作を理解するための技術として
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
オブジェクト指向プログラムのための 動的結合メトリクスの評価
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
暗黙的に型付けされる構造体の Java言語への導入
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
重複コードと非重複コードにおける 修正頻度の比較
Javaプログラムの変更を支援する 影響波及解析システム
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
動的データ依存関係解析を用いた Javaプログラムスライス手法
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
UMLの概要とオブジェクト指向の基本概念
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
コーディングパターンの あいまい検索の提案と実装
インスタンスの型を考慮したJavaプログラムの実行経路の列挙手法の提案
Q3 On the value of user preferences in search-based software engineering: a case study in software product lines Abdel Salam Sayyad (West Virginia University,
福岡工業大学 情報工学部 情報工学科 種田研究室 于 聡
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
類似した振舞いのオブジェクトの グループ化による クラス動作シナリオの可視化
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
アスペクト指向言語のための視点に応じた編集を可能にするツール
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
オブジェクト指向開発における フォールト発生早期予測手法の 一提案
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
コードクローン解析に基づく デザインパターン適用候補の検出手法
木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
Detecting Software Modularity Violations
Presentation transcript:

JAVAを対象とした 動的複雑度メトリクスの実験的評価 竹原元康†,神谷年洋†,楠本真二†,井上克郎†‡,毛利幸雄* †大阪大学 ‡奈良先端科学技術大学院大学 *日本ユニシス株式会社

ソフトウェアサイエンス研究会 (SIGSS) 背景(1/2) オブジェクト指向開発方法論による ソフトウェア開発の活発化 オブジェクト指向ソフトウェアの開発管理を効果的に行うためには各工程においてメトリクスを使用し,品質や進捗状況の定量的な評価が必要 Chidamberらの複雑度メトリクス(C&Kメトリクス) 6種類のメトリクスを定義し,それぞれのメトリクスでクラス間の結合や継承関係等の複雑さを計測 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 背景(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). 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 本研究の目的 動的メトリクスの有効性を実験的に評価 動的メトリクス値と静的メトリクス値の関係 動的メトリクス値が以下の品質特性を間接的に評価可能であるか 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 静的メトリクスと動的メトリクス 静的メトリクス 設計書やソースコードから収集される情報のみで計測 動的メトリクス ソフトウェアの実行時の振舞いから収集される情報で計測 例 クラスC1がクラスC2のある1つのメソッドを実行時に10回呼ぶ 静的= 1 動的= 10 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 静的メトリクス:CBO CBO(Coupling Between Object classes)  クラス間の結合による複雑度 計測対象クラスが「結合」しているクラスの数 結合とは,計測対象クラスが他のクラスの属性やメソッドを用いていることを意味する 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 動的メトリクス(1/5) シナリオ x : 入力データ、イベントによって実行されるオブジェクト間の一連の 相互作用 シナリオの確率 PSx : すべてのシナリオに対するあるシナリオの実行頻度 シナリオプロファイル : シナリオの実行確率の集合 メッセージ集合 Mx(Oi,Oj) : シナリオxの実行の間オブジェクトOiからオブジェクトOjに送信され るメッセージ集合 シナリオ内の総メッセージ MTx : シナリオxの実行の間オブジェクト間で交換されるメッセージの総数 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 動的メトリクス(2/5) 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 動的メトリクス(3/5) Export Object Coupling; EOCx(oi,oj) シナリオxの実行中に交換されるメッセージの総数のうちOi からOjに送信されるメッセージの割合 Object Request for Service(OQFS) から他の全てのオブジェクトに送信されるメッセージの割合 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 動的メトリクス(4/5) Import Object Coupling; IOCx(oi,oj) シナリオxの実行中に交換されるメッセージの総数のうち OiがOjから受信するメッセージの割合 Object Response for Service(OPFS) Oiが他の全てのオブジェクトから受信するメッセージの 割合 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 動的メトリクス(5/5) シナリオプロファイルとの統合 シナリオの実行確率を導入することでメトリクスを拡張することが可能 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) OQFSの具体例 A B C A =3/4×100=75(%) B =1/4×100 =25(%) C=0 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 品質特性評価への利用 動的メトリクスがソフトウェアの品質特性を評価するのに有効であると予想している 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 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.46 53.53 45.47 CBO 13.5 23.1 28.8 17.3 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 問題点 メトリクスの計測値の比較に過ぎない 動的複雑度と静的複雑度の違い 動的メトリクスと静的メトリクス間の相関関係 品質特性評価可能性 4つの品質特性を間接的に評価するものとの相関関係 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 評価実験 ー目的 動的メトリクスと静的メトリクス間の関係 実験により作成された複数のクラスに対して,動的メトリクスのOQFSと静的メトリクスのCBOを計測し,それらの間の相関関係の評価 動的メトリクスによるエラーの伝播と発生可能性についての評価 各クラスで発生したエラー数とOQFSの間の関係を調べる 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 評価実験ー概要(1/3) 実験データ:   2000年7月に行われたある企業の新人研修におけるJavaプログラム開発プロジェクト(オークションシステムの作成) 被験者 (研修生)は事前に, オブジェクト指向開発について講習を受けている 1チーム4~5名からなるチームで, 全36チームが独立して同じシステムの開発を行う 各グループのメンバーがオークションシステムを構築する上で必要なコンポーネントを作成する(22種類) 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 評価実験ー概要(2/3) コンポーネント 内容 AuctionClient オークションクライアント AuctionServer オークションサーバ MemberImpl 会員オブジェクトの実装 BidDialog 入札ダイアログ : 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 評価実験ー概要(3/3) 会員登録処理: 実際に出品あるいは入札を行うために会員登録を行うための処理 出品処理: ユーザが売却したい品物をオークション(競売)にかけるために行う処理 入札処理: 客が出品物の入札価格を書いて提出するための処理 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 収集データ(1/2) プログラムコード メトリクス値を計測するためのデータ 1時間ごとにプログラムコードを自動的に収集 エラーデータ 設計レビュー,コードレビュー,テストにおいて発見されたエラーと各エラーの修正に要した時間に関する   データ 記入フォームに被験者が記入する 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 収集データ(2/2) 分析対象データ 被験者である36チームのソースコードのうち仕様を満たしている24チーム分 収集された各クラスのソースコードの行数は, 50行程のものから500 行程度のものまで幅広く分散している(空白行や, コメント行も含まれる) これらの137個のクラスから収集されたエラーデータの総数は, 258個である 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 使用したシナリオ ユーザ3人:A~C  A:会員登録→B:会員登録→A:出品→  C:会員登録→B:出品→ C:入札 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 計測結果 OQFS CBO AuctionClient 67.6 14 AuctionManagerImpl 18.3 18 AuctionServer 0.7 1 ・ メトリクス クラス 最大値 最小値 平均値 標準偏差 OQFS 70.7 0.27 14.9 16.0 CBO 19 1 6.97 5.54 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) OQFSとCBOの相関 OQFSとCBOの相関係数=0.59 あまり強く相関していない OQFSとCBOは異なった複雑度を評価している(Yacoubらの評価を補完) CBOは,アプリケーションが実行された際のオブジェクト間の頻繁なメッセージの送受信を考慮していないため 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) エラー数との相関 メトリクスとエラー数との相関はあまり高くない 動的メトリクスを計測する際に,シナリオを1つしか用いていないため さらにシナリオを増やし,かつ1個あたりの実行シナリオを長いものにして,再実験を行う必要がある OQFS エラー数 0.51 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 個々のクラス特性 設計段階での静的な結合度とシナリオの上で実行させたときの結合度の比較 どのクラスがどれぐらいの割合でアクセスされるかを判断する指標となる 動的メトリクスは,各クラス別の特性を見る上でも重要な役割を果たしている 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 考察 シナリオの追加 シナリオ確率の導入 規模と機能による分類 他の静的メトリクスとの比較 クラスのError-Pronenessの評価 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) シナリオの追加(1/2) ある程度長いシナリオで計測することが必要 全てのクラスが,実行時に少なくとも1回使用されるようなシナリオの集合が必要 実行時に使用されないクラスの存在 そのクラスの動的メトリクスは計測されないので,評価することが不可能 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) シナリオの追加(2/2) 更に20シナリオ程度追加予定 例:ユーザ10人:A~J A:会員登録→B:会員登録→A:出品→ C:会員登録→D:会員登録→D:入札→ C:出品→B:出品→E:会員登録→E:出品→ E:入札・ ・ ・ 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) シナリオ確率の導入 シナリオ1つに対して実験を行ったために,シナリオの確率は導入されていない シナリオの確率の設定 設計段階において考えられるユースケースに基づいて設定することが必要 設計段階でどのようなユースケースがあるのかを詳細に考慮することが必要 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 規模と機能による分類 動的メトリクスの値が高いクラス AuctionClientクラス AuctionManagerImplクラス クラス分類を行った上での評価の必要性 これらの2つのクラスと同程度の規模のクラス 同種の機能を持つクラス 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) 他の静的メトリクスとの比較 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) 引数の個数によって重み付けされた他のクラスの呼び出されたメソッドの数 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

クラスのError-Pronenessの評価 アプリケーションの品質の評価 複数のメトリクスを合わせて評価することが必要 例:ロジスティック回帰分析を用いた手法 あるクラスにエラーが存在するかどうかを予測するときに,複数のメトリクスを指標として使用し,分析する方法 動的メトリクスを指標の1 つに加えることでエラー予測の精度が上昇すると考えられる 精度が上昇すれば開発工程の期間の短縮にもつながり,アプリケーションの保守,管理にも役立つと考えられる 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)

ソフトウェアサイエンス研究会 (SIGSS) まとめ Yacoubらの提案したオブジェクト指向ソフトウェアに対する動的複雑度メトリクスの有効性についての実験的評価を行った Chidamberらの静的メトリクスとの間の相関関係はあまり高くなく,静的な複雑さとは異なる観点の複雑さを評価していることを確認 今後,分析を引き続き行い更に詳細な評価をする予定 2019/05/22 ソフトウェアサイエンス研究会 (SIGSS)