web-dev-qa-db-ja.com

2つの異なる役割の1つの同じ機能に関するユーザーストーリー

私のチームは、モバイルアプリがバックエンドと通信するソリューションを構築しています。クライアント(モバイルアプリ)とサーバー(バックエンド)の両方で機能するいくつかのルールに従って、アプリとバックエンド間の通信が最適化される機能について説明する必要があります。この最適化は、データを収集してサーバーに送信するものであり、サーバーに送信されるデータの量を最適化する責任があるため、主にクライアント側で開発されます。

現在、最適化はモバイルアプリとバックエンドの両方にとって重要です。その理由は、パフォーマンスとスケーラビリティですが、両方に異なる側面があります。

たとえば、モバイルアプリのユーザーにとって、送信されるデータを減らす主な必要性は、ネットワークとコストが潜在的に遅い可能性があるという事実から来ています。バックエンドのオペレーター/所有者にとって、主な理由はスケーラビリティと経済性です。処理する必要がある複数のクライアントから送信されたデータの量。また、最終的には、クライアントがジョブを実行するために収集したすべての生データを必要としないためです。

したがって、私はこれをすべて表現するのに最善の方法を考えています。 1つのストーリーにするか、各ストーリーの役割と価値が異なる2つのストーリーにする必要がありますか?

また、これはまったくの話なのでしょうか。最終的には、バックエンドの所有者/オペレーターのニーズは、ハードウェアをできるだけ少なくして実行し、十分なTCOを低くすることです。モバイルアプリのユーザーにとっての主な価値は、請求額を削減し、サーバーからタイムリーにフィードバックを得ることです。ただし、トランスミッションが従うべきルールはわかっており、最適化できることはわかっていますが、エンドユーザーに対する具体的な顧客要件さえありません。この観点から見ると、これは具体的なストーリーというよりは設計上の問題です。これは1つ以上のストーリーとしてではなく、バックログのタスクとして実行する必要があるのでしょうか。

3
Hristo K

これらの有効なユーザーストーリーを作成することはできますが、エンドユーザーのメリットに焦点を当て続ける必要があります。サーバーに送信されるペイロードのサイズを減らすには、メトリックに関連付けられているデータサイズを減らすメトリックに焦点を当てます。

2 GBワイヤレスデータプランの制限内に留まるため

WiFiに接続していないモバイルデバイスのユーザーとして

Thing Xを実行するときにNバイト未満のデータを使用したい

Thing Xをユーザーが実行するアクションに置き換える場所。バックエンドのユーザーストーリーを作成することは困難です。彼らの主な関心事はスケーラビリティですが、なぜこれを心配しているのですか?パフォーマンス。パフォーマンスが速いほど、ユーザーエクスペリエンスが向上します。この側面に焦点を当てたユーザーストーリーを作成し、サポートするユーザーの数や、ある種のデータを投稿して表示するのにかかる予想時間など、特定のメトリックに関連付けることもできます。

基本的に 非機能要件を有効なユーザーストーリーにする にします。

4
Greg Burghardt

これは実装のドメインではなく、プロトコルのドメインです。

プロトコルが完成したら、それらの要件/望ましいプロパティを使用して、クライアントとサーバーの両方で段階的に期待される動作を実装するストーリーを作成できます。

プロトコルの要件を作成するときは、参加する各役割/当事者の要件を分析する必要があります。明白なものはクライアントとサーバーです。しかし、プロキシ/ファイアウォール/ネットワークの中間など、それほど明白ではないパーティや、プロトコルを盗聴したり混乱させようとする敵対者がいます。

2
Kain0_0

エンジニアリングには費用がかかるため、次のような自由記述式のステートメント:

できるだけ少ないハードウェアで実行する

...ストーリーになるには不完全すぎます。できるだけ少ないハードウェアで実行することは、決して終わらないタスクです。できるだけ少ないハードウェアで実行することがオペレーターの目標である可能性が非常に高いですが、それはおそらくローカルな最適化です。インフラストラクチャマネージャーがチームに200万ドルのエンジニアリング作業を費やして、このアプリケーションのハードウェアコストを年間4,000ドルから年間10,000ドルに削減した場合、マネージャーは自分の持ち物の箱を手に入れてエスコートします。数字が必要です。スパイクが必要です。

