質問
先日、友人がソフトウェア開発ライフサイクルで問題を解決するコストのためのピラミッドがあると言っていました。どこでこれを見つけることができますか?
彼は問題を修正するためのコストについて言及していました。
例えば、
要件段階で問題を修正するには、コスト1。
開発段階で問題を修正するには10に費用がかかります。
テスト段階で問題を修正するには100コストがかかります
生産段階で問題を修正するには、1000人の費用がかかります。
(これらの数字は単なる例です)
誰かが参照を持っているなら、私はこれについてもっと見ることに興味があります。
解決
ソフトウェアのバグを修正することのリターンを減らすという信じられないほどの割合
(Stefan Priebsh:OOPおよびデザインパターン:Codeworks DC 2009年9月)
他のヒント
これは、無数の研究で何度も何度も複製され、検証されている経験的ソフトウェアエンジニアリングでよく知られている結果です。残念ながら、これはソフトウェアエンジニアリングでは非常にまれです。ほとんどのソフトウェアエンジニアリングの「結果」は、基本的に伝聞、逸話、推測、意見、希望的思考、または単なる嘘です。実際、ほとんどのソフトウェアエンジニアリングはおそらく「エンジニアリング」ブランドに値しないでしょう。
残念ながら、最も堅実で、最も科学的および統計的に健全で、最も頻繁に研究され、最も広く検証され、最も頻繁に複製されたソフトウェアエンジニアリングの結果であるにもかかわらず、それも間違っています。
問題は、これらの研究のすべてが変数を適切に制御しないことです。変数の効果を測定したい場合は、 非常に 変更するように注意してください それだけ それ 1 変数および他の変数が変更されないこと まったく. 。 「いくつかの変数を変更する」ではなく、「他の変数への変更を最小限に抑える」ではありません。 「1つだけ」と他の「まったく」。
または、素晴らしいZed Shawの言葉で:たわごとを測定したい場合は、他のたわごとを測定しないでください。
この特定のケースでは、彼らはそうしました いいえ どの段階(要件、分析、アーキテクチャ、設計、実装、テスト、メンテナンス)が見つかったかを測定するだけで、それらは見つかりました。 また 方法を測定しました 長さ それはシステムにとどまりました。そして、フェーズはほとんど無関係であり、重要なのはその時だけです。バグを見つけることが重要です 速い, 、どのフェーズではありません。
これにはいくつかの興味深い影響があります:バグを見つけることが重要な場合 速い, 、次に、バグを見つける可能性が最も高い位相でそんなに長く待つのはなぜですか:テスト?テストをに置いてみませんか 始まり?
「伝統的な」解釈の問題は、それが非効率的な決定につながることです。要件フェーズ中にすべてのバグを見つける必要があると仮定すると、要件フェーズを不必要に長く引き出します。 走る 要件(またはアーキテクチャ、またはデザイン)、そのため 発見 あなたさえできない何かのバグ 実行する おかしくなりました 難しい!基本的に、while 修正 要件段階のバグは安く、 発見 それらは高価です。
ただし、バグを見つけることではないことに気付いた場合 可能な限り初期の段階で, 、むしろバグを見つけることについて 可能な限り早く, 、それからあなたはあなたのプロセスを調整することができます、そしてあなたはあなたが 発見 バグは最も安価です(テスト) 修正 それらは最も安いです(最初は)。
注:私は、完全に根拠のない主張で統計を適切に適用していないという暴言を終わらせるという皮肉をよく知っています。残念ながら、私はこれを読んだリンクを失いました。グレン・ヴァンダーバーグも彼の中でこれについて言及しました実際のソフトウェアエンジニアリング「ローンスタールビーカンファレンス2010で話しますが、AFAICRも、彼は情報源も引用しませんでした。
誰かが情報源を知っているなら、 お願いします 私の答えを知らせたり編集したりするか、 窃盗 私の答え。 (ソースを見つけることができれば、すべての担当者に値します!)
42ページと43ページを参照してください このプレゼンテーション (PDF)。
残念なことに、ヨルグが描いているように状況は、実際にはやや悪化しています。この文書で引用された参考文献のほとんどは、私を偽物として襲います。または - の場合 1998ヒューズに関する論文 (p54) - 測定値が含まれています 実際には プレゼンテーションのP42の曲線によって暗示されることと矛盾します:曲線の異なる形状と、要件フェーズと機能テストフェーズの間のコストのコストへのX5からX10係数(そして、実際にシステムテストとメンテナンスが減少します)。
それが以前にピラミッドと呼ばれることを聞いたことがありませんでした、そしてそれは私にとって少し逆さまのようです!それでも、中央の論文は正しいと広く考えられています。それについて厚く、アルファ段階でバグを修正するコストはしばしば些細なことです。ベータ段階では、もう少しデバッグとユーザーレポートが必要になる場合があります。出荷後、非常に高価になる可能性があります。まったく新しいバージョンを作成する必要があります。プロダクションコードとデータを壊すことを心配する必要があります。バグのために売り上げが失われる可能性もありますか?
これを試して 記事. 。特に「コストピラミッド」引数(命名されていない)を使用します。