标签:环境 text 阶段 之间 过程 部分 并行 软硬件 float
云计算对传统软件工程的影响
一. 什么是云计算?
云计算(Cloud computing)是一种基于互联网的计算。在云计算中,存储和运算不在本地计算机或服务器中运行,而是运行在分布于互联网上的大量计算机上,云计算通过把原来由个人计算机和私有数据中心执行的任务转移给分布在互联网上由全体用户共享的大型计算中心来完成,实现了计算机硬件、软件等计算资源及对这些计算资源进行安装、配置与维护等服务资源的充分共享。所谓的”云”其实是指分布在互联网中的形形色色的计算中心,包含成千上万甚至几十万、几百万台计算机或服务器。用户不再购买高性能的硬件,也不再购买或开发各种功能的软件,而是使用任何可上网的设备,连接”云”,利用”云”提供的的软件或服务,直接在”云”上处理并存储数据。因此,云计算可以看作是并行计算(Parallel computing)、分布式计算(Distributed computing)和网格计算(Gridcomputing)的发展。云计算与网格计算的主要区别在于:网格计算侧重于解决计算和存储资源的分配,即将大家提供的计算和存储资源根据各自应用的需要重新分配给大家;而云计算则倾向于计算、存储和应用资源的共享,在云计算中,用户不仅不需要象网格计算那样,提供计算和存储资源,也不需要自己购买或开发应用,所有的一切全都由云服务商提供。
云计算的服务模式为
1. 基础设施即服务(IaaS)
IaaS是Infrastructure as a Service,基础设置即服务,消费者通过Internet可以从完善的计算机基础设施获得服务。例如AWS、OpenStack,CloudStack提供的虚拟机计算服务。通过这种模式,用户可以从供应商那里获得他所需要的虚拟机或者存储资源来装载相关应用,同时这些基础设置的繁琐的管理工作将由IaaS供应商来处理。IaaS能通过它上面对虚拟机支持众多的应用。IaaS主要的用户是系统管理员。
2. 平台即服务(PaaS)
PaaS提供了用户可以访问的应用程序开发平台。公司中所有的开发环境都可以在这个环境下进行,从而达到节省时间、资源的目的。PaaS的强大之处在于它能够涵盖软件开发的各个阶段,提供了从开发工具、中间件到数据库软件等开发所需的所有功能,原本分散的工作室之间的合作也变得更加容易。例如微软的Azure服务平台就包含了Windows Azure;Microsoft SQL数据库服务、Microsoft .Net服务;用于分享、储存和同步文件的Live服务;针对商业的Microsoft SharePoint和Microsoft Dynamics CRM服务等,使得开发组之间的合作能够更加的紧密。
3. 软件即服务(SaaS)
SaaS是Software-as-a-service ,国内通常叫做软件运营服务模式,简称为软营模式,提供的是软件服务,例如office365等,通过互联网就直接能使用这个软件应用,不需要本地安装。 用户只需要接上网络,并通过浏览器,就能直接使用在云端上运行应用,而不需要考虑类似安装等琐事,并且免去初期高昂的软硬件投入。SaaS主要面对的是普通用户。
二. 云计算对传统软件工程的影响
1. 软件架构的开放性
软件架构是指一个软件系统从整体到部分的划分,架构会严重影响软件的开发效率和系统的可扩展性。云计算的开放性在软件工程里可以让程序员复用已成熟的构建模块,而能够缩短程序的开发时间而且可避免软件开发过程中的错误。云计算模式下开发所需的时间可缩短为三分之一至五分之一。在测试维护过程中也是同样,有了前车之鉴,开发人员可以通过升级来解决很多问题却不会在测试,维护过程中大费周折。因为云计算拥有了很强大的开放性,开发者可以利用此开放性来把软件开发的档次提升至更高的阶段。
2.软件对象的多样性
利用云计算的软件开发过程中通常是采用面向对象的思想的,可以把封装好的模块进行组装使用。比如,造汽车时,我想组装一辆汽车,我会需要按照设计图纸来调配一些从汽车零件工厂买过来的零件来组装,我不需要了解生产零件时的过程或者知识。这样的面向对象的思想不仅提高了软件开发的效率和安全性,减少了很大的成本,极大程度上实现了程序的复用,提高了软件的多样性。
3.软件过程的动态性
软件开发的过程中,需求不可能从头完全固定的,会在不断变化,通过云计算,可以对运行环境进行动态的扩充,由于需求变动引起的工作量也会减少,只需稍微修改就可以完成要求了。而在传统的软件开发模式中,软件开发需求变化时导致软件架构的改变,甚至需要重新设计软件的构架的。可是,运用云计算的动态性,可以使我们很方便地改变软件的运行环境,减少软件结构的变化量。当开发网站时,可能因没有预想到的大量的流量流入而引起的网站无法访问或者缓慢。没有云计算的平台时,我们需要另外花出额外的资金来购买新的服务器,但是,云计算的存在可以给我们按照我们的要求来扩大或减少计算能力,进而减少成本,满足客户的要求。这样的动态性更加方便了软件的开发。
4.开发组织的社会化
云计算依赖网络来获取强大的计算能力,在网络环境下,软件开发从封闭的计算机平台逐渐走向互联,协作的网络平台环境。 传统的软件企业正在逐渐走向开源。由于几年来软件技术的飞速发展,闭门造车有可能导致技术的落后。通过云计算,软件的开发过程可以由多个团队来协作完成,众多的开发团队形成了开发组织的社会化。通过多个团队之间的技术共享,我们不仅能够节省“造轮子”的时间,还能够确保我们的软件始终能够接触到新的技术。更有意义的是,这个社会中还可能包含不同时区的工作人员,这样一来就可以实现软件在一天24小时中都有人进行开发/维护,更加有利于软件开发效率和稳定性。
5.开发人员的大众化
传统的软件开发需要大量的准备工作,需要大量资金来搭建,开发以及运行环境。使得很多创业公司面临资金上的困难,现在有了云计算,人人可以容易地租用自己所需要的设备,使得创业不再是需要投资大量资金的事情了,人人都可以使用已有的技术来实现自己的项目,开发人员也趋向于大众化,编程不再是一个开发团队,可能是很多服务来自互联网,来自不认识的人,这使开发变大众化,开放。
6.资源部署的虚拟化
计算资源虚拟化是云计算技术的核心,通过虚拟化技术使得上层的软件应用和底层的软件实现分离。由于资源都在云端,通过云计算的三种模式IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务),用户可以随时随地访问这些云端资源。 资源的部署和维护整修及更新换代都是需要成本的, 在云计算的模式下就会格外不同了。很明显,维护和整修的费用没有了,管理难度和工作量将会降低很多。尤其是当遇见紧急情况的时候,迫切需要增加一些资源的时候,虚拟资源可以更为方便的添加进去。 正如上面所说,云计算将计算能力部署在云端,并需要网络来进行访问。这样做不仅有利于我们随时进行资源的扩展,更有利于节省空间以及相关的硬件维护费用。云端的服务器机群还有利于数据的安全性,更多的备份可以保障数据不会轻易丢失,这点是本地储存很难避免的
在云计算市场越来越扩大的环境下,软件开发模式也必然会发生相应的改变,使得软件变得更加可靠。随着云计算的发展,软件开发进入了全新的时代,开发成本会随之大幅度降低。在云计算的基础上IT行业也会获得更大的发展。
参考文献
[1]论云计算对软件工程的影响 史杰,解继丽,史少华 《昆明学院学报》 - 2011
[2]云计算:系统实例与研究现状 陈康,郑纬民 《软件学报》, 2009, 20(5):1337-1348
[3]云计算,Iaas, Paas, Saas 百度百科
[4] https://zh.wikipedia.org/wiki/软件工程,wikipedia
标签:环境 text 阶段 之间 过程 部分 并行 软硬件 float
原文地址:http://www.cnblogs.com/ManGoStin/p/5991402.html