私たちが知らないと知っていること:実証的ソフトウェア工学
原文は Hillel Wayne により に公開されました。 このブログを購読する
このトークはDDD Europe 2024で行われたものです。
テクノロジーは数兆ドル規模の産業ですが、どのような実践が最善なのか、私たちはほとんど何も分かっていません。実証的ソフトウェア工学(Empirical Software Engineering、ESE)とは、ソフトウェア開発において何がうまくいくのか、そしてなぜうまくいくのかを研究する分野です。勘に頼るのではなく、データを集め、研究を行い、結果を査読します。このトークでは、ソフトウェアにおける事実をいかに実証的に見つけ出すのか、そして私たちが直面する課題について解説し、最後に既存の研究の探し方ガイドと、DDDについてこれまでに分かってきたことの概要で締めくくります。
スライドはこちらからご覧いただけます。
出典
トークで参照した論文をまとめました。リンクからご自身で読むことができます。
イントロ
- ビッグデータはノートPCより遅い
なぜ重要なのか
手法
- 統制実験
Comparing syntax highlightings and their effects on code comprehension
- 自然実験
- 暴走した自然実験
A Large Scale Study of Programming Languages and Code Quality in Github(欠陥のある元論文)
On the Impact of Programming Languages on Code Quality(追試論文)
- 観察研究
Fixing Faults in C and Java Source Code: Abbreviated vs. Full-Word Identifier Names(プレプリント)
DDD
- サーベイ論文
- 注目すべき論文
Design, Monitoring, and Testing of Microservices Systems: The Practitioners’ Perspective
Refactoring with domain-driven design in an industrial context
なお、サーベイ論文には他にも興味深い論文が多数掲載されていますが、ここではトークで取り上げたものだけを紹介します。
その他の資料
- おすすめの文献
- 無料で読める研究リソース
質問
科学はDDD全体について何と言っていますか?良いものなのでしょうか、悪いものなのでしょうか?
これは科学が答えられる問いではありません。「競争は良いことか」と問うようなもので、対象範囲が広大すぎ、評価基準も曖昧すぎて、意味のある答えを出すことができません。
そうではなく、DDDの一部として人々が実際に行っている具体的な実践や、それがプロジェクトに与える具体的な影響に目を向ける必要があります。たとえば、境界づけられたコンテキスト(bounded contexts)を適用するマイクロサービスアーキテクトは、DDDをまったく使わないアーキテクトよりも多くのサービスを作るのでしょうか?イベントストーミングでモデリングされたドメインは、そうでないドメインとは「見た目が違う」のでしょうか?CQRSを採用したシステムに特有の、最もよく見られる問題とは何でしょうか?
「抽象化して考える力」をどう教えるかについての研究はありますか?
思いつく限りでは、まずシュリラム・クリシュナムルティ(Shriram Krishnamurthi)の研究群をあたるのがよいでしょう。彼のグループは抽象化をいかにうまく教えるかに焦点を当てており、このテーマを探求する興味深いツールを数多く開発しています。
「どの言語がよりエラーが起こりやすいか」を研究すること自体に意味はあるのでしょうか?言語によって集まる人のタイプが違い、重要なのはそちらの方かもしれません。
元論文を論破した動画の中で、ヤン・ヴィテック(Jan Vitek)は、この点が元論文の根本的な問題だと認めつつ、方法論上の誤りの方がより決定的に証明しやすいため、追試ではそちらに焦点を当てたと述べています。詳しくは私の解説をご覧ください。
ソフトウェア開発者が新しい手法を採用してから、科学者がそれを研究するまで、通常どれくらいの期間がかかりますか?
分かりません、すみません。
記事をランダムに読む
コメント
ログインしてコメントする