您的位置: 网界网 > 周报全文 > 正文

[周报全文]软件,快跑!

2001年03月12日 00:00:00 | 作者:佚名 | 来源:$page.getBroMedia() | 查看本文手机版

摘要:软件,快跑!

标签
软件,快跑!
本报记者  宋家雨
    说起来令人汗颜,中国软件出口竟然与印度有如此的差距。2000年印度软件的出口额为60亿美元,爱尔兰为90亿美元;而中国只有4亿美元。目前,中国软件与硬件制造业的比例为1:4。而在一些发达国家这一比例为1:1,因此中国软件产业的发展远远不能够满足社会发展的需求。
    联想起美国好莱坞梦工场一部按照传统动画工艺拍摄的黏土动画片——“小鸡快跑”,讲的是一群不甘被凶恶的女主人做成鸡肉饼的小鸡,为自由而战,展开“胜利大逃亡”的故事。其实如今的中国软件产业也到了必须快跑,必须要为荣誉而战的时候。

关键是要知道为什么落后
    那么,中国的软件产业怎样才能够迎头赶上呢?这并不是喊几句口号就能够解决的问题,关键是要知道我们为什么落后?
    我们为什么落后呢?原因当然是多方面的:有软件环境的问题,有知识产权保护的问题,有资金的问题,也有人才的问题,可能还有语言的问题等。但我认为对于软件产品的认识理解与开发管理,也是非常重要的,我们还是要更多地从软件生产的主观方面多找一些差距,从软件企业自身发现问题,炼好内功才是正道。
    难道说,印度软件企业的内功炼得比我们好吗?好在哪里?为什么美国人的定单都落入了印度人之手呢?最近看了一些报道,说软件业的内部流传着类似的观点:印度的软件企业大都经过了CMM(软件成熟度模型)认证,软件开发科学规范,能够充分保证软件的质量,而中国的软件开发大都停留在手工作坊的阶段,不仅不成规模,而且也不够规范,软件开发的随意性太强。
    这里提到一个与软件相关的很时髦的词——CMM认证,真有这么神奇吗?有些人将CMM比喻为进军海外市场的“金钥匙”,“金钥匙”一转动,通往金色宝库的大门打开了。不由使人想到了阿里巴巴的芝麻开门,CMM就是那咒语。

使人想到了ISO9000
    不知道为什么,CMM总是使人想到几年前的ISO9000认证,那种全国企业争相进行ISO9000认证的景象依然历历在目,哪家企业通过了ISO9000(9001、9002、9003、9004、9005)认证,无疑就与竞争对手拉开了差距,ISO9000认证是身份的象征,因此商家在企业的宣传介绍中总忘不了提上几句。几天前,一个大学同学在电话中提到,北京的“扒猪脸”(一道获得专利的名菜)也通过了ISO9001认证。
    据说,有一家企业1994年就通过了ISO 9001认证,但是并没有因为通过了ISO 9001质量认证而提高了产品质量,所谓认证不过是这家软件企业花10万元人民币买来的。这样的产品用户当然不会买账,ISO9000认证更会因此失去其权威。现在,这家号称第一家通过认证的公司再也不提ISO9000这碴了,觉得“没面子”。

谁会砸掉手中的“金饭碗”
    CMM会不会重蹈ISO9000的覆辙呢?知情者说不会,原因是CMM认证是由主任评估师领导下进行的,主任评估师认为达到了几级就是几级(CMM认证分为5级)。目前全球只有313个这样的主任评估师,大部分在美国和欧洲,而中国内地还没有一个主任评估师。这些主任评估师都具有良好的职业道德和精神,不是花钱就能够搞定的。需要说明的是要想拿到主任评估师的资格并不简单,通常需要具有10年以上的软件开发经验,还要花上数万美元在美国的卡内基梅隆大学的软件工程研究所(CMM概念的倡导者,也是标准的制订者)接受培训,非美国人费用加倍,这还不算,还要有具有资格的主任评估师推荐,并要求经过两次以上的CMM评估过程的实习。
    这样辛苦得来的主任评估师资格并不是终身制,每年至少要参加两次CMM评估,否则将失去资格。但是对于主任评估师来说也不是一无所得,其收费非常高,申请企业需要支付主任评估师几乎一切费用,如交通、食宿、薪酬,还要接受主任评估师的培训,支付培训的费用。可以说,主任评估师手捧的是“金饭碗”,有谁会轻易地打破它呢!
    其实,没有人想砸掉主任评估师的“金饭碗”。而形式化、走过场当然也不是ISO9000和CMM的错误,关键问题在于企业希望得到什么,仅仅为了“通行证”,自然会把经文念歪。那么,CMM这本“真经”的价值在什么地方呢?其价值就在于能够降低软件开发的成本,提高软件的质量。

