普元:银弹革命进行时

 普元:银弹革命进行时

布鲁克斯说:没有银弹。黄柳青说:不能没有银弹。——题记



“在所有恐怖民间传说的妖怪中,最可怕的是人狼,因为它们可以完全出乎意料地从熟悉的面孔变成可怕的怪物。为了对付人狼,我们在寻找可以消灭它们的银弹。大家熟悉的软件项目具有一些人狼的特性,常常看似简单明了的东西,却有可能变成一个落后进度、超出预算、存在大量缺陷的怪物。因此,我们听到了近乎绝望的寻求银弹的呼唤,寻求一种可以使软件成本像计算机硬件成本一样降低的尚方宝剑。 但是,我们看看近十年来的情况,没有银弹的踪迹。没有任何技术或管理上的进展,能够独立地许诺在生产率、可靠性或简洁性上取得数量级的提高。”



上面这段话节选自弗雷德里克·布鲁克斯1987年发表的一篇论文,文章的题目叫做《没有银弹》。

布鲁克斯出生于1931年,是1999年图灵奖获得者,被人称为“软件工程之父”。在他年仅29岁的时候,就主持了当时世界上最大的计算机系统工程IBM/360计算机的开发,而这个项目,被誉为是人类从原子能时代进入信息时代的标志。离开IBM之后,布鲁克斯又回到故乡一手创立了北卡罗来纳大学计算机系,执教至今,桃李满天下。布鲁克斯的故事,是一个经典的少年天才、老当益壮的科学家传奇。他对于计算机系统的理解之深刻,对于软件工程的实践经验之丰富,思想之睿智,令后人高山仰止。

然而就是这位软件工程之父,在他与软件这个怪兽搏斗了将近三十年之后,却得出上面的断言。这就是软件业无人不知的“没有银弹论”。

自那以后,又过去了将近二十年,一批批的计算机科学家和软件工程师不断挑战这个断言。好几次,人们以为找到了银弹,结果都错了。虽然在诸多技术和管理改进的合力之下,软件开发的效率确实获得了很大的提升,但是没有任何一个单独的技术或者管理进步接近了布鲁克斯设定的“数量级”的标准。一次次的尝试和挑战,结果都只不过是把这个断言变得越来越牢不可破。

渐渐的,断言变成了规则,规则变成了定律,定律变成了神谕。“没有银弹”已经成了一句咒语,一个先验的公理,牢牢地束缚着软件产业。人们先是抗拒它,然后是习惯它,最后是依赖它。布鲁克斯的咒语成了一道免战牌,一张安全网,一块遮羞布,使我们有理由心安理得地拖着时代的后腿,慢吞吞地炫耀着自己的专业技能。今天,如果有人胆敢说他发明了银弹,那么他得到肯定不是什么赞赏和感激,而是怀疑和嘲笑。永动机的教训已载史册,水变油的骗局记忆犹新,银弹?你开什么玩笑!



 

普元不是在开玩笑。

普元有一本内部刊物,名字就叫《银弹》。

普元的CTO叫黄柳青,一位科学家,科学家在原则问题上不开玩笑。

黄柳青出生浙江义乌的农村,1979年,也就是是恢复高考的第一年,按照他的话说,他“幸运地考入浙江大学攻读计算机专业”。6年之后,赴美留学,在马里兰大学攻读计算机科学博士。马里兰大学的计算机科学专业实力极为强劲,在2004年的全美计算机专业排名中,该校数据库方向排名第4,软件排名第8,人工智能排名第9,综合排名第12。然而在这样一座学术圣殿中,黄柳青却遇到了一位“离经叛道”的导师。这位希腊籍的导师,虽然人在学术圈但却坚定地认为,搞软件的人关在大学里发论文纯属自娱自乐,是好汉就必须到产业界里去摸爬滚打。也许是受到导师的影响,黄柳青在校期间就开始了创业的尝试。他和伙伴开发了一个报表生成器,亲自动手向各行各业推广。产品宣讲、软件安装、调试维护,甚至给用户拉网线布置系统,黄柳青都干过。“这段经历教会了我很多,使我积累了难得的实践经验,学会了与客户沟通的技巧,更了解到创业的艰辛。”

1993年,黄柳青终于获得了博士学位,结束了长达14年的象牙塔生活。“那时候我的心情就像打完一场恶仗,好家伙,终于可以离开学校了!”年轻的黄博士意气风发,憧憬着在产业界大展拳脚,很快他就获得了一个难得的机会,参与了一个规模庞大的软件项目,正是这个软件项目让他很快认识到,软件开发是一个大陷阱。

