基本情報技術者を体験しよう!コンソールアプリでファンクションポイント計算機を作る

広告

基本情報技術者試験では、ソフトウェア開発の規模を見積もる方法として「ファンクションポイント法」が出題されます。

教科書では計算式を覚えるだけになりがちですが、実際にプログラムを作ってみると理解が深まります。

今回は Visual Studio のコンソールアプリ を使って、ファンクションポイントを計算するプログラムを作ってみましょう。


ファンクションポイント法とは?

ファンクションポイント法は、プログラムの行数ではなく、「システムが持つ機能の数」から開発規模を見積もる方法です。

試験では、次の5種類の機能が登場します。

機能意味
外部入力(EI)データを入力する機能
外部出力(EO)帳票などを出力する機能
内部論理ファイル(ILF)システム内で管理するデータ
外部インタフェースファイル(EIF)他システムのデータ
外部照会(EQ)検索・参照する機能
略称英語日本語の意味
EIExternal Input外部入力(システムへデータを入力する機能)
EOExternal Output外部出力(帳票や画面などへ出力する機能)
ILFInternal Logical File内部論理ファイル(システム内で管理するデータ)
EIFExternal Interface File外部インタフェースファイル(他システムが管理するデータ)
EQExternal Inquiry外部照会(検索・参照する機能)

身近な例

略称身近な例
EI会員登録画面で名前を入力する
EO請求書や成績表を表示・印刷する
ILF会員名簿や商品マスタを保存する
EIF銀行や配送会社など他システムのデータを利用する
EQ会員番号を入力して会員情報を検索する

それぞれに重み付け係数が決められており、

個数 × 重み付け係数

を計算して合計します。

最後に、

複雑さの補正係数

を掛けることで、最終的なファンクションポイント値を求めます。


今回の問題

今回は教科書と同じ問題をプログラムで計算します。

項目個数
外部入力(EI)1
外部出力(EO)2
内部論理ファイル(ILF)1
外部インタフェースファイル(EIF)0
外部照会(EQ)0
補正係数0.75

教科書では、この問題の答えは 18 になります。

今回はその計算をコンピュータにやってもらいます。


新しいプロジェクトを作ろう

Visual Studio を起動します。

[新しいプロジェクトの作成]

コンソールアプリ(C#)

プロジェクト名を

FunctionPointCalculator

にします。


プログラムを入力しよう

次のプログラムを入力してみましょう。

Console.Write("外部入力(EI):");
int ei = Convert.ToInt32(Console.ReadLine());

Console.Write("外部出力(EO):");
int eo = Convert.ToInt32(Console.ReadLine());

Console.Write("内部論理ファイル(ILF):");
int ilf = Convert.ToInt32(Console.ReadLine());

Console.Write("外部インタフェースファイル(EIF):");
int eif = Convert.ToInt32(Console.ReadLine());

Console.Write("外部照会(EQ):");
int eq = Convert.ToInt32(Console.ReadLine());

Console.Write("補正係数:");
double coef = Convert.ToDouble(Console.ReadLine());

int total =
    ei * 4 +
    eo * 5 +
    ilf * 10 +
    eif * 7 +
    eq * 4;

double fp = total * coef;

Console.WriteLine();
Console.WriteLine($"重み付け合計:{total}");
Console.WriteLine($"ファンクションポイント:{fp:F2}");

プログラムの解説

このプログラムでは、キーボードから入力した値を使って、ファンクションポイントを計算しています。

Console.Write()

画面に文字を表示します。

Console.Write("外部入力(EI):");

Console.ReadLine()

キーボードから入力した文字を受け取ります。

Console.ReadLine();

ただし、このままでは文字列なので計算はできません。


Convert.ToInt32()

文字列を整数に変換します。

int ei = Convert.ToInt32(Console.ReadLine());

これで数値として計算できるようになります。


int と double

整数を扱うときは

int

小数を扱うときは

double

を使います。

補正係数は 0.75 のような小数なので、double を使っています。


計算

各項目に重み付け係数を掛けて合計しています。

int total =
    ei * 4 +
    eo * 5 +
    ilf * 10 +
    eif * 7 +
    eq * 4;

最後に補正係数を掛けます。

double fp = total * coef;

実行してみよう

次の値を入力します。

外部入力(EI):1
外部出力(EO):2
内部論理ファイル(ILF):1
外部インタフェースファイル(EIF):0
外部照会(EQ):0
補正係数:0.75

実行結果

重み付け合計:24
ファンクションポイント:18

教科書と同じ答えになれば成功です。


今日のチャレンジ

プログラムはそのままで、入力する数字だけを変えて実行してみましょう。

EIEOILFEIFEQ補正係数
231120.80
524130.65
011021.00

結果がどのように変わるか予想してから実行してみると、プログラムの動きをより理解できます。

パターン1

項目計算
重み付け合計2×4 + 3×5 + 1×10 + 1×7 + 2×4 = 48
ファンクションポイント48 × 0.80 = 38.4

パターン2

項目計算
重み付け合計5×4 + 2×5 + 4×10 + 1×7 + 3×4 = 89
ファンクションポイント89 × 0.65 = 57.85

パターン3

項目計算
重み付け合計0×4 + 1×5 + 1×10 + 0×7 + 2×4 = 23
ファンクションポイント23 × 1.00 = 23

まとめ

今回は、基本情報技術者試験で学ぶファンクションポイント法を、コンソールアプリでプログラムにしました。

この体験を通して、

  • コンソールアプリの作成
  • キーボード入力
  • 変数
  • int と double
  • 数値への変換
  • 四則演算
  • 計算結果の表示

を体験することができました。

コンソールアプリは画面作成が不要なため、プログラムの基本的な流れである「入力 → 計算 → 出力」を学ぶのに最適です。

まずは教科書と同じ答えが表示されることを確認し、その後は入力する数字を自由に変えながら、プログラムの動きを確かめてみましょう。そうすることで、教科書で学んだ内容が「実際に動くプログラム」として理解できるようになります。

訪問数 50 回, 今日の訪問数 50回

広告