スポンサーリンク

◆もっと安くなる見積りの取り方は?

システム開発

◆見積りの取り方
 システムは、ハードウェアとソフトウェアから構成されおり、それぞれに見積もりのベースとなる要素がある。それらの要素は、決して専門家だけが理解できるものであってはならず、あくまで顧客である、利用者からのシステムに対する要素をベースに見積り・商談がなされるべきである。もし、業者の見積りが理解できないのであれば、理解できるように作成してもらうべきだろう。

 ハードウェアにおいて利用者にとって意味のある要素とは、要求応答時間、同時利用人数、利用回数、データ量、故障時の復旧時間などである。CPU処理能力がどうとか、DISKの性能がどうだとかそういった専門的な説明を聞いても分からないし、それらが直接、利用者にどのような影響を及ぼすのか分からない。業者が、そういった、個々の性能数値を説明したがる場合は、おそらく業者にも分からないかもしれない。したがって、ハードウェアの見積りにおいては、ここにあげた利用者にとって意味のある要素に関連つけて見積もりを作成してもらうのが良い。

 例えば、要求応答時間がxx秒、同時利用人数がxx人だから、CPUは1GHzのもの2個とメモリ2GBが必要という具合である。このように見積りを作成してもらうと、合い見積もりをとる場合も、比較がしやすく、また、同時利用人数が増えた場合、どれくらい追加の費用が必要になるか、あるいは逆に、費用を削減した場合、どれくらいの応答時間、同時利用人数になるかを、ある程度想定することができる。もし、見積りに予算が合わない場合、仕事のやり方を工夫し、同時利用人数を半分にすることができれば、投資額を削減できる可能性がある。

 つぎに、ソフトウェアにおいて利用者にとって意味のある要素とは、画面・帳票・ファイルである。個々の要素に難易度で重み付けをして機能数FP:ファンクションポイント)を決定し、これに、単位FP当たりの単価を乗じて金額を算定する。難易度は、データ項目数機能の複雑度で決定される。

 例えば、複雑な画面は、100万円/画面などとなる。これに、改修の場合は、改修率を乗じる。また、類似の機能であれば、流用率を乗じる。同じような機能で表題の1部が異なるだけの帳票や画面が多数あるような場合、業者が単純に積み上げてくると膨大な費用になるので注意が必要である。これで、システム全体の画面・帳票・ファイルを数えれば、全体の金額が決まる。ここで、作業範囲や開発言語・ツールの生産性などを加味して単位FP当たりの金額を調整すれば最終的な開発費用が決定する。作業範囲には、要件定義、要求仕様、外部設計、内部設計、プログラム作成、単体試験、統合試験、運用試験などがあり、生産性は、COBOLを1とした場合に対する、他の言語の生産性を倍数もしくは、比率で示す。

 次に、作業範囲を、内部設計~統合試験とすれば、全体作業の60%、開発ツールをVBとすれば、生産性を1.6倍(60%)とし、各々を割り掛ける。ここで、作業工程の定義と、各工程の作業内容および成果物について、理解を合わせておく必要がある。その上で、作業内容や成果物のボリュームによって、単位FP当たりの単価を調整することもできる。全体金額が、100万円ならば、100x0.6x0.6=36万円となる。この見積り方法を、ファンクションポイント法と呼ぶ。ソフトウェアの見積りには、ぜひ、このファンクションポイント法を用いてもらいたい。

 ファンクションポイント法の利点は、画一的に金額を算出できるということではない。難易度などは、かなり主観的な判断が入る余地がある。むしろ、その主観的な部分について、利用者からの視点で、ベンダと交渉ができるということにある。利用者から見て、大した価値を生まない画面に多額の金額を支払う必要はない。逆に、価値のある画面であれば、業者の内部作業工数にかかわりなく妥当な対価を支払っても良いだろう。さらに、仕様書から画面・帳票・ファイルを数え上げるので、成果物の漏れや忘れを発注者・受注者の双方でチェックでき、合意の上で発注できるので、納品時に「画面が足りない!」というようなトラブルも未然に防止できる。以下に見積り計算式の例を示すので参考にされたい。

開発費(円)=FP数 x 改修率(流用率) x 言語生産性 x FP係数 x 単価(円/FP数)
・FP数:
 単純入力/出力ファイル(3)、普通入力/出力ファイル(5)、
 複雑入力/出力ファイル(8)
 単純入出力ファイル(3)、普通入出力ファイル(6)、複雑入出力ファイル(13)
 単純入力画面(3)、普通入力画面(6)、複雑入力画面(13)
 単純出力画面(3)、普通出力画面(5)、複雑出力画面(8)
 単純入出力画面(6)、普通入出力画面(11)、複雑入出力画面(19)
 単純メニュー画面(2)、普通メニュー画面(2)、複雑メニュー画面(9)
 単純帳票(3)、普通帳票(6)、複雑帳票(10)
・改修率:新規(1)、改修(0.1、0.2、0.3、0.5、0.7)
・言語生産性:COBOL(1)、VB(0.6)、MS-Access(0.25)、
 アセンブラ(1.5)
以下より、最新の言語別生産性一覧表を購入することができる。
 programming-languages-table
・FP係数:作業対象範囲 / 全工程
 要求分析(2)+設計(3)+製作(3)+試験(2)=全体(10)
 例 製作(3)+試験(2)/全体(10)=FP係数=0.5
・単価 10万円/FP

 計算例:普通入出力画面、新規、言語VB、設計~試験工程作業
 開発費(円)=FP数(11) x 改修率(1) x 言語生産性(0.6) x FP係数(0.8)
        x 単価(10万円/FP数)
       =52.8万円

 ソフトウェアの見積もりは、古くはプログラムの行数による見積もりや、人月による見積もりが慣例的に行われている。しかし、これらは、いずれも開発する業者側の作業規模をベースとした考え方であるため、利用者からは、その妥当性が良く理解できない利用者にとっての価値」にそぐわないなどの問題が指摘されている。その矛盾については、後述する。  

コメント

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