web-dev-qa-db-ja.com

機能を共有するストーリーへの対処方法

私には2つのストーリーがあります(メリットの部分が欠けていることはわかっています)

  1. 与信管理ユーザーとして、オフィスの現在と以前の給与の違いを確認できます。
  2. 与信管理ユーザーとして、PDF=事務所の現在と以前の給与の差異を含むメールを受け取ることができます。

2つは同じクエリ/フィルター基準を持つという点で関連しています。唯一の違いは、「表示」ストーリーでは結果がユーザーに表示され、「メール」ストーリーでは結果がユーザーにメールで送信されるPDF)に書き込まれることです。

私はこれらの2つの物語の共通の側面の分離に苦労しています。

たとえば、どちらも同じクエリを使用しますが、結果に対する処理は異なります。

クエリを純粋に技術的な別のストーリーに分離する必要がありますか?

PDFの作成と電子メールの送信はオフラインで行う必要があります。技術的な話になるのでしょうか?

これらの2つのストーリーを2つの機能的ストーリーと2つの技術的ストーリーに分解することがわかりました。

  1. システムとして、オフィスの現在と以前の給与の違いを計算できます。

  2. 与信管理ユーザーとして、オフィスの現在と以前の給与の違いを確認できます。

  3. システムとして、PDF Officeの現在と以前の給与の違いのドキュメントを作成できます。

  4. 与信管理ユーザーとして、PDF Officeの現在の給与と以前の給与の差を含む)を含むメールの受信をリクエストできます。

私が何度も見ている問題は、4つのストーリーが独立しておらず、「ケーキをスライスする」ことではないことです。

したがって、これら2つをどのように処理するかはよくわかりません。

27
Joe Young

ユーザーストーリーは、システム仕様や機能要件ではありません。むしろ、そのような仕様や要件につながる可能性のある会話の始まりです。

したがって、システムの実装には重複があると思います。ユーザーストーリーは、そのような機能の重複を説明したり、それを排除したりするものではありません。ユーザーストーリーの目的は、実装の詳細を説明することではなく、ユーザーの観点から機能上の期待を捉えることです。

55
Robert Harvey

してはいけないこと:ストーリーを試して分割してください。

実行:開発チームが2番目のストーリーを認識していることを確認します。

詳細なタスクを計画し、両方をエレガントな方法で処理できる汎用モデルを作成しようとする場合の問題は、難しいことです。

ユーザーストーリーの目的は、物事を成し遂げることです。エレガントは二次的な目的であり、リファクタリングに任せるべきです。

これを最大限に活用し、実行する必要がある他の10の同様のタスクについて誰にも言わない場合、明らかにその非常に迷惑ですが、2番目または3番目のタスクは最初のタスクが完了するまで考えられないことも完全に考えられます。あなたがそれをすべて計画したいならば、滝を使ってください。

15
Ewan

Robert Harveyとの激しい合意において、ユーザーストーリーの目的は、ユーザーが実行できる必要があることを理解することです。グルーミングを行うと、顧客はユーザーストーリーを理解して気にしますが、開発者はもう少し気にします。作業を理解して推定するのに十分な質問をすると、それらをサポートするタスクを作成できます。

この特定のケースでは、どちらのユーザーが最初に取り組むかに合わせて実行される両方のユーザーストーリーのコアを有効にするタスクを作成できます。

ユーザーストーリーに追加する重要な点は次のとおりです。

  • 合否基準
  • 仮定
4
Berin Loritsch

厳密に言えば、ユーザーストーリーは、必要な結果を理解するための会話の約束です。

たとえば、2番目のユーザーストーリーを取り上げます

与信管理ユーザーとして、PDF=事務所の現在と以前の給与の差異を含むメールを受け取ることができます。

次のことを考えてください。

  • この要件を推進しているユーザーの「ニーズ」は何ですか? (PDFソリューションが彼らから来ているので、メールにありますか?これはニーズに対応していない可能性があり、チームはより良いソリューションを考え出すことができます)
  • このユーザーに「必要」に対処し、ソリューションを検証できる最小のスライスは何ですか?短いフィードバックループは価値があります。

ストーリーの分割に取り組むときは、可能であれば投資基準を覚えておいてください。

  1. [〜#〜] i [〜#〜]非依存
  2. [〜#〜] n [〜#〜]交渉可能
  3. [〜#〜] v [〜#〜] aluable
  4. [〜#〜] e [〜#〜]推定可能
  5. [〜#〜] s [〜#〜]モール
  6. [〜#〜] t [〜#〜] estable

自然な順序のストーリーがあっても問題ありません。それを考慮に入れてください-通常、最初のストーリーは必要な機能が組み込まれ、2番目のストーリーがそれに基づいて構築されるため、最初のストーリーは大きくなります。

「テクニカル」ストーリーに挑戦します。一般的には、ユーザーの結果に焦点を当てたストーリーの実装をサポートするためのタスクである可能性が最も高いからです。

2
Ilessa

TL; DR

両方のユーザーストーリーが同じイテレーション内で対象となると想定すると、ストーリーを実装計画とそれに伴うタスクに分解するのがチームの仕事です。ユーザーストーリーはコンテキストと範囲を提供します。それらは、実装、仕様、またはパンチリストアイテムではありません。

ストーリーは反復タスクに分解する必要があります

スクラムまたは他のアジャイル方法論のどちらを使用しているかに関係なく反復の計画段階をスキップすることは一般的なエラーです。スクラムでは、製品バックログ項目(ユーザーストーリー(厳密に言えば)が現在のスプリントに引き込まれ、チームはスプリント計画の一部を使用して作業項目間の共通点を抽出し、依存関係を特定し、次にスプリントバックログを開発することになっています。タスクレベルの作業をキャプチャします。

投稿で指摘したように、アジャイルなイテレーションが密接に関連するユーザーストーリーを含むことは珍しくありません(実際には望ましいことです)。スクラムでは、これはスプリントゴールの使用を通じて浮上します。スクラムフレームワークの外でも、関連するストーリーを引き込むことが理にかなっている理由共有する目的または共有する依存関係の。単一の反復内で共有依存関係を抽出してから作業することにより、チームは多くの場合、将来的には似ているが同一ではない機能のコードをリファクタリングまたは反復する必要を回避できます。

タスク実装ストーリー

ユーザーストーリーの依存関係の計画について考えるもう1つの方法を次に示します。一般に:

  1. エピック/テーマは、バックログの長期計画またはグループ化に使用されます。
  2. ユーザーストーリーは、目的、コンテキスト、スコープを伝えるために使用されます。
  3. ジャストインタイム計画は、単一の反復に収まる実装を開発するために使用されます。
  4. タスクは、1つ以上のユーザーストーリーの定義済みの定義を満たすジャストインタイム計画を実装します。

ユーザーストーリーを実装計画またはタスクリストとして扱うことは、ほとんどの実務家によって機敏なアンチパターンであると考えられています。それをどのように呼ぶにせよ、アジャイルフレームワークのジャストインタイムの計画段階をスキップせず、チームのプロセス内で依存関係と共有実装の詳細somewhereを必ず追跡してください。

2
CodeGnome