LSA 手法を用いたソフトウェア変更情報のクラスタリング手法

Download Report

Transcript LSA 手法を用いたソフトウェア変更情報のクラスタリング手法

LSA

手法を用いたソフトウェア 変更情報のクラスタリング手法

井上研究室 博士前期課程 2 年 今枝 誉明 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1

研究の位置付け

ソフトウェア開発・保守コストの増大 ⇒ 版管理システムなどの活用  ソフトウェアを効率よく開発・管理 開発情報が 蓄積される 過去の開発情報を参考にして,開発・保守を効率化 開発者が必要とする情報を的確に取得するのは困難  蓄積された情報は膨大 2007/02/19 版管理システムに蓄積された 変更記録の間の関連を抽出する コンピュータサイエンス専攻 修士論文発表会 2

発表構成

 版管理システム  問題点と本研究の目的  提案手法  適用事例  まとめと今後の課題 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 3

版管理システム

C 変更 せず 変更 C B B ’ A 変更 A ’ チェック アウト コミット A A ' B B ' 「~の欠陥を 修正した」 C リポジトリ 版管理システムの用語    リビジョン : コミット時にリポジトリに作成される,ファイルの状態  リビジョンには連続した番号 ( リビジョン番号 ) が割り振られる コミットトランザクション : コミット時の変更群 コミットログ : コミット時に付記できる,変更理由等を記述した文章 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 4

発表構成

 版管理システム  問題点と本研究の目的  提案手法  適用事例  まとめと今後の課題 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 5

変更記録を参考にする際の問題点

 システムに蓄積された過去の変更を参考にする 例 ) 「あの時の欠陥修正ではどのような変更を施したのだろう ?

」 ↓  同時に参照すべき変更が存在することがある  その変更の影響で,他の箇所が変更されていた  その変更で欠陥を混入させてしまい,後に修正されていた  そのまま参考にすると同じ欠陥を混入させてしまう 2007/02/19 変更を個別に見るだけでは誤解が生じうる ⇒ 開発者は関連する変更を把握する必要がある コンピュータサイエンス専攻 修士論文発表会 6

目的と方針

関連する変更を抽出する  ある変更と同時にどんな変更がなされているか  ある変更が後に何処に影響を与えているか 方針 : 蓄積された変更を何らかの方法でグループ化する  コミットログや変更箇所中に出てくる単語に着目 2007/02/19 変更理由等 変更作業を特徴付けて コメント文等 いるのでは ?

コンピュータサイエンス専攻 修士論文発表会 7

発表構成

 版管理システム  問題点と本研究の目的  提案手法  適用事例  まとめと今後の課題 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 8

提案手法の概要と流れ

変更を,単語に着目してクラスタリングする 1.

2.

版管理システムのリポジトリから,コミットトランザク ションを取り出す 潜在的意味解析手法 (LSA) によりトランザクション間 の類似度を算出し,クラスタリングする 2007/02/19 リポジトリ トランザクション コンピュータサイエンス専攻 修士論文発表会 クラスタ 9

手順

1

コミットトランザクションの取り出し

