Transcript J - qwik.jp

Detecting Similar Software
Applications
Collin McMillan, Mark Grechanik, and Denys Poshyvanyk
紹介:
大阪大学大学院情報科学研究科
コンピュータサイエンス専攻 楠本研究室
堀田 圭佑
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
研究概要
• “似ている”ソフトウェアを見つける
– 例:過去のプロジェクトの中から,新規プロジェクトと
似ているプロジェクトを見つける
• 再利用により,開発に要する時間や資源を削減可能
• 過去の類似プロジェクトによって得た知識,経験が活用でき
る
• 貢献
– API呼び出しに着目した,Javaプログラム間の類似度
算出手法を提案
– それを実装したツール,CLANを開発
– 既存ツール MUDABlue よりも高精度で似ているソフ
トウェアを特定できることを確認
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
提案手法の概要
• アプローチ
既存研究
ソースコード中のキーワード(変数名など)に基づく
テキストベースの類似度算出
本研究
呼び出されているAPIに着目した類似度算出
• キーアイデア
– 2つのソフトウェアが同じAPI呼び出しを含むならば,
そうでない場合よりも類似度が高い
– 多くのソフトウェアから呼ばれるAPIは重要度が低く,
少数のソフトウェアから呼ばれるAPIは重要度が高い
– 2つのソフトウェアが同じAPI呼び出しパターンを含む
ならば,そうでない場合よりも類似度が高い
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
評価方法
• 33人の被験者を使った実験
• 比較対象
– MUDABlue,Combined(MUDABlue & CLAN)
• 手順
– ある1つのソフトウェアを入力として,CLAN,
MUDABlue,Combined のそれぞれを使って類似
ソフトウェアを検出させる
– そのうち上位10のソフトウェアを対象として選択
– 被験者が10のソフトウェアそれぞれについて,入
力となったソフトウェアとの類似度を評価
• 1~4の4段階 (4が一番類似度が高い)
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
評価実験の結果
比較する手法
帰無仮説 『差がない』 が有意水準5%で棄却されたかどうか
Reject : 棄却 = 統計的有意差あり
Accept : 棄却されず = 統計的有意差なし
評価指標
C: Confidence Level
P: Precision
Confidence Level が3以上のソフトウェア数
全ソフトウェア数(今回は10)
MUDABlue よりも
高い Confidence Level
高い精度
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Content Classification of
Development Emails
Alberto Bacchelli, Tommaso Dal Sasso, Marco D’Ambros,
Michele Lanza
University of Lugano
紹介:大阪大学 大学院情報科学研究科 井垣 宏
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Motivation
JUNK Figure 1 • ML archivesにはシステ
ムを理解するために必
自然言語
要な履歴や設計理念等
の重要な情報が埋まっ
ている
Stack Trace
• 一つのメールの中に複
数種類のコンテンツが含
JUNK
まれることを想定して解
析しなければならない
ソースコード
Patch
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Mailpeekを用いたML Archiveの分析
• ArgoUML, Freenet等
を対象として著者ら
の開発したツールに
よってmailの分析を
行った
Figure 2
– コンテンツ分類の
粒度確認
->ほぼ行単位でOK
– 分類項目の
妥当性確認
->現状の項目で
分類できなかった
部分は全体の0.2%
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
行単位での分類結果(手作業)
• どんなプロジェクトでも自然言語が一番多い
– JUNKも同様
• それ以外の項目はプロジェクトによって異なる
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
実験結果
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Classification Approach
• Term Based Classification
– Words, Punctuation, Bi-grams, Context
• Parsing Based Classification
– Stack Trace, Patch, Source Code, Junk
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
実験結果
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Conclusion
• 機械学習手法とパーサーを組み合わせた行単
位でのメール分類手法を提案した
– NL text, source code, stack traces, code patches,
and junk
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Active Refinement of Clone
Anomaly Reports
Lucia, David Lo, Lingxiao Jiang, and Aditya Budi
School of Information Systems Singapore Management
University
紹介:大阪大学 大学院情報科学研究科 井垣 宏
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
研究背景
• ソフトウェア中の互いに類似するコード片
= コードクローン
• コードクローンを利用した重要なアプリケーショ
ンの一つにバグ検出がある
– clone-based anomaly detection
• コードクローン間のinconsistenciesを如何に検出するか
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Inconsistency among clones
Figure 1
If(dentry)
anomaly
• クローンとその周辺コードの一貫性やクローン間の
一貫性を調査することで,”anomaly”を検知する
[12] L. Jiang, Z. Su, and E. Chiu, “Context-based
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information
Science
Technology, Osaka
University.
http://sdl.ist.osaka-u.ac.jp/
detection
ofand
clone-related
bugs,”
in ESEC/SIGSOFT
FSE, 2007.
Inconsistency among clones
Figure 2
• クローンとその周辺コードの一貫性やクローン間の
一貫性を調査することで,”anomaly”を検知する
• false positives(問題のないクローンが問題があると
指摘される)が非常に多い
– [12]の研究では,57/800
[12] L. Jiang, Z. Su, and E. Chiu, “Context-based
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information
Science
Technology, Osaka
University.
http://sdl.ist.osaka-u.ac.jp/
detection
ofand
clone-related
bugs,”
in ESEC/SIGSOFT
FSE, 2007.
Active Refinement of Clone Anomaly Reports
• 既存のClone based Anomaly Detection Toolの結
果をユーザのフィードバックに基いて改善する
– True Positiveを上位に,False Positiveを下位に移動
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Active Refinement of Clone Anomaly Reports
• 既存のClone based Anomaly Detection Toolの
結果をユーザのフィードバックに基いて改善する
– True Positiveを上位に,False Positiveを下位に移動
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
評価実験
• Linux Kernel: 11%改善
– 変数名等の識別子の名前変更に関するinconsistencyが多かった
– 提案手法における分類手法が構文木に基づくものであるため,対応
できなかった
• Eclipse: 87%改善
• ArgoUML:86%改善
Table II
ただし,True Positiveであると判定されたものが本当にバグに
関連するものであるかは著者らによる判断
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
Identifying Linux Bug Fixing Patches
Yuan Tian, Julia Lawall, and David Lo
Singapore Management University, Singapore
INRIA/LIP6-Regal, France
紹介:大阪大学 大学院情報科学研究科 肥後 芳樹
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
研究背景
• ソフトウェアの開発には2つの重要な課題がある
– 新しい機能の追加
– 安定性
• しかし,これらを同時に実現するのは難しい.Linuxで
は,currentとlongterm supportの2つのバージョン
– 前者にはさまざまな変更
– 後者はbug fix のみ
• patchの多くはcurrentに対して作られる.しかし bug
fix patchはlongterm supportに対しても適用すべき
– Current用のpatchの中からbug fix patchを自動的に見つけ
たい
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
提案手法(1/2)
1. Data Acquisition
– Gitのリポジトリから各patchのログ情報とコード情
報を(ファイル,削除コード,追加コード)取得
2. Feature Extraction
– (1) コミットログを構成している重要そうなwordsの
集合を抽出する(stop-wordの除去,stemming).
また各wordsの出現回数をカウント
– (2) コード情報から,変更された字句のみを特定.
そして変更されたのがプログラムのどの部分かを
特定(loop?演算子?if文?).変更回数もカウント
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
提案手法(2/2)
3. Model Learning
– LPUとSVMを組み合わせた機械学習
– 既知のbug fix patches とbuf fix かどうかを特定し
たいpatchesが入力
– LPUを使って調査対象patchesをソート.下位のk
個がbug fix ではないと判断される
– bug fix ではないと判断されたpatchesを用いて
SVMを利用
4. Bug Fix Identification
– SVMの適用結果より bug fix patchesがわかる
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/
実験結果
論文の表4
論文の表5
F-measureの計算式
KUSUMOTO LABORATORY - Software Design Laboratory
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University. http://sdl.ist.osaka-u.ac.jp/