私はソフトウェアエンジニアとして、数多くの見積もりを作成してきました。
その中で、見積もりの精度を高めるために役にたった方法を紹介します。
① 作業を細かく洗い出す
作業を細かく洗い出すほど見積もりの精度が高まります。
例えば、3カ月くらいの案件であれば、作業を1日単位で見積もると、経験的に7~8割程度は計画通りに進められます。
ただし、作業を細かくするためには作業内容を熟知している必要があり、かつ見積もりにかかる時間を多くとる必要があります。3カ月くらいの案件であれば、だいたい3~4日かかります。
作業に熟知していなかったり、見積もりに時間がとれなかったりする場合は、ある程度粗い単位で見積もりをして、その代わり精度が悪い分だけリスクを見込んで、作業時間を多めに見積もっておく必要があります。
そして、作業が進むにつれて見積もりに必要な情報が集まるので、それに合わせて残りの作業を再見積もりして精度を上げて必要なら人や期間の調整をします。
例えば、事前検討フェーズを設けるソフトウェア開発のプロジェクトであれば、事前検討前の見積もりは「③ 客観的な指標と見積もりを比べる」で記載したstep数での見積もりをモジュール単位で行い、事前検討期間の最後で再見積もりのタスクを用意しておき、そこではプログラムのシーケンスごとの細かい単位でstep数を見積もるようにします。
② 相見積もりをする
複数人で見積もりをすると、それぞれが異なる観点で見積もるので、見積もりの抜け漏れに気づけます。
可能であれば自分だけでなく社内の有識者、そして外部委託先にも見積もりを依頼してその結果を持ち寄り議論すると良いです。
外部委託先に依頼するとき、はじめからこちらの見積もりを提示するとそれに合わせて減らせるところまで多めに見積もる可能性があります。
そのため、作業内容だけ伝えて見積もりをお願いした方がいいです。
ただし、外部委託先はこちらが見積もり依頼した作業をする前提で見積もってくれるので、なるべく作業も依頼しましょう。見積もりだけお願いして作業を発注しないと、信頼関係が壊れて今後請け負ってくれなくなる恐れがあります。
③ 客観的な指標と見積もりを比べる
単に作業を洗い出して工数と期間を洗い出すだけだと、それが適切なのか自分も周りも判断が難しいです。
客観的な指標を使うことで工数と期間が適切なのかの判断材料になり、まわりに説明する時にも説得力が増します。
ソフトウェア開発の工数見積もり
ソフトウェア開発であれば、ソースコードの行数(step数)が役立ちます。
(参考) 規模見積もりの王様「LOC見積もり」 ~見積もりの基本技法 その2~
https://monoist.itmedia.co.jp/mn/articles/1109/14/news011.html
開発するシステムが大規模な場合はモジュールごとに、小規模な場合は機能ごとに分割します。
次に、流用元があればそれを参考にするなどしてstep数を見積もります。
なぜそのstep数にしたのかは文章に残しておきましょう。
予実管理やまわりに説明する時に役立ちます。
そして、step数を基本設計から結合試験までの生産性で割ります。
生産性はプロジェクトで決まっていればそれに従い、決まっていなければ、IPAが出している資料などを参考に算出します。
(参考) 初中級プロマネのための現場で活かせ!統計情報
https://citp-forum.ipsj.or.jp/wp-content/uploads/2018/10/report2016_09_tsuchiya.pdf
今まで経験で、設計の難易度と量が多いミドルウェアの開発はおおよそ750 step / 月、アプリケーションフレームワークを利用できるWebアプリやスマートフォンアプリは1000 step / 月が適切だと私は考えています。
要件定義とシステム試験は基本設計から結合試験の規模と難易度に応じて工数を検討します。
規模が小さく難易度が低い場合は基本設計から結合試験の工数の5~10%、規模が大きく難易度が高い場合は15~20%程度が経験的に適切です。
ソフトウェア開発の期間見積もり
日本情報システム・ユーザー協会が発表した「投入人月の立方根の2.4倍」が期間の見積もりに役立ちます。
(参考) 最適な工期は「投入人月の立方根の2.4倍」、JUASが調査
https://atmarkit.itmedia.co.jp/news/200707/05/juas.html
開発工数が1000人日だとしても、1000人で開発すれば1日で終わるかといえばそうではありません。
前工程の作業が終わらないと次の作業が始められないという制約がありますし、プロジェクト外作業が入ったり、休みが入ったりと色々な制約があります。
それを考慮すると統計的に「投入人月の立方根の2.4倍」が適切ということになります。
④ フォロー工数・プロジェクト外の作業・有休も見積もる
フォロー工数やプロジェクト外の作業時間は意外と多いので、あらかじめ考慮しましょう。
私が経験したプロジェクトでは、外部委託先や後輩のフォローに週1日、業務改善や手続きなどのプロジェクト外の社内作業に週1日を見積もり、おおよそそれ通りの工数がかかりました。
また、なるべく年度初めに計画的に有休を設定しておき、有休がある前提でスケジュールを組むと、有休がとれなかったり、有休のために残業するなどが減らせます。
コメントを残す