オープンソース開発支援のための リビジョン情報と電子メールの検索システム

Slides:



Advertisements
Similar presentations
Web 共同編集機能を実装した メール検索システム 井上研究室 Choy Kho Yee 2006年02月27日.
Advertisements

Trac と Eclipse の 便利な機能. プロジェクト管理システム: Trac 0. はじめに バージョン管理システム: Subversion 統合開発環境: Eclipse ・ Wiki による情報 管理 ・進捗状況の管理 ・プログラムの作 成 ・リポジトリに データを集める.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
4.ユーザー登録マニュアル              Version 年6月10日 国立情報学研究所.
コードクローン履歴閲覧環境を用いたクローン評価の試み
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
OpenOffice.org で版管理 西木 毅 第2回関西OpenOffice.org勉強会 大阪電気通信大学
ソフトウェア変更間の関連抽出の ための差分集合構築手法
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
Webサイト運営 09fi118 橋倉伶奈 09fi131 本間昂 09fi137 三上早紀.
共同ローカリゼーション フレームワーク 井上 謙次.
SS2009 形式手法の適用ワーキング グループの報告
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
開発履歴情報に基づいた ダイナミックコミュニティ選定支援手法
分散処理を用いた大規模ソフトウェアに対するコーディングパターン検出ツール
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
プログラム実行履歴を用いたトランザクションファンクション抽出手法
大規模ソースコード集合を対象とした 類似関数集合群の抽出
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
ソードコードの編集に基づいた コードクローンの分類とその分析システム
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
動的依存グラフの3-gramを用いた 実行トレースの比較手法
コード片の生存期間がコードクローンと欠陥修正の有無に与える影響分析
オープンソース開発の履歴情報を用いたコミュニティ検索支援システム
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
既存ソフトウェアの変更履歴を利用したソースコード修正支援手法の提案
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
実行時情報に基づく OSカーネルのコンフィグ最小化
三浦元喜 北陸先端科学技術大学院大学 知識科学研究科 2007/9/7
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
通信機構合わせた最適化をおこなう並列化ンパイラ
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローンに対する一貫性のない変更に起因する欠陥の検出
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
Winter Workshop in Kanazawa -プロセスと方法論-
バイトコードを単位とするJavaスライスシステムの試作
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
既存ソフトウェアの変更履歴を利用したソースコード修正支援システム
項目間の対応関係を用いた XBRL財務報告書自動変換ツールの試作
コーディングパターンの あいまい検索の提案と実装
複数のリポジトリを統合できる バージョン管理システムの提案と試作
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
ソースコードの差分を用いた関数呼び出し パターンの抽出手法の提案と実装
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
開発作業の形式化に基づく プロセス評価 松下誠 大阪大学.
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
回帰テストにおける実行系列の差分の効率的な検出手法
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
Presentation transcript:

オープンソース開発支援のための リビジョン情報と電子メールの検索システム  大阪大学基礎工学部情報科学科          井上研究室        佐々木 啓 2002/2/26

オープンソースソフトウェア開発 プロダクトを公開し並列に作業を行う開発手法 誰でも自由に開発作業に参加することができる 世界中に分散した開発者が並列に開発を行う (例) FreeBSD, Linux, Apache ソースコード管理 リビジョン情報取得 版管理システム     CVS 開発者 意思疎通 作業進捗状況 開発者 電子メール アーカイブ 2002/2/26

既存の開発支援システム システムに蓄積された情報を解析することで開発作業に役立つ情報を提供することができる (例)CVSSearch, GUISearch, CVSWeb システムごとに蓄積している情報の形式が違う システム間の連係が少ないため各システムの情報は孤立している 2002/2/26

開発支援システムの問題点 (例)オープンソース開発工程でバグの処理に対して過去の事例を参照することで修正を行いたい CVSのリビジョン情報の中から該当する情報を取り出す  →膨大なデータ量の中から検索することは困難 CVSの情報に関連する情報を電子メールから検索  →CVS・電子メールが関連性を持たないため,コスト大 膨大な情報の中から利用者が必要な情報を特定することは困難であり,特定のファイルを検索しても,大規模なプロジェクトの全体を把握することは難しい 2002/2/26

