敏捷软件开发——敏捷方法、极限编程、Scrum

快速的软件开发过程就是为迅速制造可用软件而设计的。软件的开发和部署不是一次完成的,而是以一系列增量的形式完成的,每一个增量包括新的系统功能。尽管有很多快速软件开发的方法,它们都有一些基本的特性:

  1. 描述、设计和实现过程是交织在一起的。没有详细的系统描述,设计文档得到了最少化,或者是由实现系统所采用的编程环境所自动生成。用户需求文档只定义最为重要的系统特性。
  2. 系统通过一系列版本开发出来。最终用户和其他系统信息持有者都参与了每个版本的定义和评估。他们提出对软件的变更建议和对系统后一个版本应该实现的新需求的提议。
  3. 系统用户界面通常是采用交互式开发系统开发的,这些开发系统允许通过绘图和在界面上摆放图标的方式迅速完成界面的设计。系统可以为浏览器生成基于Web的界面,或者是为专门平台比如微软视窗设计一个界面。

敏捷方法是增量式开发方法,每个增量一般都比较小,通常,每两三个星期就会创建系统的新版本并提供给用户使用。用户参与开发过程,以便快速地获得变更需求的反馈。利用非正式的沟通、而不是采用有书面文件的正式会议,这样使文档制作量最少化。

敏捷方法

敏捷方法关于软件开发成功的理解

虽然没有成功地生产出软件产品,但是在软件过程中如果及时发现风险,及时结束项目开发,避免更大的损失,敏捷方法认为成功;
虽然存在一定的超支、超期现象,但是软件产品成功生产,并在实际业务应用中创造了巨大价值,敏捷方法也认为成功。

敏捷宣言

  1. 强调灵活、快速地生产可用的软件产品
  2. 强调敏捷团队成员个体活动及个体间的交互,而不是强调过程、开发工具
  3. 强调花更多时间生产能够服务于用户的软件产品,而不注重生产详尽的文档资料
  4. 强调敏捷团队的用户协作开发,而不是基于死板的合约
  5. 注重应对变更,而不是遵守一成不变的开发计划

关于敏捷方法的敏捷的理解

  1. 交流:用户与开发人员持续沟通、交流
  2. 简单设计:软件设计、实现都简单的选择方案(简单地设计,给出粗略的、可行方案,不做详尽、全面、细致的方案设计)
  3. 频繁交付:尽快的、频繁的交付,不要害怕软件存在缺陷
  4. 应对反馈:软件开发过程的不同活动都相应反馈,解决变更问题

敏捷方法的基本原则:

在这里插入图片描述
对于系统描述,计划驱动和敏捷方法之间的不同:

在这里插入图片描述

极限编程

极限编程的版本循环:

在这里插入图片描述
如下图,反映了敏捷方法的一些原则:

  1. 增量式开发是通过系统小的频繁的版本来支持的,其间所采用的对需求描述的方法是基于客户故事情节或脚本,这样的故事情节或脚本作为决策哪些功能需要放在增量里的根据。
  2. 客户的参与是采用全时雇佣到开发团队的方式。客户代表参与开发并负责定义系统的接收测试。
  3. 人,而不是过程,是通过结对编程、对系统代码的集体拥有、可持续的开发过程而无需超额的工作时间来运作的。
  4. 对变更的支持是通过经常性的系统版本发布、测试优先开发、重构以避免代码退化以及连续的集成新功能等方法实现的。
  5. 对简单性的维护是通过持续的重构来改善代码质量、使用简单的设计以减少系统将来的变更等方式来支持的。

在这里插入图片描述

增量开发的一个普遍问题是,它有使软件结构变坏的趋势,所以变更越来越难以实现。本质上,程序员总是在想方设法找到一个变通方法以解决问题,代码经常重复,部分软件不恰当地使用,代码添加到系统中使整体结构变坏。

