プログラム実行時情報を用いた
トランザクションファンクション抽
出手法
大阪大学 大学院情報科学研究科
‡
株式会社 日立システムアンドサービス
†
森岡 佑 , 谷口考治 , 楠本真二 , 井上克郎 ,
‡
‡
‡
英 繁雄 , 前田憲一 , 津田道夫
†
2006/3/10
†
第68回情報処理学会全国大会
†
†
1
ファンクションポイント(FP)

ソフトウェアの規模測定の尺度


画面や帳票,ファイルなどを通じた情報の入出力に着
目し,それらを種類別に数え上げ,種類数を加重合
計した値を機能量とする
ソフトウェア開発工数・費用の見積もりやソフトウェア
取引における指標


2006/3/10
ソフトウェア開発実績データの蓄積から開発予定のソフト
ウェアの工数予測
機能規模に応じた価格交渉
第68回情報処理学会全国大会
2
実用面における課題




一般的な計測ルールが述べられているだけで,
測定者によって誤差が出る
基礎データとして用いるために,過去に開発され
たソフトウェアのFP値を計測する必要がある
過去の開発の生成物としてソースコードしか存
在しないことも多い
FP計測導入のための初期コスト(教育等)が必
要となる
2006/3/10
第68回情報処理学会全国大会
3
研究の動機


ファンクションポイントはソフトウェアの設計仕様
書から求められることが多い
過去に開発されたソフトウェアのFP計測は困難



設計仕様書が存在しない
最終成果物で実現されている機能が設計仕様書と一
致しない
最終成果物であるプログラム自身(ソースコー
ド)からファンクションポイントを計測したい

2006/3/10
設計仕様書から求められたFPと近い値の算出
第68回情報処理学会全国大会
4
ファンクションポイント法(IFPUG法)

ビジネスアプリケーションソフトウェアに含まれる
データや処理を分類し,それぞれ点数をつけて
数値化し,機能量を算出する手法


データファンクション(データのまとまり)
トランザクションファンクション(データの入出力処理)
外部入力
外部出力
ユーザ
内部論理
ファイル
外部照会
外部
インタフェース
ファイル
計測対象ソフトウェア
2006/3/10
第68回情報処理学会全国大会
5
トランザクションファンクションとは



アプリケーションに対するデータの出入りを伴う処理
 データファンクションにアクセスし入出力を行う
ユーザに意味のある業務活動の最小単位
 画面からのデータ登録
 帳票出力
 データ検索
3種類のファンクションタイプ
 外部入力 (EI : External Input)
 データ入力による内部論理ファイルの更新
 外部出力 (EO : External Output)
 内部論理ファイル、外部インターフェースファイルからのデー
タ出力で、派生データがある処理(データが加工される)
 外部照会 (EQ : External Inquiry)
 内部論理ファイル、外部インターフェースファイルからのデー
タ出力で、派生データなし(データが加工されない)
2006/3/10
第68回情報処理学会全国大会
6
トランザクションファンクション計測手順



トランザクションファンクションを識別
トランザクションファンクションをEI, EO, EQに分
類
識別された各トランザクションファンクションの複
雑さを評価

各トランザクションで扱うファイル数・データ数の2つの
パラメータによって、低・中・高の3段階に重み付け

2006/3/10
ファイル数・データ数が多いほど複雑度が高い
第68回情報処理学会全国大会
7
提案手法における基本方針



ソースコードの静的情報のみからファンクション
ポイントを算出するのは困難
計測対象となるシステムの機能に対応するよう
な入力データを作成する
入力データに基づいて実際にシステムを動作さ
せて,FPの計測を行う
2006/3/10
第68回情報処理学会全国大会
8
提案手法
トランザクションファンクション(TF)抽出

プログラム実行履歴を準備
1.

全てのトランザクションファンクションが実行されるような処理の履
歴
データファンクション(DF)を指定
2.

クラス単位でDFを指定(DFクラス)
実行履歴からDFクラスのメソッド呼び出しを検出し、メソッド名
を抽出
3.

