アプリケーション設計にはビヘイビア駆動開発 (Behaviour-Driven Development/BDD) を導入して,データベースではなくドメインに注目すべきだ,とJulie Lerman氏がMSDN Magazineの記事で主張している。
BDDとは,ビジネスドメインにおけるユーザストーリと振る舞い(ビヘイビア)に注目してロジックとテストの構築を行う手法で,クライアントと承認基準を議論する際にもしばしば用いられる,と氏は説明する。氏は2003年にMicrosoft MVPを取得し,現在は .NETプラットフォームのコンサルタントおよびメンタとして活動している。BDD初心者のために氏は,Visual StudioとC#,SpecFlowを使った小さなサンプル実装を開発した。
SpecFlowはBDDのためのオープンソースツールで,.NETプラットフォームで動作する。Cucumberファミリという,さまざまなプラットフォームをサポートするツールの中のひとつだ。これらのツールでは,ユーザストーリの記述にGherkinによるシナリオを使用する。Gherkinはキーワードに基づく記述言語で,もっとも重要なのはGiven, When, Thenなどだ。その言語を用いて,氏は小さなシナリオの例を示している。
前提(Given) – 顧客に関する情報は入力済
いつ(When) – 追加情報の入力完了時
ならば(Then) – 顧客情報をシステムに格納する
SpecFlowはVisual Studioに統合されて,シナリオ評価テストの生成や実行が可能だ。氏はこのシンプルなユーザストーリをもとに,これらのツールを使って,ひとつのテストプロジェクトを生成する。そこからユーザストーリを記述したシナリオのテストを作成し,実行するステップを,順を追って実演してみせている。
データギークを自称してはいるが,氏は顧客との連携を重視し,彼らのビジネスを理解している。そのような立場から,ドメイン駆動設計 (Domain Driven Design/DDD) とビヘイビア駆動開発を,遵守すべき重要な原則であると考えているのだ。
入門者向けガイド(Getting Started)などのより詳しい資料は,SpecFlowサイトで公開されている。
BDDは2006年頃,Dan North氏によって開発された。氏はBDDを紹介する文書や,BDDの立場から見たストーリについて記事を書いている。
また,BDDとも深く関連した例示による仕様(Specification by Example)という仕様定義手法もある。