オブジェクト指向プログラムのための 動的結合メトリクスの評価

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

OWL-Sを用いたWebアプリケーションの検査と生成
シーケンス図の生成のための実行履歴圧縮手法
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
機能実現期間の測定による プログラマ能力の実験的評価
SSR 論文調査 Safety and Cyber-Physical Systems
情報伝播によるオブジェクト指向プログラム理解支援の提案
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
変数のスコープの設計判断能力 を育成するプログラミング教育
クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価
ソフトウェアリポジトリにおける コードクローン作成者・利用者関係分析手法とその適用
CKメトリクスを用いてリファクタリングの 効果を予測する手法の提案
プログラム実行履歴を用いたトランザクションファンクション抽出手法
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
複雑度と機能量に基づくアプリケーションフレームワークの実験的評価
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
CKメトリクスに基づくリファクタリングの 効果予測手法の提案と実装
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
重複コードと非重複コードにおける 修正頻度の比較
ソフトウェア部品分類手法への コンポーネントランク法の応用
限られた保存領域を使用する Javaプログラムの実行トレース記録手法の 提案と評価
Javaプログラムの変更を支援する 影響波及解析システム
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
コンポーネントランク法を用いたJavaクラス分類手法の提案
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
プログラム理解におけるThin sliceの 統計的調査による有用性評価
コードスメルの深刻度がリファクタリングの実施に与える影響の実証的研究
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
UMLの概要とオブジェクト指向の基本概念
コーディングパターンの あいまい検索の提案と実装
インスタンスの型を考慮した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,
Managing non-functional uncertainty via model-driven adaptivity
福岡工業大学 情報工学部 情報工学科 種田研究室 于 聡
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
類似した振舞いのオブジェクトの グループ化による クラス動作シナリオの可視化
静的情報と動的情報を用いた Javaプログラムスライス計算法
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
メソッドの同時更新履歴を用いたクラスの機能別分類法
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
JAVAを対象とした 動的複雑度メトリクスの実験的評価
オブジェクト指向開発における フォールト発生早期予測手法の 一提案
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
コードクローン解析に基づく デザインパターン適用候補の検出手法
回帰テストにおける実行系列の差分の効率的な検出手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
Detecting Software Modularity Violations
Presentation transcript:

オブジェクト指向プログラムのための 動的結合メトリクスの評価 竹原 元康 井上研究室

発表内容 研究の背景 動的複雑度メトリクス 実験計画の作成 評価実験と分析 まとめ 2018/11/20 修士論文発表会

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

背景(2/3) 動的複雑度メトリクス ソフトウェアの動的複雑度(実行時のソフトウェアの振舞い)の重要性が指摘されている 背景(2/3) 動的複雑度メトリクス ソフトウェアの動的複雑度(実行時のソフトウェアの振舞い)の重要性が指摘されている Yacoubらによるオブジェクト指向ソフトウェアに対する動的な複雑度メトリクス[1] 特定の入力データに対する評価 クラス間メッセージの送受信回数 状態遷移の複雑さ 提案のみがされており有効性についての評価が不十分 [1]Yacoub S., Ammar H. and Robinson T.: ``Dynamic Metrics for Object Oriented Designs'', Proceedings of the Sixth International Symposium on  Software Metrics,pp. 50-61 (1999). 2018/11/20 修士論文発表会

背景(3/3) 評価の重要性 ソフトウェア工学の分野で数多くの手法やツールが提案されてきているが,その有効性についての具体的な証拠はほとんど収集されていない[2]. Empirical Software Engineering 実際のソフトウェア開発現場や研究機関において様々 な状況(コンテキスト)を設定し,理論や技術の適用実験 (ソフトウェア工学実験)を行い,その妥当性や有効性な どを検証する [2] W. F. Tichy, N. Harbermann and L. Prechelt: "Future directions in software engineering," ACM SIGSOFT, Software Engineering Notes, Vol.18, No.1, pp.35- 48(1993). 2018/11/20 修士論文発表会

本研究の目的 実験計画の作成と遂行 動的メトリクスと静的メトリクスの関係 動的メトリクスが以下の品質特性を評価可能であるか 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2018/11/20 修士論文発表会

静的メトリクス:CBO CBO(Coupling Between Object classes) クラス間の結合による複雑度[3]  クラス間の結合による複雑度[3] 計測対象クラスが「結合」しているクラスの数 結合とは,計測対象クラスが他のクラスの属性やメソッドを用いていることを意味する 設計書やソースコードから収集される情報のみで計測 [3] Chidamber S. R. and Kemerer C. F.: ``A Metrics Suite for Object Oriented Design'', IEEE Trans. on Software Eng., Vol. 20, No. 6, pp. 476-493 (1994). 2018/11/20 修士論文発表会

動的メトリクス(1/2) EOC(Export Object Coupling) 入力データxを与えたときの実行中にオブジェクト間  で交換されるメッセージの総数のうちOiからOjに送  信されるメッセージの割合 2018/11/20 修士論文発表会

