下記の手法が考えられます。(計画・統率・報告などの管理工数を除く)
1.技術者のローディングで価格(工数)を決める。
要件の機能に関係なく、技術者の担当開始から終了までの期間を
所要工数として見積る。
(例)
11/1~10が要件定義・設計、11/20~30が製造テストだとして、
同じ技術者が担当するとしたら、11/11~19に別なジョブを
やるのが理想だが、そううまくはいかない場合が多い。この
ようなときは1人月としてしまう。
2.対象プログラムの内容が分かる場合は、ある要件に対して、製造
(コーディング/単体テスト)の工数が予想できる。このような
場合は製造の工数から全体(要件定義/設計/製造/テスト/リリース)
を計算で求める。
(例)
要件定義=10%
基本詳細設計=20%
製造(コーディング単体テスト)=40%
結合テスト=20%
総合テスト(能力テスト)=10%
製造に5人日かかるとすると全体は 5÷40%=12.5人日
3.要件の機能から予めきめられた範囲にあてはめる。
ファンクション・ポイント法やユース・ケース法を使って、
要件の機能の複雑さを判断しA,B,~,Eなどとランク付けする。
あらかじめ決められた工数を適用する。工数は検索の複雑さ・
読み込みの複雑さ・書き込みの複雑さなどから世間一般の
価格や経験によってあらかじめ決めておく。
(例)
ランクA=40人日
ランクB=25人日
ランクC=15人日
ランクD=8人日
ランクE=5人日
ランクCと判断されたら15人日。
(例)にある割合やランク、複雑度合いの判断はノウハウであり、
SE技術者個人または会社の部署ごとにナレッジ(知識)として
蓄積されているのが一般的である。