“敏捷开发”是互联网开发很火的一个概念,但很多互联网人都可能会误解敏捷开发模式,认为“敏捷开发”就是想以什么样的节奏、流程开发,就用什么样的节奏、流程开发(软件上线前一小时,还接到新增的产品需求,就问你慌不慌?)。过于随意的节奏、流程不仅会打乱开发计划,更会影响软件的线上质量。因此,我们有必要搞清楚“敏捷开发模式”到底是什么。
在讲敏捷开发前,我们先讲早期的、传统的“瀑布开发模式”,见以下图示。“瀑布开发模式”下,依次会进行产品需求设计、UI设计、开发和测试,测完通过后就交给用户使用。以建设酒店为例,先是要请建筑设计师设计出酒店双人标准间、家庭套房、单人间和酒店停车场等的蓝图,全部设计完毕后,建筑设计师就可以退场休假;接着再请建筑工人按照酒店设计去施工,建筑工人在对酒店的双人标准、家庭套房和单人间等每个房间、每一处角落施工完毕后,也退场休假了;然后请验收人员进行酒店验收,验证人员对酒店的每一个房间、每一处角落验收完成后,酒店再对顾客开放。
因此,在“瀑布开发模式”下,产品需求设计的过程中,UI设计、开发和测试是处于空档期的;产品需求设计完成后,UI同学进行UI设计的过程中,产品同学、开发同学和测试同学也是处于空档期的;开发环节和测试环节同理,只要其中一个部门处在工作状态下,另外3个部门必然是处在空挡状态。“瀑布开发模式”的弊端就是开发周期长,并且只有测试通过、最后真正交付的时候,用户才能使用到产品。此外,“瀑布开发模式”对产品、UI、开发等的要求也非常高,因为其中一个环节出错或更改就意味着下游也要跟着修改。
为了适应互联网产品开发周期短、节奏快的特点,“敏捷开发模式”产生了,见以下图示。
“敏捷开发模式”是把传统的软件开发分割成一个接一个的“迭代”,在一个“迭代”中仅实现整个产品的部分功能但又保证产品可用(功能简单,但该有的功能都有),而整个产品则在一个接一个的迭代中逐步完善。还是以酒店开发为例,建设设计师在设计完双人标准间后,就交由建筑工人施工了;而在建筑工人施工的同时,建设设计师会考虑如家庭套房、单人间、酒店的停车场等重要但非紧急的功能如何设计。而在20多间双人标准间验收合格,但整个酒店还剩余100间房间待装修的时候,酒店就可以部分对外开放,接收客人了。敏捷开发的特点是:(1)人员几乎没有空档期;(2)每个迭代都保证用户有产品可以使用;(3)单个迭代开放周期短;(4)产品、UI出错,不需要推翻整个开发流程重新来过。相较于传统的“瀑布开发模式”,敏捷开发更灵活、更高效率。
需要特别注意的是,“敏捷开发模式”不是“随意开发模式”,敏捷开发只是把整个软件开发周期分隔成几个连续的软件开发周期,但对于每个软件开发周期,其产品需求和开发计划大体是确定的,也是经过深思熟虑的。临时增加需求、变更需求、打乱开发计划和成熟的敏捷开发其实是相去甚远的,不可取的。
还是以酒店开发为例,在双人间施工到一半时,建筑工程师被告知双人间设计要更改;或者第一批房间马上就要对外开放了,建筑工程师被告知,在对外开放截止日期前再增加几个房间。碰到这些情况,可想而知建筑工程师的心情会有多糟糕,以及赶工完成任务后,建筑质量会有多可靠。
因此,正确理解敏捷开发流程,将软件功能按优先级顺序,在一个接一个的迭代中有条不紊地设计产品需求、开发产品需求,才是成熟的、高效可落地的软件开发模式。
提交评论
您尚未登录,登录后方可评论~ 登录 or 注册