软件产品的需求管理浅析

李先生在一家上市软件企业担任需求分析师,该公司在电信信息化已经有多年积累,为了缩短软件的交付周期,降低研发和维护成本,公司从一年前开始逐步从定制化开发向产品化方向转型。李先生负责的产品参加软件产品化运营的第一批试点,经过1年的努力,产品已经在5个现场上线并开始正式运营,年底成本核算,比同类定制化项目效益提升了近40%,李先生还被评为优秀员工。

  随着产品的深入使用,现场反馈的新需求越来越多,而且需求之间的冲突越来越多。以前做定制化开发遇到需求冲突的情况,一般都是和用户协商,由用户方安排一接口人,负责沟通和解决有冲突或者不合理的需求。但现在不同的现场需求之间有冲突,这种办法就行不通了。另外,软件中为了实现不同需求,配置项和逻辑分支越来越多,程序的维护越来越困难,常常一周过去了现场报的问题解决还没有眉目,用户啧有烦言。开发工程师的不满也越积越多,认为需求分析工作不到位,需求频繁变更,导致软件质量下滑。如果再这样下去,软件的问题会越来越多,工作会越来越难做,点上一支烟,李先生陷入沉思。

  一、软件产品需求管理面临的问题分析

  软件产品化运作的企业越来越多,大多企业的需求分析师或项目经理都遇到过和李先生类似的情景。总结一下大概有下面三个问题:

  1、需求来源多样,差异过大难以兼容

  产品化和定制化开发的主要区别之一就是产品化面向的是用户群,而定制化开发面向的是一个或几个同质化的用户。所以产品化比定制化接收需求的多样性要丰富的多。针对同一功能点的需求,需求之间或重叠,或交叉,或互斥。按照用户甲想法实现,可能用户乙会强烈不满。

  2、配置项过多,软件使用过于复杂,用户不满增加

  解决不同需求的一个最简单的办法,就是增加配置项。通过配置项交付有差异的功能给不同的用户。随着产品的维护时间,软件中的配置项越来越多,产品的使用复杂度越来越大。每次产品升级时,一不小心覆盖了本地化配置,就会造成原有功能丢失,软件无法使用等异常情况,严重时还可能被用户投诉。

  3、程序中充斥大量的分支逻辑,越来越难以维护,产品质量越来越差

  研发工程师的人员流动率在诸多行业中,公认比较高。一茬一茬的新陈代谢,再加上很多企业的过程管理不严谨,文档不全,原来为解决不同需求引入的配置和逻辑分支成了新的世纪之谜。为了快速完成任务,避免影响现有功能,工程师们采取另外增加一个分支的方式解决问题和实现需求。

  日积月累,程序中像谜一样的分支越来越多,程序质量开始变的很糟糕。往往解决了一个问题,引发了一系列的bug。开发工程师们越来越没有成就感,对软件的前景越来越没有信心。

  二、多层次需求管理的对策

  在上述的问题仔细分析,可以发现一个产品的需求其实是分层次的,有些需求是某个用户群特有的需求,比如电信领域中中移动和中联通的规范在方向上有非常大的差异;有些需求是某些用户的通用需求,比如网管中心监控人员对于网元的呈现方式;有些需求是用户的个性化或者临时性需求,比如重大活动保障时期的特定需求。如果要解决产品化引致的这一系列需求问题,就不能把视角局限在需求-开发的层面上,而是要在站在业务领域分析,产品定位的高度,合理地把需求落实到不同层次上解决。

