ソフトウェア工学研究の日々

ソフトウェア工学の学術研究を紹介しています。ここではソースコードなどのプロダクトが研究の主役です。

ソフトウェア工学国際会議 ICSE 2019 の発表スライド日本語版を公開しました

日本ソフトウェア科学会第36回大会にて、トップカンファレンス特別講演という発表の機会をいただきました。このとき使用したスライドを SlideShare にアップロードしました。

www.slideshare.net

論文の大まかな内容については過去の記事にありますので、そちらをご覧ください。あえて短くまとめると「コメントに書いた URL は、リンク先の内容が変わったり、リンク切れになることが結構あるので、便利だけど気を付けよう」というところです。

会場における質疑応答で、最も考えさせられたのは、URL をコメントに書くのはダメだと言われたとき、どうしたらよいかというご質問でした。URL はリンク切れになるリスクがあるのは間違いなく、しかし設計や実装における何らかの意思決定にかかわる技術資料をすべてリポジトリに詰め込んでおけばよいのかと問われると素直に肯定できません。それではどうするべきか、というドキュメント管理のベストプラクティスは私の知識不足もあって会場では回答することができませんでした。ご存知の方がいたらぜひご教示ください。

 

SES 2019 にてポスター・インタラクティブ賞を受賞しました

前回の記事から時間があいてしまいましたが、前回の投稿 エンジニア研修によるプログラムの質の向上を計測する試み - ソフトウェア工学研究の日々 の最初の成果を、情報処理学会ソフトウェア工学研究会のフラグシップイベントであるソフトウェアエンジニアリングシンポジウムにて「新人研修がソースコード品質に与える影響の調査」と題してポスター発表を行いました。

この研究は、ある企業において1か月半にわたって実施された新人研修の前後で、受講者のプログラムの品質を比較したものです。Scitools Understand という商用のメトリクス計測ソフトウェアを使用してプログラムの複雑度などを計測し、何が違うか、簡単な分析を2ページで報告しました。一言でいうと「研修をすれば、プログラムの書きぶりはちゃんと変わる」というものです。論文はすでに公開されており、情報学広場:情報処理学会電子図書館 に文献情報の詳細を公開しています。著者最終版 PDF の ダウンロードはこちら 。なお、1つの会社における事例の報告であり、今後もまだデータ収集、分析が必要であることにはご注意ください。

共同研究がスタートしてから短い期間でしたが、研究室に4月に入ったばかりの M1 である森田君が、メトリクス計測ソフトウェアと統計分析用の R を勉強しながらデータ分析を行い、2ページとはいえ初めての対外発表論文を筆頭著者として執筆、発表を行いました。

8月30日のポスター発表セッションでは、教育系の研究をされている先生方、プログラミング教育の授業を担当されている先生方を中心に、貴重なご意見をいただくことができました。議論にお付き合いくださった皆様、ありがとうございました。

また、参加者の投票によるポスター・インタラクティブ賞も受賞することができました!これを励みに、今後も研究を進めていきます。

f:id:ishiotakashi:20190903135317j:plain

ポスター賞表彰の様子

(編集履歴:2019/9/3 写真を追加しました)




 

エンジニア研修によるプログラムの質の向上を計測する試み

 これから行っていく新しい研究テーマとして、プログラミングやソフトウェア工学に関する研修(講義・演習)が、どのぐらい受講者のプログラムの質に貢献するか、という課題に取り組むことになりました。

 

www.naist.jp情報系企業の新人研修は、多様な出身の新卒エンジニアの知識の底上げを図っていますが、画一的な研修を行うと、情報以外の分野出身の人には難しすぎ、情報系で頑張ってきた人には簡単すぎるといったように、誰にとっても退屈なものになってしまう恐れがあります。また、研修を行う側にとっても、研修の効果が客観的にはわからないために、教材や教え方を改善することは困難となっています。

そこで、当研究室では、まず研修という活動の効果がどのように計測可能であるかという点から始めて、現在行っている研修がどのような人に・どれぐらいの効果を持つのかを調査する方法を確立し、長期的には、ソフトウェア開発能力の測定方法や個人の現在の能力に合わせた研修の提供などの課題に取り組んでいきたいと考えています。

上記プレスリリースは、ソフトウェア工学研究室としては珍しく「これから行う」テーマの発表です。大学院でソフトウェア工学の研究に携わりたいと考えていて、プログラミング技術・ソフトウェア開発能力を計測するという目標や、データ分析という手段に興味のある方がいらっしゃれば、取り組む研究課題の候補として検討していただければ幸いです。

