软件工程_敏捷开发_第1页
软件工程_敏捷开发_第2页
软件工程_敏捷开发_第3页
软件工程_敏捷开发_第4页
软件工程_敏捷开发_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发) 敏捷开发(agile development) 是一种是一种以人为核心、迭代、循序渐进的开发方法。在。在 敏捷开发中,软件项目的构建被切分成多个子项目,敏捷开发中,软件项目的构建被切分成多个子项目, 各个子项目的成果都经过测试,具备集成和可运行的各个子项目的成果都经过测试,具备集成和可运行的 特征。简言之,就是把一个大项目分为多个相互联系,特征。简言之,就是把一个大项目分为多个相互联系, 但也可独立运行的小项目,并分别完成,在此过程中但也可独立运行的小项目,并分别完成,在此过程中 软件一直处于可使用状态。软件一直处于可使用状态。

2、 捷开发由几种轻量级的软件开发方法组成 它们包括:极限编程(它们包括:极限编程(XP),),Scrum,精益开发精益开发 (Lean Development),),动态系统开发方法动态系统开发方法 (DSDM),),特征驱动开发(特征驱动开发(Feature Driver Development),),水晶开发(水晶开发(Cristal Clear)等等等等 1 l主要目的是降低需求变化的成本 l定义了一套简单的开发流程 包括:编写用户案例,架构规范,实施规划,迭代计划,代码开发,单元包括:编写用户案例,架构规范,实施规划,迭代计划,代码开发,单元 测试,验收测试等等测试,验收测试等等 l提倡

3、互动交流、反馈、简单、勇气、团队 l核心做法: 小规模,频繁的版本发布,短迭代周期。小规模,频繁的版本发布,短迭代周期。 测试驱动开发(测试驱动开发(Test-driven development)。)。 结对编程(结对编程(Pair programming)。)。 持续集成(持续集成(Continuous integration)。)。 每日站立会议(每日站立会议(Daily stand-up meeting)。)。 共同拥有代码共同拥有代码Collative code ownership. 系统隐喻(系统隐喻(System metaphor)。)。 软件工程(第软件工程(第16章章 敏捷过

4、程开发)敏捷过程开发)2 l精益开发起源 从丰田公司的产品开发方法中演化而来。它主要包括两个部分:一部分是从丰田公司的产品开发方法中演化而来。它主要包括两个部分:一部分是 核心思想及原则,另外一部分由一些在,另外一部分由一些在相应的工具构成。构成。 l核心思想 查明和消除浪费。在软件开发过程中,错误(。在软件开发过程中,错误(bugs),没用的功能,等待),没用的功能,等待 以及其他任何对实现结果没有益处的东西都是浪费。浪费及其源头必须被以及其他任何对实现结果没有益处的东西都是浪费。浪费及其源头必须被 分析查明,然后设法消除。分析查明,然后设法消除。 软件工程(第软件工程(第16章章 敏捷过程

5、开发)敏捷过程开发)3 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发) l精益开发的原则包括: 强调学习。不断改进所开发的产品和开发效率。强调学习。不断改进所开发的产品和开发效率。 在最后时刻做决定。避免在可能改变的事情上做无谓的努力,避免浪费。在最后时刻做决定。避免在可能改变的事情上做无谓的努力,避免浪费。 用最快的速度交付用户。缩短迭代周期加速开发及交付,加快交流,提高用最快的速度交付用户。缩短迭代周期加速开发及交付,加快交流,提高 生产力生产力 给团队自主权。激励团队并让团队成员自我管理给团队自主权。激励团队并让团队成员自我管理-敏捷方法成功的基本因敏捷方法成功的基本因

6、素之一。素之一。 诚信。确保系统正常工作,客户需求是团队努力坚持的诚信和对用户的承诚信。确保系统正常工作,客户需求是团队努力坚持的诚信和对用户的承 诺。诺。 全局观。精益开发强调整体优化的系统。无论开发的组织还是被开发的产全局观。精益开发强调整体优化的系统。无论开发的组织还是被开发的产 品,品, 从整体上考虑优化比从各个局部去优化更高效。从整体上考虑优化比从各个局部去优化更高效。 精益软件更重要的是不断完善开发过程的一种思维方式 。 5 lSCRUM是一个敏捷开发框架是一个敏捷开发框架 它由一个开发过程,几种角色以及一套规范的实施方法组成。它可以被运它由一个开发过程,几种角色以及一套规范的实施

