在云计算快速发展的环境下,软件技术、架构将发生显著变化,这也对传统软件工程造成了巨大的影响。首先,所开发的软件必须与云相适应,能够与虚拟化为核心的云平台有机结合,适应运算能力、存储能力的动态变化;二是要能够满足大量用户的使用,包括数据存储结构、处理能力;三是要互联网化,基于互联网提供软件的应用;四是安全性要求更高,可以抗攻击,并能保护私有信息,五是可工作于移动终端、手机、网络计算机等各种环境。那么下面就来看看云计算对传统软件工程的影响吧!
一、云计算
定义
云计算(cloudcomputing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。
对云计算的定义有多种说法。对于到底什么是云计算,至少可以找到100种解释。现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
云计算(CloudComputing)是分布式计算(DistributedComputing)、并行计算(ParallelComputing)、效用计算(UtilityComputing)、[5]网络存储(NetworkStorageTechnologies)、虚拟化(Virtualization)、负载均衡(LoadBalance)、热备份冗余(HighAvailable)等传统计算机和网络技术发展融合的产物。
背景
云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变。用户不再需要了解“云”中基础设施的细节,不必具有相应的专业知识,也无需直接进行控制。云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。
特性
a)超大规模:“云”具有相当的规模,Google云计算已经拥有100多万台服务器,Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户前所未有的计算能力。
b)虚拟化:云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。
c)高可靠性:“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。
d)通用性:云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。
e)高可扩展性:“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。
f)按需服务:“云”是一个庞大的资源池,你按需购买;云可以像自来水,电,煤气那样计费。
g)极其廉价:由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。
云计算可以彻底改变人们未来的生活,但同时也要重视环境问题,这样才能真正为人类进步做贡献,而不是简单的技术提升。
h)潜在危险性:云计算服务除了提供计算服务外,还必然提供了存储服务。但是云计算服务当前垄断在私人机构(企业)手中,而他们仅仅能够提供商业信用。对于政府机构、商业机构(特别像银行这样持有敏感数据的商业机构)对于选择云计算服务应保持足够的警惕。一旦商业用户大规模使用私人机构提供的云计算服务,无论其技术优势有多强,都不可避免地让这些私人机构以“数据(信息)”的重要性挟制整个社会。对于信息社会而言,“信息”是至关重要的。另一方面,云计算中的数据对于数据所有者以外的其他用户云计算用户是保密的,但是对于提供云计算的商业机构而言确实毫无秘密可言。所有这些潜在的危险,是商业机构和政府机构选择云计算服务、特别是国外机构提供的云计算服务时,不得不考虑的一个重要的前提。
二、传统软件工程
定义
创立与使用健全的工程原则,以便经济地获得可靠且高效率的软件。
特性
软件工程的基本目标是生产具有正确性、可用性及开销合宜(合算性)的产品.正确性意指软件产品达到预期功能的程度;可用性意指软件基本结构、实现及文档达到用户可用的程度;开销合宜意指软件开发、运行的整个开销满足用户的需求.以上目标的实现不论在理论上还是在实践中均存在很多问题有待解决,制约了对过程、过程模型及工程方法的选取.
软件工程采用的方法:
把软件生存周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低整个软件开发工程的困难程度。在实现每个阶段的任务时,采用的是系统化的技术方法——结构化分析和结构化设计技术。
三、云计算对传统软件工程的影响
软件的开发与计算模式和运行方式直接相关.一般而言,企业计算系统资源按照分层方式进行设计,体现在“应用―中间件/数据库―操作系统―硬件服务器”紧耦合的模式部署.这种资源架构是软件工程设计开发模式的先决条件.云计算的服务架构由IaaS,PaaS和SaaS构成.通过标准架构体系的中间件,屏蔽不同操作系统间的差异性,在虚拟化硬件和操作系统上提供可靠的稳定的业务保障,这也就是PaaS的核心.在云计算的模式下,软件工程在面向对象的基础上进一步抽象化,提升到面向服务的层次.面向服务也就是将业务流整体分成子业务流,对子业务流级别的模块进行组织设计,并最终形成软件系统整体.面向服务使软件在IT系统结构层次结构系统中更加接近应用.面向服务的开发模式延伸出了云计算下的软件工程.其基本特性表现在以下方面:
1)构件的成熟度提高,软件的可复用程度得到提升.软件复用一直是提高软件开发效率克服软件危机的重要途径,而构件可以在更高抽象层次上实现大粒度的软件复用.软件复用程度的提高一方面可以运用成熟构件模块减少软件开发错误,提高软件的可信性;另一方面则可以缩短开发时间,提高开发的绩效.根据国内著名PaaS提供商800APP提供的信息,云计算模式下开发时间可以缩减1/3~1/10.绩效与可靠的矛盾关系一直是软件危机的根源所在,云计算在这两方面同时具有的优势无疑为缓解软件危机带来了希望.
2)开发者面向业务应用,需求工程成为重点.在PaaS的平台中,开发者有可能写很少的代码甚至不需要代码,而只需按照业务流程对平台中提供的各类资源进行设计和组织即可.这种模式下,需求与开发具有了同等的语境,同时需求在软件工程中的地位也将更加重要.
3)云计算下的软件工程打破了软件开发商与用户的二元格局,第三方云计算中心的作用更加重要.云计算模式下的软件开发和运行环境基本上都是由云计算中心来架构的,这些资源按照开发者的要求进行配置.在开发者一端省去了硬件设施架构、运行环境调试等工作,只需一个浏览器和一些简单的工具就可以实施开发.开发完成之后的测试以及运行和维护也全部由云计算中心负责.这种三足鼎立的关系是传统软件工程中所不曾有的,这既改变了工程业务链也改变了商业价值链.
4)软件升级成为常态,生命周期模型不同以往。云计算环境下,软件的开发速率提升,维护成本降低,与用户的交互更加紧密。软件部署后,交付的往往是中间版。开发人员根据软件运行情况和用户反馈,不断升级软件,敏捷开发思想被提倡。软件开发的生命周期模型以并发模型、多重螺旋模型为主流,传统软件工程的瀑布模型、迭代模型的使用越来越少,自主性更高,也更难以控制。
云计算下软件工程也进一步显现出软件工程整体的发展趋势.从软件与硬件的关系上来看,早期信息系统主要是软硬件的结合.在后期的发展中,软件的独立化程度开始提高,这也成为了软件工程存在的一个重要标志,那就软件作为一种产品进行着工业化的生产和消费流程.当云计算将信息技术推入服务化模式中的时候,软件与硬件在以服务为共同指向的目标下,又重新走到了一起.这一过程是随着云计算的计算方式归集化而完成的.计算处理从用户终端归集到云计算中心,以此为基础的软硬件资源通过自下而上的虚拟化技术融合为整体,共同满足用户的业务需求.
云计算促成的软件工程的发展是否能成为破解软件危机的“银弹”尚不可知,但是它却在提高效率、降低成本等方面发挥出效力.软件工程的传统开发模型以及有关技术势必将在云计算的广泛应用下随之产生变革,其丰富程度和复杂程度都将进一步加强.与此同时,更加多元化的软件工程开发模式和商业模式都将成为可能.
小编结语:
云计算的普及和应用,还有很长的道路,社会认可、人们习惯、技术能力,甚至是社会管理制度等都应做出相应的改变,方能使云计算真正普及。但无论怎样,基于互联网的应用将会逐渐渗透到每个人的生活中,对我们的服务、生活都会带来深远的影响。要应对这种变化,我们也很有必要讨论我们业务未来的发展模式,确定我们努力的方向;同时,软件工程也要在跟着时代的脚步,不断发展。
以上就是云计算与传统软件工程的相关内容,更多内容请继续关注编程学习网教育!