Roger S. Pressman在《软件工程-实践者之路》第6版的最后增加了一章,叫未来之路-The Road Ahead。从变更、软件过程、人员、软件工程、技术和信息模型几个方面给出了他自己的见解,较为系统地阐述了软件工程的发展和期待解决的问题。但是这只是理论上对软件工程领域的思考和学术的探讨。至于具体在软件企业中的应用和思考的问题可能就不止这些了。
去年10月份我写过一篇文章CMM欺骗了中国软件业引来了无数的讨论,批评者有之,赞扬者有之,但是其实我也只是提出了一个问题,并没有给出解决的方案。甚至有业内的朋友打电话给我,跟我探讨这个问题。在经历过了一年的思考和接触到很多人的意见和建议中,尤其跟一些软件企业的治理人员交流中,获得了很好的见解和信息。虽然还是没有准确的答案,但是还是有一些想法,写在这儿与大家分享,而且这也是受Pressman写的未来之路的想法的影响。
首先不管是CMMI的问题,还是治理、技术以及人员的问题,但是在国内软件企业中突出的问题就是软件开发的效率低下,尽管软件工程师的待遇与前几年比有明显的下降,但是开发成本确实越来越高。客户满足度也不尽人意。这也是几年前CMM、CMMI风行国内时大家都奢望的目标和期待。期望值越高,也就越失望。
其次从根本上解决软件企业的问题,绝对不是单点的问题,不是实施CMMI过了那个级别就表示了你的成功。因此必须要从系统的角度去看待这个问题。实际从Pressman的未来之路中可以看到,他从几个方面给出了思考的方向。
第三,除了我们要从专业的角度去系统地思考外,我们也许要跳出企业内部来看问题的原因。其中一点也是从国内一家软件企业的老总那儿学习到的。他的意见是国内的软件企业之所以没有突破的问题的根源在于软件人员的流动率太高。国内越来越明显地表现出这样的现象,那就是小的软件企业是大的软件企业的培训机构,大的软件企业是国外软件企业的培训机构。能在一家企业待满三年以上的员工几乎很少。一般的软件企业的员工流失率都在25%-30%之间,这就意味着三、四年,整个企业就换了一次血。大家都知道软件企业的真正的财富就是人员,无论过程还是产品,都离不开人员的载体和不断的创造。从这个角度看,确实是最大的原因。但是这个问题却也是解决不了的问题。
第四,工程成熟度低。一个成熟的软件企业应该具有以下几个方面的成熟的能力,技术、工程、过程和治理。技术的能力在国内的软件人员中基本不是问题,很少有那个项目和企业是因为技术问题失败的,而且国内大部分的市场还都是面向应用和治理的软件市场,对于核心技术的要求也没有那么高。过程和治理,在经历过将近10年的项目治理和CMM的热浪之后,大家对其重要性的意识提高的也很快。但是对与软件的工程化来说却是一块短板,需求工程、设计工程。一些企业软件开发更是治理过程与技术脱节,变为了各说各事的两张皮。工程化是介于技术和过程治理之间的桥梁。过程和治理是解决了技术的协作问题,并没有很好地解决批量化生产和复用性的问题。工程化应该是需要一些方法论的支持,项目经验的总结和抽象、提升就会提出方法论来解决并屏蔽技术和项目的差异性问题。个人认为,CMM、CMMI以及项目治理会很好地解决过程的问题,好的过程和治理也可以屏蔽一些工程和技术的风险,但是不能指望过程解决全部的问题。
对这个问题自己也想了很久,虽然有以上的一些想法,但是自己感到仅仅是零散的想法,没有系统化和完整的解决方案。先写出来,与大家交流讨论,共同促进。