“我给学生上课说的第一句话是:你们挑选了一个最好的行业――只有这个行业里你不用看老板脸色,而是你给老板脸色看。”复旦大学博士生导师赵文耘以此开头,与记者聊起了构件技术的话题。
在赵看来,编码装在人的脑袋里,即便明知你在“拿把”或偷懒,老板也不能用斧头劈开你的脑袋把程序拿出来,这是软件老板的一怕;另一怕是项目开发到一半,听你说“我要走人了”。所以这个行业经常是老板低声下气哄着员工。尽管这样,项目开发到一半被要挟加工资,或因某个骨干被挖走而导致整个项目流产的事还是经常发生。“这个产业发展不起来,这是关键”,赵说。
赵的另一个身份是复旦天翼公司总经理,打理着一家五十多人的软件企业。显然,他对看员工脸色过日子的事早有体验。
不过,此一时彼一时:“今年 7 月我在国外, 8 月在北京,两个月不在公司,一个找我的电话也没有,公司运转得很好,也不再害怕谁跳槽,这是管理的最高境界”,赵有些得意。原因是他的公司采用了“面向构件”的开发模式。
复用——从泥沙级到砖头级
“面向构件”是怎么一回事?专家给出的说法各异,但大体意思一致:所谓构件,无非是组成软件系统的模块,且这些模块有相对独立的功能,可在不同的系统中“复用”。有了这些构件,软件开发就可以用“组装”模式来提高开发效率。
这有点像集成电路设计中的 IP 模块( Intellect Property ),即把一组拥有知识产权的电路设计集合在一起,构成芯片的基本单位,以供设计时搭积木之用。集成电路发展到超大规模阶段后,芯片中凝聚的知识已经高度浓缩,以奔腾微处理器为例,其所承载的晶体管已多达 960 万个,如果芯片设计依旧基于单个的晶体管而不是基于 IP 核的物理级设计,那永远也不会有奔腾处理器问世。
“从 1968 年 NATO 软件工程会议 Mcllroy 提交的论文《大量生产的软件构件》中提出‘软件组装生产线'的思想开始,采用构件实现软件复用,采用搭积木方式生产软件就成为软件人员长期的梦想”(引自互联网实验室——编者注)。但早期的构件局限于“类”的复用(代码复用),有人称之为“泥沙级复用”。盖房子从担水挖沙和泥开始,效率当然很差。面向对象技术出现后,软件复用上升到应用层,但依然存在“结构混乱”问题,不能从根本上解决软件工程的危机。一直到互联网时代的“面向构件”技术,才实现了“对一组类的组合进行封装”,并隐藏了具体的实现过程,只提供接口服务,使构件实现了代码级、对象级、架构级和系统级多个层次的复用,有人称之为“砖头级复用”。
有了“砖头级复用”的构件技术,软件开发终于柳暗花明,“能够像硬件一样任人装配了”,系统管理和维护的难度也呈“数量级地降低”。此前还有构件与中间件之分,现在随着构件技术的升级,有人把中间件也纳入了构件范围。
目前主流的构件技术标准有:微软的 COM/COM+ 、 SUN 的 JavaBean/EJB 、 OMG 的 CORBA 等,这些标准为应用软件的工业化开发提供了平台,结束了开发语言混乱局面,打通了软件复用在通信、互操作等环境异构问题上的瓶颈。
由于具有“独立性、功能性和互换性”的构件不再依存于系统,软件工程对单体开发者的依赖性随之减弱,企业管理也变得轻松起来。这便是赵文耘感到软件企业老板不再难当的原因之一。在赵文耘看来,汽车制造最大的一次革命是“分离”,构件化也是一种分离,它意味着软件产业的革命来临了。
从 86.4 人月到 16.5 人月
在花园式的浦东张江高科技园,宝信软件公司研发部张克强用 PPT 演示构件化开发。
大屏幕上出现了一个车辆川流不息的隧道,这就是一年前竣工的上海大连路跨江隧道。中央控制系统是宝信做的,“这种系统开发难度大,质量要求严,因为隧道车流量非常大,出一点问题浦东的交通就会陷入瘫痪。系统从立项到开通 9 个月,除去硬件选型等环节,实际留给软件开发的时间只有 5 个月。”张点动鼠标,屏幕上出现了一个系统框架,很多五颜六色的小模块咚咚咚地往里面蹦,就像魔术表演,大构件套小构件,眨眼功夫一个系统就搭好了。“ 81% 的代码是复用的,只用了 16.5 人月。若用传统方法,得 86.4 人月。我们采用第三方厂商提供的构件平台去参加投标,从拿到需求到搭起一个可以跑起来的应用模型只用了两三天。那些没有构件手段的企业只能拿一摞枯燥的文字投标,用户当然不会喜欢”,张克强说。
唐庆林是家大型物流公司的一把手,对 IT 算是外行,却对构件的好处了如指掌,这是他“拿时间和痛苦换的”。唐在电话中告诉记者,他的公司上马“南海国际物流协同工作平台港口社区系统”,前后竟换了三波软件商,历时两年半,耗资上千万元。“第一波开发商实力强大,但开发的系统中看不中用,最致命的是可扩展性不好,而我们这个物流平台涉及海关、商检、码头、货主、船舶公司等方方面面,系统不灵活是无法用的,只好忍痛割爱;第二波厂商的系统框架不合理;第三波厂商规模名气都不大,却很熟悉物流业务,特别是采用了构件组装模式,‘一块一块地镶嵌起来',不但开发速度大大加快,维护和修改也很方便,一个普通大学生培训两个月就能熟练管理这套系统,骨干跳了槽也不会受到影响。”
据《 Software Reuse 》分析,采用构件技术开发软件,产品投放时间可缩短为原来的 1/2 到 1/5 ;产品缺陷密度可降低为原来的 1/5 到 1/10 ;维护成本可降低为原来的 1/5 到 1/10 ;整体开发成本可降低 15% ,长期项目可降低 75% 。
令人期待的“小狗经济”
“温州盛行‘小狗经济'――就是一群人做好一件事。譬如生产摩托车,做轮胎的做轮胎,做发动机的做发动机,大家各做一块,合起来就是最好的。小狗咬不死大象,但是一群小狗冲上去,你咬腿,我咬头,大象就被咬死了。”
复旦金仕达公司陈晓跃说这话时心情挺复杂的,作为一家软件企业的技术总监,这些年他最头痛的事是向外发包时无合作伙伴可觅。原因一是现有的开发模式无法对系统进行结构性拆分,二是产业链还没形成。无奈之下他只好拿一个子系统出来找高校做,一个老师带几个学生,把一个软件从头做到尾,“最后做成了一块短板子”。
构件让陈晓跃看到了软件产业实现“小狗经济”的希望,焦急的只是不知道哪一天才会变成现实。金仕达总裁助理石兴梅则信心十足:“用这种方法做软件,必须划分好哪些地方该用通用模块,哪些地方该用核心模块,全力做好核心,把通用的包出去,以寻求更低的成本。只要用到第三方的东西就会带来专业分工,专业分工又带来了专业积累――每个人只做擅长的那一块,产业链就会形成。”
“另一个好处是把知识和经验用构件积累下来”,万达信息公司首席技术官李光亚说,“以往软件开发有点像黑瞎子掰玉米,掰一个丢一个”。当然,在理念上,传统开发模式也不是不讲“积累”和“复用”,但那与构件的复用不是一回事。前者是给客户开发一个软件,下次遇到相似的项目就在原来的代码上修修补补。这种“懒汉式复用”的结果不是系统越来越成熟,而是越来越不好用,“补丁加补丁,最后面目全非”。
中国软件行业协会副理事长、上海软件行业协会秘书长朱三元总结说:面向构件技术所要求的复用是一种主动式复用――为了复用而设计,为了复用而开发,并要配以有效的管理,以方便查找和使用。其特点是“分解再组装”,譬如它把一个应用系统分解为基础构件、通用构件和应用构件,每一种构件都是从共性出发抽象出来的成熟的东西。“有了标准构件,混沌的软件世界就变得清晰了”。
李光亚解释说:“譬如我们开发上海的医保系统,传统方法是用户提需求,我来实现这个需求。基于构件的开发则不能只考虑实现上海这个需求,还要考虑整个医保领域的需求,把共性的东西提炼出来做成构件备以后之用。这会促使企业清晰定位,扎根某个领域深耕细作,使自己成为领域专家。”“没有重叠就没有沉淀,宝钢十多年的业务经验,被我们用一个个构件封装起来了,今后再开发一个 30 亿元规模的钢铁厂的信息系统,只需 27 人月就能交钥匙,传统方法得 200 人月以上。”张克强说。
“普元的构件开发平台是试图解决中国软件市场的一个普遍问题――客户的需求总在变动。虽然变化是永恒的,但比较而言,国内用户比国外的变动更频繁一些。因为中国用户还不知道怎样管理一个企业。譬如美国人今天穿套阿巴尼西服,明天换一套更好的西服是为了参加一个更高场合的活动。而中国人是今天有了钱就理个发,明天刮个胡子,后天再买件衬衫打个领带――需求变化不在一个层次上。这中间还有很长的学习之路要走,中国企业信息化因此而风险更大,这也是导致软件产业不挣钱的一个原因。用上了构件,这个问题就迎刃而解,因为用构件搭建系统非常灵活,修改也方便。”普元公司 CEO 刘亚东说。
曾为亚信创始人之一的刘亚东算得上中国 IT 的符号式人物了,他的创业选择对我们揣摸 IT 的风向不无参考价值。在北京友谊宾馆的咖啡厅里,刘亚东向记者描述着他的“构件之赌”。刘离开亚信那阵子正赶上 IT 寒冬,便投资了两个玉米加工厂,“那时我对投资 IT 没有兴趣,什么破烂公司都进来。玉米厂我是按 4 倍的市盈率投资的,就是人家赚了钱按 4 倍还你。但这对我只不过像买了一支股票参加分红而已,我的兴趣还是在 IT ,我在寻找真正的机会。 2001 年机会来了,这就是构件。条件有两个,第一是 WTO ――洋人来了,中国企业都是小米加步枪,你死活也得弄挺机枪使使啊;第二是互联网技术的成熟, XML 、 Java 、 J2EE 成为标准技术。有了这两条,我才敢赌构件。否则,做出来的构件平台都不知该卖给谁。”
企业转轨遭遇拐点
构件化虽好,却有一道道坎横在跃跃欲试的企业面前。
技术 / 方法之坎——需掌握 CBSE (领域工程技术)方法,以及构件库、构件组装与架构等技术。
工具 / 平台之坎——实现流水线式的构件组装,需要构件建模、制作、配置管理、项目管理等一系列工具。
标准 / 规范之坎——统一的标准规范是大范围分工与协作的基础,涉及构件运行平台标准、描述规范、库互操作标准、开发过程规范、质量及其度量标准等。
管理 / 人才之坎——构件开发本质上是一种资源配置管理,要对管理流程再造,涉及人员岗位的调整和利益的再分配,需要增加构件管理和架构师的角色,尤其要有能看清行业发展方向的领域专家,做软件项目与构件开发的人员要分开,好比一帮人专门做零件,一帮人专门做组装,角色分离,才能体现大生产。
“这几年上海构件化研讨会开了不下十几次,研讨焦点都是前期资金投入问题。”上海软件技术开发中心副主任葛孝堃说。需要花钱的地方很多,技术和设备的投入只是一方面,管理方式的改变更意味着隐性成本的增加。算下来,“用构件做第一个项目,成本是老方法的好几倍。”
据介绍,上海有家做医院信息系统的企业,做了几百家医院,市场占有率无人能出其右。现在面临着系统维护与资源管理的难题,准备向构件转型,但是一核计,转型至少得二三百万元“起步费”,企业老总称“遇到了一个向下的拐点”。
还有企业文化这道无形的坎。“大家太习惯自己动手去写一些基础软件,认为‘找一个还不如写一个',而大生产观念是‘与其加工一个还不如到仓库提一个'”,刘亚东说。面向构件的开发,实际是教给你一套管理、复用知识的方法。“要约束好你的工程师,不要随意发挥,必须用标准构件去搭建系统。”如果发现某个构件有问题,应该去找构件工程师提出修改申请,你的任务就是“装配”。现在很多开发工程师都是可以到处“救火”的高手,属于艺术型的,你让他改什么都行,可就是不能积累,不能复用,开发成本越来越高。
政府扶持遭遇难题
本报确立构件报道选题缘于政府的邀请。说来也巧,北京与上海市科委的相关部门不约而同地想到了邀请记者宣传构件库。显然,他们遇到了推广的难题。
斥资 8000 万元创建的“国家 863 软件专业孵化器――北京软件产业基地公共技术支撑体系”位于上地中关村软件园,环境设施都是大手笔,据称是国内“规模最大、资源最丰富、服务面最广”的软件产业公共服务平台, 2002 年开始对外服务,资源利用率达 80% ,其中的构件库已发布 3043 个构件。总工程师谢腾翔告诉记者,政府组建这个库是为了减少中小企业的重复开发。但企业对构件有一个认知过程,很多人对“你的构件是不是对我有用”还持怀疑态度。为此,他们提供了免费一条龙服务,包括建立几个应用示范点,指导使用和质量把关,并发展了 4 家应用示范单位。“总之,只要你用这里的构件,我们就全程免费服务。做的事情很多还是公益性的,这当然是暂时的,随着企业对构件认知度的提高,这个公共服务平台的市场化成份会逐渐加大。”
曾有人质疑:具有政府背景的公共技术支撑体系会不会发展成一个官僚机构?他们不知道,这个体系从成立伊始就开始了企业化运营的探索,目标是“办成一个事业单位性质企业化管理的第三方服务机构”,这与把它简单地交给一个完全以赢利为目标的企业来实施是不同的,北京市科委信息技术处姜广智处长这样说。
“构件库的创意是北京提出来的,上海得到了北京的启发。上海构件库是 2002 年市科委重大项目和‘十五'国家 863 计划项目。最早是想做成一个构件大卖场,政府搭一个交易平台,提供‘零配件'让企业来用。现在回过头来看,‘大卖场'的条件还不成熟,企业有顾虑:知识产权怎么办?买来的构件不好用怎么办?这需要一个过程,不能一蹴而就”。上海市科委信息技术处处长聂春泥接受采访时说。中小企业向构件化转轨有困难,政府的角色就是扶一把、送一程。“库是载体与抓手”,围绕着“库”要逐步形成几个高地:科研高地、服务高地、技术交流的高地。
2003 年 12 月上海构件库竣工时召开了一个“构件化带动软件工业化应用示范大会”,企业的热情出乎聂春泥她们的预料。“实话实说,建立构件库这种公共服务平台,我们也是摸着石头过河,心中无底,现在坚定了信心――我们所做的事情一定是企业所需要的,企业觉着有实惠就愿意跟着政府走。”聂春泥说。从市场规律来看,这事交给企业运作更合适些,问题是现在让企业推广这项技术,信誉度还不够,也没哪个企业愿意出头,所以政府先走一步。第二步是“通过服务能有回报”,第三步是高回报的成熟市场。随着三部曲唱完,我们对上海软件开发中心的扶持将会弱化,直至他们成为一个独立的公共服务平台公司或构件中介公司。我们希望将来全国的构件库会连起来,实现更大范围的资源共享。
采用何种模式创建构件复用平台,涉及到未来构件化的机制问题,对此,政府、企业、大学、专家各有不同的看法,概括来说有三种途径:一是建立类似图书馆的公益性资源平台;二是由国家投资创建不以赢利为目的交易所,通过服务赢利;三是完全企业化运作。就我国目前情况看,由于实行构件化开发的企业所占比例甚少,远低于建立公司化运作平台所要求的 30% 的底线,所以目前还是以政府推动为主。专家认为,随着构件技术的推广,走向完全企业化运作将是最理想的选择。
记者手记
构件化:需求推着走
软件开发的构件化,最大的推动力来自需求。过去你问什么是软件,惟一的办法是把你写的程序拿过来。早期的简单程序还好,可到了一“拿”就是“ 200 万行程序加 20 本手册再加若干本需求说明”的时候,便成了不能承受之重。如果发现问题需要修改,还得需求、程序、文档一起改,这对用户和企业而言几乎是不可能的事情:“任何事物有了‘百万级'的因子之后,都是没有办法直接管理的,软件因此变成了挣扎于焦油坑中的巨大怪兽,系统建成即闲置”(普元公司 CTO 黄柳青语)。
但换个角度看,如果企业接二连三走麦城,原因又惊人地一致的话,这个产业也就到了变革的时候了。这就是“社会需求胜过 10 所大学”的推动力量:因痛苦而思变,因痛苦而创新。至于创新的路径,“大生产”早就给出答案了――“用构件组装”。
软件构件化在发达国家业已普及,美国已有上万个商业软件构件( Cots )、近千个专业构件制作组织和一批商业构件库运作机构,形成了几百亿美元的构件市场。
在中国,构件带来的变革还不为多数企业所认识,特别是那些挣扎在温饱线上尚无暇顾及创新的中小企业。上海构件化推广走在全国前列,但该市 1000 多家软件企业真正认识构件的只有 10 %~ 15% 。上个世纪 80 年代初,杨芙清院士带领北大软件工程研究所牵头承担的国家科技攻关项目“青鸟工程”,目标之一就是构件技术,现已硕果累累;中科院软件研究所冯玉琳博士带领的队伍在构件工程的研究上也取得了突破性进展。但“好的技术并没有带来人们期望的好结果,直到今天,构件技术的应用仍然局限于小范围内”(杨芙清语)。
所幸政府已看到了这个大趋势。 2002 年 7 月,国务院 47 号文将构件库列为影响软件产业的重大关键共性软件。 2004 年 4 月,科技部、发改委、商务部、信产部、标准化委在“国科发高字” 124 号文中,把发展“构件库”写进了 2005 年“加强软件企业技术创新”的目标中。北京和上海分别由科委出面组建构件库,帮助中小企业开展构件化应用。北京叫“软件产业基地公共技术支撑体系”,由“三库四平台”组成,其中的一库即软件构件库;上海的“构件库”依托于上海软件技术开发中心,内容包括“六个一”工程:一批示范应用企业、一个构件库、一个运行服务平台、一套组装工具、一套标准规范、一套运行规则。
可以预料,构件化驶上中国软件产业的快车道,已为时不远。毕竟,市场的需求和诱惑是谁也挡不住的。
文章来源于领测软件测试网 https://www.ltesting.net/