已知的未知:实证软件工程
原文由 Hillel Wayne 于 发布,订阅该博客
本场演讲的这一版本发表于DDD Europe 2024。
科技是一个数万亿美元的产业,但我们对其最佳实践却几乎一无所知。实证软件工程(ESE)研究的是在软件开发中什么方法有效、为何有效。我们不再依赖直觉,而是收集数据、开展研究,并对结果进行同行评审。本次演讲将介绍我们如何通过实证方法探寻软件领域的事实、会遇到哪些挑战,最后还会提供一份查找现有研究的指南,并概述我们在 DDD 方面的一些发现。
幻灯片见此处。
参考资料
我在演讲中引用了大量论文,以下是相关链接,供你自行查阅:
引言
- 大数据比笔记本电脑还慢
为何关注
研究方法
- 对照试验
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 中具体做了什么,以及这些做法对项目产生了哪些具体影响。例如,采用限界上下文的微服务架构师是否比完全不使用 DDD 的架构师创建了更多的服务?通过事件风暴建模的领域与未采用该方法的领域在形态上是否有所不同?使用 CQRS 的系统中最常见、独有的问题有哪些?
有没有关于如何教授“抽象思维”的研究?
凭印象来说,我首先会去看 Shriram Krishnamurthi 的论文集。他的团队专注于如何更好地教授抽象,并为此开发了许多有趣的工具来探索这一课题。
研究“哪种语言更容易出错”真的有意义吗?也许不同语言吸引的是不同类型的人,人才是关键。
在反驳原论文的视频中,Jan Vitek 也认同这是原论文存在的一个根本性问题,但他在复现研究中重点关注了方法论上的错误,因为这些错误更容易被确凿地证明。详情请参阅我的长文。
从软件开发者采用一项新技术,到科学家对其展开研究,通常要隔多久?
不知道,抱歉。
随机一篇博客
评论
登录后参与讨论