はじめに
私は日本の大手企業において、POをしており、モダンオフショアでスクラム開発を行っています。
今回局所的なテーマ「バックログ」について、整理してみました。
ここでは、新しい旅行アプリを構築することをサンプルにしています。
1. ユーザーストーリー
POはバックログを作るために、最初にユーザーストーリーが必要です。テンプレートは次の通りです。
AS A [user]
ユーザー/役割としてI WANT [function]
機能/性能ができるSO THAT [value]
それにより価値がもたらされる
それでは、ユーザーストーリーを記述してみます。
- 旅行者として、過去の旅行履歴に基づいて、提案をもらうことができる。そうすれば、計画を立てやすくなる。
- 旅行者として、ローケーションで検索できる。そうすれば、目的地を見つけやすくなる。
- 旅行者として、価格で検索できる。そうすれば、予算内で目的地を見つけやすくなる。
- 旅行者として、幾つかの旅行オプションを知ることができる。そうすれば、多くの選択肢を持てる。
- 旅行者として、交通機関を予約できる。そうれば、一つのアプリケーションですべての調整を完結できる。
- 旅行者として、レンタカーを予約できる。そうすれば、一つのアプリケーションですべての調整を完結できる。
- 旅行者として、プロモーションを見ることができる。そうすれば、オファーを活用できる。
- 航空エージェントとして、旅行者のために、航空TICKETの予約を簡単にできるようにする。そうすれば、乗客をわたしたちの航空機に惹きつけられる。
- ホテルエージェントとして、ゲストのために宿泊を簡単に予約できるようにする。そうすれば、ゲストを私達のホテルに惹きつけられる。
ユーザーストーリーは、最初ユーザーストーリーマッピングなどを使って、整理するとよいです。またステークホルダーや開発チームも一緒に参加してもらうとよいです。(実際にはうまくできていませんが・・・)
2. 受け入れ条件
ユーザーストーリー毎に、開発チームの開発基準となる、受け入れ条件を追加します。
ビヘイビア駆動開発 (BDD)のテンプレートを使うと便利です。
GIVEN
前提・初期コンテキストWHEN
シナリオをトリガーする条件THEN
期待される結果
-
ユーザーストーリー:旅行者として、過去の旅行履歴に基づいて、提案をもらうことができる。そうすれば、計画を立てやすくなる。
GIVEN: ユーザーはユーザープロファイルを見ている WHEN: ユーザーは旅行検索ページを開く THEN: ユーザーは検索履歴に旅行提案を見る
3.優先順位
そして、優先順位を付けます。これはPOの重要な役割の一つです。
4.ストーリーポイント
開発チームは、最初のスプリントを見積もりします。そのため、過去のデータはありません。
ベロシティは過去のデータに基づいています。ベロシティとは、1つのスプリントでどれだけのストーリーポイントを完成させることができるかを見積もることです。
もし、過去データがないのであれば、当然、他の基準が必要です。アジャイルの世界では、いくつかの初期基準を与えてくれます。
たとえば、1人のチームメンバーが2週間のスプリントで約8ポイントを与えてくれるとします。
もし、メンバー数が4人なら、4×8で40ポイントです。2週間のスプリントで40のストーリーポイントを作成することになります。
そして次のスプリント、スプリント2では、40がうまくいった場合、その数字を使うことになります。しかし、ベロシティが何であれ、スプリント1で完了したストーリーポイントの数は、スプリント2で使用する過去のデータです。