FP法メモ

### データファンクション
+ ILF（Internal Logical File）
    + 追加・更新・削除など操作対象となるファイル（ILF 内部論理ファイル：内部ファイル）
        + アプリケーション境界内にあるデータのグループ。物理的な意味ではなくユーザーの概念上にある、一連の項目のまとまりを１つのファイルとする。 

+ EIF（External Interface File）
    + 参照されるファイル（EIF 外部インターフェイスファイル：外部ファイル）
        + アプリケーション境界外にあるデータのグループ。つまり他のアプリケーションが保守するファイル。

+ データエレメントタイプ（DET）
    + 繰り返しを含まないデータ項目

+ レコードエレメントタイプ（RET）
    + 繰り返しのあるデータ項目

■ ILF、EIFの複雑度

          | 1～19 DET | 20～50 DET | 51以上 DET
----------| ----------| -----------| ----------
1 RET     | Low       | Low        | Average
2～5 RET  | Low       | Average    | Hight
6以上 RET | Average   | Hight      | Hight


     | Low | Average | Hight
-----| ----:| --------:| ----------:
ILF  |   7 |      10 | 15
EIF  |   5 |       7 | 10


### トランザクショナルファンクション
+ EI（External Input）
    + データを受け取る処理（ILFに対してデータの追加・変更・削除を行う）（EI 外部入力：入力）
        + アプリケーション境界外からデータや制御情報を受け取って内部ファイルを処理するか、アプリケーションの振る舞いを変える処理。

+ EO（External Output）
    + データを外部へ出力する処理（ILF、EIFから参照したデータを加工してから出力）（EO 外部出力：出力）
        + アプリケーション境界外に出て行くデータや制御情報を生成する処理。同時に内部ファイルを処理することもある。

+ EQ（External inQuiry）
    + データを外部へ出力する処理（ILF、EIFから参照したデータを加工しないで出力）（EQ 外部照会：検索）
        + データや制御情報を検索してアプリケーション境界外に提示する処理。検索以外の処理を行わないもの。

+ データエレメントタイプ（DET）
    + アプリケーション境界を出入りする繰り返しを含まないデータ項目

+ ファイルタイプリファレンス（FTR）
    + 参照更新などアクセスするファイル数

■ EI、EO、EQの複雑度

          | 1～4 DET | 5～15 DET | 16以上 DET
----------| ----------| -----------| ----------
1 RET     | Low       | Low        | Average
2～5 RET  | Low       | Average    | Hight
6以上 RET | Average   | Hight      | Hight


     | Low | Average | Hight
-----| ----:| --------:| ----------:
EI  |   3 |      4 | 6
EO  |   4 |      5 | 7
EQ  |   3 |      4 | 6


### アプリケーションの一般的特徴

項目 | 影響度（0～5）
---- |---
1. データ通信|
2. 分散処理|
3. 性能|
4. 高負荷構成|
5. 要素処理(トランザクション)量|
6. オンラインデータ入力|
7. エンドユーザ効率|
8. オンライン更新 |
9. 複雑な処理|
10. 再利用可能性|
11. インストール容易性|
12. 運用性|
13. 複数サイト|
14. 変更容易性|

影響度
0：該当しない。またはまったく影響がない。
1：弱い影響がある。
2：やや弱い影響がある。
3：平均的な影響がある。
4：かなり強い影響がある。
5：全体にわたり強い影響がある。

#### 01) Data Communication(データ通信)
アプリケーションが通信を行う度合い。

評価点| 評価点の説明
---------------|---------------
0    |バッチ処理のみ、又はスタンドアローンＰＣで稼動
1    |バッチ処理であるが、リモートでの入力又はリモートでの印刷有
2    |バッチ処理であるが、リモートでの入力とはリモートでの印刷の両方を持つ
3    |オンラインでデータ収集するか、バッチ処理の為のＴＰ（遠隔操作）フロンとエンド又は照会システム
4    |フロントエンド以上の通信機能を持つが、1種類のＴＰ通信プロトコルだけをサポートする
5     |フロントエンド以上の通信機能を持つが、複数種類のＴＰ通信プロトコルをサポートする

#### 02) Distributed Data Processing(分散処理)
アプリケーション構成要素間でデータ転送が行われる度合い。

