オープンソース開発の履歴情報を用いたコミュニティ検索支援システム

Slides:



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

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
1 EASE プロジェクトにおける EPM ( Empirical Project Monitor) を用いたプロジェクト管理デモ 奈良先端科学技術大学院大学 産学官連携研究員 松村 知子 2005 年 9 月 30 日 JISA 経営者セミナー.
メタモデル記述を用いた成果物間の依存関係追跡手法
4.ユーザー登録マニュアル              Version 年6月10日 国立情報学研究所.
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
WEBから確認できる 駐車場管理システムについて
知識情報演習Ⅲ(後半第1回) 辻 慶太(水)
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
プログラムの動作を理解するための技術として
卒業論文 最終発表 WWW情報検索 ナビゲーションシステムの設計と実装
変数のスコープの設計判断能力 を育成するプログラミング教育
開発履歴情報に基づいた ダイナミックコミュニティ選定支援手法
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
ソードコードの編集に基づいた コードクローンの分類とその分析システム
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
既存ソフトウェアの変更履歴を利用したソースコード修正支援手法の提案
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
実行時情報に基づく OSカーネルのコンフィグ最小化
環境リスクマネジメントに関する 検索システム
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
ミドルウェア”TSUNAGI”を 用いたWEBアプリケーションの構築
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンに対する一貫性のない変更に起因する欠陥の検出
言語XBRLで記述された 財務諸表の分析支援ツールの試作
Winter Workshop in Kanazawa -プロセスと方法論-
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
中国の日系企業に最適のシステム 御社の業務に最適な3つの理由 初期投資なしで すぐに始められる ITに詳しい 担当者不要 何度でも 変更可能.
不確実データベースからの 負の相関ルールの抽出
バイトコードを単位とするJavaスライスシステムの試作
片方向通信路を含む ネットワークアーキテクチャに於ける 動的な仮想リンク制御機構の設計と実装
多層的な知人関係に基づく 自己情報コントロールの実現
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
ソフトウェア保守のための コードクローン情報検索ツール
パターンマイニング技術を 用いた実時間プログラムの コーディングパターン検出
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
既存ソフトウェアの変更履歴を利用したソースコード修正支援システム
コーディングパターンの あいまい検索の提案と実装
複数のリポジトリを統合できる バージョン管理システムの提案と試作
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
ソースコードの差分を用いた関数呼び出し パターンの抽出手法の提案と実装
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
メソッドの同時更新履歴を用いたクラスの機能別分類法
クラスタリングを用いた ベイズ学習モデルを動的に更新する ソフトウェア障害検知手法
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
P2Pによる協調学習システム 唐澤 信介   北海道工業大学 電気工学専攻.
Presentation transcript:

オープンソース開発の履歴情報を用いたコミュニティ検索支援システム 井上研究室 博士前期課程2年 佐々木 啓 2019/1/14 修士論文発表会

オープンソースソフトウェア開発 プロダクトを公開し並列に作業を行う開発手法 世界中に分散した開発者が互いに開発情報をやりとりする事で並列に開発作業を行う (例) FreeBSD, Linux, Apache ソース コード ソース コード ソース コード ソース コード ソースコード マニュアル 版管理システム     CVS 開発者 電子メール 要求 要求 ↓ 修正・拡張 電子メール アーカイブ 開発者 バグ修正要求 機能拡張要求 障害管理システム GNATS 2019/1/14 修士論文発表会

システムに蓄積された情報の再利用 システムにはプロダクトの履歴情報や開発者情報が蓄積されている プロダクトの作業内容 設計方針に関する知識 必要な作業や知識を,今後の開発に役立てることで,開発のコストを軽くすることが出来る 抱えているバグに対する対処方法の活用 新規にプロジェクトに参加する開発者のプロジェクト理解 プロダクトの機能の再利用 2019/1/14 修士論文発表会

使っているbktrデバイスドライバのエラーを修正したい 問題点1:システム間の関連の欠如 どこに必要な情報があるのか分からない 使っているbktrデバイスドライバのエラーを修正したい ユーザ 関連して修正すべきファイル デバイスドライバのエラーに関する議論 バグについての 対処方法 ソースコードの修正内容 もっとかく 版管理システム     CVS 電子メール アーカイブ 障害管理システム GNATS 2019/1/14 修士論文発表会