これまでの研究成果 CoDS・・・入力ソースコードに類似するコードを検索する SPxR ・・・CVS情報と電子メールの履歴情報を統合し,関連情報を提供する CVSが情報の特定が可能 他のCVS情報との関連情報を入手できない 一つのファイルから関連するCVSや電子メールの情報を用いてプロジェクト全体の把握が可能                       情報を特定する機能がないので情報検索が難しい 2002/2/26

研究の目的 特定のソースコードや開発履歴情報からそれらに関連する開発情報を入手することで開発のコストを軽くしたい CoDS,SPxRの機能を統合することで、必要とする履歴情報とそれに関連する情報を検索する開発支援システムCoxRの試作 2002/2/26

CoxRの機能 CoxR 1.ソースコードによる検索 2.CVS情報による検索 3.電子メール情報による検索 関連する開発履歴情報   関連する開発履歴情報 該当する開発履歴情報 CVS情報 電子メール情報 ファイルパス  リビジョン番号 開発者名    更新日時    キーワード   送信者      コミット日時   ファイルパス   リビジョン番号   キーワード    CVS情報一覧 電子メール情報一覧 ソースコード片   CVS情報   ソースコード ファイルパス  類似度     リビジョン番号 開発者名   更新日時 コミットログ  CoxR 2002/2/26

データベースの構成 類似コード検索データベース 類似コード検索データベース CVS情報データベース 電子メール情報データベース 差分情報 ファイルパス 更新日時 開発者名 ログメッセージ リビジョン番号 類似コード検索データベース CVS情報データベース CVSの開発履歴情報 電子メール情報データベース 統合情報データベース 入力ソースコードと比較を行う差分情報 2002/2/26

データベースの構成 類似コード検索データベース CVS情報データベース 電子メール情報データベース 統合情報データベース 識別番号 ファイルパス リビジョン番号 更新日時 開発者名 キーワード 関連番号 CVS情報データベース 電子メール情報データベース レコード固有の番号 CVSの開発履歴情報 統合情報データベース コミットログ中の頻出頻度の高い単語 同一のキーを持つ識別番号の集合 2002/2/26

データベースの構成 類似コード検索データベース CVS情報データベース 電子メール情報データベース 統合情報データベース レコード固有の番号 同一キーを持つレコードの識別番号の集合 類似コード検索データベース 識別番号 送信者名 送信日時 サブジェクト キーワード 関連番号 開発者名 更新日時 ファイルパス リビジョン番号 電子メール情報データベース CVS情報データベース 電子メール情報 統合情報データベース 本文中の頻出頻度の多い単語 CVSのコミットメール情報 2002/2/26

データベースの構成 類似コード検索データベース CVS情報データベース 電子メール情報データベース 統合情報データベース CVS DB識別番号 電子メールDB 識別番号 CVS情報に関連する 電子メール情報がある場合 電子メール情報データベース 電子メールDB識別番号 CVS DB識別番号 電子メール情報に関連する CVS情報がある場合 識別番号 関連番号 統合情報データベース 2002/2/26

データの流れ データ表示部 ソースコード片 リビジョン番号 識別番号 ファイルパス 更新日時 開発者名 キーワード 関連番号 CVS情報DB 差分情報 ファイルパス 更新日時 開発者名 ログメッセージ リビジョン番号 識別番号 関連番号 統合情報DB 識別番号 リビジョン番号 更新日時 キーワード ファイルパス 開発者名 関連番号 送信者 送信日時 サブジェクト 電子メール情報DB 2002/2/26

CoxRの概要 CoxR(Server) user データベース表示部(CGI main) SPxR部 CoDS部 CVSリポジトリ ソースコード CoxR(Server)  ファイル名 類似リビジョン 開発者名 更新日時 コミットログ ファイル名 キーワード 開発者名 更新日時 関連ファイル情報 user データベース表示部(CGI main) 字句解析ツール トークン比較ツール CVS情報DB 統合情報DB E-mail DB 検索用DB CVS DB 生成部 統合DB生成部 E-mailDB生成部 類似コード検索部 SPxR部 CoDS部 開発履歴データベース管理部 DB生成ツール CVSリポジトリ 電子メールアーカイブ 2002/2/26