“这个项目很了不起,是一个跨存储介质的巨型数据库查询系统。开发者原计划半年开发完毕,但当我加入的时候,项目已经进行了一年半,代码积累了100万行,随着人员的流动,已经没有人能够说清楚这些代码的结构是怎样的。一旦出了问题,解决的方法近乎撞大运,一群人像热锅上的蚂蚁,情况接近失控。产业界的这种情况是让我措手不及的。我问自己,怎么会是这个样子?这跟我在学校里设想的完全不同啊!”

黄柳青在这个项目里奋战了一年多,软件质量才逐渐稳定下来。前后加起来两年半的时间,终于惨胜。这个项目让他充分认识到软件复杂度这个怪物的恐怖。“我隐隐觉得,软件这么做是不对的。”

1998年,黄柳青回国加盟了亚信科技,接触了很多软件公司,这使他有机会近距离观察了中国软件产业。中美软件产业之间巨大的落差,让对美国的软件开发模式都相当不满的黄柳青更感到触目惊心。“基本的管理都很落后,甚至会出现源代码丢失的情况。” 此外,他也发现中国软件的生存环境也与美国非常不同。“客户需求多变,仅仅为了跟上客户的需求变化,开发团队就已经疲于奔命。再加上开发人员流动很大,很容易就会完全失去控制”。

这个时候,黄柳青已经十分清醒地认识到,根本的问题是彻底改变传统的代码堆砌式的软件开发方法,找到银弹,除此之外别无选择。

“情况已经非常严重,对于整个软件产业来讲,已经是无法回避的问题。尤其是在中国,我们再也找不到任何借口辩护,事情到了必须解决的地步。”黄柳青坚定地说。“有人觉得,既然没有银弹,何必徒劳无功?不如安步当车,自娱自乐。我想问,除了找到银弹,我们还有别的出路吗?”



软件的悲剧性宿命,在与它一方面要实现生动活泼的人类思维,而另一方面却只能依赖于冰冷刻板的机器硬件之上。人与机器之间巨大的差别,完全要依靠软件来弥合。机器只认0和1。这一事实60年来从未改变,在可以预见的未来也不会改变。所以可怜的人类只能吭哧吭哧地把自己的想法翻译成计算机可以读懂的语言。这种表达了人的想法,又可以被计算机读懂的东西,叫做代码。编写代码的过程有两处难点。首先,硬要把生动活泼的人类思维按照机器的方式描述和定义下来,这种违背人性的事情本身就很难,因为很难,所以我们需要专门训练这样的人才,人们叫他们“程序员”。其次,代码的粒度太小,变数太多,用代码来描述系统,过程不可能不慢,结果不可能不失控。算算看,在一行代码里你最多可以犯下多少错误?3个?5个?10个?那么在10万行代码里你能犯多少错误?100万行呢?Windows XP一共有7500万行代码,理论上它可能犯的错误数量超过宇宙中全部基本粒子的总和。而现实世界里,只要一个错误就可以让机器崩溃,造成巨大的损失。1996年欧洲航天局阿丽亚娜-5型火箭首发失败,16亿美元瞬间灰飞烟灭,原因就是一个小小的浮点数溢出错误。一方面在用着如此原始的概念进行如此复杂困难的工作,另一方面却又希望仅仅依靠一些一般性的管理和技术手段使开发进度成倍提高,质量越来越好。怎么可能呢?

挟泰山以超北海,非不为也,是不能也。

无论是理论思考还是实践经验,都使黄柳青认识到,在现有的、以代码为基础的软件开发模式里和软件体系架构里,找到银弹是不可能的。要想突破这一局面,必须从根本上突破“代码”这个桎梏,以更高级、粒度更大、更可控的实体作为软件的原子零件。本质上降低软件这个东西的复杂度。

这是种什么样的实体呢?



黄柳青首先排除了普通意义上的“对象”。

“从历史发展来看,面向对象技术的兴起跟当时形形色色的计算机体系结构并存的局面有关。由于不同的计算机字长各不相同,软件在不同机器上运行的时候面临一个数据结构多变的问题。这样的问题用对象来解决非常合适,把数据结构包在对象里面,外面的功能就不再受数据结构的变化而影响。所以面向对象的基本假设是,对象对外提供的服务是稳定的,内部的数据结构是多变的。要把内部的数据结构变化封装起来,对外部提供稳定的接口。但是到了今天的时代,计算机体系结构已经高度一致,数据结构变化的主因已经消失。反而对于大型企业的业务系统来说,数据是长期稳定的,业务过程,或者说对象的接口才是变化无穷。这就导致了一个让人始料未及的局面:对象包装了稳定的东西,却把不稳定的东西暴露出来,结果从总体上来看,软件还是不稳定。更何况对象也还是自下而上的,用代码构造的小粒度的代码单元,用这样的东西来构造复杂的巨型系统,无法从本质上降低复杂度。”

