Successfully reported this slideshow.
Your SlideShare is downloading. ×

分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 57 Ad

分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】

Download to read offline

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

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

分析モデルとして前回はユースケースからシステムの概観を抽出するシナリオ分析を説明しました。
今回はコンポーネントとシステム・アーキテクチャとして具体化したモデルを作成するコンポーネント分析を
説明します。

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

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

分析モデルとして前回はユースケースからシステムの概観を抽出するシナリオ分析を説明しました。
今回はコンポーネントとシステム・アーキテクチャとして具体化したモデルを作成するコンポーネント分析を
説明します。

Advertisement
Advertisement

More Related Content

More from Tomoharu ASAMI (20)

Recently uploaded (20)

Advertisement

分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】

  1. 1. 分析/コンポーネント分析 2022年10⽉22⽇ 浅海智晴 クラウドアプリケーションのための オブジェクト指向分析設計講座 第16回 作業分野
  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. オブジェクト指向分析設計の枠組み 第10回 作業分野 再掲
  15. 15. UP (Unified Process) • 『The Unified Software Development Process』 • 1990年代に乱⽴したオブジェクト指向開発プロセスを統⼀ • UMLが前提とするリファレン・スモデル • CBD (Component-Based Development) • アーキテクチャ • ユースケース駆動 (use-case driven) • 反復漸進 (iterative/incremental) • アーキテクチャ中⼼ (architecture centric) • ⼯程管理⽅式 • 計画駆動 • ⽂書中⼼ 第2回 開発プロセス 再掲
  16. 16. シナリオ分析の成果物 • ロバストネス図 • ドメイン・モデル • エンティティ・モデル • サービス・モデル • ルール・モデル
  17. 17. UMLで定義されている分析オブジェクト 分析オブジェクト 第15回 分析 再掲
  18. 18. SM2021 本講座による分析オブジェクトの拡張 分析オブジェクト/拡張 Cloud 第2部 クラウド・アプリケーション編 第15回 分析 再掲
  19. 19. ロバストネス図 第15回 分析 再掲
  20. 20. コンポーネント分析で⾏うこと • アプリケーション・モデルの作成 • ロバストネス図から抽出 • コンポーネント・モデルの作成 • ロバストネス図から抽出 • ドメイン・モデルの洗練 • エンティティ・モデル • サービス・モデル • ルール・モデル • ドメイン・モデルの拡張 • イベント・モデル • データ分析モデル SM2021
  21. 21. コンポーネント (Component)
  22. 22. コンポーネント (Component) • コンポーネントは論理モデルと物理モデルの両⽅の側⾯を持つ モデル要素 • CBD (Component-Based Development)の中核モデル要素 • 論理的側⾯ • 第5回 静的モデル(2) • 物理的側⾯ • 第9回 物理モデル
  23. 23. コンポーネント (Component) • システムデザインのモジュー ル化された部品。外部インタ フェースのセットで実装を隠 蔽する。システム内では同じ インタフェースを満⾜してい るコンポーネントは⾃由に取 り替えできる可能性がある。 第5回 静的モデル(2) 再掲 第9回 物理モデル
  24. 24. コンポーネント/内部構造/構成 第5回 静的モデル(2) 再掲
  25. 25. コンポーネント/内部構造/エンティティ 第5回 静的モデル(2) 再掲
  26. 26. コンポーネント (Component) • 再利⽤可能な部品 • 明確な外部インタフェースを定め実装を隠蔽 • 新規開発を抑えることで開発期間短縮、品質向上を図る • 再利⽤性の⾼い部品化は⾃然にできることではないので、コストを掛けて積極的に狙い に⾏く • 論理モデルと物理モデルの両⽅の性質を兼ね備える • 配備の単位 • 物理的な側⾯ ⇒ モジュール • オブジェクト指向分析設計による開発の様々な側⾯を集約してパッケージ化 • モデリングとプログラミングの結節点 • モデリングはコンポーネントまで。コンポーネントの実現はプログラミングで。 • 再利⽤可能な部品にするための仕掛けが必要 • コンポーネント・フレームワーク • 実⾏コンテキスト Travel Light Travel Light 第5回 静的モデル(2) 再掲 第9回 物理モデル
  27. 27. オブジェクト指向分析設計の様々の側⾯ をコンポーネントに集約 • 機能の単位 • 機能を凝集(coherent)して実現 • 開発の単位 • コンポーネント単位で開発の管理を ⾏う • 開発⼯程、担当者など • モデリングの単位 • コンポーネントの実現はプログラミ ングで • 運⽤の単位 • 配備の単位 • バージョン管理 • 仕様書・マニュアルの単位 • 外部仕様、マニュアルの作成 • テストの単位 • テスト仕様の作成単位 • テストの進捗管理の単位 • 障害調査の単位 • 障害発⽣箇所の特定 • 障害調査マニュアルの作成 • 販売・課⾦の単位 • 再利⽤可能な商品 Scaling 第5回 静的モデル(2) 再掲 第9回 物理モデル
  28. 28. コンポーネント設計のポイント • 凝集(highly coherent)と疎結合(loosely coupled) • コンポーネントに機能を集約 • コンポーネント間の依存関係はできるだけ避ける • 共通情報などは実⾏コンテキストに集約 • 提供インタフェース(Provided Interface) • 外部に提供するインタフェースを定義 • 要求インタフェース(Provided Interface) • 使⽤する外部コンポーネントのインタフェースを定義 • イベント • サービス・バスを使ったイベント駆動 • 拡張点 (Extension point) • コンポーネントの機能拡張を外部プログラムで⾏うメカニズム • 要求インタフェースなどを使⽤ • 変化点 (Variation point) • コンポーネントを異なった要件で使⽤できるようにするためメカニズム • プロパティ・ファイルなどで実現 第18回 設計モデル Cloud 第9回 動的モデル 第5回 静的モデル(2) 再掲 第9回 物理モデル
  29. 29. モジュール (Module) • UMLのコンポーネントは元々、論理モデルの粒度=物理モデル の粒度という設定 • 実際の運⽤では論理モデルの粒度≠物理モデル粒度 • ⼀つのJARファイルに⼀つのコンポーネントしか実現できないのは⾮ 現実的 • コンポーネントは物理モデルを意識しつつも、論理モデルのモ デルとして使⽤したい • モジュールを導⼊ • コンポーネントを束ねた物理モデルを表現するモデル • 1つのモジュールで複数のコンポーネントを束ねる • Javaで実現する場合は、JAR、WARなどに相当 SM2021 第9回 物理モデル 第5回 静的モデル(2) 再掲
  30. 30. サービス (Service) • コンポーネントの⼀種 • 副作⽤を起こすというより値 を返す、状態を持たない (stateless)、関数的な (functional)コンポーネント • 実⽤的にはサービスそのものは 状態を持たないが、サービスか ら呼び出されるコンポーネント での副作⽤は発⽣する、という 解釈でよさそう 第5回 静的モデル(2) 再掲
  31. 31. サブシステム (Subsystem) • コンポーネントの⼀種 • システムを分割した⼤きな単 位 • システム規模が⼤きい場合に サブシステムに分割して開 発・管理 • 『コンポーネントに集約』で 説明したコンポーネントの各 種性質を⼤きな単位で管理す る 第5回 静的モデル(2) 再掲
  32. 32. システム (System) • サブシステムの⼀種 • コンポーネントの⼀種 • UMLでは⼀番外側のサブシス テムをシステムと考える、と いう定義 第5回 静的モデル(2) 再掲
  33. 33. コンポーネント分析
  34. 34. コンポーネント分析 • ユースケースを実現するアプリケーションの構造をアプリケー ション・モデルとして作成 • アーキテクチャ・モデル : アプリケーションの全体構造 • コンポーネント・モデル : 個々のコンポーネントの機能と構造 • コンポーネントは論理モデルと物理モデルの両⽅の側⾯を持つ モデル要素 • 分析段階でのコンポーネントの取り扱い • 論理的なモデルとして扱う • 設計以降でのコンポーネントの取り扱い • 物理モデルの側⾯を追加
  35. 35. モデル • アプリケーション・モデル • アーキテクチャ・モデル • コンポーネント・モデル • ドメイン・モデル • エンティティ・モデル • ルール・モデル • イベント・モデル • 物理モデル • モジュール・モデル
  36. 36. コンポーネント分析/ アプリケーション・モデル
  37. 37. アーキテクチャ・モデル • サブシステムを軸にアプリケーション全体の構造をモデル化す る • コンポーネントをビルディング・ブロックとして、サブシステ ム/コンポーネントの包含関係を構築 • 設計では物理モデルまでスコープに⼊るが、分析では論理モデ ルまで
  38. 38. 第5回 静的モデル(2) 物理モデルの階層 再掲 第9回 物理モデル
  39. 39. アーキテクチャ・モデル
  40. 40. コンポーネント・モデル • サブシステムの構造をコンポーネントを軸にモデル化する • コンポーネントの外部仕様を定義 • 2つのインタフェース • 要求インタフェース (required interface) • 提供インタフェース (provided interface) • レセプション • シグナル受信 • 状態機械 • コンポーネント内オブジェクトの状態遷移 • コンポーネントの内部構造を定義 • 合成構造図
  41. 41. コンポーネント・モデル
  42. 42. コンポーネント分析/ ドメイン・モデル
  43. 43. ドメイン・モデル • コンポーネント・モデルを作成しながら具体化、詳細化 • エンティティ・モデル • エンティティ⽤のコンポーネントの作成 • エンティティをコンポーネントへ割当 • ルール・モデル • ルール⽤のコンポーネントの作成 • ルールをコンポーネントへ割当 • サービス・モデル • サービス⽤のコンポーネントの作成 • サービスをコンポーネントへ割当 • イベント・モデル • イベントの作成 • イベントのコンポーネントへの割当
  44. 44. コンポーネント分析/ 物理モデル
  45. 45. 物理モデル • コンポーネント・モデル • 分析では物理モデルを作成する必要はないが、コンポーネントの物理 的な側⾯は意識しておくのがよい • モジュール・モデル • 配備の単位として意識しておく • コンポーネントの集まりを物理モデルにまとめる
  46. 46. 実践コンポーネント分析
  47. 47. 設計オブジェクトの抽出 • アクター • UI経由でシステムにアクセスする利⽤者 • 利⽤者の代理オブジェクト(ユーザー)がエンティティ・オブジェクトとして管理される • セッション情報の管理も必要 • 通信相⼿の外部システム • 時間 • バウンダリ • UIを実現するオブジェクト • RPCを実現するオブジェクト • エンティティ • エンティティ・オブジェクト(永続オブジェクト) • 主にデーターベースに格納して管理 • コントロール • 責務(responsibility)を表現 • オブジェクトのオペレーション
  48. 48. 設計オブジェクトからコンポーネントへ • アクター • ユーザーの管理や認証・認可を⾏うコンポーネントにまとめる • バウンダリ • UIを実現するオブジェクトをコンポーネントにまとめる • RPCを実現するオブジェクトをコンポーネントにまとめる • エンティティ • エンティティ・オブジェクトをコンポーネントにまとめる • コントロール • オペレーションまとめたオブジェクトをコンポーネントにまとめる
  49. 49. ロバストネス図 第15回 分析
  50. 50. コンポーネント境界の基準 • 機能境界 • アーキテクチャ上の役割 • PAC(Presentation/Abstract/Control) [POSA] • 原理 • SOLID [ASD] • GRASP • Low Coupling / High Cohesion • パターン • Knowledge Level [AP] • Knowledge level / Operation Level • Responsibility Layers [DDD] • Decision / Policy / Operation / Commitment / Potential • テスタビリティ 第18回 設計モデル 第21回 アプリケーション・アーキテクチャ 第18回 設計モデル 第18回 設計モデル 第20回 テスト
  51. 51. バウンダリ・オブジェクトから WebやiOS/Androidアプリケーションを抽出 例題のロバストネス図のスコープ外だが 運⽤管理系の管理コンソールも必要なので追加 サービスのコンポーネントと 機能実現のコンポーネントを分離 利⽤者向けと管理向けの 2系統のインタフェースを⽤意 アーキテクチャ・モデル
  52. 52. ステレオタイプ 名前 説明 UML subsystem サブシステム ○ service サービス ○ facade ファサード - web Webフロントエンド - ios iPhone/iPadアプリケーション - android Androidアプリケーション -
  53. 53. アプリケーション・ロジック 管理ロジック 利⽤者がリソースの更新を⾏うアプリケーションでは、 利⽤者管理、セッション管理が必要なので、この処理を 司るコンポーネントを追加 エンティティの格納・管理を⾏う コンポーネント イベント駆動アプリケーションで イベントの発⽣、実⾏を司る ジョブ実⾏やイベント駆動などの バックグラウンド処理を⾏う コンポーネント コンポーネント・モデル 通知機能を司る
  54. 54. オペレーションの定義 コンポーネントのオペレーションでは 引数、復帰値をValue Object [DDD]で受け 渡すのがよい 実際には実⾏コンテキストな どの受け渡しが必要 第18回 設計モデル
  55. 55. まとめ • コンポーネント • CBD (Component-Based Development) • コンポーネント分析 • アプリケーション・モデル • ドメイン・モデル • 物理モデル • 実践コンポーネント分析 • ロバストネス図からアプリケーション・モデル、コンポーネント・モ デルへ
  56. 56. 参考⽂献 • 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)

×