Detecting Software Modularity Violations

Slides:



Advertisements
Similar presentations
ソースプログラム・アーカイブ・サイト -関数依存グラフと検索への応用-
Advertisements

High-Impact Defects: A Study of Breakage and Surprise Defects
Riding the Design Wave II
シーケンシャルパターンマイニングに基づくオブジェクト指向プログラムのための 欠陥検出手法
ファイルの同時変更パターンと変更差分の分析による 論理的結合関係の自動抽出
ソースコードの編集内容を入力とした ソフトウェア部品の自動検索
SSR 論文調査 Safety and Cyber-Physical Systems
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
肥後 芳樹, ○石尾 隆, 渡邊 結, 出張 純也, 畑 秀明, 三宅 達也, 水野 修, 丸山 勝久
ネストした仮想化を用いた VMの安全な帯域外リモート管理
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
ソフトウェアリポジトリにおける コードクローン作成者・利用者関係分析手法とその適用
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
オブジェクト指向プログラムのための 動的結合メトリクスの評価
類似するコーディングパターンの 利用状況調査ツールの提案
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
ソードコードの編集に基づいた コードクローンの分類とその分析システム
ポインタ解析におけるライブラリの スタブコードへの置換の効果
リモートホストの異常を検知するための GPUとの直接通信機構
ソフトウェアを取り巻く環境の変化がメトリクスに及ぼす影響について
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
ソフトウェア部品分類手法への コンポーネントランク法の応用
仮想メモリを用いた VMマイグレーションの高速化
限られた保存領域を使用する Javaプログラムの実行トレース記録手法の 提案と評価
Javaプログラムの変更を支援する 影響波及解析システム
複数の相関のある情報源に対するベイズ符号化について
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
コンポーネントランク法を用いたJavaクラス分類手法の提案
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
コードクローン編集者数に着目した開発履歴の分析
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
ソフトウェアプロダクト集合に対する 派生関係木の構築
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
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
依存関係の局所性を利用した プログラム依存グラフの 効率的な構築法
保守請負時を対象とした 労力見積のためのメトリクスの提案
ソースコードの差分を用いた関数呼び出し パターンの抽出手法の提案と実装
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
時間連続性を考慮した 動画からの人物の姿勢推定
メソッドの同時更新履歴を用いたクラスの機能別分類法
プログラム依存グラフの一貫性検査に基づく欠陥候補の検出手法
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
ソースコードの編集状況に応じた ソフトウェア部品の自動推薦システム
ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
オブジェクト指向開発における フォールト発生早期予測手法の 一提案
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
コードクローン解析に基づく デザインパターン適用候補の検出手法
回帰テストにおける実行系列の差分の効率的な検出手法
Don’t Touch My Code! Examining the Effects of Ownership on Software Quality C. Bird (マイクロソフト・リサーチ) et al. 担当者:吉田(NAIST)
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
FSE/ASE勉強会 A10:Software Maintenance II
プログラム依存グラフを用いた ソースコードのパターン違反検出法
Generating Obstacle Conditions for Requirements Completeness
Presentation transcript:

Detecting Software Modularity Violations Sunny Wong, Yuanfang Cai, Miryung Kim, and Michael Dalton Proc. International Conference on Software Engineering, pp.411-420, 2011.

背景・目的 ソフトウェアの改修によるモジュール性の低下 → ソフトウェアの欠陥や,改修コストの増加を引き起こす ソフトウェアの改修によるモジュール性の低下 → ソフトウェアの欠陥や,改修コストの増加を引き起こす モジュール性を低下させている原因: Modularity Violations → 二つのコンポーネントが,独立のものとして設計されている にもかかわらず,常に同時に変更されている場合 Modularity Violations を検出する手法 (CLIO) を提案 Structural Coupling (同時に変更すべきモジュール) の検出 Design Rule Theory および Design Structure Matrix (DSM) を利用 C. Y. Baldwin and K. B. Clark: “Design Rules, Vol. 1: The Power of Modularity”, MIT Press, 2000. Change Coupling (実際に同時に変更されたモジュール) の検出 プロジェクトの変更履歴を解析 Modularity Violations の検出 Structural Coupling と Change Coupling を比較 出典: S.Wong et al. : “Detecting Software Modularity Violations”, Proc. ICSE, pp.411-420, 2011.

Design Structure Matrix (DSM) クラスをインタフェースと実装にわけ,クラス図の関連等から依存関係を抽出 レイヤ1: 他のモジュールへ依存していない レイヤ2: レイヤ1にのみ依存 レイヤ3: 上位レイヤにのみ依存 レイヤ4: 上位レイヤにのみ依存 出典: S.Wong et al. : “Detecting Software Modularity Violations”, Proc. ICSE, pp.411-420, 2011.

Design Rule Hierarchy DSMをクラスタリングし,あるモジュールが変更された際の関連指数を抽出 μ = 0: 同時に変更されない 複数のモジュールに依存する場合, 0と1の間になる 変更対象 (Room クラス) μ = 1: 常に同時に変更される 出典: S.Wong et al. : “Detecting Software Modularity Violations”, Proc. ICSE, pp.411-420, 2011.

評価 適用対象 Hadoop Common (15 releases, 137-222KLOC) http://hadoop.apache.org/common/ Eclipse JDT (10 releases, 13-64KLOC) http://www.eclipse.org/jdt/ 適用結果 |V| |V∩R| |V∩M| |CV| Pr Eclipse JDT 399 55 104 161 40% Hadoop 231 81 71 152 66% |V| : CLIO が検出したバイオレーションの総数 |V∩R| : 自動リファクタリングツール(*)が検出したものと一致した数 (*) M. Kim et al. : “Automatic Inference of Structural Changes for matching across program versions”, Proc. ICSE, pp.333-343, 2007. |V∩M| : 手動で確認し,問題があると判断した数 (|V∩R| は含まない) |CV| : 問題があると判断したバイオレーションの総数 (|V∩R| + |V∩M| ) Pr : 問題があると判断したバイオレーションの割合 (|CV| / |V|) 出典: S.Wong et al. : “Detecting Software Modularity Violations”, Proc. ICSE, pp.411-420, 2011.