7

私たちは最近スクラムを仕事に採用し、コードが受け入れられた後に現れるたくさんの小さなバグで問題にぶつかっています。これには、スペルミスやその他の1行の修正などが含まれます。小さなことごとにサイズ0.5のストーリーを作成するのは、時間の無駄のように思えます。ストーリーを書き、それを指摘するのは、修正するよりも時間がかかります。スプリントごとにこれらが1つか2つしかない場合は、それらを修正するだけで、ストーリーを作成する必要はありません。ただし、アプリケーションが大きいために10個または20個以上ある場合は、スクラムでは考慮されていない開発者の時間が大幅に増える可能性があります。そもそも元のストーリーが受け入れられる前に、QAスタッフとプロダクトオーナーはもっと徹底するべきだと言うのは簡単かもしれませんが、私は

これまでに思いついたいくつかの不完全なアイデア:

  • 「アプリで修正されたバグの90%」というストーリーがあり、そのスプリントで発生するバグの数と修正できるバグの数を推測し、予想されるワークロードに基づいて指摘します。
  • たとえば、スプリントの最後に常に受け入れられるサイズのストーリーを用意して、できるだけ多くのバグを修正します。これには明らかに、誰もが実際に8分の仕事をしているという大きな信頼が必要です。
  • バグを記録しますが、次のスプリントまでバグに取り組みません。それらは、個別にまたはグループとして指すことができます。これには、より「汚い」という利点がありますが、基本的に1時間の修正で3週間の遅延が発生します。

助言がありますか?

4

8 に答える 8

13

3番目の答えは最良の方法です。スプリントは、定義された期間内に指定された量の作業を完了するというチームによる単なるコミットメントです。スプリントの途中で追加の作業を受け入れる場合は、スプリントの開始時にチームによってコミットされなかったものに取り組むことによって、元のコミットメントから逸脱していることになります。

これが私たちが行うことです:

  • 「完了」と見なされるには、スプリント内のすべてのストーリーに欠陥がない必要があります
  • 以前に完了したストーリーのスプリント中に見つかった欠陥はすべてログに記録され、バックログに入れられます。それらは他のものと同じように推定され、製品所有者によって優先順位が付けられます。プロダクトオーナーが欠陥よりも新機能を優先する場合、品質よりも機能を選択し、その逆も同様です。
  • ストーリーポイントを欠陥に割り当てることはありませんが、計画の一環としてスプリントに受け入れられると、すべての欠陥を見積もります。チームは機能が壊れていることを認めるべきではありませんが、同じように、それらを修正するのにかかる時間を認識する必要があります。これにより、両方が達成されます。

他のソリューションの問題は次のとおりです。

「アプリで修正されたバグの90%」というストーリーがあり、そのスプリントで発生するバグの数と修正できるバグの数を推測し、予想されるワークロードに基づいて指摘します。

繰り返しますが、上記を参照してください。スプリント中に埋めることができる空のバケツの作業を避けたいと考えています。これは、チームによる定義されたコミットメントの目的を無効にします。チームは、自分たちが知らない、または見積もっていないことにどのように取り組むことができますか?

さらに、これは、実際に欠陥を装っている便利な機能でそのバケットを埋めることによって「欠陥によって設計」する製品所有者に簡単に制御不能になる可能性があります。

たとえば、スプリントの最後に常に受け入れられるサイズのストーリーを用意して、できるだけ多くのバグを修正します。これには明らかに、誰もが実際に8分の仕事をしているという大きな信頼が必要です。

これは奇妙に聞こえます。チームは、前のスプリントの終了時ではなく、新しいスプリント計画の開始時に作業を受け入れる必要があります。さらに、これは実際に長期的にあなたの速度を歪めます。スクラムはストーリーだけでなく製品バックログアイテムを指すため、PBIとして欠陥を含めることができないと言うことは何もありません。

バグを記録しますが、次のスプリントまでバグに取り組みません。それらは、個別にまたはグループとして指すことができます。これには、より「汚い」という利点がありますが、基本的に1時間の修正で3週間の遅延が発生します。

あなたは興味深い点を指摘し、私たちはこれについても懸念を抱いていました。ただし、その1時間の修正は(それがどれほど速いかに関係なく)、バックログの他のものと積み重ねられたときに十分に費やされた時間ではない可能性があります。肝心なのは、これらの決定を製品所有者に押し付け、チームが努力するすべてのものに優先順位を付ける自由を彼らに与えたいということです。

于 2009-06-23T17:58:08.260 に答える
5

私は、プロセスは状況を改善する能力と同じくらい良いと確信しています。このプロセスはあなたのために機能するはずですが、その逆ではありません。

アジャイルスクラムプロセスを「T」に従わせることが良いよりも害を及ぼす場合、この状況では、スクラムプロセスの外でより良い解決策を見つける時が来ました。

すべてのスプリントの最後に付けられるミニ「QA」スプリントを作成しました。コードが完成した後、リリース前です。この短期間に、問題は注意深く精査され、リスクと重要度に基づいて含めることが承認されます。この期間に修正された問題には、カスタムレビュープロセスの追加レベルがありますが、主に定義されたスクラムプロセスの外で機能します。

于 2009-06-23T18:26:48.540 に答える
3

ふりかえりの中で、これらのバグの原因を特定しましたか?エンジニアリング(XP)プラクティスを使用していますか?つまり、TDDテスト駆動開発を行っていますか?自動化された機能テストは、受け入れ基準のあるペアリングカードとストーリーカードとともに、毎日完全な回帰テストを行います。

欠陥が見つかった場合、原因が特定され、自動化されたユニットと機能テストがテストハーネスに追加されて、そのような欠陥が再び発生した場合にそれをキャッチしますか?