极限编程对此问题的解决是通过对软件的不断重构。这意味着编程团队对软件查找可能的改善并马上实现它。当一个团队成员发现代码可改进,即使在没有紧急需要的情况下,他们也会改进它。重构的例子包括:类的层次结构重组以消除重复代码,整理和重命名属性和方法,调用程序库中的方法替换代码。程序开发环境,比如Eclipse ( Carlson,2005),包括重构的工具,可以简化寻找代码不同部分间的依存关系并进行全局代码修改。

敏捷项目管理

Scrum方法是一个通用的敏捷方法,但主要是注重迭代开发的管理,而不是管理敏捷软件工程的专门的技术方法。Scrum的管理过程图:

在这里插入图片描述
Scrum有3个阶段。第一个是规划纲要阶段,建立大致的项目目标和设计软件体系结构。接下来是一系列的冲刺循环,每个循环开发出一个系统增量。最后,项目结束阶段总结项目,完善需要的文档,如系统帮助和用户手册,并总结从项目中学到的经验。

Scrum的创新在于它的中心阶段,也就是冲刺循环。一个循环是一个计划单元,需要做的工作有:评估,特征的选择和开发,软件实现。循环的最后一个阶段,所开发的全部功能都将交付给信息持有者。这个过程的主要特点如下:

  1. 冲刺有一个固定的长度,一般是2~4周。在XP中,对应于一个系统版本的开发。
  2. 规划的起点是所谓的backlog(积压的任务),是项目中要完成的工作清单。在评估阶段,这些积压的任务经过审查,对它们进行优先级排序并进行风险的指派。此过程中,用户都紧密地参与,在每一个循环开始时提出新的需求或任务的建议。
  3. 在选择阶段,项目团队的所有人员都要参加,和用户一起选择在冲刺循环中要开发的特性和功能。
  4. 一旦这些都得到同意,团队将组织进行软件开发。每天,团队的开发成员都要参加短时会议,回顾开发过程,若有必要,将重新安排工作。这个阶段,开发团队是隔离于客户和机构的,所有的交流都通过所谓的“Scrum master”进行。Scrum master使开发团队免受外界干扰。工作方式取决于遇到的问题和团队。不像XP,Scrum对于如何写需求、测试优先开发等不做具体要求。但是,如果团队觉得合适,这些XP的实践也可以用。
  5. 冲刺循环的结束,对已做工作复查并交付给用户。接着,下一个循环就开始了。

优点:

  1. 产品被分解成一组可管理的和可被理解的块。
  2. 不稳定的需求并不阻碍工程进展。
  3. 整个团队的所有事情都是可见的,因此改善了团队的沟通。
  4. 用户看到增量的及时交付,且得到对于产品如何工作的反馈。
  5. 客户和开发者之间彼此信任,创造了积极的文化,每个人都希望项目成功。

