什么是敏捷开发?

article/2025/9/22 23:22:52

什么是敏捷开发?

  • 敏捷开发是一种以人为核心,迭代,循序渐进的开发方式。
  • 在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
  • 加单的说,敏捷开发并不是追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。

敏捷开发模式的分类

敏捷开发的实现主要包括Scrum与XP(极限编程,ExtremeProgramming),还有其他的一些方式。

(Scrum:橄榄球的并列争球,橄榄球并列争球的全体前锋,相互拥挤的人群)

Scrum是迭代式增量软件开发过程。

同样是敏捷开发,XP极限编程更侧重于实践,并力求把实践做到极限,实践可以是测试先行,也可以是结对变成,关键要看具体的应用场景。

SCRUM则是一种开发流程框架,也可以说是一种套路。SCRUM框架中包含了三个角色,三个工件,四个仪式。其目的是为了有效完成每一次迭代周期的工作。SCRUM是一个重点。

什么是SCRUM?

SCRUM是一个适用于增量式产品开发的管理框架,由一个5-10人左右的跨职能和自组织的团队组成。

它提供了一个包含角色、规则和工件的结构。团队负责在此框架范围内创建和调整他们的流程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cLWDlUBu-1654862239947)(.\typoraImgs\image-20220610170311691.png)]

几个基本术语:

  • 冲刺周期(Sprint)

    中文译为冲刺、短跑,是Scrum的专有术语。冲刺周期,通俗的讲就是实现一个“小目标”的周期。一般需要2-6周时间。

  • 用户故事(User Story)

    用户的外在业务需求。拿银行系统来举例的话,一个Story可以是用户的存款行为,或者是查询余额等等。也就是所谓的小目标本身。

  • 开发任务(Task)

    由故事拆分成的具体开发任务。

三大角色

  • 产品负责人(Product Owner)

    主要负责确定产品的功能和达到要求的标准,制定软件的发布日期和交付的内容,同时有权利接收或拒绝开发团队的工作成功。

  • 流程管理员(Scrum Master)

    主要负责整个Scrum流程再项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。

  • 开发团队(Scrum Team)

    主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5-10人左右,每个成员可能负责不同的技术方面,但要求每个成员必须要有很强的自我管理能力。同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。

三个工件

产品需求列表(Product Backlog):产品首先将需求按照优先级进行排列,产生一个Product Backlog。作用类似于传统开发中项目经理确定需求文档。产品待办列表就是产品的“what”。PO(产品负责人)通过讲故事的方式,让团队理解产品的目标,帮助整个团队对用户故事有充分和统一的理解。

迭代需求列表(Sprint Backlog):有了Product Backlog,我们需要通过Sprint Planning Meeting(Sprint计划会议)挑选出用户故事(Story)作为每次迭代完成的目标。

冲刺燃尽图(Sprint burn down):它表示的是剩余工作量与剩余时间的关系,用于提醒大家项目进度和要完成的任务。说白了就是记录当前周期的需求完成情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mpyuwH5x-1654862176612)(.\image-20220610173532583.png)]

四个仪式

  • Sprint计划会(Sprint Planning Meeting):在每个Sprint开始时召开,由全体人员参加。这个会议主要有两件事情要确定。①确定当前Sprint的目标 ②选定当前Sprint要处理的最具价值的用户故事,创建Sprint Backlog(需求列表)

  • 每日站会(Daily Scrum Meeting):一般在15分钟以内。团队成员相互交流任务的进展,计划以及遇到的困难。

  • Sprint评审会(Sprint Review Meeting):又叫Sprint演示会、Sprint展示会等,是团队用来展示当前Sprint开发成果的会议。

  • Sprint回顾会(Sprint Retrospective Meeting):用来回顾在当前结束的Sprint中的工作、进行经验总结、反思,并拟定响应的改进措施。

5个价值观

  • 承诺
  • 专注
  • 开放 Scrum中一切信息对所有人开放,让问题无所隐藏
  • 尊重
  • 勇气

Scrum开发流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W49E9dtg-1654862176612)(.\image-20220610174945704.png)]

1.我们首先需要确定一个产品需求列表(Product Backlog),这个是由PO负责的。

2.有了Product Backlog,我们需要通过Sprint Planning Meeting(Sprint计划会议)来从中挑选出一个Story作为本次迭代完成的目标。

3.Sprint Backlog是由Scrum Team完成的,每个成员根据Sprint Backlog再细化成更小的任务(每个任务的工作量可以在2天内完成)。

4.进行Daily Scrum Meeting(每日站会),每次会议控制在10分钟以内,每个人都必须发言,并且要向所在组成员当面汇报你昨天完成了什么,并且向所有组成员承诺你今天要完成什么,同时遇到不能解决的问题也可以提出,相关人员在会后进行解答、处理。

