首页 > 代码库 > 云计算对传统软件工程的影响

云计算对传统软件工程的影响

                                              云计算对传统软件工程的影响


 

(1)何谓云计算?

  云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。

  美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络、应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。


 

 (2)云计算的特点:

  1.超大规模

    企业私有云一般拥有数百上千台服务器,大型企业例如谷歌甚至拥有几百万台服务器,它们赋予了用户前所未有的计算能力。

  2.虚拟化

    云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。

  3.高可靠性

    “云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。
  4.高可扩展性
    “云”的规模可以动态伸缩,满足应用和用户规模增长的需要。
  5.按需服务
    “云”是一个庞大的资源池,你按需购买;云可以像自来水,电,煤气那样计费。
  6.通用性
    云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。
  7.极其廉价
    由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。
  8.潜在的危险性
    云计算服务除了提供计算服务外,还必然提供了存储服务。但是云计算服务当前垄断在私人机构(企业)手中,而他们仅仅能够提供商业信用。对于政府机构、商业机构(特别像银行这样持有敏感数据的商业机构)对于选择云计算服务应保持足够的警惕。一旦商业用户大规模使用私人机构提供的云计算服务,无论其技术优势有多强,都不可避免地让这些私人机构以“数据(信息)”的重要性挟制整个社会。对于信息社会而言,“信息”是至关重要的。另一方面,云计算中的数据对于数据所有者以外的其他用户云计算用户是保密的,但是对于提供云计算的商业机构而言确实毫无秘密可言。所有这些潜在的危险,是商业机构和政府机构选择云计算服务、特别是国外机构提供的云计算服务时,不得不考虑的一个重要的前提。
(3)云计算对软件工程的影响
  云计算,与其说是一项技术,不如说是一种服务,就像IT界的自来水公司一样,为来自四面八方的运用提供自己能提供的服务,对于传统软件工程也是如此,云可以为传统软件工程提供更加广泛的资源。云计算对软件工程的具体影响如下。

  1.软件体系结构化

  与传统的软件工程相比,基于云计算的软件工程的体系结构变得更加构件化以及开放性更大。在软件即服务(SaaS)模式下,云计算抽象了传统开发和集成中的低端任务,提供了标准化的、即装即用的解决方案。在云端,我们可以找到很多构件作为我们要开发的软件的一部分,而这些构件会在不断的使用中改进,变得越来越成熟。同时,新开发出的软件可以作为以后要开发的更加复杂的软件的构件。这样,软件危机可以在一定程度上得到缓解。在这种软件开发模式下,软件的体系结构基本上是完全处于分布式的,一个软件由客户端、服务端、管理端、开发端、测试端等各个不同的构件有机结合,也就是说,不同的软件完全可能享有共同的构件,这也使得应用之间没有了严格的物理边界。

  2.软件更具多样性

  前文中已经说过,云计算更多的是一种服务,对于各个云计算服务公司来说,服务得更好,公司才能生存。这也就保证了云端资源的质量。所以对于软件开发者,完全不用担心用于软件开发的构件质量问题。面对一个需求,软件开发者可以在云端茫茫的构件中选择能更好地满足需求的构件。在这样的条件下,就可以保证软件对象的多样性。

  3.软件动态开发

  与传统软件工程相比,基于云计算的软件工程不再是瀑布模型的,并发模型、多重螺旋模型将成为主流。在软件部署之后,每个阶段交付的都是中间版本,软件升级会变得越来越频繁。随之而来的,是软件开发过程的高度并发状态和高度动态性。由于软件开发所需的构件和资源都在云端,软件开发的过程变得更加灵活,对于一个应用,软件部署、运行管理、维护和开发过程都是并发的,因此也就可能会出现这种情况:第一次软件部署可能只是一个很简单的功能,由于云计算大大降低了软件构件之间的耦合程度,在软件开发各个过程并发进行的情况下,软件可能在很短的时间只能就可以升级到可以实现很复杂的功能,而且这个发展方向的容错性很强。

  4.更多人参与开发

  微软公司《云应用开发》一书的前言中写到:“用户只需要在每个记账周期内致富自己在该周期内所使用的IT资源所产生的费用,云计算平台的运营商则负责管理和维护整个IT架构,这样,用户就可以集中所有经历,利用自己对核心领域专业知识的掌握来构建和布置自己的应用程序”。可以看到,基于云计算的软件开发让用户放弃了对应用程序的部分控制权和自治权,将这部分控制权和自治权交由云平台运营商来掌握,也就是说软件的组织管理不再仅仅是开发者的任务了。另一方面,对于一个开源项目,得益于云端资源的共享性,对世界各地的开发者来说,一个项目的开发过程是透明的,因此一个项目可以有来自不同区域的开发者来参与开发,可能这只是出于对技术的热爱,而不是对利益的追求。

  5.软件开发更加简单

  在传统的软件开发过程中,程序员的编程能力极为重要,只有很好的编程能力才能对不同需求提出解决方案。但在基于云计算的软件开发中,几乎所有解决方案都可以在云端找到,因此编程能力似乎显得不是那么重要了,而更重要的是如何来更好的构建和布置自己所要开发的应用程序。用户、开发人员之间不再有明确的角色划分,在一定情况下,软件开发者、服务提供者和软件使用者可以是同一个人,而软件开发工具由云计算服务商提供,软件开发者只需要在开发周期内向服务商支付一定的软件服务费用即可。在这样的大环境下,人人都可以是开发人员。

  6.资源虚拟化

  Wiki对云计算的定义是:云计算是一种通过internet以服务的方式提供动态可伸缩的虚拟化资源的计算模式。可以看到,计算资源虚拟化是云计算技术的核心,通过虚拟化技术使得上层的软件应用和底层的软件实现分离,由于资源都在云端,用户可以随时随地访问这些云端资源。现如今的软件开发,资源一般有人力资源、软件资源和硬件资源,在云资源高度虚拟化的情况下,通过云计算的三种模式IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务),软件资源和硬件资源都可以通过云端轻松获得,对于软件开发者来说,剩下要考虑的资源只剩下人力资源。


 (4)总结

  当前在云计算越来越普及的大环境下,软件开发模式必然要做出相应的改变,这种改变很可能会大大缓解软件危机,然而并不能彻底杜绝软件危机,当然完全解决软件危机也是不大可能的。但可以肯定的是,随着云计算的发展,我相信软件开发会进入一个全新的时代。从我国国情看,在传统IT产业中还处于非常不利的地位,关键核心技术都掌握在国外厂商中,云计算给我们实现跨越式发展提供了难得的机遇,我们必须抓住这个机会,成为全球云计算的先进国家,这对企业和个人都有非常重要的意义。

云计算对传统软件工程的影响