从分“瓶子”说起
    对此,刚刚通过CMM二级认证的联想软件事业部可谓深有体会。该事业部的CMM专家,评估小组成员之一李建奇给我举了一个书上例子说明问题:将一些大小不同的瓶子,自动分类放到相应的箱子中。如何实现这种自动控制呢?
    首先要进行分类,然后为每个分类分配条码,除此之外还要考虑到传送带的速度等因素。综合考虑这些因素之后,就很容易对任务进行量化,然后在这个基础之上按期、保质完成任务。其实按照CMM的方法,一个软件工程项目的实施过程也与此类似,首先要进行需求分析,搞清楚这个项目究竟有多少功能点;然后进入工程设计阶段,根据需求划分模块和接口,各个模块的独立性(如果是面向对象的开发,要将类和结构定义好),这就是一个建立设计文档的过程;第三步就是根据设计文档编写代码,这是一个工作量大,但相对简单的工作。张培是联想软件的软件开发工程师,经常编写软件的代码,按照张培的说法,一个好的设计文档如果交给两个工程师分别编码,两个人编写的代码应该是一样的。由此可见设计文档的重要性。编写好的代码交给测试人员进行测试,测试人员会根据需求分析进行对照测试,看有没有完成需求的各项功能;最后是用户手册的编写。
    总结说来,CMM有需求分析、工程设计、编码、测试和用户手册等阶段,而软件质量保证贯穿在各个阶段之中,每个部分都分别有人分工负责,由项目经理总负责。

质量是怎么提高的?
    那么究竟软件的质量是怎么提高的呢?在采访中,我分别采访了联想软件3位项目经理——龚永生、和立波和张磊,他们分别主持过联想幸福Linux、幸福之家和移动办公软件的开发,是联想软件开发的中坚力量。
    “其实,在联想通过CMM认证之前,联想传统软件的开发一直也是采用工程化的方法,也分为结构分析、设计和编码,也是按照工程化的思路在运作”,龚永生如是说。显然CMM的贡献并不在于将软件分为了多少个阶段。那CMM的价值又在哪里呢?龚永生认为,传统的作法是针对项目进行的,多少带有项目经理的主观意志,比如,传统开发对于软件质量的控制手段主要就是测试,认为更多的测试就能够达到目的,因此以往软件测试和软件质量保证(SQA)是在一起。而CMM就不是这样,CMM强调的是对软件开发过程的控制。
    CMM也将软件开发分为几个阶段,各个阶段都有相应的人员负责。软件开发是有阶段性的,但并不是说人员分工也是“铁路警察”——各管一段,各个阶段互不参与的。相反,每一个阶段都是经过项目组成员认真的讨论和分析,按照CMM要求形成各种文档,例如需求文档、设计文档等,这些文档由专人保存在数据库中。这些数据库有基线库、开发库和产品库。负责基线库的女孩叫于洁,她告诉我,在软件开发过程中,严格有效的配置管理工作是十分重要的,从版本管理,变更控制,状态记录和报告到审计工作,这些大量的细致的工作保证了软件开发项目的顺利进行,由于开发过程中的工作产品都要处于配置管理之下,从而保证了软件产品的质量,提高了可靠性。
    所以CMM的各个阶段,并不是要强调如何管理人员,软件工程师必须要如何如何做才行。其作用并不在于管理,而是保持各个阶段协调。CMM是为各个阶段的软件工程师提供了帮助,大家遵守规则、规范,最终受益正是软件开发人员自身。而整个软件开发的质量也得到了控制。对此,项目经理和立波的看法是:软件已经不是个人化的软件产品,以Windows 2000为例,微软几千个程序员用了3年的时间进行开发,单纯依靠个人的能力,无论如何是完成不了的。因此,必须依赖群体的力量。基于这样的认识,软件工程师有这样的愿望,而CMM提供了科学的方法,自然会得到支持。
    让全体软件工程师掌握CMM的方法就变得至关重要。项目经理张磊告诉我,联想在培训方面投入了很多资金,很多情况,项目经理要起到培训讲师的作用。那么,联想花了大价钱培训出来的人员,会不会成为他人的嫁衣呢?张磊说,当然不会。因为CMM不是什么尖端技术,而是一种方法,一种和他人协调配合的方法。只有遵守这种规范,才能够在这个集体生存下来。王海清作为程序员也谈了自己的感受,写各种文档确实增加了工作量,但这是必须的,而通过写文档也使自己学会了积累。前面提到过的张培(+微信关注网络世界),用“只会写代码的程序员,不是好的程序员”对此进行了生动描述。

