「ソフトウェア開発」と言ったらプログラミングしてデータベース作って、アプリケーションを作る、ってイメージがありますよね。
開発するには人手と時間が掛かりますので、誰かにお願いするにはお金が掛かります。
どんだけお金が掛かるかを発注元と発注先で合意した上で進めますので、見積もりが必要になります。
今回は、ソフトウェア開発における、見積もり方法の一つであるファンクションポイント法に関して解説します!
ソフトウェア開発における見積りの方法
繰返しになりますが、ソフトウェアを開発する時は、基本的に要件を色々出して、オーダーメードで作ることになりますが、どこかの開発会社に開発を依頼する時に、当然見積もり(費用)が必要になります。
見積もりは精度が高い方が良いのですが、どんなものを作りたいかは開発を開始し、要件定義が終わることで、明らかになってきます。
更に、その後の基本設計・詳細設計を行うことで、開発するソフトウェアがどのくらいのプログラム量やデータベースの量になるのかが分かります。
しかし、開発依頼者(発注元)が予算を確保する時に、開発者(発注先)からの見積もりをベースにするしか無いので、開発前の見積もりの金額は非常に大事になってきます。
下の図のように、適当に見積りを出して、それをベースに予算を確保し、実際開発がスタートしたら、要件が膨れて、結果的に予算が足りなくなる、なんて悲惨なことも発生してしまいます。
こんなことが起こらないように、ソフトウェア開発前の見積り時点で、正確な金額を計算する必要があるのです。
それで、見積もり方法には様々な方法があります。
例えば、プログラムステップ法やCOCOMO(ココモ)法なんてものがありますが、今回は有名なファンクションポイント法に関して、以下に詳しく解説します。
ファンクションポイント法とは?
ファンクションポイント法の特徴は、システムで表示する画面やデータベースのテーブル数、印刷する帳票、出力ファイル、バッチ処理など、各種機能(部品)に着目して、その部品の個数や作るための難易度から開発コストを算出する手法となります。
ファンクションポイント法は大きく以下のステップで見積もりを行います。
ファンクションポイントのステップ
- ソフトウェアを作るのに必要な要素(画面、帳票)の数を洗い出して部品にする
- それぞれの部品に対して難易度を割り付ける
- 独自の係数をかける
- 金額(開発コスト)を算出する
ファンクションポイントの良い点としては、「発注元(利用者)から見た場合に、画面数や帳票数など見える部分をベースに費用化しているため、理解や納得がしやすい」ということがあります。
確かに「プログラムの量がこれだけになるから、いくらです」と言われてもちょっと分かり難いですよね。
ファンクションポイント法は最後に独自の係数を使いますが、これが発注先の規模や経験によって値が変わってくるので、発注元にはその係数の妥当性は判断しにくかったりしますね。
まとめ
今回はソフトウェア開発の見積もり方法の一つである「ファンクションポイント法」に関して解説しました。
ファンクションポイント法のまとめ
- ソフトウェア開発において開発前の正しい見積り(開発コスト)の算出は重要
- 開発するソフトウェアの画面や帳票などの要素や数、難易度を使って、見積りを算出できる
- 最終的には独自の係数をかけてコストを算出する
- ファンクションポイント法は発注元(利用者)が理解、納得し易いのがメリット
私の経験上、発注先のベンダさんによって1画面作るのに100万、150万、200万みたいな感覚がありますが、1画面100万くらいなパターンが多いですね。
ソフトウェア開発に限らず、システム開発全般においては、トップダウン見積り、ボトムアップ見積り、という方法もありますので、そちらも覚えておくと良いと思います。
以上です!