ソフトウェア工学分野の現状と今後（ICSE2019参加ログ）

## はじめに

ソフトウェア工学分野のトップカンファレンスである __The International Conference on Software Engineering__ ([ICSE2019](https://2019.icse-conferences.org/)) に参加してきました．ICSEの本会議自体はたったの3日間でしたが，総じてレベルの高い発表が多く，__ソフトウェア工学という学問分野が持つ問題意識や展望__について，多くを教えられた気がします．発表や議論から，これからのソフトウェア工学は，次の3つの大きな流れに沿って進んでいくように思います．

> (1) データ偏重研究が過剰に評価される現状に警鐘を鳴らし，人間中心型・ニーズ駆動型研究を奨励していこうとする流れ
> (2) ソフトウェア工学分野で挙げられる課題に対して，機械学習を強力なツールとして取り入れ，独自に発展させていこうとする流れ
> (3) これまで小・中規模分野に過ぎなかった「ジェンダー研究」および「生体・脳機能計測研究」の台頭

記憶が新鮮なうちに，これらの潮流についてそれぞれまとめておきます．わたし自身の専門は__ソフトウェア工学における脳機能計測および機械学習活用__に非常に近いところになります．したがって，この記事の内容（ICSEを通したソフトウェア工学分野の解釈）には，__わたし個人の持つ認知バイアスが強く反映されている__ことを，先にお断りしておきます．

## 総論

ICSE2019の中で示された「現状のソフトウェア工学はデータに寄った研究を過剰に評価しているが，ソフトウェア工学の本来の目的に立ち返り，__本当にソフトウェア開発者の役に立つものを開発するためには，<font color="Red">もっと現実の開発者や労働現場に目を向け，積極的に産業界とコラボレーションしていく必要がある</font>__」という指摘は大きな意味を持ちます．研究に利用できるデータを集めやすいことは，ソフトウェア工学の大きな特徴ですが，__データばかり見ているだけでは役立つものは生まれないというのが，これからのソフトウェア工学における中心的スタンスになる__と予想されます．今後，__「工学的価値を生み出す研究」と「開発者の実態把握研究」の両方__が，一層強く共存・融合する時代になっていくだろうと考えられます．工学的価値を生み出す研究として，特に__自動バグ修正・自動リファクタリング・ソースコードの意味的離散化__は，大きなトピックとして急速に発展を遂げそうに思われます．開発者の実態把握研究としては，__ソフトウェア開発者個人の認知活動（例: 視線・脳機能計測）や社会性（例: ジェンダーバランス）についての研究__が，今後大きな存在感を示すと予想されます．

## データ偏重型研究から人間中心型・ニーズ駆動型研究への転換

ICSE2019の中で特に大きな意味を持つのが，5月30日の Margaret-Anne Storey による基調講演__「Publish or Perish: Questioning the Impact of Our Research on the Software Developer」__でした．演題に示されている通り，ソフトウェア工学の中で行われている研究が，<font color="Red">__「実際どれくらいソフトウェア開発者の役に立っているのか？」__</font>という点について改めて検討するという趣旨の講演でした．

内容をごく単純化して要約すると，__「現状のソフトウェア工学はデータに寄った研究を過剰評価しているが，ソフトウェア工学の本来の目的に立ち返り，本当にソフトウェア開発者の役に立つものを開発したいならば，もっと現実の開発者や労働現場に目を向け，積極的に産業界とコラボレーションしていく必要がある」__という指摘でした．講演内容と同じくらい大事なことは，ICSE2019に参加していたソフトウェア工学研究者の多くが，__彼女の基調講演の内容に対し強い共感を示していたこと__（通常の2-3倍くらいの拍手の大きさ・長さ + 「これまでのICSEで最高の基調講演だった」という複数のコメント）です．

彼女の講演で特に際立ったのは，スライド資料46-51ページに示された「2015-2017年にICSEに受理された253件の論文の内，__158件（62%）がソフトウェア開発に関連するデータ分析"のみ"で完結している__」という指摘です．合わせて示された大きな皮肉は，そのうち110件（70%）の論文が，データのみしか見ていないにも関わらず，"ソフトウェア開発者 = 人間" について言及していることです（スライド p.51）．これらの考察は非常にシンプルにも関わらず，__ソフトウェア工学という学問が実際のソフトウェア現場と開発者から乖離していること__を強く示唆するものでした．

__「次の50年のソフトウェア工学」という副題のICSE2019で，彼女がこの基調講演をしたことは，間違いなく意図的だと思われます．__GitHub や Open Source Software (OSS) の存在により，研究に利用できるデータ（例:ソースコードや開発作業履歴）を集めやすいことは，ソフトウェア工学の大きな特徴の一つです．したがって，__論文の量産を目的とするならば，データ分析で完結する研究の方が，明らかに全体のリードタイムを短く保つことができます__．一方で，ソフトウェア工学分野における論文数最大化のひとつの結果として，ICSE採録の論文の70%がデータ偏重研究になっていることも明白です．結びに付けられた__「Write less, think hard, imagine more」__の言葉（スライド p.67）も含め，彼女の基調講演は，このような現状について警鐘を鳴らす目的で構成されていたと考えられます．

Margaret-Anne Storey の講演内容を踏まえれば，ソフトウェア工学研究に対する評価基準が，「データ中心」から__「開発者中心」__へシフトし，「データのみの分析」よりも__「データ+人間の分析」__重視へ変わっていくものと予想できます．ソフトウェア開発者の特性や開発現場の実情を調べる研究単体では，工学としての価値（何かの数値を改善したりする効果）は生み出しません．一方で，現実の開発者の観察や記録から得られるすぐれた課題把握がなければ，すぐれた解決策は生まれません．したがって，Software Repository Miningや機械学習の活用 を中心とした「工学的価値を生み出す研究」と，ケーススタディや観察実験などの「開発者の実態把握研究」が，ソフトウェア工学コミュニティの中で一層強く共存・融合することが望まれる時代になっていくだろうと考えられます．

参考: Margaret-Anne Storey, "Publish or Perish: Questioning the Impact of Our Research on the Software Developer", [(Slide)](https://www.slideshare.net/mastorey/publish-or-perish-questioning-the-impact-of-our-research-on-the-software-developer).

## ソフトウェア工学分野の課題に対する機械学習の活用と発展

近年の潮流を鑑みると，__ソフトウェア工学における機械学習が，現状どのように活用されており，これからどう発展していくのか?__というのは，ひとつの大きなICSEの見方かと思われます．機械学習に関連する単語がタイトルに明確に含まれているセッションを列挙すると，以下のようになります．__大きな流れとして，ソフトウェア工学で提示される課題に対する解決策を提供するもの（Automated Program Repair 1 & 2, Machine Learning in Static Analysis）と，人工知能システムのテストに関するもの（Testing of AI Systems）__に大別できるように思います．

> 機械学習に関連する単語がタイトルに含まれているセッションリスト
+ Automated Program Repair 1
+ Automated Program Repair 2
+ (Keynote) Building Reproducible, Reusable, and Robust Machine Learning Software by Joelle Pineau
+ Machine Learning in Static Analysis
+ Testing of AI Systems

特に「Automated Program Repair」は，まったく同じ題のセッションが2つ存在することからも，注目度の高さが伺えます．Automated program repair と広く研究領域を区切っていますが，実体としては__「自動バグ修正」もしくは「自動リファクタリング」（たまに「ソースコードの自動要約」）を目指す研究が発表される場__と考えて，差し支えなさそうな印象でした．まずこれらのどちらかにターゲットを絞って，その中のサブプロブレムについて深く考えていくイメージの研究が多数発表されていました．

OSS のおかげで学習用データが潤沢なことを加味しても，基本的に「Garbage in, Garbage out」の世界なので，あるソースコードをどう修正・リファクタリングするか？の判断根拠となる__「情報源の選定」「具体的な情報の抽出方法」に著者それぞれのアイデアが詰まっている__ように思いました．根拠となるデータソースが定まった後は，次のアイデアとして「情報をどう表現し，どう加工して，最終的なoutputに繋げるか」を，ある程度決まっている選択肢の中で考えるというのが，ソフトウェア工学における一般的な研究の展開のように感じました．

ツール提案系の研究に対するソフトウェア工学特有の評価基準として，State-of-the-artの性能を超えるか否か？という議論に加えて，__既存の OSS project へ開発した自動化システムが出力した修正提案をプルリクエストしてみて，それがマージされるか？__を試すことも行われていました．この基準は，提案システムの実社会における利便性を分かりやすく判定するための手段として有用であり，__今後のソフトウェア工学分野において一層重要視されていくかもしれません．__

「Machine Learning in Static Analysis」のセッションでは，どのようにソースコードの意味的情報を保ったまま，離散表現に変換するかについて活発に議論されていました．少々専門的になりますが，既存のソフトウェア工学で広く知られている__「コード->グラフ」変換__（例: 抽象構文木(AST)，Function-call graph，Program dependency graph）と，__ニューラルネットワークによる非線形変換を組み合わせる__というのが，大きなトレンドのようでした．離散表現化したソースコードを，具体的な問題の解決法を分類・生成するための判断基準として活用することで，ソースコードの自動修正が一気通貫で可能になるというストーリーが一般的な印象でした．

総論として，ICSEにおける機械学習関連の発表のレベル感は総じてかなり高く，特定の問題における応用であることを前提にすると，NeurIPSと比較してもあまり遜色ないくらいに感じました．特に，__学習対象がソースコード，もしくはそれに付随する人工物である場合は，ICSEに来る方がレベルの高い発表が聞けそうな印象です．__Joelle Pineauが，NeurIPS2018とまったく同じ演題の基調講演をICSEでしている事実を考えると，__両者の境目はこれからもっと曖昧になっていくかもしれません．__

> 関連する発表を抜粋:
> "Learning to Spot and Refactor Inconsistent Method NamesTechnical Track", Kui Liu et al.
> "Harnessing Evolution for Multi-Hunk Program RepairTechnical Track", Seemanta Saha et al.
> "A Neural Model for Generating Natural Language Summaries of Program Subroutines", Alexander LeClair et al.
> "Software Engineering for Machine Learning: A Case Study", Saleema Amershi et al.

## ソフトウェア工学における「ジェンダー研究」と「生体・脳機能計測研究」の台頭

人間中心型研究へのコミュニティとしての転換を反映しているように，__社会的・認知科学的観点からのソフトウェア開発者・開発チームの分析研究__が広く注目を集めていたことも，ICSE2019の特徴でした．その中でも特に顕著だったのが，ソフトウェア開発における__ジェンダーに関する研究と，生体・脳機能計測研究の台頭__だと感じました．いずれの領域も，ソフトウェア開発における生成物（例: ソースコード）のみならず，__開発に関わる人間にも強く焦点を当てている研究が中心となっています．__

洋の東西を問わず，多くのソフトウェア開発チームは，大幅に男性に偏った構成をしています．この偏りが__どんなメリット/デメリットを生み出しているか，男女比をバランスするようにするとソフトウェア開発にどういった影響が現れるのか__については，多くの研究者が興味を持っているようです．ともすればかなりセンシティブな議論になりかねないにも関わらず，ICSEのジェンダーに関するセッションでは，非常にオープンに議論されているような印象がありました．ジェンダーに関する問題は，世界中で大きな関心を集めているので，ソフトウェア工学においても，徐々にその問題意識が大きくなっているように思います．

ICSEにおいては，開発者の社会性についての研究だけでなく，__開発者個人に関する認知科学的研究も徐々に市民権を得ている__ように思いました．ソフトウェア工学において，20年ほどの歴史を持つ視線計測研究だけでなく，ここ5年間で活用が進みつつある脳機能イメージング装置の研究への注目も少しずつ高まってきている印象を受けました．実際に，fMRIとfNIRSを活用した研究が，Distinguished Paper Awards を受けている点からもこの点は支持されます．人間中心のソフトウェア工学が志向されていることも手伝って，この領域も多くの人の興味を惹くことに成功しているように考えられます．

Margaret-Anne Storey の講演内容に多くのソフトウェア研究者が共感を示していたことも加味すると，__社会的・認知科学的観点から見た「人間」に対するソフトウェア工学研究の持つ意味が，これから徐々に大きくなっていく__と予想されます．一方で，「工学」としての側面を考えると，このような基礎研究たちが具体的にどうソフトウェア開発の効率化に貢献するのか？について，もっと議論が進む必要があるように感じます．

> 関連する発表を抜粋:
> "Implicit Gender Biases in Professional Software Development: An Empirical Study", Yi Wang et al.
> "Gender Diversity and Women in Software Teams: How Do They Affect Community Smells?", Gemma Catolino et al.
> "Distilling Neural Representations of Data Structure Manipulation using fMRI and fNIRS", Yu Huang et al.
> "Biofeedback augmented software engineering: monitoring of programmers' mental effort", Ricardo Couceiro et al.