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

ソフトウェア工学の学術研究を紹介しています。ソフトウェア開発に関する調査と実験が大好きです。

2019-01-01から1年間の記事一覧

コードレビューのコメント量はプロジェクトによる

コードレビューで開発者はどのぐらいコメントをしているのか、私たちの研究室で調べた論文が電子情報通信学会の英文誌に掲載されました。J-STAGEからどなたでもダウンロードすることができます。 www.jstage.jst.go.jp この論文では、Chromium、AOSP、Qt、Ec…

ソースコードの類似度計測ツールの利用例を Jupyter Notebook として公開しました

Google Colaboratory を使って、ソフトウェア工学研究室で開発しているソースコード類似度計測ツールの利用方法を Jupyter Notebook 化してみました(シェルコマンドを並べているだけなので Python 要素は皆無ですが)。 grep 的に類似ソースコードの断片を…

プログラミング言語処理の練習課題

研究ではプログラミング言語で書かれたソースファイルの中身を調べることが多くありますが、そのような処理をどのようにプログラムで記述するかまでを入学時点で知っている学生は、ほとんどいません。各研究課題に合わせて、プログラミング言語の字句解析や…

ソースコード差分を集めるための git diff では --histogram を使うべき

当研究室博士後期課程の Yusuf Sulistyo Nugroho さんが発表した、言いたいことは論文のサブタイトル("Use --histogram for code changes")で終わっている論文です。オープンアクセスとなっているので、どなたでも全文をダウンロードできます。 link.sprin…

ソフトウェア保守と進化に関する国際会議(ICSME2019)に参加してきました

2019年9月30日から10月4日まで、アメリカ・クリーブランドで開催されたソフトウェア保守と進化に関する国際会議 35th IEEE International Conference on Software Maintenance and Evolution に参加してきました。 筆者の研究室と直接関係する発表は、筆者と…

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

日本ソフトウェア科学会第36回大会にて、トップカンファレンス特別講演という発表の機会をいただきました。このとき使用したスライドを SlideShare にアップロードしました。 9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay (日…

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

前回の記事から時間があいてしまいましたが、前回の投稿 エンジニア研修によるプログラムの質の向上を計測する試み - ソフトウェア工学研究の日々 の最初の成果を、情報処理学会ソフトウェア工学研究会のフラグシップイベントであるソフトウェアエンジニアリ…

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

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

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

当研究室の D1 上田 裕己 君の「開発者が行ったソースコード修正作業を学習し代行するボット」というプロジェクトが、2019年度未踏IT人材発掘・育成事業に採択されました。 www.ipa.go.jp このプロジェクトは、彼自身が当研究室の修士論文等で研究してきた技…

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

2月に本ブログで紹介した論文が、ソフトウェア科学会論文誌「コンピュータソフトウェア」36巻2号に掲載されましたので、リンクを張っておきます。 Heijo: 動的なコード実行可視化によるJava/Androidアプリケーションのリアルタイムプロファイラ 論文の PDF …

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

5月25日から31日にかけて、ソフトウェア工学国際会議(ICSE 2019)とその関連イベントが開催されました。 私たち奈良先端大ソフトウェア工学研究室からは、ICSE本会議でフルペーパー 1件、ジャーナルファースト発表 1件、併設イベントであるプログラミングに…

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

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

キャメルケースはスネークケースよりも読みやすい説

プログラムの識別子として複数の英単語をつなげるとき、単語区切りを大文字にしてつなげる CamelCase と、アンダースコアを使ってつなげる sanke_case の2つが良く使われています。この2つのどちらが読みやすいのか実験をした人がいる、というのが意外と知ら…

スマートフォンを支えるオープンソースソフトウェア

IPSJ-ONE にて、「ソフトウェアの生態系を探る」というタイトルで登壇してきました。 ipsj-one.org この発表では時間の都合上、まったく言及することができませんでしたが、「ソフトウェアの生態系(Software Ecosystem)」と総称されるオープンソースソフト…

コードレビューでは1000回以上繰り返されている修正もある

コードレビューでは同じような修正を何度も繰り返しているしているように見えるという知見は、 if 文に関する下記の研究で判明していました。 ishiotks.hatenablog.com この研究の続きとして、コードレビューで行われた任意の修正のうち、何度も繰り返されて…

OSS プロジェクトに寄付をした人に「親しみを感じる」ことの影響

オープンソースソフトウェアプロジェクトの運営において、寄付は重要な要素であると言われています。Eclipse では、寄付した人に対する特典として、バグ報告等を行うための Issue Tracking System において、寄付をした人の名前の横に "Friends of Eclipse" …

バグのあるプログラムからバグのないプログラムへの機械翻訳

機械翻訳技術は、たとえば英語の文を日本語の文へと自動的に翻訳するというのが一般的な使い方だと思います。ソフトウェア工学分野では、これを「バグのあるプログラム文からバグのないプログラム文への翻訳」とすることで、バグ修正に適用する方法を実験し…

オープンソースソフトウェアプロジェクトの人口ピラミッド

オープンソースソフトウェア開発において、開発者の人数は非常に重要です。最近は企業に雇われてフルタイムで働く開発者も多くなっていますが、一時的にプロジェクトに関わってくれる人たち、単発で貢献してくれる人たちの貢献度も無視できません。 あるプロ…

パッチ投稿経験が増えてもパッチに含まれる軽微な問題の個数は減らない

パッチを投稿してコードレビューを経験するほど、自分でパッチの問題に気付くことができるようになり、投稿パッチに含まれる間違いが減っていくのではないか。そんな仮説に基づいて、開発者のパッチ投稿回数(=経験値)と、パッチに含まれる軽微な問題の件…

コードレビューの修正内容は開発者の勉強に役立ちそう

コードレビューはソースコードの潜在的な問題を取り除き、読みやすさを向上するために重要な活動だと言われています。私たちの研究室では、将来的にコードレビューをある程度自動化したいという考えを持っていて、コードレビューがどんな修正を行っているの…

手法提案系研究と調査系研究

本ブログでは、様々な研究を「手法提案系」「調査系」の2つのカテゴリに分類して紹介しています。これらは正式な分類というわけではなく、私たちの研究室でときどき使う言い回しの一種です。 手法提案系研究は、既存の何らかの問題、通常はソフトウェア開発…

ライブラリのセキュリティ問題がアプリケーションに影響しないケースも多い

ライブラリの名前とバージョン番号を指定するだけで自動的にダウンロード等を完了してくれる依存性管理ツールのおかげで、どのライブラリを使っているかが機械的にチェックできるようになり、古いバージョンのライブラリを使っているとセキュリティ問題のあ…

Java プログラムのリアルタイムプロファイラの開発

プログラムの実行に時間がかかる、一瞬動きが止まって見えるといった、実行速度に関する問題が生じることがあります。そんなときに使えるのがプロファイラと呼ばれるツールで、Java の場合は Oracle JDK に標準で付いてくる hprof がよく知られていると思い…

ブロックチェーンを用いたソフトウェアビルドプロセスの記録

ソフトウェアの実行可能ファイル(いわゆるバイナリ)は、ソースコードさえあれば自由に作成することができます。プロの分析者であればバイナリに含まれた定数値などから元のソースコードをある程度は推定することができますが、多数のソースファイルのどれ…

ソースコードからの類似したコード断片の検索

プログラミングをしていると、似たような、少しだけ違う処理を何度か書かなければならないことがあります。うまく関数などの単位にまとめられれば良いのですが、ループ構造などをうまくまとめられない場合もありますし、開発の担当者が異なるために編集でき…

ライブラリ利用例カタログの自動生成

ソフトウェアの色々な機能を作るための部品となるライブラリ。それらを初めてを使うときに頼りになるのが利用例、サンプルコードと呼ばれるものです。StackOverflow などの Q&A サイトでも、「〇〇を使って××するにはどうしたらいいか」という質問がよく行わ…

開発者は使用するライブラリを更新しない

ソフトウェア開発では、画像の読み書きやネットワーク接続など、基本的な処理を提供するライブラリを土台にして、開発したいソフトウェアに固有の機能を作っていきます。 ほとんどの人は、開発を始めるとき、あるいはライブラリを必要とするような機能を実装…

ソースコードのコメントに登場する URL の役割

プログラミングの最中に、ライブラリの使い方やアルゴリズムの書き方など、様々な情報をインターネット上から集めてくることが一般的になっています。プログラムを書いたときに参考にした情報の URL をコメントとして一緒に記述しておけば、あとで参照できる…

はじめに

このブログは、ソフトウェア工学の学術的な研究論文の内容を、 筆者の所属する奈良先端科学技術大学院大学ソフトウェア工学研究室の成果や関連研究を中心として、できるだけ平易に紹介することを目指しているものです。 ソフトウェア工学は、高品質のソフト…