web-dev-qa-db-ja.com

ソフトウェアのコスト見積もり

私の職場(大学)では、ほとんどの学生が [〜#〜] cocomo [〜#〜] を使用して最終的な卒業証書のソフトウェア見積もりコストを計算しているのを見てきました。私の推測では、このコストを見積もる方法はやや古い(COCOMOの日付は1981)ので、私の質問は次のとおりです。

How do you estimate costs in your software?

私は次のようなものを見てきました:

コスト=(HoursOfWork + EstimatedIddle)* HourlyRate

それは私が望んでいることではありません、私は適切に(科学的に)定義されたコストモデルを探しています

[〜#〜] edit [〜#〜]SOでいくつかの関連する質問を見つけました:

10
David Conde

ウォーターフォールモードで立ち往生している場合、私が使用した唯一のかなり正確な方法は次のとおりです。

  1. 作業分解図 を作成します
  2. 各タスクの大きさを、あなた(またはあなたが話すことができる誰か)が以前に行ったことに関連付けることができるように、それが十分に詳細であることを確認してください。
  3. 各タスクについて、経験に基づいて、最良の場合、予想される場合、および最悪の場合の数値を考え出します。最良の場合は、すべてが完全に行われた場合であり、最悪の場合は、それをやり直す必要があり(おそらく2回)、おそらくどこかにある場合です。
  4. (1 * best + 4 * probable + 1 * Worst)/ 6のような重み付け式を使用して、範囲を考慮した各タスクの見積もりを作成します。
  5. また、各タスクに「リスク」コンポーネントを追加できるバリアントも確認しました。リスクの3つのレベルは、0、1、および2です。リスク0は、以前に実行したことがある(または非常に近いもの)ことを意味し、1は、以前に実行したことがないが、業界では定期的に実行されていることを意味します。業界でこれまでに行われたことがないことを意味します。リスク数を取得し、それを推定値の「標準偏差」の近似値で乗算します。それを加重推定に追加します。したがって、リスクが0の場合は移動しませんが、リスクが2の場合は、最悪のケースの数にかなり近くなります。
  6. すべてのタスクを合計します。
  7. 「未知の未知数」の偶発性(いくつかの%)を追加します。

非常に正確な数値になります。正確ではありませんが、正確です。

正確さは、過去の経験に基づいて各タスクの数を考え出すことができるか、または以前にそれを行った人を見つけることができるかに完全に依存します。経験が多いほど、見積もりが良くなります。

プロジェクトを実行するときは、各タスクに対して時間を追跡し、見逃したタスクを書き留めて、比較できるようにします。これは時間の経過とともにあなたを良くするでしょう。

16
Scott Whitlock

ソフトウェアの見積もりは非常に困難です。私が使用したアプローチの1つは、要件を可能な限り細かく分割し、各部分を個別に見積もることです。次に、乗数(2倍)または固定量(予期しない作業の場合はx時間)のいずれかである「ファッジファクター」を追加します。適切な要件がない場合、実用的な目的で見積もりを行うことは不可能です。

3
Mark B

私たちが通常行うことは、完全な作業範囲をサブプロジェクトと見なすことができる主要なモジュール/要素に分割することです。言い換えれば、それらは、クライアントがプロジェクトの個別の部分と見なし、クライアントが個別に見積もりを取得したい作業部分です。

完了したら、各モジュールをタスク、サブタスク、さらに小さなサブサブタスクに分割して、それぞれを非常に簡単に見積もることができ、見積りに1〜10工数かかるようにします。このようにして、プロジェクトの作業範囲の詳細な内訳を取得します。

最後のステップは、マイルストーン間でタスクを分散することです。各マイルストーンクライアントが目に見える結果を得るように、私たちはそれを行います。これは、あるマイルストーンを通過して別のマイルストーンに移動するのに役立ちます。したがって、最終的に次のようなものが得られます。

モジュール1

    <ol>
        <li>
            Primary task 1 - 5 hrs
            <ol>
                <li>Subtask 1.1 – 3 hrs</li>
                <li>Subtask 1.2 – 2 hrs</li>
            </ol>
        </li>
        <li>
            Primary task 2 - 9 hrs
            <ol>
                <li>Subtask 2.1 – 1 hrs</li>
                <li>Subtask 2.2 – 2 hrs</li>
                 <li>Subtask 2.2 – 5 hrs</li>
            </ol>

最初はExcelシートを使用してそれを行いました。しかし、2年以上前に、私たちはそのためのソフトウェアツールを使い始めました。それを助けるいくつかの同様の製品があります www.evenflow.comwww.swproposal.com そして他のいくつか。私はすべてのリストを覚えていません。私たちはずっと前に研究をしました。それがお役に立てば幸いです。

良い質問は、正確に推定する方法です。私たちが信じているように、100%正しい見積もりはありません。唯一の方法は、作業範囲全体を可能な限り小さなタスクに分割することです。小さなタスクでは、行うプロジェクトのより詳細なレビューと分析を行うことができます。とにかく精度が上がるように。

0

業界は81年以来30年間で多くのことを学びました。そのような見積もりはうまくいきませんでした。アジャイルブームが基本的に風景を書き直したので、私たちはいくつかのぼんやりとした「比較の難しさ」を表す「ストーリーポイント」を使用します。次に、「速度」を取得して、泥だらけのマックがある程度の経験的データを使用して$$推定を実行できるようにします。

0
Edward Strange

労力とコストを見積もるのは非常に困難ですが、より正確なものが必要な場合は、次のようにします。

  • hoursOfWorkを3つのコンポーネントに分割します。

    1. 最高の見積もり、
    2. おそらく推定、
    3. 悪い見積もり。
  • estimatedIddleを削除します。

8時間以上かかると、大きなエラーが発生することに注意してください。

0
BЈовић

私は、ファンクションポイント推定や、最新のアプリケーション用に設計されたそのバリエーションなど、いくつかの「厳密な」アプローチを学びました。これらのアプローチの重要な部分は、既知の要件のより詳細な分析を強制することであり、そうでなければ私がそれを提供することになると思います。

適切なモデルがある場合でも、適切なデータセットを取得することは非常に困難です。生産性の測定は困難です。人々はほとんどすべてのメトリックをゲームします。

私の組織は機能不全でソフトウェアの見積もりから利益を得ることができないため、使用をやめましたが、 Cost Xpert group とそのツールにはある程度の配慮があります。しかし、これは非常に高価であり、大多数の組織にとって、コストと学習曲線に見合う価値がないと考えられます。

0
Jeremy