| 敏捷是另一颗银弹吗? |
|
——转自吴穹博士
这个问题其实是一个伪问题,因为大多数软件从业人员都相信没有银弹,但很多时候这一观念需要不断被强化。Ivar就说过,软件行业是一个时尚行业,人们不断将旧的概念包装和组合来创造新的概念。在过去十年中,先是面向对象/UML而后是CMM(I)被当成银弹来出售。据我个人的观察,敏捷有被神化成下一颗银弹的趋势。 那么什么是敏捷(Agile)呢?虽然敏捷这个概念近来很火爆,但当你向敏捷一个的狂热支持者提出这个问题的时候,那多半会看到一张茫然的脸。所以,我从Wikipedia中找到了下面的定义,我相信其他版本的定义也大同小异: (Agile Software Development is a conceptual framework for software development that promotes development iterations, open collaboration, and adaptability throughout the life-cycle of the project.) 在这个定义中,指出了敏捷的三个要素:迭代开发、坦诚合作和自适应性,下面我们分别对这三个要素进行以下分析。 我们需要注意,迭代开发并不是一个新的概念,也不是敏捷所特有的。RUP在十年前就在强调迭代开发了。其实,敏捷在迭代方面并没有引入什么新的东西,而且我注意到目前在敏捷语境下已经出现了一些对迭代误用(这一话题在以后的文章里在展开吧)。下面是Wiki里有关敏捷和其他迭代开发方法的异同: 绝大多数敏捷方法都沿用了迭代和增量式的开发方法,强调在短时间段内构建可以发布的软件。敏捷开发与其他开发模型的不同之处在于:时间段是按周而不是按月进行度量的,工作也以高度协作的方式展开。同样区分于其他模型的是,绝大多数敏捷方法将时间段限制为严格定死的时间盒。 (Most agile methods share other iterative and incremental development methods' emphasis on building releasable software in short time periods. Agile development differs from other development models: in this model time periods are measured in weeks rather than months and work is performed in a highly collaborative manner. Most agile methods also differ by treating their time period as a strict timebox.) 坦诚合作其实才是敏捷的精髓,如Ivar所说,敏捷其实是有关Social Engineering的。敏捷的主要贡献在于他更多地思考了如何去激发开发人员的工作热情,这是在软件工程几十年的发展过程中相对被忽略的领域。如何将敏捷融入到整个软件工程的体系当中,这将是下一篇文章讨论的内容。 自适应性其实是一种后退,但是一种明智的、合理的后退。长期以来,人们经常试图将成功应用于建筑、机械等其他领域的项目管理方法强加到软件身上。这些方法往往非常强调可预测性,但由于软件本身的特性,往往给开发过程增加了不必要的成本。正如Walker Royce所说,开发软件其实更象拍电影,所以管理的挑战更大。敏捷提出的自适应性其实是减低了对项目可预测性的不合理要求,解放团队让他们关注与交付客户价值。 自适应方法关注快速适应不断变化的现实情况。随着项目需求的变化,自适应的团队也会随之而变。自适应团队很难准确预测未来的状况。(来自Wikipeida) Adaptive methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. An adaptive team will have difficulty describing exactly what will happen in the future. (from Wikipedia) 重温一下敏捷宣言---Agile Manifesto:
|
| 下一篇 > |
|---|