他的目光落到了以CORBA、ActiveX、VCL、EJB为代表的第一代构件技术上。这类构件技术已经实现了可插拔、可替换的功能,并且能够分布在某个系统里面提供一定的计算服务,甚至是提供可视化的控件,大大提高了开发效率。但是黄柳青还是不太满意,他感到,对于复杂的企业应用来说,这些构件技术层次还是太低,粒度还是显得太细。更重要的是,这类构件技术彼此之间互相依赖的方式仍然是基于对象接口式的,构件A依赖于构件B、C和D的接口,而向外提供的接口又被E、F、G构件所依赖。这样一来,在一个完整的系统里,构件之间的相互依赖关系就会混乱如麻,当这种复杂度到一定规模时,整个系统又会陷入失控。此外,这种构件的接口相当固定,调用什么方法,传几个参数,参数的类型和传递次序,全都是铁板钉钉,一个个都有宁为玉碎,不为瓦全的劲头。要一开始就把这些细节固定下来,千秋万代此情不渝,这在中国这样一个业务多变的环境里是根本不可能。更何况,放在互联网上的构件拥有很多不同的客户,如果这些客户对于服务的要求发生变化,而变化速度又不同,那么这种硬邦邦的构件就注定完蛋。粒度问题,构件协作关系问题,接口脆弱性问题,这三个问题不解决,就不可能真正成为解决软件开发根本难题的银弹。

不管怎么样,构件技术似乎是大有希望的,但这些问题也必须解决。怎么解决呢?



 



2000年8月,在留下一个成功的软件产品和一个成熟的研发团队之后,黄柳青离开了亚信。此后将近半年的时间里,他在美国沉下心来充电。

“这半年对我很重要。在业界摸爬滚打了这么多年之后,终于可以放松身心休息一下,同时静下心来思考技术。正好这段时间,美国的J2EE、XML技术都在蓬勃发展时期,我利用这个机会系统地学习了这些技术,并进行了相当深入的思考。今天普元的构件技术中有很多思想,就是那个时候萌芽的。”

2001年1月的一天,大刘给他打了个电话:“怎么样,休息好了吗?回国来吧,我们一起干。”

大刘是刘亚东。黄柳青在马里兰大学攻读博士的时候就认识了他。刘亚东是安徽人,比黄柳青大几岁,马里兰大学物理学博士。“我是学物理的”,刘亚东说,“学物理的人就是得善于琢磨。”在亚信的时候,黄柳青是CTO,刘亚东是COO,俩老同学经常见面,经常琢磨。

2001年,中国互联网基础设施的建设已经基本完成,宽带迅速走入千家万户。但是基于宽带互联网的企业应用还没有起步。怎么样能帮助中国的企业更好地利用互联网开展自己的业务?刘亚东看到了这样一个机会,决定创业。

如果说黄柳青是不折不扣的科学家,那么刘亚东更像是一个思想家和战略家。他深知,要帮助中国企业利用互联网,得琢磨清楚两件事,一是中国这个特殊的产业环境,二是如何基于互联网,面向业务变化频繁剧烈的中国企业提供适用的软件开发技术。

“天上掉下个软件业”,刘亚东说了一句戏词,但绝不是戏言。“很多人都抱怨软件产业发展慢,很弱小,抱怨其他行业信息化意识淡薄,素质低下等等,但是很少有人想一想,中国软件业这十几年,真的给别人带来了多大的价值吗?”刘亚东对于国内软件产业的批评毫不留情。

机会就是从毫不留情的反省中捕捉到的。刘亚东认为,中国软件产业的生存环境与美国截然不同。美国的商业和管理环境很成熟,中国很不成熟;美国在软件技术冲在前头披荆斩棘,中国却可以坐享很高的技术起点,有后发优势;美国有大量的历史遗留系统,反而新建项目不多,集成为主,开发为辅,而中国是一张白纸好挥毫,大量新的项目有待建设,集成为辅,开发为主。这些特点决定了,中国的软件技术不能跟在美国屁股后面亦步亦趋。