トランザクション抽出 -if (0 <= value) { +if (0 <= value && value < 10) { …… リポジトリ 変更情報 ・ コミットログ ・ 変更内容 ( 差分 ) 等 直前のリビジョンから削除された行 直前のリビジョンから追加された行 トランザクション ( 同時にコミット された変更群 ) の集合 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 10

手順

2

トランザクションのクラスタリング

トランザクションの クラスタリング トランザクションの集合 クラスタの集合 1.

2.

LSA を用いて,トランザクション間の類似度を計算 クラスタリング ( 階層的クラスタリング手法 ) 2.1.

クラスタ集合の中から,類似度が最大となるクラスタの組 2.2.

2.3.

C , D を求める C , D の類似度がある閾値以下ならば,クラスタリング終了 クラスタ C , D を統合し 1 つのクラスタとし,繰り返す 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 11

潜在的意味解析

(LSA)

 LSA: Latent Semantic Analysis  情報検索 (Information Retrieval) ベクトル空間モデルに基づく手法 の分野で用いられる,  LSA   の効果 文書間の類似度がより鮮明になる に 出現する単語 文書 1 単語 A 単語 B 単語 C 単語 D 2 2 0 0 文書 2 文書 3 3 0 1 1 1 1 0 0 ベクトル ( 文書ベクトル ) 0.4

LSA 適用 尺度により, 文書間の類似度を求める 0.7

0.5

0.7

-0.3

0.2

0.7

文書 4 0 0 2 1 -0.1

0.2

2.5

2.8

2007/02/19 コンピュータサイエンス専攻 修士論文発表会 ベクトル ( 文書ベクトル ) 間の cosine 尺度により, 文書間の類似度を求める 12

発表構成

 版管理システム  問題点と本研究の目的  提案手法  適用事例  まとめと今後の課題 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 13

適用事例

本手法により関連のある変更群が抽出できるかを確認する  適用対象 : ソフトウェア部品検索システム SPARS-J † 開発期間 開発言語 総リビジョン数 総トランザクション数 総ファイル数 2003 年 3 月 ― 2006 年 1 月 C/C++ 2795 834 345 クラスタリング終了のための類似度閾値 : 0.8

⇒ 複数トランザクションからなるクラスタ数 : 116 † 横森,梅森,西,山本,松下,楠本,井上 : ”Java ソフトウェア部品検索システム SPARS J”, 電子通信情報学会論文誌 D-I, Vol.J87-D-I, No.12, 2004 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 14

適用方針

複数のトランザクションからなるクラスタに関して,その トランザクション間の関連により,以下の 7 つに分類 欠陥修正 リファクタリング 共通の目的 影響波及 変更取り消し その他の関連 無関係 ある変更と,その欠陥修正のための変更 同時に参照することが ある変更と,その箇所のリファクタリングのための変更 望ましいと考え,有用と判断 ある変更と,それと共通の目的を持つ変更 ある変更と,その影響が波及したための変更 ある変更と,その変更を取り消すための変更 上記以外の何らかの関連.仕様変更,マージ,等 コンピュータサイエンス専攻 修士論文発表会 2007/02/19 15

適用結果

複数のトランザクションからなるクラスタに関して,その トランザクション間の関連により,以下の 7 つに分類 欠陥修正 リファクタリング 共通の目的 影響波及 変更取り消し その他の関連 無関係 計 33 (28.4%) 10 (8.6%) 14 (12.1%) 2 (1.7%) 5 (4.3%) 28 (24.1%) 24 (20.7%) 116 (100%) 2007/02/19 計 64 クラスタ (55.2%): 有用なクラスタを抽出できた コンピュータサイエンス専攻 修士論文発表会 16

「欠陥修正」分類のクラスタの一例

• 3 つのトランザクション からなるクラスタ ( 抜粋 ) データベース操作時に必 要な比較関数の定義 1. 変数

ai

型と宣言 は

u_int8_t *

2. キャストを行うよう修正 3. キャストが間違っていたた め更に修正 比較関数の欠陥修正に 関連のある変更集合を 抽出できた トランザクション 変更

SPARS/src/DB/db_common.c (2004/08/25)

+u_int8_t *ai; +ai = a->data + a->size – 1; … ( 省略 ) …

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; コンピュータサイエンス専攻 修士論文発表会 2007/02/19 17

考察

 関連のある変更群を含むクラスタを生成できた  識別子を共有している  変更内容が似ている  関連のない変更からなるクラスタも生成された  avoid, files, version 等の単語のみを共有している  仕様変更により,変更箇所がインデントされている コンピュータサイエンス専攻 修士論文発表会 2007/02/19 18

発表構成

 版管理システム  問題点と本研究の目的  提案手法  適用事例  まとめと今後の課題 2007/02/19 コンピュータサイエンス専攻 修士論文発表会 19

まとめと今後の課題

 版管理システム中に蓄積された,関連する変更のクラ スタリング手法を提案   変更内容に出現する単語に着目 実際のソフトウェアに対して適用  単語に基づく手法の有用性・問題点を確認  今後の課題  単語の抽出・除去手法の確立  閾値決定方法の確立  定量的な評価 コンピュータサイエンス専攻 修士論文発表会 2007/02/19 20

終わり

2007/02/19 コンピュータサイエンス専攻 修士論文発表会 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 21