Y個のハードウェアでX個の同時ユーザーを実行できることを示す負荷テストまたはメトリックがあり、Y個のハードウェアの実行にZドル/年かかる場合、いくつかの実験を実行できます。送信中に制御された量のデータを送信し、いくつかの負荷テストを実行できるように、プログラムを十分にスタブ化することを決定する場合があります。ハードウェアの価値ある削減を実現するために、データサイズをどれだけ削減する必要がありますか?クラスター内の1つのノードを削除するためにデータサイズを90%削減する必要がある場合、それだけでも価値がありますか?それは可能ですか?または、データサイズを10%削減すると、クラスターで必要なノードが10少なくなるため、環境で年間2万ドルを節約できる可能性があります。何が可能で、どのようなメリットが得られるかについての情報が得られたら、実際のストーリーを作成できます。このようなもの:

バックエンドオペレーターとして

Yハードウェアでx同時ユーザーにサービスを提供したい

ハードウェアコストをzずつ削減できるように

これで、誰がこの変更を望んでいるのか、いつ変更が行われるのか、そして変更の価値が何であるのかがわかります。製品の所有者は、この話が彼らのお金を使う価値があるかどうか、そして何を優先すべきかを決定できるはずです。おそらく運用コストが低いため、製品の価格競争力が高まるでしょう。ハードウェアの方が顧客を失うよりも安いかもしれません。そのため、製品の所有者は、このパフォーマンス最適化タスクよりも前に、大規模な顧客の機能要求を優先します。

重要なのは、実際に処理する数がある場合、このストーリーを出荷する/出荷しない場合、製品の所有者はそれらが何を得る/失うかを知ることです。おおよその数字がなければ、私たちが出てくる話はどれも意味がなく、したがって実際の話ではありません。この作業を完了するために推進している人は誰でも、それらをストーリーに変えるために、少なくとも少しのデータと実験が必要です。

2
Dogs

これはユーザーストーリーではありません。これは非機能的な要件であり、いくつかのストーリーに確かに共通しています。

  • ユーザーはアプリと通信し、舞台裏やデータの送信方法を気にしません。
  • アプリとサーバー間のすべてのやり取りが影響を受ける可能性があります。
  • 結果として最適化されたパフォーマンスは、多くの機能の実装の新たな影響です。

それでも、それがユーザーストーリーでなくても、バックログで適切に取り組む必要があります。ユーザーストーリーの第一人者であるマイクコーンは、次のことを推奨しています。

  • テクニカルストーリー を記述します。ユーザーは実際のユーザーではありませんが、この要件に関心のある利害関係者です(たとえば、モバイルサブスクライバーとして、請求額を削減するために、オフラインのボリュームを低く抑えたいです)。 、または
  • 例外的に、ユーザーレスの書き込み FDD機能[action] the [result] [by|for|of|to] a(n) [object]-利点は、このアイテムの背後にユーザーがいないことを明確にすることです。

一般的には、要件だけでなく動機も提供するため、最初に推奨します。これは、トレードオフについて交渉する必要がある場合に役立ちます。

ただし、最適化のケースでは、2番目をお勧めします。そのような非常に技術的な詳細を気にせず、代替案を決定するのを手伝うことができない利害関係者を人工的に導入する利点はありません。

1
Christophe

多くのストリーミングサービスには、ストーリーや、平均的な曲や映画のファイルの実際の大きさに関する情報が不足しています。現在、多くのモバイルデバイスが4kまたは8kの超高解像度をサポートしています。これは、帯域幅が限られているため、jpeg/jpgにエンコードする可能性が高い小さなファイルが必要な多くの人にとって問題です。非常に高い解像度をダウンロードしなくても、平均的なユーザーがどれだけ節約できるかをみんなに伝えてください。サーバーの負荷が最も高いときと反対のときを区別することで、バッファリングや読み込みが遅くなるのを防ぐことができます。無料のユーザーがファイルの一部をデバイスに保存することで帯域幅の適切な量を共有している場合、料金を支払う顧客は優れていると感じるので、あまりにも多すぎるはずです。

これが何らかの要因で役立つことを願っています。あなたの解決策は、すべてがうまくいくことを願って読むのがとてもエキサイティングです。

0
Stian Diehard