软件工程敏捷软件开发.ppt
《软件工程敏捷软件开发.ppt》由会员分享,可在线阅读,更多相关《软件工程敏捷软件开发.ppt(47页珍藏版)》请在课桌文档上搜索。
1、软件工程,第5章 敏捷软件开发,软件工程,内容摘要,敏捷软件开发概述极限编程(XP)方法相关敏捷过程模型Scrum方法动态系统开发方法敏捷建模敏捷统一过程,2,软件工程,敏捷软件开发的产生背景,软件开发的新挑战快速的市场进入时间,要求高生产率快速变化的需求快速发展的技术传统的软件开发方法强调过程和文档对变化的适应能力偏弱,3,提高对变化的适应能力,Martin Fowler认为:提前预测需求是困难的。同样,对项目进行过程中客户需求优先级的变更进行预测也很困难对很多项目来说,软件设计和构建是交错进行的。也就是说,设计需要通过实施构建来获得验证,而在构建的过程中新获得的知识又可以帮助设计从制定计划
2、的角度来看,分析、设计、构建和测试活动并不容易预测,软件工程,4,软件工程,5,敏捷方法的基本观点,强调适应性而不是可预测性经典软件开发方法:通过控制变化实现软件开发的可预测性敏捷软件开发方法:变化是不可避免的,应该通过改善管理实践和工程实践来更好地适应变化强调人在项目中的关键作用敏捷软件开发认为人不是可以互相替换的“编程部件”,而是具有创造力的个体,成功的软件开发活动依赖于人的主观能动性,软件工程,6,软件工程,强调“刚刚好”(Just enough)在保证软件开发有成功产出的前提下,尽量减少开发过程中的活动和制品的方法,即开发中的活动及制品既不要太多也不要太少,7,敏捷方法的产生,从20世
3、纪90年代开始,逐渐产生了一大批敏捷软件开发方法其中比较有影响的包括:极限编程、Scrum、看板方法、精益软件开发方法、水晶软件开发方法(crystal)、自适应软件开发(adaptive software development,ASD)、动态系统开发方法(dynamic system development method,DSDM)等,软件工程,8,敏捷宣言,2001年2月,17位敏捷方法的先驱在美国犹他州召开了为期2天的会议,成立了敏捷软件开发联盟 并发布了“敏捷宣言”该宣言由四个价值观声明组成,并提炼出敏捷软件开发方法必须遵循的12条原则,软件工程,9,敏捷宣言,我们正通过亲身或者协助
4、他人进行软件开发实践来探索更好的软件开发方法。基于此,我们建立了如下的价值观:个体和交互 重于 过程和工具工作的软件 重于 详尽的文档客户合作 重于 合同谈判响应变化 重于 遵循计划也就是说,尽管右项有其价值,我们更重视左项的价值,软件工程,10,软件工程,个体和交互 重于 过程和工具,过程和工具是重要的,但是软件开发中人的作用和交流的作用更需要被进一步强调软件是由人组成的团队来开发的,与软件项目相关的各类人员通过充分的交流和有效的合作,才能成功地开发出得到用户满意的软件如果光有定义良好的过程和先进的工具,而人员的技能很差,或者不能很好地交流和协作,软件是很难成功地开发的,11,软件工程,工作
5、的软件 重于 详尽的文档,可以工作的软件是软件开发工作的最终目标好的必要的文档能帮助我们理解软件做什么,怎么做以及如何使用,是有价值的。但是,软件开发的主要目标仍然是创建可运行的软件敏捷软件开发强调不断地快速地向用户提交可运行的软件(不一定是完整的软件),以得到用户的认可,12,软件工程,客户合作 重于 合同谈判,只有客户才能明确说明需要什么样的软件,然而,大量的实践表明,在开发的早期客户常常不能完整地表达他们的全部需求,有些早期确定的需求,以后也可能会改变由于软件开发的预测性的困难,想通过合同谈判的方式,将需求固定下来常常是困难的敏捷软件开发强调与客户的协作,通过与客户的交流和紧密合作来发现
6、用户的需求,13,软件工程,响应变化 重于 遵循计划,任何软件项目的开发都应该制订一个项目计划,以确定各开发任务的优先顺序和起止日期。然而,随着项目的进展,需求、业务环境、技术等都可能变化,任务的优先顺序和起止日期也可能因种种原因会改变因此,项目计划应具有可塑性,有变动的余地。当出现变化时及时做出反应,修订计划以适应变化,14,敏捷宣言的12条原则,我们的最高优先级是持续不断地、及早地交付有价值的软件来使客户满意 拥抱变化,即使是在项目开发的后期。敏捷过程愿意为了客户的竞争优势而接纳变化 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采用较短的周期 业务人员和开发人员必须在项目的整个阶段
7、紧密合作 围绕着被激励的个体构建项目。为个体提供所需的环境和支持,给予信任,从而达成目标 在团队内和团队间沟通信息的最有效和最高效的方式是面对面的交流,软件工程,15,敏捷宣言的12条原则(续),可工作的软件是进度的首要度量标准。敏捷过程倡导可持续开发。项目发起者、开发人员和用户应该维持一个可持续的步调。持续地追求技术卓越和良好设计,可以提高敏捷性 以简洁为本,它是减少不必要工作的艺术。最好的架构、需求和设计是从自组织的团队中涌现出来的。团队定期地反思如何变得更加高效,并相应地调整自身的行为。,软件工程,16,敏捷方法的公共特征,致力于降低变化带来的成本强调价值强调人的作用使用增量和迭代的开发
8、方法,软件工程,17,软件工程,内容摘要,敏捷软件开发概述极限编程(XP)方法相关敏捷过程模型Scrum方法动态系统开发方法敏捷建模敏捷统一过程,18,软件工程,XP(eXtreme Programming)方法,1996年,Kent Beck等人在Chrysler的C3项目的开发过程中逐步产生了极限编程的基本概念1999年,Kent Beck撰写了解析极限编程:拥抱变化,对极限编程的价值观、原则和实践进行了阐述,19,极限编程过程,软件工程,20,XP方法,XP 策划开始于倾听,倾听产生一系列“用户故事”。团队成员评估每一个故事,并给出以开发周数为度量单位的成本。团队共同决定如何将故事分组,
9、并置于将要开发的下一个软件增量中。给出对下一个发布版本的基本承诺(就包括的故事、交付日期和其他项目事项)项目的第一个发行版本(也称为一个软件增量)交付之后,XP团队计算项目的速度,用于帮助估计后续发行版本的发布日期和进度安排。,软件工程,21,XP方法,XP设计严格遵循KIS(Keep It Simple,保持简洁)原则。鼓励使用CRC卡。如果在设计中碰到困难,推荐使用“Spike解决方案”鼓励“重构”以不改变代码外部行为而改进其内部结构的方式来修改软件系统的过程。XP编程推荐在编码开始之前建立单元测试。鼓励“结对编程”。XP测试所有单元测试应当使用一个可以自动实施的框架。“验收测试”由客户规
10、定技术条件,并且着眼于客户可见的系统级特征和功能。,22,结对编程,结对编程提高了设计的可靠性和质量在做任何设计的时候,都有两个程序员一起思考,可以汇集两个程序员的设计思想在代码编写完成的时候同时也通过了代码审查这种方式有助于减少程序中的错误,降低测试时间和测试成本,软件工程,23,软件工程,XP核心实践:用户故事,故事是对团队应该完成的工作的陈述。极限编程通过故事来体现价值观中的“沟通”的原则。好的用户故事应该能够触发客户和开发团队之间的沟通作为和客户的良好沟通的成果,故事拥有清楚的完成标准。一种常见的策略是,从用户的角度描述一组验收测试用例,开发团队使用该验收测试用例来验证是否已经完成了某
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 敏捷 软件 开发
链接地址:https://www.desk33.com/p-235665.html