プログラム実行履歴を用いたファンクションポイント計

プログラム実行履歴を用いたトラン
ザクションファンクション抽出手法
大阪大学 大学院情報科学研究科
‡
株式会社 日立システムアンドサービス
†
森岡 佑 , 谷口考治 , 楠本真二 , 井上克郎 ,
‡
‡
‡
‡
英 繁雄 , 芝元俊久 , 前田憲一 , 津田道夫
†
2007/2/2
†
ソフトウェアサイエンス研究会
†
†
1
構成
 ファンクションポイント計測の概要
 研究の動機と目的
 プログラムを利用したファンクションポイント計
測法
 提案手法の説明
 トランザクションファンクション抽出手法
 メソッド呼び出しのクラスタリング
 適用実験、考察
 まとめ、今後の課題
2007/2/2
ソフトウェアサイエンス研究会
2
ファンクションポイント(FP)計測の概要
 アプリケーションソフトウェアに含まれるデータや処理を
分類し,それぞれ点数をつけて数値化し,機能量を算
出
 データファンクション(データのまとまり)
 トランザクションファンクション(データの入出力処理)
トランザクション
ファンクション
ユーザ
データ
ファンクション
入力(EI)
出力(EO)
照会(EQ)
計測対象ソフトウェア
2007/2/2
ソフトウェアサイエンス研究会
3
研究の動機と目的
 ファンクションポイントはソフトウェアの設計仕様書から
求められることが多い
 過去に開発されたソフトウェアのFP計測は困難
 設計仕様書が存在しない
 最終成果物で実現されている機能が設計仕様書と一致しな
い
最終成果物であるプログラム自身からファンク
ションポイントを計測したい
 トランザクションファンクションの検出に着手
2007/2/2
ソフトウェアサイエンス研究会
4
プログラムを利用したFP計測方針
 プログラムから計測する際のデータファンクション
(DF), トランザクションファンクション(TF)の仮定
 DF ・・・ 対応するクラスとして実装されている

フィールド値にデータを保持する
 TF ・・・ メソッド呼び出しのまとまりとして実装されている

DFに対して何らかの処理を行うメソッド群を含んでいる

トランザクションファンクションは「アプリケーションに対するデータの出入りを伴う処
理」を指す
 仮定に基づいた計測方針
 DFはユーザがクラス単位で指定

「DFに相当するクラス」を以降DFCとする
 TFは実行履歴上から自動で特定
 DF ・ 特定したTFからFP値計測
2007/2/2
ソフトウェアサイエンス研究会
5
各クラスタで使用しているデータファンクションクラスと
プログラムを実行して履歴を
類似したクラスタがあればまとめる
クラスタの種類を決定する
メソッド呼び出しをクラスタリング
各クラスタからもFPを求める
データファンクションクラスからFPを求める
未調整FPを求める
そのフィールド値の個数を求める
取得する
プログラムからFPを計測する手順
データファンクション
クラス
テストケース
実行履歴
DFC1
DFC1
DFC2
DFC3
DFC4
DFC2 DFC3 DFC4
FP
EQ
プログラム
EO
ユーザ
2007/2/2
ソフトウェアサイエンス研究会
自動化
6
FP値計測までの手順
1.
2.
3.
4.
メソッド呼び出しのクラスタリング
TFの抽出
各クラスタの種類(EI,EO,EQ)の判定
類似したクラスタをまとめる
残ったクラスタをTFと考えてそれぞれFP値を計
測
5. 各DFのFP値を計測
6. 合計して全体のFP値を求める
2007/2/2
ソフトウェアサイエンス研究会
7
メソッド呼び出しのクラスタリング:手順1
 DFCのフィールド値から
のデータ依存関係(デー
タフロー)とフィールド値
へのデータ依存関係を
解析
 実行履歴上でのデータ
フロー範囲を決定
実行履歴
DFC1
DFC2 DFC3 DFC4
データフロー範囲
2007/2/2
ソフトウェアサイエンス研究会
8
メソッド呼び出しのクラスタリング: 手順2

次の条件にあてはまるデータフローを除去

複数のトランザクションに跨っていると考え
られるデータフロー



例. ログイン時に入力した情報を他トランザ
クションで使用
全メソッド呼び出し回数のうち、対象データ
フローが占める割合の閾値を設定
DFCのデータの一時格納処理
メソッド外に出て行かないデータフロー


DFC
データベース - DFC 間のデータフロー


実行履歴
データが他メソッドに遷移しない
DFCの同一インスタンスへの処理を行う、
隣接するデータフローを結合

1つのトランザクションファンクション中の処
理とみなす
隣接データフローの結合
2007/2/2
ソフトウェアサイエンス研究会
9
メソッド呼び出しのクラスタリング:手順3
 範囲が重複するデータフ
