私はより機敏な作業慣行を奨励しようとしています。ユースケースとユーザーストーリーの違いを理解しようとしています。 「ユースケース」、「ユーザーストーリー」、「使用シナリオ」の違いは何ですか? および 1:1と仮定するのは妥当ですか?)ユーザーストーリーとユースケースの関係?
質問は、アプローチが技術的な観点からどのように異なるかに焦点を当てています。私は、具体的にどれを選ぶかを具体的に理解しようとしています。 1つの記事は提案します:
ユーザーストーリーを使用して製品バックログアイテムを定義する
ユースケース図を使用してスプリントバックログアイテムを定義します(スプリントバックログを理解する方法は、それがプロダクトバックログであり、スプリント上で完了する必要のあるステップに分解されることです)。
スプリント中にユースケーステクニック(UMLなど)を使用できることを意味するので、この考え方が気に入っています。
これは通常のアプローチですか?そうでない場合、いつユースケースを使用し、いつユーザーストーリーを使用しますか?
個人的には、どちらか一方のみを使用し、両方は使用しません。
私の考えでは、ユーザーストーリーは、「できる限り、これがどのように行われるかは気にしません」という仕様を書く方法です。
「タクシーライダーとして、私は受け入れる前に価格を確認できるので、購入しないことを選択できます。」
ユースケースとして、アプリが何をして何を表示すべきかを正確に定義します。
open app->enter destination->see price->accept or reject
ユーザーストーリーは、設計タスクを開発者にプッシュしようとしていますが、ユースケースでは、設計が完了したので実装します。
UMLが存在する前にこの概念を発明した人 Ivar Jacobson の定義を見てみましょう。
ユースケースは、システムを使用して特定のユーザーの特定の目標を達成するすべての方法です。すべての使用例のセットをまとめると、システムを使用する便利な方法がすべて提供され、システムが提供する価値が示されます。
彼が発明したUMLユースケース図は、俳優が達成しようとしている目標と期待される相互作用に焦点を合わせるのに役立つアーティファクトにすぎません。これにより、板紙での利害関係者や同僚とのインタラクティブな議論が容易になります。しかし、これ以上の説明がなければ、これらの図には 少しの付加価値 があります。
Alistair Cockburn ユースケースの定義と説明について詳しく説明します。
ユースケースは、シナリオで構成される目標です(ユースケースと目標は同じ意味で使用されます)。シナリオは、目標を達成するための一連のステップで構成され、シナリオの各ステップは、ユースケースのサブ(またはミニ)目標です。議論中のシステムと外部アクターの間で考えられるシナリオのコレクション。主アクターがシステムの宣言された責任に向けた目標を特徴とし、主アクターの目標がどのように提供されるか、または失敗するかを示します。そのため、各サブ目標は、別のユースケース(従属ユースケース)またはユースケース分解で必要な最低レベルの自律アクションを表します。
Jacobsonは最近、元のアプローチをより俊敏なプラクティスにするために更新しました。ユースケースのさまざまなシナリオを繰り返し実装できるUCスライスにスライスすることを推進しています。これは彼の無料の電子ブック "ユースケース2.0" で非常によく説明されています=
多くの記事がそれを説明しています。残念ながら、まだ多くのものがユースケースをUMLサブセットと見なしている、またはそれらをウォーターフォールのような方法で過度に詳細な仕様を記述する古い方法と見なしています。これらの風刺画のスケッチを取り除きましょう:
ユーザーストーリーは、ユーザー指向のビューをユーザーストーリーに分解し、ユーザーストーリーに分解し、必要に応じてさらに分解して、期待されるSW機能を出現させます。残念ながら、フラットなバックログは全体像を失うリスクがあります。したがって、Jeff Pattersonは ユーザーストーリーマッピング アプローチを採用しました。
ユースケースは、目標指向、システム中心のビューを提供します。目標はより実現可能な目標に分解されますが、分解が多すぎて早い場合は、もはやアジャイルではありません。ジェイコブソン氏は、これを防ぐためにユースケーススライスを用意しました。
しかし、結局のところ、それはそれほど異なりますか?OK、要件を特定し、それらを分解することを選択した方法は異なります。しかし、ユーザーストーリーは、ニーズ/機能と目標を結び付けます(目標が中心ではないということだけです)。一方、ユースケースは、ユーザーと話し合うことで識別されます(モデルの中心にいないだけです)。そして、わかりました、ユースケースのシナリオを特定する必要があります。しかし、ユーザーストーリーの受け入れ基準を定義するときに、それらを念頭に置く必要はありませんか?したがって、最終的には、異なるリスクを伴うわずかに異なるパスをたどる場合でも、同じ結果が得られます。
できますよ !問題は、その目的です。
製品バックログのユーザーストーリーとスプリントバックログのユースケースを取ることは、私には非常に悪い考えのようです。スプリント計画のために、製品のバックログユーザーストーリーをユースケースに変換する必要があるからです。上記のように、両者の間には1対1の変換はありません。したがって、不要なオーバーヘッドを作成します!
したがって、私のアドバイスは、1つを選択して体系的に使用することです。
最良のものは、実際にはコンテキストに依存します。例えば:
グーグルで検索することで、米国とUCまたはUCのバッシングについて明確な立場を持つ多くの記事を見つけることができます。したがって、上記のテキストのリンクに加えて、より客観的ないくつかのリソース、およびUCとビジネスプロセス間の特定のリンクに対処するいくつかのリソースを推奨します。
「アジャイル」と「オブジェクト指向」の両方の目標の1つ、および「ddd」(ドメイン駆動設計)などの他のいくつかのアイデアは、開発者がビジネスを理解することです。ドメインの専門家になり、共通の理解と共通の言語を開発します。
重要なのは、ユーザーストーリーやUMLなどの特定のツールを使用しないことです。チームと文化に適したツールを使用することです。開発者がUMLを使用して何が議論された(または議論されている)かを覚えている場合は、それを使用してください。私たちのほとんどは、実際には怠惰であり、それほど多くの形式主義を望んでいません。そのため、ストーリーはほとんどの場合機能します。
また、実験!しばらくUMLを使用して、または使用せずに試して、何が効果的かをチームと話し合ってください。 「アジャイル」の優れている点は、フィードバックメカニズムがあるため、最初はすべてを完全に正しく取得する必要がないため、get時間をかけて物事を行うことに優れています。
概要:チームがやりたいことであれば、それは正常です。毎月1か月間使用して、使用せずに試してから、どちらがより効果的かを検討することをお勧めします。
ユースケースは本質的に叙事詩に似ていると私は主張します-これは、ユーザーがシステムをどのように使用するかを説明するために連携する機能のグループを説明します。ユーザーストーリーは、インタラクションデザイナー、マーケティング担当者などからのフィードバックとともに、プロダクトオーナーとビジネスアナリストが作成して所有します。
たとえば、googleの使用例は次のようなものです。
ユーザーはGoogleホームページに移動し、入力ボックスに入力を開始すると、選択肢のリストが表示され、選択肢を選択して、検索結果のリストを含む結果ページにリダイレクトされます。その結果ページから結果をクリックすると、結果に含まれているリンクにリダイレクトされます。
もちろん、実際の使用例ははるかに詳細であり、システムが十分に複雑な場合は、正式な言語または方法論で記述されることがよくあります。
一方、ユーザーストーリーは、ユースケースの1つの小さな断片(または、ユースケースの小さな断片であるエピックの小さな断片)です。それらは、多くの場合、チームまたは部門の他のメンバーからの入力を使用して、プロダクトオーナーによって作成および管理されます。ストーリーは開発チームによって使用されます。
ユーザーストーリーの例:
ユーザーとして、過去または類似のクエリのリストを表示できるように、フォームを送信せずに候補のリストを表示するために、Googleホームページに移動して入力ボックスに入力できるようにしたいと考えています。
もう一つは:
ユーザーとして、提案のリストから項目を選択し、送信ボタンをクリックせずに選択した項目の結果ページに自動的にリダイレクトできるようにしたいので、一般的な結果または繰り返しクエリ。
... 等々。
両方を使用できるかどうかの質問に答えるには、はい、両方を使用できます。製品の所有者は、エピックやストーリーを作成するために、ユースケースから作業します。スクラムチームは、スプリントのストーリーから作業します。ユースケースは、製品の開発を支援するために使用できるサポートドキュメントです。
Mgtが「アジャイルを行う」ことを決定したプロジェクトで同じ問題に遭遇しましたが、新しい「チーフプログラマー」は、誰も読んだり議論したりすることのない詳細な仕様書を作成することに多大なエネルギーを集中させる、線形でドキュメントが多用なプロセスに大きく没頭しました。彼女はスクラムマスターが何であるかを知りませんでしたが、彼女はそれを正直に言いました。この質問に自分で答えてイデオロギーのギャップを埋めようとしたときに、私が発見した2つの主な違いは次のとおりです。
1)ユーザーストーリーは、時間を無駄にせずにできるだけ多くの質問に前もって答えるために、スプリント計画中にチームによって共同で議論され、あまり正式ではありませんがキャプチャされます。
SE CASESより正式に、おそらく開発者または2によってのみ、おそらく反復ごとではなく早期にすべて一度に書き留められます。これらの結果、誰も読んだことのない成果物がすぐに古くなり、参照されると間違ったものになります。続く議論と開発の間に。
2)ユーザーストーリーはプロジェクト要件をユーザーを中心に構成し、ユースケースはシステムやコンポーネントを中心にその言語を構成します。これは、主に意味のシフトと思考の練習であり、実際には手続き上の違いではありません。最終結果は似ています。
もっと詳しく:
どちらの場合も最終結果は基本的に同じです。これらの機能を完全に実装するために、次の開発サイクルで取り組む、可能な限り明確な要件の詳細なコレクションです。ユースケースまたはユーザーストーリー(またはEpics)のいずれかを使用して、高レベルまたは非常に低レベルで機能をフレーム化および定義し、アーキテクチャから実装までの作業に応じて詳細を追加できます。
主な違いは、結果の決定を正式に取得するために、いつ、どのくらいのエネルギーを費やしたか、誰が詳細を話し合うかです。
ユーザーストーリーを使用すると、最初の開発を簡素化および高速化するために1〜2行ですばやく開始できますが、スプリントの計画時には、実装のために詳細に具体化する必要があります。
私はこれがいくつかの混乱があるかもしれないと思います:それはまるで「ユーザーストーリー」が短い2行のサウンドバイトのみであるかのようです。それらは実際には違います。これらは、詳細なユースケースと本質的に同じものの見出しにすぎませんが、ユーザーの観点から書かれています。
ユーザーストーリーの説明では、ユーザーシステムの相互作用、境界、インターフェース要素の詳細な配置と外観などについて同じ質問にすべて答える必要があります。重要なことは、これらの詳細を決定するためのあいまいさの除去は意図的なものであることです。協調的、口頭でのグループ作業。これはドメイン主導の設計に似ており、プロジェクトの共有ボキャブラリと理解を達成して、全員が同じページにいるようにすることが目標です。
詳細が議論され、決定が下され、それらはあまり正式ではない方法で取得されます。付箋、スケッチなど-特定のスプリント中にこれらのストーリーを実装するのに役立つように迅速で十分な詳細情報。残りの1〜2行のユーザーストーリーはバックログにたどり着き、将来のスプリント計画中にさらに完全に開発されるのを待っています。
対照的に、少なくとも私の場合と私が見つけた例では、ユースケースには、開発者が単独で作業して、すべてのシステムレベルの詳細、相互作用、および要件をより正式な成果物に正式に取り込むように思われました。最善の推測をするために、共同の議論がある場合とない場合があります。要件をブレインストーミングし、障害を予測して、後でどのように機能するかを確認します。あなたはレビューで誤解と見落としについて学びますafterあなたはすべてを書き留めて、それをきれいに見せるために時間を費やしました。なんらかの理由で愚かな棒図の図を作成する場合があります。ユースケースについて話し合い、問題に対処した後は、コードに取り掛かるのではなく、ドキュメントの更新に時間をかけて、ドキュメントがきれいになり、間違いがないようにします。
正式なユースケースの最終結果は、本質的に、ユーザーストーリーの共同ディスカッションがポストイットで1/4の時間で書き上げたまったく同じ機能の、フォーマットされた番号付き/箇条書きの概要です。