版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、敏捷开发介绍(一)敏捷开发知识体系简介Agile(敏捷)一词来源于2001年初美国雪鸟滑雪胜地的一次敏捷方法发起者和实践者的聚会,随后他们成立了“敏捷联盟”,并制定了敏捷宣言。敏捷软件开发又称敏捷开发,是一种从20世纪90年代开始捉奸因其广泛关注的一些新型软件开发方法,它基于更紧密的团队协作、持续的用户参与和反馈,能够有效应对快速变化需求、快速交付高质量软件的迭代和增量的新型软件开发方法。敏捷开发更注重人的作用,强调个人和团队协作及自组织、通过短迭代快速交付和展示价值、持续的客户参与及反馈和快速响应变化。敏捷开发是哲学理念、价值观和一系列开发实践的综合。这种哲学理念关注持续的交付价值,推崇让客
2、户满意和软件尽早发布。接受敏捷理念的客户和工程师有着共同的观点:唯一真正重要的工作产品是在合适时间提交给客户的可运行软件。敏捷开发同时,又是一种轻量级的开发方法,他通过一个或多个跨职能的小型团队分多个迭代持续增量的交付价值。敏捷开发通过迭代和快速用户反馈,管理不确定性和拥抱变化。敏捷开发恰当的保留了软件开发过程的基本框架活动:用户沟通、策划、设计构建、交付物和评估,它以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立
3、运行的小项目,并分别完成,在此过程中软件一直处于可使用状态以此推动项目朝着构建和交付发展。敏捷开发知识体系框架可分为3层:核心价值层、敏捷开发方法框架层和敏捷实践层。核心价值层主要包括敏捷宣言和12个原则;敏捷开发方法框架层主要包括各种敏捷开发过程框架,包括XP、Scrum、精益开发和OpenUP等;敏捷开发实践层则主要包括用于指导敏捷开发的各种实践。敏捷开发知识体系层次如下图:核心价值层敏捷开发实践层敏捷开发方法框架层敏捷开发知识体系层次敏捷开发知识体系的核心对敏捷开发知识体系的层次进行细分,就得到敏捷开发知识体系的整体框架,如下图所示。其中,敏捷开发知识体系的核心是敏捷宣言,它们是敏捷开发
4、思想和价值观的集中体现,它直接影响人们的思维模式。敏捷开发方法框架ScrumXpLeanOpenUPFDD敏捷开发管理实践迭代式开发多级项目规划完整团队风险价值生命周期冲刺规划每日站立会任务板开发:代码规范测试:测试管理变更管理:团队变更管理燃尽图故事点评估Crystal等敏捷开发方法框架层核心层:核心价值观和开发原则敏捷开发方法实践层敏捷开发工程实践需求管理:开发:产品待办列表结对编程业务流程草图测试驱动开发用例驱动开发重构用户故事测试:架构:单元测试演进式架构并行测试演进式设计变更管理:基于组件的架构设计持续集成自动构建敏捷开发知识体系整体框架因此,正确的理解敏捷宣言,建立正确的敏捷价值观
5、是成功开展敏捷开发的关键。敏捷的价值观更相信通过个体及个体间的有效协作,持续不断地交付价值;通过客户的参与和快速反馈,更好地拥抱变化,提升客户满意度。它充分体现敏捷文化中面向结果,关注价值和以客户为中心的协作创新理念。敏捷开发方法框架随着敏捷开发运动的开展,敏捷开发领域逐渐发展出各种敏捷开发过程或方法框架,这些敏捷开发过程都可以由他们所强调的3个关键假设识别出来,而这3个假设可以适用于大多数的软件开发项目。假设1:项目的需求总是变化的,而提前预测哪些需求是稳定的,哪些需求会变化是非常困难的。同样,管理项目进行过程中客户优先级的变化也很困难。假设2:对于很多软件来说,设计和构建是交错进行的。假设
6、3:从指定计划的交付来看,软件的分析、设计、构建和测试并不像我们设想的那么容易。这3个假设要求敏捷开发过程一定是预测性的过程,而如何能够做到预测性呢?答案就是敏捷的自适应性。也就是说,敏捷软件过程必须具备自适应能力。但原地踏步式的自适应收效甚微,因此,敏捷软件过程必须是增量地自适应。为了达到这一目的,敏捷团队需要通过快速交付可运行软件,获取客户的持续反馈。在以上3个假设的前提下,敏捷方法中应用最广的敏捷开发方法框架包括如下几种。1、Scrum。Scrum包括一系列事件和预定义角色,是一种灵活的软件管理过程。它提供了一种经验方法,可以帮助你驾驭迭代并实现递增的软件开发过程。这一过程是迅速、有适应
7、性、自组织的,他发现了软件工程的社会意义,是的团队成员能够独立地集中在创造性的协作环境中工作。2、精益开发(lean)。精益的理念,就是从最终用户的视角上观察生产流程,视任何未产生增值的活动为浪费,并通过持续的消除浪费,实现快速交付、提高质量与控制成本的目标。因此,对于软件开发而言,在开发者或者最终用户的视角上观察软件开发过程,并发现和消除无益于快速交付的行为,记为精益的软件开发。3、极限编程(XP)。极限编程是由KentBeck提出的一套对业务需求和软件开发实践的规则,它的作用在于将二者力量集中在同一个共同的目标上,高效并稳妥地推进开发。它力图在客户需求不断变化的前提下,以可持续的步调,采用
8、高响应的软件开发过程来交付高质量的软件产品。4、OpenUP。最早源自IBM内部对RUP(RationalUnifiedProcess)的敏捷化改造,它是由一组适合高效率软件开发的最小实践集组成的敏捷化的统一过程。他的基本出发点是务实、敏捷和协作。本文后续将重点介绍Scrum和XP方法,其余因目前暂未在公司进行实践,不做过多介绍。敏捷开发管理实践和工程实践敏捷开发管理实践和工程实践包括哪些,可参见敏捷开发整体框架图,此不赘述。敏捷开发核心价值观和原则2001年2月,17位在当时被称之为“轻量级方法学家”的软件开发领域领军人物聚集在美国犹他州的滑雪胜地雪鸟雪场。经过两天的讨论,“敏捷”(Agil
9、e)这个词为全体聚会者所接受,用以概括一套全新的软件开发价值观,并通过一份简明扼要的敏捷宣言传递给世界,宣告了敏捷开发运动的开始。敏捷开发宣言我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:个体和互动高于流程和工具工作的软件高于详尽的文档客户合作高于合同谈判响应变化高于遵循计划也就是说,尽管右项有价值,我们更重视左项的价值。敏捷宣言告诉我们,敏捷是一个相对的词汇(见下图示意),具体敏捷程度取决于项目团队的上下文,例如复杂项目由于其团队规模、技术特点和循规要求等,将会要求团队有更严格的治理流程和工具支持、更规范的文档和计划要求,但仍然可以借助敏捷的价值
10、观和各种实践解决开发过程中遇到的问题。因此,在具体的敏捷开发实践中,必须实事求是地采用合适的敏捷实践,以实用主义为指导思想,面向业务结果和价值,切不可为了敏捷而敏捷。个体和互动工作的软件客户合作响应变化流程和工具详尽的文档合同谈判遵循计划Agility是一个相对的词汇敏捷开发核心价值观敏者,疾也,指对外来的刺激作出迅速、机灵的反应;捷者,獵lie)也,指以最短的路径去追赶和实现目标。敏捷开发的核心理念就是以最简单有效的方式快速地达成目标,并在这个过程中及时地响应外界的变化,作出迅速的调整。敏捷开发的核心价值观总结为以下四条:以人为本强调个体及个体间的沟通与协作在软件开发过程中的重要性目标导向敏
11、捷开发认同目标导向是成功的关键,软件开发的目标是”可工作的软件“,而不是面面俱到的文档客户为先敏捷开发中,既不简单地将客户视为“上帝”,也不将客户当做谈判桌上的对手。敏捷价值观把客户当成了合作伙伴,把自己使命定位为“帮助客户取得竞争优势”拥抱变化承认变化是软件开发的一部分并坦然应对,正是这些变化为客户和项目带来价值。最后,应记住敏捷宣言中的最后一句话:“尽管右项有价值,我们更重视左项的价值”敏捷宣言并未否定或贬损“右项”的价值,在敏捷开发的价值观中承认“流程和工具”、“详尽的文档”、“合同谈判”以及“遵循计划”的重要性,只是相比较,更重视“左项”的价值。敏捷开发的原则及应用敏捷开发12条原则:
12、o我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意;【终极目标】o欣然面对需求变化,即使在开发后期也一样;【拥抱变化】o为了客户的竞争优势,敏捷过程掌控变化;o经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期;o业务人员和开发人员必须相互合作,项目中的每一天都不例外;o激发个体的斗志,以他们为核心搭建项目;o提供所需的环境和支援,辅以信任,从而达成目标;o不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈;o可工作的软件是进度的首要度量标准;o敏捷过程倡导可持续开发;o责任人、开发人员和用户要能够共同维持其步调稳定延续;o坚持不懈地追求技术卓越和良好
13、设计,敏捷能力由此增强;o以简洁为本,它是极力减少不必要工作量的艺术;【精益生产,简介为本】o最好的架构、需求和设计出自自组织团队;o团队定期地反思如何能提高成效,并依此调整自身的举止表现。敏捷开发原则的应用敏捷开发原则是对敏捷价值观的解释和实践,它将敏捷的价值观落实到具体可操作的原则之上,遵循这12条原则,是敏捷软件开发项目得以成功的基石。我们在进行敏捷开发时,可以尝试将这12条原则作为团队工作的信条,随时展现在团队面前,提醒自己,确保目标的达成。敏捷与传统开发模式的对比及优势虽然传统的开发模型瀑布、增量、迭代、螺旋等等,但在公司大多数的项目,在执行中都会变成瀑布型的模式。因此本文主要对比一
14、下瀑布模型和敏捷模型的区别。瀑布模型是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的额步骤顺序进行。步骤成果作为衡量进度的方法,例如需求分析、设计文档、测试计划和代码审查等等,他更适用于需求比较明确的项目。瀑布式的主要问题是它的严格分级导致了自由度的降低,项目早期即作出承诺导致对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明确并且在项目进行过程中可能变化的情况下基本上是不可行的。而我们公司所面临的的情况往往很难符合瀑布模型的优势。我们所面临的行业和自身的条件导致,我们项目的需求总是在不断的变化,需求保持稳定的周期很短,因此我们必须在变化来临之前,让客户看到我们的
15、产品,及早的提出更符合预期的需求。敏捷方法则在几周或者几个月的时间内完成相对小的功能,强调的是能将尽早尽量小的可用的功能交付使用,并在整个项目周期中持续改进和增强,也就是敏捷中所说的最小可行产品(MVP)。由此,我们可以想象敏捷更符合软件开发规律。用一个非常形象的比喻来讲,软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长。而敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品。你也可以想象人的成长教育过程,也像是一个敏捷的过程。通过运用敏捷的管理模型开发的软件,在成本、质量、效率、客户满意度上均有所改善。下图数据来自互联网。MuchUvw
16、crtorrewhai!L&rter口NoChanger:SomewhatHigherHlghEr肥的项目生产率有提高MVChLOfHTQnmftAihAlLmwiftr二NdClian-ae1SomeHhiS.HigherMuchHigherimu.ciiLoweri&oincwhatLower口JNcChongflnS*m#whathigheriMit亡hHipliffrHuHigherKS-snriHwhstMiglieriNdth鮎唧矗SomewharLowtriMuctiLower敏捷开发误区随着敏捷思想的引入,敏捷开发目前已经成为业界主流软件开发方法,与瀑布模式相比,其在应对需求变化、提升产品质量、加快需求响应、缩短交付周期、提前暴露风险、及时激励员工以及平滑人力资源的使用等方面具有明显优势。但我们在推行敏捷的过程中,很多不了解敏捷的人会对“敏捷”进行错误的理解,就好比是盲人摸象,全凭自己的想象。误解一、敏捷开发意味着可以不需要文档、设计和计划r误解二敏捷只是一些优秀实践,或者是优秀实践的结合r误解三敏捷只适用于小项目开发误解四敏捷只会对研发产生改变误解五管理者不需要亲自了解敏捷,只需要管理上支持就可以了误解六引入敏捷只需要按照既定的步骤去做就可以了误解七敏捷疋CMM的替代品,疋另种流程误解八敏捷只注重特性的快速交付,在敏捷下架构不重要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年网络安全防护系统外包合同
- 2024年度云计算服务合同(SaaS应用)2篇
- 二零二四年度大型设备搬迁与安装合同
- 2024年度股权转让合同:某公司股东之间签订的股权转让协议
- 2024年度建筑项目分包与工程咨询服务协议
- 2024年度体育场馆拆迁施工协议
- 冰刀冰鞋市场洞察报告
- 放射卫生课件
- 2024年度建筑施工安全生产总承包协议
- 《A美容发展史》课件
- 六年级美术下册第6课《扇面画》优秀课件3人教版
- 公共空间设计餐饮课件
- 食材配送服务方案
- 单身申明具结书
- 2023年7月贵州省普通高中学业水平考试-数学
- 《旅游线路设计与开发》课程教学大纲
- 基于PLC的工业控制系统设计 -自动药片装瓶控制
- CRRT规范化治疗方案执行课件
- 清创术(debridement)精品课件
- 初中语文人教九年级上册探究小说中环境描写的作用教学设计
- 小学语文人教四年级上册(统编2023年更新)第六单元-说课稿
评论
0/150
提交评论