コンポーネントランク法を用いた java クラス分類手法の提案
DESCRIPTION
コンポーネントランク法を用いた Java クラス分類手法の提案. コンピュータサイエンス専攻 井上研究室 博士前期課程 2 年 中塚 剛. ソフトウェア・クラスタリング. ソフトウェア理解が必要になる場面 ソフトウェア保守 ソフトウェア部品の再利用 ⇒ ソフトウェア・クラスタリング システム内の各モジュール(クラス・ファイル)を分類して,サブシステムへ分解 システム構造に注目 依存関係が密な部分をまとめる [1] サブシステムが高凝集・低結合になるように⇒サブシステムごとに理解しやすい. 依存関係グラフ. モジュール. 依存関係. サブシステム - PowerPoint PPT PresentationTRANSCRIPT
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
コンポーネントランク法を用いた Java クラス分類手法の提
案
コンピュータサイエンス専攻井上研究室 博士前期課程 2 年
中塚 剛
2007/2/19 修士論文発表会 2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソフトウェア・クラスタリングソフトウェア理解が必要になる場面
ソフトウェア保守ソフトウェア部品の再利用
⇒ ソフトウェア・クラスタリングシステム内の各モジュール(クラス・ファイル)を分類して,サブシステムへ分解システム構造に注目
依存関係が密な部分をまとめる [1]
サブシステムが高凝集・低結合になるように⇒サブシステムごとに理解しやすい
依存関係
モジュール
サブシステム(クラスタ)[1] B. S. Mitchell and S. Mancoridis: “On the Automatic Modularization of Software Systems Using the
Bunch Tool”, IEEE Transaction on Software Engineering, vol. 32, no. 3, pp. 193-208, 2006
依存関係グラフ
2007/2/19 修士論文発表会 3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソフトウェア・クラスタリングの問題点
遍在モジュール( omnipresent module ) [2]
多くのモジュールと依存関係のあるモジュール
いわゆるライブラリ・ユーティリティなど特定のサブシステムに入れたくない
全てのサブシステムに入れたい→「遍在」クラスタリング対象から外す必要がある
従来の遍在モジュール特定法次数がある閾値より高いもの
単純すぎる十分な考察が行われていない
遍在モジュール
[2] H. A. Müller et al.: “A Reverse Engineering Approach To Subsystem Structure Identification”, Journal of Software Maintenance: Research and Practice, Vol. 5, No. 4, pp. 181–204, 1993.
2007/2/19 修士論文発表会 4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
コンポーネントランク法Java ソフトウェア部品検索システム SPARS-J で使用
ソフトウェア部品再利用のために,過去に作成されたクラス・インターフェースを検索検索結果のランク付けに使われる
相互利用関係に基づいて部品の重要度を表すコンポーネントランク値( CRV )を測定
多くの部品に利用されている部品は重要重要な部品に利用されている部品は重要
CRV が高い部品は遍在モジュールの候補ではないか
2007/2/19 修士論文発表会 5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
研究の目的従来のソフトウェア・クラスタリング・アルゴリズムの解を改良するための,コンポーネントランク法を利用した遍在モジュール特定手法の提案
クラスタリング・アルゴリズムは Bunch の実装を利用
新たな遍在モジュール特定手法を利用したソフトウェア・クラスタリング手法を提案
2007/2/19 修士論文発表会 6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソフトウェア・クラスタリング・システム Bunch
高凝集・低結合に基づくソフトウェア・クラスタリングを実装したシステム [1]
最適なクラスタリング結果を探す探索問題として実装目的関数を定義して,目的関数値が最も高い結果を探すクラスタリング結果の数は O(n!) (n:頂点数 ) →NP困難
– 局所探索法である山登り法( hill climbing)を用いて近似解を求める
4種類の遍在モジュールを定義supplier: 入次数が平均次数の 3倍以上client: 出次数が平均次数の 3倍以上central: supplierかつ client
library: 出次数が 0
APIを公開[1] B. S. Mitchell and S. Mancoridis: “On the Automatic Modularization of Software Systems Using the Bunch Tool”, IEEE Transaction on Software Engineering, vol. 32, no. 3, pp. 193-208, 2006
2007/2/19 修士論文発表会 7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Bunch の目的関数 MQ
凝集度と結合度のトレードオフを関数化各クラスタでのトレードオフ: CF (Cluster Factor)
あるクラスタ i において ( 1 i k≦ ≦ ) ( k: クラスタ数)
: クラスタ i 内の辺の数 : クラスタ i からクラスタ j への辺の数
CF の合計値: MQ (Modularization Quality)
)()(5.0
)0(0
1,,
otherwiseCF k
jii
ijjii
i
i
i
k
iiCFMQ
1
i
ji ,
クラスタに関連する辺のうち,クラスタ内に存在する辺の割合
2007/2/19 修士論文発表会 8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Bunch API を用いたクラスタリング・システム
----------------------------------------------------------------------
ソースコードファイル
AnalyzerBunch API
Omnipresent Modules Detector
依存関係グラフ
出力
遍在モジュール
・ソースコードを分析・依存関係グラフを作成
・遍在モジュールを決定
・依存関係グラフを受け取る・遍在モジュールを受け取る・アルゴリズム中のパラメータの決定⇒ 解の出力
どのように遍在モジュールを特定すればよいか ⇒実験によって決定
改良
改良
2007/2/19 修士論文発表会 9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
遍在モジュール特定手法決定のための実験
遍在モジュール特定条件を 47 個作成Bunch オリジナル条件
遍在モジュールを考慮しないものBunch オリジナル条件での閾値を 2, 2.5, 3.5 に変えたものCRV を使用したものsupplier
入次数 CRV
平均以上
平均以上 平均以上
平均 1.5 倍以上 平均以上
平均 2 倍以上 平均以上
平均 2.5 倍以上 平均以上
平均 3 倍以上 平均以上
central
入次数 出次数 CRV
supplier かつ client
平均 3 倍以上
平均 3 倍以上 平均以上
library
入次数 出次数 CRV
0
0 平均以上
平均以上 0 平均以上
× × ×
・ CRV は平均以上で固定( CRV 平均以上のモジュールは全モジュールの約20% )・入次数条件を厳しくしていくことで, supplier を減らしていく
CRV は使えないのでオリジナル条件で固定
supplier client central library
入次数 出次数 入次数 出次数 出次数
平均 3 倍以上 平均 3 倍以上
平均 3 倍以上
平均 3 倍以上 0
2 種類の実験によって比較
client
出次数
平均 3 倍以上
・ supplier と client の条件両方満たしているもの・オリジナル条件に CRVを足したもの
・オリジナル条件・出次数 0 でも,ある程度使用されていないと library とはいいにくい⇒CRV と入次数の条件を追加
2007/2/19 修士論文発表会 10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験の概要実験 1
クラスタリング結果の見易さ・理解し易さをメトリクスによって評価後述
実験 2クラスタリング結果の実際の構造に対する評価適当と思われる解(ベンチマーク)を作成して比較割愛
2007/2/19 修士論文発表会 11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験 1 :方針クラスタリング結果の理解しやすさを評価
平均 CF 値が高く,遍在モジュール数が少ない(多すぎない)条件が優れている
平均 CF 値:全てのクラスタの CF の平均値– CF :各クラスタにおいての,凝集度と結合度のトレードオフ– 平均 CF 値が高ければ,クラスタ間に辺が少なくなり,結果が
見やすくなる遍在モジュール数
– 遍在モジュール数が多いほど,平均 CF 値が上がりやすくなる» 遍在モジュールはサブシステムに属さないため理解しにく
い– 従来手法では若干多すぎる(約 40% )
» library (出次数 0 のモジュール)が多すぎる
2007/2/19 修士論文発表会 12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
0
0.2
0.4
0.6
0.8
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
クラスタリング対象モジュール数(割合) CF平均 値 調和平均値
実験 1 :結果と考察オープン・ソース・システム 15 個での平均値
CRV:1
CRV:1, in:1
CRV:1, in:1.5
CRV:1, in:2
CRV:1, in:2.5
CRV:1, in:3
CRV無し
Bunch オリジナル条件 supplier client central library
入次数 出次数 入次数 出次数 出次数
平均 3 倍以上 平均 3 倍以上
平均 3 倍以上
平均 3 倍以上 0
遍在モジュールに特定されなかったモジュールの割合
遍在モジュールが減ったが平均 CF 値が悪化している(トレードオフの関係)
supplier client central library
入次数 出次数 入次数 出次数 出次数
平均 3.5 倍以上
平均 3.5 倍以上
平均 3.5 倍以上
平均 3.5 倍以上 0
•CRV を使うと,クラスタリング対象モジュール数,平均 CF 値共に改善している条件が存在•supplier の条件を厳しくしていくにつれて,クラスタリング対象モジュール数が増加,平均 CF値は減少•ただし,調和平均値が改善されている
supplier 条件
クラスタリング対象モジュール数と平均 CF 値のどちらを優先するか
⇒ クラスタリング対象モジュール数を優先
理由:遍在モジュールとして除去されるより,少し見づらくてもクラスタに分類されたほうが理解しやすい
C32 が最も良い•central は, supplier かつ client でないと, Bunch API にモジュールが除去されるバグが生じる( C33 , C34 は不適切)
supplier client central library
入次数 CRV 出次数 入次数 出次数 CRV 入次数 出次数 CRV
平均 2 倍以上 平均以上 平均 3 倍以上 supplier かつ client 平均以上 0 平均以上
2007/2/19 修士論文発表会 13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験のまとめCRV を利用すると,従来手法より良い結果を得られる実験 1 ,実験 2 を通して評価が良かった条件:C32
supplier: 入次数が平均次数の 2 倍以上, CRV 平均以上client: 出次数が平均次数の 3 倍以上central: supplier かつ client
library: 出次数が 0 ,入次数平均以上, CRV 平均以上
2007/2/19 修士論文発表会 14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
クラスタリング結果の例GNUJpdf( 25モジュール)に適用した例
libraries
suppliers
centrals PDFTest
PDFGraphics
PDFImage
BoundingBox PDFJob PDFOutline
PDFAnnot
PDFOutput
PDFStringHelper
PDFPage PDFObject
PDFDocumentPDFPage$procset
TestPanel HelpFrame TestMenuBar
PDFTest
StringTooLongException
BoundingBox PDFJob
PDFFont
PDFGraphics
PDFStream
PDFImage
PDFJob$graphic PDFInfo PDFOutlinePDFAnnot
PDFCatalog
PDFPageList
PDFBorder
PDFXref
PDFOutput
libraries suppliers
clients PDFTest
PDFGraphics
PDFImage
PDFPage
PDFJob PDFPageList
PDFAnnot
TestMenuBarHelpFrameTestPanelPDFStringHelperStringTooLongExceptionPDFXref PDFObject
PDFDocumentPDFOutput PDFTest
BoundingBox PDFJob
PDFFont
PDFGraphics
PDFStream
PDFImage
PDFPage
PDFOutline
PDFPage$procset PDFAnnot
PDFJob$graphic PDFInfo
PDFCatalog
PDFPageList
PDFBorder
提案手法
Bunch オリジナル
2007/2/19 修士論文発表会 15Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめと今後の課題コンポーネントランク法を用いて遍在モジュールを特定することによって,より優れたクラスタリング・システムを構築可能
遍在モジュールが多すぎず,高凝集・低結合今後の課題
さらなる条件の追加( CRV を変動させる)遍在モジュールを考慮した距離測定メトリクスの提案より大規模なシステムでのベンチマーク評価