Contenu connexe Similaire à 分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】 (20) 分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】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. 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. 原理 (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. パターン (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, …
12. 分析 (Analysis)
• プラットフォーム中⽴の抽象的なモデル
• PIM (Platform Independent Model)
• 設計: PSM (Platform Specific Model)
• シナリオ分析
• 中間モデル:ロバストネス図
• コンポーネント分析
• コンポーネント
• システム・アーキテクチャ
• ⾒積もりの精度を⾼めたい場合は分析段階で再⾒積もり
CBD
13. 分析/主な成果物
• 中間モデル
• ロバストネス・モデル
• 新規
• アプリケーション・モデル
• システム・アーキテクチャ・モデ
ル
• コンポーネント・モデル
• モジュール・モデル
• ドメイン・モデル
• イベント・モデル
• データ分析モデル
• メトリクス・モデル
• 具体化
• UXモデル
• ドメイン・モデル
• エンティティ・モデル
• サービス・モデル
• ルール・モデル
• 開発計画/⾒積もり
16. UP (Unified Process)
• 『The Unified Software Development Process』
• 1990年代に乱⽴したオブジェクト指向開発プロセスを統⼀
• UMLが前提とするリファレン・スモデル
• CBD (Component-Based Development)
• アーキテクチャ
• ユースケース駆動 (use-case driven)
• 反復漸進 (iterative/incremental)
• アーキテクチャ中⼼ (architecture centric)
• ⼯程管理⽅式
• 計画駆動
• ⽂書中⼼
第2回 開発プロセス
再掲
27. コンポーネント (Component)
• 再利⽤可能な部品
• 明確な外部インタフェースを定め実装を隠蔽
• 新規開発を抑えることで開発期間短縮、品質向上を図る
• 再利⽤性の⾼い部品化は⾃然にできることではないので、コストを掛けて積極的に狙い
に⾏く
• 論理モデルと物理モデルの両⽅の性質を兼ね備える
• 配備の単位
• 物理的な側⾯ ⇒ モジュール
• オブジェクト指向分析設計による開発の様々な側⾯を集約してパッケージ化
• モデリングとプログラミングの結節点
• モデリングはコンポーネントまで。コンポーネントの実現はプログラミングで。
• 再利⽤可能な部品にするための仕掛けが必要
• コンポーネント・フレームワーク
• 実⾏コンテキスト
Travel Light
Travel Light
第5回 静的モデル(2)
再掲
第9回 物理モデル
28. オブジェクト指向分析設計の様々の側⾯
をコンポーネントに集約
• 機能の単位
• 機能を凝集(coherent)して実現
• 開発の単位
• コンポーネント単位で開発の管理を
⾏う
• 開発⼯程、担当者など
• モデリングの単位
• コンポーネントの実現はプログラミ
ングで
• 運⽤の単位
• 配備の単位
• バージョン管理
• 仕様書・マニュアルの単位
• 外部仕様、マニュアルの作成
• テストの単位
• テスト仕様の作成単位
• テストの進捗管理の単位
• 障害調査の単位
• 障害発⽣箇所の特定
• 障害調査マニュアルの作成
• 販売・課⾦の単位
• 再利⽤可能な商品
Scaling
第5回 静的モデル(2)
再掲
第9回 物理モデル
29. コンポーネント設計のポイント
• 凝集(highly coherent)と疎結合(loosely coupled)
• コンポーネントに機能を集約
• コンポーネント間の依存関係はできるだけ避ける
• 共通情報などは実⾏コンテキストに集約
• 提供インタフェース(Provided Interface)
• 外部に提供するインタフェースを定義
• 要求インタフェース(Provided Interface)
• 使⽤する外部コンポーネントのインタフェースを定義
• イベント
• サービス・バスを使ったイベント駆動
• 拡張点 (Extension point)
• コンポーネントの機能拡張を外部プログラムで⾏うメカニズム
• 要求インタフェースなどを使⽤
• 変化点 (Variation point)
• コンポーネントを異なった要件で使⽤できるようにするためメカニズム
• プロパティ・ファイルなどで実現
第18回 設計モデル
Cloud 第9回 動的モデル
第5回 静的モデル(2)
再掲
第9回 物理モデル
30. モジュール (Module)
• UMLのコンポーネントは元々、論理モデルの粒度=物理モデル
の粒度という設定
• 実際の運⽤では論理モデルの粒度≠物理モデル粒度
• ⼀つのJARファイルに⼀つのコンポーネントしか実現できないのは⾮
現実的
• コンポーネントは物理モデルを意識しつつも、論理モデルのモ
デルとして使⽤したい
• モジュールを導⼊
• コンポーネントを束ねた物理モデルを表現するモデル
• 1つのモジュールで複数のコンポーネントを束ねる
• Javaで実現する場合は、JAR、WARなどに相当
SM2021
第9回 物理モデル
第5回 静的モデル(2)
再掲
31. サービス (Service)
• コンポーネントの⼀種
• 副作⽤を起こすというより値
を返す、状態を持たない
(stateless)、関数的な
(functional)コンポーネント
• 実⽤的にはサービスそのものは
状態を持たないが、サービスか
ら呼び出されるコンポーネント
での副作⽤は発⽣する、という
解釈でよさそう
第5回 静的モデル(2)
再掲
48. 設計オブジェクトの抽出
• アクター
• UI経由でシステムにアクセスする利⽤者
• 利⽤者の代理オブジェクト(ユーザー)がエンティティ・オブジェクトとして管理される
• セッション情報の管理も必要
• 通信相⼿の外部システム
• 時間
• バウンダリ
• UIを実現するオブジェクト
• RPCを実現するオブジェクト
• エンティティ
• エンティティ・オブジェクト(永続オブジェクト)
• 主にデーターベースに格納して管理
• コントロール
• 責務(responsibility)を表現
• オブジェクトのオペレーション
51. コンポーネント境界の基準
• 機能境界
• アーキテクチャ上の役割
• 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回 テスト
53. ステレオタイプ
名前 説明 UML
subsystem サブシステム ○
service サービス ○
facade ファサード -
web Webフロントエンド -
ios iPhone/iPadアプリケーション -
android Androidアプリケーション -
56. まとめ
• コンポーネント
• CBD (Component-Based Development)
• コンポーネント分析
• アプリケーション・モデル
• ドメイン・モデル
• 物理モデル
• 実践コンポーネント分析
• ロバストネス図からアプリケーション・モデル、コンポーネント・モ
デルへ
57. 参考⽂献
• 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)