关于面向构件和EOS的一些思考
二,软件开发和传统行业应该怎么对比
普元很喜欢把软件开发同传统产业进行类比,在接口问题上,我们也来看看传统的机械产业有没有类似的概念吧。螺丝和螺帽是我们最常见的两种构件,也是大规模工业化生产机械装置的基础,那么螺丝和螺帽的接口是不是宽松和自适应的呢?不是!他们是强耦合的接口,而且我们有上百万中不同规格的螺纹规格,或者说接口,每一种都定义的非常精确和有针对性。我们还有不计其数的齿轮的规格,有多少个齿轮可以用其他型号的代替呢?很少。当然机械装置中也有弱耦合,比如胶水、塑料、树脂。但是有没有利用弱耦合的结构来大规模生产机械装置的呢?我一时间想不出这样的例子。
类比得出的结论是,如果我们要学习传统的机械产业,我们应该定制上百万种严格的强耦合接口标准,然后大量的厂商按照标准生产上百万种构件。看起来好像构件时代离我们还有点遥远哦。不过也未必,类比得出的另一个结果是,用EOS这样松耦合的构件来构造软件,就象用万能胶水粘到一起的一组齿轮、轴承和螺丝螺帽来做变速箱。
我们不要理所当然的认为这样的变速箱没有用,这正是软件和机械的不同。这样一个变速箱只要设计合理、能够承载所需要的负荷,他是真的能够一直工作下去的,我们不需要面对金属疲劳、胶水老化和磨损这样的问题。也许这正是面向构件开发的实质吧:能用胶水粘到一起的东西,就不要用螺丝。
是的,我的类比存在问题。再写上面这些文字的时候我脑子里面反复想起Jack Reecves的名言:源码就是设计,而软件的生产过程仅仅是廉价得几乎免费的构建过程。不错,我们可以机械化、自动化的生产大批的汽车、冰箱,可是我们还可以更容易的构建软件的拷贝。我们在抱怨软件的生产不能象汽车那样一台接一台的出厂,可是汽车厂又何尝能够一台接一台的批量设计汽车呢?
昨晚码字之前喝了点红酒,思路好像不是太清晰,有点自相矛盾的倾向……