オープンソース開発支援のための...
description
Transcript of オープンソース開発支援のための...
2002/2/26
1Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
オープンソース開発支援のためのリビジョン情報と電子メールの検索
システム
大阪大学基礎工学部情報科学科
井上研究室 佐々木 啓
2002/2/26
2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
オープンソースソフトウェア開発
プロダクトを公開し並列に作業を行う開発手法
誰でも自由に開発作業に参加することができる世界中に分散した開発者が並列に開発を行う
( 例 ) FreeBSD, Linux, Apache
版管理システム CVS
電子メールアーカイブ
開発者
開発者
ソースコード管理リビジョン情報取得
意思疎通作業進捗状況
2002/2/26
3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
既存の開発支援システムシステムに蓄積された情報を解析することで開発作業に役立つ情報を提供することができる(例) CVSSearch, GUISearch, CVSWeb
システムごとに蓄積している情報の形式が違うシステム間の連係が少ないため各システムの情報は孤立している
2002/2/26
4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
開発支援システムの問題点
(例)オープンソース開発工程でバグの処理に対して過去の事例を参照することで修正を行いたいCVS のリビジョン情報の中から該当する情報を取り出す
→膨大なデータ量の中から検索することは困難CVS の情報に関連する情報を電子メールから検索
→ CVS ・電子メールが関連性を持たないため,コスト大
膨大な情報の中から利用者が必要な情報を特定することは困難であり,特定のファイルを検索しても,大規模なプロジェクトの全体を把握することは難しい
2002/2/26
5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
これまでの研究成果
CVS が情報の特定が可能
他の CVS 情報との関連情報を入手できない
一つのファイルから関連する CVS や電子メールの情報を用いてプロジェクト全体の把握が可能
情報を特定する機能がないので情報検索が難しい
2002/2/26
6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
研究の目的特定のソースコードや開発履歴情報からそれらに関連する開発情報を入手することで開発のコストを軽くしたい
CoDS,SPxR の機能を統合することで、必要とする履歴情報とそれに関連する情報を検索する開発支援システム CoxR の試作
2002/2/26
7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Co x R の機能1.ソースコードによる検索2. CVS 情報による検索3.電子メール情報による検索
ソースコード片
CVS 情報
ソースコード
ファイルパス 類似度
リビジョン番号開発者名
更新日時 コミットログ
関連する開発履歴情報該当する開発履歴情報
CVS 情報 電子メール情報ファイルパス リビジョン番号開発者名 更新日時 キーワード
送信者 コミット日時
ファイルパス リビジョン番号 キーワード
CVS 情報一覧
電子メール情報一覧CoxR
2002/2/26
8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
類似コード検索データベース
データベースの構成
差分情報
ファイルパス
更新日時開発者名
ログメッセージ
リビジョン番号
類似コード検索データベースCVS 情報データベース電子メール情報データベース統合情報データベース
入力ソースコードと比較を行う差分情報
CVS の開発履歴情報
2002/2/26
9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
データベースの構成
識別番号ファイルパスリビジョン番号
更新日時開発者名キーワード関連番号
CVS 情報データベース類似コード検索データベース
電子メール情報データベース統合情報データベース
CVS の開発履歴情報
コミットログ中の頻出頻度の高い単語
同一のキーを持つ識別番号の集合
レコード固有の番号
2002/2/26
10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
データベースの構成
類似コード検索データベースCVS 情報データベース
統合情報データベース
識別番号送信者名送信日時
サブジェクトキーワード関連番号開発者名更新日時
ファイルパスリビジョン番号
電子メール情報データベース
電子メール情報
レコード固有の番号
同一キーを持つレコードの識別番号の集合本文中の頻出頻度の多い単語
CVS のコミットメール情報
2002/2/26
11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
データベースの構成
類似コード検索データベースCVS 情報データベース電子メール情報データベース
識別番号関連番号
統合情報データベース電子メール DB 識別番号
CVS DB 識別番号
電子メール情報に関連する
CVS 情報がある場合
CVS DB 識別番号
電子メール DB 識別番号
CVS 情報に関連する
電子メール情報がある場合
2002/2/26
12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
データの流れ
類似コード検索 DB
差分情報
ファイルパス
更新日時
開発者名
ログメッセージ
リビジョン番号
データ表示部
識別番号
リビジョン番号
更新日時
キー
ワー
ド
ファイル
パス 開発者名 関連番号 送信者送信日時
サブジェ
ク
ト
電子メール情報 DB
ソースコード片開発者名
識別番号
関連番号
統合情報 DB
リビジョン番号
識別番号
ファイル
パス更新日時開発者名
キー
ワー
ド関連番号
CVS 情報 DB
2002/2/26
13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ファイル名類似リビジョン
開発者名更新日時
コミットログ
ソースコード
CoxR の概要
字句解析ツール トークン比較ツール
Cox R( Server)
CVS 情報 DB
CVS DB 生成部
統合情報 DB
統合 DB 生成部
E-mail DB
E-mailDB 生成部検索用 DB
DB 生成ツール
CVS リポジトリ 電子メールアーカイブ
データベース表示部 (CGI main)
user 関連ファイル情報ファイル名キーワード開発者名更新日時
CoDS部
SPxR 部類似コード検索部
開発履歴データベース管理部
2002/2/26
14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
CoxR の実装開発環境
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
15Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
適用実験(1 / 5)FreeBSD の開発から得られたデータを用いる
CVS 情報 : FreeBSD 開発で開発されたソースコード ファイル総数 : 51379 リビジョン総数 : 511054
電子メール : 2001 年にやり取りされたコミットメールと返信メール メール総数 : 49736通
実験の対象として FreeBSD 開発内の OpenSSH のパスワードに対するセキ ュリティーの修正事例をもとに検証を行う従来の方法ではパスワードをパ ケット送信する 際に文字列長も含まれてしまう ・・・ パスワード 攻撃の対象パスワード送信の 際に長さを隠蔽して送信する処理はないか?
2002/2/26
16Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
適用実験(2 / 5)
類似コードの特定と関連情報の検索を行う
userif (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
17Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
適用実験(3 / 5)類似コード検索結果
複数のファイルの中からコミットログと 差分を参照する事により該当する
プログラムの差分情報を検索する
pad passwords sent tonot give hints to the length
関数 packet_put_string を 関数 ssh_put_password に変更
関数 ssh_put_password の定義は記載されていない
2002/2/26
18Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
適用実験(4 / 5)関連情報検索
該当ファイルの変更履歴の表示 同一時間帯にコミットした
ファイルやメールの情報の表
示キーワード 「 openssh」による検索 ・・・開発時期や開発者が同一なら 関連している可能性は高いと考
えられる 関数 ssh_put_passworの定義の記述
関連性を持ったファイルから明確な修正法を取得できた
2002/2/26
19Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
適用実験(5 / 5)
類似コードの検索・・・修正箇所の明示関連情報の参照・・・ OpenSSH のセキュリティ強化に おける具体的な関数の変更方法
修正事例の理解
与えた入力に対して,類似した部分の履歴を検索することができるため,必要な情報が特定しやすい他の関連情報を検索することで修正の意図や関連部分のバグ修正が明確になり,プロジェクト全体に関する理解を深めることができる
2002/2/26
20Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめと今後の課題版管理システムのリビジョン情報と電子メールアーカイブの情報を用いて関連する開発情報を検索できるシステムの実装を行った実際のオープンソース開発でやりとりされたデータを用いて適用実験を行い,複数のシステムが連係した検索が行えることを確認できた
より大規模な環境での適用実験検索手法の改善(複数のキーワードによる検索)関連する情報に重要度を設定することによって、関連情報の強弱をつける
2002/2/26
21Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2002/2/26
22Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
データの作成
類似コード検索 DB
差分情報
ファイルパス
更新日時
開発者名
ログメッセージ
リビジョン番号
識別番号
リビジョン番号
更新日時
キー
ワー
ド
ファイル
パス 開発者名 関連番号 送信者送信日時
サブジェ
ク
ト
電子メール情報 DB
識別番号
関連番号
統合情報 DB
CVS
E-mailアーカイ
ブ
リビジョン番号
識別番号
ファイル
パス更新日時開発者名
キー
ワー
ド関連番号
CVS 情報 DB
CVS 情報に関連する電子メール情報がある場合電子メール情報に関連する
CVS 情報がある場合