SEPG不是宪兵
    前面提到过审计小组,说到了有一个重要的成员SEPG(软件工程过程小组),邓世专是联想SEPG小组的组长。邓世专说自己不是宪兵,并不掌握着生杀大权,并不是软件开发必须通过SEPG点头才行。
    SEPG的任务是对于CMM进行研究,因此,SEPG可以说是CMM知识方面的权威。他们要把这种研究和项目经理讨论,制订出规范、规程。通过与项目组的反复,作到科学有效。SEPG要提供培训和咨询服务。向项目人员解答各种疑问。与此同时,要对项目进行检查,形成各种工作报告,改进工作的进程。
    SEPG不是宪兵,是警察。这个警察的工作不是罚款,而是研究制定交通法规,宣讲交通法规。

说说联想软件掌门人韩振江
    老韩是一定要说上一说的。老韩就是联想软件事业部的总经理韩振江,老韩本身就是软件工程化专业的博士。1996年,老韩开始负责联想软件。
    老韩是科班出身,自然非常重视软件的工程化工作,自然知道一把手参与的重要行。在老韩看来,一把手一定要了解细节,以充分保证流程的合理性。为此,还学习过微软的研发模式,亲自考察团队的工作方式。老韩也注意过ISO9000质量管理体系,探索其对软件研发规律是否有帮助,最终老韩没有采纳ISO9000,因为它更适合生产线上的硬件制造,而软件开发是复杂的劳动,不可能控制几个点就万事大吉。
    那时,还没有接触到CMM,于是老韩着手建立自己的研发管理流程,从1.0到6.0平均每半年改进一次,可以说从5.0开始就有CMM的影子。1999年初,CMM开始在国内露出苗头,老韩开始组织力量,投入大量经费(据老韩说有30万)学习研究CMM,最终把CMM的方法引入了进来。为此,老韩有个比喻:联想以前在很多环节有规范,但缺乏一条线把它们串起来,而CMM就是这条线。
    如此看来,联想通过CMM认证是水到渠成的事情,老韩也同意这种说法。如果软件企业没有一定的基础,仓促上马CMM其难度是很大的。由于国务院在2000年颁布的18号文件中,对于软件和集成电路给予了各种优惠政策,信息产业部、外经贸部、国家税务总局都在积极落实有关政策,如此就在国内软件企业中,掀起了CMM认证的热潮。老韩对于软件企业仓促上马CMM表示了担心,企业还是要结合自身的情况,制定出适合自己的流程。CMM只是方法论,任何一个软件公司如果没有几年的积累,很难在短时间提高并达到CMM二级的水平。
    此外,CMM在一定时间加大投入,以年为单位肯定影响当年收益,但这是苦练内功,逐步积累的过程,是为将来的进步打下基础。但也要充分意识到其风险,一步登天,是很危险的。

不仅是为了国外定单
    CMM的方法使得软件的开发质量得到保证,也降低了研发成本。印度的软件企业一开始发展就严格按国际标准运作,印度软件企业的主要经营方式是为国外用户提供软件编程及咨询服务。为使这种对外服务能够顺利进行,印度软件公司纷纷在美国设立分公司,其主要工作是承接订单,了解客户需要,确定产品规格和工作进度等。然后由印度国内的软件公司进行软件生产、测试,以及进行项目管理和相关服务,在这个过程中发展壮大自己。
    那么中国软件是否要效法印度的作法呢?为此,我曾经问过老韩,是否也要在美国设立联想软件分公司承接美国定单。老韩否定了这种作法,至少目前的条件还不具备。联想也不是为此才引入CMM认证的。目前,国内软件企业尚不具备分析国外企业需求的能力,原因很复杂,有文化的因素,也有语言的障碍等。
    中国有自己的情况,我们有着巨大的市场需求,这就意味着国内市场大有机会。在我们立志国际市场的同时,千万不要忽视了国内,而CMM为我们提供了苦练内功的方法。■ 
[责任编辑:程永来 cheng_yonglai@cnw.com.cn]