なお、このような研究発表としては資料が世の中に出ていないような研究テーマについて詳しく知りたい場合は、研究室訪問という形でお越しいただくのが早道です。研究室を訪問可能な日の候補をいくつか「いつでも見学会」のサイトからご連絡ください。この申し込みはちょっと物々しい印象があるかもしれませんが、これが研究室訪問を(必要であれば複数研究室同時に)申し込むためのメール窓口になっています。ソフトウェア工学研究室の訪問を希望すると明記されていれば当研究室スタッフから返信しますので、単に送ったメールが見逃されにくいメールアドレスであるという程度に考えて、気軽にお送りください。

 

開発者が行ったソースコード修正作業を学習し代行するボット

当研究室の D1 上田 裕己 君の「開発者が行ったソースコード修正作業を学習し代行するボット」というプロジェクトが、2019年度未踏IT人材発掘・育成事業に採択されました。

 www.ipa.go.jp

このプロジェクトは、彼自身が当研究室の修士論文等で研究してきた技術を基盤に、1年間で応用的なソフトウェアを世の中にリリースすることを目指しています。

研究内容をよく知っている教員でも実際どのぐらいのものが作れるか予想がつかないところですので、研究面での関連情報を提供しながら、今後の展開を見守りたいと思います。

 

Heijo: コード実行可視化によるJava/Androidアプリケーションのリアルタイムプロファイラ

2月に本ブログで紹介した論文が、ソフトウェア科学会論文誌「コンピュータソフトウェア」36巻2号に掲載されましたので、リンクを張っておきます。

Heijo: 動的なコード実行可視化によるJava/Androidアプリケーションのリアルタイムプロファイラ

論文の PDF は、論文誌の冊子体が紙として出される都合上、白黒となっています。カラーでどのように見えるかは、下記記事のものをご参照ください。

ishiotks.hatenablog.com

ソフトウェア工学国際会議 ICSE 2019 に参加しました

5月25日から31日にかけて、ソフトウェア工学国際会議(ICSE 2019)とその関連イベントが開催されました。

私たち奈良先端ソフトウェア工学研究室からは、ICSE本会議でフルペーパー 1件、ジャーナルファースト発表 1件、併設イベントであるプログラミングに関する視線トラッキングに関するワークショップ(EMIP)で発表 1件、プログラム理解に関する国際会議(ICPC)で大阪大学と共同研究のツールデモ発表 1件、合計4件の研究を発表しました。

本会議の様子については、D2の幾谷君による現地レポート記事があるので、そちらをご覧ください。

qiita.com非常に多様な論文が発表されていましたので、ソフトウェア工学に関わっている皆様には、ICSE 2019 勉強会でもその内容を確認していただければと思います。現在7月18日の開催で調整中ですので、予定を確保しつつ公式のアナウンスをお待ちください。

 

コードレビューは活発に活動している人ほど引き受けてくれる

今月末に開催されるソフトウェア工学の国際会議 ICSE にて、Journal-First Track という「論文誌に採択されたが国際会議では未発表」という原稿について、私たちの研究室から1件発表があります。

arxiv.org

 この論文は、オープンソースソフトウェアプロジェクトで行われているコードレビュー活動を調査し、「誰に依頼すると、引き受けてもらえるのか」を機械学習で予測する方法を考えた論文です。データセットには、Android, LibreOffice, OpenStack, Qt プロジェクトに投稿されたパッチ 230,090 個を使っています。

 この論文では、コードレビューは誰でも引き受けてくれるわけではなく、16%から66%のパッチで、レビューのお願いに反応してくれないレビュアーが 1人以上いることを報告しています。引き受けてくれないことがあるからと多数の人に依頼を出すのは迷惑ですから、レビューを引き受けてくれそうな人に依頼を出すというのが課題になります。

 この「レビューに参加してくれそうな人」を予測するとき、レビュアーの "Human Factor" を含めると精度が向上する、というのが論文の報告です。Human Factor といっても色々ありますが、強く効くのは「レビューを引き受けてきた割合」と「これまでに書いたパッチの数」です。そのほか、これまでに書いてきたレビューの数や、レビューとして記述するコメントの量、現在実施中のレビューの数などが予測に寄与する要素となっています。

 この結果は、いつもコードレビューを引き受けてくれる、まじめにレビューを書いてくれる人ほど、これからも引き受けてくれる可能性が高いということを示しています。これだけ聞くと当たり前のようにも思える話ですが、従来研究ではパッチの内容に関係した知識を持っていそうなレビュアーを推薦することだけが考えられていたので、その人たちの過去の行動まで加味したほうがよいことを示した、というのがこの論文の貢献になります。

 この結果をレビュアーの自動推薦に単純に組み込むと、「引き受けてくれる可能性が高い人」を推薦しやすくなるという点では有益ですが、やりすぎると、現在頑張っている人たちにさらに依頼が集中しすぎて、破綻する可能性があることです。作業負荷を能力や態度に合わせて公平に分配できるようになるには、まだまだ先は長そうです。