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

Slides:



Advertisements
Similar presentations
1 設計進化 2006/9/4 ゼミ発表資料. 2 今回の発表の目的 「設計進化( design evolution )」の用語の使 われ方について考察 道具・物(電話機)の設計進化 アプリケーション(フレームワーク)の設計進化.
Advertisements

オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
シーケンス図の生成のための実行履歴圧縮手法
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語としてのR 情報知能学科 白井 英俊.
アルゴリズムとデータ構造1 2007年6月12日
続 Entity Framework 入門 SQLWorld #8 サヴロウ.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
3-5 クラス図の関係その3 福本研究室 神田 祐輔.
プログラミング演習3 第4回 ミニプロジェクト.
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
情報科学1(G1) 2016年度.
3-3 クラス図の関係その2.
MFI Ontology registration Ed2 Evolution management について
エージェントベース経済シミュレーション におけるフレームワークデザイン
第9章 オブジェクトの構築 日下部研究室 修士2年 秋本 浩平.
ソフトウェア設計における意思決定ガイドラインとしてのデザインパターンのモデル
AspectScope によるアスペクトとクラスのつながりの視覚化
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価
UMLとは           032234 田邊祐司.
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
その他の図 Chapter 7.
UMLの概要とオブジ工クト指向の基本概念 第2回
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
ソフトウェア工学 知能情報学部 新田直也.
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
機能的関心事を抽出するためのプログラムスライシングの拡張
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
社会シミュレーションのための モデル作成環境
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
クラスのインターフェース やその振る舞いに及ぼすアスペクトの影響の解析と可視化
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
東京工科大学 コンピュータサイエンス学部 亀田弘之
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
第8回放送授業.
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
ソフトウェア工学 知能情報学部 新田直也.
Josh : バイトコードレベルでのJava用 Aspect Weaver
統合開発環境によって表現された 言語機構によるコードのモジュール化
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
開発者との対話を活かした 横断的構造の表現
クラスの追加 メソッドの追加 TestCaseの追加 Test Methodの追加.
ソフトウェア工学 知能情報学部 新田直也.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
ソフトウェア工学 知能情報学部 新田直也.
コードクローン解析に基づく デザインパターン適用候補の検出手法
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Detecting Software Modularity Violations
Josh : バイトコードレベルでのJava用 Aspect Weaver
Presentation transcript:

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

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

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

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

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に依存している。

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

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

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

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

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

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

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

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

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

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

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