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

目次

セミナー概要

2006年にAWSの最初のサービスであるS3, EC2が公開されてから15年、クラウドプラットフォーム上でWebアプリケーションや業務アプリケーションを構築することが普通になってきました。

クラウドプラットフォームでは、従来メインフレームやUNIXサーバーなどの上で、大規模アプリケーションを構築するために使用されていたメッセージングなどの各種ミドルウェアが安価に使用できるようになりました。安価に気軽に使用できるようになったということは、これらのミドルウェアを組み込んだ高度なアプリケーションの構築が日常になったということです。

またマルチサーバーを気軽が使用できるようになったことにより、スケーラビリティ(scalability)や弾力性(resilient)といった特性をアプリケーションに組み込むことも容易になっています。さらにBigDataやAI、マイクロサービス、DXといった新しい技術分野が登場し、アプリケーション開発で取り扱わなくてはいけない要素技術の質と量が飛躍的に増大しました。

このような複雑化したアプリケーション開発に対して、要求仕様を定義し適切な分析設計を行うためには、より高い技術力が求められるようになってきたと言えるでしょう。個々の要素技術への理解も重要ですが、それらの技術をつかって、どのようにアプリケショーン全体をまとめあげていくのか。

そのための方法論として、ソフトウェア工学の集大成ともいえる開発方法論であるオブジェクト指向分析設計(OOAD, Object-Oriented Analysis and Design)が有力な候補となります。そして、オブジェクト指向分析設計の土台の上で、クラウド時代の新しい要素技術、応用への対応方法を整備していくことが現実解となるでしょう。

本講座「クラウドアプリケーションのためのオブジェクト指向分析設計講座」では、このような問題意識からクラウド時代のアプリケーション開発に必要なオブジェクト指向分析設計方法論について解説します。

本講座の全体構成

「クラウドアプリケーションのためのオブジェクト指向分析設計講座」は以下の3部構成を予定しています。

  • 第1部 基本編
  • 第2部 クラウドアプリケーション編
  • 第3部 モデル駆動開発編

「第1部 基本編」の概要と今後の予定

第1部ではオブジェクト指向分析設計の基本について解説します。

オブジェクト指向分析設計の重要性は増しているにも関わらず、これを学ぶ機会は大きく減少していると思われます。このため、まずオブジェクト指向分析設計の基本を第1部として用意しました。

HaskellやScalaの登場により関数型プログラミングの重要性が認識され、オブジェクト指向と関数の連携についても重要な論点になってきました。「関数」は今後より重要性が高まってくる並列処理、分散処理に対するキーテクノロジーとなる可能性があります。

このような観点から、従来からのオブジェクト指向分析設計に「関数」の考え方を取り入れていく必要があります。いわば”オブジェクト関数型分析設計(Object-Functional Analysis and Design)”という枠組みに拡張したオブジェクト指向分析設計が必要になってきますが、本講座ではこの点についてもカバーしていく予定です。

第2部では第1部で解説したオブジェクト指向分析設計をベースにクラウドアプリケーションの分析設計について解説する予定です。

第3部ではオブジェクト指向分析設計の理想形であるモデル駆動開発について説明する予定です。

「第1部 基本編」の構成

本講座は以下の5つのセクションで構成されています:

  • 概要:UML/UPの基礎と本講座の位置づけ

  • 基本モデル:ユースケースモデル、クラス図、ステートチャートなどの基本的なUMLモデリング技術

  • 作業分野:UPの作業分野(ビジネスモデリング、要件、分析、設計、実装、テストなど)の整理と解説

  • アプリケーション・アーキテクチャ:クラウドアプリケーションを前提としたソフトウェアアーキテクチャの整理とUML適用の検討

  • ケース・スタディ:プロファイル定義を行い、現実的な規模のアプリケーションを題材にした実践的モデリングの試行

概要

第1回、第2回では講座の概要を説明します。

タイトル URL

1

概論

2

開発プロセス

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

本セクションでは、UMLとUnified Process(UP)の基礎的な考え方と、現代のクラウドアプリケーション開発においてこれらをどう再解釈するかの問題意識を提示します。

  • UML/UPの歴史的背景と意義

  • 重量級モデリング技術への批判とその再評価

  • 現代の技術(クラウド、DevOps、関数型)との接続

  • 本講座の目的と全体構成のガイドライン

