モデルに基づく デザインパターンの進化

モデルに基づく
デザインパターンの進化
下滝 亜里† 林 晋平†† 青山 幹雄†††
無所属
東京工業大学
††† 南山大学
†
††
1
発表の流れ
•
•
•
•
•
•
•
•
研究の背景
課題とアプローチ
パターン進化のモデル
パターン構造のモデルとメタモデル
モデルに基づくパターン進化の事例
構造特性の特定
今後の課題
まとめ
2
研究の背景
デザインパターン
• ソフトウェアデザインにおける良い意思決定指針
• 開発者の設計経験と知識に基づき形成
デザインパターンの進化
形成条件
・良い決定であったこと
・繰り返し起こる決定であること
• 設計知識の変化に伴う、パターンの進化の要求
• 指針として妥当性を保つパターン進化の必要性
• パターンは形式的でないため、妥当性を保ちつつ進化
させることは容易でなく、誤進化を引き起こす可能性
3
課題とアプローチ
長期的な課題
• 誤進化の防止と進化の促進を支援する手法とツールの
開発
短期的な課題
• パターン進化の観点からのパターンの形式化
パターン進化とは
何か?
パターン進化における 良い進化と悪い進化は、
進化対象は何か?
どのように区別できるか?
必要とする
パターン進化の概念の
明確化
必要とする
パターンを構成する
要素と関係の明確化
基づく
パターン進化の現象を
説明するモデル
進化の妥当性の
確認基準の明確化
基づく
パターン構造の
モデルとメタモデル
確認基準として使える
4
パターン構造の特性
モデル開発のプロセス
具体的な構造特性が得られるまで、各モデルの修正を繰り返し実施
開始
パターン進化のモデル化
パターン構造のモデル化
パターン構造のメタモデルの構築
事例によるモデルの評価
構造特性の特定
終了
5
パターン進化のモデル化
・モデル化の視点:意思決定
意思決定におけるパターンの使われ方の観点からモデル化
・指針としてのパターンを変化させる活動と現象の観察
指針として利用する
意思決定
パターン
に基づき再形成される
意思決定における要素
アクタ
意思決定を行う設計者の集合
コンテキスト
意思決定に影響を与える様々な状況
オブジェクト
意思決定結果,決定の根拠,検討した代替
案など
プロセス
解の提案,解の評価,解の選択など意思
決定に関わる行為
6
パターン進化のモデル化
適応進化と発展進化
二つの活動におけるパターン進化の現象を観察
適応進化
• パターンを用いた意思決定に伴う進化
• 具体的な意思決定文脈のもとでのパターン利用
• 意思決定結果にはパターン解と非パターン解がある.
発展進化
• パターン形成後の設計知識変化に従って,パターンの修正・改善
• 適応進化が発展進化の引き起こす要因となる
7
パターン進化のモデル
適応進化と発展進化を統一的にモデル化
(e2)パターン
(p3)適応進化
(p1)パターン形成 抽象化・一般化
(e1)個人設計知識の集合
(p3)適応進化
特化
具象化
(p3)発展進化
改善・修正
具象化
抽象化・一
(p2)知識変化
類似する
部分
個人設計知識
個人知識
モデル要素
(e1)個人設計知識の集
合
意味
ある時点の設計者個人の設計知識の集合.設計知識には,意思
決定の必要な状況,必要であった状況,決定結果,決定の根拠,
検討中の選択肢,検討した選択肢等を含む.
(e2)パターン
記述されたパターン
(p1)パターン形成
個人設計知識の類似性に基く,抽象化・一般化のプロセスを通し
てのパターン形成
(p2)個人設計知識変化 新たな設計経験に基づく個人知識の変化
8
(p3)パターン進化
個人設計知識変化に伴う,パターンの再形成
パターン構造のモデル化
・パターン記述から、意思決定指針に関わる要素と関係の抽出
・要素と関係をパターンの構造モデルとして定義
・名前
・目的
・動機
・・・・
意思決定の文脈、決定結果、代替案、
決定根拠に関わる要素を抽出
従来の
パターン記述
例:DECORATOR
モデル化
表現する
(p1)パターン形成
構造モデル
a b
c d
関係
要素 要素
パターン構造のモデル化
モデルに基づくパターン進化
モデルに基づくパターン進化
 知識変化に伴う、構造モデルの変化
従う
構造メタモデル
A B
C D
に基づく
従う
妥当性確認
構造モデル
a
c
b
d
パターン進化
モデル変換
構造モデル
a b e
c d
形成対象の
新たな設計知識
構造特性
パターンの要素として
形成された設計知識
知識変化
10
パターン構造のモデル化
モデル化要件とモデル化の方法
(1)モデル化要件を設定
(2)パターン記述の「動機」「適用可能性」「構成要素」「結果」の項目
を対象に要素を抽出
(3)要素の関係付けは,モデルの修正を繰り返しながら実施
(r1)モデル化
のスコープ
(r2)モデル化
の粒度
(r3)モデルの
表現
モデル化要件
適応進化および発展進化に関
わる要素を表現できなければ
ならない.
パターン進化は,意思決定の
粒度で行われるため,この粒
度を表現できなければならな
い.
パターン構造を容易に理解で
きる表現でなければならない.
対応
意思決定の文脈、決定結果、代
替案、決定根拠に関わる要素を
抽出
細かな粒度で抽出
Design Structure Matrixによる表
現
パターン構造のモデル化
モデル化の例:DECORATORパターン
動機:責任を追加する方法の一つに、継承
の利用がある。… すなわち、この方法では、
いつ、どうやって、componentに境界線を追
加するかをクライアントは制御できない
(r1) 進化対象要素を抽出
(r2) 細かな粒度で抽出
意思決定結果
決定結果の評価
モデル化
パターン
記述
表現する
(r3) Design Structure Matrixによる表現
構造モデル
1 2 3
要素
1 ・
継承
クライアントは 2 X ・
制御できない
…
3
・12
パターン構造のモデル化
構造モデルの例:DECORATORパターン
13
パターン構造のメタモデルの構築
構造モデルの集合からパターン間で共通のメタモデルを構築
 DECORATORとABSTRACT FACTORYの構造モデルから構築
