Download presentation
Presentation is loading. Please wait.
Published byChristopher Brekke Modified 約 5 年前
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の使い方との違いは?
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.