FSE/ASE2011 勉強会 F12 Mining 2012/03/21 井垣 宏(大阪大学 楠本研究室)

Slides:



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

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
Copyright by Rich & Giro
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
先端論文紹介ゼミ Role-based Context-specific Multiagent Q-learning
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
Research Session 17: Formal Verification
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
ソフトウェアリポジトリにおける コードクローン作成者・利用者関係分析手法とその適用
プログラム実行履歴を用いたトランザクションファンクション抽出手法
アイテムセットマイニングを利用した コードクローン分析作業の効率向上
Semantic Web 輪読会 2005年12月20日 濱崎雅弘 産業技術総合研究所
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
オブジェクト指向プログラムのための 動的結合メトリクスの評価
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
開発履歴を用いたコードクローン作成者と利用者の 分析手法とその適用
コード片の生存期間がコードクローンと欠陥修正の有無に与える影響分析
Authoring Environment for Story-based Digital Educational Games
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
WWW上の効率的な ハブ探索法の提案と実装
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードの生存期間を考慮したコードクローンと欠陥修正の関係調査
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
アスペクト指向言語のための 独立性の高いパッケージシステム
不確実データベースからの 負の相関ルールの抽出
コードクローン編集者数に着目した開発履歴の分析
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
多様なプログラミング言語に対応可能な コードクローン検出ツール CCFinderSW
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
統合開発環境によって表現された 言語機構によるコードのモジュール化
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
依存関係の局所性を利用した プログラム依存グラフの 効率的な構築法
保守請負時を対象とした 労力見積のためのメトリクスの提案
dcNavi:デバッグ支援のための グラフベース推薦システム
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
アスペクト指向言語のための視点に応じた編集を可能にするツール
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
メソッドの同時更新履歴を用いたクラスの機能別分類法
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
オブジェクト指向開発における フォールト発生早期予測手法の 一提案
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
コードクローン解析に基づく デザインパターン適用候補の検出手法
Don’t Touch My Code! Examining the Effects of Ownership on Software Quality C. Bird (マイクロソフト・リサーチ) et al. 担当者:吉田(NAIST)
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
FSE/ASE勉強会 A10:Software Maintenance II
Detecting Software Modularity Violations
Generating Obstacle Conditions for Requirements Completeness
Presentation transcript:

FSE/ASE2011 勉強会 F12 Mining 2012/03/21 井垣 宏(大阪大学 楠本研究室)

On the Congruence of Modularity and Code Coupling Fabian Beck, Stephan Diehl(University of Trier, Germany)

概要 複雑なシステムは適切な設計原理に則ってモジュール化されるべきである ただし,実際にどのような設計原理が利用されているかは分からない 16のOSSを対象として結合則の関連を分析することで,どのような設計原理が適用されているかを調査した 以上

対象となる設計原理 Low Coupling and High Cohesion Information Hiding Conway’s Law Others reuse-release equivalence principle pipes-and-filters aspect-oriented …. Conway’s Law: 組織構成とアプリケーションモジュールは一貫性を確保すべき

対象となる結合則 Structural Dependencies Fan-Out Similarity 継承/呼び出し等の直接的なクラス間依存関係 Fan-Out Similarity 間接的なStructural Dependencies Evolutional Coupling 良く同時に修正されるクラス Code Clones クローン片を共有するクラス Code Ownership 特定の開発者が開発しているクラス Semantic Similarity そのクラスを説明する語彙が似通っているクラス ConwayとCode OwnershipやSDとLow coupling

Research Questions RQ1.異なる結合則がお互いにどのように関連しているか? どの設計原理が適用されているかを直接評価することは困難である 結合則の集合としてソフトウェアプロジェクトを抽象化し,設計原則との関係を分析した

R.Q.1 結合則間の関係を表したマトリックス 基本的にはまばらに相関を示している Figure 1: Correlation between coupling graphs