問題点2:解決方法の相違 問題点が同じであっても,万人にとって同じ解決方法が有効であるとは限らない 求める人によって必要とする作業内容や知識は異なる その時々に応じて興味や関心は変わる 似たような修正事例を調べて直したい 使っているbktrドライバにエラーがある ドライバの処理に詳しい人を探したい 最新のドライバを手に入れたい 2019/1/14 修士論文発表会

研究の目的 既存のシステムに蓄積された過去の作業内容や知識を効率よく検出することで,開発者の開発コストを軽くしたい システムの持つ情報を開発コミュニティとしてモデル化 CVS,E-mail,GNATSを対象とする 開発コミュニティから情報の選定を行う手法の提案 手法に基づいたシステムの構築 ここ 2019/1/14 修士論文発表会

研究の手順 ステップ1 情報のモデル化 ステップ2 情報の選定手法の提案 ステップ3 システムの実装 2019/1/14 修士論文発表会

モデルの要素 人 = CVS,E-mailアーカイブ,GNATSに登録した開発者 Knowledge = CVS情報,E-mail,GNATS情報 モデル化 ネットワークをつくるはなし 版管理システム     CVS 電子メール アーカイブ 障害管理システム GNATS 2019/1/14 修士論文発表会

人,Knowledgeの抽出 Knowledge 人 開発者 協力者 ソースコード 開発のコメント CVS タイトル 本文 送信者 受信者 ファイルパス リビジョン番号 タグ・開発日時 開発者 協力者 ソースコード 開発のコメント CVS タイトル 本文 送信者 受信者 E-mail メッセージID 送信日時 基本情報 修正情報 次にKnowledgeの分類について説明します この図ではそれぞれの開発情報にどの様なものが含まれているかをあらわしています. CVS,電子メール,BTSとそれぞれに含まれる情報はこのようになっていますが ここでIntentionというのは開発の意図を表すものですのでログや またTaskは開発の成果ですのでソースコードやバグの修正履歴の情報などがこれに含まれます 次に、それぞれファイルパスやバグの管理番号などIntentionやTaskの情報を特定する情報をEntityと定義します 起草者 管理人 修正担当者 ファイル名 バグ管理番号 入力日時 最終更新時間 カテゴリー バグの種類 概要  対処方法 更新履歴 状態 GNATS 2019/1/14 修士論文発表会

モデル上のネットワーク 開発コミュニティ 人とKnowledge間には3つの関連が存在する 人とKnowledge 人と人 2019/1/14 修士論文発表会

関連の抽出(1/2) 人とKnowledgeの関連 人と人の関連 同じCVS情報,E-mail,GNATS情報に含まれる人とKnowledge 人と人の関連 同じCVS情報,E-mail,GNATS情報に関わった人 同じメーリングリストに属している人 同じディレクトリで開発を行った人 2019/1/14 修士論文発表会

関連の抽出(2/2) KnowledgeとKnowledgeの関連 直接関連のあるKnowledge 内容が類似するKnowledge 同じCVSの履歴情報 同一ディレクトリのファイル 同じ時刻に変更された やり取りされた電子メール 識別情報 内容が類似するKnowledge ソースコード キーワード GNATSの基本情報,修正情報 2019/1/14 修士論文発表会

研究の手順 構築した開発コミュニティから入力に応じて 該当する人とKnowledgeの集合を見つける ステップ1 情報のモデル化 ステップ1 情報のモデル化 ステップ2 情報の選定手法の提案 ステップ3 システムの実装 構築した開発コミュニティから入力に応じて 該当する人とKnowledgeの集合を見つける 2019/1/14 修士論文発表会

トピックコミュニティ トピック = 再利用や理解に用いたい作業や知識 トピックに関連する人とKnowledgeの集合は,開発コミュニティの部分集合として定めることができる トピックが同じでも求める人に応じて動的に変化する 開発コミュニティ 担当部分の エキスパート 修正内容 これをさがす ここでいっかいおわり トピックコミュニティ 2019/1/14 修士論文発表会