DECORATOR
構造モデル
a
c
b
d
ABSTARCT FACTORY 構造モデル
a
c
モデル化
構造メタモデル
A B
C D
b
d
14
パターン構造のメタモデルの構築
依存する
文脈要素
依存する
前提とする
非パターン解要素
ミスフィットする
り悪い
得られる
フィットする
非パターン解特性要素
より良い
メタモデル要素
文脈
パターン解
非パターン解
パターン解特性
非パターン解特性
より悪い
より良い
依存する
前提とする
パターン解要素
ミスフィットする
フィットする
得られる
パターン解特性要素
より良い
より悪い
意味
要求や想定される要求変化を表す要素
パターンとなるプログラム構造上の解を構成する要素
パターンでないプログラム構造上の解を構成する要素
パターン解から得られる特性を表す要素
非パターン解から得られる特性を表す要素
より悪い
より良い
15
パターン構造のメタモデルの構築
関係の定義
フィットとミスフィット関係
• 文脈に対する解特性の適合度の観点から、関係を定義
• フィット関係:解特性が文脈に適合している
• ミスフィット関係:解特性が文脈に適合していない
ポジティブとネガティブ関係
• 解特性間の優劣関係を定義。
• ポジティブ関係:解特性P1は、解特性P2より良い
• ネガティブ関係:解特性P2は、解特性P1より悪い
16
モデルに基づくパターン進化の事例
・モデルの表現力の評価
・構造特性の特定
・適応進化と発展進化の事例による評価
・発展進化の例
AspectJによるDECORATORの改善の例を使用
メタモデル要素
文脈
パターン解
AspectJ代替案のモデル要素
なし
・責任が追加されるオブジェクトを定義
(concrete component )
・concrete componentをポイントカットと
アドバイスで拡張するアスペクトを定義
パターン解特性 ・局所性が良い
・合成透過性が良い
・プラグイン性が良い
・クライアントが主機能の拡張のタイミ
ングを制御できない
非パターン解
なし
非パターン解特性 なし
従来のパターンのモデル要素
なし
なし
・局所性が悪い
・合成透過性が悪い
・プラグイン性が悪い
なし
なし
17
モデルに基づくパターン進化の事例
DSMにより進化の妥当性を評価
 従来のパターンの解特性を保持できていない
18
構造特性の特定
・事例より、一般化した構造特性として形式化
・解特性の保持性
発展進化において、パターン解を改善する際に利用
改善案が、改善前の解特性を保持するかどうかで妥当性を確認
• 文脈Cに対して,非パターン解Sの解特性PSがミスフィット関係にあり,既存のパ
ターン解D1の解特性PD1がフィット関係にあり,さらにPS< PD1であるとする.
• この時,改善案のパターン解D2の解特性PD2がCとフィット関係にあり,PS< PD2で
ある場合,D2はD1の解特性を保持すると言う.
• 一方,PD2がCとミスフィット関係にあり,PD2< PD1である場合,解特性を保持しな
いと言う.
要素カテゴリ
文脈C
非パターン解S
パターン解D1
パターン解(改善案)D2
非パターン解特性PS
パターン解特性PD1
パターン解特性(改善案)PD2
1
2
3
4
5
6
7
1 2 3 4 5 6 7
・
X ・
X
・
X
・
M X
・ N N
F
X
P ・
F
X P
・
1
2
3
4
5
6
7
1 2 3 4 5 6 7
・
X ・
X
・
X
・
M X
・ N
F
X
P ・ P
M
X
N ・
19
今後の課題
• メタモデルの妥当性のさらなる検証
– 他のパターンの構造のモデル化
• 構造特性のさらなる特定
– 他のパターン進化の事例
• 適応進化と発展進化の活動に適した進化手
法とツールの開発
20
まとめ
• 適切なパターン進化の必要性
• パターン進化の観点からのパターンの形式
化
– パターン進化のモデル
– パターン構造のメタモデル
– パターン構造の構造特性
21
従来研究との比較
22
モデルに基づくパターン進化の事例
モデルの表現力の妥当性の検証
適応進化と発展進化の事例による評価
メタモデル要素
従来のパターンのモデル要素
発展進化の例:AspectJによるDECORATORの改善の例を使用
Aspect
ル要素
モデルにより表現
パターン解
責任が追加されるオブジェクトを
定義する( concrete component )
従来のパターン要素
concrete componentをポイントカットとアド
バイスで拡張するアスペクトを定義する
AspectJ代替案要素
クライアントが主機能の拡張の
タイミングを制御できない パターン解特性 ・局所性が悪い
局所性が良い
・合成透過性が悪い
合成透過性が良い
プラグイン性が良い
・責任が
ブジェク
( concr
compo
・concre
ポイント
スで拡
を定義
・局所性
・合成透
・プラグイン性が悪い
・プラグ
局所性が悪い ・クライ
パターン解
の拡張
合成透過性が悪い
23
制御で
パターン解特性