英文原文链接指引:→ 为什么软件开发方法论让你觉得糟糕?
原文中围绕软件开发实践和方法论,总有很多教条式的口水仗。
在其中,阶段式方法能够有效管理软件开发过程的风险,还是说只是风险管理中的花哨噱头?TDD真的能够促生出高品质软件?结对编程是代码评审的有效替代抑或只是增加了商议沟通代价?
对此我想说,虽然缺乏证据判断这些论调的谬处,但有两条常用的法则能够帮助我们选择好的实践,同时提升我们所提供软件的价值——划小开发周期以及提升反馈效率。
Michael Feathers给出了以下观点:
我认为,我们最终还是得倚重开发者的能力,这才是个更重要的考量因素,而非选择哪门语言或纠结于方法论间的细微差别。坦诚地说,我们都清楚这点,但我们看起来好像过度纠结于开发能力是关键因素这事儿上。或许这是个经济学里一个被广泛接受的观点的引申,要是人人都可以替代(随便找个人都能顶上),那该有多好呀?但事实并非如些。
首先,我们先来了解什么是软件开发方法论
定义:
软件开发方法论(SDM)是通过生成代码和使用不同的工具来创建程序的一种方法。这基本上是指过程本身及其管理方式,以确保在合理的预算内按时完成开发。软件有多种形式开发方法论可以采取,这取决于所创建的程序的性质和所使用的工具。
分析:
然而,一般来说,SDM是由确保将任务划分为可管理的元素和经过无数次扩展迭代的过程的需要来控制的,要实现某一个功能有许多不同的框架可以在软件开发方法中使用,它们通常用于组织创建新程序的过程。多个框架可以一起使用来创建单个SDM,然后可以将许多方法组合到SDM系列中。使用软件开发方法通常可以建立和鼓励在为开发团队。在开发过程中,如果没有一个SDM可供参考,开发过程很容易变得混乱,并导致资金和时间的浪费。
这是最常见和最简单的方法之一软件开发方法的类型被称为"瀑布"模型在使用SDM之前,必须为特定的过程建立特定的目标,并且整个开发周期需要分解成不同的元素。然后可以接近一个元素,并通过一系列步骤来执行,每个步骤都被视为创建"瀑布"概念的向下过程软件开发方法学在许多情况下已经不再使用,因为新的方法已经取代了它,但它仍然是SDM应该如何构造的一个基本例子。
"螺旋"模型已经成为一种流行的软件开发方法论,因为它设法在一个单一的可视化中捕获过程的两个重要元素。一般来说,螺旋线是从中心开始的一条直线,沿着同心环向外移动,同心环变大,但通过同一个圆形。这被用作软件开发的模型,作为程序开始时很小,在开发过程中规模不断扩大。当这种情况发生时,它也会在不同的迭代过程中经历许多阶段,例如开发、评估和分析。所有这些都创建了一个单一的统一过程,随着重复步骤的进行,这个过程会变得越来越大,就像螺旋一样。