图1:需求和需求交付的对照关系

  1、用户群的需求处理策略

  一个规模推广的产品可能会横跨多个用户群,比如在电信BOSS领域的计费软件,移动,联通,电信都有自己的技术规范,中间的规范方向,计费的模式以及算法各不相同。

  如果把这些都放到相同的产品上实现,会造成产品非常臃肿和复杂。

  我们的经验是首先创建产品平台,平台的设计采用微内核的方案,内核包括系统的技术框架,组件的集成引擎和一些公共的工具组件,平台外围功能采用组件化的方案,包括不同的批价算法组件,适配组件,配置组件等。按照用户群的需求以及商务策略把内核和相关组件打包成不同的业务产品,如移动版,电信版和联通版等。

  运营商的规范升级以后,同时也要对产品平台上的相关组件进行升级,并发布新版本的业务产品。所有的业务产品就组成了一个计费的产品族。

  这种策略在一些大型的软件企业里应用非常广泛,比如微软的window产品系列:window Server,window profession,window home,分别覆盖企业用户,商务用户和家庭用户这三个有着明显需求差别的用户群。国内腾讯公司的QQ和TM也是一个成功的案例,用两个不同风格的软件覆盖娱乐人群和商务人群的社交需求。

  2、用户的典型性需求

  所谓典型性需求是此类需求具有普遍性的特征,比如在报表要提供10秒钟自动刷新数据功能。这类需求往往可以引导产品规划方向,因为使用最深入的用户提出的需求最多,而且需求的价值越大。

  对待这一类的需求,一般对应有两种配置方式,一种是粗粒度,一种是细粒度。跟据用户的偏好和使用的环境,在系统安装阶段配置,配置影响的粒度一般是组件级,最小到对象级,比如office安装过程中,引导用户选择需要在本地安装的程序模块,比如word,excel,dbaccess等。另一种是系统中的各种配置项,影响的主要是对象级以及程序的逻辑,比如firefox中的系统配置项,以及window的注册表。

  利用这两级的配置管理,基本上能解决用户需求的差异化,但采用这种办法的前提是已知用户的可能需求并预先做了定义和开发。对于不可预知的需求,就需要通过二次开发接口来解决了。

  3、用户的本地化需求

  用户本地化需求的满足程度,响应时间和用户的满意度关系非常密切,要提升用户满意度就必须关注本地化需求的实现。而软件产品的大规模推广带来的本地化需求的工作量非常大,不仅会影响企业的利润率,而且提高了产品自身维护的风险。所以大型的软件产品都会提供一些本地化需求开发,比较典型的是sap,sibel,把产品实施和本地化开发的工作全部外包出去。

  在产品定义阶段,需要重新评估产品的范围,以及在产品范围内可能的用户本地化需求,对其中非核心的,可以通过外挂接口实现的功能规划出二次开发接口。比如运维平台短信派单模块,安排短信派发的二次接口,产品实施的时候,通过开发相应的短信接口类,适配不同的短信网关,短信协议,然后把该实现类挂接到系统上实现短信工单排饭的功能。

  二次开发接口的优点是增强了系统功能的扩展性以及缩短了需求的响应时长,缺点也是比较明显的,当二次开发接口过多,过于复杂超出了产品管理的能力时,会在产品升级的时候带来很多问题,比如开发程序被覆盖,接口变更导致功能无法使用等。

  三、总结

  相比定制化开发,产品化的模式提高了复用水平,降低了研发和维护成本,但是提高了管理水平的要求,特别是规划,需求以及交付管理。笔者见过很多中小公司,产品化运营以后不经没有提高经营效益,反而因为产品前期投入过大,后期维护成本过高而陷入泥潭。所以产品化运营是否成功的关键在于业务积累和管理水平。前者是规划产品方向,能否取得市场竞争优势的核心;后者是产品化目标的保证,是能否切实降低研发维护成本的关键。采用定制化还是产品化,取决于企业的发展水平以及企业的竞争优势,没有最好,只有最适合。

  对于产品的需求管理,不应该套用定制化的那套解决办法,应该把需求分析放在合适的产品层次上考虑需求的实现方案,如果原有的解决方法需要平面思维,那么在产品化的需求分析需要的是多层次的立体思维模式。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-24 07:39:30

软件产品的需求管理浅析的相关文章

互联网项目管理浅析之需求管理

背景 一眨眼,加入阿里大家庭已经一年多啦.在一年多的工作中,深深感受到互联网项目管理与传统IT项目管理的不同,在此尝试做一下简单的总结和分析. 本文先讲一讲需求管理.为啥要先说需求管理呢,因为在所有影响项目成功与否的因素当中,需求对项目的影响力,至少占50%以上.能够控制管理好需求,项目就成功了一半. 需求不可贪大求全,要懂得取舍 互联网是一个快速变化的世界,我们所面临的用户.环境每天都在改变,这就要求项目团队能够适应这种情况,要能够做到快速迭代.快速上线.快速试错.抢占用户.不同于传统的软件项

需求管理 工具-有哪些好用的软件需求管理工具

问题描述 有哪些好用的软件需求管理工具 请教: 软件需求管理有哪些工具和软件啊?大家都在用什么进行需求管理啊? 解决方案 RationalRequisitePro Rational RequisitePro是一个强大.易用.集成的需求管理产品.而通过与Rational系列软件产品的广泛集成,大大扩展了RequisitePro及其他产品的功能,给软件工程生命周期内的各个阶段都提供了强大.方便的信息查询.跟踪.管理功能.从而能够促进更好的团队沟通.帮助管理变更和评估变更的影响,帮助验证所有的规划需求

透过游戏研发项目特点看项目需求管理

