机房360首页
当前位置:首页 » 云计算 » 云计算时代的软件工程

云计算时代的软件工程

来源:畅享网 作者:机房360转载 更新时间:2011/1/14 13:35:31

摘要:这几年软件技术在互联网的推动下,中间件、虚拟化、互联网、云计算等等新概念不断涌现,现在每一家软件公司没有不谈云计算的,但是我们仔细分析就可以看到,其实每一家说法并不完全一样。那么,怎样才能,把握云计算的核心和本质,全面理解云计算的创新模式,才能将云计算从一个概念变成可以创新价值的力量?

  这几年软件技术在互联网的推动下,中间件、虚拟化、互联网、云计算等等新概念不断涌现,现在每一家软件公司没有不谈云计算的,但是我们仔细分析就可以看到,其实每一家说法并不完全一样。那么,怎样才能,把握云计算的核心和本质,全面理解云计算的创新模式,才能将云计算从一个概念变成可以创新价值的力量?
  
  我想从一个IT从业人员或者软件企业的角度,特别是从一个老程序员的角度,来看看我是怎么理解云计算的。
  
  所有的软件技术从产生到发展,都不是凭空出现的,也不是从地里突然冒出来的。任何新的技术出现,都是两方面的推动力作用的结果,一个是需求的拉动,一个技术的推动。云计算也是来源于社会和产业的需求,没有社会需求,科学家在办公室想出来的东西在产业上一般是有局限性的,譬如,云计算融合的其中一个技术就是网格计算,但网格计算在商业环境中很难发挥它的技术优势,在科学计算中取得不错的表现,但很难成为一项通用的商业技术。计算机发展到今天,其中一个现实需求就是希望解决资源利用率、计算能力不足和成本的问题。这就是云计算产生的需求推动力。互联网、中间件、虚拟化、网格计算等技术推动了IT技术的融合,这种技术的可行性为解决云计算的商业价值提供了技术上的解决方案。
  
  我们怎么理解云计算呢?
  
  第一,从应用角度理解云计算。云计算的一个特点就是用户的公众性,以前网格计算是科学家在做的,现在云计算不仅仅可以为科学家服务,个人、企业和政府等都可以使用云计算,即可以是私有的,它也是非常公众的。第二个就是设备的多样性。云计算某种程度上跟互联网和物联网时联系在一起的,计算机、手机、PDA、智能设备和RFID等都可以成为云计算的终端。第三个就是商业模式的服务性,有的专家说以后的计算机像用电用水一样,当然这是一个理想的状态,但是现在还没有到这个程度。所谓服务性就是简化和标准的服务接口、按需计费的商业模式。第四就是提供方式的灵活性,我们在部署上有公有云和私有云。我们既可以象Google、中国移动一样提供公共的服务,也可以在企业内或者政府内建设私有的云计算中心。
  
  第二,从产业角度理解云计算。云计算产业,无非就是三类,一类是做应用软件的,通过SaaS的方式提供应用服务。著名的salesforce.com、我们金蝶的友商网做的就是这种模式。还有一种是把系统软件厂商,为云计算的运营提供技术和产品。云计算就像电信运营商一样,有中国移动、中国联通,但他们并不生产手机、交换机、光纤通信设备等,这些技术和产品是由华为、Cisco这种设备供应商提供的。云计算也是一样,有云计算运营企业就一定有生产云计算平台产品和技术的企业。传统的软件公司包括金蝶中间件、IBM、微软、VmWare其实就是这种模式。还有一种就是提供专业运营商,当然还有把云计算的应用和技术当做商业模式运营服务的这些基础设施厂商,包括以前的IDC发展的互联网计算中心。
  
  第三,从技术角度理解云计算。从技术角度看,我个人理解云计算没有什么新的东西,它的本质来自于融合,主要是三个方面的融合,第一方面是使用方式就是SaaS的方式,这都不是什么新的概念。第二方面是技术基础来自分布式计算和SOA架构,从技术来讲,云计算就是一种分布式技术计算,就是网格计算和SOA,实现分布应用。第三方面即基础设施的虚拟化,现在很多人把云计算当成虚拟化,虚拟化只是基础设施部署方式,虚拟化也不是什么新的东西。虚拟化就是集群计算和分区计算的融合。把多台计算机虚拟成一台计算机,目的是提高计算能力。这种情况就是以前成熟的集群计算。
  
  还有一种是把一台机器虚拟成多台,目的是提供设备的利用率,这在十几年前就有了就是分区计算。虚拟化无非就是就把这两个合在一起。计算机可以变成小数位,虚拟化就是把原来整数位的计算机变成小数位了。
  
  所以我认为云计算本身是利用互联网远程管理数据应用和IT资源的技术。它是多种应用的整合或者融合。它在软件技术和软件工程方面我认为它的影响还是体现在融合上。
  
  云计算既然如此红火,是否也会象几年前流行的网格计算一样,很快就变成一个流行的时髦呢?其内在的逻辑在哪里?
  
  从软件的角度看云计算,结合软件科技的发展规律,我们就可以发现一些内在的逻辑。从软件工程角度看,我一直讲任何一种软件技术从软件发展到今天,软件技术很多,涌现了很多新的技术,有些技术很快昙花一现,有些技术影响非常深远。什么技术会影响深远呢?我想一种软件技术有两点是非常重要的,第一它是否促进了软件工程的发展,它是否影响了商业模式?比如说网格计算是一个很好的技术,科学家们搞出来的,但是它对软件工程和商业模式带来的影响并不大,所以它并没有产生很大的社会影响。
  
  从最早的高级语言,它的软件工程上有很大的意义,使得软件脱离了硬件,同时使得软件工程成为可能,它在商业模式上形成了独立软件开发商的存在。在这之前没有软件公司,只有硬件公司生产硬件的同时附带上面有一些软件。因为高级语言的发明使得软件脱离了硬件。所有高级语言到现在都还是软件技术的基础。
  
  我认为在软件技术发展历史中,影响第二个深远的就是面向对象的技术。这个技术产生了面向对象的工程,包括面向对象的分析和设计,形成了到现在为止的软件工程主体。它在商业模式上使得软件和信息服务相互结合,成为我们现在的软件产业基本形态。
  
  云计算软件基础就是面向服务的架构,虚拟化的系统部署。在软件工程上,产生了面向服务的建模和基于组件的工程,在商业模式上云计算使得软件的服务和软件脱离了出来,服务从软件产业之中独立出来。
  
  软件技术的工程化的影响可以分成三个时代。
  
  软件的“石器时代”,软件是一种技术,也是一种艺术,我们编程的对象是代码(Code),编程是一种个体的脑力创造。
  
  软件业的工程时代,把个体的编程活动变成一个产业,团队化和工程化得到实现,我们编程对象主要也从代码发展到对象,对象是组件(Object)。在工程上,就是面向构件的工程,包括系统分析、设计、开发。
  
  在云计算时代,有几个特征会发生变化:
  
  第一,软件研发的团队化变成社会化。编程不再是一个开发团队,可能很多组件、很多服务来自互联网,来自你不认识的人,来自于你看不见的地方。
  
  第二,软件对象,从组件到服务化。所有的系统都是服务的,编程的对象、系统的对象不仅仅是一个对象而是一个服务。
  
  第三,软件过程也改变了,软件开发方法是通过建模、封装、编排而成,更多的是所有业务流程业务对象都是装配而成的,不是开发而成。
  
  另一方面,软件技术发展历程就是不断解耦的历程。以我对软件的理解,软件工程发展跟硬件是走相反的路,原来所有软件都是在一个程序内,软件技术的发展就是不断的把它的组成不部分分拆出来。比如说70年代、80年代的子程序就是把业务逻辑分离出来,八十年代出现的远程过程调用就是把用户交互解耦出来。九十年代出现的消息队列,就是把同步连接的变成异步连接的,进一步解耦。21世纪出的消息代理,就是将数据转换解耦出来。今天,SOA架构就是将用户交互、数据转换、业务逻辑、业务实现等等都解耦出来,并且以开放和标准的接口进行服务封装。
  
  云计算是在SOA基础上进一把软件的环境进一步解耦,将计算环境进行虚拟化,与IT物理资源进行解耦。
  

机房360微信公众号订阅
扫一扫,订阅更多数据中心资讯

本文地址:http://www.jifang360.com/news/2011114/n570614869.html 网友评论: 阅读次数:
版权声明:凡本站原创文章,未经授权,禁止转载,否则追究法律责任。
相关评论
正在加载评论列表...
评论表单加载中...
  • 我要分享
推荐图片