结论:

  • 敏捷方法是一种专注于快速开发的增量式开发,频繁地发布软件、降低过程开销、生产高质量的代码。他们使用户直接地参与到开发过程中。
  • 决断是否是使用敏捷或计划驱动的方法取决于所开发系统的类型、开发团队的能力和开发系统的公司的文化。
  • 极限编程是一种著名的敏捷方法,它集成了一系列好的编程经验,例如频繁地软件发布,连续软件改善和客户参与到软件开发团队。
  • 极限编程的一个特别长处是在创建程序特征之前开发自动测试。在增量集成进系统的时候所有的测试必须成功执行。
  • Scrum方法是一种提供项目管理框架的敏捷方法。它的核心是一组冲刺循环,开发一个系统增量是有固定的时间周期的。规划是基于积压的工作的优先权安排的,选择高优先权的任务开始冲刺循环。
  • 伸缩的敏捷方法对于大型系统是很困难的。大型系统需要前期设计和一些文档。在实践中,当一个项目有几个独立的开发团队时,连续的集成是不可能的。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 敏捷开发流程是一种快速、灵活的软件开发方法,它通过迭代的方式来开发项目,并且重视通过持续的交流、协作和调整来满足客户的需求。 Scrum 是一种敏捷开发流程的具体实现方法。它是由三种角色组成的:产品负责人、Scrum 团队和 Scrum 经理。产品负责人负责确定项目的目标和范围,Scrum 团队负责执行项目并交付可用的产品,而 Scrum 经理则负责协调团队的工作并确保项目的进度。 Scrum 流程通常分为以下几个步骤: 1. 冲刺计划会议:在开始新的冲刺(迭代周期)之前,团队会进行冲刺计划会议,确定在本次冲刺中要完成的工作。 2. 每日站立会议:每天举行的短暂会议,用于更新团队成员的工作进度、讨论任何问题并寻求解决方案。 3. 冲刺审查会议:在冲刺结束时举行的会议,用于回顾本次冲刺的成果、讨论改进方法并确定下一步工作。 4. 冲刺总结会议:在冲刺结束后举行的会议,用于回顾 ### 回答2: 敏捷开发流程是一种迭代、增量式的软件开发方法。它强调通过紧密合作和快速响应变化来提高团队的效率和产品的质量。敏捷开发流程主要包括需求分析、计划、设计、编码测试和发布等阶段,每个阶段都是迭代进行的。团队成员在每个迭代期间都要进行会议讨论、交流以及及时地调整开发计划和需求。敏捷开发流程注重客户需求的积极响应,团队与客户之间的密切合作和及时反馈是其关键。 Scrum是一种敏捷开发框架,它是通过在开发过程中强调团队合作、迭代开发和持续改进来实现项目管理的。Scrum流程包括三个关键角色: 产品负责人、Scrum团队和Scrum大师。产品负责人负责所有关于产品的决策和需求管理,包括产品待办事项的整理和优先级排序。Scrum团队由开发人员组成,他们承担编码、测试和提交可交付的工作成果。Scrum大师负责支持团队高效完成工作,并确保Scrum流程的正确执行。 Scrum流程由一系列时间盒(time-boxed)的活动组成,例如每日站会、Sprint计划会议、Sprint评审和Sprint回顾会议。每个时间盒内的工作是固定的,活动的目标必须在规定的时间内完成。这种时间限制鼓励团队高效工作,并提供了一个持续改进的机会。 总结来说,敏捷开发和Scrum流程都强调迭代开发、团队协作和持续改进。它们通过灵活的方法和强调人际间的互动,帮助团队更好地应对需求变化和提高工作效率,从而保证项目的成功。 ### 回答3: 敏捷开发流程是一种迭代与增量的软件开发方法,它强调通过频繁的沟通、快速回应变化以及高度协作的方式来适应需求的变化。敏捷开发流程可以提高团队的灵活性和适应性,同时也能够减少开发中的风险。 Scrum 流程是敏捷开发流程中的一种常见方法,它侧重于团队合作和自组织。Scrum 流程将工作分为若干个可以在短时间内完成的时间段,称为“冲刺”。每个冲刺通常持续一至四个周,在冲刺开始前,团队确定要完成的任务和目标。在每个冲刺期间,团队会每天进行短暂的会议,称为“每日站会”,以便了解进展情况和解决问题。 Scrum 流程中的关键角色包括产品负责人、Scrum Master 和开发团队。产品负责人负责定义产品需求和优先级,并在每个冲刺中确定需要完成的任务。Scrum Master 负责确保团队能够按照 Scrum 流程进行工作,并协调团队内外的事务。开发团队是负责实际开发任务的成员,他们通过自组织的方式进行工作,并在每个冲刺期间交付可用的软件。 Scrum 流程强调快速的反馈和可视化,通过可见的工作看板和冲刺回顾会议,团队能够及时了解项目的进展和问题,并做出相应的调整。Scrum 还鼓励团队进行定期的迭代回顾和持续改进,以提高团队的工作效率和建设质量。 总之,敏捷开发流程和 Scrum 流程都是遵循快速响应变化,并通过高度协作的方式进行工作的软件开发方法。它们能够提高团队的灵活性和适应性,同时也能够加速项目的交付进度,提高客户满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花无凋零之时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值