アジャイル技法が十分に機能するようにユーザーストーリーを細分化することは、ほとんどの新しいアジャイルチームにとって困難である。アジャイルコミュニティのメンバーが、いくつかの記事を通してユーザーストーリーを効果的に分割する方法についてのガイダンスを提供している。
大きなユーザーストーリーを小さく分割する時に役立つ一般的なガイダンスは存在するのだろうか? Rachel Davies 氏は、ソフトウェアを開発するようにユーザーストーリーを分割することをすすめている。
- 作業
- 価値を提供
- ユーザーフィードバックを生み出す可能性
Richard Lawrence 氏は、大きなユーザーストーリーを分割する時に役立つ次のテクニックを提供している。
- ワークフローのステップごとにストーリーを分割する。おそらくエンドツーエンドの簡単なケースが1つのストーリーとなり、ワークフローの別のステップがそれらの分離したストーリーとなる。
- ビジネスルールのバリエーションごとにストーリーを分割する。
- ストーリーを「最初の[X]実装」と「残りの[X]実装」に分ける。これは「最初の[X]実装」に含まれる作業量が、それに続く [X]実装の作業量よりも大きくなりそうなときに使用できる。
- 複雑なストーリーに直面した場合、ストーリーを分解し、もっともシンプルなバージョンに分割する。
- 操作するデータの種類により、ストーリーを分割する。
- シンプルなデータ入力法と、複雑な入力法の違いにより、ストーリーを分割する。
- 現在のストーリーからパフォーマンスの考慮点を抜粋し、ひとつ以上の新しいストーリーに変える。
- ストーリーを、追加、更新、参照、削除(CRUD)で分ける。
- 最後の手段として、将来的にどのような実装にしたいかを考え出すスパイクストーリーを作る。
Rachel Davies 氏は、データの入力・出力に関するストーリーの分割方法を、より詳細に提供している。
- 画面への入力ごとにストーリーを作る。
- 入力画面の利用要素ごとにストーリーを作る。
- シンプルなUIごとに作る。
- コマンドラインインターフェースごとに作る。
さらに、 Bob Hartman 氏は、ストーリーを分割する次のテクニックを提供している。
- 多様なペルソナを持つストーリーでは、そのペルソナによって分割する。
- リスクのある部品を、よりリスクの少ない部品に分けられるように、ストーリーを分割する。
- 各ストーリーに取り組める開発者数が最大になるようにストーリーを分割する。
- テストをやりやすいようにストーリーを分割する。
ユーザーストーリーを分割するのに最も効果的な方法を見つけられましたか?