評価点| 評価点の説明
---------------|---------------
0|システムの構成要素間でのデータ転送又はデータ処理機能について関与しない
1|ＰＣの表計算やＤＢＭＳなどのようなシステムの他の構成要素で、エンドユーザコンピューティング（ＥＵＣ）の為のデータを準備する
2|ＥＵＣの為でなく、データが転送の為に準備され、システムの他の構成要素に転送され、処理される。
3|一方向のみのオンラインでの分散処理とデータ転送がある。
4|双方向のオンラインでの分散処理とデータ転送がある。
5|データ処理がシステムの最適な構成要素上で動的に実行される。

#### 03) Performance(性能)
レスポンスタイムやスループットに対する要求がアプリケーションの開発に与える影響度。

評価点| 評価点の説明
---------------|---------------
0|ユーザからの性能に対する特別な要求は明言されていない
1|性能条件と設計について要求が明言され、レビューが行われたが、特別な対応は要求されなかった
2|レスポンスタイムまたはスループットがピーク時に厳しい状況となるが、CPU使用率に対する設計上の特別な配慮は不要である。処理の期限は翌営業日である
3|レスポンスタイムまたはスループットが全業務時間中厳しい状況となるが、CPU使用に対する設計上の特別な配慮は不要である。インタフェースをとっているシステムによって、処理の期限に制限がある
4|3に加えて、ユーザの指定した性能要件が厳しいため、設計段階で性能分析が必要である
5|4に加えて、ユーザの指定した性能要件を満たすために、設計、開発、導入の段階で性能分析ツールを使用する必要がある

#### 04) Heavily Used Configuration(高負荷構成)
コンピュータの資源制約がアプリケーション開発に与える影響。

評価点| 評価点の説明
---------------|---------------
0|運用上の制約は明示されていないし、暗黙的にもない
1|運用上の制約はあるが、通常よりも厳しくない。制約を満たすための特別の配慮は不要である
2|セキュリティまたはタイミング上の配慮が必要である
3|アプリケーションの特定部分に対して、特別なプロセッサ要件がある
4|指定された運用上の制約によって、セン卜ラルプロセッサまたは専用プロセッサに関して特別の制約が必要である
5|4に加えて、システムの分散構成要素に関してアプリケーションに特別な制約が必要である

#### 05) Transaction Rate(トランザクション量)
トランザクション量がアプリケーション開発に与える影響度。

評価点| 評価点の説明
---------------|---------------
0|トランザクションのピーク期間はないと予測される
1|トランザクションのピーク期間は、毎月、四半期、季節ごと、毎年１回などの程度で予想される
2|毎週トランザクションのピーク期間があると予想される
3|毎日トランザクションのピーク期間があると予想される
4|アプリケーションに対するユーザ要求、サービス契約の面でユーザから高いトランザクション処理率が要求されているため、設計段階で性能分析作業が必要である
5|4に加えて、設計、開発、導入の段階で性能分析ツールを使用する必要がある

#### 06) Online Data Entry(オンライン入力)
オンラインでのデータおよび制御情報の入力の度合い。

評価点| 評価点の説明
---------------|---------------
0|すべてのトランザクションがバッチモードで処理される
1|トランザクションの1～7%がオンライン画面経由で入力される
2|トランザクションの8～15%がオンライン画面経由で入力される
3|トランザクションの16～23%がオンライン画面経由で入力される
4|トランザクションの24～30%がオンライン画面経由で入力される
5|トランザクションの30%以上がオンライン画面経由で入力される

#### 07) End-User Effeciency(エンドユーザ効率)
エンドユーザの効率の為に設計に対する配慮の度合い。

・以下の機能をカウント
メニュー、オンラインヘルプ、オンラインドキュメント、カーソル移動の自動化、スクロール、オンライントランザクションによる遠隔印刷、ファンクションキーの事前割当、オンライントランザクションからのバッチジョブ起動、画面上のデータのカーソルによる選択、反転表示、ハイライト表示、カラーアンダーライン表示およびその他の表示機能の多用、オンライントランザクションのユーザードキュメンテーションのハードコピー、マウスインターフェース、ポップアップウィンドウ、必要最小限の画面による業務機能の実現、二ヶ国語サポート(4項目としてカウント)、多言語サポート(6項目としてカウント)

