0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DDD(ドメイン駆動設計)の勉強&実践記録(二)

Posted at

要件定義とドメインモデリング

本記事の内容概要

(Uber eatsみたいな)オンラインフード注文・配達アプリ開発を例に下記の内容を説明します。
 ・業務分析のやり方(Event Strom)
 ・ドメインモデリング
 ・ドメイン、サブドメイン、コンテキストの判断方法

業務分析のやり方

DDD(ドメイン駆動設計)で一番重要なのは業務分析ですが、お客様と要件定義を行う際に下記の壁があります。
 ・お客様は自社業務に詳しいが、IT技術は何を実現できるかが分からない。
 ・SEはIT技術でどんなものを実現できるかが分かるが、お客様の業務が分からない。
そのため、どうお互い理解するかが重要となります。

DDDでは業務分析のやり方は以下となります。
 ① SEは積極的にお客様の業務(特に業務用語の意味)をできるだけ事前把握する。
 ② Event Stromでお客様との要件を聞き出す。
 ③ ドメインモデリングやUMLモデルを作成し、お客様と合意を取る。
 ④ ①~③を繰り返して、完成まで資料をブラッシュアップする。

イベントストーム(Event Strom)とは?

実際業務で起こっているイベントをベースにドメインモデリングをする方法です。
ポイント:
 ・ブレーンストーム(Brain Strom)会議
 ・業務専門家(顧客)、プロダクトマネージャー、開発専門家が参加
 ・業務で起こっているイベントを全部網羅すること

実際分析してみよう!

モデリング時に下記ツールを使用しています。(なんとこれにFree versionがあります!!)
Visual Paradigm Online : https://online.visual-paradigm.com/

・Event Stromでお客様との要件を聞き出す。

仮に今回アプリ開発についてBrain Strom会議の結果は以下のようになります。
※データベースモデリングするときに詳しく考えていきたいため、ユーザ情報(住所、名前、クレジットカードなど)、レストラン情報(場所、メニューなど)と配達員情報(名前など)は図に省略されています。

・ドメインイベントをまとめる
・ドメイン、サブドメイン、コンテキストを見極める

使用されている用語:
 ・問題領域:実際の顧客業務と起こっている問題のこと
 ・サブ問題領域:問題領域をブレイクダウンしたもの
 ・コンテキスト:サブ問題領域を中心にしたドメインモデル(単一責任の原則)
 ・コアドメイン:業務にとって重要なもの
 ・サブドメイン:コアドメインをサポートする業務
 ・汎用ドメイン:汎用的な業務
※見る視点によって、コアドメイン、サブドメイン、汎用ドメインが異なるため、顧客と十分やり取りをした後に合意する必要があります。

まとめ

本記事ではオンラインフード注文・配達アプリ開発を例にドメインモデリングをしてみました。
次回はこれをもとにマイクロサービス設計とイベント通知制御の設計をしようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?