ドメイン駆動設計とユーザストーリーマッピングを組み合わせる

必要な機能の実装に追い立てられて、開発者はビジネスの理解を共有するのに必要な会話をおろそかにしてしまいがちだ。技術的な議論で盛り上がったまま実装に突入してします。その結果、ドメインを学習し、ドメインの概念を使ってソフトウエアをモデリングするという機会を失ってしまう。Eriksen Costa氏ブログユーザストーリーマッピングドメイン駆動設計(DDD)を組み合わせることのメリットについて説明している。

WikiduのCTOである氏はテスト駆動開発と継続的統合のような別々の手法を使ってソフトウエアに品質を注入しているが、そうすることによって、自動的にドメインの概念がソフトウエアに組み込まれているわけではない、という。そして、Eric EvansDDD本を引き合いに出す。

もしプログラマがドメインに興味がなかったら、彼らはアプリケーションがするべきことだけを学び、その背景にある原理を学びません。便利なソフトウエアはその方法でも作ることができます。しかし、古い機能から新しい強力な機能が生まれる地点にはたどり着けません。

Costa氏はDDDは技術に関することではない、新しいアプローチをソフトウエア開発にもたらしたということを強調する。それは、開発者とドメインの専門家が議論して共通の理解に到達することに注力する方法であり、ドメインを説明するためのモデルと共通言語(ユビキタス言語)を構築する方法だ。

共通理解に向かうためのストーリーマップを作成することは、開発者がDDDを実践するため動機になり得るとCosta氏は考えている。ストーリーマッピングは大きな見取り図に関する情報をはっきりと視覚化しどのストーリーから取りかかるべきか優先順位をつけるのを支援する。皆で努力すれば、会話に刺激が生まれ開発者は自分たちの働きが大きな見取り図にどのようにフィットするのか、より良く理解できる。また、チームのメンバの関係を強め、ビジネスのゴールにより意識的になれる。

Costa氏はユーザストーリーマッピングの基本的な概念を説明している。Jeff Patton氏Gojko Adzic氏はユーザストーリーとインパクトマッピングについてさらに詳しく書いている。ユーザストーリーを分割する -- ハンバーガーメソッドという例もある。

Costa氏はDDDを導入する上でユーザーストーリーマッピングはシンプルだが価値あるパターンだと結論づける。ストーリーマッピングば開発者とドメインの専門家の間の共通のドメイン知識と初期のユビキタス言語を作成するのを支援する。