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

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

メタモデル記述を用いた成果物間の依存関係追跡手法
システム開発におけるユーザ要求の 明示的表現に関する一検討
シーケンス図の生成のための実行履歴圧縮手法
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
点対応の外れ値除去の最適化によるカメラの動的校正手法の精度向上
プログラムの変更前後での 実行履歴の差分検出手法
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
プログラムの動作を理解するための技術として
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
識別子の共起関係に基づく類似コード検索法の提案と 欠陥検出への適用
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
限られた保存領域を使用する Javaプログラムの実行トレース記録手法の 提案と評価
Javaプログラムの変更を支援する 影響波及解析システム
社会シミュレーションのための モデル作成環境
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
コンポーネントランク法を用いたJavaクラス分類手法の提案
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
ソフトウェア保守のための コードクローン情報検索ツール
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
UMLの概要とオブジェクト指向の基本概念
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
インスタンスの型を考慮したJavaプログラムの実行経路の列挙手法の提案
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
類似した振舞いのオブジェクトの グループ化による クラス動作シナリオの可視化
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
オブジェクトの動的支配関係解析を 用いたシーケンス図の縮約
オブジェクトの動的支配関係解析を用いた シーケンス図の縮約手法の提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
クラスタリングを用いた ベイズ学習モデルを動的に更新する ソフトウェア障害検知手法
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
コードクローン解析に基づく デザインパターン適用候補の検出手法
回帰テストにおける実行系列の差分の効率的な検出手法
木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
プログラム理解のための 付加注釈 DocumentTag の提案
オブジェクト生成の観測に基づく プログラム実行の要約の抽出
Presentation transcript:

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

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

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

フェイズと実行履歴 機能フェイズ サブフェイズ (例)実行シナリオ「登録情報の更新」 ソフトウェアに対する要求を実現する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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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