トピックコミュニティの選定手法 最初に着目すべきKnowledgeを選定する キーワード”bktr” ユーザはトピックを入力として与える bktrドライバを用いてFreeBSDでTVを動作時にレジスタエラーが発生したためエラーを修正したい 変更したいソースコード ディレクトリ名,ファイル名 メーリングリスト名 バグの種類,情報 キーワード(必要な語句) 開発時刻 CVS:bktr_core.c 1.20 コメント:レジスタエラーを修正 キーワード”bktr” E-mail:タイトル bktr module unloding(2002年) 問題設定 ユーザ GNATS:概要(2000年) bktr option errorの修正 検索結果 2019/1/14 修士論文発表会

bktr module unloding(2002年) トピックコミュニティの選定手法 最初に着目すべきKnowledgeを選定する ユーザはトピックを入力として与える 開発コミュニティは該当するKnowledgeをユーザに表示する ユーザがその中から基点となるKnowledgeを選定する bktr_card.cの1.20について調べたい CVS:bktr_core.c 1.20 コメント:レジスタエラーを修正 E-mail:タイトル bktr module unloding(2002年) ユーザ bktr_card.cの選定 GNATS:概要(2000年) bktr option errorの修正 2019/1/14 修士論文発表会

bktr_core.cを開発した開発者について調べたい トピックコミュニティの選定手法 4.  コミュニティは関連をユーザに表示する ユーザは関連を選定する コミュニティはKnowledgeや人をユーザに表示する ユーザは結果に対して必要なKnowledgeや人を選定する bktr_core.cを開発した開発者について調べたい 開発者fjoe bktr_core.c 協力者phk 検索結果 ユーザ 人とKnowledgeの関連を選定 協力者roger 2019/1/14 修士論文発表会

実際に開発した開発者fjoeをもとに調べたい トピックコミュニティの選定手法 4.  コミュニティは関連をユーザに表示する ユーザは関連を選定する コミュニティはKnowledgeや人をユーザに表示する ユーザは結果に対して必要なKnowledgeや人を選定する 開発者fjoe 実際に開発した開発者fjoeをもとに調べたい bktr_core.c 協力者phk 開発者fjoeを選定 ユーザ 協力者roger 2019/1/14 修士論文発表会

トピックコミュニティの選定手法 これを繰り返すことでトピックコミュニティを選定する ユーザ 関数yuv422_proの変数を修正 同時に更新されたCVS情報bktr_card.c 開発者fjoeがbktr_coreと同時に行った関連情報がみたい 開発者fjoe bktr_core.c 検索結果 ユーザ 人とKnowledgeの関連を選定 2019/1/14 修士論文発表会

トピックコミュニティの選定手法 これを繰り返すことでトピックコミュニティを選定する トピックコミュニティ ユーザ 関数yuv422_proの変数を修正 bktr_card.cと関連付けられているGnatsの識別情報を辿る 同時に更新されたCVS情報bktr_card.c 修正されたGNATS情報 PR:41437 概要:bktr_cardの関数yuv422_proの不具合 開発者fjoe bktr_core.c 修正に関する電子メール PR41437のせいでレジスタエラーが引き起こされている なかみ 検索結果 トピックコミュニティ ユーザ 実際に行われたbktr_card.cを入手することにより レジスタエラーの修正を行った KnowledgeとKnowledgeの関連 2019/1/14 修士論文発表会

研究の手順 FreeBSD開発のデータを対象にシステムを実装 ステップ1 情報のモデル化 ステップ2 情報の選定手法の提案 ステップ1 情報のモデル化 ステップ2 情報の選定手法の提案 ステップ3 システムの実装 FreeBSD開発のデータを対象にシステムを実装 2019/1/14 修士論文発表会

システムの実装 対象データ:1994年-2004年の開発情報 開発環境 開発言語 Perl,C 情報抽出部・関連抽出部 約5500行 CPU : Pentium4  1.5GHz RAM : 512MB(SDRAM) OS : Debian GNU/Linux 開発言語 Perl,C 情報抽出部・関連抽出部 約5500行 データ表示部 約4500行 CVS情報: FreeBSD開発のソースコードの履歴情報 ファイル数 57822, リビジョン数 618186 E-mail情報: ソースツリーへ加えられた変更に関するメール 213723通( cvs-* に含まれるメールのみ) BTS情報: GNATSに報告されたバグ情報 82350件 2019/1/14 修士論文発表会

