210 likes | 320 Views
LSA 手法を用いたソフトウェア変更情報のクラスタリング手法. 井上研究室 博士前期課程 2 年 今枝 誉明. 研究の位置付け. ソフトウェア開発・保守コストの増大 ⇒ 版管理システムなどの活用 ソフトウェアを効率よく開発・管理 過去の開発情報を参考にして,開発・保守を効率化 開発者が必要とする情報を的確に取得するのは困難 蓄積された情報は膨大 版管理システムに蓄積された 変更記録の間の関連を抽出する. 開発情報が 蓄積される. 発表構成. 版管理システム 問題点と本研究の目的 提案手法 適用事例 まとめと今後の課題. チェック アウト.
E N D
LSA 手法を用いたソフトウェア変更情報のクラスタリング手法 井上研究室 博士前期課程 2 年 今枝 誉明 コンピュータサイエンス専攻 修士論文発表会
研究の位置付け ソフトウェア開発・保守コストの増大 ⇒ 版管理システムなどの活用 • ソフトウェアを効率よく開発・管理 過去の開発情報を参考にして,開発・保守を効率化 開発者が必要とする情報を的確に取得するのは困難 • 蓄積された情報は膨大 版管理システムに蓄積された 変更記録の間の関連を抽出する 開発情報が 蓄積される コンピュータサイエンス専攻 修士論文発表会
発表構成 • 版管理システム • 問題点と本研究の目的 • 提案手法 • 適用事例 • まとめと今後の課題 コンピュータサイエンス専攻 修士論文発表会
チェック アウト コミット 版管理システム C B A A B C 変更 せず A' B' 変更 変更 「~の欠陥を 修正した」 C B’ A’ リポジトリ 版管理システムの用語 • リビジョン: コミット時にリポジトリに作成される,ファイルの状態 • リビジョンには連続した番号 (リビジョン番号) が割り振られる • コミットトランザクション: コミット時の変更群 • コミットログ: コミット時に付記できる,変更理由等を記述した文章 コンピュータサイエンス専攻 修士論文発表会
発表構成 • 版管理システム • 問題点と本研究の目的 • 提案手法 • 適用事例 • まとめと今後の課題 コンピュータサイエンス専攻 修士論文発表会
変更記録を参考にする際の問題点 • システムに蓄積された過去の変更を参考にする 例) 「あの時の欠陥修正ではどのような変更を施したのだろう?」 ↓ • 同時に参照すべき変更が存在することがある • その変更の影響で,他の箇所が変更されていた • その変更で欠陥を混入させてしまい,後に修正されていた • そのまま参考にすると同じ欠陥を混入させてしまう 変更を個別に見るだけでは誤解が生じうる ⇒ 開発者は関連する変更を把握する必要がある コンピュータサイエンス専攻 修士論文発表会
目的と方針 関連する変更を抽出する • ある変更と同時にどんな変更がなされているか • ある変更が後に何処に影響を与えているか 蓄積された変更を何らかの方法でグループ化する • コミットログや変更箇所中に出てくる単語に着目 方針: 変更作業を特徴付けて いるのでは? 識別子, コメント文等 変更理由等 コンピュータサイエンス専攻 修士論文発表会
発表構成 • 版管理システム • 問題点と本研究の目的 • 提案手法 • 適用事例 • まとめと今後の課題 コンピュータサイエンス専攻 修士論文発表会
提案手法の概要と流れ 変更を,単語に着目してクラスタリングする • 版管理システムのリポジトリから,コミットトランザクションを取り出す • 潜在的意味解析手法 (LSA) によりトランザクション間の類似度を算出し,クラスタリングする リポジトリ トランザクション クラスタ コンピュータサイエンス専攻 修士論文発表会
手順 1コミットトランザクションの取り出し トランザクション抽出 直前のリビジョンから削除された行 -if (0 <= value) { +if (0 <= value && value < 10) { …… 直前のリビジョンから追加された行 リポジトリ 変更情報 ・ コミットログ ・ 変更内容 (差分) 等 トランザクション (同時にコミット された変更群) の集合 コンピュータサイエンス専攻 修士論文発表会
手順 2トランザクションのクラスタリング • LSA を用いて,トランザクション間の類似度を計算 • クラスタリング (階層的クラスタリング手法) 2.1.クラスタ集合の中から,類似度が最大となるクラスタの組 C,D を求める 2.2. C,D の類似度がある閾値以下ならば,クラスタリング終了 2.3.クラスタ C,D を統合し 1 つのクラスタとし,繰り返す トランザクションの クラスタリング トランザクションの集合 クラスタの集合 コンピュータサイエンス専攻 修士論文発表会
ベクトル (文書ベクトル) 間の cosine 尺度により, 文書間の類似度を求める 2 2 0 0 3.2 2.1 0.4 -0.3 3 1 1 0 2.2 1.6 0.6 0.2 ベクトル (文書ベクトル) 間の cosine 尺度により, 文書間の類似度を求める 0 1 1 0 0.7 0.5 0.7 0.7 LSA 適用 0 0 2 1 -0.1 0.2 2.5 2.8 潜在的意味解析 (LSA) • LSA: Latent Semantic Analysis • 情報検索 (Information Retrieval) の分野で用いられる,ベクトル空間モデルに基づく手法 • LSA の効果 • 文書間の類似度がより鮮明になる • 間接的に関連している文書間の類似度も高くなる トランザクション コミットログ・変更内容 (差分) に 出現する単語 ベクトル空間モデルにおける文書間の類似度計算 LSA を用いた文書間の類似度計算 単語 A 単語 B 単語 C 単語 D 文書 1 文書 2 文書 3 文書 4 コンピュータサイエンス専攻 修士論文発表会
発表構成 • 版管理システム • 問題点と本研究の目的 • 提案手法 • 適用事例 • まとめと今後の課題 コンピュータサイエンス専攻 修士論文発表会
開発期間 2003 年 3 月 ― 2006 年 1 月 開発言語 C/C++ 総リビジョン数 2795 総トランザクション数 834 総ファイル数 345 適用事例 本手法により関連のある変更群が抽出できるかを確認する • 適用対象: ソフトウェア部品検索システム SPARS-J† クラスタリング終了のための類似度閾値: 0.8 ⇒ 複数トランザクションからなるクラスタ数: 116 † 横森,梅森,西,山本,松下,楠本,井上: ”Java ソフトウェア部品検索システム SPARS-J”, 電子通信情報学会論文誌 D-I, Vol.J87-D-I, No.12, 2004 コンピュータサイエンス専攻 修士論文発表会
適用方針 複数のトランザクションからなるクラスタに関して,そのトランザクション間の関連により,以下の 7 つに分類 クラスタ内のトランザクションを 同時に参照することが 望ましいと考え,有用と判断 有用でないと判断 コンピュータサイエンス専攻 修士論文発表会
適用結果 複数のトランザクションからなるクラスタに関して,そのトランザクション間の関連により,以下の 7 つに分類 計 64 クラスタ (55.2%): 有用なクラスタを抽出できた コンピュータサイエンス専攻 修士論文発表会
変更 SPARS/src/DB/db_common.c (2004/08/25) +u_int8_t *ai; +ai = a->data + a->size – 1; 「欠陥修正」分類のクラスタの一例 トランザクション • 3 つのトランザクション • からなるクラスタ (抜粋) • データベース操作時に必 • 要な比較関数の定義 • 1. 変数 aiは u_int8_t * • 型と宣言 • 2. キャストを行うよう修正 • 3. キャストが間違っていたた • め更に修正 … (省略) … SPARS/src/DB/db_common.c (2004/12/14) -ai = a->data + a->size – 1; +ai = (u_int8_t)a->data + a->size – 1; 比較関数の欠陥修正に 関連のある変更集合を 抽出できた SPARS/src/DB/db_common.c (2004/12/14) -ai = (u_int8_t)a->data + a->size – 1; +ai = (u_int8_t *)a->data + a->size – 1; コンピュータサイエンス専攻 修士論文発表会
考察 • 関連のある変更群を含むクラスタを生成できた • 識別子を共有している • 変更内容が似ている • 関連のない変更からなるクラスタも生成された • avoid, files, version 等の単語のみを共有している • 仕様変更により,変更箇所がインデントされている コンピュータサイエンス専攻 修士論文発表会
発表構成 • 版管理システム • 問題点と本研究の目的 • 提案手法 • 適用事例 • まとめと今後の課題 コンピュータサイエンス専攻 修士論文発表会
まとめと今後の課題 • 版管理システム中に蓄積された,関連する変更のクラスタリング手法を提案 • 変更内容に出現する単語に着目 • 実際のソフトウェアに対して適用 • 単語に基づく手法の有用性・問題点を確認 • 今後の課題 • 単語の抽出・除去手法の確立 • 閾値決定方法の確立 • 定量的な評価 コンピュータサイエンス専攻 修士論文発表会
終わり コンピュータサイエンス専攻 修士論文発表会