オブジェクト指向プログラムの実行履歴上のフェイズに対応する機能の推定手法の提案
Approach of Extrapolating a Future of a Phase from an Execution Trace of an Object Oriented Program

システムの動作理解のために実行履歴解析を行う際の着目する実行イベントの特定コストを軽減するシステムへの要求システムの機能... 実行履歴を取得した際の実行シナリオに関連（システムの利用者の持つ知識に対応）システムのソースコード... 実行シナリオ上の各ステップに関連（システムの開発者の持つ知識に対応）

新規申請を作成する

ユーザー認証

申請内容を変更する

登録済み情報の検索... 実行履歴上のオブジェクトやイベントに対応（メソッド・クラス・モジュールなど）

新規申請の登録受理状態を確認する

申請情報を表示

未処理案件を検索する

申請情報の変更

申請を承認する

①

②

③

④

⑤

ログイン

未受理の申請を検索

申請情報を 1 件表示申請情報を一部変更

ログアウト

実行シナリオ「申請情報の内容を訂正する」

機能などのシステムの上位設計に対応する実行イベントの位置は実行毎に異なるため，開発者が実行履歴全体を手動で探索する必要がある
ステップ④に該当するイベント列はどこにある？

？

？

？

？

？

？

実行履歴全体を読解に耐えうる図で可視化することは困難 × イベント列から機能を推定するにはシステムの実装に関する知識が必要《各フェイズの機能に対応する語群を抽出・提示する手法》(1568) NullChangeSpace( 245) replaceAll①②(1210) replaceAll

ログイン( 207) <init>( 104) getStatus( 75) setStatus( 70) changeSpacetoBR(364) NullChangeSpace

未受理の申請を検索( 87) <init>( 639) NullChangeSpace( 210) changeDateString( 387) <init>( 52) getSectioncode( 270) changeSpacetoBRforXml( 52) getGroupNo( 242) toHTMLString( 26) setAppForm8name( 184) doSelectVillageRecords( 26) getAppForm3name( 180) retrieveByPK( 26) getAppForm7Name(6) ̲jspDestroy(3) <init>(2) ̲jspService(364) NullChangeSpace(36.04) getGroupNo(70) changeSpacetoBR(169.82) replaceAll(270) changeSpacetoBRforXml(838.70) replaceAll(42) haveDataPutout(145.56) changeDateString( 45) getDepartmentNo(434.55) changeSpacetoBRforXml(33) getReturnPlace(112.66) changeSpacetoBR( 45) getUsingNumberInfo(167.74) toHTMLString( 45) getFResource(124.77) retrieveByPK(18.02) setGroupNo( 45) getAvailableItemValue( 93.57) getManageNo(18.02) setAcceptableuserCode( 45) setUsingNumberInfo( 90.11) setStatus(18.02) getAppForm6Name( 45) getAvailableItemValueToday( 74.86) setVersion(18.02) getAppForm1Name( 45) getFResourceNo( 74.86) setInfo(18.02) getAppForm3Name( 72.09) getStatus(28) getUserLocalManager( 67.60) haveDataPutout(28) setUserLocalManager(28) getReturnPubUserName(28) getEntryCode( 53.11) getReturnPlace( 51.99) setStatus：(28) setUserName( 45) changeItemsforVOItems2(28) changeSpacetoBRnotHtml⑤

申請情報を 1 件表示 申請情報を一部変更 ログアウト：：(29) getPlanEndDay④( 26) getAppForm1name：( 62) doSelectVillageRecords

③（※)

：：

(18.02) getAppForm7Name：(6) ̲jspDestroy(161) <init>(1) contextDestroyed(157) getCategory(1) doLogout(1) destroy(1) StringtoArrayList(130) getSubCategory(18.02) getSubCategory(2) getIncludes(130) getSubsubCategory(104) getAppFormManageNo(1.60) contextDestroyed(1.60) destroy(1.60) doLogout(1.60) StringtoArrayList：(18.02) getAppForm10Name(9.66) ̲jspDestroy：(18.02) getAppForm9Name：(28) setApplicationNo：(1) 実行履歴を各機能の実行範囲＝フェイズに分割
過去の研究成果を利用して自動で分割する(2) フェイズ中で実行されたメソッド呼び出しイベントから語群を抽出
メソッド名（上図）／ クラス名 ／ シグネチャに含まれる全単語など，履歴上の情報を使用する(3) フェイズの実行機能を表す語群を選出・提示■ フェイズ内での出現頻度が高いもの○ フェイズ内の主要な処理を表す
× システム全体の特徴やドメインなどを表す語や，(104) getAppFormManageNo(78) save(52) doUpdate(26) getAcceptableuserName(26) getAcceptableuserCode(26) getDatabaseMap(26) changeforItemgroups(26) buildCriteria(1) checkRegistDatas：(167.38) getAppFormManageNo(125.54) save
(108.82) getCategory( 90.11) getSubCategory( 90.11) getSubsubCategory( 83.69) doUpdate：

データの形式などシステムの詳細な設計・実装を表す語が上位に混在する■ 他のフェイズでは出現しないもの○ フェイズ固有の処理を表す／他のフェイズとの比較による選択が容易になる
× 候補となる語が存在しないフェイズが生じる可能性がある（※）■ 出現頻度を重複度で重みづけしたもの■ その他の選定基準△ 十分多くの異なるフェイズを含む実行シナリオが前提

クラスの静的構造やオブジェクトの動的支配関係に基づく重み付け，複数の選定基準の組み合わせなど《課題》
各選定基準を比較する評価実験 ／ 語群の効果的な提示方法（考案・実装）／ 手法自体の評価実験（評価基準・対象システム）

渡邊 結石尾 隆

井上 克郎FeatureWorks◇ 実行情報からの機能抽出
複数の実行履歴に対する機能単位でのフェイズ分類◇機能間の依存関係検出システムの統合・分割・変更時の動的な影響範囲を特定

大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻 井上研究室

sel.ist.osaka-u.ac.jp