ソフトウェア開発の労力見積もり

ソフトウェア開発において、工数見積とは、不完全で不確実かつノイズの多い入力に基づいて、ソフトウェアの開発または保守に必要な最も現実的な工数(人時または金額で表す)を予測するプロセスです。工数見積は、プロジェクト計画、イテレーション計画、予算、投資分析、価格設定プロセス、入札ラウンドへの入力として使用できます。[ 1 ] [ 2 ]

実践状況

見積もりの​​実践に関する公開された調査によると、ソフトウェア開発の労力を見積もる際には専門家による見積もりが主流の戦略であることが示唆されている。[ 3 ]

一般的に、工数見積りは過度に楽観的であり、その正確性に対する過信が強い。平均的な工数超過は約30%で、時間の経過とともに減少していないようだ。工数見積りの誤差に関する調査のレビューについては、[ 4 ]を参照のこと。しかし、見積り誤差の測定には問題がある。「見積りの精度の評価」を参照のこと。工数見積りの精度に対する過信は、ソフトウェア専門家が実際の工数を最小値から最大値の範囲に含めることに90%の自信、または「ほぼ確実」と感じている場合、実際に工数を含める頻度はわずか60~70%に過ぎないという調査結果に表れている。[ 5 ]

現在、「工数見積り」という用語は、最も可能性の高い工数(最頻値)、50%の確率で超過しない工数(中央値)、計画工数、予算工数、あるいはクライアントへの入札または価格提案に使用される工数など、異なる概念を指すために使用されています。これは、コミュニケーション上の問題が発生する可能性があり、またこれらの概念が異なる目的を果たすため、望ましくないと考えられています。[ 6 ] [ 7 ]

歴史

ソフトウェア研究者や実務家は、少なくとも1960年代からソフトウェア開発プロジェクトの労力見積りの問題に取り組んできました。例えば、Farr [ 8 ] [ 9 ]や Nelson [ 10 ]の研究を参照してください。

研究のほとんどは、正式なソフトウェア工数見積モデルの構築に焦点を当ててきました。初期のモデルは典型的には回帰分析に基づいていたり、他の分野の理論から数学的に導き出されたものでした。それ以来、事例ベース推論、分類木と回帰木シミュレーションニューラルネットワークベイズ統計、要件仕様の語彙分析、遺伝的プログラミング線形計画法、経済生産モデル、ソフトコンピューティング、ファジー論理モデリング、統計的ブートストラッピング、そしてこれらのモデルを2つ以上組み合わせたアプローチなど、多数のモデル構築アプローチが評価されてきました。今日おそらく最も一般的な推定方法は、パラメトリック推定モデルであるCOCOMOSEER-SEM、および SLIM です。これらは1970年代と1980年代に実施された推定研究に基づいており、それ以来新しい較正データで更新されており、最後のメジャーリリースは2000年のCOCOMO IIです。機能ベースのサイズ尺度(ファンクションポイントなど)に基づく推定アプローチも、1970年代と1980年代に実施された研究に基づいていますが、修正されたサイズ尺度と、ユースケースポイント[ 11 ]オブジェクトポイント 、 1990年代のCOSMICファンクションポイントなどの異なるカウントアプローチで再較正されています。

推定アプローチ

推定アプローチを分類する方法は数多くありますが、例えば[ 12 ] [ 13 ]を参照してください。最上位のカテゴリは次のとおりです。

  • 専門家による推​​定:定量化のステップ、すなわち、判断プロセスに基づいて推定値が生成されるステップ。[ 14 ]
  • 正式な推定モデル: 定量化の手順は、履歴データから導き出された数式の使用など、機械的なプロセスに基づいています。
  • 組み合わせベースの推定: 定量化のステップは、さまざまなソースからの推定値を判断的かつ機械的に組み合わせることに基づいています。

以下に、各カテゴリ内の推定アプローチの例を示します。

