ドメイン駆動設計
ドメイン駆動設計(DDD)は、進化し続けるコアビジネスロジックのモデルで複雑なソフトウェアを、接続された小さな要素に変換して開発しやすくする手法です。これは、複雑なシステムを開発するための手法とプロセスに対する解決策になります。DDDの主眼は、問題となるドメイン内のビジネスプロセスをソリューションドメインのテクノロジー成果物にマッピングすることです。
以下の点が前提となります。
-
プロジェクトの主眼をコアドメインとドメインロジックに置く。
-
モデルに基づいて複雑な設計を行う。
-
技術専門家とドメイン専門家が創造的にコラボレーションを行い、反復しながら問題の概念的な核心に迫る。
前提としては単純なものです。単純に見えますが、複雑な現実世界で成し遂げるのは容易なことではありません。それには、新しいスキル、規律、体系的なアプローチが必要になります。
ドメインとは
ドメインは、ソフトウェアで解決する必要があるビジネス上の問題の境界です。しかし、ドメインを認識するにはどうすればよいでしょうか。そのためには、「ドメイン専門家」とも呼ばれるスペシャリストを加える必要があります。ドメイン専門家は、知識を移転し、ドメインを強化して、その理解を促すスタッフです。また、ドメインのモデル化も支援します。モデル化は、ビジネスを業務に基づいてブロックに分解したり、所有権や管理性を強化したり、ブロックに簡素化したり、変更のリスクを軽減したりすることによって行います。
モデルを設計する際の経験則
-
コアドメインに焦点を当てます。
-
ドメイン担当者とソフトウェア担当者の創造的なコラボレーションによってモデルを設計します。
a. 業務別の設計
- 各ドメイン間の強い依存関係が許可されないため、衝突がなくなり、独立性が高くなります。
b. ドメイン間の疎結合
- 各ドメイン間の強い依存関係が許可されないため、衝突がなくなり、独立性が高くなります。
c. 独立したライフサイクルの確保
- すべての業務がドメインに変換され、明確な独立したライフサイクルを確保できるようにします。
-
すべてのステークホルダが意思疎通して効率的に作業できるように、誰もが理解できる言葉で話します。