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

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

プログラム理解研究のまとめ本「プログラマー脳」

Felinne Hermans: プログラマー脳, 秀和システム, 2023 が、最近(ここ20年ぐらい)のプログラム理解系研究をよく整理しています。表紙には認知科学に基づくアプローチとありますが、認知科学の話がずっと続くわけではなく、プログラマーの行動に関する実験…

ペアプログラミングをすると作業に集中できる

2人でパイロットとナビゲーターの役割を分担して1つのタスクに取り組むペアプログラミングですが、その効果は分かっているような、分かっていないような、微妙なところです。ペアプログラミングを実際にやっている人を見かける機会もあったので、効果につい…

実際のプログラミングで必要な内容と、授業や教科書の内容を比べた話

授業ではプログラミング言語の全部を教えられるわけではないので、どうしても一部重要だと考えるところをピックアップして教えることになります。それが「実際に世の中で役に立つ」内容なのかどうかを調べようということで、私たちのグループで1つ、比較方…

模擬授業「ソフトウェアの生態系」質疑応答

公立はこだて未来大学オープンキャンパスの模擬授業にお越しいただいた皆様、ありがとうございました。今回の模擬授業では、ソフトウェアの生態系に関する歴史的な話と、最新の研究から得られているいくつかの知見をご紹介しました。 SLIDO を使ってみたとこ…

論文の第1章の書き方

論文の第1章を書くのは難しい、そもそも何から書いていいか分からない、という話をよく聞きます。私はここ最近、学生の国際会議(ワークショップ)投稿を連続で指導する機会があり、だいぶ言語化できたところがあるので、簡単にまとめてみることにしました…

コードレビューはコーディングスタイルも整えている

タイトル通りですが、そんな調査をやってみた結果を5月のリポジトリマイニングの国際会議 (MSR) で発表しました。 ieeexplore.ieee.org 論文の内容をまとめると、以下の通りです。 投稿されたパッチ(Pull Request) の最初の版と、最後の版で、n-gram ベース…

静的解析ツールはデフォルト設定で使うと見逃しが多くもったいない

ソフトウェア工学研究室D2の上田君がソフトウェア解析・進化に関する国際会議 SANER 2021 で、「Automatically Customizing Static Analysis Tools to Coding Rules Really Followed by Developers」(開発者が実際に従っているコーディングルールに合わせた…

習熟度の高いプログラマは、瞬間的にプログラムの内容を把握する

ソフトウェア工学研究室の幾谷吉晴さんがプログラム理解に関する実験結果を論文として発表しました。論文自体は英語ですが、内容の概略を日本語プレスリリースとして出してもらいました。 www.naist.jp 実験は、1画面に収まる程度の長さの Java のソースコ…

ソフトウェア開発者は徹夜してはいけない

睡眠は大切とよく言われますが、睡眠不足が開発者に与える影響をまじめに調べた面白い論文が、ソフトウェア工学のトップ論文誌 IEEE Transactions on Software Engineering に掲載されていました。ソフトウェア工学研究室助教の Raula 先生から教えてもらい…

Python は C よりもプログラミング教育に適しているかもしれない

プログラミング言語を C から Python に変えた効果を報告した論文 プログラミング言語として何を使うと良いのかは重要な問題です。生のコンピュータの挙動が直接見えるC言語と、人気の高い Python ではどちらがよいか、実際にプログラミングの授業で使う言語…

文献管理ソフトウェアを使いましょう

文献管理ソフトウェアが必要な理由 研究成果を論文にまとめるとき、研究の動機の説明や、既存技術との比較を行うために、参考文献の引用が不可欠です。ソフトウェア工学研究室で修士論文を書く場合、少ない人で10件、多い人だと40件ぐらい、文献の引用を行う…

COVID-19 期間中の在宅勤務がソフトウェア開発業務に与える影響のアンケート調査結果(速報版)

COVID-19 パンデミックによって、世界中のソフトウェア開発者が在宅勤務に移行しています。COVID-19期間中の在宅勤務がソフトウェア開発者のウェルビーイング、すなわち身体的、精神的、社会的に良好な状態にあることと生産性に与える影響を明らかにすること…

情報処理学会論文誌「ソフトウェア工学」特集

筆者が編集委員長を担当していた「ソフトウェア工学」特集が収録された情報処理学会論文誌 Vol.61, No.4 が無事発行されました。目次は 情報学広場:情報処理学会電子図書館 から閲覧することが可能です。この号は2つの特集が相乗りしているので見つけにく…

開発者数が増えたときのソースコードの書き方のばらつきの増減

2019年の春から夏にかけてインターンシップでソフトウェア工学研究室に来てくれた学生が2019年末のワークショップで発表を行いました. How Do Contributors Impact Code Naturalness An Exploratory Study of 50 Python Projects [ResearchGate.net] Code N…

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

コードレビューで開発者はどのぐらいコメントをしているのか、私たちの研究室で調べた論文が電子情報通信学会の英文誌に掲載されました。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" …