システムの概要 Web Server System Control CoxR-C 履歴情報DB 関連DB 関連抽出部 Query Word キーワード, 開発者名,開発日時   CVS情報,GNATS情報 メーリングリスト名 Web Server 検索結果 ユーザ 選定 履歴情報DB System Control 該当する人,Knowledgeを 含む履歴情報 人とKnowledgeの関連 Knowledgeと Knowledgeの 関連 人と人の 関連 開発情報 抽出部 Knowledge 人 関連DB Knowledge 人 識別情報 CVS E-mail 関連抽出部 GNATS CoxR-C 関連抽出の流れ 情報探索の流れ データ抽出の流れ 2019/1/14 修士論文発表会

システムの評価 目的 実際のシステム利用履歴を分析することで,本システムを用いた有効な履歴情報,開発者情報の検索が行われているかを評価する 方法 FreeBSD開発のメーリングリストである,freebsd-hackers, freebsd-currentに対して本システムを告知し,利用を依頼した ユーザの利用履歴をログ解析することで追跡した 期間1月31日~2月11日 対象ユーザ:31名(延べユーザ79名) なにをしたのか 2019/1/14 修士論文発表会

基点となるKnowledge選定 Knowledgeの選定の定義 基点となるKnowledgeの選定を行ったユーザ 31名中18名 基点となるKnowledge選定の検索回数4回  (最小回数1回,最大回数9回) 選定された情報の種類 CVS情報 12回 E-mail情報 4回 GNATS情報 2回 2019/1/14 修士論文発表会

トピックコミュニティ検索 トピックコミュニティを検索したユーザ 平均閲覧情報 2回 18名中12名 同じシステムの人やKnowledgeを調べる開発者が多かった 平均閲覧情報 2回 人と人の関連 1回 人とKnowledgeの関連 8回 KnowledgeとKnowledgeの関連 13回 2019/1/14 修士論文発表会

評価 着目すべきKnowledgeの選定 トピックコミュニティ選定 より大規模な人数でさらなる利用事例の調査を行う必要がある 全体の56%が簡単な説明(告知文)のみで欲しい情報を選定することが出来た キーワード検索で絞り込んだ結果に対して,開発情報の検索(開発者や開発時間など)をもとに,検索した場合の選定回数が高かった トピックコミュニティ選定 Knowledgeを選定した開発者の67%(全体の39%)がトピックコミュニティを選定することが出来た KnowledgeとKnowledge,人とKnowledgeの関連選択が多かった 人と人の関連を辿ることは少なかった より大規模な人数でさらなる利用事例の調査を行う必要がある 2019/1/14 修士論文発表会

まとめ・今後の課題 オープンソースソフトウェア開発を対象とした,必要に応じた開発者と履歴情報を検索するトピックコミュニティ選定手法の提案とシステムの実装 キーワードの重み付け 類似した内容を示すキーワードに関連性を持たせる 開発者の役割の検討 利用状況に応じた探索を容易にする 他のユーザが着目したトピックコミュニティの活用 類似した情報を探している開発者に提案する 2019/1/14 修士論文発表会

おわり 2019/1/14 修士論文発表会

システムの検索方法 履歴情報による検索 類似ソースコードの検索 キーワード検索 ディレクトリ名,ファイル名(CVS) メーリングリスト名 (E-mail) カテゴリー,class情報 (GNATS) 開発者名 開発時間 類似ソースコードの検索 ソースコード キーワード検索 キーワード 2019/1/14 修士論文発表会

検索結果画面 キーワード検索結果 類似コード検索結果 2019/1/14 修士論文発表会

関連情報(CVS情報) 類似性に基づく分類(キーワード) 開発内容に基づく分類 (該当するGNATS情報) 該当するCVS情報 2019/1/14 修士論文発表会

開発者の関連の分類 役割,重み付けの変更 関連する開発者 2019/1/14 修士論文発表会

トピックコミュニティ選定手法 ユーザ システム 必要なトピック 入力ワード 入力ワード 履歴情報 DB Human rel. DB Knowledge Knowledge 選定した Knowledge Knowledge rel DB 関連の分類 選択した関連の分類 Human Knowledge DB 選択した関連の分類 関連する Knowledge 関連する Knowledge Human rel. DB 関連する人 関連する人 2019/1/14 修士論文発表会