摘自PM圈子网—PM牛人聚集地
企业业务软件工程项目和商业软件产品项目无论是需求重点、实现方式、项目管理等方面都有极大不同。现在的有关研究并没有关注此区别,实际上,其中绝大部分还集中在较简单的产品项目上。对于需求变动要大得多的企业软件项目来说,对需求进行分级管理是非常必要的,也是生死悠关的。
企业化软件项目和商业软件的(承包开发)最大的区别就在于项目需求的重点不一样,以致于这两种同样称为软件工程,就其项目过程管理是几乎完全不一样的。商业软件的开发最大的特点是基本功能非常明确,只在细节上有多种选择,所以其管理重在源代码管理和算法的优化,以及测试严格,就测试要求的强度上单纯软件代码的质量来说,要强于企业信息化的软件工程项目。
企业信息工程项目一般来源于企业某一特定的业务软件需求,象一个仓库管理系统,从进货到定期定标出仓平衡责任追踪等;或者是一个生产流程配料系统,如MRP2;或者是一个购销一体计划系统,象ERP(资源管理),等等。这种软件有时侯会象国产的那些变相的会计软件式的ERP一样当成商业软件开发,显然,这时侯与上述的商业软件没有太大的区别,但实际差别在应用需求上。企业业务软件是一种必须适应同时能够优化企业流程的计算机辅助运营系统,真正起作用的,通常只能是一对一实现定制;这种需求是如此广泛,以致于大型企业如果不是聘有一两家软件咨询顾问公司就是自建一个计算机部门专门负责这一方面的工作;最典型的例子就是沃尔玛特。
正由于企业用的软件都存在着强烈的一对一定制的需求,所以这种项目不便宜。
为了应付企业业务软件项目强烈的定制需求,供应商都提供了广泛的基础组件和嵌套工具,以便可以由二三级的程度员在现场为用户一对一的进行定制、试用、更改、再定制等项目实现。典型如SAP,有的只是基础组件库,涉及到27个项目常用业务场合的组件库,包括与之配合的数据库预制定义(表定义)。一个SAP项目要求用户按自已需求定购这些组件库,以及必须的支持软硬件,数据库操作系统什么的,最经常的就是ORACLE和SOLARIS了;然后SAP项目组要到企业里蹲点,听各个部门讲流程故事;然后是写需求文档,建原型,让企业的项目组试用部门流程,基本流程确定合乎需求了,再找几个三流的程序员用ABAP/4脚本语言把各个组件的功能连成一个统一的流程。这个工作就完成一大半了。
由此可见,企业软件项目的关键在于需求管理和流程建模,相反,算法和基本功能以及BUG什么的,那是作为商业软件开发的组件保证的,一般以外包形式由印度这些公司早早做了出来。企业软件需求最大的困难就是用户根本不知道自已要干什么,最常犯的错误就是把现有的落后流程要求电脑重复一遍,拿了机关枪,总是要求上面没有装刺刀,还抱怨不比红缨枪好用。另一个常见的错误就是随着企业项目主管,知识开始丰富后,总是把有用没有用,暂时有用或永远没有用的需求要项目组一一实现。作为承包方的人员是没有办法与之争业务上有没有用的,但如果真的跟着他的点子走,这个项目是永远没法完成的。而在商业需求明确的商业软件开发中就不会碰上这种事情。
这时侯需要对客户的需求进行分级管理,简单地说,把需求分成五级:urgent(必须立刻优先实现),necessary(必须实现,但不一定马上进行),needed(需要的,不过没有也还凑合),better(现在似乎也可以,但可以更好一点),useful(总会有用的)。一个需求等级的确认需要两个过程,首先是从正面论证它是不是必须的,是不是好得多;然后从反而论证,不要他是不是可以回避的,天会不会塌下来?这样,一个软件需求就可以定一个级别。毫无疑问,如果一个项目各项需求验证下来只是useful的,不但赚不了多少钱,而且,这个项目未必有必要存在;但如果都是urgent的话,如果不是大幅度加价的话,就叫神仙来做好了。显然,无论客户是如何的行业专家,他的需求只能是平均地分配在这五个级别,否则就说明他不是专家,在实现时,当然就挑urgen和necessary来实现,其余的,升级再说了。这样一个项目就有可能最终完成了。