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
© Copyright 2025 ExpyDoc