バグの修正にわずかな利点がありますか[終了]


27

以前の同僚から、すべてのバグを修正する必要があるわけではないと聞いたことがあります。バグの優先リストを下るにつれて、そのバグを引き起こすユースケースが不明瞭になったり、顧客満足度が低下したりするためです。ただし、そのバグの修正にはかなりの時間を費やす必要があります。

このコンセプトについて製品の所有者を説得しようとして、良いリソースが見つかりませんでした。私が見つけられたのは、ソフトウェア開発に限界費用があるかどうかの議論だけでした。

バグを修正することで実際にわずかな利点がありますか?この概念を説明する別の用語はありますか?



2
あなたの質問は非常に不明瞭です。ある意味「すべてのバグが修正される必要があるではない」いくつかの価値が固定されていないされています。「バグを修正することには本当にわずかな利点しかありませんか」とは、何か違うことを意味するように思えます。説明してもらえますか?
Doc Brown

2
それは製品所有者が理解するためではありませんか?なぜあなたはそれについて彼らを説得する必要があると思いますか?
モニカの害をやめる

@Goyo私は特に彼らに納得させるためにこの質問をしているのではありません。これは私がしばらく前に出会った概念でしたが、これ以上のリソースは見つかりません。また、ソフトウェア開発者が管理職になることも珍しくありません。したがって、私自身は将来この情報を必要とするかもしれません。
グーカンクルト

2
@GökhanKurt:「すべてのバグは修正する必要がある」から、それらすべてが同様に重要であるということにはなりません。あるものは他のものよりも破壊的である可能性があり、そのためより高い優先度を持っています。
ジャックB

回答:


66

ビジネスの観点から見ると、バグ修正は機能のリクエストと同じです。開発時間に一定のコストがかかり、顧客にとって一定の価値があります。バグが重大ではない場合、バグ修正よりも価値のある機能を優先することは、ビジネス上理にかなっています。

しかし、技術的な観点からは、他のコードが使用/構築する可能性のある基盤のエラーを示すため、バグより重要になる可能性があります。そうでないバグを修正している技術的負債ながら、管理を必要としない機能を実装することは、本当に継続的なコストを持っていません。しかし、バグが被る技術的負債のレベルは、バグの性質に大きく依存します。

優先順位を付ける際には、これらすべての要因を考慮に入れる必要があります。

バグを修正することにわずかな利点があるかどうかに関して:これは当然です。すべてのバグの重大度が同じではないため、最も重要なバグを最初に優先順位付けします。したがって、修正するバグが多いほど、次の修正の限界値は低くなります。しかし、バグを修正するレベルに達したかどうかは努力する価値はなく、技術的な決定ではなくビジネス上の決定です。


私はこの答えが好きですが、新しい機能には継続的なコストがないとは言いません。通常は、新しい機能に対応するためにコードをより一般的にする必要があり、その機能が実際にどれだけの価値を提供するかに関係なく、より高いレベルの抽象化に対応する必要があります。
ドーバル

25
@Dovalあなたは誤解しています。ジャックが言ったことは、まだ書かれていない機能であり、ランニングコストがないことです。または、言い換えれば、機能を持たなくても別の機能を実装することは難しくありません(後者がもちろん前者に依存しない限り)。一方、バグは、修正以外のことをするのを難しくします。そのため、「未記述の機能」と「修正されていないバグ」は異なります。前者はコードベースに影響を与えませんが、後者は影響します。
セバスチャンレッド

3
また、バグはプログラムのイメージ(したがって、製品全体、およびそれを作成した会社)のイメージにも大きな影響を与える可能性があることを付け加えます。これを考慮に入れる必要があります。バグが見つかった場合、会社にいくつかのクライアントやビジネスの費用がかかる可能性がある場合
オリビエデュラック

2
バグが伝染する例として:私のプロジェクトの1つでは、すべてが正常に動作しましたが、常に実行されなかったコードの一部でメモリが解放されたことを除きます。それが起こったとき、それまでに書いたすべてのコードで、いつもそうでした。メモリリークも二重解放もありませんでした。一部のデバッグログは故障しているように見えました。物事が働いたので、私はそれを修正しませんでした。その後、さらにコードを追加しましたが、それらは整列しなくなり、メモリリークが発生し始めました。そのようなバグはマイナーですが、修正する価値があります。残念ながら、実際のマイナーなバグを見分けることも困難です。
ファンドモニカの訴訟

5
バグは、@ OlivierDulacのポイントを拡張するだけで、その機能にもかかわらず、エンドユーザーに「このソフトウェアが信頼できるとは信じられない」と思わせて、捨てることができます。不具合があるように見えたため、数分後にアンインストールするだけで本当に便利だと思われるソフトウェアをすべてインストールしたと確信しています。一方、欠落している機能に気付くかもしれませんが、エンドユーザーは「この機能を気に入っているので、これを使い続けます」と考えてください。バグと機能は、ビジネスの観点から同等と見なされるべきではないと思います。
ジョンベントレー

12

ここに良い参考文献があります

http://www.joelonsoftware.com/articles/fog0000000043.html

新しいコードを書く前にバグを修正しますか?Microsoft Word for Windowsの最初のバージョンは、「死の行進」プロジェクトと見なされていました。[...]バグ修正フェーズは正式なスケジュールの一部ではなかったため[...]

マイクロソフトは普遍的に何かを採用しました[...]最優先事項は、新しいコードを書く前にバグを排除することです[...]一般に、バグを修正するまでの待ち時間が長いほど、時間と費用のかかる修正に時間がかかります。

