Successfully reported this slideshow.
Your SlideShare is downloading. ×

分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 43 Ad

分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】

Download to read offline

MaruLaboの浅海ゼミでの講座のスライドです。

https://www.marulabo.net/docs/asami17/

分析のアクティビティとして
通常のWeb画面からのコマンド投入を起点とした基本機能を軸に
シナリオ分析とコンポーネント分析について説明してきました。

今回はイベント駆動アプリケーションにおける分析のアクティビティについて説明します。

MaruLaboの浅海ゼミでの講座のスライドです。

https://www.marulabo.net/docs/asami17/

分析のアクティビティとして
通常のWeb画面からのコマンド投入を起点とした基本機能を軸に
シナリオ分析とコンポーネント分析について説明してきました。

今回はイベント駆動アプリケーションにおける分析のアクティビティについて説明します。

Advertisement
Advertisement

More Related Content

More from Tomoharu ASAMI (20)

Recently uploaded (20)

Advertisement

分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】

  1. 1. 分析/イベンド駆動 2022年11⽉24⽇ 浅海智晴 クラウドアプリケーションのための オブジェクト指向分析設計講座 第17回 作業分野
  2. 2. 第1部 基本編の構成 • 概論 [第1回] • 開発プロセス [第2回] • 基本モデル [第3回] • 静的モデル(1) [第4回] • 静的モデル(2) [第5回] • 動的モデル [第6回] • 協調モデル [第7回] • 関数モデル [第8回] • 物理モデル [第9回] • 作業分野 [第10回] • ビジネス・モデリング [第11回] • 要求 [第12回] • 要求/ユースケース [第13回] • 要求/シナリオ [第14回] • 作業分野 • 分析 [第15回] • 分析/コンポーネント分析 [第16回] • 分析/イベント駆動 [第17回] • 設計 [第18回] • 実装 [第19回] • テスト [第20回] • アプリケーション・アーキテクチャ [第21回] • ドメイン・モデル [第22回] • アプリケーション・モデル [第23回] • プレゼンテーション・モデル [第24回] • ケーススタディ[第25回] • 要求モデル [第26回] • 分析モデル [第27回] • 設計モデル [第28回] • 実装 [第29回] • テスト [第30回]
  3. 3. SimpleModeling2021 • オブジェクト指向分析設計での共通範囲 • UML/UP • 本講座で使⽤するUMLプロファイル • プロファイル:SimpleModeling2021 (SM2021) • オブジェクト指向分析設計の基本からの拡張部を明確化 • アジャイル開発 • Communication • Embrace Change • Travel Light • Scaling • Component-Based Development • クラウド・アプリケーション • モデル駆動開発 SM2021 Travel Light Embrace Change Cloud Model-Driven Scaling CBD
  4. 4. 原理 (Principle) • Agail Software Development [ASD] • SRP (The Single Responsibility Principle) • OCP (The Open-Close Principle) • LSP (The Liskov Substitution Principle) • … • GRASP (General Responsibility Assignment Software Patterns or Principals) • Low Coupling • High Cohesion • … • Writing Effective Use Cases [WEUC] • Scope • …
  5. 5. パターン (Pattern) • Design Patterns [DP] • Observer, Strategy, … • Domain Driven Design [DDD] • Ubiquitous Language, Intention- Revealing Interfaces, … • Analysis Patterns [AP] • Party, Quantity, … • Pattern-Oriented Software Architecture [POSA] • Layers, Pipes and Filters, … • Patterns of Enterprise Application Architecture [PEAA] • Unit of Work, Data Transfer Object, … • Enterprise Integration Patterns [EIP] • Message Bus, Aggregator, … • Patterns for Effective Use Cases [PEUC] • CompleteSingleGoal, VerbPhraseName, … • AntiPatterns [AnP] • Stovepipe System, Analysis Paralysis, …
  6. 6. 内容 • 分析の位置づけ • イベント駆動 • イベント・モデル • シナリオ分析 • コンポーネント分析
  7. 7. 分析の位置づけ
  8. 8. 第10回 作業分野
  9. 9. 作業分野とモデルの関係 第10回 作業分野
  10. 10. ユースケース駆動開発
  11. 11. 分析 (Analysis) • プラットフォーム中⽴の抽象的なモデル • PIM (Platform Independent Model) • 設計: PSM (Platform Specific Model) • シナリオ分析 • 中間モデル:ロバストネス図 • コンポーネント分析 • コンポーネント • システム・アーキテクチャ • ⾒積もりの精度を⾼めたい場合は分析段階で再⾒積もり CBD
  12. 12. 分析/主な成果物 • 中間モデル • ロバストネス・モデル • 新規 • アプリケーション・モデル • システム・アーキテクチャ・モデ ル • コンポーネント・モデル • モジュール・モデル • ドメイン・モデル • イベント・モデル • データ分析モデル • メトリクス・モデル • 具体化 • UXモデル • ドメイン・モデル • エンティティ・モデル • サービス・モデル • ルール・モデル • 開発計画/⾒積もり
  13. 13. イベント駆動
  14. 14. オブジェクト指向分析設計を使う理由 • ビジネス、要件定義からプログラミングまでの⼀貫性 • ビジネスとの連携 • ビジネス側のステークホルダーと共有できる⾔語が必要 • Ubiquitous Language (DDD) • ビジネス・モデル • ユースケースによる要件定義 • 協調モデル • 物語をシナリオ分析する • 状態機械によるイベント駆動の実現 • イベント駆動アプリケーション • 動的モデルの実現に状態機械が有効 Cloud 第6回 動的モデル 再掲
  15. 15. コマンド制御型からイベント駆動型へ Cloud 第6回 動的モデル 再掲
  16. 16. システムアーキテクチャ Cloud 第6回 動的モデル 再掲
  17. 17. オブジェクト・モデルとOOPLの セマンティクス・ギャップ • 動的モデルとOOPL(オブジェクト指向プログラミング⾔語)の 間に⼤きなセマンティクス・ギャップがある • OOPLにないもの(⼀級の構成要素でないもの) • イベント • レセプション • 状態機械 • メッセージ • 実装のプラットフォーム機能に依存 • 設計時に分析モデルから翻訳する
  18. 18. イベント駆動の分析モデリング • ユースケースの⽬的を満たすため、何を⾏うのか(what)、オブ ジェクト・モデルとしてどう実現するのか(how)をモデル化す る • 何を⾏うのか(what)を軸に、実現⽅法(how)は設計の⼊⼒にな るレベルの抽象度に留める • ドメイン・イベント、アプリケーション・イベント • イベント発⽣時の処理
  19. 19. イベント・モデル
  20. 20. イベント駆動の分析モデリング • イベント駆動アプリケーションはイベントを起点に処理が進⾏ する • 分析で⾏うこと: • イベント⼀覧 • イベントの構造化 • シナリオ分析 • イベントを起点としたイベント駆動処理の抽出 • コンポーネント分析 • システム・アーキテクチャにイベント駆動処理を加える • 各コンポーネントにイベント駆動処理を加える
  21. 21. シグナル (Signal) • インスタンス間を通信する⾮同 期な刺激の仕様 • いわゆる「イベント」はUML上 はシグナルとしてモデル化して いくことになるが… • ビジネス領域で発⽣するイベント • ビジネス・イベント • 業務ドメインで発⽣するイベント • ドメイン・イベント • アプリケーション上で発⽣するイ ベント • アプリケーション・イベント 第6回 動的モデル 再掲
  22. 22. イベント (Event) • 4種類のイベント • CallEvent • オペレーションが呼び出された時に発⽣するイベント • SignalEvent • シグナルを受信した時に発⽣するイベント • TimeEvent • 指定した時間に発⽣するイベント • after : ⼀定時間後 • when : 指定時間 • ChangeEvent • 指定した条件式が真になった時に発⽣するイベント • プロパティの変更時など • UMLではオブジェクトがシグナルなどの刺激を受けたことを通知す るモデル要素としてイベントを定義している 第6回 動的モデル 再掲
  23. 23. アプリケーション領域でのイベント • UMLのメタモデル上は、いわゆる「イベント」はSignalEvent として扱い、「イベント」の設計はSignalを⽤いることになる が、慣習にしたがって「イベント」として扱っていく • ビジネス・イベント • ドメイン・イベント • アプリケーション・イベント SM2021 第6回 動的モデル 再掲
  24. 24. イベントの階層
  25. 25. イベント⼀覧 イベント名 説明 主なパラメタ ReservationBefore 予約のN分前 予約ID, 顧客ID,リソースID, 予約時間, 経過時刻 ReservationCreated 予約作成 予約ID, 顧客ID, リソースID, 予約時間 ReservationUpdated 予約更新 予約ID, 顧客ID, リソースID, 予約時間 ReservationCanceled 予約キャンセル 予約ID, 顧客ID, リソースID, 予約時間
  26. 26. シナリオ分析
  27. 27. イベント駆動の分析モデリング • イベントを起点にした処理の実⾏ • シナリオ分析では、アクター起点の処理の実⾏と同じように分 析を進めていく • ユースケース・シナリオからバウンダリ、コントロール、エンティ ティの各分析オブジェクトを抽出 • シナリオをたどりながら分析オブジェクトによる構造を構築
  28. 28. UMLで定義されている分析オブジェクト 分析オブジェクト 第15回 分析 再掲
  29. 29. SM2021 本講座による分析オブジェクトの拡張 分析オブジェクト/拡張 Cloud 第2部 クラウド・アプリケーション編 第15回 分析 再掲
  30. 30. ロバストネス図 第15回 分析 再掲
  31. 31. SM2021 ロバストネス図(イベント駆動)
  32. 32. コンポーネント分析
  33. 33. イベント駆動の分析モデリング • アクテー起点の場合と同様にバウンダリ、コントロール、エン ティティの各分析オブジェクトの構造から: • コンポーネントを抽出 • コンポーネントを組み合わせてシステムの構造を構築 • コンポーネント内の構造を構築
  34. 34. オペレーション • 振舞いに作⽤するために任意 のクラスのオブジェクトから 要求されることができるサー ビスの実装 • プログラミング⾔語ではメ ソッドとして実現 第6回 動的モデル 再掲
  35. 35. レセプション • 分類⼦がシグナルの受信に対 する反応を⽤意しているとい う宣⾔ • 通常はプログラミング⾔語の 仕様外 • イベント駆動のフレームワーク で補完する必要がある • JavaではJavaBeans(コンポー ネント拡張)でレセプション相 当の機能(EventObject, EventListener)を提供 第6回 動的モデル 再掲
  36. 36. アーキテクチャ・モデル 第16回 分析/コンポーネント
  37. 37. コンポーネント・モデル 第16回 分析/コンポーネント
  38. 38. イベント受付⽤のファサード的な サブシステムを設置する⽅式もある。 ステレオタイプreception(SM2021)で明⽰。 アーキテクチャ・モデル(イベント駆動)
  39. 39. サブシステム内にイベント受付⽤ コンポーネントを設置する⽅式もある。 ステレオタイプreception(SM2021) で明⽰。 各コンポーネント内 でレセプションを設 置してイベントを受 け取るのも可。 コンポーネント・モデル(イベント駆動)
  40. 40. コンポーネント・モデル(イベント駆動) 受信するイベントはSignals区画で レセプションとして記述。
  41. 41. まとめ • イベント駆動 • イベント・モデル • シナリオ分析 • イベントを起点としたイベント駆動処理の抽出 • コンポーネント分析 • システム・アーキテクチャにイベント駆動処理を加える • 各コンポーネントにイベント駆動処理を加える
  42. 42. 参考⽂献 • The Unified Modeling Language Reference Manual, 2nd (Rumbaugh他, 2004) • The Unified Modeling Language User Guide, 2nd (Booch他, 2004) • The Unified Software Development Process (Jacobson他, 1999) • The Object Constraint Language, 2nd (Warmer他, 2003) • UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (Arlow他, 2005) • OMG Unified Modeling Language Version 2.5 (OMG, 2015) • 上流⼯程UMLモデリング (浅海, 2008) • Object-Oriented Software Engineering: A Use Case Driven Approach (Jacobson, 1992) • Object Design : Roles, Responsibilities, and Collaborations (Wirfs- Brock他, 1990) • Use Case Driven Object Modeling with UML: A Practical Approach (Rosenberg, 1999) • Software Reuse: Architecture, Process and Organization for Business Success (Jacobson他, 1997) • Component Software 2nd. Beyond Object-Oriented Programming (Szyperski他, 2002) • Domain-Driven Design: Tracking Complexity in the Heart of Software (Evans, 2003) • Agile Software Development : Principles, Patterns, and Practices (Martin他, 2003) • Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd (Larman, 2005) • Analysis Patterns: Reusable Object Models (Fowler, 1996) • Pattern-Oriented Software Arhitecture: A System of Patterns (Buschamnn他, 1996)

×