文∣阿安,PMP,NPDP,敏捷教练,欢迎关注,一起学习产品开发管理
埃隆·马斯克太空探索技术公司( SpaceX)的创始人、首席执行官和首席技术官,特斯拉( Tesla Motors)的首席执行官和产品架构师,他曾说:"来冒险吧!做点刺激的事儿!你不会为此后悔的。"
他把产品研发当做一种冒险,他的勇气令人钦佩。对与大多数企业来说,必须要考虑新产品失败情况,选择一条可以尽量规避风险的发展之路。
“大厨式”研发VS“敏捷式”研发,孰优孰劣
在中国企业依赖能人的研发状态十分普遍,这样研发高手就像大厨一样,只有他们才能做得出“好菜”,这样研发模式被称之为“大厨式”研发。
这样依靠能人的开发方式,时间短、效率高、成本低是中小企业尤其是初创企业的首选,但这种方式有个致命的弊端,就是公司的产品研发离开他们就不行了,只要高手一离开,公司就不能做出来好的产品 。
美国项目管理协会调研发现,大多数公司研发研究显示新产品失败率超过70%,
对大多数组织而言,一个关键问题是:"研发新品是否有可能降低失败率?"如果有可能如何降低?
美国产品开发与管理协会的一项调查显示:"有些企业新产品研发的成功率为61%,而这些成功率在很大程度上取决于企业采用的新产品开发实践和流程的质量。调查表明,开发实践和流程是成功率提升的基础。"
在过去50年里,产品开发流程的研究和应用迅猛发展,因此出现了多种研发流程,很多流程是为了不同的行业、产品或市场而设计的。
今天,介绍用一张介绍产品开发模式的演变,软件开发从20世纪50年代就随着操作系统的发展演进,随着时代的演进,新的开放模式不断地被研发出来。
1.瀑布模式
瀑布模式由温斯顿·罗伊斯于1970年提出,采用盛行于硬件工业界的生命周期模式,迅速发展成为当时软件开发的主流模式。
此模式将软件开发分为几个不同的阶段,并清楚定义每个阶段所要做的工作及所要交付的文档,各阶段顺序执行且如果需要修订,仅往上一阶段且仅循环一次。
瀑布模式可根据软件系统的复杂程度,分为不同的阶段。一般将软件开发过程分为需求、设计、开发、测试、部署等阶段,开发较复杂的软件系统时,可细分成更多阶段。
瀑布模式特色:
1)一个阶段的结束就是项目管理的里程碑,根据阶段成果,决定是否要进入下一个阶段;项目资源的配置是以软件生命周期的各阶段为基础。
2)各阶段的工作人员负有每阶段产出的明确责任,各阶段产出都须经过确认、验证及测试,同时可借此发现质量上的缺陷并加以改善。
3)各阶段的工作人员须完成该阶段正确、完整及易读的文档或程序,移交给下一阶段的工作人员。且工作人员在接收前一阶段的产出时,也要确认其完整性与正确性。
瀑布模式缺点
1)在项目开始时,必须完整且清楚地描述所有需求,执行上缺乏弹性且困难。
2)系统开发周期冗长,过程中客户参与不足。
3)客户要到项目末期时才能看到产品,无法及时反应客户需求
4)项目工期较后阶段才开始进行开发,风险与失败成本都高。
5)各阶段的任何改变或错误都必须回溯到前一阶段,须遵守每阶段通常是冗长的审查或签核过程,过程过于严谨且缺乏弹性,易造成项目超支与超时。
2、渐增模式
将软件系统分解为多个子系统(或功能)后,先开发系统的核心功能,再依序或平行开发其他附属功能,每一个渐增阶段的开发模式以瀑布式进行,必须清楚定义要做哪些工作及交付哪些文档,每个阶段循序进行且仅循环一次。
渐增模式一般运用于庞大或复杂程度高的系统,经由切割系统需求功能或依客户要求,先行开发部分功能,再依序或同步进行其他功能的开发。
渐增模式特色
1)渐增模式根据系统的复杂程度或客户的需求,分阶段配置项目资源,因此弹性较高。
2)由于渐增模式采分阶段配置方式,对于项目预算的编制、付款、系统测试及人员教育训练等活动,都可采用分阶段方式进行这样可有效降低财务风险与项目失败风险。
3)若组织希望员工能充分熟悉与接受新系统时,采用渐增模式开发,能让组织成员有充分时间学习与进行技术转移。
渐增模式缺点
1)多阶段开发的模式需要对每个渐增阶段做清楚与完整的定义,因此可能使系统开发工期变长
2)每个渐增阶层都是僵化的,且不易互相关联。
3)每个渐增阶段的开发模式都如同瀑布式进行,有独自的需求、分析、设计、开发、测试等过程,因此总开发成本通常大于瀑布模式
3、雏型模式
它的主要目的,是希望在无法很清楚描述系统需求的情况下,能够先依客户所提需求,快速地建置一个雏型操作接口,以便及早澄清或验证不明确的系统需求。
软件开发过程中,强调以雏型操作接口,作为客户与开发人员沟通与学习需求的工具。双方通过雏型操作与反馈,反复进行厘清与修改需求,直到雏型系统确实符合客户需求,再以瀑布模式进行正式软件开发与测试至完成系统为止。
雏型模式特色
1)强调雏型的快速开发及用户高度参与。
2)强调以雏型作为用户及系统开发者之需求沟通与学习机制。
3)雏型模式属于客户导向的分析与设计,但往往大部分时间,客户并不清楚他们真正的需求是什么。
雏型模式缺点
1)雏型模式在软件开发项目初期,开发团队无法确切掌握要花多少时间,才能完成一个可被客户接受的产品。
2)雏型模式强调以雏型演进代替完整分析与设计,因此系统文档较不完备,后续程序维护相对困难。短期而言,能迅速满足用户需求,但长期而言,系统易偏离目标而失败。
3)雏型模式需要频繁的用户参与,易造成部分客户排斥。
4)开发团队会将维型系统视为最终产品,牺牲产品质量。
5)缺乏整体规划、分析与设计,故较不适用于大型及多人参与的系统开发项目。
4、螺旋模式
它兼顾了雏型模式的循环特征及瀑布模式的系统化与严格监控,最大特点则在风险的识别与应对,使得软件开发项目有机会在发现无法排除的重大风险时,及早进行风险响应或终止项目
避免发生严重的损失。
每个循环阶段所构建的雏型,是用以降低风险的方法,因此螺旋模式更适合大型软件系统的开发。
螺旋模式开发步骤
1)每个循环阶段有明确的目标、备选方案及其限制。
2)对备选方案进行评估,辨识并解决既有风险。
3)进行此循环阶段的开发与测试。
4)与客户一起对该阶段进行检讨与回顾。
5)重复步骤1)-4),当风险得到很好的分析与解决后,也就是确定详细的需求后,再用瀑布模式进行开发与测试。
螺旋模式优点
1)通过建立软件雏型与客户沟通,软件开发过程每个循环的目标明确。
2)螺旋模式包容了现有软件开发过程模式的大部分优点,借由风险分析,大幅降低软件失败造成损失的可能性。
3)每个循环阶段中的软件测试,可确保每个循环的软件质量。4)通过与用户的反馈与沟通,以符合客户需求
螺旋模式缺点
1)过分依赖风险分析经验与技术,如果在风险分析过程中出现偏差,将造成重大损失。
2)过于灵活的开发过程,不利于已签署合约的客户与开发者之间的协调。3)过高的风险管理成本,可能会影响客户的最终收益。
5、RUP(统一开发过程)模式
统一开发过程模式1996年提出,是软件分析与设计的标准。
以水平轴与垂直轴加以区分,说明如下,交又格上的图形面积代表其估计工作量或比率。
(1)水平轴
区分为初始、详述、建构与转移等四个阶段,每阶段内可依需求,分为几个迭代进行。
(2)垂直轴
依工作过程顺序,将软件开发与管理支持区分为:企业建模需求、设计、开发、测试、部署、配置管理与变更管理、项目管理环境等九个核心工作过程
RUP模式优点:
1)以企业建模为系统开发首要工作,让开发者了解其重要性,进而能更精确了解用户的需求。
2)迭代式的软件开发方式,让开发者能够在每次迭代中及早发现问题,降低开发的风险。
3)可视化的软件模型,可提升软件开发人员之间的沟通效率。
4)提供良好的工具支持,软件开发各个阶段中项目成员能明确了解其责任与义务。
RUP模式缺点
1)模式过于繁杂,相对使得企业在学习及导入时都很困难。
2)RUP模式支持工具上,受限于 IBM Rational软件。
6、敏捷模式
敏捷是一种基于敏捷价值观、原则及实践的心态或做事情的思维哲理,敏捷就像一把大伞,符合敏捷价值观与敏捷原则的就是敏捷方法论。方法论通常要搭配一些敏捷过程与实践,才能更发挥敏捷的成效
大伞下的左方是常用敏捷方法论,大伞下的右方是常用敏捷实践。
常用的敏捷方法论有 Scrum、极限编程( eXtreme Programming, XP)、精益(Lean)、看板( Kanban)、动态系统开发方法( Dynamic Systems Development Method, DSDM)、功能驱动开发模式( Feature-driven Development, FDD)水晶家族( Crystal Family)等。
以上所提及的每个开发流程的基本结构和基本原则都有显著优势。但在实际业务使用时,应该评估其开发流程是否符合公司及项目的特征,按照以下问题对比流程:
· 它是否对整个产品开发流程进行管理?
· 它是否专注于跨职能团队的使用?
· 它能加快上市速度吗?
· 它最适用于什么类型的产品和行业?
· 它如何降低产品失败的风险?
· 它是线性的还是迭代的?
对于公司来说,没有最好的流程,只有最适合的流程