ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix [email protected] 2006/9/2 ゼミ発表資料 1 発表内容 問題: StrategyとStateの構造進化の比較 StrategyとStateパターン Dependency Structure Matrix(DSM) DSMの変更 REDSM(Role based Evolution Dependency Structure Matrix)のア イデア StrategyとStateをREDSMで表現・比較 まとめ・考察・今後の予定 2 問題: StrategyとStateの構造進化 の比較 進化前と後でも構造的要素は同じ。 しかし、StrategyとStateの実際の構造進化の違いをどう やって表現する? Strategyパターン Stateパターン 新しいアルゴ リズムの追加 新しい状態 の追加 3 StrategyとStateパターン Strategy State 目的 アルゴリズムの集合を定義し、各ア ルゴリズムをカプセル化して、それら を交換可能にする。 オブジェクトの内部状態が変化した ときに、オブジェクトの振る舞いを 変えるようにする。 構造 4 Dependency Structure Matrix 要素の間の依存を表現 Task Task Task Task D C B A Task Task Task Task A . B x C D . x . x . Task AはTask Bに依存している(要素 Aは要素 Bを使っている、参照している)。 Task BはTask Cに依存している。 Task CはTask Dに依存している。 5 ConcreteStrategyB ConcreteStrategyA Strategy Context Client DSMによる表現 Client Context Strategy ConcreteStrategyA ConcreteStrategyB . x . x x . x x x . x . 新しいアルゴリズムの追加 は、どのような影響を持っ ている? DSMでその影響 を表現できるか? 6 DSMの変更 ソフトウェア工学における従来のDSMの使われ方 モジュール間(クラスやアスペクト)の依存関係を表現する 実際の具体的なソフトウェアに対してDSMを適用 一般的な構造進化を表現したい場合 モジュール(クラス)間ではなく、ロール間の依存を対象としたほ うが便利(Clientクラスは複数あるかもしれない。 ConcreteStrategyは複数あるかもしれない)。 抽象的な設計構造(たとえば各デザインパターンにおける一般 的な構造)における一般的な進化を表現したい ロールを基にして構造進化の依存を表現できるようにDSMを変更 7 REDSM(Role based Evolution Dependency Structure Matrix)と名付ける Strategyパターンの成長:その1 ConcreteStra tegyの追加 ConcreteStrategy Strategy Context Client Client Context Strategy ConcreteStrategy . S . . . 8 ConcreteStr ategyの追加 Client Context Strategy ConcreteStrategy StrategyFactory StrategyFactory ConcreteStrategy Strategy Context Client Strategyパターンの成長:その2 . w . . . S . 9 REDSMによるStrategyの構造進 化の表現 ConcreteStrategyの追加 . S . . . StrategyFactory ConcreteStrategy Strategy Context Client ConcreteStrategy Strategy Context Client Client Context Strategy ConcreteStrategy Client Context Strategy ConcreteStrategy StrategyFactory . w . . . S . 10 Stateパターンの成長:その1 ConcreteState の追加 ConcreteState State Context Client Client Context State ConcreteState . . . S 11 Stateパターンの成長:その2 ConcreteState の追加 ConcreteState State Context Client Client Context State ConcreteState . . S . S 12 Stateパターンの成長:その3 ConcreteState の追加 StateFactory ConcreteState State Context Client Client Context State ConcreteState StateFactory . . w . S S . 13 REDSMによるStrategyとStateの構 造進化の比較 ConcreteStrategyの追加 Strategyパターン Client Context Strategy ConcreteStrategy . . . . . w . . . S . ConcreteStateの追加 Stateパターン Client Context State CState Client Context Strategy ConcreteStrategy StrategyFactory S . . . S Client Context State CState . . S . S Client Context State CState StateFactory . . w . S S 14 CState=ConcreteState . まとめ REDSM(Role based Evolution Dependency Structure Matrix)のアイディアを提案 ロールと構造進化の視点からDSMを変更 REDSMはロール間における構造進化の依存(波及) 関係を表現する 異なる設計構造(たとえばStateやStrategyや、 Factoryを使う/使わない)における構造進化の影響の 違いを表現するのに便利 15 考察と今後の予定 REDSMについてもっと考える ロールとは何? 依存とは何? 依存の種類・強弱とその意味 は? ロールの粒度は適切? デザインパターンでは、クラスにロール があるだけでなく、メソッドにもロールがあると考えられる(たと えばStateの場合だとhandleメソッドを呼び出すrequestメソッ ド)。 他のパターンで演習 他の言語(たとえばAspectJ)ではどうなる? とはいえ、REDSMは適切? 他の表現方法があるか も? そもそも従来のDSMの使い方との違いは? 16
© Copyright 2024 ExpyDoc