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.
© Copyright 2024 ExpyDoc