研究課題/領域番号 |
18H04094
|
研究機関 | 大阪大学 |
研究代表者 |
井上 克郎 大阪大学, 情報科学研究科, 教授 (20168438)
|
研究分担者 |
吉田 則裕 名古屋大学, 情報学研究科, 准教授 (00582545)
眞鍋 雄貴 (真鍋雄貴) 熊本大学, 大学院先端科学研究部(工), 助教 (20625339)
松下 誠 大阪大学, 情報科学研究科, 准教授 (60304028)
石尾 隆 奈良先端科学技術大学院大学, 先端科学技術研究科, 准教授 (60452413)
岡野 浩三 信州大学, 学術研究院工学系, 准教授 (70252632)
ラウラ ガイコビナ・クラ 奈良先端科学技術大学院大学, 先端科学技術研究科, 助教 (80749094)
神田 哲也 大阪大学, 情報科学研究科, 助教 (90780726)
崔 恩瀞 奈良先端科学技術大学院大学, 先端科学技術研究科, 助教 (90755943)
|
研究期間 (年度) |
2018-04-01 – 2023-03-31
|
キーワード | オープンソースソフトウェア / エコシステム / コードクローン / 深層学習 / ライセンス |
研究実績の概要 |
オープンソースソフトウェア(OSS)のリスクや健全性を診断するための分析手法にに関する研究課題に対して、主に以下のような成果を得た。本課題を遂行するにあたり、国内はもとより国外の研究者とも積極的な情報交換を行い、国内外で積極的な成果発表を行った。 情報検索技術を利用したコードブロック単位のコードクローンを検出する手法を開発した。既存研究では関数単位でコードクローンを検出する手法があるが、検出粒度が大きいため検出漏れが起きるという問題点があった。本手法ではソースコード中の識別子や予約語に利用される単語に対して重み付けを行い、コードブロックから変換された特徴ベクトル間の類似度を求め、ブロック単位でクローンの検出を行った。これにより、より小さい粒度でコードクローンを検出し,検出時間とメモリ使用量を削減できるという利点が得られた。評価実験を通じ、既存手法より高速に高い精度で検出を行えることを確認した。 回路開発の効率化を目的として、代表的なHDLであるVerilog HDLを対象としたコードクローン検出手法を提案し、HDLにおけるコードクローンの特徴について調査した。本手法は、Verilog HDLのソースコードに簡単な変換を適用することにより、既存のツールを用いてVerilog HDLのコードクローン検出を行う。評価実験の結果、提案手法は90%以上の精度でコードクローンを検出することを確認した。Verilog HDLのコードクローン量とその複雑さについて分析した結果、CやJavaと同様にコードクローンが存在することがわかった。Verilog HDLを用いた回路開発においても、一般のソースコードと同様の開発支援を要することがわかる一方、Verilog HDLにおけるコードクローンに対してリファクタリングによる集約を行う場合回路性能とのトレードオフを考慮する必要があることもわかった。
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
エコシステムを対象としたOSS分析に関して、詳細な分析をいくつかのテーマに沿って行った結果、着実な成果を得ることができた。具体的には、学術論文3篇をはじめ、国際学会にて14件の発表を行い、本課題の成果を国内外へ示すことができている。 研究実績の概要に記載した内容以外にも、類似プロジェクト分析においては、各OSSプロジェクトのソースコードやバイナリからプロジェクトの特徴をベクトル化し、類似プロダクトを高速に検索する手法、ならびにプロダクト間の類似度の指標に関する成果を得た。またOSSプロジェクトのライセンス分析においては、すでに我々が開発済であるOSSの個々のソースコード上に書かれたライセンスを分析するツールを用い、ライセンスの不整合によって起きるリスクが現状どの程度内在しているかを明らかにした。 また、コードクローンを整理し、プログラムサイズを削減するリファクタリングを施した場合のプログラムサイズの削減量の見積もり方法を提案し、評価を行ったり、コードをベクトル化しDNNを用いて効率よくコードクローンを検出する手法など、コードクローンに関連する研究も多数行った。 さらに、時間オートマトンネットワークのシミュレータの開発や再帰構造を持つCの関数の形式的検証に関する研究を行った。 そのほかのテーマに関しても、分析手法の開発やツール等の作成など、順調に成果が出ており、その結果は論文や国際会議等でも発表済である。国内外の研究者との共同研究などを推進して、広い視野に立った研究を今後も進めていけると考えている。
|
今後の研究の推進方策 |
本年度は、OSSプロジェクトに関して、より詳細な分析をいくつかのテーマに沿って行う。 まず類似プロジェクト分析に関しては、まず、プログラムの関数を単位としたベクトル化表現を用いた機械学習を行い、類似や非類似の判定を学習し、判定できる方法を確立する。ベクトル化表現法としてはLDAやLSHなど自然言語処理の技術を導入し、有効性を確かめる。また同型のプログラム断片を効率よく発見し、プロジェクトの類似性判定に用いる技術を開発する。今まで、このような目的にはコードクローン検出ツールが用いられてきたが、その利用方法は容易ではなく、また多くの不要な情報を出力するので、分析が困難であった。そこで文字列検索ツールgrepに似たユーザインタフェースを持つ、トークンを単位としたパターンマッチングツールの開発を行う。更に、ファイル圧縮技術を用いた2つのファイル間の類似性判定を行う技術の高速化、発展を行う。似たファイルを圧縮した場合、高い圧縮率を得ることができるが、それを応用したファイルの類似度計算を行うNCD法を開発しているが、それを応用してプロジェクトの類似度を効率よく計算する方法を検討、開発する。 また、OSSのライブラリの利用に関する分析を深化させる。近年、種々の言語のライブラリが多数構築され、それらは広く一般に利用されているが、ライブラリに問題が生じた場合は大きな影響が及ぶ。例えば、簡単で小さなライブラリの利用がどのぐらいあって、どの程度の影響を与えうるかの分析を試み、OSSライブラリの重要性の評価を行う。OSSのライセンスに関連しては、各OSSのファイルに書かれたコピーライトの記述が、どの程度実際のファイルの製作者と関連しているか分析し、コピーライト記述の信頼性評価手法を検討する。 その他、OSSの実行時のデバッグや信頼性の評価方法、プログラムの静的な検証、評価に関しても種々な研究を行う。
|