もちろん、ソフトウェアは消耗しませんが、数十年前には、アプリケーションのライフサイクルの後半でコードをメンテナンスすると、修正するよりも多くのバグが発生すると一般に信じられていました。
しかし、バスタブ曲線は、最新のソフトウェア エンジニアリング手法 で開発された最新のソフトウェアに適用されるのでしょうか?
もちろん、ソフトウェアは消耗しませんが、数十年前には、アプリケーションのライフサイクルの後半でコードをメンテナンスすると、修正するよりも多くのバグが発生すると一般に信じられていました。
しかし、バスタブ曲線は、最新のソフトウェア エンジニアリング手法 で開発された最新のソフトウェアに適用されるのでしょうか?
短い答えは「はい」です。長い答えは、障害が機能する方法に連続性がないため、バスタブ分布はあまり良いモデルではないということです。たとえば、入力値 42 がゼロ除算エラーを引き起こすとします。これらの失敗の分布は、入力の 42 個の値の分布とまったく同じになります。あなたが言うように、それはハードウェアとは異なります。ソフトウェアは時間の経過とともに失敗するのではなく、間違ったときに失敗します。
さて、あなたはここで言葉を誤用しているのかもしれません: あなたは失敗ではなく欠陥を意味しています. 失敗は、不適切な動作の 1 つの発生です。欠陥は実装の欠陥、「バグ」です。
ソフトウェアの欠陥の出現は、浴槽のような分布をしている傾向がありますが、実際にはあなたの写真ほどきれいではありません.上昇傾向は、ソフトウェアの寿命が進むにつれて始まります。ただし、単位時間あたりに観察される欠陥について実際に話しているため、それでも慎重に定義する必要があります。
そうは言っても、最新の SE プラクティスは実際の率を変える傾向がありますが、観察された欠陥の分布は時間の経過とともに変化しません。ここでの「モダン」も少し定義する価値があります。スペース シャトル HAL ソフトウェアは、20 年前に「モダン」であった SE 手法を使用して、欠陥率が非常に低く、強力な仕様、構造化プログラミング、厳格なレビュー、OCD バージョン管理とテストを使用しています。エクストリーム プログラミングは「欠陥」率が低い傾向にありますが、より伝統的な方法では「欠陥」と呼ばれるものの多くが XP では「ユーザー入力」と呼ばれます。別の話。
XP/TDD が低い不良率をもたらすことを示す適切な研究がありましたが、不良/単位時間の分布が異なる形状である場合、私は非常に驚かれることでしょう。
バスタブ曲線は、実際にはソフトウェアではなくハードウェア障害の記述子です (そして、それは良いものです)。
ただし、ソフトウェアでも同様のことが起こっています。一般的に言えば、ほとんどのソフトウェア制作において、複雑さを生み出す私たちの能力は、それを処理する私たちの能力をわずかに上回っています.そこにとどまります。そのため、今日では、1990 年代の体系的な問題のいくつかについては、当時よりもはるかにうまく処理できていますが、00 年代の体系的な問題については、それほどうまく処理できていません。それが人生だ。
バスタブとは思えないけど。
そうではありませんが、ほとんどのバグはソフトウェアの初期展開時に発見されます。その後、通常は段階的なバグのセットであり、主にコードの変更または新機能の追加によって引き起こされます。最初のコード リリースのようなものはありません。元の製品を作った開発者が死に絶え、アップグレードが止まると、バグも停止します。
グラフには(小さな)真実があると思います。最初の 1 回か 2 回のリリースの後、以前のバグのバグ修正に加えて、新しい機能と新しいバグが導入されているため、新しいバグが絶え間なく流れていると思います。しかし、しばらくするとコードベースが壊れやすくなり、メンテナンスが難しくなるため、新しいバグの流れが急激に増えると思います。それが最終的に(願わくば)上司にパッチ適用をやめてリエンジニアリングを開始するよう説得できるときです.
メンテナンスの良し悪しに大きく左右されると思います。私は 1 つの大規模な GUI アプリケーションを持っており、それを維持しているプログラマーは事実上私だけであり、その欠陥の頻度は長年にわたって着実に減少しており、将来のどの時点でも増加するとは予想していません。
しかし、ジュニア プログラマーに保守を任せたとしても、私は同じようには感じないでしょう。なぜなら、保守プログラマーは、「正しい」修正ではなく、「十分な」修正をコーディングする大きな誘惑にかられるからです。彼を完全に責めることはできません。おそらく、元のプログラマーが行ったコードの知識を持っていないのでしょう。
バスタブの右側については、オペレーティング システムなどの外的要因を考慮すると、いくつかの相関関係がある可能性があります。Windows の新しいバージョンで壊れたアプリがいくつかありましたが、通常はアプリのせいではありません。しかし、これは比較的少数です。