大規模ソフトウエアに対するUMLモデルを利用したリフ

UMLモデルを対象とした
リファクタリング候補検出手法の提案と実現
井上研究室
増田敬史
2015/10/1
1
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
リファクタリング
ソフトウェアの外部的振る舞いを保ったままで内部の
構造を改善する[1]
– 将来の機能追加やデバッグ,再利用に備えることが可能
– 近年モデルに対するリファクタリングの研究が活発[2]
– デザインパターンを利用したリファクタリング
修正
関連を除去
修正
クラスを抽象化
[1] M.Fowler.Refactoring:Improving the Design of Existing Code.Addison Wesley,1999
[2] T.Mens,G.Taentzer,and D.Muller.Challenges in Model Refactoring.
Technical Report from University of Mons-Hainaut,Belgium,2005.
2
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2015/10/1
デザインパターン
過去の開発者が経験的に得た汎用的な
設計パターン[3]
– 様々なプログラムで再利用可能
– リファクタリングの際にデザインパターンを利用可能
– デザインパターン適用には慎重な検討が必要
設計が複雑になる
パターンA
パターン適用
パターンB
修正
[3] E.Gamma,R.Helm,R.Johnson,and J.Vlissides.Design Patterns Elements of
Reusable Object-Oriented Software.Addison Wesley,1999.
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
2015/10/1
例題:成績管理・表示システム(1/2)
複数のGUIから入力・閲覧が可能
データが変更されると,他のGUIに変更を通知する
成績データセット
書込
読込
読込
A
君
B
君
C
君
算
数
89
44
33
国
語
88
99
29
理
科
39
59
89
表形式のGUI
変更通知
変更通知
100
90
80
70
60
50
40
30
20
10
0
書込
書込
読込
変更通知
A君
算数
国語
理科
B君
C君
変更通知
A君
B君
C君
棒グラフ形式のGUI
円グラフ形式のGUI
表と円グラフ間の変更通知を作り忘れている
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
2015/10/1
例題:成績管理・表示システム(2/2)
Observerパターンを適用
成績データセットは,書込が発生すると他のGUIに
変更を通知
成績データセット
書込
変更通知
A
君
B
君
C
君
算
数
89
44
33
国
語
88
99
29
理
科
39
59
89
表形式のGUI
関連
なし
100
90
80
70
60
50
40
30
20
10
0
読込
算数
国語
理科
A君
B君
A君
関連
なし
B君
C君
C君
棒グラフ形式のGUI
円グラフ形式のGUI
円グラフが追加されても,他のGUIを変更する必要がない
5
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2015/10/1
リファクタリング候補検出
デザインパターンが適用可能な箇所には設計上の
欠点がある可能性がある
• 開発者が設計を確認可能
• 将来変更が必要になるかを検討しリファクタリングする
問題点 膨大な数のクラスを持つソフトウェアから
人間の目で探すことは困難
デザインパターン適用可能箇所を自動的に
検出する仕組みが必要
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
2015/10/1
提案手法の概要
UMLモデルを解析しリファクタリング候補を提示
手順1.デザインパターン適用可能箇所を検出し
UMLモデルを修正
手順2.UMLモデルから検出した箇所を抽出
検証
提案手法
UMLモデル全体
検出した部分
開発者
適用するデザインパターン
7
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2015/10/1
手順1. デザインパターン適用可能箇所を検出し
UMLモデルを修正
例 成績管理・表示システムにObserverパターンを適用
クラス間の相互関連を除去
ToukeiData
ToukeiData
ToukeiData
ToukeiData
Observer
Observer
Hyou
Table
BouGraph
BarGraph
EnGraph
設計が複雑
(a)ツール適用前のUMLモデル
Table
BarGraph
Hyou
EnGraph
BouGraph
(b)ツール適用後のUMLモデル
一般にUMLモデルはXMLで表現される
⇒XMLの木構造を利用しUMLモデルを解析
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
2015/10/1
UMLモデルの解析・修正
XMLパーサを作成し,UMLモデルのXML表現を解析する
例:Observerパターンの適用条件
クラスが相互に関連している
ToukeiData
Hyou
BouGraph
(a)UMLモデル
<xml>
<Class>
<name = “ToukeiData”>
</Class>
<Class>
<name = “Hyou”> 適用条件に合致
関連記述を修正
</Class>
<AssociationData>
<GeneralizationData>
<AssociationEnd>
<ParentClass>
<Classname==“ToukeiData”>
“ToukeiData”>
<Classname
<AssociationEnd>
<ChildClass>
<Classname==“Hyou”>
“Hyou”>
<Classname
</AssociationData>
</GeneralizationData>
</xml>
9
(b)UMLモデルのXML表現
2015/10/1
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
手順2. 修正した箇所のUMLモデルを抽出
デザインパターンを適用すべき箇所をUMLモデル全体
から抽出
– デザインパターンが適用できるクラスのあるパッケージを抽出
– 小さなUMLモデルで適用箇所を確認できる
packageA
packageA
packageB
packageB
packageB
packageC
pacakgeB
packageC
XML表現を書き換え
適用箇所を抽出
10
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2015/10/1
実験概要
•
目的
–
•
実装したツールのリファクタリング候補特定に対する有
効性を確認
利用するソフトウェア
–
JUDE
•
•
UMLモデルとXML表現の変換を行う
実験対象
–
–
–
デジタル時計のUMLモデル(7クラス,1パッケージ)
オージス総研が開発した業務システムのUMLモデル
(104クラス,12パッケージ)
ANTLR3.0のUMLモデル(178クラス,12パッケージ)
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
2015/10/1
デジタル時計のUMLモデル
典型的なリファクタリング例[4]
適用したデザインパターン:Observerパターン
結果:TimeSourceクラスとClockDriverクラスの
相互関連を解消
UMLモデルに対するデザインパターン適用可能
箇所の検出・修正機能を確認
(a) ツール適用前
(b) ツール適用後
[4] R.C.Martin.Agile Software Development.Pearson Education,2004
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
2015/10/1
業務システムのUMLモデル
大規模な教務関係業務システム
適用したデザインパターン:Observerパターン
結果:104クラス中3組のクラスに適用条件合致
リファクタリング候補を検討
検出箇所が柔軟な設計を持つことがわかった
開発者が検出箇所に注目しリファクタリングを検討可能
RishuuServiceクラスがJugyouKamokuクラス
とGakuseiクラスのデータを管理
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
2015/10/1
考察と評価
•
提案手法によりリファクタリング候補の検出
を行うことが可能
– 開発者は検出された小さな範囲で設計を確認
可能なことがわかった
•
他のデザインパターンについても同様の支
援を行うことが出来ると考えられる
14
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2015/10/1
まとめと今後の課題
• UMLモデル上でのリファクタリング候補
検出手法を提案
– デザインパターン適用可能箇所を
開発者に提示
– 実装したツールを用いた適用実験
• 今後の課題
– より多くの例題に適用し、定量的に評価
15
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2015/10/1
最後までありがとうございました
16
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2015/10/1