関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現

Slides:



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

コンピュータ演習 Excel 入門 岡田孝・山下雅啓 Excel の機能は膨大 その中のごく一部を紹介 表計算機能 – データの入力、表の作成、計算など グラフ機能 – 棒グラフ、円グラフなどグラフ作成 データベース機能 – 並べ替え(ソート)、検索、抽出など マクロ機能 – VBA で自動化したマクロを作成可能.
シーケンス図の生成のための実行履歴圧縮手法
ファイルキャッシュを考慮したディスク監視のオフロード
OpenOffice.org で版管理 西木 毅 第2回関西OpenOffice.org勉強会 大阪電気通信大学
ソフトウェア変更間の関連抽出の ための差分集合構築手法
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
Webサイト運営 09fi118 橋倉伶奈 09fi131 本間昂 09fi137 三上早紀.
卒業論文 最終発表 WWW情報検索 ナビゲーションシステムの設計と実装
情報システム構築 -グループ分けとCVSの初期設定-
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
SS2009 形式手法の適用ワーキング グループの報告
EBSCOhost 詳細検索 チュートリアル support.ebsco.com.
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
開発履歴情報に基づいた ダイナミックコミュニティ選定支援手法
管理画面操作マニュアル <ユーティリティ> 第8版 改訂 株式会社アクア 1.
アスペクト指向プログラミングを用いたIDSオフロード
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
複数のリポジトリを共有できる 仮想的なバージョン管理システムの提案
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
ソードコードの編集に基づいた コードクローンの分類とその分析システム
オープンソース開発の履歴情報を用いたコミュニティ検索支援システム
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
既存ソフトウェアの変更履歴を利用したソースコード修正支援手法の提案
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
中国の日系企業に最適のシステム 御社の業務に最適な3つの理由 初期投資なしで すぐに始められる ITに詳しい 担当者不要 何度でも 変更可能.
バイトコードを単位とするJavaスライスシステムの試作
Firebaseを用いた 位置情報共有システム
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
既存ソフトウェアの変更履歴を利用したソースコード修正支援システム
項目間の対応関係を用いた XBRL財務報告書自動変換ツールの試作
JAVAバイトコードにおける データ依存解析手法の提案と実装
複数のリポジトリを統合できる バージョン管理システムの提案と試作
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
アスペクト指向言語のための視点に応じた編集を可能にするツール
ソースコードの差分を用いた関数呼び出し パターンの抽出手法の提案と実装
ソースコードの差分を用いた関数呼び出し パターンの抽出手法の提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
CO-Client Opeartion 1.1 利用履歴データベースの設計 (スキーマ バージョン 対応)
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
Webページタイプによるクラスタ リングを用いた検索支援システム
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
地理情報コンテンツ・データベースコンテンツ新規作成
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
Presentation transcript:

関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現 大阪大学基礎工学部情報科学科 井上研究室 中山崇

開発履歴閲覧システム CVSなどの版管理システムに蓄積された開発履歴を視覚的に閲覧することが出来るシステム 版管理システム:プロジェクトの開発履歴を蓄積、管理するシステム データの表示にWebブラウザを用いることで、GUIの為の新たなシステムの導入が不必要なものもある   (例)CVSWeb, ViewCVS, Bonsai 開発履歴情報 Web ブラウザ 開発者 版管理システム CVS 開発履歴 閲覧システム 開発履歴情報の要求 Web ブラウザ 開発者 開発履歴情報の   取得・解析 2004/2/26 特別研究報告

開発履歴閲覧システムの機能 ディレクトリ構造の表示 各ファイルの更新履歴の閲覧 任意のリビジョン間の差分の表示 ディレクトリ内に含まれるファイル・サブディレクトリの表示 各ファイルの更新履歴の閲覧 更新日時、更新作業者、ログメッセージなどの関連情報と共に表示 任意のリビジョン間の差分の表示 追加・削除・変更された行がわかりやすいように色別にして表示 各リビジョンにおけるファイルの内容の表示 2004/2/26 特別研究報告

既存の履歴閲覧システムの問題点 リビジョン検索機能を持たないものがある プロジェクトに精通していないユーザは、知りたい修正箇所を特定するのは困難 あるリビジョンから時間的に対応する他のファイルのリビジョンの取得が困難 あるリビジョンが参照している関数がその時点でどのような実装になっているかの確認が困難 開発履歴の追跡をファイル単位でしか行えない 複数のファイルのリビジョンヒストリをまとめて追跡したい 2004/2/26 特別研究報告

研究の目的 修正箇所の特定とその周辺の実装の、その時点での詳細な情報を確認したい 開発履歴の追跡をファイル単位だけではなく、ディレクトリ単位にまで範囲を広げて行いたい これらの情報をわかりやすく提供する開発履歴 理解支援システムCREBASS (Cvs REpository Browse And Search System)を試作 2004/2/26 特別研究報告

CREBASSの機能 CVSWebのような、CVSリポジトリ内の開発履歴を表示する機能を持つ 以下のような独自な機能を持つ リビジョン関係を考慮した関数クロスリファレンス機能 更新日時、更新者、キーワードによるリビジョン検索 リポジトリに起こったイベントを検索、表示する機能 ファイル、およびディレクトリ単位での、行数・編集量・累計commiter数をグラフで表示する機能 修正箇所の確認とその周辺の実装の詳細の確認 ディレクトリ単位まで範囲を広げたリビジョンヒストリの追跡 2004/2/26 特別研究報告

リビジョン関係を考慮した関数クロスリファレンス機能 関数の参照箇所から、そのリビジョンへと更新された時点における定義場所へ移動する機能 対応言語はC言語のみ 参照先のリビジョンを探す際には以下の点を考慮する 参照元のリビジョンの更新時刻を基準として参照先のリビジョンを決定する 出来る限り参照元と同じブランチ上で定義元を探す 2004/2/26 特別研究報告

