敏捷开发的必要条件"高手团队"和"软件特征可漂移,但仍可预计成本的小型项目"
前言
一个极端是纯粹的预言性开发,
步骤都是在项目的早期详细地定义好.
另一个极端是纯粹的敏捷过程
没有预计的步骤
正文:
“网络时代”开发软件,需要不断实现新的功能。
敏捷软件开发过程主要针对“网络时代”开发软件的问题。
敏捷方法采用技术上和管理上的过程,这些过程能持续地适应
(1)开发过程中经验的变更,
(2)软件需求的变更
(3)开发环境的变更
原则:
1. 尽早、持续地交付有价值的软件
2. 在项目的整个开发期间,业务人员和开发人员必须天天在一起工作。
3. 欢迎需求变化。
4. 可以工作的软件是主要的进度度量标准。
5. 最好的架构、需求和设计来自于自组织的团队。
6. 传递信息的方法是面对面地交流。
7. 不断地关注最优秀的技术和良好的设计能增强敏捷能力。
8. 简单是根本的。
9. 开发团队每隔一定时间,都会对如何能有效地工作进行反省,然后相应地对自己的行为进行调整。
敏捷开发基于如下假定
假定1:客户要和开发团队协同工作,随时作好和开发人员交流的准备。而且,面对面的交流需要开发人员彼此位于很近的位置。
<1.缺乏对分布式开发环境的支持>
假定2:文档和软件模型在软件开发中不充当重要的角色。
假定3:软件需求和软件开发环境随着软件开发的发展而发展。
假定4:动态适应不断变化的项目和产品特征的开发过程,更有可能开发出高质量的产品。
<2. 缺乏对转包合同的支持:>
假定5:开发人员具有正确地定义和适应过程的经验。
假定6:项目的可见性能主要通过增量和一些度量的传递来获取。
假定7:软件制品(产品和过程)严格的评估仅限于经常非正式的审查和代码测试。
假定8:重用性和通用性不应该是面向应用程序软件开发过程的目标。
<3. 缺乏对创建可复用制品的支持>
假定9:变更的成本不随着时间的变化而显著增加。
假定10:软件可以被增量开发。
假定11:无需为变更作设计,因为任何变更能通过重构代码有效地处理[9]。
<4. 缺乏对大型团队开发的支持:>
<5. 缺乏对开发有严格安全性要求的软件的支持>
<6. 缺乏对开发大型、复杂的软件的支持>
基于如此多的假设,什么项目可以使用敏捷开发呢?
结论:
由于敏捷开发的特征,很难有一个商业的软件开发团队可以采用敏捷开发.
附:<如何理解XP开发>http://www.cnblogs.com/cowbird/archive/2004/08/06/30707.aspx
此文参考<非程序员>40期 敏捷软件过程的局限性