Presentation is loading. Please wait.

Presentation is loading. Please wait.

オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法

Similar presentations


Presentation on theme: "オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法"— Presentation transcript:

1 オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
井上研究室 博士前期課程2年 渡邊 結 2008/02/15 平成19年度修士学位論文発表会

2 発表概要 オブジェクト指向プログラムの実行履歴を人間の認識する「機能」に対応するフェイズに分割する手法の提案 背景と目的
提案手法のアルゴリズム 適用実験の結果と考察 博士後期課程の研究計画 平成19年度修士学位論文発表会 2008/02/15

3 背景 オブジェクト指向言語で記述されたシステムの理解 プログラムの実行履歴の可視化が有効 実行履歴は人間が手動で解析するには巨大すぎる
実行時のメソッド呼び出し履歴から簡略化したシーケンス図を生成[1] 実行履歴は人間が手動で解析するには巨大すぎる 1つの実行履歴には,複数の機能の実行が含まれる 特定の機能を実行する時間軸上の区間 = フェイズ [1]谷口考治, 石尾隆, 神谷年洋, 楠本真二, 井上克郎: プログラム実行履歴からの簡潔なシーケンス図の生成手法, コンピュータ ソフトウェア, Vol.24, No.3, pp , 2007. 平成19年度修士学位論文発表会 2008/02/15

4 フェイズと実行履歴 機能フェイズ サブフェイズ (例)実行シナリオ「登録情報の更新」
ソフトウェアに対する要求を実現するFeature(機能)に対応 サブフェイズ あるFeatureについての詳細な実行シナリオ上のステップに対応 (例)実行シナリオ「登録情報の更新」 5つの機能フェイズ 18のサブフェイズ 約32000回のメソッド呼び出しからなる実行履歴 各フェイズは履歴上のどこにある? 機能フェイズ サブフェイズ ①ログイン 1 ログイン画面表示 2 ログイン処理 3 ユーザ情報取得 4 Top画面表示 ②管理ツール  一覧 5 管理情報取得 6 未承認案件一覧取得 7 管理ツール一覧取得 8 管理画面表示 ③ツール情報  表示 9 ツール情報取得 10 詳細情報表示 11 メンテナンス画面表示 ④登録情報更新 12 ツール情報取得 13 ツール情報更新 14 詳細情報表示 15 メンテナンス画面表示 ⑤ログアウト 16 ログアウト処理 17 ログアウト画面表示 18 システム終了 37000loc 平成19年度修士学位論文発表会 2008/02/15

5 目的 実行履歴を複数のフェイズに自動的に分割 実行履歴全体の概要を把握しやすい 開発者は,知りたい機能に対応したフェイズだけを調べればよい
巨大な実行履歴全体を調べる必要が無くなる 履歴やシステムに対する詳細な知識を用いない手法 巨大な実行履歴を処理できる高速な手法 平成19年度修士学位論文発表会 2008/02/15

6 実行履歴分割手法 入力 出力 手順 実行履歴(メソッド呼び出しイベントの系列) 粒度制御パラメータ
フェイズの開始点(実行履歴上のイベント時刻)の系列 手順 協調動作するオブジェクトの集合の変化に着目したフェイズ移行の検知 メソッド呼び出しスタックの深さに着目したフェイズ開始点の決定 平成19年度修士学位論文発表会 2008/02/15

7 アルゴリズムの着眼点 機能が異なるフェイズでは,異なるオブジェクトが動作する 動作するオブジェクト群の変化から,機能の切り替わりを検出
A-1 B-1 C-1 D-1 D-2 X-1 X-2 X-3 Y-1 ゆっくり. 機能の 切り替わり (フェイズ移行) 時間 実行履歴例 平成19年度修士学位論文発表会 2008/02/15

8 1.フェイズ移行の検知 オブジェクト群の変化をLRUキャッシュで観測 各時刻でのキャッシュ更新頻度(※)を計算
各メソッド呼び出しイベントにおける「呼び出し元/呼び出し先オブジェクトID」を時系列に沿って記録 各時刻でのキャッシュ更新頻度(※)を計算 ※ 過去w回のイベントでキャッシュが更新された回数の割合  (W:ウィンドウサイズ) キャッシュが頻繁に更新されたならば,新しいフェイズが開始したとみなす 集中的に新しいオブジェクトが登場する箇所では,キャッシュ更新頻度が上昇する Least Recently Used : キャッシュが全て埋まった状態で新たな要素を追加する時,最後にアクセスされた時刻が一番古い要素を捨てる. 平成19年度修士学位論文発表会 2008/02/15

9 2.フェイズ開始点の決定 キャッシュの頻繁な更新は,フェイズが切り替わった直後に生じる 時間を遡り,実行履歴上のフェイズ開始点を探索する
複数のイベントにまたがって生じる 時間を遡り,実行履歴上のフェイズ開始点を探索する メソッド呼び出しスタックの深さが局所的に最小となる点 更新頻度 フェイズの開始時刻 時刻 閾値 B-1 C-1 D-1 D-2 A-1 X-1 X-2 X-3 Y-1 実行履歴例 平成19年度修士学位論文発表会 2008/02/15

