我々ソフトウェアエンジニアにとって「見積もり」は永遠のテーマです。
「このソフトウェアを完成させるまでにどれだけの工数が必要か」
たったこれだけ。これだけの値を予測するため、あるいは予測することができないために、我々は日々格闘しているとも言えます。本書で紹介されている「ファンクションポイント法」(以下FP法)は、ソフトウェアの規模を見積もる際に用いられる標準的な手法の1つです。FP法以外の見積もり規模として、例えばLOC(ソースコードの実行行数)等がありますが、LOCの場合所謂「コピペ」(Copy & Paste)プログラミングによって容易にソフトウェアの見かけ上の規模が増大してしまう傾向があり、必ずしもソフトウェアの規模を適切に表現したものではありませんでした。
FP法は、ソフトウェアの規模を「ユーザーに対して提供できるサービスの量」という視点から評価した規模見積もりです。本書ではFP法を使った見積もり手法について、実例を交えて解りやすく説明しています。本書は多くの例や演習問題を含んでいるため、全くFP法に対して知識のない読者でも容易にFP法を習得することができます。
私の場合、以前から「FP法について勉強しないといけないな」と思いつつ、なかなかその機会が得られずに忸怩たる思いをしていたものでした。そのせいもあってか「FP法ってもの凄く難しいんじゃないの?」という未知の知識に対する恐れのようなありました。本書を読む際もそれなりに「身構えて」読み始めたのですが、読み進むにつれて「あれっ、FP法って簡単じゃん」と思い始めました。実際、基本的な考え方だけならFP法は「驚くほど簡単」であり、プロジェクト開始時期でまだ設計内容が明確化されていない間でもかなり精度の高い計測を行うことができます。
ただ、本書を読み進めていくにつれ「ホントにFP法での見積もり値って実際に即しているのだろうか?」という疑問は拭い去れませんでした。FP法は基本的に「機能の数が増えるとFP値が増える」という特質があります。またソフトウェアの機能分割方法については明確に規定されておらず、利用者が自らの判断で機能の単位を決めていくことになります。そのため、機能分割の方法が違うと見積もりの結果が大きく異なってくるのです。FP法による見積もり精度を上げていくためには、適切な機能分割を行う必要があると思いました。
ただ、本書を読み進めていくにつれ「ホントにFP法での見積もり値って実際に即しているのだろうか?」という疑問は拭い去れませんでした。FP法は基本的に「機能の数が増えるとFP値が増える」という特質があります。またソフトウェアの機能分割方法については明確に規定されておらず、利用者が自らの判断で機能の単位を決めていくことになります。そのため、機能分割の方法が違うと見積もりの結果が大きく異なってくるのです。FP法による見積もり精度を上げていくためには、適切な機能分割を行う必要があると思いました。
本書は入門書としては極めて有益な著作なのですが、実戦用としてはやや不満が残ります。本書で紹介されている演習問題は、殆どすべてが「新規開発」を想定しています。しかし実際の開発現場において、ソフトウェアを全て新規開発する事例は皆無に等しく、多くの場合は過去に製造したソフトウェアを部分的にせよ流用することになります。本書ではそのような「派生開発」におけるFP法の適用について説明が乏しく、実戦場面で用いるにはやや役不足を感じました。
総じてFP法の入門書としては良い著作だと思います。ただ本書が「FP法を学習する際の最適な1冊」かどうかはわかりません。ひょっとしたらもっと良い書籍があるかもしれません。
お奨め度★★★