敏捷开发知识体系.doc
《敏捷开发知识体系.doc》由会员分享,可在线阅读,更多相关《敏捷开发知识体系.doc(33页珍藏版)》请在三一办公上搜索。
1、敏捷开发知识体系总体框架修订历史记录日期版本说明作者1.0初稿1 敏捷开发知识体系整体框架1.1 敏捷开发知识体系的核心敏捷开发是一个灵活的开发方法,用于在一个动态的环境中向干系人快速交付价值。其主要特点是关注的持续的交付价值,通过迭代和快速用户反馈管理不确定性和拥抱变更;它承认个人才是价值的最终源泉,强调通过有效的个人激励,提升团队的工作绩效。敏捷开发知识体系的核心是敏捷宣言,它们是敏捷开发思想和价值观的集中体现。敏捷软件开发宣言具体内容如下:我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:个体和互动 高于 流程和工具工作的软件 高于 详尽的文档客
2、户合作 高于 合同谈判响应变化 高于 遵循计划也就是说,尽管右项有其价值,我们更重视左项的价值。正确理解敏捷宣言是成功开展敏捷开发的关键,它告诉我们敏捷是一个相对的词汇,具体敏捷程度取决去项目团队的上下文,例如复杂项目由于其团队规模、技术特点和循规要求等,要求团队有更严格的治理流程和工具支持、更规范的文档和计划要求。但仍然可以借助敏捷的价值观和各种实践解决开发过程中遇到的问题。在具体的敏捷开发实践中,我们必须实事求是地采用合适的敏捷实践,以实用主义为指导思想,面向业务结果和价值,切不可为了敏捷而敏捷。围绕着敏捷宣言,敏捷开发方法的领导者定义了用于指导团队开展敏捷开发实践的必须遵循的12条基本原
3、则,它们是敏捷开发实践的总体指南。敏捷宣言遵循的12条原则如下:l 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。l 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。l 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。l 业务人员和开发人员必须相互合作,项目中的每一天都不例外。l 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。l 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。l 可工作的软件是进度的首要度量标准。l 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同
4、维持其步调稳定延续。l 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。l 以简洁为本,它是极力减少不必要工作量的艺术。l 最好的架构、需求和设计出自自组织团队。l 团队定期地反思如何能提高成效,并依此调整自身的举止表现。注:以上敏捷宣言遵循的原则摘自敏捷宣言简体中文版官方网站http:/agilemanifesto.org/iso/zhchs/1.2 敏捷开发管理实践随着敏捷开发运动的开展,如图所示,敏捷的践行者逐渐发展出两类敏捷开发最佳实践:敏捷开发管理实践和敏捷开发工程实践。敏捷开发管理实践泛指用于指导敏捷团队进行敏捷开发实践的开发方法和流程,业界应用最广的敏捷开发管理实践包括:(具
5、体实践列表将根据团队工作成果,适当改变,并包含简单描述。)l Scrum:l 极限编程(XP):l OpenUP:l 精益开发(Lean):l 动态系统开发(DSDM):l 特性驱动的开发:1.3 敏捷开发工程实践敏捷开发工程实践泛指用于指导敏捷团队进行敏捷开发过程中的各种工程化最佳实践,业界应用最广的敏捷开发工程实践包括:(具体实践列表将根据团队工作成果,适当改变,并包含简单描述。) 项目管理: 迭代开发 风险价值生命周期 多级项目规划 完整团队 每日站立会议 任务板 燃尽图 需求管理: 需求订单 业务流程草图 用例驱动开发 用户故事架构: 演进的架构 演进的设计 基于组件的架构设计 开发:
6、 结对编程 测试驱动开发 重构 代码规范测试: 单元测试 并行测试 测试管理变更管理: 持续集成 自动构建 团队变更管理在敏捷开发知识体系的其它章节,将具体描述每种敏捷开发管理实践和工程实践,为了方便阅读,我们将采用统一的方式描述其中具体内容。其中,敏捷开发管理实践描述主要包括以下主要部分:l 方法定义和特性说明l 方法中包含的主要角色l 方法中包含的主要活动和最佳实践l 方法中包含的主要输入输出工件l 方法的工作流程说明而敏捷开发工程实践描述将主要包括以下主要部分:l 最佳实践定义和特性说明l 如何应用最佳实践说明l 案例说明2 敏捷开发核心价值观和原则2.1 敏捷软件开发宣言2001年2月
7、,17位在当时被称之为“轻量级方法学家”的软件开发领域领军人物聚集在美国犹他州的滑雪胜地雪鸟(Snowbird)雪场。经过两天的讨论,“敏捷”(Agile)这个词为全体聚会者所接受,用以概括一套全新的软件开发价值观。这套价值观,通过一份简明扼要的敏捷宣言,传递给世界,宣告了敏捷开发运动的开始。敏捷软件开发宣言我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:个体和互动高于 流程和工具工作的软件高于 详尽的文档客户合作高于 合同谈判响应变化高于 遵循计划也就是说,尽管右项有其价值,我们更重视左项的价值。注:以上敏捷软件开发宣言摘自敏捷宣言简体中文版官方网
8、站http:/agilemanifesto.org/iso/zhchs/2.2 敏捷开发的核心价值观敏者,疾也。对外来的刺激做出迅速、机灵的反应;捷者,獵也。以最短的路径去追赶和实现目标。敏捷开发的核心理念就是以最简单有效的方式快速的达成目标,并在这个过程中及时地响应外界的变化,做出迅速的调整。敏捷开发的第一条价值观就是“以人为本”,强调“个体(人)”及“个体”间的沟通与协作在软件开发过程中的重要性。这个顺序不是偶然而为之的,敏捷开发将重视个体潜能的激发和团队的高效协作作为其所推崇的第一价值观。敏捷开发的第二条价值观就是“目标导向”。同其他众多管理理论和模型一样,敏捷开发认同目标导向是成功的关
9、键,因为没有目标也就无所谓成功。敏捷开发的价值观中清楚地阐明,软件开发的目标是“可工作的软件”,而不是面面俱到的文档。而遗憾的是,很多软件项目已经在纷繁的文档之中迷失了自己的目标。敏捷开发的第三条价值观就是“客户为先”。虽然敏捷开发强调的第一价值观是“以人为本”,但敏捷宣言的缔造者们并没有忘记客户,相反他们真正的理解客户的需求、懂得如何与客户合作。敏捷价值观里强调的“客户为先”即不是简单的把客户当作“上帝”、简单的推崇“客户至上”,客户要求什么、我们就做什么;也不是把客户当作“谈判桌上的对手”甚至“敌人”,去斗智斗勇。敏捷价值观里中把客户当成了合作者和伙伴,把自己的使命定位为“帮助客户取得竞争
10、优势”。敏捷开发的第四条价值观就是“拥抱变化”。人们常说“世界上唯一不变的就是变化”,大多数人也相信事实确实如此。而以往很多的软件项目却忽视了这一点,或者更准确的说是它们不愿意“正视”。它们总是试图用详尽的计划与预先穷举这些变化,然后又试图通过严格遵循计划来控制变化的发生,而结果往往是被不断涌现的变化击垮。敏捷开发价值观中承认变化是软件开发的一部分、并相信正是客户在不断变化其需求的过程中明晰了其真正的需要。因而敏捷开发欢迎变化、拥抱变化,并可坦然应对变化,正是这些变化为客户和项目带来了价值。最后,我们还应记住敏捷宣言中的最后一条:“尽管右项有其价值,我们更重视左项的价值”敏捷宣言并未否定或贬损
11、“右项”的价值,在敏捷开发的价值观中承认“流程和工具”、“详尽的文档”、“合同谈判”以及“遵循计划”的重要性,只是两相比较,“更重视左项的价值”。2.3 敏捷开发的原则2.3.1 敏捷开发的原则敏捷宣言遵循的原则l l我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。l l欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。l l经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。l l业务人员和开发人员必须相互合作,项目中的每一天都不例外。l l激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。l l
12、不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。l l可工作的软件是进度的首要度量标准。l l敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。l l坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。l l以简洁为本,它是极力减少不必要工作量的艺术。l l最好的架构、需求和设计出自自组织团队。l l团队定期地反思如何能提高成效,并依此调整自身的举止表现。注:以上敏捷宣言遵循的原则摘自敏捷宣言简体中文版官方网站http:/agilemanifesto.org/iso/zhchs/2.3.2 敏捷开发原则的应用敏捷开发原则是对敏捷价值观的解释和实践,它将敏
13、捷的价值观落实到具体的可操作的原则之上,严格的遵循这十二条原则,是敏捷软件开发项目得以成功的基石。可以说这十二条原则已经囊括了软件项目管理的基本流程,而且这些流程足够具体:它告诉我们项目管理的第一步就是要明确目标,而软件项目的终极目标就是“不断地及早交付有价值的软件使客户满意”;它提示我们软件工程的起始点是需求,而需求的固有特征就是不断变化,敏捷开发过程要“掌控变化”;它强调“可工作的软件是进度的首要度量标准”,因而需要以尽可能短的周期“经常地交付可工作的软件”;它重视相关干系人的协调(“业务人员和开发人员必须相互合作”、“责任人、开发人员和用户要能够共同维持其步调稳定延续”),重视激发个人潜
14、能(“激发个体的斗志”),要求团队使用最高效的沟通方式(“面对面的交谈”);它推崇技术变革所具备的强大能量(“坚持不懈地追求技术卓越和良好设计”);它强调精益生产(简洁为本),要求项目采用“自组织”团队管理模式,并指出“定期的总结反思”,是校准团队行为、最终达成目标的有效途径。成熟的敏捷开发团队,完全可以不再需要任何附加的冗余流程(工程技术流程除外),而成功的完成软件的开发和交付。当然,敏捷开发团队也可以以这十二条原则为基础,进一步的细化敏捷项目的管理流程、步骤、和方法工具,以便这些原则能够更好的被团队理解和执行。对以上所有原则的严格遵守将大大提高敏捷项目成功的可能性。3 主要的敏捷开发管理实
15、践3.1 敏捷开发管理实践描述模板3.1.1 方法定义和特性说明3.1.2 方法中包含的主要角色3.1.3 方法中包含的主要活动和最佳实践3.1.4 方法中包含的主要输入输出工件3.1.5 方法的工作流程说明3.2 敏捷开发方法之Scrum3.2.1 Scrum方法定义和特性说明术语Scrum来源于橄榄球活动,在英文中的意思是橄榄球里的争球。在橄榄球比赛中,双方前锋站在一起紧密相连,当球在他们之间投掷时,他们奋力争球。1995年,在奥斯汀举办的OOPSLA 95上,萨瑟兰和施瓦伯首次提出了Scrum概念,并在随后的几年中逐步将其与业界的最佳实践融合起来,形成一种迭代式增量软件开发过程和敏捷项目
16、管理方法,并在2001年敏捷联盟(Agile Alliance)形成后受到了更多欢迎。Scrum是一种灵活的软件管理过程,它提供了一种经验方法,可以帮助你驾驭迭代,实现递增的软件开发过程。这一过程是迅速、有适应性、自组织的,它发现了软件工程的社会意义,使得团队成员能够独立地集中在创造性的协作环境下工作。Scrum采用了经验方法,承认问题无法完全理解或定义,关注于如何使得开发团队快速推出和响应需求能力的最大化。因此,Scrum的一个关键原则就是承认客户可以在项目过程中改变主意,变更他们的需求,而预测式和计划式的方法并不能轻易地解决这种不可预见的需求变化。 Scrum是一个包括了一系列实践和预定义
17、角色的过程框架。任何软件开发过程框架都可以由最基本的三个要素组成:角色(人)、活动及其输入输出的工件。Scrum 框架主要包括以下内容: 角色; 产品负责人(Product Owner); Scrum主管(Scrum Master); 团队成员; 活动; 冲刺规划会议(Sprint Plan Meeting); 每日站立会议(Scrum Daily Meeting); 冲刺复审会议(Sprint Review Meeting); 冲刺回顾会议(Sprint Retrospective Meeting); 工件; 产品订单(Product Backlog); 冲刺订单(Sprint Backlo
18、g); 燃尽图(Burndown Chart); 新的功能增量。下面我们就从角色、活动和工件三个维度对整个Scrum过程进行简单介绍。3.2.2 Scrum方法中包含的主要角色Scrum定义了许多角色,根据猪和鸡的笑话可以分为两组,猪和鸡。一天,一头猪和一只鸡在路上散步。鸡看了一下猪说:“嗨,我们合伙开一家餐馆怎么样?”。猪回头看了一下鸡说:“好主意,那你准备给餐馆起什么名字呢?”。鸡想了想说:“餐馆名字叫火腿和鸡蛋怎么样?”。“我不这么认为”,猪说,“我全身投入,而你只是参与而已”。“猪”角色:是全身投入项目和Scrum过程的人,主要包括代表利益干系人的产品负责人,同项目经理类似的Scrum
19、主管和开发团队。产品负责人(Product Owner):代表了客户的意愿,这保证Scrum团队在做从业务角度来说正确的事情。同时他又代表项目的全体利益干系人,负责编写用户需求(用户故事),排出优先级,并放入产品订单(Product Backlog),从而使项目价值最大化的人。他利用产品订单,督促团队优先开发最具价值的功能,并在其基础上继续开发,将最具价值的开发需求安排在下一个冲刺迭代(Sprint)中完成。他对项目产出的软件系统负责,规划项目初始总体要求、ROI目标和发布计划,并为项目赢得驱动及后续资金。Scrum主管(Scrum Master):负责Scrum过程正确实施和利益最大化的人,
20、确保它既符合企业文化,又能交付预期利益。Scrum主管的职责是向所有项目参与者讲授Scrum方法,正确的执行规则,确保所有项目相关人员遵守Scrum规则,这些规则形成了Scrum过程。Scrum主管并非团队的领导(由于他们是自我组织的),他的主要工作是去除那些影响团队交付冲刺目标的障碍,屏蔽外界对开发团队的干扰。“Scrum主管是保证Scrum成功的牧羊犬”。开发团队:负责找出可在一个迭代中将产品待开发事项(冲刺订单)转化为功能增量的方法。他们对每一次迭代和整个项目共同负责,在每个冲刺中通过实行自管理、自组织,和跨职能的开发协作,实现冲刺目标和最终交付产品。一般由59名具有跨职能技能的人(设计
21、者,开发者等)组成。 “鸡”角色:并不是实际Scrum过程的一部分,但是必须考虑他们。 敏捷方法的一个重要方面是使得用户和利益所有者参与每一个冲刺的评审和计划并提供反馈。用户:软件是为了某些人而创建!就像“假如森林里有一棵树倒下了,但没有人听到,那么它算发出了声音吗”,“假如软件没有被使用,那么它算是被开发出来了么?”。利益所有者(客户,提供商):影响项目成功的人,但只直接参与冲刺评审过程。经理:为产品开发团体架起环境的那个人。如图3.4所示为Scrum方法中的主要角色。图3. Scrum方法中的主要角色3.2.3 Scrum方法中包含的主要活动和最佳实践Scrum作为软件开发过程框架,它包含
22、的主要最佳实践包括以下几个方面。迭代式软件开发:通过将整个软件交付过程分成多个迭代周期,帮助团队更好地应对变更,应对风险,实现增量交付、快速反馈。两层项目规划(Two-Level Project Planning):基于远粗近细的原则和项目渐进明细的特点,通过将概要的项目整体规划和详细的近期迭代计划有机结合,帮助团队有效提高计划的准确度、资源管理能力和项目的按时交付能力。整体团队协作(Whole Team):通过关注保持整个团队可持续发展的工作节奏、每日站立会议和自组织的工作分配,实现团队的高效协作和工作,实现提高整个团队生产力的目的。持续集成:通过进行更频繁的软件集成,实现更早的发现和反馈错
23、误、降低风险,并使整个软件交付过程变得更加可预测和可控,以交付更高质量的软件。Scrum的活动主要由冲刺规划会议(Sprint Plan Meeting)、每日站立会议(Sprint Daily Meeting)、冲刺复审会议(Sprint Review Meeting)和冲刺回顾会议(Retrospective Meeting)组成。Scrum提倡所有团队成员坐在一起工作,进行口头交流,以及强调项目有关的规范(Disciplines),这些有助于创造自我组织的团队。冲刺规划会议:冲刺开始时,均需召开冲刺规划会议,产品负责人和团队共同探讨该冲刺的工作内容。产品负责人从最优先的待开发事项中进行筛
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 敏捷 开发 知识 体系

链接地址:https://www.31ppt.com/p-3796780.html