190 likes | 257 Views
コンセプトを利用 した Traceability リンクの 確立 海尻海谷研究室 M2 田中宏和. 目次. 背景 目的 検討手法 実験 結果 考察 まとめ. 背景. 近年、ソフトウェアの利用が一般的となっている ソフトウェアの開発が大規模化かつ複雑化している それに 基づき、ソフトウェアの仕様変更や機能拡張が頻繁に行われる プロジェクトの内容、関係性を 明示的に見る手段 が必要. 目的. 大きな開発プロジェクトは開発過程の全てを把握するのが 難しい. → 開発過程で作成される成果物の整合性や一貫性を保ちつつ適切に変更を行うことは重要 .
E N D
コンセプトを利用した Traceabilityリンクの確立 海尻海谷研究室 M2 田中宏和
目次 背景 目的 検討手法 実験結果 考察 まとめ
背景 近年、ソフトウェアの利用が一般的となっている ソフトウェアの開発が大規模化かつ複雑化している それに基づき、ソフトウェアの仕様変更や機能拡張が頻繁に行われる プロジェクトの内容、関係性を明示的に見る手段が必要
目的 大きな開発プロジェクトは開発過程の全てを把握するのが難しい. →開発過程で作成される成果物の整合性や一貫性を保ちつつ適切に変更を行うことは重要. Traceability Linkと呼ばれる、各開発段階の成果物の関連づけをする技術がある. 図1Traceability Link例 上流工程(仕様書)と下流工程(ソースコード)各々は必ず関連性を持つ. 関連性を求めることで、変更すべき点をすぐ見つけられる.
検討内容 • 既存手法との比較 表 1Traceability確立の為の手法の特徴
研究手法 図2 手法の提案 改善前 (既存技術) 改善後 (新手法) よりわかりやすい、意味に基づく関連付けをしたい
研究手法 上記の順序で手順を進めていく - コンセプト : ソフトウェア成果物の概要や機能 - FCA : Formal Concept analysis(形式概念分析) 各オブジェクトがどの様な属性を持つかを定義する手法
研究手法 • 前処理 前処理において、Linkを結ぶ単位を決定する. -ドキュメント : 章と節 -ソースコード : 各ファイル単位 • 単語ベースでの前処理 -①ドキュメント及びソースコードの単語抽出 -②一般的なstop wordと原型化(Doctermというソフトを使用) -③共通単語のみを抽出 -④N割以上の両ファイル間で出現する単語を省く -⑤マニュアルでのstop wordと思われる単語を省く
研究手法 ①コンセプトの取り出し方(Concept Analysis) りんご ソフトウェア(FcaStone)使用 属性 オブジェクト なし 包含関係:りんご⊃なし⊃スイカ りんご⊃ぶどう コンセプト例 {りんご ぶどう}:{赤色 木になる} スイカ ぶどう 属性:章名(上流)、ファイル名(下流) オブジェクト:単語(上流)、関数(下流) 単語全てがコンセプトとなりえる 全ての包含関係を割り出す コンセプトをどれ程の個数を使うかにより精度、細かさが変化する
研究手法 ②類似性分析 ドキュメントのコンセプトとソースコードのコンセプトのコサイン類似度の比較 ドキュメントのコンセプト (単語) (ファイルリスト) ソースコードのコンセプト (単語) (ファイルリスト) 一意の値(α) ファイルリストに挿入 式1 コサイン類似度の計算式 上流(仕様書)のコンセプト 0<α<1 これが 6200×1900個 作成される 全て加算する 下流(ソース) のコンセプト
研究手法 ③コンセプト間の Linkの接続 最も値が高い物をTraceability Linkを繋げることが出来ると定義する 関係性 走査 関連性がありそうだ Linkを繋げよう 自動で行われる 1章 Class1.java 目的:Linkの意味づけ コンセプトの場所を特定出来る 精度の向上 1節Scan 関数:scaning 11
オープンソースでありC言語で作成されたFlexを対象に実験したオープンソースでありC言語で作成されたFlexを対象に実験した -スキャナ(テキスト内の字句パターンを認識するプログラム)を生成するためのツール ドキュメント分割数 : 28個 ソース分割数 : 20個 ドキュメントの単語数 : 100000個 -ドキュメントの異なった単語数 : 5500個 ソースコードの単語数 : 53000個 -ソースコードの異なった単語数 : 3200個 実験対象
実験結果 • 前処理適応後のデータ -使用した単語数 : 639個 -ドキュメントのファイル数 : 28個 -ソースコードのファイル数 : 20個 • FCAで求めたコンセプト結果
実験結果 • コンセプト結果 実験に用いたソースコードのコンセプト例 103 {arraicreatdeclar def don flex function integ max num}:{dfa.cflexdef.hgen.cinitscan.cmain.cparse.cscan.cskel.csym.ctbcmp.c}; このままでは比較が出来ないので表記を0/1に変換する 103 {0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0, 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0}; 最初の数値はコンセプトの順番{}の前半が単語、後半のがファイル名を表している
実験結果 ソースコードのファイル ドキュメントのファイル 表1 新手法の結果 6200×1900個分加算
実験結果 ソースコードのファイル ドキュメントのファイル 表1 前手法の結果
実験結果 正しいLinkを各要素毎に一つのTraceability Linkを持つと考えた 正解数 ・本手法 ソースコード 3/20 ドキュメント 4/28 ・前手法 ソースコード4/20 ドキュメント 1/28 ランダムでサンプルでの複数のLink候補での評価 参考項目- 2章(scan.cversion.c)5章(main.cflexlexe.cscan.cyylex.clibmain.c) ccl.c(1章 16章 17章 28章)gen.c(12章) 2章 0/3 5章 2/5 ccl.c 1/4 gen.c 0/1 • Concept Indexを参照 数値の上位5個を候補
考察 Traceabilty Link確立の良い結果が出なかった 出力結果: 前手法を内包している結果で出力している 様々な要因を含んだLinkを作成することは出来る 要因:単語の出現率、複数での単語同士の関係性 精度が高くなかった要因 この計算手法では相互の出現数が多い単語を持つファイルが関連性への影響が大きすぎる -① 加算方式の問題 -② 前処理での必要な単語の取捨選択 -③ コンセプトの数が大きすぎる 本手法 既存のIR手法
まとめ • これからやっていくこと -重要な単語の発見手法の確立 -ファイル分割をバイト毎に決めて適応可能できるかの検証 -コンセプト(概念、機能)の数を減らす 精度の高いTraceability Linkを作成する為には、コンセプト間の比較中や後に人の手でLinkを繋ぐ必要がある -重要な概念、機能は数がそう多いはずがない そこに具体的なラベリング(意味づけ)が出来れば精度や概念や機能が具体的に容易に把握出来るようにしたい