敏捷软件开发综述
——崔海营
一.敏捷软件开发的概念
敏捷软件开发又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏
捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件
开发中人的作用。
二.敏捷开发的核心——迭代开发
迭代开发是有节奏地小步快跑,但建立在坚实的质量基础上。
关键要点:每一次迭代都建立在稳定的质量基础上,并做为下一轮迭代的基线,整个系统的功能随着迭代稳定地增长和不断完善。 每次迭代要邀请用户代表(外部或内部)验收,提供需求是否满足的反馈
迭代推荐采用固定的周期(2-4周),迭代内工作不能完成,应当缩减交付范围而不是延长周期。
三.敏捷软件开发方法由 极限编程XP, Scrum ,精益软件开发 , 动态系统开发, 特性驱动开发 ,水晶开发等几种开发方法组成。
1)极限编程XP
极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:
加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员
和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
极限编程中有四个核心价值是我们在开发中必须注意的:沟通、简单、反馈、勇气; XP用“沟通、简单、反馈、勇气和谦逊”来减轻开发压力和包袱;
基于敏捷的核心思想和价值目标,XP要求项目团队遵循几个核心实践:
团队协作,规划策略,结对编程,测试驱动开发,重构,简单设计,代码集体所有权,持续集成,客户测试,小型发布,编码规范,系统隐喻;
2) Scrum
Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。包括了一系列实践和预定义角色的过程骨架。
Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。
3)精益软件开发
七条原则:
尊重一线人员 ,消除浪费 ,增强学习 ,尽量延迟决定 ,嵌入质量,快速交付,整体优化;
四.敏捷软件开发方法的特征(原则和方法)
迭代式开发 :迭代开发将整个软件生命周期分成多个小的迭代(一般2-4周),每一次迭代都由需求分析、设计、实现和测试在内的多个活动组成,每一次迭代都可以生成一个稳定和被验证过的软件版本。
增量交付:产品在每个迭代期结束时就要交付,而不是一次性的最终交付,并且每次交付都能部署到用户得应用环境中去。
开发团队和用户反馈推动产品开发:通过团队的交互以及用户的反馈可以更好的完成产品的设计及制作;
持续集成:一项软件开发实践,其中团队的成员经常集成他们的工作,通常每人每天至少集成一次,每次集成通过自动化构建完成。
开发团队自我管理:一个拥有积极的,自我管理的,具有自由交流风格的团队是敏捷开发所必需的。
五.敏捷开发的宣言
个体和交互 胜过 过程和工具
可以工作的软件 胜过 面面俱到的文档
客户合作 胜过 合同谈判
响应变化 胜过 遵循计划