Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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

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

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

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

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

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

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

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

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

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

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

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

14 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

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

16 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

17 関数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

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

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

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

21 2002/2/26

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


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

Similar presentations


Ads by Google