一、 介绍
在过去十年里出现了许多敏捷软件开发方法,这些方法都希望来代替传统的瀑布式开发模型。在瀑布式开发模型中,软件开发被分成一系列阶段,包括:
l 收集用户需求
l 系统设计
l 开发
l 测试
l 部署
瀑布式开发模型基于这样的一种假设,就是:开发过程的每个阶段在下一个阶段开始时都是百分百的完成。这也导致了瀑布式开发模型的一个最大的缺点:设计上的错误往往必须到程序部署时才能发现,而此时项目都已经接近尾声,修复错误的代价是巨大的。
XP和FDD都是希望通过迭代式开发来避免瀑布式开发模型的缺点,每次迭代都意味着在较短的时间内(通常是1-3周)完成上述的所有的步骤,这就保证了即使设计时有错误,也能在开发的早期发现。
1. eXtreme Programming
XP最初是作为尝试简化和提高软件开发的一种开发方法。大部分软件项目开发都被看作是小心翼翼实现用户的需求,而XP的重点在于强调用户的满意。
XP项目一开始就是收集用户素材(User Story),用户素材由用户编写,是一段与技术无关的文本,其目的在于提供一些特殊场景的详细描述,而不是用来估计系统的复杂性。用户素材的所有细节必须在它实现之前得到客户的确认。
紧接着就是制定发布计划。发布计划确定在系统的哪个发布版本中有哪些用户素材需要实现。每个发布版本都要经过好几次迭代,每次迭代实现一些用户素材。一次迭代包括如下阶段:
l 计划:选择要实现的用户素材及其要明确的细节
l 编码:实现用户素材
l 测试:至少每个类都要有相应的单元测试
l 验收测试:如果测试成功,新功能开发完成;如果失败,则进入下一次迭代
XP的精华主要在于:
l 简单:设计最简单的,可以work的方案。大部分项目中,开发人员往往把大部分时间都浪费在设计一些通用的解决方案上,以期适应将来可能变化的用户需求、运行平台等。要知道有时大部分变化并不是按开发人员最初想象的那样变化。
l 沟通:这既包括开发人员之间的沟通,也包括开发人员和客户的沟通。沟通是成功的关键,因为常常会出现开发人员对用户的需求不了解或误解从而造成开发的系统与客户期望的不一致。
l 测试:测试是XP的基础。XP的实践是每个开发人员可以在任何需要的时候修改任何代码,如果引入了BUG,单元测试应该能够理解捕获BUG。
2. Feature Driven Development
FDD是由Jeff De Luca和Peter Code提出来的。FDD在需求和开发步骤上要比XP更加正式,而且还具有精确跟踪进度的能力。
FDD开发过程主要包括这样两个阶段:
l 确定待实现的特征集
l 一次实现一组特征
确定特征集是一个非常严格的过程。这一步质量的好坏会影响项目被跟踪的准确性,代码具有可维护和可扩展的能力。这个过程需要客户全职参与,这个过程的产品是一组描述问题域的UML图。
从UML图中产生一系列特征,这些特征再以客户和开发人员都能懂的语言描述。举一个购物车的例子:客户要登录在线商店去购买货物,UML图可能包括这些类图:购物车类、物品项类、客户类。这个UML图的特征集可能如下:
l 为客户创建一个购物车
l 增加一个新的物品到购物车
l 列举购物车中的物品