経済的側面から言えば、「小さなバグ」は残しても良い ? 141
ストーリー by reo
小さなバグに根源的なミスの陰が 部門より
小さなバグに根源的なミスの陰が 部門より
ある Anonymous Coward 曰く、
本家 /. 記事「The Economics of Perfect Software 」より。
とあるブログ記事で、「ソフトウエアに小さなバグを残すのは良いことだ」との論が展開されている。
その記事によると次のようなことらしい。「バグは、誰がそのバグにぶち当たり、そのときにどれだけ怒りが沸くだろうかということを考えてその大きさを判断すればよい。例えば、ユーザがメニューを 3 階層たどり、詳細設定を開き、チェックボックスを 3 つクリックし、そして『A』のキーを押したときに変なエラーメッセージが表示されるというのは小さなバグであると言える。非常に深く埋もれているバグであるし、このユーザは恐らく「あれ ?」と思いながらも、そのまま作業を続行するだけであろう。しかし通常の設定画面を開こうとしてクラッシュするような場合、多くの人がこれに遭遇し腹だたしく思うことが予想されるため、大きなバグであると判断できる。全てのバグの修正・確認を行うのと、わずかな人しか遭遇しないどうでもいいバグを残すことを比較すると、前者にかかるコストはあまりに高すぎると言える。」
経済的側面から言えば「小さなバグ」は残しても良い、というこの論、/.Jer はどう思う ?
リスク評価 (スコア:5, すばらしい洞察)
そのバグが出た時の影響の度合いと発生する頻度の積を点数化して、一定の得点がないものは対処しないってのは、
普通にシステム設計する時の基本的な考え方ですね。
評価の基準をどうするかってのを決めるのがたいへんですが。
Re:リスク評価 (スコア:3, 興味深い)
リスクというよりは (Re:リスク評価 (スコア:3, 興味深い)
うちは影響度でやってましたね。
ものすごくレアだけど、巻き込んでクラッシュするようなモノは対処するし、
まあまあ再現するけれども機能に影響しない(例えば画面遷移するまでボタンが大きくなるとか)は対処しないとか。
# 政治的に正しい言い方にすると「対処しない」→「いつまでに対処することが決定している or 対応策の目処が立っている」:-P
大切なのはバグの洗い出しは終わっており、再現状況も確定していることですかね。
# 再現できないバグは、影響度不明なバグなのでクリティカルであるという定義
より正確な言い方をするのであれば「バグを残すのはNG」で「修正しない課題はOK」というところ。
納期が何よりも重視される職場且つ下請けでもなんでもなかったのでできたところではあるかな:-)
「ヘルプの英数字が統一されて無くて修正で1日納期が遅れちゃったよ」とか聞くと平和だなあと思います。
# 時折、何を守らなければならないのかが明確になっていない人が居て関係者軒並みぶっ飛ばされるのをみると、
# 日本はつくづく減点方式なんだなあと思ふことしきり
# 生産に関わる人にしか判らない限定的な話題かも知れないけどID
Re:リスク評価 (スコア:1, すばらしい洞察)
問題は、リスク評価にかかるコストの方が往々にしてバグ修正に必要なコストより大きいことで
というよりバグ修正にかかるコストの大半が分析と評価だったり。
Re:リスク評価 (スコア:1)
修正コストや修正による別なバグの発生リスク等も考慮してます。
最終的には偉い人の一声で決まるけど。
Re:Mischief, Mayhem, Soap (スコア:1)
ま、娯楽作品が皮肉を効かせたつもりで取り上げたり、こういう場でヨタ話をするレベルであれば、ものすごく大ざっぱに言って間違いではないですが…
その和解金を見積もるためには、前提としてその故障がどの程度のものかを見積もり、製造時の技術水準から見て回避困難であることを主張できなければなりません。
実際問題ないレベルの話で、説明を尽くしても「理屈ばかりで誠意がない」とかって感情論が勝っちゃうことがままあるぐらいですから、技術的な評価結果も出せないようじゃ際限なくつり上げられるばかりで、そのセリフがいう状況自体が成り立ちませんよ。
誰の金でやってると思ってるんだ? (スコア:4, すばらしい洞察)
出たバグを全部潰すことを前提にスケジュール組んで見積もりを受けたのに、
結果的にバグが大量に出ちゃって、納期に間に合わないから軽微なやつは残します、なんてのは納得いかないでしょう。
だったら残したバグの分だけ金返せ、と言いたくなるのでは?
Re:誰の金でやってると思ってるんだ? (スコア:1)
そんなん言うなら、Windowsだってバグが1個見つかる度に利用者全員に1セントでいいから払ってほしいわ。
バグがないプログラムなんて、幻想なのです。
光よりも速い車と同じで、そんなのを本気で要求しているのなら、要求している人がバカなのです。
1を聞いて0を知れ!
Re:誰の金でやってると思ってるんだ? (スコア:1)
リテールパッケージではバグがあっても、開発委託ならバグがないのが普通なのですかい?
そんな話聞いたことないですね。
>貴方は「Hello World!」もバグ無しで完成できないんですか?
バグのないHello Worldがあるからっていって、他のプログラムもバグなしで作れると考えている方がよほど1ビット脳のように見えますね。
売り物になる規模のプログラムだと、バグがないことを保証するなんてできないでしょう。
# 突っ込む気も失せるようなコメントにわざわざ無料で突っ込んでくれるような苦行好きな人が、デバッグする気も失せるようなプログラムのデバッグをすれば、少しはバグが減るのかなぁ。
1を聞いて0を知れ!
Re:誰の金でやってると思ってるんだ? (スコア:1, すばらしい洞察)
あなたは選択したライブラリにバグが無いことを保証できますか?
Re:誰の金でやってると思ってるんだ? (スコア:1)
やっぱそのへんこだわらないとだめなのかなぁ。
下手にそこらへん厳密にしていったら、それこそ「瑣末な事にとらわれて論点がズレる」ことになるんだよなぁ。
今回の場合は、何が瑣末な事で、何が論点だったのかすごく微妙なんだけど。
細かいことを言うのなら、hello worldでもなんでもいいんだけど、本当にプログラムにバグがないことをどうやって知るんだろう、と。
見りゃ分かるって言うかもしれないけど、見ても間違いなさそうに見えたところが間違えていることなんてよくあることですし。
1を聞いて0を知れ!
Re:Hello, world! は悪い例 (スコア:1)
うーん、分からない。
バグが無いと言えると思うのですが。
解説お願いします。
バグの無い「Hello World!」は存在するか? (スコア:1, すばらしい洞察)
・「Hello World!」のWorldの先頭は小文字のほうが一般的ではないか
・「Hello World!」の末尾は感嘆符ではなくピリオドであるべき
・ソースファイルの文字コードが指定されてない
Re:バグの無い「Hello World!」は存在するか? (スコア:1)
Re:馬鹿じゃないの? (スコア:2, すばらしい洞察)
それを認めたら、確かにバグのないプログラムの作成が可能ですね。
とりあえず何かプログラムを書いて「この実装が仕様です」って言えば良いんでしょ?
Re:誰の金でやってると思ってるんだ? (スコア:1)
SLAで稼働率100%をうたっているのなんて見たことないけれど。
99.9%の稼動を保証している場合って逆を言えば0.1%未満は稼動しないことを許容する条項でしょ?
つか、何をいまさら? (スコア:4, すばらしい洞察)
命にかかわるような装置の組み込みソフトや、金融関連などバグで引き起こされる被害が甚大になるものなどは例外として、
コンシューマー向けの製品で、ある程度複雑なものになると、発見されたバグはそれぞれ重要度をランク付けされ、
重要度の低いバグはほうっておかれてそのまま出荷されるもんだ。
致命的なバグとその一個下のランクのバグを取るので精一杯というところ。
WindowsなどのPC用OSや、ゲームソフト、携帯電話なんかはみんなそうじゃない?
Vistaみたいにそれでも間に合わなくて、リリース時期が近づくにつれ搭載機能がどんどん削られていくという
泥沼もw
Re:つか、何をいまさら? (スコア:1, すばらしい洞察)
> 重要度の低いバグはほうっておかれてそのまま出荷されるもんだ。
いえ、「仕様」あるいは「制約」と名前を変えて出荷されます。
重要度の低いバグのうち、比較的重要度の高いものは(ややこしい)
次期バージョンにて「仕様変更」「機能の追加」「制約の撤廃」なんて事がよくありますね。
# おい、Firewallなのに現行バージョンじゃ○×組み合わせたポリシーが設定できないとかバグだろ!
Re:つか、何をいまさら? (スコア:1)
メニューボタンを押したらクラッシュ→検索すると一発で対処法が見つかる。「設定ファイルが壊れてるので消せ」とか。
メニューの3階層目で・・・→どれをキーワードにして対処法を検索すりゃいいんだ、これorz
タイトルだけ見て (スコア:4, 興味深い)
[バグもなく、不都合もないシステムには後継が求められない]
という事かと思った。
僕自身はハード屋なのだが、
設計委託先に「設計寿命は最低5年、できれば10年以上」と要求すると
「そんなに長生きだと買い換えてもらえないアル」と反論された。
という昔話を思い出した。
# いや、そうだけどさ・・・。
と、一瞬反論できなかったがIDで
信用にかかわる (スコア:3, 興味深い)
やはり洋の東西を問わず前者を選ぶでしょう。
自分が発注者であることを考えると、「害のないバグのためにあえて費用をかけない」という受注者の論理を好意的に受け入れるのは難しい。
Re:信用にかかわる (スコア:1)
>バグを出さない業者と細かいバグを残しまくり(但し若干安あがり)の業者
それは、たとえが極端すぎると思う。技術力その他が同じであれば、
「バグを100%全部つぶす」コストと、「細かいバグを残す」コストとでは雲泥の差が生じる。
もちろん技術力に差がある場合はこの限りではないが、いつから日本企業が技術力を気にするようになったのだ?
#重要なのは「こみゅにけーしょん」スキルだってさ。アホか。。。。とは思いつつも泣く子と地頭とお客様には勝てませぬ。
日本では (スコア:2, おもしろおかしい)
費用対効果の概念がないので、どんな小さなバグで、つぶすのに費用がかかったとしても残すことは許されません。とくに政府調達の場合そうなります。たとえばオバマ大統領のTwitterアカウントがクラックされて、さっそくそれ見たことか [srad.jp]という反応が出てます。
ただし最初からバグをゼロにすることも許されません。テストフェーズで、予定された個数のバグを1個の狂いもなく出してから修正しなければなりません。
Re: (スコア:0)
何事も程度問題だけど、日本はその基準が高めという意味では同意ですが
Re:日本では (スコア:1)
台風が直撃しているのに飛行機を着陸させろ、空港の閉鎖は絶対に許さない。
雪が1m積もっていても、新幹線は定時に到着させろ。
濃霧で100m先も見えないのに高速道路のトラックを80kmで走らせろ。
10円の商品を盗まれないように警備会社と契約しろ。金はいくらかかってもかまわない。
そんなことを言うバカはいない。
ITが違うのは、
「どの程度のトラブルが許容しうるか?
どのくらい損害が出たら容認できないか?
どれ以上予算をかけると採算割れするか?」
が分からない/考えてないエライ人が多いということかな。
Re:こんな人なら大勢居ますけどね (スコア:1)
台風が直撃しているのに飛行機を着陸させろ、空港の閉鎖は絶対に許さない。無理?
それがあなたの仕事でしょ。
雪が1m積もっていても、新幹線は定時に到着させろ。無理?
それがあなたの仕事でしょ。
濃霧で100m先も見えないのに高速道路のトラックを80kmで走らせろ。無理?
それがあなたの仕事でしょ。
10円の商品を盗まれないように警備会社と契約しろ。無理?
それがあなたの仕事でしょ。
答えはある。それを見つける能力が無いだけだ。
Re:日本では (スコア:3, 興味深い)
以前にバグに重要度をつけ、重要度の低いものは次回のリリースにまわしましょうという提案をしたら、(機能的な不具合から、メッセージ折り返し位置の修正まで)全部のバグをCriticalで出してきました。
どうも「問題は問題なんだから全部直さないとだめ」というスタンスなんですよね。本当リリース直前になって見つかったマイナーなバグまで直すはめになるんで日本の顧客は本当やりづらいです。
そんなこと言われてもなぁ (スコア:2, 参考になる)
個人的にどう思う?程度の話にしかならないよね…
熟練のオペレータ集団が正確かつ高速にタイプするのが前提にあって
画面まわりの障害に殆ど対応しなかった案件に従事したことあるよ
typoどころか外注に拵えさせてラベルすら出てない画面項目すら
あったんだけど、有っても見ないからOKとか言われて苦笑した
validationも不要、画面レイアウトも不問、とにかく同じ順序で
高速に入力し続けられるだけでいい、と
あれれ。なにか重要なものが抜けてる気がしますよ… (スコア:2, すばらしい洞察)
でしょ?
自分の下流作業者、下請けに対してそれを許すわけではないんですよね。
理想は (スコア:2)
無いほうがいいに決まってる。
でもそうもいかないのでリスクや優先順位を考えて対処するわけですが、人も時間も限りある資源なので影響の少ないものは後回しにされ、時間という資源(納期とも言うか・・・)が尽きると放置されたりする。
うーん (スコア:1)
残しても「良い」んじゃなくて、残しても「そのときだけ影響が少ないからこのままイキで」ってことかなぁ
言葉をそのまま捕らえると「リスクマネジメント出来てないんじゃない?」って感じる。
優先順位を決定して、納期とのすりあわせで「間に合いません」なら
そのバグは「対応しない」でなく「仕様です」って言うのが業界の常のようだし。
確かにそれでコストは増えないだろうけど。うーん。
// 泣きを見るのは使う人なわけですけど。皆が幸せになるために、潰せるバグなら全て潰したい・・・
// 技術者的には「キチンと線引いてバグを全て潰せるようスケジューリング・顧客に提案するのが一流」かなぁ、と思ったり
// まー現実はそんなに甘くないすけど(:>^
Re:うーん (スコア:2)
小さなバグの定義が気になります。
「たまたま発見した現象が、たいしたものではない」から小さなバグ、と言うのであれば、
他の条件において、致命的なバグになる可能性があるのではないかと。
「原因を見つけて、再現率が低くて、潜在的に大きなバグになることが想定できなくて、
かつ影響範囲が大きい」
と言う場合のみ、スルーしてもいいんじゃないのかなぁ、と思います。
でも、大体原因見つけて治して終わりですよね。
Re:うーん (スコア:1)
その辺りの小さなバグは、単体テストで見つかりそうなので、サクッと直して終わりな気もするんですよね。
モジュールが複数絡むことで見るかるのは、見逃せない大物じゃないかと。
たしかに、そんなのは直さないなぁ (スコア:1)
この手のやつは、
優先度をつけるときに、B(そのうち修正、なんかのついでがあれば修正)をつける。
優先度Aはマスターアップまでに直すことになってる。
優先度Aの修正が終わったら、Bに手を付けることになってる。
つまり、Aの数が少ないときだけしか、Bは直さない。
そんなことは、滅多に無い。
建築物でも (スコア:1)
日本建築では完成すると後は壊れるだけだからと一部だけわざと完成させなかったりしますね。それと同じ・・・・って違うか・・。
◆IZUMI162i6 [mailto]
バグの話ではないのですが (スコア:1)
バグの話ではないのでオフトピ気味ではあるのですが、
似たような話でコストと効果について、
大分前に見たブログ記事を思い出しました。
PS3 の性能の使い方 [cocolog-nifty.com]
要は手間(≒時間 ≒お金)のかけどころの話なんだと思いました。
# すでに多くの方がおっしゃっている通り
正直すぎたんだね (スコア:1)
理系によくある勘違い (スコア:0, 荒らし)
Aの方が重要だからBの方はやらなくていいよね。
ではないのです!AもBも両方やるのです!
Re:理系によくある勘違い (スコア:2, おもしろおかしい)
Re:理系によくある勘違い (スコア:3, おもしろおかしい)
Re:理系によくある勘違い (スコア:3, おもしろおかしい)
Re:理系によくある勘違い (スコア:2, 興味深い)
Re:理系によくある勘違い (スコア:2)
今読んできたけど怖すぎる(||゚Д゚)
そりゃ、その、いくらなんでも、えー
Re:理系によくある勘違い (スコア:2, すばらしい洞察)
理解してないのに、自分は理解してると思い込んで
自信を持ってるってのは最悪だろw
「馬鹿の自覚が無い馬鹿」なんだぞ。
Re:理系によくある勘違い (スコア:1, すばらしい洞察)
つまり、理系 [srad.jp]が云々じゃなくて発注者か否かが境目なんですよね。
自分が作業する場合は幾らでも甘く見積り、面倒ならAもBもやらないけど、
他人に作業させる場合はAもBも完遂を要求する、と。
他人に厳しく自分に甘くってのはありがちな話で、
別に理系とか文系とか関係無いと思います。
Re:それはそれでいい (スコア:1)
リンク先ゴキ注意。
うちの嫁も含め、ダメな人はダメなんだよねぇ。この手の、普通に図鑑に載ってそうな写真も。
Re:残す? (スコア:1, おもしろおかしい)
そんな受身じゃなくてポジティブに行こうぜ。
バグを埋め込んでるんだよ!
Re:あほの考え方 (スコア:1)
コードが自動生成されるのが当然と思ってやがる。
いっぱつぶんなぐ・・・・・やめておこう・・・・
ソフトは、あくまで、生身の人間が手作りしているのですよ。
こんなに複雑じゃ間違いもあるのさ。
Re:古い考え方 (スコア:1)
仕様のバグだって探すのは大変ですよ。 下手したらプログラムのバグより大変かも。 SCSI規格に違反していないコンピュータとSCSI規格に違反していないHDDをつないだら1か月に1回くらい固まるとかね。困難を極めた探究作業のあげく結局「どちらも悪くない。強いていうならSCSI規格のこれこれこの部分の規定に曖昧性があった」が結論。「S社に納入するHDDだけファームウェアを変更する」ってことで手打ちしたとか。
それに、ここで言ってるのは検証作業で見つかったバグの話なんじゃないの?「if they want to ship software with bugs」ってことだから。 だからバグが見つかったのは検証作業が悪いからだというのは違う。
Re:古い考え方 (スコア:1)
そしてコンパイラのバグに引っかかる。
# 懊悩