◆人月による見積もりの問題とは?

システム開発

◆人月の矛盾
 ソフトウェアの開発費用は、『作業時間=人月(5人で2ヶ月なら10人月)』に単位金額を乗じて決める。つまり、製造コストのほとんどが人件費という特異な産業である。その生産性は、使用する開発ツールやプログラミング言語、開発手法、人の能力(なんと最大で生産性10倍以上違う!人件費が10倍違う!製造コストが10倍違う!)などで決まる。

 従って、例え同じ画面数のシステムであっても、人の生産性によってシステム構築費用は、大きく異なる。業者から一式1000万円の見積り(そもそも一式いくらの見積りしか出せない業者は信用できない。妥当性のある見積りを作る能力が無いということは、それまでの実績管理がされておらず、組織的な原単位や見積り基準も無く、いきあったりばったりで、その都度、担当者がエンピツを舐めて見積もっている可能性さえある。そんな業者に、まともな設計・開発技術力があろうはずがない。)であっても、生産性によって1/2~1/3にもなる。

 場合によっては、一桁違ってくることもある。例えば、MS―Accessの生産性は、一般的に他の言語の4倍の生産性である。仕様を見直して、MS―Accessで、開発してもらえば1000万円が、250万円になる可能性もあるということだ。さらに、標準のテンプレートをベースに手直しする程度であれば、さらにゼロが一つ減る。

 ところで、ソフトウェア費用は、作業時間で決まると書いたが、実は、ここに大きな矛盾がある。それは、ソフトウェアの生産性は個人の能力に最も左右されるという点だ。例えば、同じ画面・機能のプログラムであっても、優秀な人なら1ヶ月、ところが新人や不慣れな人では2ヶ月かかるとします。その場合、単価が、1人月で100万円とすると、出来の悪い人がやったほうが200万円と高額になってしう。

 発注側からすれば、同じ画面・機能であるので、誰がやろうと同じ価値であるのに、その価格が違うというのは、価値工学的に考えれば、明らかに矛盾がある。中には、作業時間の原単位として作成物数を、いまだにプログラムの行数(命令数)で提示している業者もあるかもしれない。しかし、行数であっても同じ。優秀な人が書けば、1000行で実現できる機能を、できの悪い人が書けば、2000行になるかもしれない。また、最近の生産性の高い開発ツールを使用すれば、さらにプログラムの行数は少なくなる。

 この傾向は、大手だから優秀で、生産性が良いかというと、そんなことは決してない。ソフトウェアの生産性は、あくまで、プログラムを作る個人の能力に依存している。そして、大手は、自分達ではプログラムは作成せずに、2次、3次の下請けにやらせている。大手では、1人月100万円程度が相場だそうだが、それには、この中間マージンや一般間接費用、宣伝広告費用、管理職の給料などが、たっぷりと上乗せされている。だからといって、担当の技術者が、特別に「早く、安く、良い」システムを提供してくれるわけではない。確かに大手には優秀な人が集まるかもしれない。しかし、彼らは、官公庁や金融機関などの数十億円規模のプロジェクトに投入されており、1件、数百~千万円規模のプロジェクトには、「手配屋さん」しか投入されない。このように作業時間による金額というのは、非常に大きな矛盾を抱えている。

 そこで、先に述べたファンクション・ポイント法が考案された。これは、あくまで、利用者側からみたシステムの構成要素である、画面や帳票(入出力)等を基本単位としてシステム規模と開発費を決定する。

 これまでの欧米などでの研究調査の実績や私の経験から、平均的な画面機能、開発言語、生産性での要件定義~完成までの単価は、70~100万円/画面、程度である。つまり、ソフトウェアの平均的な生産性は、世界的にもあまり差が無いということである。ただし、個別には言語や個人の能力で、最大10倍の差が出るのは前述したとおりである。 

■目次:システム開発する前に知っておくべきこと83項目

コメント

タイトルとURLをコピーしました