← 最新论文
💻 computer science

The State of Open Science in Software Engineering Research: A Case Study of ICSE Artifacts

本文通过评估近十年 ICSE 会议中 100 个研究工件,揭示了软件工程中可执行性与可复现性之间存在显著差距(仅 40% 可执行,其中仅 35% 成功复现),并据此提出了三条改进指南以提升开放科学实践。

原作者: Al Muttakin, Saikat Mondal, Chanchal Roy

发布于 2026-03-17
📖 1 分钟阅读☕ 轻松阅读

原作者: Al Muttakin, Saikat Mondal, Chanchal Roy

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

这篇论文就像是一次对软件工程界“公开分享”风气的大体检

想象一下,在软件研究领域,科学家们(研究人员)就像是在做各种复杂的烹饪实验。他们发明了新菜谱(算法或工具),并在顶级烹饪大赛(ICSE 会议)上展示。为了证明自己的菜是真的好吃、不是作弊,他们被要求把完整的食谱、食材清单和烹饪步骤(也就是“复制包”或“复制件”)打包好,免费分享给所有人。

这篇论文的作者们(来自萨斯喀彻温大学的三位研究员)决定:“既然大家都说要分享,那我们就真的去尝尝这些‘外卖’,看看能不能做出来,做出来的味道是不是和作者说的一样。”

他们花了大约650 个小时(相当于一个人全职干了快一年),尝试运行了100 份过去十年里在 ICSE 会议上发表的“食谱包”。

以下是他们发现的“厨房真相”,用大白话和比喻来解释:

1. 现状:虽然“外卖”很多,但能吃的很少

  • 现象:以前大家只把菜名写在论文里,现在大家确实开始把“食谱包”挂在网上了。从 2015 年到 2024 年,挂出来的包越来越多。
  • 真相:但是,只有 40% 的包能真正“跑起来”(就像你拿到食谱,却发现缺了关键的锅,或者步骤写错了,根本做不出菜)。
    • 有 36% 的包完全打不开(就像食谱被撕了一半,或者食材全烂了)。
    • 有 24% 的包只能做出一部分(比如汤做好了,但配菜没熟)。
    • 只有 40% 的包能完整运行。

2. 难度:想“吃”到这些菜,你得先当“修理工”

即使那些能运行的包,也绝不是“开箱即用”的。

  • 比喻:这就好比你买了一个号称“傻瓜式”的组装家具,结果发现螺丝少了一半,说明书是乱码,而且还需要你自备一台特殊的电钻
  • 数据
    • 只有 32.5% 的包不需要改任何东西就能直接运行(这是极少数幸运儿)。
    • 剩下的 67.5% 都需要你动手修改。有的只是改改路径(低难度),有的需要重写代码、解决版本冲突(高难度)。
    • 作者们为了运行这些包,花费了大量精力去“修修补补”,就像在厨房里一边做饭一边还要自己造锅、找食材。

3. 为什么“做不出来”?(三大拦路虎)

作者们把导致失败的原因归纳为三类,就像做饭失败的三个原因:

  • 原因一:环境没配好(缺锅少灶)

    • 比喻:食谱上说“用大火炒”,但没告诉你你的炉灶是电磁炉还是煤气灶,也没说需要多少度的油。很多包缺少具体的操作系统版本、硬件要求(比如显卡型号)或软件依赖
    • 结果:你在 Windows 上跑,作者是在 Linux 上跑的;你的 Python 是 3.10 版,他的是 3.6 版。一跑就报错。
  • 原因二:说明书太烂(乱码食谱)

    • 比喻:食谱上写着“加适量盐”,但没写多少克;或者步骤是“先切菜,再点火,然后……哦对了,忘了说要把菜洗了”。
    • 结果:很多包没有文档,或者文档含糊不清,甚至关键步骤直接缺失。作者们只能靠猜,猜错了就失败。
  • 原因三:食材过期或丢失(缺斤少两)

    • 比喻:食谱里提到了“特制酱料”,但链接点进去是 404 错误;或者代码里引用了作者电脑里才有的文件,没上传到网上。
    • 结果:代码和依赖项不匹配,或者关键数据文件找不到了。

4. 最扎心的发现:就算做出来了,味道也不对!

这是论文最惊人的发现。

  • 比喻:假设你千辛万苦,修好了锅,补全了食谱,终于把菜做出来了。结果一尝,味道和作者描述的不一样
  • 数据:在那些成功运行的 40 个包里,只有 35% 的结果和论文里写的一模一样。
    • 这意味着,超过一半的成功运行,其实并没有真正复现出作者当年的实验结果。
    • 原因可能是:作者没提供验证结果的脚本,或者结果本身就不稳定。

5. 作者给出的“厨房建议”(三条行动指南)

为了让未来的“食谱”更好用,作者提出了三条建议:

  1. 写一份完美的说明书(G1)

    • 不要只给代码。要像写产品说明书一样,包含:项目是干嘛的、需要什么电脑配置、怎么安装、怎么运行、怎么验证结果。
    • 比喻:就像宜家家具,不仅要给木板,还要给详细的图纸、螺丝型号和组装视频。
  2. 在“干净”的厨房里测试(G2)

    • 作者们在提交前,要在一个全新的、没装过乱七八糟东西的环境里试跑一遍。
    • 比喻:别在你自己那台装了无数插件、缓存了一堆旧文件的电脑上跑,要换个新电脑试试,确保没有“隐形依赖”。
  3. 既给“半成品”也给“原材料”(G3)

    • 最好同时提供容器化环境(比如 Docker,就像把整个厨房打包成一个盒子,里面锅碗瓢盆都配好了,直接拿来就能用)和源代码(让你可以修改和扩展)。
    • 比喻:既给你一份“微波炉加热即食”的套餐,也给你一份“生食材 + 详细菜谱”,满足不同人的需求。

总结

这篇论文告诉我们:在软件科学界,“分享”只是第一步,“能跑”和“能复现”才是真本事。

目前的情况是,虽然大家很热情地分享“食谱”,但很多都是“半成品”甚至“残次品”。如果不改进文档质量、不标准化环境配置,所谓的“开放科学”就只是一句空话。作者希望通过这次“体检”,让未来的研究更透明、更可信,让后来者不再需要花几个月时间去修一个本该能直接运行的代码包。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →