クラウドアプリケーションのためのオブジェクト指向分析設計講座
一般社団法人MaruLaboにて、オブジェクト指向分析設計の講座「クラウドアプリケーションのためのオブジェクト指向分析設計講座」を開講しました(全47回)。
本ページでは、その講義の概要と各回の公開リンクをまとめています。
目的
1997年にUML(Unified Modeling Language)がOMG(Object Management Group)によって公式にリリースされ、その後2000年初頭にはオブジェクト指向分析設計の標準的プロセスであるUnified Process(UP)が登場しました。
それからおよそ四半世紀が経ち、ソフトウェア開発の現場ではアジャイル開発、クラウド・コンピューティング、DevOps、関数型プログラミングといった新たな技術潮流を取り入れてきており、開発方法論は大きく変化してきました。
オブジェクト指向技術の到達点であるUML/UPはオブジェクト指向技術体系全体をカバーするため重厚な仕様になっており、アジャイル開発が広く受け入れられている現場では、その存在感は薄れつつある状況といえるでしょう。
とはいえ、現代のソフトウェア開発はオブジェクト指向技術が基盤になっているのは間違いなく、オブジェクト指向技術を効果的に取り入れる必要があります。
元々UML/UPは網羅的な仕様の中からプロジェクト毎に必要なモデルのみ選択したプロファイルを定義し、このプロファイルを使ってソフトウェア・システムのモデル化を行うことが想定されています。
この観点から、伝統的なUML/UPをベースにすることで堅牢なオブジェクト指向技術の土台を担保しつつ、現代的なオブジェクト指向技術のプロファイルを定義したい、というのが本講座の目標です。
本講座の目的は、以下の3点に集約されます:
-
オブジェクト指向分析設計の現在地を棚卸し
-
新しい技術要素の導入とモデリング技術の再構築
-
クラウド・コンピューティング
-
DevOps
-
関数型プログラミング
-
-
プロジェクトに応じた実践的なモデリング技術の提示
実開発において無理のない適用が可能なプロファイルを設定し、「現実的に使えるオブジェクト指向設計手法」を提示します。
本講座の構成
講座は以下の5つのセクションで構成されています:
-
概要:UML/UPの基礎と本講座の位置づけ
-
基本モデル:ユースケースモデル、クラス図、ステートチャートなどの基本的なUMLモデリング技術
-
作業分野:UPの作業分野(ビジネスモデリング、要件、分析、設計、実装、テストなど)の整理と解説
-
アプリケーション・アーキテクチャ:クラウドアプリケーションを前提としたソフトウェアアーキテクチャの整理とUML適用の検討
-
ケース・スタディ:プロファイル定義を行い、現実的な規模のアプリケーションを題材にした実践的モデリングの試行
概要
第1回、第2回では講座の概要を説明します。
回 | タイトル | URL |
---|---|---|
1 |
概論 |
|
2 |
開発プロセス |
本セクションでは、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の再構成の現実性と限界に迫っています。
総リスト
講義の総リストです。
回 | タイトル | URL |
---|---|---|
1 |
概論 |
|
2 |
開発プロセス |
|
3 |
基本モデル |
|
4 |
静的モデル(1) |
|
5 |
静的モデル(2) |
|
6 |
動的モデル |
|
7 |
協調モデル |
|
8 |
関数モデル |
|
9 |
物理モデル |
|
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 |
テスト |
|
34 |
アプリケーション・アーキテクチャ |
|
35 |
Cloud Native CBD |
|
36 |
ドメイン・サブシステム |
|
37 |
アプリケーション・サブシステム |
|
38 |
プレゼンテーション・サブシステム |
|
39 |
Cloud Native Component Framework |
|
40 |
ケース・スタディ |
|
41 |
ビジネス・モデル |
|
42 |
要求モデル |
|
43 |
要求モデル/BDD |
|
44 |
分析モデル |
|
45 |
設計モデル |
|
46 |
実装 |
|
47 |
テスト |