Document

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.