5.当一个Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,这时,我们要进行Sprint Review Meeting(演示会议),也称为评审会议,产品负责人和客户都要参加(最好本公司老板也参加),每一个Scrum Team的成员都要向他们演示自己完成的软件产品。

6.最后就是Sprint Retrospective Meeting(回顾会议),也称为总结会议,以轮流发言式进行,每个人都要发言,总结讨论改进的地方,放入下一轮Sprint的产品需求中。

总结:1、确定产品需求列表-2、Sprint计划会议-3、Strum Team开始分工Sprint-4、Daily Strum Meeting每日站会-5、Sprint Review Meeting,Sprint的评审会议,演示会议-6、Sprint Retrospective Meeting,Sprint的总结会议。

敏捷开发和瀑布式开发比较

工作方式:

瀑布式开发:①重视和强调过程文档,以文档驱动项目,将软件项目开发周期严格划分为几个固定阶段(需求分析,系统设计,软件设计,编码,测试,交付),每个阶段结束都有对应的详细文档作为输出;②上一个阶段的输出就是下一个阶段的输入,直至完成整个开发流程。

敏捷开发:①更加强调人和协作(团队之间,客户与团队之间),在高度协作的环境中使用迭代方式进行增量开发。②客户可对每次迭代的成果提出修改意见,开发人员进行调整和完善。③进行多次迭代直至完成完整产品交付。

优点:

瀑布式:

①每个阶段目的明确,阶段人员完全专注于该阶段的工作,有助于提高阶段效率。②由于存在详细的过程文档,在早期就能明确提出项目的范围和概况,能够更有效的组织和调配资源开展项目。

敏捷开发:

①阶段性成果可以在开发过程中被客户查验,从而降低软件开发风险性。

②灵活性高,需求的变更可在任何时候进行。

缺点:

瀑布式开发:

①开发过程中大量的文档,极大的增加了工作量。②项目后期才能展示成果给客户,增加了项目开发的风险。③需求变更成本高。

敏捷开发:

①最终交付的内容无法预测,预期和实际完成的内容经常会有很大差异。②敏捷需要高水平的协作以及开发人员和用户之间的定期沟通。业务和IT人员在沟通前需要做大量的准备工作,在很多情况下,业务的沟通时间无法保证。

适用项目:

瀑布式开发:

软件需求十分明确并且不会有频繁变化的项目

敏捷开发:

需求不明确、具有创新性或者需要抢占市场的项目。

总结

​ 很显然,敏捷开发与瀑布式开发有着质的区别,但总的来说,在管理项目过程中,都不会严格的按照完全的敏捷开发或者完全的瀑布开发,而是各自参杂了其他的方式。

​ 可见,项目管理过程中,过于强调模式并没有意义,重要的是要能预防问题的发生,在问题发生之后,能用最小的成本解决,模式起到的更多是一个参考作用。


http://chatgpt.dhexx.cn/article/WkpTK6S9.shtml

相关文章

GridView 激发了未处理的事件“PageIndexChanging”

在手动给gridview邦定数据源时,会出现这种情况 运行后直接显示分页的1,只有1显示正常,如果点选其它的,比如2或者4什么其它别的,提示: GridView“XXX”激发了未处理的事件“PageIndexChanging”。 手动分页必须有PageIndexChanging事件,添加PageI…

PageView的设置

1、创建一个PageView控件,自动生成background精灵和mask的view视图和indicator View下面有一个content(Layout类型) ,content可以存放每页内容 页面指示器,可以清晰看当前是多少也 2、监听PageView事件 // 监听事件 o…

ViewPager和PageAdapter,FragmentPageAdapter,FragmentStatePageFragment

【Android】ViewPager深入解析(一) http://www.imooc.com/article/2580 2015-12-07 11:59:28 11830浏览 19评论 话说小伙伴们在使用App的时候有没有注意到很多App的首页都是可以左右滑动的页面呢?很多App还有绚丽的轮播图广告。那么如何实现这…

viewpager.setcurrentitem导致的ANR

参考:Java线程Dump分析工具–jstack dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注&#x…

对GridView、DetailsView 和 FormView 控件分页属性的PagerSettings类的设置

如果想让分页导航加上图片形式或比如上一页下一页,这种样式,那就要在<GridView>写在这里面</GridView>控件中加上<PagerSettings></PagerSettings>,例如:<PagerSettings Mode="NextPreviousFirstLast" FirstPageText="首页"…

ViewPager + GridView实现GridView分页

概述 通过ViewPager实现GridView的分页 实现 ViewPager通过设置PagerAdapter实现分页。每一页的布局是一个GridView。GridView通过设置自己adapter渲染GridView。 ViewPager&#xff1a;分页器。 GridViewPageAdapter&#xff1a;继承自PagerAdapter。ViewPager的适配器。 Gr…

非常实用的GridView.PagerTemplate 属性

