50 likes | 340 Views
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
E N D
Detecting Software Modularity Violations Sunny Wong, YuanfangCai, 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| : 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.