ドメイン駆動開発道

ドメイン駆動開発を実践できず、悶々とする毎日を送るおやじSEのブログです。

2013-01-01から1年間の記事一覧

ドメインモデルの実装(4) ~PlaceOrderServiceTest~

前回モック用に作ったインターフェースを利用して、PlaceOrderServiceのテストコードを書きます。 @RunWith(JMock.class) public class PlaceOrderServiceTests extends TestCase { private PendingOrderRepository pendingOrderRepository; private Pending…

ドメインモデルの実装(3) ~implementing the method~

テストケースに対するアプリ側のコードを実装します。 public class PlaceOrderServiceImpl implements PlaceOrderService { private PendingOrderRepository pendingOrderRepository; public PlaceOrderService(PendingOederRepository repository) { this.…

ドメインモデルの実装(2) ~The valid delivery Information test case~

updateDeliveryInfo()が呼ばれるとき、PlaceOrderServiceはPendingOrderを読み出すか、存在しなければ生成する。 まずは、大枠として以下のシナリオを想定する。1) 入力されたデリバリ時刻が未来日時で、デリバリ情報に該当する少なくとも1つのレストランが…

ドメインモデルの実装(1)

最初にメソッドupdateDeliveryInfo()を実装します。 その後、updateDeliveryInfo()の中で呼ばれるPendingOrderのメソッドを実装します。 また、必要とされるリポジトリも識別し実装します。まずは、サービスのメソッドを実装。 public interface PlaceOrderS…

開発環境

これから実装を行っていくにあたり、環境を記しておきます。 使用するライブラリは順次追加していくつもりです。JDK: Java SE 6 update31 Tomcat:Tomcat 6.0.35 開発ツール:Spring Tool Suite(STS) 3.0.0Maven Dependenciesライブラリ: No. GroupID Artifa…

システムシーケンス図の作成

前回、システムイベントメッセージを抽出しましたので、それをもとにシステムシーケンス図を作成します。 システムシーケンス図については、書籍「実践UML」が参考になります。 とりあえず、最初のメッセージにだけ、引数を入れてみます。 [参考]

システムイベントメッセージの抽出

ユースケースから、お客のリクエスト(システムイベントメッセージ)を抽出します。そのシステムイベントメッセージ毎にメソッド名をつけます。 No. システムイベントメッセージ 説明 メソッド 1 Enter delivery Info お客がデリバリー情報を入力する。 Upad…

ドメインモデルに振る舞いを定義する方法

クラスの振る舞いを定義するために、クラスの責務やコラボレーションを識別する必要があります。 そのための方法はいろいろとありますが、本サンプルでは、以下の流れでクラスの責務やコラボレーションを識別します。 リクエストの識別・・・ユースケースや…

ドメインクラス図にServiceとRepositoryを追加

ドメインクラス図にServiceとRepositoryを追加します。

ドメインクラスの役割

ドメインクラス図のクラスを、役割によってカテゴライズします。 本サンプルでは、書籍「ドメイン駆動設計」より以下の役割けを利用します。 エンティティ(Entities) エンティティは、識別子を必要とするオブジェクト。本サンプルでは、PendingOrder、Orde…

ドメインクラス図

一発目のドメインクラス図です。 OrderとPendingOrderを一つにまとめてもよいのですが、複雑になるのでとりあえず別々に分けました。 今後ブラッシュアップしていきます。

ドメインモデルパターンのアーキテクチャ

ドメインモデルパターンを使ったアプリケーションを作成するので、 お馴染みのプレゼンテーション層、ビジネス層、永続化層の3階層で構成します。 ドメインモデルがビジネス層のコアとなり、プレゼン層やファサード層によって呼び出されます。 永続化が必要…

ユースケース「Place Order Use case」

今回使うサンプル・アプリケーションは、 料理の配達専門会社(Food To Go Inc.)がお客から料理の配達を受付するシステムです。 ユースケースはいろいろと想定されますが、1つ抜粋して、お客が注文する部分のユースケース「Place Order Use case」を扱います…

最初の題材

今後いろいろな題材を元に、ドメイン駆動開発(DDD)を勉強&実践していきます。まずは、書籍「POJOs IN ACTION」からのサンプルアプリを利用します。この本は、日本語に翻訳されていないので、マイナーかもしれませんが、 DDDをベースにして設計~実装まで解…

はじめに

現場では、相変わらず当たり前のように、DOAに基づく構造化手法での開発。 いつかは、実業務でドメイン駆動開発したいが、下請け的な開発が多いため、難しい。。。ということで、不満を抱えたまま過ごすのもアホらしいので、この場を借りてドメイン駆動開発…