これらのバグがここに長くあるほど、それらが優先事項になってから修正するのに時間がかかると確信できます。そのため、今すぐ生の利益を得る代わりに、将来的にはより高価な損失を回避しています。

これを管理する良い方法は、バックログの問題を処理するために割り当てる時間を定義することです。これは、Microsoftのようにマッシュアップすることはありませんが、クライアントが実際に気にしなくても、まだあなたの問題ではない場合、将来の問題を解決するための量を確保します。


3

このコンセプトについて製品の所有者を説得しようとして、良いリソースが見つかりませんでした。

あなたが営利団体で働いていると仮定すると、きっと費用便益分析を知っている誰かがそこにいるでしょう。

組織には、有限量の開発者リソースがあり、有益なことの無限のリストがあります。これらの有益なことには、新しい機能の追加と既存のバグの削除の両方が含まれます。バグを削除すると、新しい機能の追加と同様にソフトウェアが改善されます。

したがって、この無限リストに対してこの有限リソースをどのように割り当てるかについて決定する必要があることは明らかであり、その結果、一部のバグが現在、または来週、来年、または年内に修正されないことは特に驚くことではありません事実。

ここでより構造化されたアプローチを探している場合は、バグのユーザービューとプログラマビューに番号を割り当てるPEF / REVシステムを試してみてください。修正するものとしないものを決定するための出発点として。

ソフトウェアエンジニアリングに関する次の2つの投稿も参照してください。

どのバグが最大のコストメリットをもたらすかを解決する

報告されたほとんどすべてのバグは優先度の高いバグです


2

ソフトウェアの動作の意図しないまたは望ましくない側面がすべてバグではありません。重要なのは、ソフトウェアが有用な方法で動作するために信頼できる有用で文書化された条件の範囲を持っていることを保証することです。たとえば、2つの数値を受け入れ、それらを乗算して結果を出力し、結果が9.95以上10.00未満、99.95以上100.00未満などの場合に偽の数値を出力することになっているプログラムを考えます。 。製品が3から7の間の数を処理するためにプログラムが書かれていて、他の処理を要求されない場合、9.95でその動作を修正しても、意図した目的に役立つことはありません。ただし、プログラムが他の目的により適したものになる可能性があります。

上記のような状況では、2つの適切なアクションコースがあります。

  1. 問題を修正します(実用的な場合)。

  2. プログラムの出力が信頼できる範囲を指定し、プログラムが有効な範囲内の値を生成することがわかっているデータでの使用にのみ適していることを示します。

アプローチ#1はバグを排除します。アプローチ#2は、他の方法よりも目的によって進行が適切でない場合がありますが、プログラムが問題ではない可能性のある問題のある値を処理する必要がない場合。

値99.95から100.0を正しく処理できないことがプログラミングの誤り[たとえば、小数点の左側に2桁を出力してから1桁に丸めてから00.00を出力することを決定]の結果である場合でも、そのような場合にプログラムが意味のある出力を生成するように指定されていない場合のバグ。[ちなみに、前述の問題はTurbo C 2.00 printfコードで発生しました。その文脈では、それは明らかにバグですが、障害のあるprintfを呼び出すコードは、問題のある範囲で出力を生成する可能性がある場合にのみバグがあります。


0

大まかに言うと、はい、すべてのバグを修正する必要はありません。リスクと利益の比率を分析することがすべてです。

一般的に起こるのは、ビジネスが技術リードや利害関係者とのミーティングを持ち、明らかに「修正が必要」な山に含まれていないバグについて話し合うことです。彼らは、バグの修正に費やした時間(=お金)がビジネスにとって価値があるかどうかを決定します。

たとえば、「マイナーバグ」は、Webサイトの利用規約セクションでのわずかなスペル/文法エラーである可能性があります。これを提起した個人は、それを変更するにはあまりにも小さいと思うかもしれませんが、ビジネスはそれがブランドに引き起こす可能性のある潜在的な損害、および少数のキャラクターを修正する相対的な容易さを認識するでしょう。

一方、重要と思われるバグもありますが、修正は難しく、ごくわずかなユーザーにしか影響しません。たとえば、Google Chromeのレガシーバージョンを使用しているユーザーのマイナーボタンリンクが壊れており、Javascriptが無効になっていることもあります。

ビジネスがバグを修正しない他の理由は、投資した時間がプロジェクトを予想外の時間に戻すこと、または開発者の時間を他の修正/コーディングに費やす方が良いことです。また、バグが十分にマイナーであるために、ライブになり、後日修正される可能性もあります。

コンセプトが少し良くなることを願っています!私は確かに一般的な用語でこれについて考えることから遠ざかります-すべてのバグはユニークであり、そのように扱われるべきです。


-4

バグの優先リストに進むと、そのバグを引き起こすユースケースが不明瞭になるか、得られる顧客満足度が低くなるためです。

彼らの「引数」は実際には

バグを十分に長く無視すると、ユーザーは問題が何であったかを忘れるか、それを回避する方法を見つけます。

バグは新しい機能要求と同じように優先順位を付けて「順序どおり」に処理する必要があります(ただし、おそらく、後者のすべてに加えて)。


3
いいえ、彼の主張は、優先度の低いバグはまれにしか発生しない可能性があり、修正にあまり価値がないかもしれないということです(たとえば、あなたのウェブサイトに30分遅れの時計がある場合、またはあなたが1月の真夜中のエラー、モルドバのユーザーにとって最初のエラー)
表示名
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.