获取或设置 GridView 控件中页导航行的自定义内容。 命名空间:System.Web.UI.WebControls程序集:System.Web&#xff08;在 system.web.dll 中&#xff09; 语法&#xff1a;C# [TemplateContainerAttribute( typeof (GridViewRow))] public virtual ITemplate PagerTempla…

ViewPager的PagerAdapter中的notifyDataSetChanged更新数据总结

最近在工作中遇到了一个问题&#xff0c;就是在viewpager中调用pageradapter.notifydatasetchanged方法&#xff0c;好像没有任何效果&#xff0c;相应的view也没有更新数据&#xff0c;根据官方API是这样解释的&#xff1a;大概是说明Adapter会自动管辖ViewPager每一页(Item)的…

GridView1_PageIndexChanging 分页

//这里点击页面会报错所以要写这个 然后从新刷新一下 可以调一下属性什么的 this.GridView1.PageIndex e.NewPageIndex;jiazai(); c#后台写弹窗 跳转 Response.Write("<script>alert(修改成功);window.location.hrefhttp://localhost:65390/%E6%88%BF%E5%B1…

ViewPager控件之PagerAdapter适配器

一、ViewPager的基本用法 1、简介 ViewPager可以实现多个界面的左右滑动。ViewPager最典型的应用场景主要包 括引导页导航&#xff0c;轮转广告和页面菜单。 ViewPager最早出自4.0版本,为了兼容低版本安卓设备&#xff0c;谷歌官方给我们提供了 一个的软件包android.support.v4…

ViewPager onPageChangeListener总结

android ViewPager滑动事件讲解 今天在做项目的时候&#xff0c;由于要处理viewPager页面滑动的事件&#xff0c;所以对其进行了一个小小的研究&#xff1a; 首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageChangeListener这个接口需要实现三个方法&am…

ViewPager onPageChangeListener总结

android ViewPager滑动事件讲解 今天在做项目的时候&#xff0c;由于要处理viewPager页面滑动的事件&#xff0c;所以对其进行了一个小小的研究&#xff1a; 首先ViewPager在处理滑动事件的时候要用到OnPageChangeListener OnPageChangeListener这个接口需要实现三个方法&#…

iscsi命令

iscsi客户端命令 iscsiadm 1.发现target设备 iscsiadm -m discovery -t sendtargets -p 10.12.22.61 疑问&#xff1a;10.12.22.60&#xff1a;3260&#xff0c;1 1表示什么意思(表示portal group tag,参考补充资料1)&#xff0c;此外&#xff0c;为什么连同ip为60的信息…

iSCSI 协议

iSCSI 协议 iSCSI协议结构 如同任何一个协议一样&#xff0c;iSCSI也有一个清晰的层次结构&#xff0c;根据OSI模型&#xff0c;iSCSI的协议栈自顶向下一共可以分为五层&#xff0c;如图所示&#xff1a; SCSI层&#xff1a;根据应用发出的请求建立SCSI CDB(命令描述块)&…

Linux与ISCSI

ISCSI&#xff08;Internet Small Computer System Interface&#xff09;:Internet 小型计算机系统接口&#xff0c;是一个基于 TCP/IP 的协 议&#xff0c;主要用于通过 IP 网络仿真 SCSI&#xff0c;从而为远程块存储设备提供数据传输和管理。说白了&#xff0c;就是通过 网…

ISCSI服务

Internet Small Computer System Interface:Internet 小型计算机系统接口&#xff0c;是一个基于 TCP/IP 的协 议&#xff0c;主要用于通过 IP 网络仿真 SCSI&#xff0c;从而为远程块存储设备提供数据传输和管理。说白了&#xff0c;就是通过 网络由专门的服务器提供存储管理&…

iSCSI 网络磁盘共享

17.1 iSCSI技术介绍 iSCSI技术实现了物理硬盘设备与TCP/TP网络传输协议的相互结合&#xff0c;使得用户可以通过互联网方便的获取到远程机房提供的共享存储资源 硬盘是计算机硬件设备中重要的组成部分之一&#xff0c;存储设备的IO读写速度快慢也直接影响着服务器整体性能的高…

ISCSI的部署与安装

iSCSI&#xff08;Internet Small Computer System Interface&#xff0c;Internet小型计算机系统接口&#xff09;是一种由IBM公司研究开发的IP SAN技术。 该技术是将现有SCSI接口与以太网络(Ethernet)技术结合&#xff0c;基于 TCP/IP的协议连接iSCSI服务端&#xff08;Targe…

SCSI协议与iSCSI协议

文章目录 1.SCSI协议2.iSCSI协议3.IO--SCSI错误处理机制 1.SCSI协议 SCSI的起源 SCSI出现的原因主要是因为原来的IDE接口的硬盘转速太慢&#xff0c;传输速率太低&#xff0c;因此高速的SCSI硬盘出现。其实SCSI并不是专为硬盘设计的&#xff0c;实际上它是一种总线型接口。由…