“中国独特的产业环境要求我们用崭新的模式来开发基于互联网的软件,一开始就必须随需应变,一开始就必须采用标准技术,一开始就要用构件来开发应用系统,一开始就把系统构造成透明的白盒子。而这样的工作,美国要到未来才会去做。我们要做美国人明天才会做的事情。”

刘亚东把第一件事琢磨清楚了,而他知道,黄柳青一定能帮他把第二件事情琢磨清楚。

黄柳青也很清楚,如果想解决第二个问题,就必须发明 “银弹”,除此之外,没有别的可能。

2001年4月,普元成立了。



普元成立的时候,在技术上黄柳青还有很多细节没想清楚。但是已经认定要以面向构件的中间件为普元的核心技术方向。

“我们要的是面向构件的技术,而不仅仅是构件技术。把一个构件拿过来,把接口继承下来,里面的代码改一改,这不叫面向构件,这是传统的、第一代的构件技术。所谓面向构件,就是说应用程序构造的基本单元就是构件。操作是构件,服务是构件,业务流程是构件,组织架构是构件,界面元素是构件,运算单元是构件,一切的一切都是构件。你只能在一个现成的、经过完备测试、质量可靠的构件库里选择构件,通过拼装组合的方式实现自己的功能。这样做看似约束,但唯有如此才能够彻底摆脱代码对于软件的束缚,从根本上降低软件的复杂度,让软件从不可控的一团代码乱麻转变成结构清晰的、易于管理控制的白盒子。”

黄柳青成立了一个小而精干的研发团队,在实践中稳步前进。“图难于其易,为大于其细”,老子的这句话成为他的座右铭。他和他的团队从一开始就非常注意技术的产品化,产品的实用化。在美国期间建立起来的与客户交流的能力,在亚信期间积累起来的研发和产品化经验,在这个过程中都发挥了巨大的作用。他一点一点拨开眼前的浓雾,探索、实践,再探索、再实践,从构想到产品,再把产品拿给客户去使用和检验,产品在一轮一轮的磨练中成熟,技术思路也在一次一次的探索中越来越清晰。

怎样简化构件之间复杂的协作关系?黄柳青说:

“我们成功设计和开发了以企业构件总线为核心的构件运行环境。所有的构件都可以插接在这个总线上,从总线上获取数据,进行处理,再把结果放回到总线上。这样一来,每一个构件只与总线发生关系,整个系统的结构非常简单。这就是经典的微内核体系结构在新的背景下的重构,而我们的企业构件总线,就相当于那个微内核。”

怎样应对构件接口的快速变化?黄柳青说:

“构件与总线之间通过XML标签数据进行对话。XML的标签实际上相当于在数据中加入的元数据。有了这些元数据,各个构件各取所需,彼此不会互相冲突,这样就一次性地,彻底地解决了构件接口易碎性的问题。今天人们都很关注SOA,我想说,我们的构件对外提供的就是不折不扣的Services。”

怎样解决粒度的问题?黄柳青说:

“我们的构件可以通过拼装形成大的构件,进一步还可以拼装成更大的构件,甚至于把整个业务、整个应用程序当成一个构件。而这一切都可以在图形化的界面下操作完成。构件的构造过程,以及应用的构造过程,就是一个模型驱动的过程。也就是说MDA和SOA,都将在我们的面向构件体系中融合为一。”

黑暗在一点一点散去,随着技术的成熟,普元的产品在实践中取得了确定无疑的成功。采用普元EOS技术的集成商,在软件的开发效率和质量上都获得了巨大的提高。“对我们来说,这就是银弹。”一位从事银行业务的大型应用集成商代表说。

技术成功,也给了普元人强烈的自信心。刚刚从BEA加盟普元的副总裁程朝晖说:“普元在技术上处于最先进的水平,在国内四年的实践中也展现出越来越强大的生命力。我毫不怀疑,面向构件的技术正在给中国企业的互联网应用系统开发带来一场变革,一场银弹革命,这是正在发生的事实。”

普元人似乎听见了银弹呼啸飞过,人狼怪兽轰然倒地的声音。



“中国的软件产业环境决定了我们必须发现银弹,不能没有银弹。普元规模不算大,一百七八十人。我们这群人聚在一起,就是要完成一个使命,发现银弹,帮助中国软件产业实现跨越。如果说银弹的出现意味着软件产业的一场革命,那么这场革命并不是将要到来,而是正在进行中。”

上面这段话节选自记者的一段采访录音,接受采访的人叫黄柳青。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值