Eclipse创始人谈软件开发的前景
社区有不同的类型,因为社区的类型可能由厂商发起的,比如Eclipse。在Eclipse上面,我们做出贡献,我们也进行测试,在我们创建Eclipse的时候,并没有什么保障,我们希望围绕着Eclipse创建一个社区,让大家接受这个技术,但是对此并没有保障,事实上我们完全没有想到人们接纳Eclipse的速度会这么快,我们也没有想到人们会加入我们的队伍,帮助我们共同发展Eclipse,这就是为什么我们认为要脱离IBM,把它作为一个开放的标准来推出,我们会继续这样做,把它作为IBM软件战略Rational的重要环节。
我们会逐渐的发展一个基于社区的开发环境,现在我们已经讨论这个工作,我们会利用开放源作为一个重要环节,帮助各位了解协作工程设计的意义,并且接受你们的测试和考验,看一下我们自己是不是真正了解它的意义所在。这是我们从现在开始开发提供软件的方式。
我们已经证实开放源软件可以和商用软件共存,我们在很多产品中都看到这一点,我们今天开发的所有软件业务的产品都带有一定的开放源软件,将开放源软件纳入这个产品之中,我们已经创建这样一个模式,可以把开放源和商业软件结合在一起,这对于我们来讲是让系统更加开放的模式,让系统中能够纳入社区接受的内容,让我们不断地改变和演进我们的标准,并且参与社会的活动,我们不会控制这些社区,我们不会控制这些技术的演进和软件的开发,但是我们会参与其中,不断做出自己的贡献。
我们在IBM内部所做的是希望把开放源开发环境利用起来,让它为我们找到不同的演进形式,我们一直做的是社区源,社区源的意思是我们利用开放源开发的原则,让源代码开放给所有人,在一个封闭的社区内部开放,这个社区是封闭的,有门的,比如在40多个地方的几十个开发人员。
现在从商业软件到开始利用开放源的方法开发商业软件,我们这样做的原因是这里有一定好处的,也就是说与开放源有关的开发流程是有好处的,因为它是有一定原则的,并且在开放源模式中有一定可以应用的。我们在我们理解中已经考虑到对软件开发流程的修改,从参与Eclipse、Apache、Linux开放源代码等各种当中,都看到开放源社区和开放源软件。
社区源概念是很有意思的,我们所做的是确确实实公布了我们的软件,这是在一个软件开发环境下公布的,我们可以这样说DB2、WebSphere、Rational、Lotus、和Tivoli都有共享的一些组件,这些组件是可以用IBM内部开放源方法的模式来开发,这个组件是共享的,谁都可以在没有控制的情况下做出自己的贡献,我们可以把它和过去软件开发的公认模式比较一下,在过去有一个固定的等级结构有一个固定的模式,而新的模式可以发挥我们的潜力、创意,整个软件开发的团队都可以发挥他们的创造性,随时随地的进行开发,加速了共同组件的共享和开发,在整个产品开发过程中都可以利用,这是一个关键的原因,因为它我们就有可能在中间件开发不同的功能,另外我们又可以迅速把这些功能共享,放到其他的市场,就有可能提供一个完整的SOA端到端的平台。
整个生命周期服务都是共享的,开放源放到商业软件中的做法是非常重要的改变,会改变软件开发的方法和环境,Rational部门正在改变软件开发环境,让开发人员可以越来越容易在封闭的社区中工作,我们所做的就是利用SOA的原则,通过创建松散的结合在一起的架构,我们Web Service是以软件为中心,遵从标准的,Rational开发平台会融入越来越多开放标准,W3C的标准也会让我们重新利用这些标准的实施在IBM内部迅速把新的产品推向市场,一个例子就是一个新桌项目,这项目是新的桌面工具套装,或者今年年底推出我们利用这些原则来创建一个开放的社区,这样就可以共享开发的成果,把基础的组件,模块化的能力进行利用,让我们分解我们产品,让他们更容易利用和实施,这是我们面对软件开发越来越复杂环境的做法。
我们有300多个项目正在运行,这是IBM软件开发的300多个项目,通过封闭的社区开发流程实现的,很多的关键元素,比如工作流引擎,这是用来创建基础设施的,这是很多不同项目共享的一个技术,而工作流引擎可以实施软件开发流程,并用Rational来设计这个流程,也会以共享的流程为基础,它会建立在一个业务的SOA上面,我们会在此基础上不断发展。我们不仅讨论SOA,而且IBM内部也利用SOA让我们产品更快推向市场,同时给予我们更大的灵活性。
这里有几个例子来说明老的做实方法和新行事方法对照,在一个开放源头当中,或者封闭源的项目当中,你投入多少要根据需求而定,我并不想详细讲这个问题,大家可以自己来看。我们非常好的实践或我们的理解,我们理解老的事物和新的行事方式的区别,我要鼓励大家对此了解,这样就可以在自己的组织当中,或者在自己软件开发的流程当中确定开放源的开发,我们也会帮助大家实现这一点。
我们所要做的就是要利用网络的影响,还要利用互联网、社会计算能力、社会联网能力,把它放在软件开发环境当中,同时这种方法能够让我们加速软件开发的程序,不论是一个封闭有门的社区还是一个完全开放的社区都没关系,在这两种环境之下,网络的影响能够让我们实现共用,这是以前没有做到的。
我们已经讲了很多的模块化,在SOA架构的核心当中,这个图显示不是一个模块系统松散结合,不是我们所理解松散结合的架构,这也就是它为什么很难被改变,很难对做业务时候需要的速度进行响应,与之相反我们想要做的是显示在这里的,除了不要把重点放在技术之外,除了关注技术的发展,还要了解你的业务,你不是要看这些单一的资源,要了解你的业务如何经过变化成为模块化的业务,这样你就从一个单一仓库式的概念过渡到集成点的概念,它能够在各个模块化的服务之间建立起连接接口,实现一个完全集成化,而且高度灵活的系统,这里颗粒度是非常重要的,而且一直以来也非常重要,我在这里提出并不是一个新的概念。
如果我们想一下模块化的设计,想一下对象的设计,如果我们想一下在UML当中所定的这些规则,实际上我们不断修改这些规则,考虑到技术的清晰度,技术是基于互联网的计算之上来发展起来的。为了能够解决软件的考古,我们做了上述的工作,我们首先要做的就是要了解业务,要了解各个与众不同的因素,这样才能确定工作的优先顺序,并且确定如何对待软件的沉积层之间如何分解,我们还要了解我们究竟是要改变哪些因素。
因为很遗憾的是我们没有人可以在一张白纸上画图的,我们大家都不会这么奢侈。我们都是要在一个很广泛的环境当中作业的,不论一个小的企业,小的业务还是一个大企业大的业务,你都必须要考虑价值链,考虑供应链,而这个价值链、供应链在某种形式上必须要实现自动化,而某种形式上也必须要适应于互联网,所以如果在一个企业当中,或者你想建立一个新的业务来适应更广泛的供应链和价值连,从某种程度来说集成是关键,模块化是关键,互联网之上的模块化是关键。
所以XML和XML的标准建立起一个公共的语言,我们可以在一个企业内部各个数据仓库之间进行交流,或者在各个业务之间,在全球化部署范围内可以交流和通话,不论中国、美国、欧洲都要正道一个共同的语言,这种语言必须是要简单的,这也就是为什么我们开始创建基于网络服务,还有以网络为中心的架构,也就是我们所说的SOA,我们想要找到一种方式来确定模块化,而且把模块化和颗粒度因素应用到我们服务当中,我们用它创建新的商业模式,找到新的合作伙伴,建立新的合作链。我们可以创建和修改IT系统来实现零节度,我们可以重新配置,就像我们做拼图一样,我们可以改变拼图每一个块的形状,在全球化过程当中,我们要快速转型,适应每天面临的新压力。
我们已经有了一个非常稳定的老代码,已有的代码,我们必须要迅速改变,我们要有预见度的改变,我们需要零节度,同时我们也需要质量,在生命周期进行修改和变化的过程当中,质量也是非常重要的。SOA并不容易做到,它很难,因为它是建立一个松散联合的模块化架构,它需要变化,需要反映来转变商业模式,它实际上是IT资产与核心的治理相匹配的关键,所以这也就是为什么我要讲第三个因素,就是治理,治理非常重要,治理就是权力所在。
我们必须要有软件开发的方法和流程,这使我们可以迅速决策,也使我们能够确定相互的依附关系,还有确定我们的权力,这可以是架构,也可以是软件的开发者,他们要集成在一起,他们要能够利用所创建的资产从中受益,同时要不断调整和变化,我们要有一个衡量,要使所有这些工作和公司治理相符合,和公司目标相符合,我们要在软件开发环境中实现IT治理。
要实现真正的治理,真正的速度和零节度,我们需要一系列因素,我们需要了解整个生命周期,我们要有骥可察,要有可预见性,如果我们不能够理解,在我们软件架构和软件模块之间相互关系和相互依赖关系就不能实现零节度的开发,我们必须要定义软件开发过程各个模块,在治理发展过程当中,我们必须要了解它的复杂程度,因为复杂程度会相应转化为风险,同时我们也面临不断把复杂程度考虑在内的压力。
所以我们要把工作困难程度做一个排序,这是很难做到的,我们看到软件治理中的发展。在2005年以后,重新利用会发展一个根本的变化,在现今世界当中,基本上70%复用程度,30%是新创建的能力。我们必须要让让它变得可以管理,而且必须是模块化的灵活的架构,并且也是可以预见的,风险是在整个流程当中,整个生命周期当中得到管理,所以我们要基于业绩,基于结果,要实现根本的协作,要建立社区同时他们的结构是非常恰当的。
同时要有架构师的演进,而且应该具备迅速管理的流程,没有任何官僚体系存在,这就是为什么我们要实现零节的开发,要通过基于互联网的方式进行开发,这就是我们所说的能源统治,这是一种开放源社区当中我们要实现的,我们为什么需要这些,是因为我们需要更快的速度,如果我们不能迅速变化,不能够做迅速的软件开发就不能实现速度的要求,有很多体系是非模块化的,不是灵活的,就会延缓整个流程,我们必须要让互联网不能非常极端的改变我们的生活,而且我们要管理风险,要建立起软件领域的治理,同时要考虑这个模块化的架构,要建立一个基于社区的开发环境。
要把它放在新型软件开发平台环境当中,所以仅建立一个基于社区的开发平台是不够的,仅建立一个模块化的架构是不够的,必须要有一个非常明确的风险管理和治理的体制,要把它放在整个的生命周期管理当中。
0
相关文章