研究者紹介 コンピュータサイエンス専攻

ソフトウェア工学講座

准教授松下 誠

Matsushita Makoto

コンピュータサイエンス専攻

ソフトウェア工学講座

1998年 大阪大学 博士(工学)
1998年 大阪大学 助手(大学院基礎工学研究科 情報数理系専攻)
2002年 大阪大学 助手(大学院情報科学研究科 コンピュータサイエンス専攻)
2005年 大阪大学 助教授(大学院情報科学研究科 コンピュータサイエンス専攻)
2007年 大阪大学 准教授(大学院情報科学研究科 コンピュータサイエンス専攻)

研究テーマ

SemanticCloneBench を用いた深層学習に基づくコードクローン検出手法の評価

構文上異なるにも関わらず同様の振る舞いが記述されているソースコード片を意味的クローンと呼ぶ。近年では、意味的クローンの検出を目的として、深層学習を用いたクローン検出手法が多数提案されている。しかし、クローン検出の分野において有名かつ巨大なベンチマークであるBigCloneBenchには、意味的クローン検出性能評価において多くの問題が存在する。本研究では、SemanticCloneBenchと呼ばれる、意味的クローンの性能評価に特化したベンチマークを用いて、深層学習に基づくクローン検出手法であるASTNN、CodeBERT、InferCodeの3手法を対象とした検出性能の評価を行う。適用実験の結果より、ASTNNにおけるF値は0.921であり、評価対象となる検出手法の中で最も高い検出性能を示した。また、F値が高くなるような閾値の範囲を調査した結果、CodeBERTとInferCodeで高いF値を示した閾値の範囲は、ASTNNにおいてF値が高くなるような閾値の範囲よりも狭いと判明した。

閾値を変化させた場合のF値曲線

実行時情報の類似性に基づいたテストケースの選択手法: 産業用シミュレータにおけるケーススタディ

開発者がソフトウェアシステムに変更を行った後、動作の変化を確認するために回帰テストが用いられる。開発者はセキュリティリスクや潜在的なバグを最小限に抑えるため、依存コンポーネントを頻繁に更新する必要があるが、その際回帰テストのコストが大きな問題となる。本研究では、産業用シミュレータをビジネスの重要なコンポーネントとする企業における現在のテスト実施手法について報告する。まずシミュレーターはユーザーのすべてのリクエストとシミュレーション結果を自動的にストレージに記録する。これにより、回帰テスト用の膨大な数のテストケースを開発者に提供する。しかしながら、テストに費やせる時間は限られています(一晩程度)。したがって、開発者は少数のテストケースを選択することにより、シミュレーション結果と実行パフォーマンスの両方が依存コンポーネントの更新による影響を受けないことを確認する必要がある。言い換えれば、テストケースは実行時間の多様性を維持しつつ、高いカバレッジを達成する必要がある。この問題を解決するため、テストケースによって生成される実行トレースの類似性を利用して、クラスタリング手法を利用したテストケース選択手法を開発した。この方法を半年にわたって会社内で使用した結果、今回開発した方法は会社で従来使用していたルールベースの手法よりも優れていることを確認した。

クラスタリングを用いたテストケースの選択手法の概要

プログラム解析・リポジトリマイニング・深層学習のソフトウェア工学への応用

書かれたプログラムが、いつ、誰が、どうやって、どんな目的で作られ、あるいは修正されたのかを知ることは意外と重要な意味があります。たとえば、プログラム中にあるバグを直す際、もし過去に似たようなバグにその修正履歴があれば、バグを直す際のヒントになりえます。人間は十分に賢いので、熟練している開発者であればそれをすぐに思いつくかもしれませんが、未熟な開発者はそれを見つけられずに悩んでしまうかもしれません。私は、ソースコードやその開発過程を様々な観点で分析する手法や、人間がどのようにソースコードの内容を認識しているかを踏まえた深層学習技術など、ソースコードを多角的に分析する手法を開発しています。また、それらを用いて、世界中で行われているさまざまなソフトウェア開発の現状を分析し、その分析結果を将来の開発に役立てることで、多くの開発者がソフトウェアを開発しやすくなるような環境の実現に取り組んでいます。

連絡先

E-mail: matusita@ist.

TEL: S4106

4桁の番号は同キャンパス内からの内線番号です。
外線からは、S: 06-6879-xxxxS*: 06-6105-xxxxT: 06-6850-xxxx となります。
メールアドレスは、末尾が省略されていますので、送信前に osaka-u.ac.jp を付加してください。