Más contenido relacionado
Similar a 設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】 (20)
Más de Tomoharu ASAMI (6)
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
- 2. 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
- 3. 第1部 基本編の構成
• 概論 [第1回]
• 開発プロセス [第2回]
• 基本モデル [第3回]
• 静的モデル(1) [第4回]
• 静的モデル(2) [第5回]
• 動的モデル [第6回]
• 協調モデル [第7回]
• 関数モデル [第8回]
• 物理モデル [第9回]
• 作業分野 [第10回]
• ビジネス・モデリング [第11回]
• 要求 [第12回]
• 要求/ユースケース [第13回]
• 要求/シナリオ [第14回]
• 分析 [第15回]
• 分析/コンポーネント分析 [第16回]
• 分析/イベント駆動 [第17回]
• 作業分野
• 設計 [第18回]
• 設計/アーキテクチャ設計 [第19回]
• 設計/コンポーネント設計(1) [第20回]
• 設計/コンポーネント設計(2) [第21回]
• 設計/コンポーネント設計(3) [第22回]
• 設計/ドメイン設計(1) [第23回]
• 設計/ドメイン設計(2) [第24回]
• 設計/ドメイン設計(3) [第25回]
• 設計/ UX/UI設計 [第26回]
• 実装 [第27回]
• テスト [第28回]
• アプリケーション・アーキテクチャ [第29回]
• ドメイン・モデル [第30回]
• アプリケーション・モデル [第31回]
• プレゼンテーション・モデル [第32回]
• ケーススタディ[第33回]
• 要求モデル [第34回]
• 分析モデル [第35回]
• 設計モデル [第36回]
• 実装 [第37回]
• テスト [第38回]
- 4. 本講座のアプローチ
• オブジェクト指向分析設計の基本を確認
• UML + UP(Unified Process)
• CBD (Component-Based Development)
• 最新技術でアップデート
• クラウド・コンピューティング
• イベント駆動、分散・並列
• ビッグデータ、AI、IoT
• コンテナ
• 関数型
• OFP(Object-Functional Programming), Reactive Streams
• ルール, AI
• DevOps
• アジャイル開発
• DX (Digital Transformation)
第25回 アプリケーション・アーキテクチャ
第2回 開発プロセス
第9回 物理モデル
第11回 ビジネス・モデリング
第2部 クラウド・アプリケーション編
第21回 設計/ドメイン設計
第20回 設計/コンポーネント設計
第2部 クラウド・アプリケーション編
- 5. 本講座の選択
• プログラミング⾔語
• Scala
• Javaエコシステム
• Pythonを併⽤
• コンテナ
• Docker/Kubernetes
• CI/CD
• Daggar
• ミドルウェア
• AWS
• クラウド・プラットフォーム
• AWS
• アプリケーション・フレームワーク
• 本講座が定義する仮想的なアプリケーション・フレームワーク
• コンポーネント・フレームワーク
• クラウド・アプリケーション
• 関数型
- 6. 原理 (Principle)
• Agile 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
• …
- 7. パターン (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, …
- 24. Supple Design [DDD] (柔軟な設計)
• Intention-Revealing Interfaces [DDD]
• 意図の明確なインタフェース
• Side-Effect Free Functions [DDD]
• 副作⽤なし関数
• Assertions [DDD]
• アサーション
• Standalone Classes [DDD]
• スタンドアロン・クラス
• Conceptual Contours [DDD]
• 概念的輪郭
- 30. Scala: for comprehension
• モナディック・パイプラインのためのシンタクスシュガー
def func(a: Int): Int =
val r: Option[Int] = for {
b <- f(a)
c <- g(b)
d = h(c)
e <- i(d)
} yield e
r.get
def f(x: Int): Option[Int] = ???
def g(x: Int): Option[Int] = ???
def h(x: Int): Int = ???
def i(x: Int): Option[Int] = ???
flatMapコンビネータ
mapコンビネータ
再掲 第8回 関数モデル
- 31. リアクティブ・ストリーム
• The Reactive Manifesto
• Reactive Streams
• ⾮同期ストリーム処理、バック
プレッシャー、ノンブロッキン
グ
• Akka Streams
• Reactive Stream & 関数
• FS2(Functional Stream for
Scala)
• Scalaz-stream
• ZStream
Cloud
再掲 第8回 関数モデル
- 34. Domain Driven Design [DDD]
• 中軸
• Ubiquitous Language [DDD]
• Model-Driven Design [DDD]
• Supple Design (柔軟な設計)
• Building Blocks
• Context (⽂脈)
• Distillation (蒸留)
• Large-Scale Structure
- 35. Building Blocks [DDD]
• Layered Architecture [DDD]
• Entities [DDD]
• Value Objects [DDD]
• Services [DDD]
• Modules [DDD]
• Aggregates [DDD]
• Factories [DDD]
• Repositories [DDD]
- 37. O/Rマッピング
• インピーダンス・ミスマッチ
• インヘリタンスの扱い
• Single Table Inheritance [PEAA]
• Class Table Inheritance [PEAA]
• Concrete Table Inheritance [PEAA]
• 関連の扱い
• Foreign Key Mapping [PEAA]
• Association Table Mapping [PEAA]
• Dependent Mapping [PEAA]
- 39. 排他制御
• RDBMSのトランザクション管理が基本
• パターン
• Unit Of Work [PEAA]
• Optimistic Offline Lock [PEAA]
• Pessimistic Offline Lock [PEAA]
• Coarse-Grained Lock [PEAA]
• Implicit Lock[PEAA]
- 41. DSL (Domain Specific Language)
• ドメイン特化⾔語
• ドメインに特化して、ドメインの構造を簡潔に分かりやすく記述する
ことができる⾔語
• Declarative Style [DDD]
• 実現⽅式
• プログラミング⾔語組み込み
• Scala
• メタ⾔語 (XML, JSON)の上に構築
• 新規に⾔語を作成
第3部 モデル駆動開発編
Model-Driven
- 49. 参考⽂献
• 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)
• Domain-Driven Design: Tracking Complexity in
the Heart of Software (Evans, 2003)
• Applying Domain-Driven Design and Patterns :
With Examples in C# and .NET. (Nilsson, 2006)
• Analysis Patterns: Reusable Object Models (Fowler,
1996)
• Enterprise Patterns and MDA : Building Better
Software with Archetype Patterns and UML (Arlow
他, 2004)
• Patterns of Enterprise Application Architecture
(Fowler他, 2002)
• Design Patterns : Elements of Reusable Object-
Oriented Software (Gamma他, 1995)
• Functional and Reactive Domain Modeling (Ghosh,
2016)
• Functional Programming in Scala (Chiusano他,
2014)