What We Know We Don't Know: Empirical Software Engineering

Hillel Wayne

私たちが知らないと知っていること:実証的ソフトウェア工学

原文は Hillel Wayne により に公開されました。 このブログを購読する

このトークはDDD Europe 2024で行われたものです。

テクノロジーは数兆ドル規模の産業ですが、どのような実践が最善なのか、私たちはほとんど何も分かっていません。実証的ソフトウェア工学(Empirical Software Engineering、ESE)とは、ソフトウェア開発において何がうまくいくのか、そしてなぜうまくいくのかを研究する分野です。勘に頼るのではなく、データを集め、研究を行い、結果を査読します。このトークでは、ソフトウェアにおける事実をいかに実証的に見つけ出すのか、そして私たちが直面する課題について解説し、最後に既存の研究の探し方ガイドと、DDDについてこれまでに分かってきたことの概要で締めくくります。

スライドはこちらからご覧いただけます。

出典

トークで参照した論文をまとめました。リンクからご自身で読むことができます。

イントロ

ビッグデータはノートPCより遅い

Scalability! But at what COST?

なぜ重要なのか

セクションの参考文献

The Pragmatics of TDD

TDD is dead. Long live testing.

手法

統制実験

Comparing syntax highlightings and their effects on code comprehension

自然実験

Simple Testing Can Prevent Most Critical Failures

暴走した自然実験

A Large Scale Study of Programming Languages and Code Quality in Github(欠陥のある元論文)

On the Impact of Programming Languages on Code Quality(追試論文)

この騒動についての私の6,000語にわたる解説

観察研究

Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names(プレプリント)

DDD

サーベイ論文

Domain-Driven Design in Software Development: A Systematic Literature Review on Implementation, Challenges, and Effectiveness

注目すべき論文

Design, Monitoring, and Testing of Microservices Systems: The Practitioners’ Perspective

Practitioner Views on the Interrelation of Microservice APIs and Domain-Driven Design: A Grey Literature Study Based on Grounded Theory

Refactoring with domain-driven design in an industrial context

Tackling Consistency-related Design Challenges of Distributed Data-Intensive Systems - An Action Research Study

なお、サーベイ論文には他にも興味深い論文が多数掲載されていますが、ここではトークで取り上げたものだけを紹介します。

その他の資料

おすすめの文献

Teaching tech together

Leprechauns of Software Engineering

The Programmer’s Brain

Making Software

無料で読める研究リソース

It Will Never Work In Theory

ACM digital library

ArXiv

質問

科学はDDD全体について何と言っていますか?良いものなのでしょうか、悪いものなのでしょうか?

これは科学が答えられる問いではありません。「競争は良いことか」と問うようなもので、対象範囲が広大すぎ、評価基準も曖昧すぎて、意味のある答えを出すことができません。

そうではなく、DDDの一部として人々が実際に行っている具体的な実践や、それがプロジェクトに与える具体的な影響に目を向ける必要があります。たとえば、境界づけられたコンテキスト(bounded contexts)を適用するマイクロサービスアーキテクトは、DDDをまったく使わないアーキテクトよりも多くのサービスを作るのでしょうか?イベントストーミングでモデリングされたドメインは、そうでないドメインとは「見た目が違う」のでしょうか?CQRSを採用したシステムに特有の、最もよく見られる問題とは何でしょうか?

「抽象化して考える力」をどう教えるかについての研究はありますか?

思いつく限りでは、まずシュリラム・クリシュナムルティ(Shriram Krishnamurthi)の研究群をあたるのがよいでしょう。彼のグループは抽象化をいかにうまく教えるかに焦点を当てており、このテーマを探求する興味深いツールを数多く開発しています。

「どの言語がよりエラーが起こりやすいか」を研究すること自体に意味はあるのでしょうか?言語によって集まる人のタイプが違い、重要なのはそちらの方かもしれません。

元論文を論破した動画の中で、ヤン・ヴィテック(Jan Vitek)は、この点が元論文の根本的な問題だと認めつつ、方法論上の誤りの方がより決定的に証明しやすいため、追試ではそちらに焦点を当てたと述べています。詳しくは私の解説をご覧ください。

ソフトウェア開発者が新しい手法を採用してから、科学者がそれを研究するまで、通常どれくらいの期間がかかりますか?

分かりません、すみません。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント