Guushuuse .NET

领域驱动设计==哲学

导航

Agile Software Development(敏捷软件开发)

敏捷软件开发是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。
对于企业应用软件开发领域来说,2001年是一个分水岭。在这一年,以Kent Beck、Martin Fowler、Robert.C Martin 为首的16位极具号召力软件行业专家共同提出了敏捷软件开发宣言:
1. 个体和交互胜过过程和工具
2. 可工作软件胜过面面俱到的文档
3. 客户合作胜过合同谈判
4. 响应变化胜过遵循计划
虽然右项也具有价值,但是我们认为左项具有更大的价值。

比较有影响力的敏捷软件开发方法:
1. Extreme Programming (XP)
2. Scrum
3. Crystal family of methodologies
4. Feature-Driven Development
5. Agile Modeling (AM)
6. Adaptive Software Development
7. Dynamic System DevelopmentModel (DSDM)

敏捷软件开发的原则:
1. 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意
2. 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势
3. 经常性地交付可以工作的软件,交付的间隔可以从几星期到几个月,交付的间隔越短越好
4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作
5. 围绕被激励起来的个体构建项目。给他们提供所需环境和支持,并且信任他们能够完成工作
6. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈
7. 工作的软件是首要的进度度量标准
8. 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持长期恒定的开发速度
9. 不断地关注优秀的技能和好的设计会增强敏捷能力
10. 简单——使未完成的工作最大化的艺术——是根本的
11. 最好的构架、需求和设计出自于自组织的团队
12. 每隔一定时间,团队在如何更有效地工作方面进行反省,然后对自己的行为进行调整

敏捷软件需求管理:
1. 强调软件需求不是事先设计好的,而是通过和用户反馈总结出来的。因为很多时候客户自己也不清楚需求,要求客户事先明确需求是不现实的,只能通过和客户的多次反馈,不断的总结和提炼需求。
2. 软件尚未开发之前,就必须让最终用户参与进来,最终用户的参与时间越早,参与程度越深,软件的成功把握就越大,而不是等到开发阶段才让用户参与。
3. 软件需求管理要贯彻软件的整个生命周期,并非只在开发的早期阶段进行,即使到软件测试验收阶段,也随时可能更改需求进行软件开发的迭代。

敏捷软件迭代:
1. 强调24小时响应能力,特别是对于SAAS类型的软件,一旦客户提出新的合理功能要求,或者发现bug,应该能够在24小时之内修复bug,完成新功能的上线。
2. 每天都有新的功能改进;每周都有新的功能推出;每月软件都有大的进化,软件开发过程贯穿软件全部的生命周期,软件永远beta 版,这也是SAAS软件的一个特征之一。
3. 只实现功能最简单的版本,不浪费一丝一毫的多余力气,不要过度设计,不要预先假设客户需要的功能。

posted on 2008-05-20 12:26  guushuuse  阅读(2937)  评论(17编辑  收藏  举报