1 / 22

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

オープンソース開発支援のための リビジョン情報と電子メールの検索システム.  大阪大学基礎工学部情報科学科          井上研究室        佐々木 啓. ソースコード管理 リビジョン情報取得. 意思疎通 作業進捗状況. オープンソースソフトウェア開発. プロダクトを公開し並列に作業を行う開発手法 誰でも自由に開発作業に参加することができる 世界中に分散した開発者が並列に開発を行う ( 例 ) FreeBSD, Linux, Apache. 版管理システム CVS. 開発者. 開発者. 電子メール アーカイブ. 既存の開発支援システム.

flo
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  16. 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(); user OpenSSHのパスワードのパケット送信に関するコード 適用実験(2/5) 類似コードの特定と関連情報の検索を行う

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

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

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

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

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

More Related