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