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