Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 識別子名のタグクラウドを用いた.

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 関数クローン変更管理システ.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 情報検索技術に基づく 関数クローン検出を用いた.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
大規模コーパスから獲得した 名詞の出現パターンを用いた 事態名詞の項構造解析
コードクローン履歴閲覧環境を用いたクローン評価の試み
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
TF-IDF法とLSHアルゴリズムを用いた 関数単位のコードクローン検出法
AGMアルゴリズムを用いた ギャップを含むコードクローン情報の生成
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
剽窃 他人の作品や論文を盗んで,自分のものとして発表すること. プログラムが剽窃される事例もある. Aさんのプログラム Xさんのプログラム
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
プログラム実行履歴を用いたトランザクションファンクション抽出手法
アイテムセットマイニングを利用した コードクローン分析作業の効率向上
プログラム実行時情報を用いたトランザクションファンクション抽出手法
コードクローン分析ツールGeminiを用いたコードクローン分析手順
コードクローンの分布情報を用いた特徴抽出手法の提案
ギャップを含むコードクローンの フィルタリング手法の提案
ソースコードの同時修正支援における関数クローン検出ツールの有効性調査
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
識別子の共起関係に基づく類似コード検索法の提案と 欠陥検出への適用
ソードコードの編集に基づいた コードクローンの分類とその分析システム
構文定義記述を用いた 多言語対応コードクローン検出ツールの改善
クローンセットに対する主要編集者の分析法の提案と調査
重複コードと非重複コードにおける 修正頻度の比較
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
情報検索技術に基づくベクトル表現と 深層学習を用いたコード片の類似性判定法
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
コード片のベクトル表現に基づく 大規模コードクローン集合の特徴調査
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローンに対する一貫性のない変更に起因する欠陥の検出
柔軟に変更可能な字句解析機構を持つ コードクローン検出ツールの開発
UMLモデルを対象とした リファクタリング候補検出の試み
プログラム実行履歴を用いたコードクローン検出手法
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
コードスメルの深刻度がリファクタリングの実施に与える影響の実証的研究
コードクローン編集者数に着目した開発履歴の分析
グラフマイニングアルゴリズムを用いた ギャップを含むクローン抽出手法の提案
多様なプログラミング言語に対応可能な コードクローン検出ツール CCFinderSW
Geminiを用いた効果的なコードクローン分析方法
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
コードクローンの分布情報を用いた特徴抽出手法の提案
ソフトウェアプロダクト集合に対する 派生関係木の構築
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻 井上研究室
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
自然言語処理2015 Natural Language Processing 2015
コードクローン間の依存関係に基づく リファクタリング支援手法の提案と実現
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
容易に使用可能な grep風コードクローン検索ツール
ソフトウェア理解支援を目的とした 辞書の作成法
コードクローン解析に基づく デザインパターン適用候補の検出手法
Geminiを用いた効果的なコードクローン分析方法
識別子の読解を目的とした名詞辞書の作成方法の一試案
プログラム依存グラフを用いた ソースコードのパターン違反検出法
Presentation transcript:

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 識別子名のタグクラウドを用いた コードクローン理解支援ツールの開発 ○ 佐野 真夢 1, 崔 恩瀞 1, 山中 裕樹 1, 吉田 則裕 2, 井上 克郎 1 1 大阪大学 2 奈良先端科学技術大学院大学(現:名古屋大学)

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University コードクローン 同一または類似した部分を持つコード片のこ と – ソースコードのコピーアンドペーストなどによ り生じる ソフトウェアの保守コストを大きくする要因 –1 箇所にバグがあれば, 他のクローンにもバグが ある可能性がある コードクローン クローンセット 2 クローンペ ア

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University コードクローン検出ツール CCFinder [1] – 字句解析ベースのコードクローン検出ツー ル 2 つのトークン列が一致する場合, それらをク ローンとして検出する – 識別子名が異なるクローンも検出できる – 大規模ソフトウェアに対しても実用的な時 間で検出可能 – 様々なソフトウェアに対して有用性が確認 されている [2] 3 [1] Kamiya, et al., CCFinder: a multilinguistic token-based code clone detection system for large scale source code, IEEE Trans. Sofw. Eng., [2] Yoshida, et al., An Experience Report on Analyzing Industrial Software Systems Using Code Clone Detection Techniques, Proc. of ASPEC 2012, 2012

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University クローン散布図 コードクローンの可視 化手法としてクローン 散布図がある 水平・垂直方向にソー スコード中のトークン を出現順に配置 – 原点は左上隅 水平・垂直方向のトー クンが等しければ点を 描く – 常に対角線が引かれる – クローンは線分として出 現 – 対角線に対して線対称 abcabcadec a●●● b●● c●●● a●●● b●● c●●● a●●● d● e● c●●● a,b,c,... : トークン ● : トークンが等しい 4 コードクロー ン

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 散布図を用いたクローン分析の例 ( Gemini [3] の場合) 5 [3] 植田ら, 開発保守支援を目指したコードクローン分析環境, 電子情報通信学会論文誌, 実際のコードを読むまで, クローンとなって いる 処理の内容は把握できない 実際のコードを読むまで, クローンとなって いる 処理の内容は把握できない

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 研究動機 クローン散布図は, 識別子名の情報を提示 しない ソフトウェア開発者はプログラムを読む 際, 識別子名の意味からプログラム要素の 役割を推測する [4][5] 識別子名は, コードクローンを 理解するために必要である 識別子名は, コードクローンを 理解するために必要である 6 [4] von Mayrhauser, et al., Identification of Dynamic Comprehension Processes During Large Scale Maintenance, IEEE Trans. Softw. Eng., [5] N. Pennington, Empirical studies of programmers: 2nd workshop, Ablex Publishing Corp., 1987.

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 研究概要 目的 – コードクローンの処理内容に対する直観的な理 解を支援する 提案手法 – ソースコード中に出現する識別子名を抽出し, タ グクラウドとして可視化する – ディレクトリ単位でタグクラウドを生成する 多くの場合, 1 つの機能は 1 ディレクトリ内に収まる 大きな単位では特徴的な識別子名が膨大な数になり うる 7

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University タグクラウド 文書中のキーワードに対する視覚的表現 – 小さな領域に多くのキーワードを表示できる – 重要なキーワードが直観的に理解できる 自然文のタグクラウドの例 タグクラウド生成 Web サービス Wordle ( を利用 8

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 可視化手順 ソースコード集合 コードクローンの情報 識別子名の情報 JarFile getResource InputStream... Step1. コードクローンの検 出 Step1. コードクローンの検 出 JarFile getResource InputStream 識別子名のタグクラウド Step3. タグクラウドの生 成 Step3. タグクラウドの生 成 Step2. 識別子名の抽出 Step2. 識別子名の抽出 directory Adirectory B 9

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Step1: コードクローンの検出 分析するソースコードを含むソースコー ド集合から, コードクローンを検出する –CCFinder [1] を利用する – 分析するディレクトリ間にまたがるコードク ローンのみを抽出 ソースコード集合 コードクローンの情 報 directory Adirectory B コードクローン の検出 10 [1] Kamiya, et al., CCFinder: A multilinguistic token-based code clone detection system for large scale source code. IEEE Trans. Softw. Eng., 2002.

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Step2: 識別子名の抽出 ソースコード集合中に出現する識別子名を 抽出 重要度の低い識別子名は除去する – 長さが 2 文字以下の識別子名 – 多くのファイルに出現する識別子名 ソースコード集合 識別子名 JarFile a getResource InputStream String... 全識別子名リスト 識別子名 JarFile getResource InputStream... 識別子名リスト 重要度の低い 識別子名の 除去 識別子名の 抽出 a String 11

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Step3: タグクラウドの生成 識別子名のタグクラウドを生成する 全ての識別子名を表示するのは非現実的 – 出現回数の多い識別子名を優先的に表示 識別子名 JarFile getResource InputStream... 識別子名リスト コードクローンの情報 JarFile getResource InputStream 識別子名のタグクラウド Step3-1. キーワードの 表示サイズの決定 Step3-1. キーワードの 表示サイズの決定 directory Adirectory B 12 Step3-2. キーワードの色の決 定 Step3-2. キーワードの色の決 定

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Step3-1: キーワードの表示サイズ の決定 TF-IDF 法 [6] を利用する – 文書中の単語に関する重み付け手法 –TF 値 ( 出現頻度 ) と IDF 値 ( 非一般度 ) の積で表され る 13 [6] 徳永健伸, 情報検索と言語処理, 東京大学出版会, 1999.

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Step3-2: キーワードの色の決定 コードクローンに含まれる識別子名に対 して着色を行う – 識別子名がコードクローン中に含まれている か否かを判別できるように色分けする 識別子名 2 ディレクトリ間 の クローンに含まれ る JarFiletrue getResourcefalse InputStreamfalse... 識別子名リスト JarFile getResource InputStream 識別子名のタグクラウド 14

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 提案ツールの概要 クローン散布図表示部 タグクラウド表示部 (WordCram [8] を利用 ) ディレクトリ対を 選択 識別子名を選択 選択識別子名を含む ソースコード表示部 15 [8] WordCram.org,

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 利用例:クローン散布図表示部 ディレクトリごとのク ローン密度を示している –Live Scatterplot [7] を参考 密度の高い場所に注目 クローンの密 度 低 高 16 Apache Ant [9] ( ビルドツール ) を対象とした例 [7] Cordy, J. R., Live Scatterplots, Proc. of IWSC 2011, [9] Apache Ant,

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 利用例:タグクラウド表示部 クローンとなっている処理の傾向を把握で きる 特徴的な識別子名を 見ることができる 特徴的な識別子名を 見ることができる 17

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 利用例:識別子名を含む ソースコード表示部 外部ツールを起動する コマンドを生成する処理 が クローンになっている 外部ツールを起動する コマンドを生成する処理 が クローンになっている 選択した識別子 名 上と同じクローン セットに属する他の クローン 選択した識別子名 を含むクローン一 覧 選択した識別子名 を含むクローン一 覧 18 選択した識別子 名 を含むクローン 選択した識別子 名 を含むクローン 上と同じクローンセッ トに属する他のクロー ン一覧

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 評価実験 タグクラウドとして表示する識別子名が, クローンの理解に有益であるか調査する 実験対象: Apache Ant –Java のビルドツールの 1 つ – クローン密度の高い 10 組のディレクトリ対を 実験対象に選択 19

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験手順 1. クローン分析の専門家に, ディレクトリ対 におけるクローンの説明文を書いてもらう – どのような処理がクローンとなっているか – 例: create argument of command and show result. 2. 説明文のキーワードを抽出 – 名詞・動詞のみを対象とする be 動詞, 代名詞を除く 3. 適合率・再現率を計算する 20

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験 : 評価尺度 タグクラウドの識別子名は, クローンに含まれるも ののみを対象とする – 説明文がクローンのみを対象とするため 一致しないが, 推測可能な場合も数に含める – 例 : cmd と command, msg と message 21

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験 : 結果 適合率・再現率ともに平均値は高い – 有益な識別子名を表示できており, 不要な識 別子名は少ない 適合率平均 (%) 再現率平均 (%)

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University まとめ 識別子名のタグクラウドを利用した, コード クローンの理解支援手法を提案 提案手法を実装したツールを開発 提案手法が抽出する識別子名の有用性を確 認 23

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 今後の課題 様々な人が書いた説明文を用いた評価実 験 他のソースコードや, クローン検出ツール への適用 他のクローン可視化ツールとの比較実験 企業の開発現場への適用 24

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 25

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ツールの利用目的 例 : 重複するディレクトリの集約 シナリオ – 類似したディレクトリを集約したい – クローン密度の高いディレクトリを調査 – タグクラウドを見て, 類似したものがあれば 集約を検討 26

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ツールの実行時間 Apache Ant の場合 – 規模 : 858 ファイル –CPU: 2.67GHz 実行時間 – 散布図表示 : 約 5 秒 – タグクラウド表示 : 約 10 秒 27

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University タグクラウドを使う理由 クローンの概要を確認したい場合 – クローンを 1 つずつ確認すると時間がかかる プログラマは識別子名の意味からプログ ラム要素の役割を推測する – タグクラウドが, 自然文と同じような働きを すると考えられる 28

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University RNR コードクローンの非繰り返し度を表すメ トリクス RNR の低いクローンは繰り返し文が多く, 重要度が低い – 連続した printf 文, import 文 –switch 文の case エントリ 本手法では, RNR によるコードクローン のフィルタリングを行っている 29

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 実験 1: 結果 対象ディレクトリ適合率 (%) 再現率 (%) ant/taskdefs/optional/clearcase ant/taskdefs/optional/javah ant/taskdefs/optional/sos ant/types/spi ant/types/optional/image ant/taskdefs/optional/depend/ constantpool ant/taskdefs/optional/depend/ constantpool ant/util/regexp ant/taskdefs/launcher ant/taskdefs/optional/ccm ant/types/resolver 平均

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 評価方法の例 説明文 create argument of command and show result. 説明文のキーワー ド create argument command show result タグクラウドの識別子 名 cmd msg result createArgument クローンに含まれ る 識別子名のみ クローンに含まれ る 識別子名のみ キーワードが 含まれていれば一 致 キーワードが 含まれていれば一 致 一致 推測可能 31

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University Live Scatterplot 本ツールのクローン散布図は, Live Scatterplot [7] を参考にしている [7] Cordy, J. R., Live Scatterplots, Proc. of IWSC 2011, 出典 :[4] Figure 1: Live Scatterplot of block clones in JHotDraw 特徴 – ディレクトリ単位でク ローンの密度を表示 – 散布図を高速に生成可能 32