評価点| 評価点の説明
---------------|---------------
0|機能のいずれも実現していない
1|機能の1～3項目を実現している
2|機能の4～5項目を実現している
3|機能の6項目以上を実現している。しかし操作効率に関してユーザからの要求は特にない
4|機能の6項目以上を実現している。 さらに操作効率に対するユーザ要求が厳しいため、ヒューマンファクターに対する設計作業が必要である (たとえは、キー操作を最少にする、デフォルトを最大に活用する、テンプレートを使用するなど)
5|4に加えて、専用のツールおよび処理を用いて目的が達成されたことを証明する必要がある

#### 08) Online Update(オンライン更新)
ILFがオンラインで更新される度合い。

評価点| 評価点の説明
---------------|---------------
0|オンライン更新は無い
1|1～3のILFをオンラインで更新する。更新量は少なく、回復は容易である
2|4以上のILFをオンラインで更新する。更新量は少なく、回復は容易である
3|主要なILFをオンラインで更新する
4|3に加えて、データ損失保護が必須であり、特別の設計、プログラムがされている
5|4に加えて、更新量が多く、回復処理の費用面の考慮がなされている。 オペレータの介在が最少となるような高度に自動化された回復手順が必要である

#### 09) Complex Processing(複雑な処理)
処理ロジックがアプリケーション開発に与える影響度。

評価点| 評価点の説明 | 要素
-------|-----------|------
0|要素のいずれにも該当しない|きめ細かい処理または、セキュリティ処理|
1|要素のいずれか1項目に該当する|広範な論理的処理|
2|要素のいずれか2項目に該当する|広範な演算処理|
3|要素のいずれか3項目に該当する|再処理が必要となる不完全処理への例外処理|
4|要素のいずれか4項目に該当する|多様の入出力機能を扱う複雑な処理|
5|要素の5項目すべてに該当する|–|

#### 10) Reusability(再利用可能性インストール)
他のアプリケーションで利用できるように特別な設計、開発、保守の必要性。

評価点| 評価点の説明
---------------|---------------
0|再利用できるコードはない
1|再利用できるコードがアプリケーション内で使用されている
2|アプリケーションの10%未満で複数ユーザのニーズを考慮する
3|アプリケーションの10%以上で複数ユーザのニーズを考慮する
4|アプリケーションは再利用し易くするために特別なバッケージ化およぴ文書化がされている。 またアプリケーションはソースコードレベルでユーザによりカスタマイズされる
5|アプリケーションは再利用し易くするために特別なパッケージ化および文書化されていて、 アプリケーションのカスタマイズはユーザパラメータの維持管理で可能である

#### 11) Installation Ease(インストール容易性)
前の環境からの移行の容易さがアプリケーション開発に与える影響度。

評価点| 評価点の説明
---------------|---------------
0|導入に対してユーザの特別な指定はないまた特別な設置作業も不要である
1|導入に対してユーザからの特別な指定はないが、特別なセットアップが必要である
2|移行および導入にユーザ指定があり、移行および導入ガイドを提供するとともにテストされているプロジェクトに対する移行の影響は重大ではない
3|移行および導入にユーザ指定があり、移行および導入ガイドを提供するとともにテストされているプロジェクトに対する移行の影響は重大である
4|2に加えて、自動移行および自動導入ツールを提供するとともにテストされている
5|3に加えて、自動移行および自動導入ツールを提供するとともにテストされている

#### 12) Operational Ease(運用性)
起動、バックアップ、回復手順といった運用面にアプリケーションが留意すべき度合い。

評価点| 評価点の説明
---------------|---------------
0|通常のバックアップ手続き以外、ユーサからの運用上の指定は特にない。
1～4|アプリケーションに適用される項目を以下から選択する。指定のあるものを除ぎ各項目の値を1度数としてカウントする。1) 効率的な始動、バックアップ、回復処理が提供されているが、オペレータの介入も必要である。2) 効率的な始動、バックアップ、回復処理が提供されており、オペレータの介入が不要(2度数としてカウント)。3) アプリケーションは、テープマウントの必要性が最小限になるようにしている。4) アプリケーションは用紙操作の必要性が最小限になるようにしている。
5|アプリケーションは、無人操作となるように設計されている。無人操作とはアプリケーションの始動またはシャットダウン以外は、 オぺレータがシステムを操作する必要がないことを意味する。自動エラー回復機能付きのアプリケーションである。

