《Agile Method – by Martin Fowler》关于敏捷开发

敏捷开发方法相对于传统的软件开发方法的一个明显的不同就是敏捷开发是与代码为主的,强调代码是文档的主要部分。相对于传统的软件开发方法,敏捷开发方法有以下的特点:

(1)敏捷开发方法是适应性比预见性更重要;

(2)敏捷开发是以人为本而不是以项目为本。

      敏捷开发方法之所以提出适应性比预见性更重要是因为需求的变化往往是不可预见的,因此强调软件开发要有很好的适应性,预见性显得不是那么重要;作者在文中 提出的解决的方法是迭代(Iterations),利用迭代控制不可预见的过程。敏捷开发中提出把人放在首要位置,但是可能会遇到一些问题,但是作者给出 了相应的解决方法,作者提出了程序员要对自己设计的模块负责,描述了管理以人文本的项目的方法,并且提到了商业领导的职责是什么。

      敏捷开发过程往往是一个自适应过程,要不断的在需求的变化下有一定的适应能力。下面作者就提到了一些比较流行的敏捷开发方法:

(1) XP(极限编程)。XP是一个轻量级的、灵巧的软件开 发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以 从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的 小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整 开发过程。

(2)SCRUM方法论。Scrum是一种迭代式增量软件开发过程,SCRUM方法论中其核心仍然迭代和增量,首先对于产品需求会划分为多个迭代或增量,每个迭代都需要在1个月能够交付,而一个月即是一次冲刺,而一个迭代版本又需要转化到每天的进度跟踪和问题解决,这就是每天的15分钟会议(每日站立会议),在会议上必须回答当天的进度,明天的计划和是否存在问题。

(3)Crystal Methods-水晶方法。水晶方法把 开发看作是一系列的协作游戏,而写文档的目标就是只要能帮助团队在下一个游戏中取得胜利就行了。水晶方法的工作产品包括用例、风险列表、迭代计 划、核心领域模型,以及记录了一些选择结果的设计注释。水晶方法也为这些产品定义了相应的角色。然而,值得注意的是,这些文档没有模板,描述也可不拘小 节,但其目标一定要清晰,那就是满足下次游戏就可以了。我总是将这些思想以下面的方式向我的团队成员表达:通过它们,你只要了解你明天加入这个团队所要知 道的内容就行了。对于水晶方法论,根据方法论的轻重可以分为透明水晶和橙色水晶等。透明水晶一般是轻量级的团队适用。不管是哪种水晶,都会对团队的角色, 团队的工件和产出,核心实践,支持过程等进行定义。

(4)上下文驱动测试。以测试驱动开发也是提高软件项目适应性的一种方法。

(5)精益开发

(6)(理性)统一过程。软件项目最后肯定是要将各个模块组合起来的,敏捷开发最后也需要一个理性的统一过程;当然这样是用例驱动的过程。

posted @ 2012-11-12 13:04  LuffyWX  阅读(594)  评论(4编辑  收藏  举报