動的メトリクス(2/2) OQFS(Object Request for Service) 入力データxを与えたときの実行中にオブジェクト間で交 換されるメッセージの総数のうちOiから他の全てのオブ ジェクトに送信されるメッセージの割合 入力データの発生確率との積をとりその総和をとる 2018/11/20 修士論文発表会

品質特性評価への利用 動的メトリクスがソフトウェアの品質特性を評価するのに有効であると予想している 保守性 理解容易性 再利用性 エラーの伝播と発生可能性 2018/11/20 修士論文発表会

実験計画(1/2) 動的メトリクスと静的メトリクスの関係 OQFS vs CBO MM[4] ICP[5] [4]Briand L. C., Devanbu P. and Melo W. L.,: `` An Investigation into Coupling Measures for C++,'' Proceedings of the 19th International Conference on Software Engineering(ICSE97), Boston, pp. 412-421(1997). [5]Lee, Y., Liang B. and Wu S.: ``Measuring the Coupling and Cohesion of an Object-Oriented Program Based on Information Flow,'' Proceedings of International Conference on Software Qualiy, Maribor, Slovenia (1995). 2018/11/20 修士論文発表会

実験計画(2/2) 保守性,理解容易性 再利用性 エラーの伝播と発生可能性 コンポーネントを作成する際に,発生したエラーを修正するのに要した時間 再利用性 同一仕様を基に作成された複数のクラスを交換し,動作の可否 エラーの伝播と発生可能性 あるコンポーネントにエラーが存在し,調査した結果,他のコンポーネントが原因  →コンポーネントを作成する際に,発生したエラー数 2018/11/20 修士論文発表会

評価実験ー概要 実験の実施:   2000年7月に行われたある企業の新人研修におけるJavaプログラム開発プロジェクト(オークションシステムの作成) 被験者 (研修生)は事前に, オブジェクト指向開発について講習を受けている 1チームは4~5名の研修生からなり, 7チームが独立して同じシステムの開発を行う 各チームのメンバーがオークションシステムを構築する上で必要なコンポーネントを作成する(29種類) 2018/11/20 修士論文発表会

収集データ ソースコード エラーデータ 154個のクラスから収集されたエラーデータの総数は, 80個である メトリクス値を計測するためのデータ 1時間ごとにソースコードを自動的に収集 エラーデータ 設計レビュー,コードレビュー,テストにおいて発見されたエラーと各エラーの修正に要した時間に関する   データ 記入フォームに被験者が記入する 154個のクラスから収集されたエラーデータの総数は, 80個である 2018/11/20 修士論文発表会

評価方法 動的メトリクスと静的メトリクス間の関係 品質特性の評価 OQFS vs CBO 実験により作成された複数のクラスに対して,動的メトリクス(OQFS)と静的メトリクス(CBO)を計測し,それらの間の相関関係の評価 品質特性の評価 保守性,理解容易性,エラーの伝播と発生可能性   各クラスで発生したエラー数,修正時間と動的メトリクス(OQFS)の間の関係を調べる 2018/11/20 修士論文発表会

使用した入力データ ユーザ10人:A~J A:会員登録→B:会員登録→A:出品→ C:会員登録→B:出品→ C:入札… 30個の入力データを用意した 入力データの発生確率は各3.3% 2018/11/20 修士論文発表会

計測結果 動的 静的 AuctionClient 48.9 10 AuctionManagerImpl 35.9 13 AuctionServer 0.1 1 ・ メトリクス クラス 最大値 最小値 平均値 動的 67.4 4.5 静的 13 3.0 2018/11/20 修士論文発表会

動的及び静的メトリクスの相関 両メトリクス間の相関係数=0.73 あまり強く相関していない 両メトリクスは異なった複雑度を評価している(Yacoubらの予想を補完) 動的メトリクスと静的メトリクスはどちらがよりよくソフトウェアの複雑度を評価しているかの検証が必要 2018/11/20 修士論文発表会

品質特性の評価 保守性,理解容易性,エラーの伝播と発生可能性に関しては,動的メトリクスのほうがより良い評価を与える 動的 静的 エラー数 0.60 0.56 エラー修正時間 0.57 0.43 有意水準 1% 2018/11/20 修士論文発表会

メトリクスの利用方法 動的メトリクスを使用することで,静的に複雑なクラスから更に複雑なクラスを判別可能 Bの方がより注意が必要 A B 2018/11/20 修士論文発表会

まとめ Yacoubらの提案したオブジェクト指向ソフトウェアに対する動的複雑度メトリクスの有効性についての実験計画をし,評価を行った Chidamberらの静的メトリクスとの間の相関関係はあまり高くなく,静的な複雑さとは異なる観点の複雑さを評価していることを確認 今後の課題として,同様の実験を他のコンテキストにおいて行う 2018/11/20 修士論文発表会