10 適用実験 実験対象:企業で開発された2種類のJavaシステム 実験方法 ツール管理システム:4つの異なるシナリオを実行した履歴
図書管理システム:1つの仕様から作成された5つの異なる実装プログラムそれぞれで共通のシナリオを実行した履歴 実験方法 キャッシュサイズとウィンドウサイズの値を変化させながら本手法を適用 パラメータセット×履歴の組み合わせ約一万通り:5分弱 システムの開発者が識別したフェイズと手法の出力を比較 結果の評価 パラメータの分割結果への影響 出力フェイズの妥当性:開発者が認識したフェイズに対する適合率・再現率 実行シナリオへの依存度:異なるシナリオの実行履歴に対する出力を比較 詳細実装への依存度:異なる実装上での実行履歴に対する出力を比較 平成19年度修士学位論文発表会 2008/02/15

11 パラメータの影響(出力フェイズ数) 与えたパラメータ価と出力フェイズの数 キャッシュサイズ・ウィンドウサイズが小さいほど出力フェイズ数が増加
最大で31フェイズ,最小は1フェイズ(分割ナシ) 平成19年度修士学位論文発表会 2008/02/15

12 適合率と再現率 出力フェイズ数に対する平均適合率と平均再現率 適合率が非常に高い ログアウト処理など,規模の小さいフェイズが検出できない
機能フェイズはサブフェイズより発見されやすい 平成19年度修士学位論文発表会 2008/02/15

13 検出されたフェイズの例 出力されるフェイズは,実行シナリオの違いによる実行履歴上の変化に影響されにくい 2つの異なるシナリオの実行履歴
同一パラメータで手法を適用 シナリオ上で共通するフェイズも,実行履歴上での内容は異なる フェイズごとのイベント数(時刻),動作オブジェクト,メソッドなど シナリオ T-2 シナリオ T-3 開発者の認識した 機能フェイズ 出力 フェイズ ①ログイン ②ツール一覧 ③ツール情報  表示 表示 ④登録情報更新 ④ログアウト 出力フェイズを表す長方形は,履歴上で占めるイベント数(フェイズ区間の長さ)には比例しない ⑤編集取り消し ⑥ログアウト 出力されるフェイズは,実行シナリオの違いによる実行履歴上の変化に影響されにくい 平成19年度修士学位論文発表会 2008/02/15

14 まとめ 動作するオブジェクトをLRUキャッシュで観測し,実行履歴上のフェイズを自動的に検出する手法を提案 今後の課題 十分に高速
開発者の認識するフェイズに近い出力 ログアウト処理など,小さいフェイズは検出できない 実行シナリオや詳細な実装の違いに影響されにくい 今後の課題 求めるフェイズ数や機能粒度に応じたパラメータの値の決定方法 異なるドメインのシステムに対する適用 平成19年度修士学位論文発表会 2008/02/15

15 博士後期課程における研究計画 2008/02/15 平成19年度修士学位論文発表会

16 博士後期課程における研究概要 オブジェクト指向プログラムの実行履歴と設計情報の結びつけ 実行履歴を,設計に登場する機能名の列に変換する
フェイズの検出  分割されたフェイズの特徴抽出 フェイズと機能名との対応付け 機能A 機能B 機能C 機能D 機能E A B C D E 実行履歴 実行シナリオ 平成19年度修士学位論文発表会 2008/02/15

17 背景 テストや保守作業における要求 テスター 保守担当者 テストケースを,実行する機能・要求シナリオによって分類したい
組み合わせテスト時に,関心のある機能が正しく組み合わさっていたかを知りたい 保守担当者 プログラム中から,システムの各機能を実現している箇所を特定したい 障害発生時に,どの機能の実行中だったのかを知りたい 平成19年度修士学位論文発表会 2008/02/15

18 研究計画 分割されたフェイズに対する特徴抽出 フェイズと機能名との対応付け フェイズに特有のメソッドやオブジェクトによる特徴づけ
特徴によるフェイズ間の比較 同じ機能に対応するフェイズを発見 繰り返し実行される機能や,機能の順序関係などを発見 フェイズと機能名との対応付け 個々のフェイズの特徴と,要求仕様(ユースケース図などの動作シナリオ)中の各ステップの名前とを結びつける ソースコード解析や要求仕様の自然言語解析を利用 平成19年度修士学位論文発表会 2008/02/15

19 まとめ 博士前期課程における研究 博士後期課程における研究計画 オブジェクト指向プログラムの実行履歴に対する機能単位での自動分割手法
提案手法と実験結果 博士後期課程における研究計画 オブジェクト指向プログラムの実行履歴と要求機能シナリオの結びつけ 分割されたフェイズに対する特徴抽出 フェイズと機能名との対応付け 平成19年度修士学位論文発表会 2008/02/15


Download ppt "オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法"

Similar presentations


Ads by Google