私の理解では、あなたの不良率は高すぎます。TDDと完全な機能回帰テストを少なくとも毎日行う場合、UAT中に欠陥がゼロになることは珍しくありません。

短期的には、チームにxユニット/作業ポイントを請求して欠陥を修正できます(過去の反復を見て、小さなバグをクリーンアップするのに反復ごとにx時間かかる場合は、その時間をあなたのチームの能力。)長期的には、根本原因に焦点を当て、チームのエンジニアリング慣行を改善します。

欠陥修正のコストを測定すると、次のような関係が見られます。開発中に欠陥のコストが1倍になると、機能テスト中に修正するのに2倍、UAT中に修正するのに3倍、本番環境で修正するのに4倍のコストがかかります。受け入れ基準、ペア開発、テスト駆動開発、および少なくとも毎日の完全回帰テストを伴う自動機能テストを備えたストーリーカードを作成することにより、品質を向上させ、コストを大幅に削減します。その結果、速度を向上させるチームの能力から時間を差し引く必要はありません。

于 2009-06-27T01:43:47.917 に答える
3

これは、スクラムプロジェクトにおける健全なエンジニアリングの実践に対する強いニーズの良い例です。

「[私たちは]コードが受け入れられた後に現れるたくさんの小さなバグで問題にぶつかっています」

これは、あなたの「完了の定義」が十分に強力ではないことを示唆しています。

「これらには、スペルミスなどが含まれます」

これらのスペルミスはUIに表示されますか?コードが受け入れられた後にそれらを見つけている人は誰でも、コードが受け入れられる前にそれらを見つけているべきです。

欠陥に関係するのは、1)今すぐ修正する、2)システムを計測して、次回同様の欠陥を早期に発見できるようにする、3)プロセスを改善して、欠陥につながるエラーの可能性を低くすることです。将来発生します。これらはすべて技術的な問題です。

于 2009-06-28T07:38:05.967 に答える
1

バグが開発中のものと無関係である場合、またはスプリント中に発生する他の「無関係な」アクティビティと言えば、私たちが通常行うことは、「偶発的」を作成することです。

基本的に、スプリントの「能力」から削除されるのは一定の時間であり、スプリントの目標外の活動を行うためにオンデマンドで専念します。これは次のように機能します。

  • チームは毎日スプリントの目標に焦点を合わせていますが、外部の問題を処理するための時間の「バッファー」(偶発的)を持っています。デイリースタンドアップでは、POが毎日発生する問題を提示する場合があり、スプリントタスクを完了した(中断がない)チームメンバーは、最終的に問題の1つを修正する必要があります。

  • 時間は、条件付きで予約された時間であり、終了するときは閉じなければなりません。

  • チームは、派遣団の時間が終わったことをプロダクトオーナーに伝える権利があり、スプリントのコミットメントを維持したい場合は、そうするか、毎日の後に実行を継続するかを決定する必要があります。問題、スプリントからいくつかの価値をあきらめます。

それは常に公正な取引であることがわかりました;-)

次の目的で使用します:ライブ製品のバグとメンテナンス(5〜15%)、次のスプリントの準備(10%)...

HTH

于 2009-07-05T11:53:28.257 に答える
1

本番環境にプッシュするコードのサポートを担当するのは誰ですか?チームがサポートリクエストを処理する場合、これらのタイプミスやその他の外観上の問題はそのカテゴリに分類され、適切に処理されます。そうでない場合は、時折スプリントを「パッチ」スプリントのようなものにする必要があります。このスプリントでは、新しい機能は追加されませんが、多くの古いものが修正され、技術的負債が妥当なレベルに削減されます。または、小さなバグのバグを1つのストーリーにまとめて、「サイトのすべてのタイプミスを修正する」と言ってアイデアを出します。

スクラムで「技術的負債」または「割れ窓」をグーグルで検索して、他の人がこれらのことをどのように処理するかを確認する場合、他のアイデアがあるかもしれません。

于 2009-06-23T18:01:01.423 に答える
1

私のプロジェクトでは、次のポリシーを成功させました。

  • 欠陥修正は、機能開発よりも常に優先されます。目標は、ほぼ機能している機能よりも100%機能している機能を評価して、常に未解決の欠陥をゼロにすることです。

  • 欠陥は発見されたらすぐに修正することができ、修正する必要があります。チケットは、開発者以外の人が欠陥を見つけた場合、または開発者がすぐに修正できない場合にのみ提出する必要があります。

  • コードベースへのアーキテクチャレベルの変更を必要とする欠陥では、アーキテクチャ調整部分がストーリーとしてログに記録され、今後のスプリントに対して推定および計画されます。障害ステータスは、ストーリーの実装で保留に設定されます。

  • スプリントのバックログは外部の変更から保護されていますが、チーム自体がスプリントの途中で新しいものを導入する可能性があります。これは、常に目標のゼロ欠陥を満たすために必要です。

  • 欠陥を修正する価値がない場合(いくつかの基本的な費用便益分析に基づく)、修正されない未解決の欠陥が問題追跡システムを汚染するのを防ぐために、それは単に無視されます。

ストーリーの実装よりも欠陥の修正を優先することは、時々あなたの速度に影響を与えますが、それは問題ありません。長期的には、コードベースにはわずかな技術的負債しか含まれていないため、ストーリーの実装効率が向上します。

于 2009-06-23T21:44:43.393 に答える
0

バグが原因でスプリント目標の作業が停止した場合でも、反復をキャンセルして再計画することができます。しかし、これは静かな難しい決断です。

于 2009-06-28T19:26:04.600 に答える