BDDとDDD - Dan North
この記事はDan North氏が、QCon London 2009において行った発表"BDD and DDD"のスライドを、氏の許可を得て翻訳したものです。
「コア・ドメイン」を識別する
共通理解を発展させる
戦略的DDD
ふるまい駆動開発とは何か?
- 「ステークホルダの視点から見たアプリケーションのふるまいに焦点を当てたもの」 - 私 (^^)
アウトサイド・インの開発
- 要件をストーリーとして表現する
ストーリー28:患者情報の詳細を参照する
最も適したガスを選択するために
麻酔医は
患者の手術歴を参照したい
完了についての合意
- 受入基準を複数のステップからなるストーリーとして定義する
シナリオ:履歴がある患者
Given: ファイル上にその患者の情報があって
And: その患者が過去に手術を受けたことがあることを前提に
When: 患者の手術歴を要求した場合
Then: 過去の処置を全て見ることができる
シナリオの自動化
- シナリオの各ステップが実行可能なコードになる
In Ruby: Given “we have a patient on file” do # ... end
In Java: @Given(“we have a patient on file”) public void createPatientOnFile() { // ... }
実装のためのコード例
- TDDとしても知られている
- 分かっているものを使って、端から始める
- 最も外側のオブジェクトとサービスを実装する
- 内部で協力して動作するものを発見し、差し当たりMock化しておく
- 終わるまで繰り返す
ステークホルダとはアプリケーションを気にかける人全て
実際、いつも起こっていること
それではDDDはどうBDDと関連するか?
言葉を変えれば、DDDはBDDを可能にする
何か質問は?
- DDD
- Domain-Driven Design by Eric Evans
- Applying Domain-Driven Design and Patterns by Jimmy Nilsson
- BDD
- 私