ファンクションポイント法でトランザクションファンクションを見つける
皆さん、こんにちは。技術開発グループのn-ozawanです。
成人式は国が主催しておらず、各自治体が自主的に行っている行事です。東北地方などの豪雪地帯では、GWやお盆の時期を狙って成人式を行う自治体もあります。
本題です。
ファンクションポイント法ではそのアプリケーションが扱うデータと共に、そのデータの入出力処理も洗い出して重み付けを行います。今回はトランザクションファンクションについてお話しします。なお、本稿ではファンクションポイント法のトランザクションファンクションに焦点を当てています。ファンクションポイント法の概要を知りたい方は以前の投稿を参照ください。
目次
トランザクションファンクション
トランザクションファンクションとは
トランザクションファンクションは、アプリケーションを跨いたデータの入出力処理です。そのアプリケーションを利用するユーザーや別のアプリケーションなどから、その該当アプリケーションに対してデータの入出力を伴う処理を指します。例えば、ユーザー情報を登録する、登録した内容をメールで送信する、などが該当します。
本稿では以前の投稿で例示した以下の販売管理システムを例に、「販売管理」アプリケーションのトランザクションファンクションを見つけてみたいと思います。

EIとEOとEQ
トランザクションファンクションはその特性からEI
、EO
、EQ
に分類されます。
EI
(External Input)は、外部からデータを受け付け、ILF
に対して作成、変更、削除を行います。EO
(External Output)は、ILF
もしくはEIF
のデータを加工して出力を行います。EQ
(External inQuiry)は、ILF
もしくはEIF
のデータを加工しないで出力を行います。EO
とEQ
の違いは、加工の有無の違いでしかありません。

商品を購入するためには、購入可能な商品が何かを確認する必要があります。販売管理には購入可能な商品を確認するための処理「商品の表示」があることでしょう。その「商品の表示」は、商品のマスタデータを参照して画面に表示します。画面に表示される商品情報は、在庫状況や配達可能日、消費税など、情報が加工されて表示されますので、EO
と呼べるでしょう。
一方で、バックオフィスからのお知らせ情報は、特に加工せずに画面に表示することから、EQ
となります。
商品を購入する際は、売上情報への書き込みと、購入ログを出力するため、EI
となります。
DETとFTR
DET
はデータファンクションの時と同じで、EI
であれば受け取るデータの項目数、EO
とEQ
であれば出力するデータの項目数となります。
FTR
は登録/更新/削除/参照されるILF
もしくはEIF
の数です。先ほどの「商品の購入」であれば、売上情報とログのそれぞれに書き込みを行っていますので、FTR
は2とカウントします。
複雑度とFP値
DET
とFTR
からEI
の複雑度を求めます。
DET | ||||
---|---|---|---|---|
1~4 | 5~15 | 16以上 | ||
FTR | 0~1 | 単純 | 単純 | 普通 |
2 | 単純 | 普通 | 複雑 | |
3以上 | 普通 | 複雑 | 複雑 |
DET
とFTR
からEO
とEQ
の複雑度を求めます。
DET | ||||
---|---|---|---|---|
1~5 | 6~19 | 20以上 | ||
FTR | 0~1 | 単純 | 単純 | 普通 |
2~3 | 単純 | 普通 | 複雑 | |
4以上 | 普通 | 複雑 | 複雑 |
求めた複雑度からFPを求めます。
単純 | 普通 | 複雑 | |
---|---|---|---|
EI | 3 | 4 | 6 |
EO | 4 | 5 | 7 |
EQ | 3 | 4 | 6 |
気を付けるべき点
データファンクションと同じ
データファンクションでも取り上げた気を付けるべき点が、トランザクションファンクションでも同じように言えます。DET
やFTR
が極端に増えたとしてもFP値に影響はありませんし、微増減してもFP値はそうそう変わりません。
複雑な条件分岐などは考慮されない
トランザクションファンクションの複雑度は、データの項目数と関連するILF
とEIF
の数に依存します。つまり、複雑な計算ロジックや条件分岐などによる処理は考慮されません。極端な例ですが、1つのILF
に書き込むのに10万行のロジックを実装する必要があったとしても、FP値に影響は出ません。
この後に行う調整係数で、処理内容が複雑かどうかを問う項目があります。その調整係数を用いて求められたFP値から工数を算出して、もしその工数に納得がいかない場合は個別に工数を調整した方が良いでしょう。
出力の形式にも影響されない
参照したデータを画面に表示するのか、CSV出力するのか、コンソールに出力するのかで、工数は大きく変わってきます。しかし、トランザクションファンクションの複雑度は、これら参照したデータを出力する形式に影響されません。
おわりに
トランザクションファンクションのDET
とFTR
は、データファンクションのDET
とRET
に比べて、カウントするのは幾分か楽でした。一方で、EI
、EO
、EQ
を探すのがデータファンクションより難しかったです。データファンクションはER図などでまとめられていることが多いのですが、トランザクションファンクションは仕様書を隅から隅まで読み込まないと見つからないからです。人によってFP値に差が出やすいのは、このトランザクションファンクションが適切に探し出せているかどうか、なのかもしれませんね。
ではまた。