TL; DR
ユーザーストーリーは、製品に追加する価値とその理由を文書化するためのものです。実装の詳細は、(たとえば、どのように値を追加、テスト、測定、または検証する必要があります)物語によって制約されているが、それらの中に含まれていません。これらは、フレームワーク内の柔軟性と俊敏性を維持するために、意図的に別個のアーティファクトとして残されています。
仕様と実装の詳細は、受け入れテスト駆動開発(ATDD)、テスト駆動開発(TDD)、および行動駆動開発(BDD)のスクリプトやシナリオなど、他の成果物に最もよく取り込まれます。これらの特定のアーティファクトはスクラムフレームワークによって必須ではありませんが、他の効果的なプロセスコントロールがまだ整っていない場合、確かに良い出発点となります。
ユーザーストーリーは仕様ではありません
元のポスター(OP)は次の質問をしました:
[A]顧客はクレジットカードごとに異なる処理を希望しているため、テストケースを作成できるように実装および既知の厳しい要件があります。
ユーザーストーリーは、ある機能の実現値を、いくつか提供してコンテキスト実装についての会話を案内する、とに縛ら視点値の消費者機能によってもたらされる価値の恩恵を受ける。
全体のポイントユーザーストーリーの実装の詳細は規範的ではないということです。チームは、識別された価値を適切なコンテキスト内で価値のある消費者に提供する方法で、この機能を自由に実装できます。
実例
サンプルユーザーストーリー
これは、曖昧さの少ないユーザーストーリーのセットから始める方が簡単に説明できます。OPはINVESTニーモニックに続く実用的なユーザーストーリーを提供しなかったため、例のために1つを発明します。次の話を考えてください:
Discoverカードで支払うこと
を希望するユーザーとして、
Visa、Mastercard、American Expressに限定されないように、Discoverカードで購入するオプションを希望します。
これは、具体的な機能を提供し、チームが行う必要がある実装の決定を導くことができるコンテキストを提供し、価値消費者をディスカバーカード所有顧客として識別します。それは一連の仕様ではありませんが、開発の反復中にストーリーを実装する最善の方法について、顧客やチームと適切な会話をするために必要なものです。
分析と実装
実際の実装はチーム次第です。チームは、以下を判断するためにいくつかの分析を行う必要があります。
- 新しい機能を実装する最も簡単な方法。
- 技術的な負債を計上することなく、今後のサポートが最も簡単な実装オプションはどれですか。
- オープンフィーチャとYAGNIの原則を適用して、過剰な設計をせずに新しい機能を堅牢にする方法。
アジャイルマニフェストの中核となる原則の1つは、顧客とのコラボレーションです。機能横断的な自己組織化チームは、ユーザーストーリーで提供されるガイドラインの範囲内で実装の詳細を決定するために顧客と協力できることが期待されています。
ユーザーストーリーが適切に記述されていない場合、またはチームがアジャイルフレームワークに必要な十分な分析を行うためのスキルやプロセスの成熟度を持たない場合、これは明らかに必要以上に困難になります。適切なレベルの粒度で優れたユーザーストーリーを作成する方法をテーマに、本全体が書かれています。残念ながら特効薬はありませんが、アジャイルチームにとって学習可能なスキルです。
テスト駆動設計および動作駆動設計
分析が適切であり、実装が健全でサポート可能であることを保証する最良の方法は、TDDおよびBDDプラクティスを使用することです。たとえば、上記のストーリーを考えると、チームは次のような成果物を通じて計画された実装をキャプチャする必要があります。
テスト可能なシナリオを備えたキュウリの機能。
これは、受け入れテストの開発を促進し、アプリケーションの動作に対するユーザーの期待を文書化するのに最も役立ちます。たとえば、ユーザーストーリーには、ユーザーがDiscoverカードでどのようにチェックアウトできるか、およびそのプロセスがどのように見えるかを説明する1つ以上の関連するCucumber機能が必要です。
新しいコード機能の動作(内部実装の詳細ではなく)を検証するRSpecテスト。
これは、アプリケーション内の機能の意図された動作を文書化および検証するのに最も役立ちます。たとえば、ユーザーストーリーは、Discoverカードを使用すると、支払いゲートウェイを介した販売を承認するためにアプリケーションが必要とするカード固有の動作を呼び出すことを保証する単体テストと統合テストの作成を促進します。
特定のツールは関係ありません。CucumberやRSpecが気に入らない場合は、チームに最適なツールや方法を使用してください。ただし、実装の詳細はユーザーストーリーに基づいているが、それによって規定されていないという点がポイントです。代わりに、実装(または必要に応じて仕様)は、機能を共同で開発する際に細かく調整する必要があります。