




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第15章敏捷软件开发15.1敏捷软件开发的价值观及开发原则敏捷软件开发宣言给出了如下四个价值观:1.个人和交互高于过程和工具这里并不是否定过程和工具的重要性,而是更强调软件开发中人的作用和交流的作用。因为软件是由人组成的团队来开发的,与软件项目相关的各类人员(如,项目经理、建模人员、设计师、程序员、测试人员以及客户)通过充分的交流和有效的合作,才能成功地开发出得到用户满意的软件。如果光有定义良好的过程和先进的工具,而人员的技能很差,又不能很好地交流和协作,软件是很难成功地开发的。2.可运行软件高于详尽的文档对用户来说,通过执行一个可运行的软件来了解软件做了什么,远比阅读厚厚的文档要容易得多。因此敏捷软件开发强调不断地快速地向用户提交可运行的软件(不一定是完整的软件),以得到用户的认可。好的必要的文档仍是需要的,它能帮助我们理解软件做什么,怎么做以及如何使用,但软件开发的主要目标是创建可运行的软件。3.与客户协作高于合同(契约)谈判只有客户才能明确地说明需要什么样的软件,然而,大量的实践表明,在开发的早期客户常常不能完整地表达他们的全部需求,有些早期确定的需求,以后也可能会改变。因此,要想通过合同谈判的方式,将需求固定下来常常是困难的。敏捷软件开发强调与客户的协作,通过与客户的交流和紧密合作来发现用户的需求。4.对变更及时做出反应高于遵循计划任何软件项目的开发都应该制订一个项目计划,确定各开发任务的优先顺序和起止日期。然而,随着项目的进展,需求、业务环境、技术等都可能变化,任务的优先顺序和起止日期也可能因种种原因会改变。因此,项目计划应具有可塑性,有变动的余地。当出现变化时及时做出反应,修订计划以适应变化。敏捷软件开发必须遵循的十二个原则如下:1.最优先的是通过尽早地和不断地提交有价值的软件使客户满意;欢迎变化的需求,即使该变化出现在开发的后期,为了对客户的竞争优势Agile过程利用变化作为动力;以几周到几个月为周期,尽快、不断地交付可运行软件;在整个项目过程中,业务人员和开发人员必须天天一起工作;以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,对他们的工作予以充分的信任;项目组内效率最高、最有效的信息传递方式是面对面的交流;测量项目进展的首要依据是可运行的软件;敏捷过程提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度;应时刻关注技术上的精益求精和好的设计,以增强敏捷性;简单化(这是尽可能减少不必要工作的艺术)是必不可少的;最好的构架、需求和设计出自于自我组织的团队;团队要定期反思怎样才能更有效,并据此调整自己的行为。15.2XP方法简介XP是eXtremeProgramming的缩写,称为极限编程。它是由KentBeck于1999年提出的一种Agile方法,它适用于软件需求模糊且挥发性(Volatile,指今天的要求明天可能就不需要了)强、开发团队人数在10人以下、开发地点集中(在一个办公室里)的场合。XP方法是所有Agile方法中最引人注目的方法之一,它已成功地应用于许多软件项目的开发中,并取得显著的效果。如IONA公司的obix技术支持小组在采用XP方法后,其软件生产率提高于67%。15.2.1XP方法的价值观和核心实践XP方法的四个价值观如下:1.交流(Communication)XP方法强调交流的价值,通过交流你既可以向项目的相关人员提供信息,又可以从他们那里获得信息。大量的实践表明,项目失败的重要原因之一是交流不畅,使得客户的需求不能准确地传递给开发人员,造成开发人员不能充分理解需求;模型或设计的变动未能及时告知相关人员,造成系统的不一致和集成的困难;等等。因此,所有项目相关人员之间充分的有效的交流是软件开发成功所必不可少的。XP方法提倡面对面的交流,这是一种有效的也是效率最高的交流方式。XP方法对团队人数(10人以下)和开发地点(在同一办公室)的限制有利于面对面的交流。通常一张图或几句话就能把问题讲清楚,这远比通过文档(包括E-mail)进行交流的效率要高得多。2.简单(Simplicity)简单是指在确保得到客户满意的软件的前提下,做最简洁的工作。包括简单的过程(如对统一过程的剪裁)、简单的模型(可用多种模型,如UML中的图、结构化的数据模型等,只要能简单地解决问题即可)、简单的文档(只编写项目相关人员所需的必要的文档)、简洁的设计和实现等。简单的价值使得软件开发是敏捷的,它体现了敏捷开发的“刚刚好(Justenough)”思想,即开发中的活动及制品既不要太多也不要太少,刚好即可。今天只做要做的事,明天如需要,则通过不断地改进设计和重构来满足明天的要求。3.反馈(Feedback)及时有效的反馈的价值体现在能确定开发工作是否正确,及时发现开发工作的偏差并加以纠正。例如团队式的模型开发,与该模型相关的人员(包括客户)一起开发,此时,每个人的意见可能在几秒钟或几分钟里就得到反馈。通过非正式的评审(如走查,Walkthrough)可在几分钟或几个小时里得到反馈,这比正式评审要快得多。反馈的及时程度是很重要的,它能及时发现偏差,及时纠正。4.勇气(Courage)敏捷软件开发对大多数软件机构来说是一个新方法,是对软件开发现状的挑战,因此采用敏捷软件开发需要勇气。ScottW.Ambler在他的著作“敏捷建模:极限编程和统一过程的有效实践”中指出:“敏捷方法要求与其他人紧密合作,信任他们,也相信自己,这需要勇气;XP和敏捷建模(AM)等方法要求做能做到的最简单的事,相信明天能解决明天的问题,这需要勇气;AM要求只有在绝对需要的时候才创建文档,而不是只要觉得舒适就去创建,这需要勇气;XP和AM要求让业务人员制定业务决策,例如排定需求的优先级,而让技术人员制定技术决策,例如软件怎样去满足各个需求,这需要勇气;AM要求用可能的最简单的工具,例如白板和纸,只有在复杂建模工具能提供可能的最好价值时才去使用它们,这需要勇气;AM要求不要只是为了推迟如用代码检证模型等困难任务,而把图加工得更漂亮来拖延时间,这需要勇气;AM要求信任你的同时,相信程序员能制定设计决策,因此不需要给他们提供过多的细节,这需要勇气;AM要求决心去成功,去结束IT产业中接近灾难和彻底失败的循环,这需要勇气。”此外,“需要勇气来承认自己是会犯错误的,需要勇气来相信自己明天能克服明天出现的问题。”在这本书中,作者还给出第五个价值观:“谦虚。最好的开发人员应该是谦虚的,承认自己不是无所不知的。事实上,团队里的每个人都各有其专长,都能为项目做出贡献。敏捷建模人员要谦虚地承认他们需要得到帮助以完成自己的工作,也要谦虚地承认,他们要与别人一同工作。”XP方法给出了如下12个核心实践:完整的团队(WholeTeam)XP方法要求所有团队成员应在同一工作场所工作。成员中必须有一名现场用户(On-SiteUser),由他提出需求,确定需求的优先级,编写验收测试用例。通常,团队还设一位“教练(Coach)”角色,他指导XP方法的实施,负责与外部沟通和协调。计划对策(PlanningGame)在XP方法中需要制订两个计划:发布计划和迭代计划。计划是根据业务的优先级和技术评估结果来制订的。早期制订的计划常常是不准确的,因此要留有足够的余地,以便在迭代过程中不断地修正。系统比喻(Metaphor)系统比喻是对需开发的软件的一种形象化的比喻,这种比喻描述了你打算如何构建系统,起概念框架的作用。这种比喻必须是每个团队成员都熟悉的。小发布(Smallrelease)经常、不断地发布可运行的、具有商业价值的小软件版本,供现场用户评估或最终使用。测试(testing)XP方法提倡测试优先,即先写测试后编代码。测试优先为开发人员提供编码前对代码进行周密思考的机会,使开发人员很快发现他们的想法实际上是否可行。简单设计(simpleDesign)任何时候设计都应尽可能简单,这是指设计刚好满足当前定义的功能即可,该设计是完成当前功能所需的最简洁设计,即简单、易懂、无冗余、能运行所有的测试、没有重复的逻辑、描述了每个程序员的重要意图、使用尽可能少的类和方法。设计还应符合系统的比喻,便于以后对它重构。结对编程(PairProgramming)XP方法强烈推荐结对编程,即由两个程序员坐在一台计算机前一起编程,在一个程序员编程的同时,另一个程序员负责检查程序的正确性和可读性。结对的伙伴不是固定不变的,而是可以动态调整的。结对编程能把两个程序员的程序设计思想汇集在一起,在代码编出来时已通过了一个程序员的审查,因此程序的质量相对比较高,从而减少了程序中的错误,降低了测试的时间和成本。同时,结对编程使得软件中的任何一段代码至少有两名程序员非常熟悉,因此,个别的人员流动对项目进展造成的影响会很小。设计改进(DesignImprovement)在整个开发过程中,应对程序结构进行持续不断的梳理,在不影响程序的外部可见行为的情况下,按高内聚低耦合的原则对程序内部的结构进行改进,保持代码的简洁、无冗余。持续集成(ContinuousIntegration)持续集成是指每完成一个模块的开发(包括该模块的单元测试)后,立即将其组装到系统中,并进行集成测试,完成该集成测试后才能进行下一次集成。这样的持续集成在一天中可能要出现多次。持续集成能保持项目组中所有开发好的模块始终是组装完毕、完成集成测
试且是可执行的。代码全体共有(CollectivecodeOwnership)代码全体共有是指团队中的任何人可以在任何时候修改系统任何位置上的任何代码。这是建立在小系统开发的前提下的,由于团队的成员都可以参加模型的开发,又有系统的比喻,因此,总体上每个成员都对整个系统有一定程序的了解。此外,结对编程、编码标准、持续集成等实践都为代码全体共有提供了支持,能及时发现修改代码而引起的冲突,避免冲突的集中暴发。11.编码标准(CodingStandard)XP方法强调制订一个统一的编码标准,包括命名、注释、格式等编程风格,使得所有的程序代码就象出自一人之手。12.可持续步调(SustainablePace)XP方法强调每周40小时工作制。由于人的精力是有限的,敏捷软件开发要求每个团队成员都能始终保持精力充沛,充满活力。长时间超负荷的工作会影响工作效率,因此,XP方法要求每周工作时间不超过40小时,即使加班,也不要连续超过两个星期。15.2.2XP开发过程图15.1给出了XP方法的开发过程,可以将它划分成五个阶段:探索阶段、计划阶段、迭代到发布阶段、产品化阶段和维护阶段。XP方法中阶段的概念是很弱的,各阶段之间存在来回往复,一个阶段的持续时间也不一定很长,如计划阶段可能只要几个小时即完成。用户
故事新用户故错误测试用例体系结
构骨架付计划探索阶段制订交交付计划•1I1I}确定的用户
故事新用户故错误测试用例体系结
构骨架付计划探索阶段制订交交付计划•1I1I}确定的/估计■难点’「骨架;计划阶段 !迭代开发.I■ II最新版本验收用户认可・小交付1;下一迭代迭代到发布阶段产品化阶段 i:维护阶段;图15.1XP方法的开发过程1.探索阶段探索阶段的主要工作是开发初始的用户故事(UserStories)和体系结构骨架(architecturespike)。开发工作从用户讲述用户故事开始,用户故事描述了系统高层的需求,它是制订发布计划的输入。XP方法中的用户故事有点像面向对象方法中的用况,但它可能比用况小。一个XP项目的用户故事数目可以从几个到几十个不等。XP方法中的体系结构不象传统方法学那么正规,在探索阶段,试探找到系统中固定不变的部分(体系结构骨架),并找出一种形象的比喻,这种比喻描述了你打算如何构建系统,起到概念框架的作用。例如,我们可以把网上购物比喻成一个到传统杂货店去购物。订单比喻成购物车,客户填写订单比喻成把货物放进购物车中等等。开发团队可以一起在一块白板上边讨论边画出系统工作的草图,以对系统比喻达成共识。同样也可在白板上边讨论边画出系统体系结构的骨架。一旦团队对系统比喻达成共识后,可丢弃临时性的模型(如系统比喻草图),并通过电子白板印刷出有用的模型(如体系结构骨架草图)加以保存。在敏捷方法中强调内容比形式重要,因此并不要求绘制工整漂亮的图。根据测试优先的思想,探索阶段还应根据用户故事编制相应的测试用例,供以后验收测试时使用。2.计划阶段计划阶段的任务是根据用户故事描述的需求、系统体系结构骨架和系统比喻来制订迭代计划和发布计划。在这个阶段,可以用你最熟悉的形式为用户故事建模,这个模型描述了用户故事的任务以及这些任务之间的关系。通常图形方式(可以是草图)比文字描述更直观。然后,尽可能精确地估算它的工作量,这是制订计划的重要依据。对于那些不能确切估算其工作量的难点部分,要进一步作分析,直至能确定其工作量估算。3.迭代到发布阶段迭代到发布阶段完成了XP方法中的主要开发工作,如建模、编码、测试和集成。该阶段根据迭代和发布计划,开发满足指定用户故事需求的软件,并与前面已完成的软件版本集成,得到软件的一个新版本,然而根据在探索阶段编写的测试用例,进行验收测试。一旦发现错误或者通过验收测试想进入下一轮迭代时,就重复迭代开发的工作。在这一阶段当客户提出新的用户故事,或者根据项目的进展情况认为有必要时,可以回到计划阶段,对迭代和发布计划做出修改或调整。4.产品化阶段产品化阶段的工作主要是确认迭代开发的软件已经做好进入产品化的准备。在此阶段可进行更多的测试,如系统测试、负载测试、安装测试等。产品化阶段的另一个工作就是整理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全健康课课件
- 2024年贵州省道真仡佬族苗族自治县人民医院公开招聘医务工作人员试题带答案详解
- 2024年安徽省郎溪县人民医院公开招聘医务工作人员试题带答案详解
- 2024年新疆乌恰县人民医院公开招聘护理工作人员试题带答案详解
- 2024年内蒙古卓资县人民医院公开招聘医务工作人员试题带答案详解
- 构建人类卫生健康共同体的实践路径和当代价值研究
- 基于宽度学习和Transformer的水上模糊目标识别研究
- 养老观念培训课件
- 2025届河北省保定市徐水区高二物理第二学期期末教学质量检测试题含解析
- 2025届辽宁省凌源市联合校物理高一下期末考试模拟试题含解析
- 《紫闺祕书》杏溪浣香主人撰演示教学
- 数据中心巡检机器人解决方案
- 露天矿山安全生产责任制
- 中国服装发展史(完整版)
- 丽声北极星分级绘本第四级下 The Camping Trip课件
- 山西特岗教师招聘考试真题
- 外管廊管道方案
- 中国上空常用卫星信标参数表
- 员工反违章承诺书
- 范里安中级微观经济学第六版中文课件(中)
- 汉防己甲素注射液在肿瘤、矽肺、肝炎等临床治疗中使用指南
评论
0/150
提交评论