7、方法组成。它可以被运 用于软件开发,项目维护,也可以被用来作为一种管理敏捷项目的框架。用于软件开发,项目维护,也可以被用来作为一种管理敏捷项目的框架。 lScrum定义了定义了4种主要的角色:种主要的角色: 1、产品拥有者(、产品拥有者(Product Owner):该角色负责产品的远景规划,平衡):该角色负责产品的远景规划,平衡 所有利益相关者(所有利益相关者(stakeholder)的利益,确定不同的产品需求积压的优)的利益,确定不同的产品需求积压的优 先级等。它是开发团队和客户或最终用户之间的联络点。先级等。它是开发团队和客户或最终用户之间的联络点。 2、利益相关者(、利益相关者(Sta

8、keholder):该角色与产品之间有直接或间接的利):该角色与产品之间有直接或间接的利 益关系,通常是客户或最终用户代表。他们负责收集编写产品需求,审查益关系,通常是客户或最终用户代表。他们负责收集编写产品需求,审查 项目成果等。项目成果等。 3、Scrum专家(专家(Scrum Master):):Scrum专家负责指导开发团队进行专家负责指导开发团队进行 Scrum开发与实践。它也是开发团队与产品拥有者之间交流的联络点。开发与实践。它也是开发团队与产品拥有者之间交流的联络点。 4、团队成员(、团队成员(Team Member):即项目开发人员。):即项目开发人员。 软件工程(第软件工程(

9、第16章章 敏捷过程开发)敏捷过程开发)6 2001年年2月,月,17位敏捷方法的先驱在美国位敏捷方法的先驱在美国 犹他州召开了为期犹他州召开了为期2天的会议,成立了敏天的会议,成立了敏 捷软件开发联盟捷软件开发联盟 并发布了并发布了“敏捷宣言敏捷宣言” 该宣言由四个价值观声明组成,并提炼出该宣言由四个价值观声明组成,并提炼出 敏捷软件开发方法必须遵循的敏捷软件开发方法必须遵循的12条原则条原则 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发)7 我们正通过亲身或者协助他人进行软件开发实践来我们正通过亲身或者协助他人进行软件开发实践来 探索更好的软件开发方法。探索更好的软件开发方

10、法。 基于此,我们建立了如下的价值观:基于此,我们建立了如下的价值观: 个体和交互个体和交互 重于重于 过程和工具过程和工具 工作的软件工作的软件 重于重于 详尽的文档详尽的文档 客户合作客户合作 重于重于 合同谈判合同谈判 响应变化响应变化 重于重于 遵循计划遵循计划 也就是说,尽管右项有其价值,也就是说,尽管右项有其价值, 我们更重视左项的价值我们更重视左项的价值 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发)8 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发) 过程和工具是重要的,但是软件开发中人的作用和过程和工具是重要的,但是软件开发中人的作用和 交流的作

11、用更需要被进一步强调交流的作用更需要被进一步强调 软件是由人组成的团队来开发的,与软件项目相关软件是由人组成的团队来开发的,与软件项目相关 的各类人员通过充分的交流和有效的合作,才能成的各类人员通过充分的交流和有效的合作,才能成 功地开发出得到用户满意的软件功地开发出得到用户满意的软件 如果光有定义良好的过程和先进的工具,而人员的如果光有定义良好的过程和先进的工具,而人员的 技能很差,或者不能很好地交流和协作,软件是很技能很差,或者不能很好地交流和协作,软件是很 难成功地开发的难成功地开发的 9 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发) 可以工作的软件是软件开发工作的最终

12、目标可以工作的软件是软件开发工作的最终目标 好的必要的文档能帮助我们理解软件做什么,怎么好的必要的文档能帮助我们理解软件做什么,怎么 做以及如何使用,是有价值的。但是,软件开发的做以及如何使用,是有价值的。但是,软件开发的 主要目标仍然是创建可运行的软件主要目标仍然是创建可运行的软件 敏捷软件开发强调不断地快速地向用户提交可运行敏捷软件开发强调不断地快速地向用户提交可运行 的软件(不一定是完整的软件),以得到用户的认的软件(不一定是完整的软件),以得到用户的认 可可 10 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发) 只有客户才能明确说明需要什么样的软件,然而,只有客户才能明

