最佳编程实践的基于证据的研究?

7

当寻求关于良好编程实践的建议时,典型的答案是敏捷软件开发、测试驱动开发或设计模式的变化。然而,据我所知,这些方法都没有使用科学方法证明过(如果我在这方面有误,请随时纠正我)。

我想知道,是否有关于基于证据的开发实践的好资源?


2
似乎太过宽泛,也许您应该更具体地说明您感兴趣的实践是什么。有一些关于敏捷开发的经验研究。我认为在软件工程领域没有任何真正的科学证明,因为它并不像数学那样是一门科学。 - Gabriel Ščerbák
1
我不明白为什么这是不可能的。例如,让一组人使用旧的瀑布模型方法来解决任务,另一组人使用迭代方法来解决任务,然后再比较结果,这似乎是可行的。 - StackedCrooked
1
是的,你可以这样做,有些人已经在小范围内这样做了,但是你必须使用许多组来进行任何形式的统计有效性验证,因为除了所使用的方法论之外,总会有其他变量在起作用。 - Don Roby
1
@donroby - 更不用说在工业界内实际进行足够数量的这些实验所涉及的成本了。我想看看一个项目经理向高层管理解释两个并行开发团队将会延迟交付的情况。其中一个团队是因为最初的范围包含了一个基本错误,另一个团队则是因为设计烂透了。也许可以组建第三个团队来把两次尝试拼凑在一起? - Alex
3个回答

5
如果您真的对此感兴趣,最好的信息来源将是学术期刊或IEEE,正如donroby所提到的那样。如果您拥有一所大学的学位并且仍然是校友会成员,则可以通过大学图书馆访问信息(至少在澳大利亚是这样运作的。校友可以以较低的价格获得大学图书馆的会员资格,并获得许多学生使用的资源。)
编辑:大多数信息不会是实验性的,而是项目和调查研究的研究。在这种情况下,您无法真正应用科学方法;它更接近社会科学,而不是像化学和物理学这样的硬科学。

1
一项调查如何不是实验性的?您认为他们是通过将某些测量设备连接到患者身上来测试止痛药物,还是询问/调查有多疼痛呢? - JeffO
抱歉,我不打算开始那些争论。 - eaglestorm

3
有一些关于特定敏捷实践影响的研究已经进行,但是它们肯定不够完整。设计模式可能也有类似的工作水平。
我在这里提供的链接绝不是决定性的,但具有一定价值,并且还参考了其他值得查看的研究。
- IBM和NCSU关于TDD的研究 - IEEE Transactions on Software Engineering上发表的有关配对编程的研究 阅读这些的价值部分在于理解你所提出的问题的复杂性和困难性。
真正重要的证据将由您自己的经验提供,如果您被说服尝试其中一些实践。这也将是难以量化的,但您可能能够决定这些实践是否适合您。

+1 @donroby 还要注意的是,仅仅因为某个人失败或成功了,并不意味着在其他项目或其他人身上也会有同样的结果。需要具备丰富的经验和强大的客观思考能力,才能在这些领域获得有价值的见解。 - eglasius
@eglasius - 是的!这差不多是我试图传达的,“最重要的证据将由你自己的经验提供”。 - Don Roby

2
我所知道的关于软件工程科学证据最好的综合参考资料是《软件工程的事实与谬误》。这本书简明扼要,引用了原始来源(或者直接说明没有),写得很好,价格也不贵。
第二好的参考资料是《代码大全》,但它更长,并且不太专注于证据本身。尽管如此,这仍然是一本必读的书。
一旦你阅读了这两本书,值得看一下IEEE软件杂志上的“证据之声”系列文章。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接