分析/イベンド駆動
2022年11⽉24⽇
浅海智晴
クラウドアプリケーションのための
オブジェクト指向分析設計講座
第17回
作業分野
第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回]
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
原理 (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
• …
パターン (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, …
内容
• 分析の位置づけ
• イベント駆動
• イベント・モデル
• シナリオ分析
• コンポーネント分析
分析の位置づけ
第10回 作業分野
作業分野とモデルの関係 第10回 作業分野
ユースケース駆動開発
分析 (Analysis)
• プラットフォーム中⽴の抽象的なモデル
• PIM (Platform Independent Model)
• 設計: PSM (Platform Specific Model)
• シナリオ分析
• 中間モデル:ロバストネス図
• コンポーネント分析
• コンポーネント
• システム・アーキテクチャ
• ⾒積もりの精度を⾼めたい場合は分析段階で再⾒積もり
CBD
分析/主な成果物
• 中間モデル
• ロバストネス・モデル
• 新規
• アプリケーション・モデル
• システム・アーキテクチャ・モデ
ル
• コンポーネント・モデル
• モジュール・モデル
• ドメイン・モデル
• イベント・モデル
• データ分析モデル
• メトリクス・モデル
• 具体化
• UXモデル
• ドメイン・モデル
• エンティティ・モデル
• サービス・モデル
• ルール・モデル
• 開発計画/⾒積もり
イベント駆動
オブジェクト指向分析設計を使う理由
• ビジネス、要件定義からプログラミングまでの⼀貫性
• ビジネスとの連携
• ビジネス側のステークホルダーと共有できる⾔語が必要
• Ubiquitous Language (DDD)
• ビジネス・モデル
• ユースケースによる要件定義
• 協調モデル
• 物語をシナリオ分析する
• 状態機械によるイベント駆動の実現
• イベント駆動アプリケーション
• 動的モデルの実現に状態機械が有効
Cloud
第6回 動的モデル
再掲
コマンド制御型からイベント駆動型へ Cloud
第6回 動的モデル
再掲
システムアーキテクチャ Cloud
第6回 動的モデル
再掲
オブジェクト・モデルとOOPLの
セマンティクス・ギャップ
• 動的モデルとOOPL(オブジェクト指向プログラミング⾔語)の
間に⼤きなセマンティクス・ギャップがある
• OOPLにないもの(⼀級の構成要素でないもの)
• イベント
• レセプション
• 状態機械
• メッセージ
• 実装のプラットフォーム機能に依存
• 設計時に分析モデルから翻訳する
イベント駆動の分析モデリング
• ユースケースの⽬的を満たすため、何を⾏うのか(what)、オブ
ジェクト・モデルとしてどう実現するのか(how)をモデル化す
る
• 何を⾏うのか(what)を軸に、実現⽅法(how)は設計の⼊⼒にな
るレベルの抽象度に留める
• ドメイン・イベント、アプリケーション・イベント
• イベント発⽣時の処理
イベント・モデル
イベント駆動の分析モデリング
• イベント駆動アプリケーションはイベントを起点に処理が進⾏
する
• 分析で⾏うこと:
• イベント⼀覧
• イベントの構造化
• シナリオ分析
• イベントを起点としたイベント駆動処理の抽出
• コンポーネント分析
• システム・アーキテクチャにイベント駆動処理を加える
• 各コンポーネントにイベント駆動処理を加える
シグナル (Signal)
• インスタンス間を通信する⾮同
期な刺激の仕様
• いわゆる「イベント」はUML上
はシグナルとしてモデル化して
いくことになるが…
• ビジネス領域で発⽣するイベント
• ビジネス・イベント
• 業務ドメインで発⽣するイベント
• ドメイン・イベント
• アプリケーション上で発⽣するイ
ベント
• アプリケーション・イベント
第6回 動的モデル
再掲
イベント (Event)
• 4種類のイベント
• CallEvent
• オペレーションが呼び出された時に発⽣するイベント
• SignalEvent
• シグナルを受信した時に発⽣するイベント
• TimeEvent
• 指定した時間に発⽣するイベント
• after : ⼀定時間後
• when : 指定時間
• ChangeEvent
• 指定した条件式が真になった時に発⽣するイベント
• プロパティの変更時など
• UMLではオブジェクトがシグナルなどの刺激を受けたことを通知す
るモデル要素としてイベントを定義している
第6回 動的モデル
再掲
アプリケーション領域でのイベント
• UMLのメタモデル上は、いわゆる「イベント」はSignalEvent
として扱い、「イベント」の設計はSignalを⽤いることになる
が、慣習にしたがって「イベント」として扱っていく
• ビジネス・イベント
• ドメイン・イベント
• アプリケーション・イベント
SM2021
第6回 動的モデル
再掲
イベントの階層
イベント⼀覧
イベント名 説明 主なパラメタ
ReservationBefore 予約のN分前 予約ID, 顧客ID,リソースID, 予約時間, 経過時刻
ReservationCreated 予約作成 予約ID, 顧客ID, リソースID, 予約時間
ReservationUpdated 予約更新 予約ID, 顧客ID, リソースID, 予約時間
ReservationCanceled 予約キャンセル 予約ID, 顧客ID, リソースID, 予約時間
シナリオ分析
イベント駆動の分析モデリング
• イベントを起点にした処理の実⾏
• シナリオ分析では、アクター起点の処理の実⾏と同じように分
析を進めていく
• ユースケース・シナリオからバウンダリ、コントロール、エンティ
ティの各分析オブジェクトを抽出
• シナリオをたどりながら分析オブジェクトによる構造を構築
UMLで定義されている分析オブジェクト
分析オブジェクト
第15回 分析
再掲
SM2021
本講座による分析オブジェクトの拡張
分析オブジェクト/拡張
Cloud
第2部 クラウド・アプリケーション編
第15回 分析
再掲
ロバストネス図
第15回 分析
再掲
SM2021
ロバストネス図(イベント駆動)
コンポーネント分析
イベント駆動の分析モデリング
• アクテー起点の場合と同様にバウンダリ、コントロール、エン
ティティの各分析オブジェクトの構造から:
• コンポーネントを抽出
• コンポーネントを組み合わせてシステムの構造を構築
• コンポーネント内の構造を構築
オペレーション
• 振舞いに作⽤するために任意
のクラスのオブジェクトから
要求されることができるサー
ビスの実装
• プログラミング⾔語ではメ
ソッドとして実現
第6回 動的モデル
再掲
レセプション
• 分類⼦がシグナルの受信に対
する反応を⽤意しているとい
う宣⾔
• 通常はプログラミング⾔語の
仕様外
• イベント駆動のフレームワーク
で補完する必要がある
• JavaではJavaBeans(コンポー
ネント拡張)でレセプション相
当の機能(EventObject,
EventListener)を提供
第6回 動的モデル
再掲
アーキテクチャ・モデル 第16回 分析/コンポーネント
コンポーネント・モデル 第16回 分析/コンポーネント
イベント受付⽤のファサード的な
サブシステムを設置する⽅式もある。
ステレオタイプreception(SM2021)で明⽰。
アーキテクチャ・モデル(イベント駆動)
サブシステム内にイベント受付⽤
コンポーネントを設置する⽅式もある。
ステレオタイプreception(SM2021)
で明⽰。
各コンポーネント内
でレセプションを設
置してイベントを受
け取るのも可。
コンポーネント・モデル(イベント駆動)
コンポーネント・モデル(イベント駆動)
受信するイベントはSignals区画で
レセプションとして記述。
まとめ
• イベント駆動
• イベント・モデル
• シナリオ分析
• イベントを起点としたイベント駆動処理の抽出
• コンポーネント分析
• システム・アーキテクチャにイベント駆動処理を加える
• 各コンポーネントにイベント駆動処理を加える
参考⽂献
• 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)

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