Presentation is loading. Please wait.

Presentation is loading. Please wait.

ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix

Similar presentations


Presentation on theme: "ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix"— Presentation transcript:

1 ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
2006/9/2 ゼミ発表資料

2 発表内容 問題: StrategyとStateの構造進化の比較 StrategyとStateパターン
Dependency Structure Matrix(DSM) DSMの変更  REDSM(Role based Evolution Dependency Structure Matrix)のアイデア StrategyとStateをREDSMで表現・比較 まとめ・考察・今後の予定

3 問題: StrategyとStateの構造進化の比較
進化前と後でも構造的要素は同じ。 しかし、StrategyとStateの実際の構造進化の違いをどうやって表現する? Strategyパターン Stateパターン 新しいアルゴリズムの追加 新しい状態の追加

4 StrategyとStateパターン Strategy State 目的 構造
アルゴリズムの集合を定義し、各アルゴリズムをカプセル化して、それらを交換可能にする。 オブジェクトの内部状態が変化したときに、オブジェクトの振る舞いを変えるようにする。 構造

5 Dependency Structure Matrix
要素の間の依存を表現 Task D Task C Task B Task A Task A Task B Task C Task D x x x . Task AはTask Bに依存している(要素 Aは要素 Bを使っている、参照している)。 Task BはTask Cに依存している。 Task CはTask Dに依存している。

6 DSMによる表現 ConcreteStrategyB ConcreteStrategyA Strategy Context Client
Client Context Strategy ConcreteStrategyA ConcreteStrategyB . x . x x . x x x   . x   . 新しいアルゴリズムの追加は、どのような影響を持っている? DSMでその影響を表現できるか?

7 DSMの変更 ソフトウェア工学における従来のDSMの使われ方 一般的な構造進化を表現したい場合
モジュール間(クラスやアスペクト)の依存関係を表現する 実際の具体的なソフトウェアに対してDSMを適用 一般的な構造進化を表現したい場合 モジュール(クラス)間ではなく、ロール間の依存を対象としたほうが便利(Clientクラスは複数あるかもしれない。ConcreteStrategyは複数あるかもしれない)。 抽象的な設計構造(たとえば各デザインパターンにおける一般的な構造)における一般的な進化を表現したい ロールを基にして構造進化の依存を表現できるようにDSMを変更 REDSM(Role based Evolution Dependency Structure Matrix)と名付ける

8 Strategyパターンの成長:その1 ConcreteStrategyの追加
ConcreteStrategy Strategy Context Client Client Context Strategy ConcreteStrategy S

9 Strategyパターンの成長:その2 ConcreteStrategyの追加
StrategyFactory ConcreteStrategy Strategy Context Client Client Context Strategy ConcreteStrategy StrategyFactory w S .

10 REDSMによるStrategyの構造進化の表現
ConcreteStrategyの追加 StrategyFactory ConcreteStrategy Strategy Context Client ConcreteStrategy Strategy Context Client Client Context Strategy ConcreteStrategy StrategyFactory w S . Client Context Strategy ConcreteStrategy S

11 Stateパターンの成長:その1 ConcreteStateの追加 ConcreteState State Context Client
Client Context State ConcreteState S

12 Stateパターンの成長:その2 ConcreteStateの追加 ConcreteState State Context Client
Client Context State ConcreteState S S

13 Stateパターンの成長:その3 ConcreteStateの追加
StateFactory ConcreteState State Context Client Client Context State ConcreteState StateFactory w S S .

14 REDSMによるStrategyとStateの構造進化の比較
ConcreteStrategyの追加 Strategyパターン Client Context Strategy ConcreteStrategy StrategyFactory w S . Client Context Strategy ConcreteStrategy S ConcreteStateの追加 Stateパターン Client Context State CState S Client Context State CState S S Client Context State CState StateFactory w S S . CState=ConcreteState

15 まとめ REDSM(Role based Evolution Dependency Structure Matrix)のアイディアを提案
異なる設計構造(たとえばStateやStrategyや、Factoryを使う/使わない)における構造進化の影響の違いを表現するのに便利

16 考察と今後の予定 REDSMについてもっと考える 他のパターンで演習 他の言語(たとえばAspectJ)ではどうなる?
ロールとは何? 依存とは何? 依存の種類・強弱とその意味は? ロールの粒度は適切? デザインパターンでは、クラスにロールがあるだけでなく、メソッドにもロールがあると考えられる(たとえばStateの場合だとhandleメソッドを呼び出すrequestメソッド)。 他のパターンで演習 他の言語(たとえばAspectJ)ではどうなる? とはいえ、REDSMは適切? 他の表現方法があるかも? そもそも従来のDSMの使い方との違いは?


Download ppt "ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix"

Similar presentations


Ads by Google