ソフトウェア工学 理工学部 情報システム工学科 新田直也.

Slides:



Advertisements
Similar presentations
ソフトウェア工学 知能情報学部 新田直也. リファクタリング  リファクタリング( refactoring ): 「プログラムの外的振る舞いを変えることなく,その内 部構造を改善すること」  もともと Smalltalk のコミュニティで使われていた.  M. ファウラーの 1999 年の著書.
Advertisements

ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
メタモデル記述を用いた成果物間の依存関係追跡手法
シーケンス図の生成のための実行履歴圧縮手法
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
UMLの概要と オブジェクト指向の 基本概念
ソフトウェア設計における意思決定ガイドラインとしてのデザインパターンのモデル
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
Day3 Day4 Day3 Day4.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
UMLとは           032234 田邊祐司.
プログラム実行履歴を用いたトランザクションファンクション抽出手法
チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
その他の図 Chapter 7.
UMLの概要とオブジ工クト指向の基本概念 第2回
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS.
社会シミュレーションのための モデル作成環境
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
ソースコード縮退による ソースコード理解 神谷年洋 科学技術振興事業団 さきがけ研究21 オブジェクト指向シンポジウム2003.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
47070 オブジェクト指向モデリング [3] 2001年10月16日.
オブジェクト指向言語論 第十四回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
JSFによるWebアプリケーション開発 第3回
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
UMLの概要とオブジェクト指向の基本概念
オブジェクト指向モデリング [12] 2004年1月13日.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
設計情報の再利用を目的とした UML図の自動推薦ツール
メソッドの同時更新履歴を用いたクラスの機能別分類法
稚内北星学園大学 情報メディア学部 専任講師 安藤 友晴
ソフトウェア工学 知能情報学部 新田直也.
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
クラスの追加 メソッドの追加 TestCaseの追加 Test Methodの追加.
ソフトウェア理解支援を目的とした 辞書の作成法
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
47070 オブジェクト指向モデリング [3] 2001年10月15日.
ソフトウェア工学 知能情報学部 新田直也.
コードクローン解析に基づく デザインパターン適用候補の検出手法
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
ソフトウェア工学 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

ソフトウェア工学 理工学部 情報システム工学科 新田直也

オブジェクト指向以降の流れ オブジェクト指向は生産性,再利用性,保守性をある程度向上させた. プログラミングパラダイムとして誕生したオブジェクト指向は,その後分析,設計方法論として発展する.(基本的にはウォーターフォールモデルに基づく.) その中で,表記法だけでも統一しようということでUMLが誕生する. 一方で,実規模ソフトウェアの設計に適用されていく中でオブジェクト指向技術はさらに発展してきた. 設計のパターンを抽出,分類 → デザインパターン アプリケーションの典型的な骨組みを再利用 → フレームワーク オブジェクト指向は開発プロセスモデルそのものも変えた. スパイラルモデル,アジャイル(agile)開発

デザインパターンとフレームワーク オブジェクト指向を実規模ソフトウェアの設計に適用されていく中で発展してきた技術. オブジェクト指向ソフトウェアの設計(複数クラスによる協調)には一定のパターンが見られることが知られていた.それらのパターンに名前をつけカタログ化したものがデザインパターン(design pattern)である. 一方,多くのアプリケーションで基本設計の部分は似通っている.基本設計を表すソースコードを多くのアプリケーションで使いまわしできるよう取り出したものがフレームワーク(framework)である. パターンが形式であるのに対し,フレームワークは実際のソースコードであることに注意すること.

デザインパターンの誕生 デザインパターンは,E. Gamma, R. Helm, R. Johnson, J. Vlissides らによって1995年に提唱される.この4人は GoF (Gang of Four)と呼ばれている. MVCアーキテクチャなど,設計にいくつかのパターンが存在することは広く開発者に(暗黙に)了解されていた. デザインパターンは,Alexander の建築設計におけるパターンに関する議論を土台としている. 「それぞれのパターンは我々の身のまわりで何回も起きる問題,および,それぞれの問題に対する解法のポイントを記述している.そこで我々は,これらの解法を何万回でも使うことができる.同じ問題に対する同じ解法を何度も何度も最初から考え直さずに済むというわけだ」

デザインパターンの要素 現在,23種類のデザインパターンが知られている. 各パターンは次の4つの基本的な要素を有している. パターン名: パターンの名前 問題: パターンが適用される問題 解法: パターンの実際の構成 結果: パターンを用いることによる結果 23個のパターンは以下の3グループに分類される. 生成に関するパターン: 5個 構造に関するパターン: 7個 振る舞いに関するパターン: 11個

MVCアーキテクチャ SmallTalkのコミュニティで古くから使われていた. MVCは,Model/View/Controllerの略.これらはユーザインタフェースを構成する3つの(抽象)クラスの名前である. MVCでは,Observer,Composite,Strategy などさまざまなパターンが使われていた. View Controller Model 表示 入力 アプリケーション ロジック ユーザインタフェース データを保持

Observerパターン(1) Model と View の間のパターンである. Observers (Views) 表示の更新 データの要求,変更 d[0][0] = 20.4 d[0][1] = 27.4 : Subject (Model)

Observerパターン(2) 問題: 論理的な情報はSubjectが保持し,外観に関する情報は各Observerが有する. Observerの具象クラス(表クラス,棒グラフクラス,円グラフクラスなど)も複数存在している. Observerの具象クラスは自分に対応しているSubjectの具象クラスを知っている.

Observerパターン(3) 不適切な解法1: → 複数種ある Subject に対応できない.

Observerパターン(4) 不適切な解法2: → これでは具象Subject の状態を取得できない. ConcreteSubject1 → ConcreteObserver1, ConcreteObserver2 ConcreteSubject2 → ConcreteObserver3 → これでは具象Subject の状態を取得できない.

Observerパターン(5) 解法:

Observerパターン(6) パターンとして整理しておくと…

Observerパターン(7) シーケンス図による表現 anotherObject : ConcreteObject aSubject : ConcreteSubject aObject : ConcreteObject setState() Notify() Update() GetState() Update() GetState()

Factory Methodパターン 問題:抽象アプリケーションはドキュメントを生成し保持するが,具体的なドキュメントのクラスを知らないため,自身ではドキュメントをインスタンス化できない. 解法: フレームワーク側 アプリケーション側

Compositeパターン 問題:オブジェクトを集約を用いて木構造に組み立てる際,個々のオブジェクトとそれらを合成したものを一様に扱いたい. 例: コンテナ AWTのコンポーネントとコンテナ トップレベル コンポーネント 中間コンポーネント アトミック コンポーネント

Compositeパターン 解法: アトミックコンポーネント コンテナ

まとめ デザインパターンはオブジェクト指向ソフトウェアの設計に出現するパターンをカタログ化したもの. 熟練者のノウハウが凝縮されている. 現在では「共通言語」になりつつある. オブジェクト指向を用いて設計する上での指針になる. 産業界の方が学術界より進んでいる? パターンの背景にある論理は何か? メタパターン マルチパラダイムデザイン