您好, 访客   登录/注册

软件研发项目的效能提升

来源:用户上传      作者:龚永峰

  【摘 要】随着软件行业的飞速发展,很多企业为了缩短软件研发交付周期,降低研发成本,越来越重视研发效能。但是从实际情况看,很多企业还停留在时间换进度的层面,也许短时间内能够提效,但是从长远来看,这种提效很难持续。软件研发是一个创造性过程,不是机械的、重复性的传统生产线操作。论文结合实际研发管理过程,从研发的流程特点、研发人员能力、研发工具等方面提出软件研发提效的意义和方法,给大家以借鉴和参考。
  【Abstract】With the rapid development of software industry, many enterprises have paid more and more attention to research and development efficiency, so as to shorten the period of software research and development delivery and reduce research and development cost. However, from the actual situation, many enterprises still stay at the level of time to schedule, may be able to improve the efficiency in a short time, but in the long run, this kind of improvement is difficult to sustain. Software research and development is a creative process, not mechanical, repetitive, and traditional line operation. Combined with the actual research and development management process, this paper proposes the significance and methods of software research and development efficiency improvement from the aspects of research and development process characteristics, research and development personnel ability, research and development tools, etc., for reference.
  【关键词】软件研发;提效;精益;项目管理
  【Keywords】software development; efficiency improvement; lean; project management
  【中图分类号】TP31                                         【文献标志码】A                                【文章编号】1673-1069(2019)09-0080-02
  1 引言
  很多软件企业随着业务发展,出现了诸多研发问题,如产品交付延期,研发加班,产品故障率高,测试压力大,客户满意度低。这些问题更多是提升研发效能不得当所致。软件研发是一个复杂的系统工程,效能提高也就需要系统化端到端地思考,需要从多方面入手。研发流程优化,做好每个环节,做好环节与环节的衔接,助力提效。在敏捷和精益的推动下,很多软件研发项目只是望文生义,只学到了“速度”,提出了快速迭代,快速交付,忽略了做好每个环节才是提效的根本。
  2 需求管理的提效
  首先研发的源头:需求管理的提效。需求的准确性是至关重要的,或者说需求的主要部分必须是正确的。不能因为任务紧急、抢占市场需要,稀里糊涂地启动研发,将来再不断去废弃已经完成的工作。这种情况从研发项目的过程数据看是高效的,因为工作时间很长,代码行数、测试用例足够多。但是从最终目标,项目价值来看,做得都是无用功,这样效能也就无从谈起了。不仅仅是需求,正确做好软件研发的每个环节的事情,就是一种提效。
  3 环节信息准确传递
  环节信息的准确传递,减少上下游沟通,减少信息传递的流失,会是明显的提效。信息传递的环节越多丢失的也就越多。一个项目的研发往往会经过需求调研,需求分析、设计、编码、测试、交付等众多环节。降低这么多环节的信息丢失方法有两种:一种是减少环节,通过人员复用的方式隐形减少环节,如需求调研和需求分析同一批人做,减少这两个环节的需求传递。其他环节也可以采用类似手段和方法。另一种方式是下游环节提前介入上游环节的活动,如需求分析阶段,系统架构师、编码工程师、测试工程师、交付工程师一起和需求分析师做需求分析,避免串行需求传递,同时也可以提前发现问题,减少返工,提升每个环节的输出质量,就是一种有效的提效[1]。
  4 提升人员能力是提效的基础
  在软件研发项目中,人員的能力的重要性基本都是得到大家认可的,但是很多时候只是部分岗位的人员被要求优秀的人员担当,如设计岗位的系统架构师是公认的重要岗位,而普通的编码人员、测试人员却被忽视。   其实在整个研发流程中,每个岗位的人员都很重要,不一定都需要最优秀的,但是一定是最合适的人员,人员的基本素质不能降低。另外,每个岗位的人才不能局限于专业能力,更应该重视综合能力。如编码工程师,如果能够有一定的系统架构能力,在设计阶段就能发现方案是否具备落地的可行性,提升设计方案的质量。如果测试人员有需求分析的能力,在需求评审阶段就能更好地完善需求。
  人员的综合能力高,在必要时也可以弥补短时间部分岗位人员少量紧缺的情况,更好地提高人員利用率[2]。当然这只是一种有效的补充,而不是真正的替代,如果走极端方式,所有岗位的人员都要求全能,最终全部混用,这不但不能有效提高效能,只会让研发过程混乱,产品质量不可控,毕竟专业的人应该做专业的事情。所有全能型人才一定是精于某个方面,如果长时间、大比例使用非专业人员做专业的事情,非但不能提高人员利用率、效率,反而会让产品质量更低,交付更艰难。而且员工的专业技能长期得不到重用,也会导致人员流失。
  根据多个大型项目的使用经验来看,具备岗位基本技能的人员混用比例应该控制在10%~30%,时间在1~3个月为宜,能够很好地解决岗位和技能之间的短时间缺口,岗位的新鲜感也会让员工的工作热情和积极性更高。
  5 软件研发工具是有效的提效手段
  很多企业为了节约成本,软件研发的管理还停留在“Excel+邮件”的方式上,项目过程中遇到问题,只能花费大量的时间在邮件中检索,几个项目做完了,庞大的项目数据散落在各处,回溯总结项目只流于形式。没有客观的数据来纵向总结项目,也没办法横向对比多个项目。有效的项目管理工具会成为项目提效的好帮手。首先,需求管理工具,如Jira,可以将组织和软件产品各个模块管理起来,可以将需求、功能点、任务,测试用例、故障相关联,将需求、设计、开发、测试等各个环节打通,可以让整个研发流程更加顺畅。其次,自动化测试工具的使用是研发提效的一个利刃。自动化测试不仅可以降低人工测试的随意性,也不会受限于测试人员能力的差异,更重要的是可以在一个研发周期内对每个迭代版本做重复的回归测试,保证已经开发完成的功能不会在后继版本中被破坏[3]。最后,持续构建平台是软件研发流程中一个非常重要的工具,可以轻松实现多模块,多团队研发的协作,解决手工集成、测试、部署的重复性劳动。可以更早地发现问题,降低解决问题的成本,减少手工错误的概率,提高完整产品构建的频率。
  我们在很多项目中使用了持续构建平台,加入了静态代码的检查,脚本的编译执行、代码编译、单元测试、系统部署、自动化用例执行。采用有变更即运行,1小时解决问题的原则,真正能做到随时发布版本的原则,大大加快了产品迭代速度,解决问题的速度,提供版本质量和客户满意度。
  6 结语
  上述的这些方法、工具是比较通用的软件研发提效的方法和手段,如果结合各种不同项目的特点,针对具体研发场景,还可以挖掘出更贴合项目的提效手段,如技术手段的提效,针对一个大型项目做分中心、微服务化,前后端分离,降低项目代码管理的复杂度,降低系统的整体耦合度,提高研发的并行度等。愿意在研发过程中多观察,多思考,发现障碍点,积极尝试,研发效能也会不断提高。
  软件研发提效是一个永恒的话题,每一个研发项目都希望能够提高效能,为组织创造出更高的价值,各个研发项目也都会有一些独特之处,提效的方法也会有所不同。根据项目经验来看,都可以归结为人、工具、流程这三方面,只要能够有效利用好这三方面,做好彼此的平衡,能够很好地提高软件研发的效能。如果顾此失彼,只是追求某个点,某一方面,而忽略之间的联系和配合,最终的效果也将会大打折扣。
  【参考文献】
  【1】李作学,王永东.研发管理流程与节点精益设计[M].北京:人民邮电出版社,2016.
  【2】[美]Mike Cohn著,金明译.敏捷软件开发实践 估算与计划[M].北京:清华大学出版社,2016.
  【3】王京生.华为之研发模式[M].深圳:海天出版社,2018.
转载注明来源:https://www.xzbu.com/4/view-15050073.htm