Download presentation
Presentation is loading. Please wait.
1
ファイルの同時変更パターンと変更差分の分析による 論理的結合関係の自動抽出
松村知子*,横森励士**,大杉直樹*, 川口真司***,松下誠*** *奈良先端科学技術大学院大学情報科学研究科 **南山大学数理情報学部情報通信学科 ***大阪大学大学院情報科学研究科 2005年6月9日 ソフトウェアシンポジウム2005 於 富山国際会議場
2
レガシーソフトウェアの特徴 長年にわたる保守作業(機能変更,追加,及びフォールト修正)によって,システム構造が複雑化する
あるコード片の変更に対して,別のコード片も同時に変更されなければいけない,といった論理的結合関係が増加している Logical Coupling* 本研究では,レガシーソフトウェアの保守の支援を目的とします. レガシーソフトウェアとは,長年にわたる保守作業,機能変更や追加,フォールト修正によって, システム構造が複雑化しているという特徴があります. 複雑化の1つの現象として,あるコード片に対して別のコード片も同時に変更されなければいけない, といった論理的結合関係が増加している,ということが挙げられます. このようの結合関係は,GallらによってLogical Couplingと呼ばれています. *H. Gall, M. Jazayeri, J. Krajewski: ”CVS Release History Data for Detecting Logical Couplings”, Proc. 6th International Workshop on Principals of Software Evolution (IWPSE'03) pp.13-23, Sep Helsinki, Finland
3
増加するLogical Couplingの問題点
設計ドキュメントに明記されていないものが多いため,時間の経過や作業者の入れ替わりによって,潜在化する システムに特化している プログラムコードの構文解析のみでは,把握できないものがある Logical Couplingの例 関数Aへの変更を,Aのコピー&ペーストである関数Bにも行わなければならない テーブルXに追加をする場合,記号定数Yの値を変更しなければならない 製造や保守過程で増加していくLogical Couplingには, 次のような問題があります. 設計ドキュメントに明記されていないものが多いため, 時間の経過や作業者の入れ替わりによって潜在化します. また,システムに特化しているため,他のシステムでの経験や知識が 役に立ちません. プログラムコードの構文解析などでは把握できない関係があります. 例としては,....ばあります. このような結合関係が増加すると,修正漏れや間違いによるフォールト混入の危険性が増し, 保守コストが増加したり,信頼性が低下したりします. 修正漏れや修正間違いによる フォールト混入の危険性が増加する
4
Logical Couplingを用いた保守支援
結合関係を持つファイルは同じ変更者によって同時に変更されることが多い 構成管理システムの変更履歴から,同時変更される頻度の高いファイルの組み合わせを抽出する 抽出されたパターンを用いて,コード変更時の修正漏れ・システム構造の複雑化を検出する ファイル変更パターン このような問題に対して,保守支援の方法が研究されています. その1つが,このような論理的結合関係を持つファイルは同じ変更者によって 同時もしくは極めて近い時間内に変更されることが多い,という前提の下に 構成管理システムのファイル変更履歴から, 同時変更される頻度の高いファイルの組み合わせを抽出し, その抽出されたパターンを用いて,コード変更時の修正漏れや システム構造の複雑化を検出する方法です. このようなファイルの組み合わせを,以降 「ファイル変更パターン」と呼びます. 新たな変更 ファイル変更パターンを抽出 {A,B,C,D}{P,G,F} {X,Y,Z} 同時変更ファイル {A,B,C} {P,G,F,X} Dの変更漏れ? 複雑化?
5
ファイル変更パターンによる保守支援の特長と問題点
構成管理システムの変更履歴のみから抽出 プログラミング言語に応じた構文解析が不要で,大規模なコードサイズにも対応可能 コードの更新に応じて動的な結合関係の更新が可能 すべてのファイルを対象にできる(.ini, .properties,画像ファイルなど) 問題点 関連ないファイルの更新が同時に行われることがあり,更新数が少ないと,結合関係を持たないパターンが多く抽出される(=抽出精度が悪化する)* ファイル変更パターンを用いた保守支援の特長と問題点は 次のようなものがあります. まず,特長としては構成管理システムのみから抽出可能で プログラミング言語に応じた構文解析が不要なので 大規模なコードサイズに対応することが可能です. また,コードの更新に応じて動的な結合関係の更新が可能です. また,プログラム以外のすべてのファイルを対象にできます. 例えば,初期設定ファイルや属性ファイルなどとの関係が上げられます. 問題点としては,関連の無い更新が同時に行われることがあり, 更新数が少ないと結合関係を持つパターンの抽出精度が低くなる ということがあげられます. *A. T. T. Ying, G. C. Murphy: ” Predicting Source Code Changes by Mining Change History ”, IEEE transactions on Software Engineering, pp , Vol.30, No.9, Sep
6
関連研究 抽出精度を向上させるための従来手法 ファイル変更パターンを用いることの特長を一部相殺している
ファイル変更に関連する問題報告書中の単語情報などを利用する* 粒度を構文要素レベル(関数・メソッドなど)まで細分化する** ファイル変更パターンを用いることの特長を一部相殺している 追加のデータ収集が必要 構文解析が必要 このような問題に対して,精度を向上させるための研究として, 次のような方法が考えられてます. まず,ファイル変更に関連する問題報告書中の単語情報を利用し, その似ている度合いからファイル変更パターンを精選する方法です. また,粒度をファイル単位ではなく構文要素,例えば関数やメソッド単位にまで 細分化し,各要素の変更履歴の組み合わせパターンを抽出することで, ピンポイントに結合関係を示す方法です. しかし,このような方法では,ファイル変更パターンによる支援の 特長を一部相殺しています. 1つは,構成管理システム以外のデータの収集が必要で, 開発プロセスに依存します. また,2番目の方法では構文解析が必要で, プログラミング言語毎の対応が必要になります. *J. S. Shirabad, T. C. Lethbridge, S. Matwin : ” Mining the Maintenance History of a Legacy Software System”, Proc. International Conference on Software Maintenance (ICSM'03) pp , Sep Amsterdam, The Netherlands **Thomas Zimmermann, Peter Weißgerber, Stephan Diehl, Andreas Zeller: ” Mining Version Histories to Guide Software Changes ”, Proc. 26th International Conference on Software Engineering (ICSE'04) May, 2004 Edinburgh, Scotland, United Kingdom
7
本研究の目的 構成管理システムの変更履歴と各ファイルの変更内容(差分)を用いて,論理的結合関係を持つファイル変更パターンを高精度で抽出する
提案する方法の特長 論理的結合関係の抽出に必要なデータは,構成管理システム(CVSなど)から取得可能で,データ収集のための追加工数が不要である 構文解析を行わないため,プログラミング言語を意識する必要が無い 本研究では,構成管理システムの変更履歴と各ファイルの変更内容(差分)を用いて, 論理的結合関係を持つファイル変更パターンを高精度で抽出することを 目的とします. 提案する方法の特長は,論理的結合関係の抽出に必要なデータは, 構成管理システム(CVSなど)から取得可能で, データ収集のための追加工数が不要です. また,構文解析を行わないため,プログラミング言語を意識する必要がありません.
8
提案手法の流れ 同時に行われたと考えられる更新処理 構成管理システム (CVS)リポジトリ …
Fileα, Fileβ, Fileγ, Fileδ Fileθ, Fileη, Fileκ, Fileλ Fileα, Fileγ, Fileε Fileε, Fileζ 削除語 削除語 削除語 … 追加語 追加語 追加語 追加語 同時変更数が一定以上のファイル変更パターンの抽出 パターン毎に同時変更時の変更内容から単語リストの生成 単語リストを用いて,トランザクション毎・トランザクション間の結合関係の強さ(結合度)を判定 結合度に基いて有効なファイル変更パターンの精選 次に提案する方法の概要を説明します. まず,CVSなどの構成管理システムから同時変更数が一定数以上の ファイル変更パターンを取り出します. 次に,パターン毎に同時変更時の変更内容(差分)を取り出し, 単語に分割して単語リストを作成します. 単語リストを用いて各ファイル変更パターンの トランザクション毎,及びトランザクション間の結合関係の強さ を判定します. ここで言うトランザクションとは,同時に行われた考えられる更新処理のことです. 最後に結合関係の強さ,すなわち結合度に基いて,有効なファイル変更パターンを精選します. 次に,各ステップの詳細についてご説明します. Fileα, Fileβ, Fileγ, Fileδ Fileθ, Fileη, Fileκ, Fileλ Fileα, Fileγ, Fileε Fileε, Fileζ 有効なファイル 変更パターン
9
提案方法の手順(1) 変更履歴データから同時変更数が一定以上のファイル変更パターンを取り出す 一定回数以上の 同時更新 ファイル変更
パターン作成** ファイル変更 パターン 構成管理 システム 同時更新 データ 作成処理* トランザクション データ まず,構成管理システムの変更履歴データから同時更新数が一定数以上の ファイル変更パターンを取り出します. 構成管理システムでは,ファイル単位で変更時間,変更者などの情報とともに 変更履歴を取り出すことができます. この履歴を同じ変更者・同じコメントで一定時間以内に変更されたものを グルーピングすることで,このようなトランザクションデータを作成します. 次にこのトランザクションデータを分析し,一定回数以上同時更新されたファイル群を 取り出します.その結果,このようなファイル変更パターンを取り出すことができます. ここでは,ファイル名を番号に置き換えて処理しています. *Thomas Zimmermann, Peter Weißgerber: ”Preprocessing CVS Data for Fine-Grained Analysis”, Proc. International Workshop on Mining Software Repositories (MSR), Edinburgh, Scotland, UK, May 2004 **Apriori Algorithm使用:R. Agrawal, R. Srikant: ”Fast algorithm for mining association rules”, Proc. 20th Very Large Data Bases Conference(VLDB), pp Morgan Kaufmann, 1994
10
提案方法の手順 (2) 変更内容から単語リストを生成する トランザクション1 トランザクション2 次に取り出されたファイル変更パターン毎に,
同時更新されたトランザクション毎・ファイル毎に 変更内容を単語分割し,単語リストを作成します. 変更内容は,各トランザクションでのファイル毎のバージョン情報を元に 直前のバージョン,1.8であれば1.7との差分というように取り出します. このとき,削除語・追加語のリストを別々に作成します. トランザクション2
11
提案方法の手順 (3) トランザクション毎/トランザクション間の単語リストの似ている度合い(類似度)を計算し,結合関係の強さ(結合度)を判定する 類似的結合関係 1トランザクション内で,同時変更ファイルに共通する内容の変更が行われる関係 連携的結合関係 異なるトランザクション間で,共通する内容の変更が行われる関係 次に,作成された追加語・削除語の単語リストを元に, トランザクション毎・トランザクション間の単語リストの似ている度合いを計算し, 結合関係の強さを判定します.この単語の似ている度合いを以降類似度, 結合関係の強さを結合度と呼びます. 結合関係としては,次の2つを取り上げます. 1つは類似的結合関係で,1つのトランザクション内で同時変更ファイルに共通する内容の変更が 行われる関係です. もう1つは連携的結合関係で,異なるトランザクション間で共通する内容の変更が 次に各結合関係について,類似度の計算方法を説明します.
12
類似的結合関係の類似度 4 = 1.00 4 まず,類似的結合関係の類似度ですが, これは同時更新ファイル群の各単語リストの最も少ない単語数,以降最小単語数と呼びますが, そのうちの全ファイルに共通する単語数の割合で測ります. 以降,これを共通単語数と呼びます. 例えば,この例では,4つのファイルのファイル変更パターンに対して, 各トランザクション毎の削除語・追加語の単語リストがこのようになっています. 各四角が1つの単語を示しています. トランザクション1の削除語において,最小単語数は4つ,共通単語数がすべてABCDで 4つなので,類似度は1,つまり100%になります. トランザクション2の追加語に関しては,最小単語数がFileβの2つになります. 一方共通単語数は,Oだけなので1つ,類似度は0.5で50%となります. 1 = 0.33 3 3 = 1.00 3 1 = 0.50 2
13
連携的結合関係の類似度 = 0.00 10 次に連携的結合関係ですが,これは2つのトランザクションの組み合わせごとに 計測します. 類似度は,ファイルの枠を取り払って,2つのトランザクションの単語リストを集計し, その小さい方の単語数,最小単語数,のうちの,各トランザクションに共通する変更された単語数 共通単語数とします. この例では,トランザクション3の削除語とトランザクション4の削除語では 少ない単語数はトランザクション4の10語になり,そのうち共通語は無いので 類似度は0になります. 追加語同士の類似度は,トランザクション3のほうが単語数が少ないので, 分母が6で共通語が5個で約0.83,83%の類似度になります. 5 = 0.83 6 = 1.00 11 5 = 0.83 6
14
提案方法の手順 (4) 計算された類似度から,有効なファイル変更パターンを精選する
類似度N%以上の組み合わせがS個以上存在するファイル変更パターンを,有効パターンとする 閾値N,Sはシステムの更新数やファイル数に基いて,決定する 最後に計算された類似度から結合度を判定し,有効なファイル変更パターンを精選します. 精選方法は,まず類似度N%の組み合わせの数をカウントし, それがS個以上存在するファイル変更パターンを有効パターンとして取り出します. 閾値NやSはシステムの更新数,ファイル数に基いて決定します.
15
計測事例 提案方法を用いて,ファイル変更パターンを精選する 精選後のファイル変更パターンから,論理的結合関係を取り出す
計測対象:3つのオープンソースシステム 計測手段 CVS(構成管理システム)からの履歴抽出:EASEプロジェクト*で開発しているEPMツールの一部機能を使用 差分抽出:CVSのdiffコマンドを使用 その他の処理は専用プログラムを作成して実施 次にこの手法を用いた計測事例をご紹介します. 現時点で実施したのは,次の作業になります. まず提案方法を用いて,ファイル変更パターンの精選を行い, 精選されたファイル変更パターンの一部の内容を手作業で確認し, 実際にいくつかの具体的な論理的結合関係を取り出しました. 計測対象は3つの比較的アクティブなオープンソースプロジェクトです. 計測手段としては,構成管理システムとしてCVSを用い, ファイル変更履歴の抽出には,文部科学省の委託プロジェクトである EASE(Empirical Approach to Software Engineering ) プロジェクトで開発した EPMツールの一部機能を用いました. 変更内容,差分の抽出にはCVSのdiffコマンドを使用し, その他の処理は専用のプログラムを作成しました. *EASE (Empirical Approach to Software Engineering) Project,
16
結果~ファイル変更パターンの精選 計測対象プロジェクトの概要 ファイル変更パターンの精選結果 類似度80%以上の 組み合わせが8個以上
これが計測結果です. 3つのプロジェクトのファイル数,及びトランザクション数はこの表のとおりで, 測定期間はこのとおりです. ファイル変更パターンの精選結果はこの下の表になります. 類似度の閾値は80%とし,80%以上の類似度の組み合わせが8個以上ある場合 そのファイル変更パターンを有効としました. 総パターン数は最小同時変更回数をクリアしたファイル変更パターンの総数で, 精選前の数です. 有効パターン数は,精選後のパターン数です. 類似的,連携的のそれぞれ別個に計測し精選しました, 最後の合計するときは,重複するパターンを取り除いています.
17
類似的結合関係例 これは,1つのファイル変更パターンに関する類似的結合関係を計測した表です.
5つのファイルからなるパターンで,10回同時変更されています. 各トランザクション毎に,追加語・削除語の共通単語数,各ファイルの変更単語数, 最小単語数分の共通単語数を示しています. このパターンの場合,変更単語数が0の2つを除く18個の組み合わせで100%の類似度であり, 有効なファイル変更パターンと判断されました. このうち,トランザクション2の変更内容を見ると 次のような変更になっています. 類似的結合関係では,この例のように類似した機能に対する共通した変更を 取り出すことができます.
18
連携的結合関係例 次に連携的結合関係ですが,このファイル変更パターンは2つのファイルからなり, 17回同時更新されています.
論文の付録にありますが,このパターンの類似的結合関係は,ほとんどありません. 連携的結合関係を見ますと,11個の組み合わせで類似度の高いことがわかりました. この表は,類似度の高い組み合わせのみの計測値を示しています. そのうち,3つ目の組み合わせのトランザクション8の変更内容とトランザクション9の変更内容は このようになります. これは,あるconst定数を定義するファイルの定義を追加・変更・削除を行う場合, ヘッダーファイルの2つの記号定数をインクリメントしなければならない, という関係を示しています. このような機構は,1トランザクションのみではその関係を抽出することができません.
19
考察 共通単語に含まれる予約語やコメント中の汎用的な単語(theやof)によって,類似度が上がってしまう
単語の重み付け,もしくは取捨選択が必要 連携的結合関係において,1つのファイルの変更・共通単語数が大きいと,他のファイルの変更に全く関連が無くても,類似度が高くなる まだ評価を実際に行っていないので,提案方法の有効性を示すことはできていませんが, 実際の計測を通していくつかの問題を把握しています. 1つは,共通単語に含まれる予約語やコメント中の汎用的な単語(theやofなど)によって, 類似度が上がってしまうことがあります. そのため,単語の重み付けや取捨選択を行う必要があると考えられます. また,連携的結合関係においては, 1つのファイルの変更・共通単語数が大きいと, 他のファイルの変更に全く関連が無くても,類似度が高くなります.
20
まとめ 構成管理システムから得られるファイルの変更履歴や変更内容から,論理的結合関係を持つファイル変更パターンを抽出する方法を提案した
提案手法を3つのオープンソースに適用し,いくつかの抽出された論理的結合関係を紹介した 本発表のまとめです. 本発表では,構成管理システムから得られるファイル変更履歴と ファイルの変更内容から,論理的結合関係を持つファイル変更パターンを 抽出する方法を提案しました. また,実際に提案方法を3つのオープンソースプロジェクトに適用し, いくつかの抽出された論理的結合関係を紹介しました.
21
今後の課題 本手法により精選されたファイル変更パターンから論理的結合関係を抽出し,提案方法を評価・改善する
変更内容の分類による結合関係の拡張 類似度計算方法の改良 具体的な閾値(最小同時変更回数や類似度など)の決定方法の確立 最後に今後の課題ですが, 本手法により精選されたファイル変更パターンから論理的結合関係を抽出し, 提案方法を評価・改善しようと考えています. 具体的には,変更内容の分類による結合関係の拡張が必要と考えています. 今回は類似的・連携的という2つの結合関係のみに着目しましたが, 異なる結合関係が存在する可能性があります. また,類似度計算方法の改良も必要と考えています. 文書内の単語リストを使った従来の類似度計算研究などを 参考にしようと思っています. また,最小同時変更回数や類似度など 具体的な閾値の決定方法の確立が必要と考えています.
22
End of Slide
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.