推定アプローチ カテゴリ 推定アプローチの実装支援の例
類推に基づく推定 正式な推定モデル ANGEL、加重マイクロファンクションポイント
WBSベース(ボトムアップ)の見積もり 専門家の見積もり プロジェクト管理ソフトウェア、企業固有のアクティビティテンプレート
パラメトリックモデル 正式な推定モデル COCOMOSLIMSEER-SEMソフトウェア向けTruePlanning
規模に基づく推定モデル[ 15 ]正式な推定モデル ファンクションポイント分析[ 16 ]ユースケース分析、ユースケースポイント、SSU(ソフトウェアサイズユニット)、アジャイルソフトウェア開発におけるストーリーポイントベースの見積もり、オブジェクトポイント
グループ推定 専門家の見積もり プランニングポーカーワイドバンドデルファイ
機械的な組み合わせ 組み合わせベースの推定 類推に基づく工数見積と作業分解図に基づく工数見積の平均[ 17 ]
判断の組み合わせ 組み合わせベースの推定 パラメトリックモデルとグループ推定からの推定に基づく専門家の判断

推定アプローチの選択

異なる推定手法やモデルによる推定精度の違いに関する証拠は、「最良の手法」というものは存在せず、ある手法やモデルと他の手法やモデルとの比較における相対的な精度は、状況に大きく依存することを示唆している。[ 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 か月でできます。

フレッド・ブルックス

開発見積ソフトウェアの比較

ソフトウェアスケジュール見積もり 費用見積もり コストモデル 入力 レポート出力形式 サポートされているプログラミング言語プラットフォーム料金 ライセンス
AFCAAレヴィック[ 34 ]はい はい レビック KLOC、スケールファクター、コストドライバー 独自のテキスト どれでも ドス 無料 独自仕様/ 無料で公開可能
ソフトウェアのSeerはい はい SEER-SEMSLOC機能ポイント、ユースケース、ボトムアップ、オブジェクト、機能 独自仕様、Excel、Microsoft Project、IBM Rational、Oracle Crystal Ball どれでも Windows、任意(Webベースコマーシャル 独自の
スリム[ 35 ]はい はい スリム規模(SLOC機能ポイント、ユースケースなど)、制約(規模、期間、労力、スタッフ)、スケールファクター、過去のプロジェクト、過去の傾向 独自仕様、Excel、Microsoft Project、Microsoft PowerPoint、IBM Rational、テキスト、HTML どれでも Windows、任意(Webベース[ 36 ]コマーシャル 独自の
トゥループランニング[ 37 ]はい はい 価格 コンポーネント、構造、アクティビティ、コスト要因、プロセス、機能ソフトウェア サイズ (ソース コード行 (SLOC)、機能ポイント、ユース ケース変換ポイント (UCCP)、予測オブジェクト ポイント (POP) など) エクセル、CAD どれでも ウィンドウズ コマーシャル 独自の

参照

参考文献

  1. ^ 「ソフトウェア開発の労力見積もりについてわかっていることとわかっていないこと」
  2. ^ 「コスト見積および評価ガイドGAO-09-3SP 資本プログラムコストの策定と管理に関するベストプラクティス」(PDF)。米国会計検査院。2009年。
  3. ^ Jørgensen, M. (2004). 「ソフトウェア開発工数の専門家による見積もりに関する研究のレビュー」 .システムとソフトウェアジャーナル. 70 ( 1–2 ): 37–60 . doi : 10.1016/S0164-1212(02)00156-5 .
  4. ^ 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: 複数の名前: 著者リスト (リンク)
  5. ^ 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: 複数の名前: 著者リスト (リンク)
  6. ^ Edwards, JS Moores (1994). 「情報システム管理における見積ツールと計画ツールの利用に関する矛盾」. European Journal of Information Systems . 3 (2): 139– 147. doi : 10.1057/ejis.1994.14 . S2CID 62582672 . 
  7. ^ Goodwin, P. (1998). 判断力に基づく売上予測の強化:実験室研究の役割. 判断力に基づく予測. G. Wright and P. Goodwin. ニューヨーク, John Wiley & Sons: 91-112.
  8. ^ Farr, L. Nanus, B. 「コンピュータプログラミングのコストに影響を与える要因、第1巻」(PDF) 。 2017年2月21日時点のオリジナル(PDF)からアーカイブ。{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  9. ^ Farr, L. Nanus, B. 「コンピュータプログラミングのコストに影響を与える要因、第2巻」(PDF) 。 2018年7月28日時点のオリジナル(PDF)からアーカイブ。{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  10. ^ Nelson, EA (1966). コンピュータプログラミング費用見積りのためのマネジメントハンドブック. AD-A648750, Systems Development Corp.
  11. ^ 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 97835400023459783540362098
  12. ^ Briand, LC、Wieczorek, I. (2002). 「ソフトウェア工学におけるリソース推定」.ソフトウェア工学百科事典. JJ Marcinak. ニューヨーク、John Wiley & Sons: 1160–1196.
  13. ^ Jørgensen, M. Shepperd, M. 「ソフトウェア開発コスト見積研究の体系的レビュー」{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  14. ^ 「カスタム ソフトウェア開発サービス – カスタム アプリ開発 – Oxagile」
  15. ^ Hill Peter (ISBSG) – Estimation Workbook 2 – 国際ソフトウェアベンチマーク標準グループ発行ISBSG - Estimation and Benchmarking Resource Centre 2008年8月29日アーカイブ、Wayback Machineにて
  16. ^ Morris Pam — ファンクションポイント分析の総合指標の概要- ファンクションポイントリソースセンター
  17. ^ Srinivasa GopalとMeenakshi D'Souza. 2012. 事例ベース推論と複合推定アプローチを用いた推定精度の向上.第5回インドソフトウェアエンジニアリングカンファレンス (ISEC '12) 論文集. ACM, ニューヨーク, USA, 75-78. doi : 10.1145/2134254.2134267
  18. ^ 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: 複数の名前: 著者リスト (リンク)
  19. ^ a b Jørgensen, M. 「ソフトウェア開発作業の労力の見積もり:専門家の判断と形式モデルに関する証拠」
  20. ^ Winkler, RL (1989). 「予測の統合:哲学的根拠と現在の課題」. International Journal of Forecasting . 5 (4): 605– 609. doi : 10.1016/0169-2070(89)90018-6 .
  21. ^ 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: 複数の名前: 著者リスト (リンク)
  22. ^ BlueOptima (2019年10月29日). 「信頼性が高く客観的なソフトウェア開発メトリクスの特定
  23. ^ https://www.scalacode.com/guides/ソフトウェア開発コスト/
  24. ^ 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: 複数の名前: 著者リスト (リンク)
  25. ^ Kitchenham, B. , Pickard, LM, MacDonell, SG Shepperd. 「統計の精度の真の測定法{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  26. ^ Foss、T.、Stensrud、E.、Kitchham、B.、Myrtveit、I. (2003)。「モデル評価基準 MMRE のシミュレーション研究」ソフトウェアエンジニアリングに関するIEEEトランザクション29 (11): 985–995書誌コード: 2003ITSEn..29..985FCiteSeerX 10.1.1.101.5792土井10.1109/TSE.2003.1245300 {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  27. ^宮崎, 寺門, 尾崎, 健, 野崎, 秀. (1994). 「ソフトウェア見積りモデル開発のためのロバスト回帰」 .システム・アンド・ソフトウェアジャーナル. 27 : 3–16 . doi : 10.1016/0164-1212(94)90110-4 .{{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  28. ^ Lo、B. Gao、X. 「ソフトウェアコスト見積モデルの評価:精度、一貫性、回帰の基準」{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  29. ^ 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 maint: DOIは2025年7月時点で非アクティブです(リンク) CS1 maint: 複数の名前: 著者リスト(リンク
  30. ^ Grimstad, S. Jørgensen, M. (2006). 「ソフトウェアコスト見積り精度の分析のためのフレームワーク」 .{{cite web}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  31. ^ Jørgensen, M. Grimstad, S. (2008). 「ソフトウェア開発工数の見積もりにおいて、無関係で誤解を招く情報の影響を回避する方法」 IEEEソフトウェア: 78–83 .{{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)
  32. ^ Bentley, Jon (1985). 「プログラミングの秘訣」(有料) . Communications of the ACM . 28 (9): 896– 901. doi : 10.1145/4284.315122 . ISSN 0001-0782 . S2CID 5832776 .  
  33. ^ゲーデル、エッシャー、バッハ:永遠の黄金の三つ編み。20周年記念版、1999年、152ページ。ISBN 0-465-02656-7
  34. ^ AFCAA Revic 9.2 マニュアルRevic 記念サイト
  35. ^ 「SLIM Suiteの概要」 . Qsm.com . 2019年8月27日閲覧。
  36. ^ "SLIM-WebServices" . Qsm.com . 2019年8月27日閲覧。
  37. ^ TruePlanning統合コストモデルPRICEシステムサイト2015年11月5日アーカイブat the Wayback Machine