このセクションは導入としての役割を果たし、全47回の講義の前提理解を助けるためのものです。

基本モデル

第3回から第9回はオブジェクト指向分析設計に用いるオブジェクト・モデルについて説明します。

タイトル URL

3

基本モデル

4

静的モデル(1)

5

静的モデル(2)

6

動的モデル

7

協調モデル

8

関数モデル

9

物理モデル

UMLが提供する構造・振る舞い・相互作用の3つの視点に基づいた基本モデリング技法を解説します。

  • ユースケース図(機能要求の明確化)

  • クラス図(構造モデルの基盤)

  • オブジェクト図(インスタンス関係の明示)

  • シーケンス図、コミュニケーション図(動的相互作用の記述)

  • ステートチャート図、アクティビティ図(振る舞いの可視化)

このセクションでは、記法の学習よりも、設計の意図をどのように表現するかに重点が置かれています。現場で「どの図を、どの粒度で、どのタイミングで使うか」の指針が中心となります。

UMLの定義するモデルを一通り取り上げた上で、関数モデルを追加しています。

作業分野

第10回から第33回はオブジェクト指向分析設計の開発を遂行する各作業分野について説明します。

タイトル URL

10

作業分野

11

ビジネス・モデリング

12

要求

13

要求/ユースケース

14

要求/シナリオ

15

分析

16

分析/コンポーネント分析

17

分析/イベント駆動

18

設計

19

設計/アーキテクチャ設計

20

設計/コンポーネント設計(1)

21

設計/コンポーネント設計(2)

22

設計/コンポーネント設計(3)

23

設計/ドメイン設計(1)

24

設計/ドメイン設計(2)

25

設計/ドメイン設計(3)

26

設計/ドメイン設計(4)

27

設計/ドメイン設計(5)

28

設計/原理

29

設計/UX/UI

30

実装(1)

31

実装(2)

32

実装(3)

33

テスト

UPにおける各作業分野(discipline)を取り上げ、モデリングの位置づけを整理します。

  • ビジネスモデリング:業務領域とシステム境界の明確化

  • 要求定義:ユースケースとアクターの整理

  • 分析:概念モデルと責任の割り当て

  • 設計:アーキテクチャ層、設計パターンの適用

  • 実装・テスト:コードとの接続、テスト駆動の観点からの設計補助

このセクションでは、ウォーターフォール的な硬直した工程モデルではなく、反復型・進化型開発に対応する柔軟なプロセス適用が重視されます。

アプリケーション・アーキテクチャ

第34回から第39回はアプリケーション・アーキテクチャについて説明します。

タイトル URL

34

アプリケーション・アーキテクチャ

35

Cloud Native CBD

36

ドメイン・サブシステム

37

アプリケーション・サブシステム

38

プレゼンテーション・サブシステム

39

Cloud Native Component Framework

現代のアプリケーション開発(特にクラウドベース)において、どのようなアーキテクチャ構成が一般的かを確認し、それに応じたモデリング方針を提案します。

  • レイヤードアーキテクチャ、クリーンアーキテクチャ、DDDなどの構造との関係

  • クラウドネイティブ環境(マイクロサービス、CI/CD、IaCなど)での構成要素

  • DevOpsやSREとの接続に必要な視点(運用・監視・回復性など)

  • 関数型パラダイムとの整合(状態管理、不可変性、関心の分離)

UMLによるモデリングの「対象」が変化していることを踏まえ、モデリングの適用レベルや粒度の再設計が検討されています。

ケース・スタディ

第40回から第47回はケース・スタディとして、実際のアプリケーションを想定したモデル構築を取り上げます。

タイトル URL

40

ケース・スタディ

41

ビジネス・モデル

42

要求モデル

43

要求モデル/BDD

44

分析モデル

45

設計モデル

46

実装

47

テスト

実際のシステムを想定したモデル構築を通して、理論的な技術が現実にどう適用できるかを検証します。

  • 想定システムの要件分析から始まり、各モデルの構築を段階的に実施

  • プロファイルの定義:全モデルを使用せず、目的に合った図表を選定

  • モデルの整合性とスコープ管理の具体例

  • 実装へのブリッジとしての設計モデルの役割を確認

ここでは「必要十分なモデルとは何か」「スリム化された設計技法で何が残るのか」が具体的に検討され、UML/UPの再構成の現実性と限界に迫っています。