プログラム依存グラフとは
プログラムの依存関係を表すグラフを、プログラム依存グラフ、あるいはPDG(Program Dependence Graph)と呼びます。
依存関係は2つの文などの関係を表すもので、主に2種類の依存関係が存在します。
- 制御依存:ある文の実行の有無が、他の文に影響される
- データ依存:ある文で使用する変数の値が、他の文で設定される
PDGは、これらの依存関係を辺とし、依存関係の対象となる文などを頂点としたグラフのことです。 PDGを用いることで、データの流れなどプログラムの振る舞いを表現することができます。 以下では、このPDGを用いた研究を紹介します。
プログラム依存グラフを利用したメソッド内構造の改善手法
PDGを用いてリファクタリングを行う手法について研究しています。 リファクタリングとは、外部の振る舞いを変えずにソースコードの内部構造を整理することです。開発や保守で重要ですが、手動では困難なためツールでサポートすることが大切です。
本研究ではPDGからリファクタリングの候補を特定する手法を提案しています。 結果をグラフィカルに示すツールも開発しており、リファクタリングの候補を視覚的に確認することが可能です。
新規開発者のソフトウェア理解を目的としたプログラム依存グラフ可視化手法
他人が書いたソースコードを理解するのは容易ではありませんが、PDGを使えば依存関係や構造を理解しやすくなるかもしれません。
本研究ではPDGの可視化手法を提案し、統合開発環境の一つであるEclipseのプラグインとして実装しました。実装したプラグインはJavaプログラムのメソッドを選択し、そのメソッドに対するPDGを、構造を理解しやすい配置にして出力することを可能にしています.