見出し画像

深層学習を用いたソースコード分類に関する研究

2021年度研究会推薦博士論文速報
[ソフトウェア工学研究会]

画像2

藤原 裕士
(日本電気(株) SE)

■キーワード
ソフトウェア再利用
ソースコード分類深層学習

【背景】ソースコード分類がソフトウェア開発や保守に有用
【問題】深層学習をソースコード分類に適用した既存研究が非効率
【貢献】効率的に深層学習を適用するための方法を提案

 現代社会では,大規模ソフトウェアを短期間かつ低コストで開発することが求められる.この要求を満たすため,ソフトウェア工学の研究が行われている.ソフトウェア工学とは,ソフトウェア開発・運用・保守に,体系的・専門別・定量的なアプローチを適用すること,およびそのアプローチについて研究することである$${^{1)}}$$.

 ソフトウェア開発の生産性を向上させる取り組みのひとつにソフトウェア再利用がある.ソフトウェア再利用とは,新たなソフトウェアの開発に既存のソフトウェア部品を再利用することである.ソフトウェア再利用には,ソースコードの設計や記述,テストなどにかかるコストの削減といったメリットがある.そのため,再利用可能なソフトウェアの検索手法の研究が行われている.

 ソフトウェア再利用を支援する手法のひとつにソースコード分類がある.ソースコード分類とは,ある基準に基づいて,類似した特徴を持つソースコードを同じクラスに分類する手法を指す.その基準はさまざまで,記述言語,コンポーネント間の依存関係,ソフトウェアの機能性,ファイルの機能性,関数の機能性などがある.このうち,私が研究したのは関数の機能性を基準にした分類で,概要図を以下に示す.

画像1

 オープンソースソフトウェアリポジトリは,ソースコード分類を検索に活用している一例である.たとえばSourceForgeでは,登録されているソースコードが21種類の機能クラスに分類されてタグ付けが行われている.開発者はこのタグを用いて,要求する条件に当てはまるソースコードの検索を行うことが可能である.このように,ソースコード分類はソフトウェア開発工程の効率化に役立つと言える.

 近年,深層学習を用いてソースコード分類を行う研究が盛んである.深層学習の代表的な定義$${^{2)}}$$のひとつを以下に示す.

深層学習とは,画像,音声,テキストなどのデータの意味を理解するのに役立つ,複数のレベルの表現と抽象化を学習することである.

 ちなみにソフトウェア工学の分野では,ソフトウェアの“機能性”を,ソフトウェアの”意味”と言い換えることがある.そのため,ソフトウェアの機能性に基づくソフトウェア工学の活動に深層学習が取り入れられるのは自然な流れである.

 深層学習を用いたソースコード分類の既存研究の問題点として,私は以下の3つがあると考え,本研究$${^{3)}}$$でこれらの問題の解決を試みた.

(a)学習ソースコード数の問題
(b)適切な深層学習モデルの調査不足
(c)汎化性能に関する問題

 まず,(a)を解決するために,学習ソースコードの一部を変更して新たなソースコードを生成し,それを学習データに追加する手法を提案し,既存手法と精度を比較した.

 次に,(b)の状況を鑑み,既存研究で利用されることが多い3種類のニューラルネットワークと2種類のソースコード表現方法をそれぞれ組み合わせた計6種類のソースコード分類手法の精度比較を行い,ソースコード分類に最適な深層学習モデルについての調査を進めた.

 最後に,(c)を解決するために,既存研究で多く利用される分類アルゴリズムとは異なるアルゴリズムを使用した手法を提案し,既存手法と汎化性能を比較した.

 本研究の詳細については博士論文$${^{3)}}$$に記載したため,お読みいただければ幸いである.

参考文献
1)片山卓也,土井範久,鳥居宏次:ソフトウェア工学大事典,朝倉書店(1998).
2)Deng, L. and Yu, D. : Deep Learning: Methods and Applications, Found. Trends Signal Process., Vol.7, No.3-4, pp.197-387 (2014).
3)藤原裕士:深層学習を用いたソースコード分類に関する研究,大阪大学大学院情報科学研究科 博士学位論文(2022).

(2022年5月14日受付)
(2022年8月15日note公開)

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー
 取得年月日:2022年3月
 学位種別:博士(情報科学)
 大学:大阪大学

ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー

推薦文[コンピュータサイエンス領域]ソフトウェア工学研究会
深層学習を用いてソースコード分類を行う既存手法にはさまざまな問題点がある.本論文では,既存手法が抱えるさまざまな問題の提起,問題の解決方法の提案,既存手法との比較や深層学習モデルの汎用性についての調査を行っており,本論文の知見は,深層学習を用いたソースコード分類技術の発展に繋がるものである.


研究生活

研究テーマを決めたきっかけ:大学の授業を通して,ソフトウェア工学に興味を持ったため,ソフトウェア工学講座の名を冠する研究室の配属を希望した.また,将棋が趣味で,ちょうどその時期に将棋ソフトにも深層学習が取り入れられ始めたため,深層学習にも興味があった.ソフトウェア工学に深層学習を適用する研究をすれば,2つの興味深い分野について学べると考え,上記の研究テーマに決めた.

執筆・研究生活での体験談・苦労話:一時期,研究室内と共同研究先で1本ずつ,計2本の論文を並行して書く羽目になった.これはややこしくて大変だったので,1本ずつ執筆できるようスケジュールを立て,計画的に進めたほうがよいと思われる.

メッセージ:博士進学すると,修士で就職していった人に比べて有り余る時間を得ることができる.研究に対するやる気さえあれば,その時間を有効に使ってきっと良い経験ができると思うので,ぜひ頑張ってみてほしい.