软件最佳实践的可引用参考资料

计算科学 参考请求
2021-12-21 23:56:27

我目前正在写我的博士论文。我花了很大一部分博士学位来清理和扩展现有的科学代码,应用以前没有使用过的软件工程最佳实践,并想在我的论文中写下这一点。而不是简单地说“我添加了单元测试”,我希望能够编写如下内容:

J. Doe 在 1975 年发明了单元测试Bloggs 等人最近的一项研究表明,单元测试将软件错误的发生率降低了 73%...... 代码库中添加了 234 个单独的单元测试,由 Timpkins 等人创建的 xUnit 框架管理[23][24][25]

我正在寻找广泛接受的软件工程最佳实践的可引用学术参考(最好是同行评审期刊中的文章,我可以获得 DOI、BibTeX 等),特别是:

  • 单元测试
  • 版本控制
  • 模块化/关注点分离
  • 基于分析信息的性能分析/优化
  • 错误/问题跟踪

我正在寻找有关最初发明和后续有效性评估的信息。如果有一篇评论文章在一个地方列出了所有这些东西,那就更好了。

3个回答

Steve McConnell 的书Code Complete,第 2 版有一个广泛的参考书目,从软件开发人员而不是计算科学家的角度讨论这些问题。这本书开始变得有点过时了,因为它已经接近十年了,所以它没有涵盖更近期的测试方法,比如行为驱动开发。尽管如此,它是我所知道的最接近关于软件构建的综合评论文章的内容。您还可以在 IEEE Software 中查找文章。

在计算科学方面,我认为最好的文章可能是arXiv 预印本 DavidKetcheson 在“科学计算的最佳实践”中引用的PLoS 版本。我说这来自工程背景,很少有人引用 arXiv 参考文献或发布 arXiv 预印本,因此,引用“真正的期刊文章”(当然,撇开所有关于科学出版的问题,目前正在争论) 更受欢迎(我觉得这就是为什么那些作者选择在期刊上发表它的原因)。

DavidKetcheson 和我引用的 PLoS 论文的作者是一个名为Software Carpentry的组织的一部分,该组织举办(通常为 2 天)“新兵训练营”,向科学家传授软件开发的一些最佳实践和对科学家有用的计算技能(不仅仅是计算科学家)。Software Carpentry 网站有大量与科学软件开发相关的参考书目。如果您对这些问题感兴趣,我鼓励您与他们联系;他们一直在寻找更多软件开发最佳实践的倡导者,以各种身份进行志愿服务。免责声明:我是 Software Carpentry 的志愿者。)

参与软件开发最佳实践的另一个常见理由是可重复性。维多利亚·斯托登(Victoria Stodden)整理了一长串可能感兴趣的可重复研究参考资料,具体取决于您想说的内容。

我没有关于这些想法/实践的起源的参考资料。但这里有一些最近的相关参考资料:

恕我直言,在科学证明的方法的背景下,我会非常小心地引用“最佳实践”。大多数实践源自“那些被认为是参与这些项目的大师似乎对一组项目有效的方法”,而不是源自对不同方法的严格测试。软件工程中的变量和人为因素太多,无法说明“最佳实践”的可参考列表(例如,适用于一个项目的实践将在另一个项目上完全失败)。

我会通过说明您的项目需要什么、为什么需要它并添加对所用方法的引用以及您使用它们的原因来处理它。

我也倾向于报告可量化的结果,而不是引用来陈述你的观点。例如,如果您的单元测试发现了 100 个错误,其中 10 个严重到足以对先前发布的结果产生怀疑。与你知道单元测试起源的声明相比,这是在你的博士学位中拥有的更强大的声明。

编辑:(修正错字) - 回答以下问题 - 我经常将抚养孩子作为软件项目的类比。有很多方法和经过测试的方法来养育他们,尝试用一种方法养育您的孩子,因为它适用于平均或测试的子样本,只要您的孩子与测试的孩子相同,它就会起作用。最好了解许多方法并应用适用于您的实例的方法。是的,单元测试可能会得到证明,但仅基于此应用它可能意味着您的项目上市较晚,因此未能实现其目标(如果这是目标)。我是说应用一种方法来获得结果并给出该结果的结果,在我看来,在论文中比列出你根据其他项目尝试过的东西更好——当然,除非论文的主题是测量方法:)