ファンクションポイント法、あるいはファンクションポイント分析(FPA)とは、ソフトウェアシステムの規模や複雑さを「ファンクションポイント」で測定して推定する方法です。1970年代後半にアラン・アルブレヒトによって開発され、ソフトウェアシステムの「機能的サイズ」を、実装に使用する技術とは無関係に測定します。
ファンクションポイントは、時間の計測における1時間、距離の計測におけるマイル、温度の計測における摂氏のように、ソフトウェアの単位尺度です。つまり、ユーザーの視点からソフトウェア開発を測定するための標準的な方法を提供するものです。
ソフトウェアにデータを提供するユーザーインタラクションのことです。例えば、Webページのフォームにデータを入力すること。
ソフトウェアがユーザーのために生成する出力です。例えば、ビジネスアプリケーションが生成するレポートなどです。
検索機能など、入力と出力の両方を伴うユーザーインタラクションです。
システム内のデータの論理的な単位です。例えば、データベースのテーブルのようなものです。
システムで使用または共有されるデータまたは制御情報のセットです。
これらの構成要素には、それぞれ特徴に応じた複雑さの評価(低、平均、高)が与えられ、さらに重み付けがなされます。ファンクションポイントの総数は、カウントとウェイトの積を合計することで算出されます。
例えば、簡単なオンラインブックストアシステムを考えてみましょう。このシステムでは、ユーザーは本を検索し(外部からの問い合わせ)、本の詳細を閲覧し(外部からの出力)、本をショッピングカートに入れる(外部からの入力)ことができ、システムは本とショッピングカートの記録(内部の論理ファイル)を保持する必要があります。これらのコンポーネントはそれぞれ複雑さを評価され、重みが割り当てられ、システムの総機能ポイント数が計算されます。
ファンクションポイント分析は、ユーザーの視点からソフトウェアシステムを測定するため、コード行数などの他の測定値よりも有意義なものとなる可能性があります。また、開発プロセスの早い段階でソフトウェアの規模を推定できます。