我們知道的未知:實證軟體工程
原文由 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 在他反駁原始論文的影片中也認同這是原始論文的一個根本問題,但他在重現研究中將重點放在方法論上的錯誤,因為那些錯誤更容易被明確證實。更多細節請見我的解析文章。
軟體開發者採用一項新技術後,通常要隔多久科學家才會開始研究它?
不知道,抱歉。
隨機一篇部落格
留言
登入後參與討論