研究課題/領域番号 |
18H04094
|
研究機関 | 大阪大学 |
研究代表者 |
井上 克郎 大阪大学, 情報科学研究科, 教授 (20168438)
|
研究分担者 |
吉田 則裕 名古屋大学, 情報学研究科, 准教授 (00582545)
眞鍋 雄貴 (真鍋雄貴) 福知山公立大学, 情報学部, 講師 (20625339)
松下 誠 大阪大学, 情報科学研究科, 准教授 (60304028)
石尾 隆 奈良先端科学技術大学院大学, 先端科学技術研究科, 准教授 (60452413)
岡野 浩三 信州大学, 学術研究院工学系, 教授 (70252632)
ラウラ ガイコビナ・クラ 奈良先端科学技術大学院大学, 先端科学技術研究科, 助教 (80749094)
崔 恩瀞 京都工芸繊維大学, 情報工学・人間科学系, 助教 (90755943)
神田 哲也 大阪大学, 情報科学研究科, 助教 (90780726)
|
研究期間 (年度) |
2018-04-01 – 2023-03-31
|
キーワード | オープンソースソフトウェア / エコシステム / コードクローン / 深層学習 / 類似度計算 |
研究実績の概要 |
オープンソースソフトウェア(OSS)のリスクや健全性を診断するための分析手法に関する研究課題に対して、主に以下のような成果を得た。本課題を遂行するにあたり、国内はもとより国外の研究者とも積極的な情報交換を行い、国内外で積極的な成果発表を行った。 分析対象ソフトウェアのソースファイルと再利用したライブラリの版管理システムのリポジトリを比較し、再利用したバージョンを自動的に検出する手法を開発した。 本手法では局所性鋭敏ハッシュ(LSH)を用いた高速なファイル単位の類似度計算を導入し、ファイル単位の類似度の合計をライブラリのバージョン単位での類似度と定義し、最も類似度の高いバージョンを再利用元として検出する。本手法をオープンソースソフトウェアへ適用した結果、99.3%の割合で利用しているライブラリのバージョンを正しく検出できた。 構文解析器生成系の一つであるANTLRの構文定義記述を入力として与える事で、新たな言語の字句解析が可能となるコードクローン検出ツールCCFinderSWを開発した。42言語の構文定義記述から字句解析に必要となる情報を抽出する評価実験により、81%の言語で字句解析に必要な情報を抽出可能であることがわかった。またC++で記述されたソースコードに対するコードクローン検出においてCCFinderXとCCFinderSWの出力を比較し、ほぼ同等の検出能力を持つ事を示した。 類似ソースコード片検索ツールの出力結果に対してクラスタリングを適用しコード辺をグループ化することによって、正解の可能性が低いコード辺を出力から除外するフィルタリング方法の提案を行った。バグを含む類似コード片のデータセットを用いて提案手法の有効性を確認した。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
エコシステムを対象としたOSS分析に関して、詳細な分析をいくつかのテーマに沿って行った結果、着実な成果を得ることができた。具体的には、学術論文8篇をはじめ、国際学会にて6件の発表を含む11件の口頭発表を行い、本課題の成果を国内外へ示すことができている。 研究実績の概要に記載した内容以外にも、類似プロジェクト分析に関して、 深層学習を用いたソースコード分類手法の比較調査を行った。既存研究で広く利用されているニューラルネットワークを三つ選択し、ニューラルネットワークにソースコードのトークン列または抽象構文木を学習させた計6種類のソースコード分類手法の精度を比較した。その結果、 ソースコードのトークン列を学習した再帰型ニューラルネットワークの精度が最も高いことを示した。 OSSのエコシステム分析においては、Android SDKのAPIとAndroidアプリケーションを用いて、ソフトウェアプロジェクト間のAPI利用パターンのばらつきとそのバージョン履歴の分析を行った。分析結果に基づいて、プロジェクト固有のAPI使用パターンや、長寿命で一般的でないAPI使用パターンが多く存在するなどの問題点について指摘を行った。 OSSの信頼性やリスクの評価に資する研究に関して、ソースコード特徴量を用いた機械学習によるソースコード品質の判定手法に関する既存手法に対し、学習アルゴリズムの変更や使用するソースコード特徴量の追加などによって精度を向上させ、さらに判定対象の拡大を行う研究を行った。また、改良した判定手法の有効性を評価実験により確認した。 そのほかのテーマに関しても、分析手法の開発やツール等の作成など、順調に成果が出ており、その結果は論文や国際会議等でも発表済である。国内外の研究者との共同研究などを推進して、広い視野に立った研究を今後も進めていけると考えている。
|
今後の研究の推進方策 |
本年度では引き続き、OSSのエコシステムの分析や評価の種々の手法について、以下のそれぞれのテーマについて研究を行う。 類似プロジェクト分析に関しては、深層学習を用いてソースコード分類を行う種々の手法がいろいろ提案されているが、深層学習を用いた手法の分類精度は学習用データセットに大きく影響される。そのための学習用データセットの構築方法を提案し、より高い精度のモデル作成を試みる。 OSSのエコシステム分析においては、プロジェクト間の複製に関する調査を行う。OSSではプロジェクト間で多数のファイル群のコピーが行われているが、元のファイルが修正された場合、コピーされた各プロジェクトのファイルにその修正が正しく伝播していくのか知られていない。今年は、OSSのファイルの修正の伝播の定量的な分析や、伝播が起こる場合や起こらない場合の理由などを調査する。 OSSの各ファイルにコピーライト表記が正しく記載されているか、過去に行レベルの分析を行ってきたが、トークンレベルの分析も著作権的に重要と思われるので、トークンレベルの著作権に関してLinuxカーネルや他のOSSについて調べる。 OSS等プログラムの実行時トレースログを圧縮して蓄積した場合のデバッグ効率の評価手法、ソースコードの「良さ」を機械学習を用いて判定する方法、機械学習を用いたコードクローン検出システムの汎化性の性能分析、プログラムの静的な解析による振舞いの解析など、引き続きOSSの信頼性やリスクの評価に資する種々な研究を行う。
|