リビジョン関係を考慮した関数クロスリファレンス機能 定義ファイル名の問い合わせ DH_free (cert->dh_tmp); s3_lib.c 1.57.2.8 OpenSSL_0_9_7-stable 2002/10/15 20:29:28 void DH_free (DH *r){ int i; if (r==NULL) return; dh_lib.c 1.28.2.2 OpenSSL_0_9_7-stable 2002/03/16 23:19:23 関数定義・ 参照情報DB リビジョンヒストリの問い合わせ 2002/10/15 定義元ファイルは crypto/dh/dh_lib.c 同じブランチ上の リビジョンから探す 日時を見て該当する リビジョンを探す crypto/dh/dh_lib.c この関数のこの時点 での定義が見たい dh_lib.cにおいて対応 するリビジョンはどれ? MAIN 2001/9/25 2002/3/9 2002/3/16 2003/1/30 1.29 1.30 1.31 OpenSSL_0_9_7-stable 1.28 1.28.2.1 1.28.2.2 1.28.2.3 2004/2/26 特別研究報告

リビジョン検索機能 更新作業者 更新日時 キーワード 対象ディレクトリ 対象ブランチ 検索結果の ソートの仕方 ファイルパス 所属ブランチ名 リビジョン番号 更新日時 所属ブランチ名 ログメッセージ キーワード 更新作業者 2004/2/26 特別研究報告

ヒストリイベントの検索・表示機能 検索するイベントの指定 イベントを起こしたユーザの指定 検索する期間の指定 検索するディレクトリの指定 検索結果は時系列 で表示される 同時に起こったと 考えられるイベント はまとめて表示する 2004/2/26 特別研究報告

プロジェクトの変遷のグラフ化機能 あるファイル、もしくはディレクトリ下の全てのファイルについて以下の項目の変遷を表したグラフを作成する 総行数 編集量 累計commiter数 複数の対象を1つのグラフに表示することで、互いに比較を行うことが出来る 2004/2/26 特別研究報告

CREBASSの概要 ユーザインター フェース部 DB 作成部 開発者 CVS リポジトリ チェックアウト・コミット 開発履歴情報の要求 の取得・解析 ユーザインター フェース部 CVS リポジトリ Web ブラウザ 開発履歴情報 関数定義 情報の検索 リビジョン 情報の検索 ヒストリ情報 の検索 プロジェクト データの折れ線 グラフの生成 開発履歴情報の解析 関数定義・ 参照情報DB リビジョン 情報DB DB 作成部 ヒストリ 情報DB プロジェクト 情報DB 2004/2/26 特別研究報告

適用実験 OpenSSLの開発から得られたデータを用いる CVSリポジトリ:OpenSSL開発で蓄積された開発履歴 ファイル総数:3556 リビジョン総数:43684 実験の対象としてOpenSSLの開発における、2003年3月17日にリリースされた、セキュリティの修正事例をもとに検証を行う RSA blindingがオンになっていないとき、RSAキーに対してタイミング攻撃を受けやすい この脆弱性をどのようにして修正したかを知りたい 2004/2/26 特別研究報告

RSA blindingをデフォルトでオンにした 適用実験 RSA blindingをデフォルトでオンにした 2003年3月15日から同20日までにコミットされ、 かつキーワードRSAを持つリビジョンを検索する 2004/2/26 特別研究報告

適用実験 しかしこれらの関数の情報 についてはわからなかった 関数クロスリファレンサを 用いて定義を調べる 新たに定義された関数とマクロを用いてRSA blinding のデフォルトでの機能使用を可能にしている 2004/2/26 特別研究報告

適用実験 クリックしてリンク先を表示 CRYPTO_w_lockはCRYPTO_lockの マクロであることがわかった 2004/2/26 特別研究報告

考察 リビジョン検索を用いて目的の修正箇所を特定することが出来た 修正箇所の直前のリビジョンからの差分を表示することで修正内容の確認を行うことが出来た しかし修正箇所で用いられている関数の詳細を直接得ることは出来なかった そこでリビジョン関係を考慮した関数クロスリファレンサを用いることで、修正箇所周辺の実装の詳細を理解することが出来た 2004/2/26 特別研究報告

まとめと今後の課題 版管理システムのリビジョン情報を解析して、開発履歴情報の閲覧・検索を行い、ユーザの開発履歴理解を支援するシステムCREBASSを作成した 実際のソフトウェア開発で蓄積された履歴情報を用いて適用実験を行い、目的の開発履歴情報の閲覧・検索が行えることを確認した リビジョン検索の際に用いるキーワードの抽出の精度向上 関数の参照先を特定する精度の向上 より大規模なリポジトリでの適用実験 2004/2/26 特別研究報告

2004/2/26 特別研究報告

補足:版管理システムの用語について 開発者 リポジトリ:プロダクトの 開発履歴を格納するDB リビジョン:プロダクトの ある時点における状態 1.1 1.2 1.3 リビジョン番号:各リビジョン を識別するための数え上げ 可能な識別子 コミット:データを リポジトリに格納し 新たなリビジョンを 作成すること チェックアウト: リポジトリから 特定のリビジョ ンのコンポーネ ントを取得する こと ブランチ:バグ 修正などのため に、元のリビジョ ン列から分岐した リビジョン列 1.2.2.1 1.2.2.2 ログメッセージ: リビジョンをコミット する際に添える コメント 1.4 ファイル リビジョンツリー:リビジョン列 が木構造を成すことから 開発者 2004/2/26 特別研究報告