研究概要 |
本年度は,既存ソフトウェアから部品間のデータ授受関係を抽出する手法の構築を行った.手法の構築にあたっては,従来の正確さを重視したデータフロー解析手法から,命令の実行順序や制御構造の情報など,本研究の目的には必要がない情報を取り除いて軽量化する方式を採用した.解析手法のアルゴリズムそのものはプログラミング言語に依存するものではないが,オブジェクト指向プログラミング言語として広く普及しているJavaを適用対象として選択し,既存ソフトウェアのソースコードを読み込んでデータ授受関係の一覧を出力するツールを開発した.本研究で開発したツールは,既存手法では解析に数時間を要した10万~50万行程度の規模のソフトウェアに対して,高々10分程度で解析が完了することを確認しており,従来手法を単純に適用した場合に比べ,大規模なソフトウェアを対象とした解析が可能になった. 既存ソフトウェアにおけるデータ授受関係を調べるために,39種類のオープンソースソフトウェアに対してツールの適用を行い,ソフトウェア内部に頻出するデータ授受関係の調査を行った.その結果,頻出するデータ授受関係から,ソフトウェア部品の典型的な使用方法が読み取れることを確認した.また,ソフトウェア部品がプログラムの実行中にどのように使用されるか,プログラムの実行時情報に基づいてさらに詳しい分析を実施したところ,欠陥検出だけでなくソフトウェアの動作理解にも,データ授受関係の情報が有用であることが判明した.これらの結果に基づき,来年度は,データの授受関係に基づいて,欠陥の可能性を開発者に自動的に提示する開発環境を試作する予定である.
|