R.Q.2 結合則をグラフ化し,システムの階層構造(モジュール構造)との関連を評価した 結合則を満たすクラス同士が含まれるパッケージの距離を用いて算出 同じパッケージ内の関係だとcohesionが上がる 違うパッケージの関係だとcouplingが上がる. in out それぞれについて算出し,cohesion/coupling + cohesionを計算したものがこのbox plotになる Type1クローンは同じパッケージに多い. SDの関係にあるクラスは 同一か近接パッケージであることが多い 同時に更新されるのは近接パッケージが多い Figure 2: Coupling-modularity congruence and average class coupling-modularity congruence

R.Q.3 モジュール種別によって異なった結合則-モジュール構造関係を示す FO.InhIは共通するクラスの拡張か実装をしているクラス間の関係を表す Figure 3: Coupling-modularity congruence for the most frequently occurring package types

Discussion Conway’s Lawはあまり用いられていない コードクローンはシステムのモジュール構造と明確に関連している ただし特定のどの設計原則に基づくものであるのかは不明である 設計支援ツールはモジュール種別等のコンテキストに応じて開発者のサポートをすべきである

Fuzzy Set and Cache-based Approach for Bug Triaging Ahmed Tamrawi,Tung Thanh Nguyen, Jafar M. Al-Kofahi, Tien N. Nguyen Electrical and Computer Engineering Department Iowa State University

この研究の貢献 スケーラブルで効率的で正確なBug triaging Approachの提案 バグ修正活動の現場発見支援 定量的に既存手法と比較した バグ修正活動の現場発見支援 最近バグ修正をした開発者は次の修正者になり易い バグ修正の専門知識を特徴付ける語彙の特定 Bug triaging 発見されたバグを適切な修正者に割り当てる手法

Motivating Example EclipseのBug reportにおいて,James Moody氏がVCM関連のバグを引き受けていた CVS repository connection path ソフトウェアシステムは複数の技術的観点を持つ 技術的観点は複数の技術用語と関連付けられる. バグレポートは複数の技術的観点と関連がある ある開発者がしばしば特定の技術的観点に関するバグを修正しているとき そのような開発者をその観点におけるバグ修正専門家であるとする repository resource editor

Bugzieのアプローチ Bugzie 学習用バグレポート Fixer J 新しいバグレポート Fixer J Fixer A CVS repository Bugzie connection path CVS repository connection path Fixer J 修正者と技術用語の関連,修正時期を学習 Fixer J Fixer J Fixer J repository resource repository resource repository resource editor repository resource editor editor editor 学習用バグレポート 技術用語との関連だけでなく,最近修正活動をしている開発者をフィルタすることで 精度を犠牲にすることなく時間効率をあげることができる Initial Training Recommending Updating Fixer ??? 技術用語をBugzie に投入 適切な修正者 を推薦 CVS repository connection path Fixer J 新しいバグレポート

評価実験 準備 Step1: Bugzieを用いて初期訓練データセットをもとに学習 すべてのバグレポートを時系列で11のフレームに分割し,最初のフレームを初期訓練データセットとする Step1: Bugzieを用いて初期訓練データセットをもとに学習 Step2:前Stepの結果にもとづいて,次のフレームのバグレポートを対象としてBugzieが修正者群を推薦 Step3:実際の修正者が推薦結果に含まれていれば”hit”とし,推薦結果を新たな学習データとする Step4:Step2,3を全フレーム分繰り返し

実験結果(1/4) 全てのプロジェクトにおいてキャッシュサイズ40%以下程度で精度が最大化している 精度を上げるのにキャッシュサイズを増やす必要がない Term cacheとDeveloper cacheはフルサイズでもたなくても良い

実験結果(2/4) 修正者と関連のある技術用語の数が3~20程度で精度が最大化している 精度を上げるのに開発者に関連する技術用語数を増やす必要がない Fixerごとの関連する語彙をどの程度保持するか

実験結果(3/4) developer cacheと技術用語数が精度にどのような影響を与えるか

実験結果(4/4):既存手法との比較 精度は全ての手法に優っており,処理時間もほぼ優っている

Conclusions fuzzy setとcacheを利用した自動bug triagingツール「Bugzie」を提案した