TFは「DFに対して入出力を行う処理」を指すため
EI, EO/EQ の分類

EI,EO/EQに対応する処理を実装しているメソッドの、メソッド名
に含まれていると考えられる部分文字列グループをそれぞれ
指定
1.

2.
2006/3/10
計測対象のシステムで用いられたメソッドの命名規則に従って、部
分文字列グループを決める
実際にメソッド名に含まれている部分文字列から分類
第68回情報処理学会全国大会
9
提案手法のプログラムへの適用


提案手法の妥当性を確かめる
実際にどのくらいのメソッドが取れるかどうかの
確認


2006/3/10
DFクラス、部分文字列を過不足なく指定できるか
抽出したメソッドがTFと一致しているか
第68回情報処理学会全国大会
10
適用例(対象プログラム)

Javaで記述された酒屋問題プログラム




全てのトランザクションファンクションが実行される実行履歴を用意
EI, EO/EQ に分類するために入力した部分文字列



クラス数17個
含まれるトランザクションファンクション7個 (表1)
EI ・・・ append, set, repair, remove, decrease, add
EO/EQ ・・・ display, check, stockcount, out
DFクラスとして指定したクラス 8個
 Brand, Container, StockLack, BrandList, StockLackList,
SakeDBList, DataBase, NoStockList
表1. 含まれるトランザクションファンクション
番号 タイプ
機能名
1
EI 積荷の新規登録
2
EI 在庫不足情報更新(削除)
3
EI 在庫不足情報作成
4
EO 在庫確認
5
EO 在庫不足確認
6
EO 在庫情報更新と出庫指示票出力
7
EQ 在庫不足表出力
2006/3/10
第68回情報処理学会全国大会
11
適用実験(結果)

13個のメソッドを検出 (表2)
表2. トランザクションとメソッドの対応
部分文字列による
EI,EO/EQの分類
BrandList
appendNode
EI
積荷の新規登録 (EI) DataBase
addContainer
EI
SakeDBList
appendNode
EI
在庫不足情報更新(EI) StockLackList removeNode
EI
在庫不足情報作成(EI) StockLackList appendNode
EI
DataBase
stockCount
EO/EQ
在庫確認 (EO)
SakeDBList
stockCount
EO/EQ
在庫不足確認 (EO) StockLackList checkStockLack
EO/EQ
Container
decreaseBrandCount
EI
在庫情報更新と
Brand
brandCountRepair
EI
出庫指示票出力 (EO) BrandList
removeNode
EI
DataBase
getOutIndicate
EO/EQ
在庫不足表出力 (EQ) StockLack
display
EO/EQ
トランザクション名
2006/3/10
クラス名
メソッド名
第68回情報処理学会全国大会
12
考察

「在庫情報更新と出庫指示票出力(EO)」のTFに対応す
るメソッド4個のうち3個がEIとして識別された



1つのTFが複数のメソッドで構成されうる



設計仕様書からのFP計測において、このTFの主な目的は出
庫指示票出力であり、在庫情報更新は付随処理と判断された
ため
現段階では結果を見て人手による分類をするしかない
抽出されたメソッドのグループ化が必要
連続して現れるメソッドを1つのグループとしてまとめる
メソッド名に含まれる文字列によるTFの分類ではEOと
EQの分類が困難

2006/3/10
対象プログラムのソースコードの静的解析によるデータ依存関
係の把握で分類が可能であると考えられる
第68回情報処理学会全国大会
13
まとめと今後の課題

プログラム実行時情報を用いて、DFクラスのメ
ソッド呼び出しを検出することによってトランザク
ションファンクションを抽出する手法を提案した

今後の課題


複数のメソッドで構成されるTFの識別
静的解析によるEO, EQの分類


2006/3/10
データが途中で加工されるかどうかが静的解析により判断
可能
トランザクションとメソッドの対応付けの自動化
第68回情報処理学会全国大会
14
ダウンロード

プログラム実行時情報を用いたトランザクションファンクション抽出手法