CoxRの実装 開発環境 開発言語 Perl,C CPU : Pentium IV 1.5GHz RAM : 512MB(SDRAM) OS : Debian GNU/Linux 開発言語 Perl,C 類似コード検索部(Perl : 900行 C : 1500行) 開発履歴データベース管理部(Perl : 1700行) データ表示部(Perl : 2000行 ) 2002/2/26

適用実験(1/5) FreeBSDの開発から得られたデータを用いる CVS情報 : FreeBSD開発で開発されたソースコード ファイル総数 : 51379 リビジョン総数 : 511054 電子メール : 2001年にやり取りされたコミットメールと返信メール         メール総数 : 49736通 実験の対象としてFreeBSD開発内のOpenSSHのパスワードに対するセキュリティーの修正事例をもとに検証を行う 従来の方法ではパスワードをパケット送信する際に文字列長も含まれてしまう ・・・ パスワード攻撃の対象 パスワード送信の際に長さを隠蔽して送信する処理はないか? 2002/2/26

OpenSSHのパスワードのパケット送信に関するコード 適用実験(2/5) user if (i != 0) error("Permission denied, please try again."); password = read_passphrase(prompt, 0); packet_start(SSH_CMSG_AUTH_PASSWORD); packet_put_string(password, strlen(password));   memset(password, 0, strlen(password));    xfree(password);     packet_send();   packet_write_wait();   OpenSSHのパスワードのパケット送信に関するコード 類似コードの特定と関連情報の検索を行う 2002/2/26

関数packet_put_stringを 関数ssh_put_passwordに変更 適用実験(3/5) 類似コード検索結果 複数のファイルの中からコミットログと    差分を参照する事により該当する          プログラムの差分情報を検索する        関数packet_put_stringを    関数ssh_put_passwordに変更 関数ssh_put_passwordの定義は記載されていない      pad passwords sent to not give hints to the length 2002/2/26

関数ssh_put_passworの定義の記述 適用実験(4/5) 同一時間帯にコミットした    ファイルやメールの情報の表示 キーワード「openssh」による検索 ・・・開発時期や開発者が同一なら   関連している可能性は高いと考  えられる               関数ssh_put_passworの定義の記述 関連情報検索 該当ファイルの変更履歴の表示 関連性を持ったファイルから 明確な修正法を取得できた  2002/2/26

適用実験(5/5) 類似コードの検索・・・修正箇所の明示 関連情報の参照・・・OpenSSHのセキュリティ強化に おける具体的な関数の変更方法             修正事例の理解 与えた入力に対して,類似した部分の履歴を検索することができるため,必要な情報が特定しやすい 他の関連情報を検索することで修正の意図や関連部分のバグ修正が明確になり,プロジェクト全体に関する理解を深めることができる 2002/2/26

まとめと今後の課題 版管理システムのリビジョン情報と電子メールアーカイブの情報を用いて関連する開発情報を検索できるシステムの実装を行った 実際のオープンソース開発でやりとりされたデータを用いて適用実験を行い,複数のシステムが連係した検索が行えることを確認できた より大規模な環境での適用実験 検索手法の改善(複数のキーワードによる検索) 関連する情報に重要度を設定することによって、関連情報の強弱をつける 2002/2/26

2002/2/26

データの作成 CVS E-mail アーカイブ CVS情報に関連する 電子メール情報がある場合 電子メール情報に関連する リビジョン番号 識別番号 ファイルパス 更新日時 開発者名 キーワード 関連番号 CVS情報DB CVS情報に関連する 電子メール情報がある場合 類似コード検索DB 差分情報 ファイルパス 更新日時 開発者名 ログメッセージ リビジョン番号 電子メール情報に関連する CVS情報がある場合 識別番号 関連番号 統合情報DB 識別番号 リビジョン番号 更新日時 キーワード ファイルパス 開発者名 関連番号 送信者 送信日時 サブジェクト 電子メール情報DB E-mail アーカイブ 2002/2/26