引子


在有些公司其实也会使用到敏捷管理,敏捷开发,也就是scrum,这个在一些外企使用比较多,国内公司比较少见,我曾经在外企呆过用的就是敏捷方式。那么在这里我们也对其进行了解一下即可,毕竟有时候面试的时候可能会问起你,你也不要一问三不知,知道一些理念概念就可以了。

传统开发:从设计到编码,从测试到交付,每个阶段都必须完成,才能进入下一个阶段。这个是瀑布式开发,他已经过时了,这也是传统工业的生产模式,在IT互联网领域中早已经不适用了。 

举个例子,平时去饭店吃饭,我点完菜都是逐个上菜的吧,但是大年夜饭店里吃年夜饭,大多都是套餐,都已经做好了,你说要上菜,他就啪啪啪的全部上菜了,他不管你点了10个还是20个菜,都是一次性上的,你就很郁闷啊,就不能分开了,一个一个的上菜吗,饭桌都放不下。

那么这个例子其实就是传统开发模式,他交付的时候是把所有的内容全部交付的,其实分开了单独交付,也是没问题的。

我们现在做产品,并不是把所有的计划内的功能全部实现以后,才上线的,如果这么做,市场份额就稀释了,黄花菜都凉了。所以现在做项目都是分迭代期的,一期二期三期这么做下去。每周再分小迭代,修修补补或者做点新功能,逐步迭代,这样才是最佳的上菜方式。毕竟我们不能一口气吃成胖子嘛。


敏捷开发


所以这就引入了敏捷开发。什么是敏捷开发呢?如下:

敏捷开发是以用户的需求进化为核心的,以人为本,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目(或者说子业务,微服务),各个子项目也都需要具备可测试、可集成、可运行的特征,本质上就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并且分别单独完成,在这个过程中软件一直处于可使用状态,每个子项目子功能都可以持续迭代、持续交付。

通俗点来讲,就是敏捷开发并不是一昧的追求完美的设计、完美的编码、完美的产品。而是在短期内,以一个小周期进行开发产品的核心功能,尽早发布第一个可用版本,然后再后续的项目周期中,按照需求再不断迭代升级,完善产品。这个其实在之前的课程中我们也有提到过,比如最终版钢铁侠,他也是一步一步迭代过来的,根据需求去进化;还有现如今的淘宝,也是从最初期慢慢演变过来的。又或者说架构,其实本质也是慢慢的演变的,并不是一上来做项目就是选用一个高逼格的架构,越这么做越死得快。


Scrum


那么再来看Scrum,这又是啥意思呢?

我们这么做比喻,我们把敏捷开发比作MVC模式,那么MVC模式有很多框架呀,比如Struts,springmvc,springboot等,都是,这些都是基于MVC模式的基于这个理念的实现框架,我们要实现MVC模式只需要运用选择其中一个框架即可。而Scrum就是框架,就是敏捷开发的一个实现,使用这个管理框架就可以了。当然除了Scrum以外,还有极限编程啊等等。当然scrum是最为流行的一种。


Scrum 术语


Screm中有一些术语,是需要了解一下的:

  1. Sprint:冲刺周期,其实就是迭代期,一般来说2-4周,主要看公司的情况。我所经历过的,是1-2周,最快1周,如果任务多,那么就2周,但是不能超过两周,哪怕分为两个sprint也可以。
  2. User Story:用户的业务需求。也就是Sprint的目标。比如要开发购物车,下单,结算付款功能,这些都是。他是一个用户行为的整个业务流程。
  3. Task:把User Story中的需求拆分为多个任务点,其实就是WBS分解,分解为多个task以后,我们可以分配给不同的团队成员去执行开发。
  4. Backlog:需求列表,可以按照需求的优先级或者需求的商业价值排序,往往先实现上层高优先级,然后再迭代下层需求列表。每一个需求都可以是一个sprint。
  5. Daily Meeting:每日站会,每天早上团队站起来开会,汇总每个人的今日任务,目的是为了更好的监控和追踪项目进度。站着开会是为了更加有效,不要说废话,提高开会效率。
  6. Sprint Review Meeting:冲刺评审会议,演示开发完后的成果。
  7. Sprint Burn Down:冲刺燃尽图,查看任务完成的情况,之前在给公司做内训的时候有讲过,后面有时间再写个帖子聊聊。
  8. Release:发布,当前的迭代期完成,项目可以发布一个新版本。


Scrum 流程


以上的流程其实也可以通过如下图进行汇总:

聊一聊计算机软件类项目的敏捷开发 Scrum_敏捷开发

(图片来自百度搜索)


如图中所示,首先产品负责人或者产品经理,会整理用户需求,也就是根据User Story来设计的,随后产出产品需求列表,这个时候有很多,我们往往拿出一部分计划,作为一个迭代期去做,也就是冲刺需求列表,一般来说这个节点也会有评审会议或者计划会议,根据项目计划去进行冲刺的排期。随后拿到冲刺列表以后,这个时候项目经理就可以带着团队去执行了,假设迭代周期为两周,那么这两周内主要任务就是开发和测试了。当然每天也会有每日站会,项目经理通过项目管理工具或者也可以配合燃尽图来监控任务。当这个迭代节结束以后,那么就可以发布这个迭代期的成果了,当然发布前后,我们也需要进行冲刺评审会议和回顾会议。那么这一整个就是scrum的执行流程。


Scrum 场景


聊一聊计算机软件类项目的敏捷开发 Scrum_Scrum_02

使用Scrum一般来说我们可以用一个大的磁性画板,把任务进行综合监控(我们采用的是磨砂玻璃面板,在团队办公的最前面,每天进公司就能看到 😂)。第一栏可以写上任务的状态,一般来说可以有:

  1. 待开发
  2. 开发中
  3. 待测试
  4. 测试中
  5. 完成
  6. 可以根据实际情况进行分类扩展都是可以的。