ローの範囲を1つにまとめる
実行履歴
DFC1
DFC2 DFC3 DFC4
 1つのトランザクション中で
複数のデータを処理してい
ると考える
 得られたデータフロー範囲
中に含まれるメソッド呼び出
し群を1つのクラスタとする
 1クラスタがトランザクション
1回の実行に対応
データフロー範囲が
重なる部分
2007/2/2
ソフトウェアサイエンス研究会
10
適用実験
 対象プログラム
 ツール貸し出しシステム
 約37000LOC
 38トランザクションファンクション
 データファンクション
 実際のデータファンクションに対応
するクラスを8個指定
 使用する実行履歴
 ユーザが実行できる全ての処理を
実行
 16トランザクションファンクションが
含まれる

2007/2/2
表1. 含まれるトランザクション
ファンクション
利用中物品検索
使用中物品検索(条件付)
物品検索
物品詳細
物品貸出
物品登録未承認案件一覧
物品新規登録(一般向け)
物品登録未承認案件詳細
物品管理品一覧
物品管理品詳細
物品追加登録
備考表示
備考更新
アイテムグループ検索(大分類)
アイテムグループ検索(中分類)
コードテーブル検索
重複を含め、35回のTF実行
ソフトウェアサイエンス研究会
11
評価方法

実行履歴中のメソッド呼び出しには、 TFに対応する
メソッド呼び出しの
呼び出された順に時系列でID番
ID番号範囲
号を付加

TFが実行されている箇所に対応す
るメソッド呼び出し群のID番号の
範囲を、実行履歴やソースコードか
ら判断

提案手法で検出した
データフロー範囲
取得データを
画面出力
提案手法によって検出したデータ
フロー範囲が、TF実行箇所のメ
ソッド呼び出しに付けられたID番
号範囲と対応するかどうかを確認


2007/2/2
1対1で対応するとき、TFが抽出
できたと判定
同一TFが複数回出現する場合は、
全ての出現時においてデータフ
ローと1対1で対応するときのみ正
しくTFが抽出できたと判定
ソフトウェアサイエンス研究会
12
結果
 35回のTF実行に対して、32個のデータフ
ローを検出
 検出した32個のデータフローのうち、28個はトラ
ンザクションファンクションと1対1で対応
 重複して現れるトランザクションファンクションを含
む
 トランザクションファンクションの検出結果
 含まれるトランザクションファンクション16個のうち、
11個を正しく検出
2007/2/2
ソフトウェアサイエンス研究会
13
TF検出結果
 16個中11個を正しく検出
コードグループ検索
 TFを正しく検出できなかっ
選択肢の情報を取得
たケース
 あるTFで生成されたデータ
が、次に実行されるTFでも利
用される (表2.※)
 データの詳細をユーザに与え
るTF
 複数のTFが同時に実行され
る (表2. *)
 画面に表示する選択肢
 画面に表示する選択肢の
のデータ項目を検索・取
データ項目を検索するTF
得するTF
2007/2/2
表2. TF抽出結果
トランザクションファンクション名 判定
利用中物品検索
○
使用中物品検索(条件付)
○
物品検索
○
×
※ 物品詳細
物品貸出
○
物品登録未承認案件一覧
○
物品新規登録(一般向け)
○
物品登録未承認案件詳細
○
物品管理品一覧
○
※ 物品管理品詳細
×
物品追加登録
○
備考表示
○
備考更新
○
* アイテムグループ検索(大分類) ×
×
* アイテムグループ検索(中分類)
アイテムグループ検索
×
* コードテーブル検索
選択肢の情報を取得
ソフトウェアサイエンス研究会
14
考察
 あるTFで生成されたデータが、次に実行されるTFで
も利用される場合に正しく検出できない
 取得した情報をそのまま次のTFで処理
 異なる実行履歴を使用した実験では検出可能
 詳細情報取得のみ実行した際の実行履歴
 16個中13個のTFの検出に成功
 複数のTFが同時に実行される場合に正しく検出でき
ない
 データフローは発生しているが、1つの大きなデータフロー
に含まれる
 現状の提案手法ではデータフローのマージ処理を行うため
検出できない
 対処法検討中
2007/2/2
ソフトウェアサイエンス研究会
15
まとめと今後の課題
 まとめ
 実行履歴を利用してメソッド呼び出し群をクラス
タリングすることによって、トランザクションファン
クションを抽出する手法を提案
 実際のプログラムを対象に適用実験
 今後の課題
 適用実験によって見つかった問題点への対策
 複数のTFが同時に実行される場合の処理
 別の実験対象ソフトウェアを用いて適用実験
2007/2/2
ソフトウェアサイエンス研究会
16