Skip to main content
QUICK REVIEW

[論文レビュー] Convolutional Neural Networks over Control Flow Graphs for Software Defect Prediction

Anh Viet Phan, Le-Minh Nguyen|arXiv (Cornell University)|Feb 14, 2018
Software Engineering Research参考文献 15被引用数 28
ひとこと要約

本論文では、コンパイルされたアセンブリコードから制御フローダイアグラム(CFGs)を構築し、マルチビュー・マルチレイヤー有向グラフ畳み込みニューラルネットワーク(DGCNNs)を適用することで、意味的特徴を自動で学習する、新たなディープラーニング手法をソフトウェア欠陻予測に提案する。この手法は、従来の特徴ベースおよびツリー基盤の手法を著しく上回り、実世界のデータセットにおいて正解度が最大15.49%向上し、AUCが最大12.39%向上する。

ABSTRACT

Existing defects in software components is unavoidable and leads to not only a waste of time and money but also many serious consequences. To build predictive models, previous studies focus on manually extracting features or using tree representations of programs, and exploiting different machine learning algorithms. However, the performance of the models is not high since the existing features and tree structures often fail to capture the semantics of programs. To explore deeply programs' semantics, this paper proposes to leverage precise graphs representing program execution flows, and deep neural networks for automatically learning defect features. Firstly, control flow graphs are constructed from the assembly instructions obtained by compiling source code; we thereafter apply multi-view multi-layer directed graph-based convolutional neural networks (DGCNNs) to learn semantic features. The experiments on four real-world datasets show that our method significantly outperforms the baselines including several other deep learning approaches.

研究の動機と目的

  • 手動で設計されたメトリクスやASTに依存する既存のソフトウェア欠陻予測手法の限界を解決すること。これらはしばしば深いプログラム意味を捉えられていない。
  • アセンブリコードから導出される制御フローダイアグラム(CFGs)が、ASTや従来のメトリクスよりも、プログラム実行意味をよりよく表現できるかどうかを検討すること。
  • グラフベースのニューラルネットワークを用いて、CFGから欠陻関連特徴を自動で学習するエンドツーエンドのディープラーニングモデルを開発すること。
  • 提案手法を実世界のデータセットで評価し、最先端の特徴ベースおよびツリー基盤の手法と性能を比較すること。

提案手法

  • ソースコードをアセンブリコードにコンパイルし、そのアセンブリコードをもとに、プログラムのステップバイステップ実行フローを正確に表現する制御フローダイアグラム(CFGs)を構築する。
  • マルチビュー・マルチレイヤー有向グラフ畳み込みニューラルネットワーク(DGCNNs)をCFGに適用し、グラフ構造データから階層的な意味的特徴を学習する。
  • DGCNNはCFG内の有向でラベル付きのノードおよびエッジを処理し、グラフ畳み込み演算を通じて欠陻に関連する構造的・行動的パターンを捉える。
  • モデルはエンドツーエンドで訓練され、学習されたCFG表現に基づいて、ソースコードを欠陻あり/なしに分類する。
  • 本手法は、アセンブリレベルのCFGが低レベルの実行意味を保持しており、ASTと比較して構文的再配置に対して感受性が低いという事実を活用している。
  • 性能評価は、4つの実世界のソフトウェア欠陻予測データセットを用い、標準指標(正答率、AUC、F1スコア)を用いて実施する。

実験結果

リサーチクエスチョン

  • RQ1アセンブリコードから導出されるCFGが、従来のソフトウェアメトリクスやASTと比較して、欠陻予測のためのプログラム意味をよりよく表現できるか?
  • RQ2DGCNNが、ツリー構造のASTと比較して、グラフ構造のCFGから欠陻関連特徴をどれほど効果的に学習できるか?
  • RQ3提案手法は、実世界のデータセットにおいて、既存の特徴ベースおよびツリー基盤のディープラーニング手法と比較して、どのように性能を発揮するか?
  • RQ4構造的再配置、ステートメント置換、ライブラリ使用などのコード変種は、CFGベースのモデルとツリー基盤のモデルの性能にどのような影響を与えるか?

主な発見

  • 提案されたDGCNNベースのCFG手法は、4つの実世界データセットにおいて、最も優れた特徴ベースベースラインと比較して、正答率で最大15.49%の向上を達成した。
  • ツリー基盤のディープラーニングアプローチと比較して、AUCが最大12.39%向上し、優れた識別能力を示した。
  • SibStCNN や TBCNN などのツリー基盤モデルは、ASTサイズが大きくなるにつれて性能が低下し、特に SUMTRIAN データセットのような複雑なプログラムでは顕著に劣化した。
  • CFGベースのアプローチは、ステートメント再配置や変数宣言の配置変更といった構文的変化に対してよりロバストであり、これらはAST構造を大きく変えるが、アセンブリレベルのCFGには最小限の影響しか与えない。
  • 外部ライブラリ関数(例:__gcd)を含むコードでは、ソースコードが利用できないためCFGに含まれないため、モデルが誤分類を起こしやすい。
  • ライブラリ呼び出しの制限を除き、全評価指標において、CFG-DGCNNモデルの全体的な性能は、特徴ベースおよびツリー基盤のベースラインを一貫して上回った。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。