游戏作为一种特殊的软件产品,比普通的软件开发更为复杂,因此,游戏项目的管理较之一般软件项目也更具挑战性.在软件工程中,需求管理是关乎项目生死存亡的首要环节.本文将透过游戏研发管理的视角,重点探讨如何通过有效的需求管理保证项目成功. 游戏研发项目特点 1.项目整体复杂性强 游戏是一种特殊的软件,尤其是大型网游,通常比一般的软件开发规模大.人数多.周期长.复杂程度高.首先,正规的游戏开发会包括策划.美术(含2D和3D).编程和测试等多个团队,如何使这些具备不同工作技能的团队成员协同工作,如何使各个工

面向移动互联网的需求管理与应用架构模式研究

随着3G/4G移动通信技术和云计算.大数据等信息技术的不断发展和成熟,逐渐形成了"移动终端+无线通信网络+平台+应用"的价值承载体系结构,人们也逐渐习惯了借助移动终端完成互联网服务的消费,标志着人类社会已经步入移动互联网时代. 针对移动互联网时代对于服务提供商的要求,电信运营商需要在需求管理和应用开发模式方面进行创新.电信运营商传统的需求管理模式往往是业务部门在市场经营中形成对于业务支撑系统的需求,然后有软件开发商进行需求调研并开发实施.这种需求管理和应用开发模式最大的问题就是开发周期

需求分析和需求管理:管理好产品的需求

文章描述:需求的变动固然是造成这种结果的主要原因,另一个不能忽视的因素则是需求没有表述清楚,开发人员面对表述模糊的需求文档,更加无法完成既定的开发工作. 最近的一系列事情开始教育我,如果不能做好需求管理的工作,产品人员疲于应付不断变化的需求,导致无法正常开展产品的设计和管理工作.结果就是交付给开发人员的需求文档不断变动,开发人员也不知道自己究竟该做什么,项目进度越拖越慢.最后到了规定好的交付时间,因为拿不出需要的产出物,部门之间开始互相推诿.埋怨. 思考良久,需求的变动固然是造成这种结果的主要原

互联网产品设计:产品需求管理之需求收集

 需求收集是进行产品需求管理的第一步.需求收集得到的各种用户需求素材是产品需求的唯一来源.可以说需求收集的质量影响着产品最终的质量. 1.需求收集目的     需求收集的目的在于:通过以市场为导向的客户需求收集,保持公司产品的核心竞争力,最终实现产品创新.具体说来:     1).深刻理解市场需求.用户需求,准确把控行业发展趋势,保持高度的市场敏感度.     2).保证产品研发是围绕客户需求来展开,真正实现产品研发"以市场为导向.以客户为中心",而不是闭门造车.     3).实现产

互联网产品需求管理:产品管理流程

  对于互联网公司而言,产品需求管理是产品研发的核心环节,产品需求的正确与否直接影响产品开发周期.产品开发成本.产品运营成本,甚至直接决定了产品市场竞争力.根据统计:产品开发中40%-60%的问题都是在需求阶段埋下的"祸根" ,在测试阶段及运营阶段发现需求阶段植入的问题,解决的代价是需求阶段发现问题的68-200倍.      关于需求管理的故事很多,列举一些常见问题: 某天老板问起:我很久以前提过一个需求,提过以后就没下文了.产品经理无辜地说:有提过吗,是给我提的吗? 某个销售谈起:

从CMM的角度考虑需求管理计划

纵观CMM各KPA活动的要求,绝大多数的KPA均需要从计划(策划)开始,普遍的步骤要求是从准备工作--计划---执行活动---维护过程---改善过程等这几个大类,如配置管理.质量保证.项目计划.子合同管理等等.CMM的需求管理虽然没有明确要求有一定的计划,但在操作前各项目小组为了保证项目需求过程的顺利进行.保证需求活动有序有节地完成,都会粗或细地拟定一个需求计划,这个计划的定制,会直接影响到整个开发项目的成效.影响到定制需求基线的准确性.我们在了解CMM需求管理KPA要求的活动后,从该角度来考虑

CMM关键过程域剖析——成熟度级别2:需求管理

需求管理是CMM二级中列出的第一个关键域,这是因为它实际上是二级引入到开发过程中的所有管理原则的先决条件.只有在开发的目标被清楚明白地表述和理解的情况下,软件开发才能以一种有计划的有序的方式进行.实际上,没有文档化的需求,在开发工作完成前后都很有可能发生产品与要求的偏离.计划.追踪.配置管理以及软件质量保证这些在二级的其他关键过程域中涉及的原则,都是从一个稳定的基础开始的,那就是文档化的需求基线. 什么需求?谁的需求? CMM已经说得很清楚:本关键过程与中所说的需求是指"分配给软件的系统需求&q