ソフトウェア工学研究室2014

ソフトウェア工学研究室では、ソフトウェア開発に関わる様々な問題を研究しています。幅広い問題に取り組むため、国内外の研究者との連携に力を入れています(ソフトウェア工学研究室2013)。今回は現在取り組んでいる研究課題をいくつか紹介します。

ソフトウェア開発者の作業改善支援
本研究では、Personal Software Process(PSP)というソフトウェア開発者の作業を改善手法の研究に取り組んでいます。PSPでは開発者の作業履歴を記録し、実装(プログラミング)、テスト、ソフトウェア設計、会議といった個々の開発作業にどれだけの時間を費やしているか分析し、効率の改善やプロセス改善に役立てます。

我々はこのPSPに用いられるソフトウェア開発者の作業履歴を自動計測するためのツールTaskPitを開発しています。TaskPitでは、あらかじめPC上で動作するアプリケーション(例えば,Eclipse,Visual Studio,Word,Excel,SQLサーバ,コマンドプロンプトなど)とタスク(例えば,文章編集,表計算,実装,テストなど)を紐付けて、アプリケーションのアクティブ/非アクティブ状態を検知することで各タスクに費やした時間や作業量(クリック数、タスク数)を計測できます。

estimate

また、PSPでは「開発作業」という単位での作業記録が必要であるため、文書編集,表計算といったタスクを,その前後のタスクの実施状況から判断して「実装」「テスト」「設計」等の開発作業に自動的にマッピング(推定)する研究にも取り組んでいます。

人的リソースから見るオープンソースソフトウェアの健全性評価
オープンソースソフトウェア(OSS)は、ソースコードが無償で公開されている、だれでも改良や再配布が可能なソフトウェアです。OSSの普及に伴い、OSSを導入する企業が増加しています。企業がOSSを導入するメリットとして、経費を大幅に削減できるという点があります。しかし一方で、ボランティアが有志で開発を行っているというOSSの性質上、バグがすぐに修正されないという問題や、開発が突然打ち切られるというリスクがあります。そのため、企業は健全性の高いOSSを導入する必要があります。我々は人的リソースの観点からOSSの健全性を測ろうと試みています。

homebrew

次の図は、OSSプロジェクトの貢献者を、コメントやバグ報告などの議論を行う貢献者とコーディングを行う貢献者に分けて、貢献者の分布を人口ピラミッドで表したものです。このように可視化することで、プロジェクトが貢献者の獲得・維持ができているかが分かりやすくなります。

脳血流計測装置を用いたプログラム理解難度の測定
ソフトウェア開発において、プログラムのソースコードや設計書を読み、そのふるまいを理解すること(プログラム理解)は重要な作業のひとつです。たとえば、

  • ソフトウェアから欠陥を取り除く(デバッグ)ため
  • ソフトウェアの改良を行うため
  • 他者の書いたプログラムを再利用するため

などの工程において、開発者はプログラム理解を行う必要があります。

開発者がプログラム理解をうまく行えるかどうかは、対象となるプログラムの複雑さ開発者の能力などにかかっています。
したがって、経験年数が短い場合や新しい分野での開発において、開発者はしばしばプログラム理解が困難な状況に直面します。

このような開発者に対しては、適切なタイミングで手助けや教育を施したり、現在の仕事の割り振りを見直すことで作業の効率を上げることが出来る可能性があります。
また、プログラムが万人にとって理解しづらいようであれば設計を見直す必要があるとも考えられます。
しかしながら、プログラム理解とは開発者の頭の中で行われる処理であり、「困難な状況にある開発者」を見つけることはそう簡単ではありません。時によっては、開発者が困難を抱えているときに管理者が「開発者はうまく仕事に取り組んでいる」と勘違いするようなこともあるでしょう(図1)。

intro1

図1. プログラム理解に取り組む開発者の内心を知ることは難しい

本研究ではこの問題に取り組むため、プログラム理解を行う開発者の脳活動を観察するという率直なアプローチを採用しました。我々は、ウェアラブルNIRS(Near-InfraRed Spectroscopy; 近赤外分光法)装置(図2)と呼ばれる小型軽量な脳活動計測装置を用い、プログラム読解中の脳活動の推移や難度ごとの差を見ることで、プログラム理解の困難さを測定出来るのではないかと考えています。

intro2

図2. NIRS装置と原理

NIRS装置は、頭表面に向かって近赤外光のレーザーを射出し、その反射を捉えることで脳内の血中酸素濃度を測定し、そこから脳活動を推定する装置です。fMRIやPETのような他の脳活動計測機器と比べて精度は落ちますが、計測時の手間や身体動作への制約が少なく、また長時間の計測にも耐えうるという特徴があり、本研究に採用されました。

現在我々は、様々なレベルの難読化(プログラムをわざと理解しにくくするための処理)を施したプログラムをプログラミング経験者に読んでもらい、その理解中の脳活動を測定するという実験を行っています。実験の途中ではありますが、開発者にとって極端な困難が生じている間プログラム理解中の脳活動が強く活発化する傾向が確認できています。

Automated framework for bug report categorization

This Automated framework focuses on reducing the amount of human effort required to obtain information from bug reports.

While bug report categorization can greatly help in understanding software development and improving its process, it is a daunting task because of the required amount of human effort to complete this task.

We propose a framework of automatic bug report categorization. It first applies topic modeling techniques to discover “topics” in the collection of bug reports, and then classifies them with the features of existing topics.

Result from our experiments demonstrated that our framework could automatically categorize bug reports with good results and much less human effort.

国際会議IWESEP2014を主催

10806318_852020818164601_5971084601057743100_n

実証的ソフトウェア工学(ソフトウェア開発における開発者の経験・ノウハウを観測し、将来のソフトウェア開発にフィードバックすることを目的とした学問)に関する研究を対象に、研究分野の発展や若手研究者育成を目指す国際会議International Workshop on Empirical Software Engineering in Practice (IWESEP) 2014を開催しました。若手研究者がオーガナイズする本会議は今年で6回目を迎えます.本研究室からも中川さん(D1)がChairメンバーの一人として活躍しています。また、本研究室から2件の論文発表(Limsetthoさん(D2)、伊原助教)、ポスター発表(湯月さん(M2)、藤原さん(M1)、藤野さん(M1)、若本さん(M1)、Jiarpakdeeさん(研究生)、伊原助教)があり、藤野さんらのポスターはBest Poster Awardを受賞しています!

10268412_852023471497669_667558884949701036_n

サミットMSR Asia Summit 2014を主催

35fb3ec8b65b475989f24f9cfd77c1d9

ソフトウェア工学分野において注目されているマイニングソフトウェアリポジトリ(MSR: ソフトウェア開発中にデータベースに蓄積される開発資産をデータマイニングし、開発者の感や経験に依存しない知識を見出すことを目的とした学問)分野で活躍するスーパースターを多数招聘し、プレゼンテーション、議論を通して日本のMSR研究の発展を目指すサミットです。ソフトウェア工学研究室の伊原助教、NAIST修了生の亀井助教(九州大学)がオーガナイザーとなり開催されています。今年で2回目の開催となるMSR Asia Summit 2014は、世界5カ国から研究者を招聘し、世界最先端の研究を学び、ソフトウェア工学の未来について思いを馳せました。

6230296cfe6a42dd9694d7364703cb0e

ソフトウェア工学研究室の最新情報はこちらから
http://se-naist.jp/
https://www.facebook.com/selabnaist