開発履歴情報に基づいた ダイナミックコミュニティ選定支援手法 ○佐々木 啓,松下 誠,井上 克郎 大阪大学大学院情報科学研究科 コンピュータサイエンス専攻 2018/9/20 1月SIGSS研究会
背景:オープンソースソフトウェア開発 複数の開発者が協力し,プロダクト開発を行う 開発者は,互いに開発情報をやりとりする事で並列に開発作業を行う ソースコード・マニュアル 電子メール バグ変更要求 開発情報はシステムに蓄積される 版管理システム (CVS:Concurrent Versions System) 電子メールアーカイブ 障害管理システム (BTS:Bug Tracking System) まず、最初に表題にありますダイナミックコミュニティについて説明をさせていただきます. 最初にその背景としてソフトウェア開発について説明いたします. 一般的なオープンソースソフトウェア開発に代表されますように・・・ 2018/9/20 1月SIGSS研究会
開発コミュニティ 開発者と開発情報に存在する三つの関連から構成される集合 トピックコミュニティ (⊆開発コミュニティ) 開発の「処理」などのトピックが含まれている トピックコミュニティ (⊆開発コミュニティ) トピックに関連する開発者と開発情報から構成されるサブコミュニティ 開発者と開発情報 開発者と開発者 開発情報と開発情報 2018/9/20 1月SIGSS研究会
トピックコミュニティ選定 ダイナミックコミュニティ トピックコミュニティから有用な開発処理を抽出することで開発のコストを軽くすることができる (従来の方法)あらかじめ人や開発情報の関連を抽出しておき,その関連から必要なトピックコミュニティの選定を図る 特定の条件には,特定の関連を検出できる 人とその人が抱えている問題に対して,有益なトピックを提供するトピックコミュニティは動的に変化する 相対性:同じ人でも,問題によって必要なトピックコミュニティは変わる 恣意性:問題が同一でも,人によって必要なトピックコミュニティは変わる 一時性:問題発生とともに発生し,問題解決すると解消する ダイナミックコミュニティ 2018/9/20 1月SIGSS研究会
Dynamic Community (DynC) 複数の人と,その人が有するKnowledgeから構成されるナレッジワークスペース†の中に構成されるサブコミュニティ イベントの発生に応じて,関連する人とそのKnowledgeを動的に選定することで構成される 開発者 開発情報 トピックコミュニティ 開発コミュニティ 人 Knowledge ダイナミックコミュニティ ナレッジワークスペース †葉雲文, 山本恭裕, 岸田孝一,“ 知識共創のためのダイナミックコミュニティ:理論・アーキテクチャ・応用”, DynC Symposium2004, 東京, Nov.2004.
研究の目的 着目したトピックからユーザや処理に応じて関連を選定し,動的にトピックコミュニティを選定するための手法の提案を行う その手法を元にトピックコミュニティ選定支援システムの開発を行う 研究の方針 人とKnowledgeの抽出・関連付け トピックコミュニティ選定手法の提案 トピックコミュニティ選定支援システムの試作 2018/9/20 1月SIGSS研究会
人とKnowledgeの抽出・関連付け 抽出の対象 関連付け CVS,電子メール,GNATS(BTS) 人に対する重み付け,役割付けを行いroleデータベースに登録する 関連付け 人とKnowledgeの関連 人と人の関連 KnowledgeとKnowledgeの関連 “Human Knowledge rel. DB”,“Human rel. DB”, “Knowledge rel. DB”に登録する 2018/9/20 1月SIGSS研究会
CVS情報 人 識別情報 Knowledge 各ファイルの履歴情報はリポジトリに格納され,その開発履歴はリビジョン単位で保存される 人の重み付け 開発回数,開発範囲 人の役割付け トランク工程の開発:developer リビジョン 1.1, 1.2 , 1.3, …. ブランチ工程の開発:maintainer リビジョン 1.1.1.3, 1.3.1.5,…. 協力者 協力者 人 識別情報 リビジョン リビジョン 開発日時 開発日時 開発者 開発者 開発ログ 開発ログ 差分情報 差分情報 履歴情報を含むファイルはこのように構成されています. それぞれリビジョン情報ごとに分かれていて それぞれに・・・・ さらに、各リビジョンごとの差分情報を得ることが出来ます Knowledge 2018/9/20 1月SIGSS研究会
電子メール情報 人 識別情報 Knowledge 開発者はメールを通して開発に関する議論を行う 人の重み付け 人の役割付け 受信者 受信者 キーワード 人の役割付け メーリングリスト名 開発の範囲 受信者 受信者 Message ID Message ID Subject Subject 識別情報 参照ID 参照ID 人 送信日時 送信日時 書く電子メールの情報はこのようになっています。 まずそれぞれに固有の識別番号であるMessage-IDがあり,送信した開発者・・・ 送信者 送信者 本文 本文 Knowledge 2018/9/20 1月SIGSS研究会
GNATS情報 人 識別情報 Knowledge プロダクトの機能に対する拡張要求や修正要求が記載されている 起草者 起草者 修正内容 人の重み付け Class情報,優先度 人の役割付け 起草者:originator 管理人:manager 修正担当者:developer 起草者 起草者 識別情報 修正内容 修正内容 人 バグID バグID Class情報: sw-bug, doc-bug, update, change-request カテゴリ:kern, src, ..... 優先度:high, medium,low 状態: Open, feedback, Closed …. クラス:変更要求 説明: エラー状況…. 起草日時 管理人 管理人 バグの管理人:sheldonh 担当者の変更履歴: freebsd-bugs→sos 変更日時,理由:….. バグ修正の担当者:sos 状態の変更:open→closed 変更日時,理由:…….. バグ基本情報 バグ基本情報 バグの変更情報 バグの変更情報 Knowledge 次にBTSについて説明いたします. まずBTSは・・・・。 変更日時 修正担当者 修正担当者 変更日時 起草日時 2018/9/20 1月SIGSS研究会
人とKnowledgeの関連(H to K) 人と人の関連(H to H) 同じCVS,E-mail,GNATSに含まれている「人」と「Knowledge」 H to H CVS 開発者と開発ログに記載された協力者 同一のファイル・ディレクトリをコミットした開発者 E-mail 同じMessage-ID,参照IDに関わっている送信者,受信者 GNATS 同じバグ修正に関わった起草者,責任者,修正担当者 2018/9/20 1月SIGSS研究会
KnowledgeとKnowledge (K to K)の 関連付け(1/2) 開発内容と類似性に基づいて関連付けを行う 開発内容に基づく関連付け CVS 同一ディレクトリ,リポジトリに含まれるリビジョン 同時にコミットされたリビジョン E-mail 同一メールスレッドに含まれる電子メール GNATS バグの種類,概要が同じ 過去のGNATS情報を引用したGNATS情報 識別情報 バグID,ファイルパス・リビジョン番号,message-ID コミットメールへの返信メール 2018/9/20 1月SIGSS研究会
K to Kの関連付け(2/2) 開発内容と類似性に基づいて関連付けを行う 2. 類似性に基づく関連付け 類似ソースコードを含むリビジョン Subjectが一致し,送信日時が近いE-mail キーワードが同一のKnowledge 2018/9/20 1月SIGSS研究会
トピックコミュニティ選定手法 ユーザ システム 必要なトピック 入力ワード 入力ワード 履歴情報 DB Human rel. DB Knowledge Knowledge 選定した Knowledge Knowledge rel DB 関連の分類 選択した関連の分類 Human Knowledge DB 選択した関連の分類 関連する Knowledge 関連する Knowledge Human rel. DB 関連する人 関連する人 2018/9/20 1月SIGSS研究会
入力ワードの言語化 ユーザが欲しいトピックに対して,トピックを示す情報を言語化する 変更したいソースコード ディレクトリ名,ファイル名 メーリングリスト名 バグの種類,class情報 キーワード(必要だと思われる語句) 開発時間 システムへの入力として与えることで,システムはそれに該当するKnowledgeを含んだCVS,電子メール,GNATS情報の検索を行う 2018/9/20 1月SIGSS研究会
Knowledgeの検索方法 履歴情報による検索 類似ソースコードの検索 キーワード検索 開発時間による検索 ディレクトリ名,ファイル名(CVS) メーリングリスト名 (E-mail) カテゴリー,class情報 (GNATS) 開発者名 類似ソースコードの検索 ソースコード キーワード検索 キーワード 開発時間による検索 対象システム名(CVS,E-mail,GNATS),開発時間 2018/9/20 1月SIGSS研究会
検索結果 CVS履歴情報 E-mail履歴情報 GNATS履歴情報 履歴情報中に含まれる識別情報 CVSファイルパス,E-mail ID, リビジョン番号 開発者,協力者(役割) 開発日時 ソースコード 差分情報 開発ログ Subject 本文 送信者 受信者 送信日時 バグの概要 起草者 管理人,修正担当者 カテゴリー class 重要度 状態 優先度 対処方法 更新履歴 再現方法 履歴情報中に含まれる識別情報 CVSファイルパス,E-mail ID, バグID 2018/9/20 1月SIGSS研究会
トピックコミュニティ選定手法 ユーザ システム 必要なトピック 入力ワード 入力ワード 履歴情報 DB Human rel. DB Knowledge Knowledge 選定した Knowledge Knowledge rel DB 関連の分類 選択した関連の分類 Human Knowledge DB 選択した関連の分類 関連する Knowledge 関連する Knowledge Human rel. DB 関連する人 関連する人 2018/9/20 1月SIGSS研究会
Knowledgeの選定 CVS履歴情報 E-mail履歴情報 GNATS履歴情報 ファイルパス Subject リビジョン番号 本文 開発者,協力者(役割) 開発日時 ソースコード 差分情報 開発ログ Subject 本文 送信者 受信者 送信日時 バグの概要 起草者 管理人,修正担当者 カテゴリー class 重要度 状態 優先度 対処方法 更新履歴 再現方法 端的にその履歴情報を表すKnowledgeを調査 2018/9/20 1月SIGSS研究会
Knowledgeの選定 CVS履歴情報 E-mail履歴情報 GNATS履歴情報 ファイルパス Subject リビジョン番号 本文 開発者,協力者(役割) 開発日時 ソースコード 差分情報 開発ログ Subject 本文 送信者 受信者 送信日時 バグの概要 起草者 管理人,修正担当者 カテゴリー class 重要度 状態 優先度 対処方法 更新履歴 再現方法 該当する開発者が同じ役割で行った履歴情報や 開発範囲を調査することで,Knowledgeの選定を行う 2018/9/20 1月SIGSS研究会
関連の分類 システムは選定したKnowledgeに対して3つの関連の分類を提供する 開発過程 開発者 類似性 開発過程 Knowledge rel. DBから,開発内容に基づいたK to Kの関連を検索 開発者 Human Knowledge rel. DBからH to Kの関連を検索 Human rel. DB から,H to Hの関連を検索 類似性 Knowledge rel. DBから類似性に基づいたK to Kの関連を検索 2018/9/20 1月SIGSS研究会
開発過程の関連 Knowledge rel. DBから開発内容に基づいたK to Kの関連を検索 CVS履歴情報 E-mail履歴情報 GNATS履歴情報 ファイルパス リビジョン番号 開発日時 開発ログ Subject 本文 送信日時 バグの概要 対処方法 更新履歴 再現方法 検索結果 識別情報 同時にコミットされたファイル情報 ファイルの履歴情報 上位ディレクトリの開発履歴 電子メールのスレッド一覧 2018/9/20 1月SIGSS研究会
開発者による関連 Human Knowledge rel. DB, Human rel. DB からH to K,H to Hの関連を検索 CVS履歴情報 E-mail履歴情報 GNATS履歴情報 開発者,協力者 送信者 受信者 起草者 管理人,修正担当者 同じ役割(originator,manager,developer)で 行われたGNATS情報 役割(developer,maintainer)を固定した 該当開発者の開発回数,開発範囲 同じ開発者間でやりとりされたメール 検索結果 2018/9/20 1月SIGSS研究会
類似性による関連 Knowledge rel. DBから類似性に基づいたK to Kの関連を検索 CVS履歴情報 E-mail履歴情報 GNATS履歴情報 ソースコード 差分情報 開発ログ Subject 本文 バグの概要 カテゴリー class 重要度 状態 優先度 対処方法 更新履歴 再現方法 検索結果 キーワード 類似ソースコードを持つCVS情報 類似するsubjectを持つE-mail 類似するGNATS情報 2018/9/20 1月SIGSS研究会
トピックコミュニティの選定 必要なトピックを見つけるまで以下を繰り返す ユーザは選定したKnowledgeに対する関連の分類を選択する システムは関連の分類に基づいてKnowledgeを検索する ユーザは検索されたKnowledge群に対して選定を行う ユーザが興味や関心を持った関連を辿ることで,その関連を取り終えることでトピックコミュニティが選定される トピックコミュニティ 2018/9/20 1月SIGSS研究会
システムの概要 Web Server System Control CoxR Supporting DC System 関連抽出部 Query Word = ソースコード キーワード, 開発者名,開発日時 ファイル名, Query Word Web Server ユーザ CoxR System Control 該当する人,Knowledge Knowledgeと Knowledgeの 関連 人とKnowledgeの関連 人と人の 関連 履歴情報DB 開発者の役割 開発者グループ Role DB Human Knowledge Rel. DB Humans Rel. DB Knowledges Rel. DB Knowledge 人 開発情報 抽出部 CVS E-mail 関連抽出部 GNATS Supporting DC System 関連抽出の流れ 情報探索の流れ データ抽出の流れ 2018/9/20 1月SIGSS研究会
システムの概要 Web Server System Control CoxR Supporting DC System 関連抽出部 関連の選択 Web Server 必要なトピック ユーザ Knowledgeと人の関連,開発者の開発範囲,役割 CoxR System Control 該当する人,Knowledge Knowledgeと Knowledgeの 関連 人とKnowledgeの関連 人と人の 関連 履歴情報DB 開発者の役割 開発者グループ Role DB Human Knowledge Rel. DB Humans Rel. DB Knowledges Rel. DB Knowledge 人 開発情報 抽出部 CVS E-mail 関連抽出部 GNATS Supporting DC System 関連抽出の流れ 情報探索の流れ データ抽出の流れ 2018/9/20 1月SIGSS研究会
システムの実装 FreeBSD開発の履歴情報を元にシステムを実装 対象:1994年-2004年の開発情報 開発環境 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件 2018/9/20 1月SIGSS研究会
システムの適応事例 問題点 システムを用いてKerberos5に関する修正事例を調べることで問題の解決を行う Kerberos5を導入してから,sshdを採用しているPCとOpenSSHを使って通信することができない Kerberos5の認証部分に問題があるのではないだろうか? システムを用いてKerberos5に関する修正事例を調べることで問題の解決を行う 2018/9/20 1月SIGSS研究会
ソースコードによる検索 入力:ユーザ手持ちのKerberos5認証部のソースコード Kerberos5の認証部分のソースコード Supporting Dynamic Community system KTEXT_ST auth; char *tkt_user = NULL; char *kdata = packet_get_string((unsigned int *) &auth.length); packet_integrity_check(plen, 4 + auth.length, type); auth.length = length; if (auth.length < MAX_KTXT_LEN) memcpy(auth.dat, kdata, auth.length); xfree(kdata); if (pw != NULL) { authenticated = auth_krb4(pw->pw_name, &auth, &tkt_user); if (authenticated) { snprintf(user, sizeof user, " tktuser %s", tkt_user); xfree(tkt_user); } Kerberos5の認証部分のソースコード 2018/9/20 1月SIGSS研究会
類似コードの検索結果 検索結果:類似ソースコードを持つCVS情報一覧 リポジトリ内の類似リビジョン情報 Knowledge 各Knowledgeの中から着目すべきKnowledgeを選定を行う 2018/9/20 1月SIGSS研究会
検索結果の概要 src/crypto/openssh/auth1.cに 変更点の類似度が高いものが多い 三つのリビジョンの類似度が高い リビジョン1.1.1.4, 1.11, 1.3.2.5 リビジョン 1.1.1.4 (開発者green) 大幅なバージョンアップ リビジョン 1.11(開発者assar) OpenSSHの通信エラーに関して バグID mics/20504の修正を行った リビジョン 1.3.2.5(開発者markm) assarの修正をブランチの開発に反映 開発者 開発ログ 2018/9/20 1月SIGSS研究会
Knowledgeの選定 該当開発者(green,assar,markm)の開発傾向,役割を調査 開発者green 該当範囲で開発回数が多く,ほとんどの 開発に関わっていたが,最近はあまり開 発に関わっていない 開発者assar OpenSSHのバグ修正を複数行っている “この分野の専門性がある” 開発者markm assarの開発部分と関連が深い assarの行ったKnowledgeに着目し,トピックを探る src/crypto/opensshの 開発状況 src/crypto/openssh/ auth1.cの開発履歴 2018/9/20 1月SIGSS研究会
Knowledgeの分析 選定したKnowledge(src/crypto/openssh/auth1.c revision 1.11)の分析を行う 差分情報 類似リビジョン情報 assar ・受信したメッセージに対して,認証部分の条件文を変更していることは分かる →これだけでは理解が不十分 src/crypto/openssh/auth1.c revision 1.11 2018/9/20 1月SIGSS研究会
開発内容による関連の抽出(1/2) Kerberos5の導入の問題点についてくわしく辿る 選定Knowledgeの開発内容に基づいた関連Knowledgeを検索 src/crypto/openssh/auth1.c revision 1.11 mics/20504情報 関連するGNATS情報 sheldonh 関連するE-mail情報 assar ・Kerberos5認証のopenSSHを使ってsshdが起動しているサイトに接続を行う バグの概要 openSSH とsshdは Kerberos5 による認証を介して接続できない 再現方法 ・Kerberos5の導入に関するmisc/18995,misc/20502には対応している Mark Andrews Kerberos5の導入の問題点についてくわしく辿る 2018/9/20 1月SIGSS研究会
関連Knowledgeの分析 関連のあるGNATS情報を調べる 既存のバグに関しては,すでに作成されているパッチを misc/20502 misc/18995 sheldonh krb.hのような Kerberos IVのincludesファイルがないとKerberos5をコンパイルできない sheldonh Kerberos IVを導入せずに,Kerberos5をビルドすると,コンパイルできても,ビルドできないファイルがある markm assar assar 既存のバグに関しては,すでに作成されているパッチを 当てることにより問題解決ができる 2018/9/20 1月SIGSS研究会
開発内容による関連の抽出 (2/2) バグ修正の関連Knowledgeの検索 mics/20504情報 assar src/crypto/openssh/auth1.c revision 1.11 mics/20504情報 関連するCVS,E-mail情報 sheldonh KerberosIV,5それぞれの認証に対して,先に同じssh messageを用いて通信を行い,内容を見る前にKerberos IVか5かの判定を行う assar 対処方法 Mark Andrews バグの対処方法を実際に行ったCVSの修正内容を辿る 2018/9/20 1月SIGSS研究会
関連Knowledgeの分析 同時に修正されたCVS情報の差分情報を分析する 抱えている問題に対して,類似したバグの修正事例を データ送信部と認証部に分けて修正されている assar markm メッセージを受け取った後に Kerberos IVか5かを判断する 同時にコミットされたCVSリポジトリ 認証がKerberos IV,5のどちらでも 同じメッセージを送信する 抱えている問題に対して,類似したバグの修正事例を 調査することで,手持ちのソースコードに対して変更を行う 2018/9/20 1月SIGSS研究会
得られたトピックコミュニティ revision 1.3.2.5 src/crypto/openssh/auth1.c green markm revision 1.1.1.4 misc/18995 assar misc/20502 sheldonh mics/20504情報 データ認証部 データ受信部 2018/9/20 1月SIGSS研究会
適応事例の考察 類似コードの検索 開発者の開発内容,役割を把握する バグ修正に関するトピックコミュニティの選定 着目すべきKnowledge群を検索する 開発者の開発内容,役割を把握する Knowledgeの選定を行う バグ修正に関するトピックコミュニティの選定 Kerberos5 の導入によるOpenSSHの不具合についての修正事例を調査する 着目したKnowledgeをもとに,ユーザが開発過程や,開発者の関連からトピックコミュニティを選定することで,修正内容を理解することができる 2018/9/20 1月SIGSS研究会
まとめと今後の課題 ダイナミックコミュニティとオープンソースソフトウェア開発への適応を説明し,トピックコミュニティの抽出についての手法を提案した システム実装について説明し,適応事例について考察した 適応実験を行うことで本研究の妥当性を評価する 開発者の役割の多様化 利用状況に応じた探索を容易にする キーワードの重み付けの改善 2018/9/20 1月SIGSS研究会