研究課題/領域番号 |
23680001
|
研究機関 | 大阪大学 |
研究代表者 |
石尾 隆 大阪大学, 情報科学研究科, 助教 (60452413)
|
キーワード | ソフトウェア工学 / データフロー解析 |
研究概要 |
本年度は,ソフトウェアの各部品に対して,その入力となるデータを明らかにするデータフロー解析手法を構築し,ソフトウェア部品の振る舞いを特徴づける手法を構築した. 1つ目の成果として,プログラミング言語の1つであるJava を対象に,プログラムの実行履歴を収集するツールを試作し,収集したプログラムの実行履歴の中から,プログラム中で使用されたソフトウェア部品と,各ソフトウェア部品が使用したデータを関連付ける技術を構築した.プログラムの実行が可能であるソフトウェアに適用対象は限られるが,ある1つの部品を動作させるために実際に使用された入力データを列挙することで,ソフトウェア部品の動作に必要な入力データの項目を自動的に特定できるようにした.この制限は,本研究が想定しているソフトウェアの出荷段階および出荷後の欠陥検査という環境では十分に許容することができる. 2つ目の成果として,ソフトウェア部品を分析するための軽量なデータフロー解析技術の試作が挙げられる.データフロー解析は,プログラム全体の制御の流れを考慮する必要があり,大規模ソフトウェアに対して正確な実行を行うことは現実的ではなかったが,Java プログラムにおける典型的なプログラミング方式が適用されたソフトウェアに対しては,制御の流れを考慮せずとも,また,従来計算量が多いと言われていた解析アルゴリズムを適用せずとも,正確さをそれほど損なわずにデータフローの近似解を得られることを示した.この近似解は,開発者がプログラムのデータフローを理解するにあたっては十分な正確さを達成していることを,被験者実験によって確認した.これらの成果によって,ソフトウェア部品の動作におけるデータの流れを計算する技術を構築したといえる.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
ソフトウェア部品の特性の1つとして,データフローに関する情報を取り扱えるようになったことから,ソフトウェア部品の個々の特性の収集に関しては必要な情報を得られるようになったと考える.従来は,ソフトウェア部品がシステムとどのように対話しているかを理解するにあたって重要な情報源の1つがデータフローであると指摘されており,その情報を効果的に抽出できる技術を構築できたことは今後の研究の進展を見込める成果である.一方で,データフロー解析手法の現在の成果は,データの流れるプログラムの命令の列を開発者に見せることはできるが,データ項目の一覧とはなっていない.ソフトウェア部品の振る舞いの特性として,データ項目を取り出すには手法の改良が必要であると考えている. 次年度の計画実施で必要となると見込んでいる要素技術に関しては,情報収集が十分に完了した段階にある.まず,本研究計画にきわめて適していると思われるエイリアス解析と呼ばれるアルゴリズムが2011年7月に発表され,その試作,試験には時間を要したが,大規模プログラムであっても十分な速度で動作することを確認することができた.また,ソフトウェア部品の類似性を判定する方法についても,ソースコードの類似性に基づく簡便なアルゴリズムの1つが2011年5月に発表されており,その発表者から手法の詳しい特性について情報を収集し,実装上の注意点についても詳しいアドバイスを得ることができた.実際に使用するには,計算のコストを低く抑える工夫が必要にはなるが,類似したソースコードを検出することが可能であり,類似したソフトウェア部品をグループ化するために有望であることを確認している.
|
今後の研究の推進方策 |
次年度は,類似したソフトウェア部品を実際にグループ化し,グループ単位で開発者がそれらの部品を閲覧・管理することを可能とする技術の構築を行うことを計画している.データの流れやソースコードの類似度から「互いに類似した」と判断されたソフトウェア部品がグループとして与えられたとき,それらを開発者に対して提示する手法の試作,実験を行う.多数のソフトウェア部品が1つのグループに含まれることを踏まえて,部品の「代表」となるものを1つ選び,その部品に強く類似しているものから順に,閲覧順序を表現した文書形式で開発者に提示する.ある部品を閲覧してから,次に閲覧される予定の部品については,直前の部品との差分となるような特徴のみを示すことで,開発者の負担を軽減することを目指す. ソフトウェア部品に対して収集したデータフロー情報は,一般に複雑なデータの流れの情報となっている.ソフトウェア部品の特徴としての入力データを簡潔に開発者に示すには,ソフトウェアのデータ項目を集計,要約する技術が必要となる.短時間の解析で,注目したソフトウェア部品に関する情報のみを効果的に収集する技術として,本年度構築したデータフロー解析技術の洗練を行っていくことも考えている. 本研究で構築する手法を,現実的なソフトウェア開発の手順から見て妥当なものに保つために,来年度は,企業に所属する著名な研究者を訪問し,2回から3回程度,意見交換を行うことを考えている.特に類似ソースコードの検出技法を研究・発表している日立製作所横浜研究所,大規模ソフトウェアの解析を行っているNTTデータの研究チームを訪問し,議論を行う予定である.
|