引用了软件最佳实践的参考


14

我目前正在写博士学位论文。我花费了大量的博士学位来清理和扩展现有的科学代码,应用以前未使用的软件工程最佳实践,并希望在论文中对此进行介绍。与其说“我添加了单元测试”,还不如说这样:

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

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

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

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


1
这是否帮助:plosbiology.org/article/...
AKID

如果添加参考文献的目的是说服读者更好的做法更好,那么直接解释为什么更好的做法可能更有意义。简单地提供参考可能就没有说服力了。请记住,其中许多事情在本科软件工程课程中很常见,可以在标准教科书中找到,并且不一定是前沿研究。
Kirill 2014年

我的经验是,您既需要动力,也需要参考。昨天我刚刚与同事(他们都是在实践中的科学家)进行了交谈,他们认为临时测试方法效果更好(简短的回答:他们没有)。重要的是用计算科学家似乎关心的指标来表达动机:更快地撰写更高影响力的论文,获得更正确的结果(请参阅有关可重复研究的链接)。指向参考,因为人们会声称您没有明显的好处而在这些问题上与您抗争。
Geoff Oxberry 2014年

在所有可能的情况下,将要研究我的论文的人都是化学或材料科学教授,而不是计算科学专家。他们可能会有一些编写代码的经验,但是几乎可以肯定他们会做任何认真的编码,因为他们本身就是学生或早期的博士后。我需要的是这样写的:“我在博士学位那年花费的那年,我实​​际上在做一些有用的事情,而不仅仅是懈怠”
user1915639 2014年

Answers:


13

史蒂夫·麦康奈尔(Steve McConnell)的书《代码完整》(Code Complete),第2版中有大量书目,从软件开发人员的角度而不是计算科学家的角度讨论这些问题。这本书开始有点过时了,因为它已经有近十年的历史了,所以它没有涵盖行为驱动开发等最新的测试方法。但是,这是我所知的与软件构建综合评论文章最接近的内容。您也可以在IEEE软件中查找文章。

在计算科学方面,我认为最好的文章可能是arXiv预印本DavidKetcheson 的PLoS版本,在“科学计算的最佳实践”中被引用。我说这是从工程学背景出发的,因为较少的人引用arXiv参考文献或发布arXiv预印本,因此引用了“真实期刊文章”(当然,现在正在讨论的有关科学出版的所有问题都被搁置了) )被更有利地看待了(我得到的印象是,为什么那些作者选择将其发表在期刊上)。

我和DavidKetcheson引用的PLoS论文的作者是一个名为Software Carpentry的组织的一部分,该组织进行了(通常为期2天)“新兵训练营”,以向科学家们介绍一些软件开发的最佳实践和对科学家有用的计算技能(而不仅仅是计算科学家)。Software Carpentry网站上有大量与科学软件开发相关的书目。如果您对这些问题感兴趣,建议您与他们联系。他们一直在寻找更多的软件开发最佳实践的拥护者,以各种能力开展志愿活动。(免责声明:我自愿参加Software Carpentry。)

进行软件开发最佳实践的另一个常见理由是可重复性。维多利亚·斯托登(Victoria Stodden)精心挑选了很多可重复的研究参考文献,这些参考文献可能取决于您想说的内容。


“软件木工”阅读列表看起来很有帮助。
user1915639


-2

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

我将通过说明您的项目需要什么,为什么需要它并添加对使用的方法的引用以及您为什么使用它们的方法来解决它。

我也倾向于报告可量化的结果,而不是引用陈述您的观点。例如,如果您的单元测试发现了100个bug,其中10个严重到足以使人们对先前发布的结果产生怀疑。与知道单元测试起源的陈述相比,这是在博士论文中要有的更有力的陈述。

编辑:(固定错字)-回答以下问题-我经常给抚养孩子做一个比喻软件项目。有多种方法和经过测试的方式来抚育孩子,只要您的孩子与被测试的孩子相同,就可以尝试一种方法抚养孩子,因为它适用于平均值或经过测试的子样本。最好了解许多方法并应用适用于您的实例的方法。是的,单元测试可能已被证明,但是仅基于该测试就可以应用,这可能意味着您的项目迟到上市,因此无法达到目标(如果这是目标)。我的意思是,我认为,在论文中应用一种方法来获得结果并给出结果的结果要好于列出您根据其他项目尝试过的事情-除非论文的主题当然是测量方法:)


1
实际上,研究已经对缺陷检测策略进行了比较,例如单元测试,结对编程,使用调试器逐步执行程序以及正式的代码审查并评估了其有效性。没错,每种策略都有自己的位置。软件开发社区在文献中认识到了这一点,并提出了对于不同类型的项目可能最有效的建议。如果“太多的变量和人为因素”确实是制定最佳实践的障碍,那么我们就不会将它们用于医学或其他具有类似复杂问题的领域,但是我们会这样做。我不赞成你的观点。
Geoff Oxberry 2014年

“ 您的博士论文中更有糊涂的说法”是一个可爱的错字
denis 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.