ソフトウェア開発 において、工数見積もり とは、不完全で不確実かつノイズの多い入力に基づいて、ソフトウェアの 開発または保守に必要な最も現実的な工数(人時または金額で表される)を予測するプロセスです。工数見積もりは 、プロジェクト計画、反復計画、予算、投資分析、価格設定プロセス、入札ラウンドへの入力として使用できます。[ 1 ] [ 2 ]
現状の実践 見積もり手法に関する公表された調査によると、ソフトウェア開発工数の見積もりにおいては、専門家による見積もりが主流の戦略であることが示唆されている。[ 3 ]
一般的に、工数見積もりは楽観的すぎる傾向があり、その正確性に対する過信が強い。平均的な工数超過は約30%で、時間の経過とともに減少する傾向は見られない。工数見積もり誤差調査のレビューについては、[ 4 ] を参照。ただし、見積もり誤差の測定には問題がある。見積もりの正確性の評価を 参照。工数見積もりの正確性に対する過信が強いことは、ソフトウェア専門家が実際の工数を最小値から最大値までの区間に含めることに平均して90%の確信、つまり「ほぼ確実」な場合、実際の工数を含める頻度は60~70%に過ぎないという調査結果からも明らかである。[ 5 ]
現在、「工数見積もり」という用語は、最も可能性の高い工数の使用(最頻値)、50%の確率で超過しない工数(中央値)、計画工数、予算工数、または顧客への入札や価格の提案に使用される工数など、さまざまな概念を表すために使用されています。これは、コミュニケーションの問題が発生する可能性があり、概念が異なる目的を果たすため、好ましくないと考えられています。[ 6 ] [ 7 ]
推定手法 推定手法を分類する方法は数多くあります。例えば、[ 12 ] [ 13 ] を参照してください。最上位のカテゴリは次のとおりです。
専門家による推定:定量化ステップ、つまり判断プロセスに基づいて推定値を作成するステップ。[ 14 ] 形式的な推定モデル:定量化のステップは、例えば過去のデータから導き出された数式の使用など、機械的なプロセスに基づいています。 組み合わせに基づく推定:定量化の段階は、異なる情報源からの推定値を、判断と機械的な方法に基づいて組み合わせることによって行われます。 以下に、各カテゴリーにおける推定手法の例を示します。
推定手法の選択 さまざまな推定手法やモデルの推定精度における差異に関する証拠は、「最良の手法」は存在せず、ある手法やモデルの相対的な精度は、状況に大きく依存することを示唆している。[ 18 ] これは、組織によって異なる推定手法から得られるメリットが異なることを意味する。手法の期待される精度に基づいて推定手法を選択することを支持する可能性のある調査結果[ 19 ] には、次のものがある。
専門家による見積もりは、平均的にはモデルに基づく工数見積もりと同等以上の精度を持つ。特に、不安定な関係性や、モデルに含まれていない重要な情報が存在する状況では、専門家による見積もりが有効であると考えられる。もちろん、これは関連経験を持つ専門家が確保できることを前提としている。 特定の組織の状況に合わせて調整されていない正式な見積もりモデルは、非常に不正確になる可能性があります。したがって、見積もりモデルの中核となる関係性(例えば、計算式のパラメータ)が類似のプロジェクト状況に基づいていることを確信できない場合は、自社の過去のデータを使用することが不可欠です。 正式な推定モデルは、モデルが組織の状況に合わせて調整されている場合(自社の過去のデータを使用する場合、またはモデルが類似のプロジェクトや状況から導き出されている場合)、特に有用である可能性があり、専門家の推定には強い希望的観測が含まれる可能性が高い。 多くの予測分野において最も確実な発見は、異なるアプローチを適用することが望ましい独立した情報源からの推定値の組み合わせが、平均的に推定精度を向上させるということである。[ 19 ] [ 20 ] [ 21 ]
ソフトウェア開発の生産性を測定する従来の各アプローチの限界を認識しておくことが重要です。[ 22 ]
さらに、アプローチの結果を理解し伝えやすく、アプローチを使いやすく、アプローチの導入コスト[ 23 ]などの他の要素も選択プロセスで考慮する必要があります。
見積もりの正確性を評価する 平均推定精度の最も一般的な指標はMMRE(平均相対誤差の大きさ)であり、各推定値のMREは次のように定義されます。
MRE = | (実際の労力) - (推定労力) | / (実際の労力) この尺度は批判されており[ 24 ] [ 25 ] [ 26 ] 、より対称的な尺度[ 27 ] 、 相対誤差の四分位数の加重平均(WMQ) [ 28 ] 、推定値からの平均変動(MVFE) [ 29 ]など、いくつかの代替尺度が存在する。
個々の項目が偏っている場合、MREは信頼性が低くなります。推定精度の指標としては、PRED(25)が推奨されます。PRED(25)は、予測値のうち、実際の値から25%以内の範囲にある値の割合を示します。
見積もり誤差が大きいからといって、必ずしも見積もり能力が低いと解釈できるわけではありません。代替的、競合的、または補完的な理由としては、プロジェクトのコスト管理の低さ、開発作業の複雑性の高さ、当初の見積もりよりも多くの機能が提供されることなどが挙げられます。見積もり誤差測定のより良い使用と解釈のためのフレームワークは、[ 30 ]に含まれています。
心理的な問題 過度に楽観的な努力見積もりをする傾向が強い理由を説明する可能性のある心理的要因は数多く存在する。これらの要因は、正式な見積もりモデルを使用する場合でも考慮することが不可欠である。なぜなら、これらのモデルへの入力の多くは判断に基づいているからである。重要であることが実証されている要因としては、希望的観測 、アンカリング 、計画の誤謬 、認知的不協和 などが挙げられる。[ 31 ]
既知の情報を概算するのは簡単だ。 既知の未知数(既知の未知数)を推定するのは難しい。 未知であるとさえ知られていないものを推定するのは非常に難しい。(未知の未知)
ユーモア 開発作業の労力を慢性的に過小評価する傾向は、数々のユーモラスな格言を生み出し、普及させてきた。例えば、実際には多くの労力が必要となるにもかかわらず、ある作業を「ちょっとしたプログラミングの問題 」と皮肉っぽく表現したり、過小評価に関する法則を引用したりするなどだ。
コードの最初の 90 パーセントが開発時間の最初の 90 パーセントを占めます。残りの 10 パーセントのコードが開発時間の残りの 90 パーセントを占めます。[ 32 ]
ホフスタッターの法則:ホフスタッターの法則を考慮に入れたとしても、物事は常に予想よりも時間がかかる。
プログラマー1人が1ヶ月でできることを、プログラマー2人が2ヶ月でできる。
参考文献 ↑ 「ソフトウェア開発工数見積もりについて私たちが知っていることと知らないこと」。 ↑ 「コスト見積もりと評価ガイド GAO-09-3SP 資本プログラムコストの開発と管理に関するベストプラクティス」 (PDF) 。米国政府会計検査院。2009年。 ↑ Jørgensen, M. (2004). "ソフトウェア開発工数の専門家による見積もりに関する研究のレビュー" . Journal of Systems and Software . 70 ( 1– 2): 37– 60. doi : 10.1016/S0164-1212(02)00156-5 . ↑ Molokken, K. Jorgensen, M. (2003). 「ソフトウェア工数見積もりに関するソフトウェア調査のレビュー」. 2003 International Symposium on Empirical Software Engineering, 2003. ISESE 2003. Proceedings . pp. 223–230 . doi : 10.1109/ISESE.2003.1237981 . ISBN 978-0-7695-2002-5 . S2CID 15471986 . {{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Jørgensen, M. Teigen, KH Ribu, K. (2004). "安全よりも確実?判断に基づくソフトウェア開発工数予測区間に対する過信". Journal of Systems and Software . 70 ( 1– 2): 79– 93. doi : 10.1016/S0164-1212(02)00160-7 . {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Edwards, JS Moores (1994). 「情報システムの管理における見積もりツールと計画ツールの使用間の矛盾」 European Journal of Information Systems . 3 (2): 139– 147. doi : 10.1057/ejis.1994.14 . S2CID 62582672 . ↑ Goodwin, P. (1998). 判断に基づく売上予測の強化:実験室研究の役割。判断による予測。G. Wright および P. Goodwin 編。ニューヨーク、John Wiley & Sons: 91-112。 ↑ Farr, L. Nanus, B. 「コンピュータプログラミングのコストに影響を与える要因、第1巻」 (PDF) 。 2017年2月21日に オリジナル (PDF)からアーカイブされました。 {{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Farr, L. Nanus, B. 「コンピュータプログラミングのコストに影響を与える要因、第2巻」 (PDF) 。 2018年7月28日に オリジナル (PDF)からアーカイブされました。 {{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ ネルソン、EA (1966)。コンピュータプログラミングコストの見積もりに関する管理ハンドブック。AD-A648750、システムズ・デベロップメント社。 ↑ Anda, B. Angelvik, E. Ribu, K. (2002). "ユースケースモデルを適用した見積もり手法の改善". 製品中心のソフトウェアプロセス改善 . コンピュータサイエンス講義ノート. 第 2559巻. pp. 383–397 . CiteSeerX 10.1.1.546.112 . doi : 10.1007/3-540-36209-6_32 . ISBN 978-3-540-00234-5 。{{cite book}}: CS1 maint: 複数の名前: 著者リスト (リンク) ISBN 9783540002345 、 9783540362098 。↑ Briand, LC および Wieczorek, I. (2002). 「ソフトウェアエンジニアリングにおけるリソース見積もり」。ソフトウェアエンジニアリング百科事典 。JJ Marcinak。ニューヨーク、John Wiley & Sons: 1160–1196。 ↑ Jørgensen, M. Shepperd, M. 「ソフトウェア開発コスト見積もり研究の体系的レビュー」 。 {{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ 「カスタムソフトウェア開発サービス – カスタムアプリ開発 – Oxagile 」 ↑ ヒル・ピーター (ISBSG) – Estimation Workbook 2 – International Software Benchmarking Standards Group (ISBSG) 発行- Estimation and Benchmarking Resource Centre 2008年8月29日にWayback Machine に アーカイブ済み ↑ モリス・パム — ファンクションポイント分析の概要トータルメトリクス - ファンクションポイントリソースセンター ↑ Srinivasa Gopal および Meenakshi D'Souza. 2012. 事例ベース推論と組み合わせた推定アプローチを用いた推定精度の向上.第 5 回インド ソフトウェア エンジニアリング カンファレンス (ISEC '12) 論文集 . ACM、ニューヨーク、米国、75-78. doi : 10.1145/2134254.2134267 ↑ Shepperd, M. Kadoda, G. (2001). "シミュレーションを用いたソフトウェア予測手法の比較" . IEEE Transactions on Software Engineering . 27 (11): 1014– 1022. Bibcode : 2001ITSEn..27.1014S . doi : 10.1109/32.965341 . {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)1 2 Jørgensen, M. 「ソフトウェア開発作業量の推定:専門家の判断と形式モデルに関する証拠」 。 ↑ Winkler, RL (1989). "予測の組み合わせ: 哲学的基礎と現在のいくつかの問題 Manager". International Journal of Forecasting . 5 (4): 605– 609. doi : 10.1016/0169-2070(89)90018-6 . ↑ Blattberg, RC Hoch, SJ (1990). "データベースモデルと経営者の直感: 50% モデル + 50% マネージャー". Management Science . 36 (8): 887– 899. doi : 10.1287/mnsc.36.8.887 . JSTOR 2632364 . {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ BlueOptima (2019-10-29). 「信頼性が高く客観的なソフトウェア開発メトリクスの特定」 。 ↑ https://www.scalacode.com/guides/software-development-cost/ ↑ Shepperd, M. Cartwright, M. Kadoda, G. (2000). "ソフトウェアエンジニアのための予測システムの構築について". Empirical Software Engineering . 5 (3): 175– 182. doi : 10.1023/A:1026582314146 . S2CID 1293988 . {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Kitchenham, B. 、 Pickard, LM、 MacDonell, SG Shepperd。 「統計精度が実際に測定するもの」 。 {{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Foss、T.、Stensrud、E.、 Kitchenham、B. 、Myrtveit、I. (2003)。 「モデル評価基準MMREのシミュレーション研究」 。 ソフトウェアエンジニアリングに関するIEEEトランザクション 。 29 (11): 985–995 。 書誌コード : 2003ITSEn..29..985F 。 CiteSeerX 10.1.1.101.5792 。 土井 : 10.1109/TSE.2003.1245300 。 {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Miyazaki, Y. Terakado, M. Ozaki, K. Nozaki, H. (1994). "Robust regression for developing software estimation models" . Journal of Systems and Software . 27 : 3–16 . doi : 10.1016/0164-1212(94)90110-4 . {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Lo, B. Gao, X. 「ソフトウェアコスト見積もりモデルの評価:精度、一貫性、回帰の基準」 。 {{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Hughes, RT Cunliffe, A. Young-Martos, F. (1998). "リアルタイム通信環境への適用におけるソフトウェア開発努力モデル構築手法の評価" . IEE Proceedings - Software . 145 : 29. doi : 10.1049/ip-sen:19983370 (2025年7月12日非アクティブ)。 2017年9月20日に オリジナル からアーカイブ済み。 {{cite journal}}: CS1メンテナンス: DOIは2025年7月現在非アクティブです (リンク) CS1メンテナンス: 複数の名前: 著者リスト (リンク)↑ Grimstad, S. Jørgensen, M. (2006). "ソフトウェアコスト見積もり精度の分析のためのフレームワーク" . {{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Jørgensen, M. Grimstad, S. (2008). "ソフトウェア開発工数の見積もり時に、無関係で誤解を招く情報の影響を回避する方法" . IEEE Software : 78– 83. {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Bentley, Jon (1985). "Programming pearls" (有料) . Communications of the ACM . 28 (9): 896– 901. doi : 10.1145/4284.315122 . ISSN 0001-0782 . S2CID 5832776 . ↑ ゲーデル、エッシャー、バッハ:永遠の黄金の鎖 。20周年記念版、1999年、152ページ 。ISBN 0-465-02656-7 。 ↑ AFCAA Revic 9.2 マニュアルRevic 記念サイト ↑ 「SLIM Suiteの概要」 。Qsm.com 。 2019年8月27日 取得 。 ↑ "SLIM-WebServices" . Qsm.com . 2019年8月27日 取得 . ↑ TruePlanning統合コストモデルPRICE Systemsサイト2015年11月5日にWayback Machine に アーカイブされました