敏捷开发流程简介

article/2025/9/22 23:24:12

最小可行化产品

硅谷创业家 Eric Rise 在其著作 《精益创业》 一书中提出了 “精益创业”(Lean Startup)的理念,其核心思想是,开发产品时先做出一个简单的原型——最小化可行产品,然后通过测试并收集用户的反馈,快速迭代,不断修正产品,最终适应市场的需求。

假如时光倒流,来到了2007 年,你要从零打造一个类似如今新浪微博的产品,有一系列需求摆在面前:

  1. 用户注册、登录
  2. 发布 140 字的文字微博
  3. 发布带图片的微博
  4. 发布带视频的微博
  5. 发布投票

现在面临两个选择:1. 花费 6 个月的时间,将以上的需求全部完成后上线,给用户一个强大功能的社交网站体验。2. 花费 2 个月时间,完成用户注册登录和发布文字的功能,让用户最快体验到这个功能相对较弱的全新社交产品,在接下来的时间里,根据用户反馈,完善已有功能,同时开发上传图片的功能,一旦开发测试完成,就立即上线。以小步快跑的节奏不断完成需求表格中的其他需求。

精益创业的思想就是采用第二种方案进行渐进式开发,这样的开发模式有诸多好处:

  1. 最小可行化产品能在最短的时间内完成开发,以最快的速度验证用户需求
  2. 时间早意味着具有先发优势,方便更早地积累用户,这一点在社交产品上尤为明显,后发的同类产品往往需要背负“模仿”的帽子
  3. 能第一时间听到用户的声音,最大程度避免了产品方向上的错误

敏捷开发模式(Scrum)实际上是精益创业思想的实践指南。

敏捷开发模式

敏捷开发采用循序渐进的方法进行软件开发,把一个大项目分为多个相互联系,但也可独立运行的小项目,分别去完成,在此过程中软件一直处于可使用状态,具体流程如下:

1. 梳理产品需求(Product Backlog)

在开发之前,一定会有一个需求列表,定义了产品在接下来需要具备的特性和功能,一般由产品经理来定义,在敏捷流程中,称这个人为 Product Owner(PO)。定义 Product Backlog 时,需要遵循 INVEST 原则,即:

  • Independent 独立的,尽量和其他需求没有依赖
  • Negotiable 可讨价还价的
  • Valuable 有价值的
  • Estimable 可预估的
  • Small 足够小,拆分到一个迭代内能完成
  • Testable 可被测试的

定义需求的同时,Product Owner 还需要定义需求的优先级,定义优先级可以借助一个公式:功能带来的的价值除以实现难度, 这个值越大则代表优先级越高。

2. 制定迭代计划

一般规定两周( 10 个工作日)为一个迭代,在迭代开始之前,需要召开迭代计划会制定这一个迭代的计划,把 Product Backlog 按照优先级排序,由 PO 为大家讲解具体每一个需求,团队成员根据需求的复杂程度评估每个任务的工作量,当前 n 个任务的工作量之和约等于团队总工时时,那么这个迭代就把 Product Backlog 中前 n 个任务作为这次迭代的任务,在敏捷中称之为 Sprint Backlog。

团队总工时的计算方法:如果团队有 5 个工程师,一个迭代的工时为 5 * 10=50 人日,考虑到工作效率和其他的意外情况,再乘以 80% ,那么最终实际用于开发的工时为 40 人日,有些团队会以小时作为单位,同理,只需将单位换成小时。

团队需要把 Sprint Backlog 和预估的时间写在便签纸上,把它们贴在白板上,白板划分成三大块:未开始、进行中、已完成,当然,所有 Sprint Backlog 的状态开始都应放在未开始那一列。

3. 迭代执行

在迭代进行期间,由大家认领白板上的 Backlog,每天早上要开一个每日站会,时间在 10 分钟以内,由大家依次报告:

  1. 我昨天做了什么
  2. 今天计划要做什么
  3. 遇到了哪些问题

每日站会强迫每个人向同伴报告进度,迫使大家把问题摆在明面上,尽可能让信息公开透明。报告进度的同时移动对应的卡片到合适的位置,修改 Backlog 剩余所需要的工作量,Scrum Master 需要统计剩余所有的工时,更新到燃尽图中。当燃尽图的走到 0 ,就意味着完成了这个迭代中所有的任务。

燃尽图

燃尽图

4. 迭代总结

迭代的最后一天,还有两个环节要做:成果展示和团队的内部总结。

成果展示环节要求团队成员在这个迭代中自己完成的任务展示给所有人看,除了团队内部所有成员以外,还可以邀请领导等关心项目进展的人。内部总结则只在团队内部进行,总结这个迭代中做的好的地方以及不好的地方,接下来如何改进等。

以上是实施敏捷开发模式的大致流程,当然,在实际执行过程中会遇到或多或少的问题,一般需要几个迭代的熟悉和磨合。

 

参考文献:

https://www.jianshu.com/p/9308a4cffaf7

https://cloud.tencent.com/developer/article/1040819


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

相关文章

浅谈敏捷开发中的设计

敏捷开发在当今业界已经大行其道,想要快速交付,采用敏捷开发方法似乎是最好的方式,是否必须要用这就另当别论了。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,不过,想要真正做到…

什么是敏捷开发?敏捷开发流程的8个步骤

文章目录 一、什么是敏捷开发?二、敏捷开发模式的分类三、SCRUM 的工作流程四、敏捷开发流程的8个步骤包括:五、敏捷开发模型 一、什么是敏捷开发? 敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。 在…

什么是敏捷开发?教你正确理解敏捷开发

敏捷开发是相对于瀑布开发来说,一种轻量级的软件开发方式。敏捷开发是为了快速响应需求变化、通过组建跨职能团队实现持续不断的交付高质量的产品的方法的集合。所有符合敏捷宣言和敏捷开发十二项原则的方法都可以是敏捷开发的一种实践。 在大多数的敏捷开发实践过…

什么是敏捷开发?

什么是敏捷开发? 敏捷开发是一种以人为核心,迭代,循序渐进的开发方式。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。加单的说,敏捷开…

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;就是通过 网…