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
A
変更
変更
B’
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. LSA を用いて,トランザクション間の類似度を計算
2. クラスタリング (階層的クラスタリング手法)
2.1. クラスタ集合の中から,類似度が最大となるクラスタの組
C,D を求める
2.2. C,D の類似度がある閾値以下ならば,クラスタリング終了
2.3. クラスタ C,D を統合し 1 つのクラスタとし,繰り返す
2007/02/19
コンピュータサイエンス専攻 修士論文発表会
11
潜在的意味解析 (LSA)
 LSA: Latent Semantic Analysis
トランザクション
 情報検索 (Information Retrieval) の分野で用いられる,
ベクトル空間モデルに基づく手法
 LSA の効果
コミットログ・変更内容 (差分) に
 文書間の類似度がより鮮明になる
出現する単語
 間接的に関連している文書間の類似度も高くなる
LSA を用いた文書間の類似度計算
ベクトル空間モデルにおける文書間の類似度計算
単語 A 単語 B 単語 C 単語 D
文書 1
2
2
0
0
文書 2
3
1
1
0
文書 3
0
1
1
0
文書 4
0
0
2
1
2007/02/19
3.2
2.1
0.4
ベクトル (文書ベクトル)
LSA
適用
間の
cosine2.2尺度により,
1.6
0.6
文書間の類似度を求める
-0.3
0.2
0.7
0.5
0.7
0.7
-0.1
0.2
2.5
2.8
コンピュータサイエンス専攻 修士論文発表会
ベクトル (文書ベクトル)
間の 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 つのトランザクション
からなるクラスタ (抜粋)
• データベース操作時に必
要な比較関数の定義
トランザクション
変更
SPARS/src/DB/db_common.c (2004/08/25)
+u_int8_t *ai;
+ai = a->data + a->size – 1;
… (省略) …
1. 変数 ai は u_int8_t *
型と宣言
2. キャストを行うよう修正
3. キャストが間違っていたた
め更に修正
比較関数の欠陥修正に
関連のある変更集合を
抽出できた
2007/02/19
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;
コンピュータサイエンス専攻 修士論文発表会
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