Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

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

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 35 Publicité

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

Télécharger pour lire hors ligne

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

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

設計では分析で作成したプラットフォーム独立の抽象的なモデルから実装の入力となるプラットフォーム固有の
具象的なモデルを作成します。
今回は設計の全体像について概観します。次回からアーキテクチャ設計、コンポーネント設計、UX/UI設計に入っていく予定です。

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

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

設計では分析で作成したプラットフォーム独立の抽象的なモデルから実装の入力となるプラットフォーム固有の
具象的なモデルを作成します。
今回は設計の全体像について概観します。次回からアーキテクチャ設計、コンポーネント設計、UX/UI設計に入っていく予定です。

Publicité
Publicité

Plus De Contenu Connexe

Similaire à 設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】 (20)

Plus par Tomoharu ASAMI (12)

Publicité

Plus récents (20)

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

  1. 1. 設計 2022年12⽉23⽇ 浅海智晴 クラウドアプリケーションのための オブジェクト指向分析設計講座 第18回 作業分野
  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回] • 設計/ UX/UI設計 [第22回] • 実装 [第23回] • テスト [第24回] • アプリケーション・アーキテクチャ [第25回] • ドメイン・モデル [第26回] • アプリケーション・モデル [第27回] • プレゼンテーション・モデル [第28回] • ケーススタディ[第29回] • 要求モデル [第30回] • 分析モデル [第31回] • 設計モデル [第32回] • 実装 [第33回] • テスト [第34回]
  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. 内容 • 設計の位置づけ • 設計と実装 • 設計の構成 • アーキテクチャ設計 • コンポーネント設計 • ドメイン設計 • UX/UI設計
  7. 7. 設計の位置づけ
  8. 8. 本講座のアプローチ • オブジェクト指向分析設計の基本を確認 • UML + UP(Unified Process) • CBD (Component-Based Development) • 最新技術でアップデート • クラウド・コンピューティング • イベント駆動、分散・並列 • ビッグデータ、AI、IoT • コンテナ • 関数型 • OFP(Object-Functional Programming), Reactive Streams • ルール, AI • DevOps • アジャイル開発 • DX (Digital Transformation) 第8回 関数モデル 第2回 開発プロセス 第9回 物理モデル 第11回 ビジネス・モデリング 第2部 クラウド・アプリケーション編
  9. 9. 第10回 作業分野
  10. 10. 作業分野とモデルの関係 第10回 作業分野
  11. 11. ユースケース駆動開発
  12. 12. 設計 (Design) • 分析モデルをプラットフォームに特化した形で具体化する • PIM (Platform Independent Model) → PSM (Platform Specific Model) • プラットフォーム • プログラミング⾔語 • コンポーネント・フレームワーク • アプリケーション・フレームワーク • ミドルウェア • OS
  13. 13. 第9回 物理モデル 第16回 分析
  14. 14. 設計と実装
  15. 15. 設計と実装(1) • 設計と実装の棲み分けが論点 • UMLによる設計不要論 • オブジェクト指向の基本構造はオブジェクト指向プログラミング⾔語 (Javaなど)で記述可能 • プログラミング⾔語(Javaなど)+アノテーションでさらに⾼度なオブ ジェクト・モデルの記述が可能 • シーケンス図など実例を例⽰する系統のモデルは最終的に捨てること になる • ⼩規模なシステムは直接プログラミングから⼊っても体感的には問題 を感じない
  16. 16. 設計と実装(2) • プログラミング⾔語で直接記述できないモデル要素 • 状態機械 • イベント/レセプション • コンポーネント • 配備モデル • 本講座の⽴場 • 設計でのモデル作成は必要最⼩限でよい • プログラミング⾔語+アノテーションで記述可能な範囲はプログラミングで • アーキテクチャ設計、コンポーネント設計の仕様設計などはモデル化が有効 • モデル体系を理解した上で、将来不要となるモデルは”暗算”で開発を進める • 最終的にはテキストベースのDSL(Domain Specific Language)で記述してモデル 駆動開発を⾏うのが本講座のアプローチ 第3部 モデル駆動開発編 Model-Driven Travel Light SM2021
  17. 17. 設計の構成
  18. 18. ワークフロー • アーキテクチャ設計 • システムの全体構成を設計 • コンポーネント設計 • 個々のコンポーネントの仕様と実現を設計 • ドメイン設計 • アプリケーションが扱うドメイン・モデルを実現 • UX/UI設計 • 利⽤者が使⽤するUIを設計
  19. 19. 要素技術・⾮機能要求 • 振る舞い特性 • 性能 (Performance) • 反応時間 (Latency)、スループット (Throughput) • 可⽤性 (Availability)、スケーラビリティ(Scalability)、弾⼒性(Resiliency) • 実⾏環境 • データベース、ログ、サービス・バス、ジョブ管理 • コンテナ、マイクロ・サービス • 国際化 • セキュリティ (Security) • 認証(Authentication)、認可(Authorization)、監査(Audit Trails) • 信頼性 (Reliability) • 静的型付け、関数型 • テスト容易性 (Testability) • DI (Dependency Injection)、コンテナ • DevOps • 配備、運⽤、コンテナ 第2部 クラウド・アプリケーション編
  20. 20. 新技術 • クラウド・コンピューティング • イベント駆動、分散・並列 • ビッグデータ、AI、IoT • コンテナ (Docker/Kubernetes) • 関数型 • OFP (Object-Functional Programming), Reactive Streams • ルール, AI • DevOps • アジャイル開発 • DX (Digital Transformation) 第8回 関数モデル 第2回 開発プロセス 第9回 物理モデル 第11回 ビジネス・モデリング 第2部 クラウド・アプリケーション編 Cloud
  21. 21. アーキテクチャ設計
  22. 22. アーキテクチャ設計 • 分析で作成したアーキテクチャ・モデルを具体化する • 論理モデル • サブシステム、コンポーネントを定義 • サブシステム、コンポーネントを組み⽴ててシステムを定義 • 物理モデル • モジュールの組み⽴て、配備 第19回 設計/アーキテクチャ設計
  23. 23. アーキテクチャ設計/新技術への対応 • クラウド・コンピューティング • CQRS • Event Sourcing • マイクロサービス • 関数 • ルール • Reactive Streams • DevOps • Immutable Infrastructure/Infrastructure as Code
  24. 24. コンポーネント設計
  25. 25. コンポーネント設計 • 分析で作成したコンポーネントを具体化する • 論理モデル • コンポーネント仕様設計 • インターフェース設計 • レセプション設計 • コンポーネント実現設計 • 内部構造・振舞い • 物理モデル • コンポーネント実現設計 • 組み⽴て情報 • モジュール CBD 第20回 設計/コンポーネント設計
  26. 26. コンポーネント設計/新技術への対応 • クラウド・コンピューティング • コンテナ • 関数 • 型クラス • Applicative, Monad • Reactive Streams • ルール • DevOps • コンテナ • マイクロサービス • Infrastructure as Code
  27. 27. ドメイン設計
  28. 28. ドメイン設計 • 分析で作成したドメイン・モデルを具体化する • 論理モデル • プログラミング⾔語で扱える形に具体化 • データベースとの接続 • ORマッピング • 物理モデル • コンポーネントにパッケージング 第21回 設計/ドメイン設計
  29. 29. ドメイン設計/新技術への対応 • クラウド・コンピューティング • イベント駆動 • イベント、状態機械 • 関数 • 代数的データ型 (Algebraic Data Type) • 型クラス • Monoid
  30. 30. UX/UI設計
  31. 31. UX/UI設計 • 利⽤者が使⽤するUIを設計 • マルチスクリーン • スマートフォン(iOS, Android)、タブレット、Web • UIとサービスの分離 • 通知とBOT • PUSH, SMS, Twitter, Messenger, LINE • IA (Information Architecture) • コンテンツ中⼼のWeb + Webアプリケーション • 本講座では、モデリングとの関係を中⼼に⾒ていきます 第22回 設計/ UX/UI設計
  32. 32. UX/UI設計 /新技術への対応 • クラウド・コンピューティング • イベント駆動 • サービスとの双⽅向通信 (PUSH, SMS) • WebAssembly • 分散アプリケーション
  33. 33. まとめ • 設計は分析モデルをプラットフォームに特化した形で具体化 • 性能やセキュリティなどの⾮機能要件を実現 • 設計と実装の棲み分け • 実装中⼼ → UMLなどによる仕様のドキュメント化は最⼩限にする • 設計の構成 • アーキテクチャ設計 • システムの全体構成を設計 • コンポーネント設計 • 個々のコンポーネントの仕様と実現を設計 • ドメイン設計 • アプリケーションが扱うドメイン・モデルを実現 • UX/UI設計 • 利⽤者が使⽤するUIを設計
  34. 34. 参考⽂献 • 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)

×