#### 13) Multiple Sites(複数サイト)
アプリケーションがどの程度多くのサイトやユーザ組織で使われるかを示す。

評価点| 評価点の説明
---------------|---------------
0|複数のサイトへの導入の要求はない
1|複数サイトに対する必要性を考慮し、アプリケーションは、同一のハードウェア、ソフトウエア環境だけで運用するよう設計されている
2|複数サイトこ対する必要性を考慮し、アプリケーションは、類似のハードウエア、ソフトウエア環境だけで運用するよう設計されている
3|数サイトに対する必要性を考慮し、アプリケーションは異なるハードウェアまたはソフトウエア環境で運用できるよう設計されている
4|複数サイトでアプリケーションを使用するためのドキュメントとサボー卜計画が提供され、テストされている。さらにアプリケーションの状態は1と2の記述の通りである
5|複数サイトでアプリケーションを使用するためのドキュメントとサポート計画が提供され、テストされている。さらにアプリケーションの状態は3の記述の通りである

#### 14) Facilitate Change(変更容易性)
処理ロジックやデータ構造の変更をどの程度容易にしているかの度合い。

評価点| 評価点の説明 | 特性
---------------|---------|------
0|特性のいずれにも該当しない|1つのILFを対象とした簡単な要求を処理|
1|特性のいずれか1項目に該当する|複数のILFを対象とした平均的な要求を処理|
2|特性のいずれか2項目に該当する|複数のILFを対象とした複雑な要求を処理|
3|特性のいずれか3項目に該当する|オンラインにてユーザが保守。翌営業日反映|
4|特性のいずれか4項目に該当する|オンラインにてユーザが保守。即時反映|
5|特性のいずれか5項目に該当する|–|

## 計算方法

#### 概算法
`ILF × 7ポイント ＋ EIF × 5ポイント ＋ EI × 4ポイント ＋ EO × 5ポイント ＋ EQ × 4ポイント`

#### 試算法
`35ポイント × ILF ＋ 15ポイント × EIF`

#### IFPUG
+  未調整ファンクションポイント（UFP）の計算

    `UFP ＝ ILF/EIFのFP値 ＋ EI/EO/EQのFP値`
    
+ 調整係数の計算
UFPにシステム特有の難易度を付ける為に、調整係数(Value Adjustment Factor：VAF)を求める
VAFはアプリケーションの一般的特徴を14項目に分類し、0～5のレベルで評価し合計した値
        
    `VAF = (TDI * 0.01) + 0.65`
※ TDI は「アプリケーションの一般的特徴1～14」の「影響度（0～5）」の合計

+ 調整済みファンクションポイントの計算

    `調整済みFP値 = 未調整FP値 × 調整係数`

+ 新規開発計測

    `DFP ＝ (UFP ＋ CFP) × VAF
    ・DFP：新規開発FP計測のFP値
    ・UFP：未調整FP値
    ・CFP：データ移行機能のFP値
    ・VAF：調整係数`

+ 機能拡張計測

    `EFP ＝ {(ADD ＋ CHGA ＋ CFP) × VAFA} ＋ (DEL × VAFB)
    ・EFP：機能拡張FP計測のFP値
    ・ADD：追加導入される機能のFP値
    ・CHGA：変更される機能の変更後のFP値
    ・DEL：削除される機能のFP値
    ・CFP：データ移行機能のFP値
    ・VAFA：機能拡張FP計測前の調整係数
    ・VAFB：機能拡張FP計測後の調整係数`

+ アプリケーション計測
    + 初期アプリケーションFP計測の計算

        `AFP ＝ UFP × VAF
        ・AFP：アプリケーションFP計測のFP値
        ・UFP：未調整FP値
        ・VAF：調整係数`

+ 新アプリケーションFP計測の計算

    `AFP = {(UFPB ＋ ADD ＋ CHGA) － (CHGB ＋ DEL)} × VAFA
    ・AFP：アプリケーションFP計測のFP値
    ・UFPB：機能拡張FP計測前の未調整FP値
    ・ADD：追加導入される機能のFP値
    ・CHGA：変更される機能の変更後FP値
    ・CHGB：変更される機能の変更前FP値
    ・DEL：削除される機能のFP値
    ・VAFA：機能拡張FP計測後の調整係数`