13、确说明需要什么样的软件,然而, 大量的实践表明,在开发的早期客户常常不能完整大量的实践表明,在开发的早期客户常常不能完整 地表达他们的全部需求,有些早期确定的需求,以地表达他们的全部需求,有些早期确定的需求,以 后也可能会改变后也可能会改变 由于软件开发的预测性的困难,想通过合同谈判的由于软件开发的预测性的困难,想通过合同谈判的 方式,将需求固定下来常常是困难的方式,将需求固定下来常常是困难的 敏捷软件开发强调与客户的协作,通过与客户的交敏捷软件开发强调与客户的协作,通过与客户的交 流和紧密合作来发现用户的需求流和紧密合作来发现用户的需求 11 软件工程(第软件工程(第16章章 敏捷过程开发)

14、敏捷过程开发) 任何软件项目的开发都应该制订一个项目计划,以任何软件项目的开发都应该制订一个项目计划,以 确定各开发任务的优先顺序和起止日期。然而,随确定各开发任务的优先顺序和起止日期。然而,随 着项目的进展,需求、业务环境、技术等都可能变着项目的进展,需求、业务环境、技术等都可能变 化,任务的优先顺序和起止日期也可能因种种原因化,任务的优先顺序和起止日期也可能因种种原因 会改变会改变 因此,项目计划应具有可塑性,有变动的余地。当因此,项目计划应具有可塑性,有变动的余地。当 出现变化时及时做出反应,修订计划以适应变化出现变化时及时做出反应,修订计划以适应变化 12 我们的最高优先级是持续不断地

15、、及早地交付有价值的我们的最高优先级是持续不断地、及早地交付有价值的 软件来使客户满意软件来使客户满意 拥抱变化,即使是在项目开发的后期。敏捷过程愿意为拥抱变化,即使是在项目开发的后期。敏捷过程愿意为 了客户的竞争优势而接纳变化了客户的竞争优势而接纳变化 经常地交付可工作的软件,相隔几星期或一两个月,倾经常地交付可工作的软件,相隔几星期或一两个月,倾 向于采取较短的周期向于采取较短的周期 业务人员和开发人员必须在项目的整个阶段紧密合作业务人员和开发人员必须在项目的整个阶段紧密合作 围绕着被激励的个体构建项目。为个体提供所需的环境围绕着被激励的个体构建项目。为个体提供所需的环境 和支持,给予信任

16、,从而达成目标和支持,给予信任,从而达成目标 在团队内和团队间沟通信息的最有效和最高效的方式是在团队内和团队间沟通信息的最有效和最高效的方式是 面对面的交流面对面的交流 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发)13 可工作的软件是进度的首要度量标准。可工作的软件是进度的首要度量标准。 敏捷过程倡导可持续开发。项目发起者、开发人员和用户敏捷过程倡导可持续开发。项目发起者、开发人员和用户 应该维持一个可持续的步调。应该维持一个可持续的步调。 持续地追求技术卓越和良好设计,可以提高敏捷性持续地追求技术卓越和良好设计,可以提高敏捷性 以简洁为本,它是减少不必要工作的艺术。以简洁为

17、本,它是减少不必要工作的艺术。 最好的架构、需求和设计是从自组织的团队中涌现出来的最好的架构、需求和设计是从自组织的团队中涌现出来的 。 团队定期地反思如何变得更加高效,并相应地调整自身的团队定期地反思如何变得更加高效,并相应地调整自身的 行为。行为。 软件工程(第软件工程(第16章章 敏捷过程开发)敏捷过程开发)14 识别价值识别价值 价值是客户愿意购买产品的原因,也是产品开发的 根本价值所在。“是否有助于增加价值”是精益方 法衡量过程活动的准则 定义价值流定义价值流 价值流描述了组织为了交付价值所采取的一系列有 增值的活动 保持价值流的流动保持价值流的流动 良好的系统应该让价值迅速流动,从而用较低的成 本生产出正确的产品 软件工程(第软件工程(第1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论