标签:
云计算对传统软件工程的影响
摘要:简单介绍了云计算的基本概念,云计算的迅速发展,大大提高了资源的利用率,将“共享”做到了级大化,对软件工程的发展也产生了革命性的变化。本文主要从软件架构的开放性、软件对象的多样性、软件过程的动态性、开发组织的社会化、开发人员的大众化、资源部署的虚拟化这六个方面出发,分析云计算对传统软件工程产生的影响。
关键词:云计算,软件工程
一、 云计算的基本概念
云计算(英语:Cloud Computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。云计算的比喻:对于一名用户,由提供者提供的服务所代表的网络元素都是看不见的,仿佛被云掩盖[1]。如图1所示。
云计算是并行计算、分布式计算和网格计算的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化、效用计算、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的.结果。云计算具有得特点有:虚拟化、高可靠性、超大规模、按需服务、极其廉价等。目前,云计算已经应用的领域有科研、医学、网络安全、图形和图像处理和互联网等。[2]
图1 云计算基本概念图[1]
二、云计算时代的软件工程
2.1 软件架构的开放性
与传统的软件体系结构相比,基于云计算的软件体系结构最重要的特点在于其前所未有的开放性和成熟的构件化。[3]
为了更快,更好,更便宜的开发软件,要么是有效的生产软件,要么是复用软件的很大一部分,对于要改进软件开发效能的公司来说,软件复用必须成为其软件工程战略的关键部分。而云计算正是提供了这种便利。云计算应用软件必将大量利用云服务提供的现成的软件构件,同时,新研制的软件又将成为后续应用软件开发所能利用的成熟构件。开放性的软件构件资源,将会为公司开发软件节省很大的时间和开销。
2.2软件对象的多样性
软件工程方法包括面向过程的软件工程方法、面向数据的软件工程方法、面向对象的软件工程方法。而面向对象的软件工程方法是目前最流行的的软件工程方法。
把数据和操作封装在一起,形成对象。对象是构成软件系统的基本构件,我们称之为软件对象。每一个软件对象都和现实中的一个实际物体对象相对应。在没有云计算的时代,软件对象大部分都要由自己或者认识的人实现,这种实现方法不仅低效,而且由于人员有限,设计出来的软件对象也有限。而在云计算的时代,每个人都可以把自己构造的软件对象放到云上,而构造软件对象的时候也可以直接利用云上现有的对象,由于云上软件对象种类很多,开发人员在构造对象以及开发软件时就会有更多的选择。
2.3软件过程的动态性
传统的软件工程是需要一个严谨的软件开发流程,时间,人员,物件需求,并且在开发过程中如果出现某些改变,可能会造成较多的损失。而云计算的出现则可以减少甚至避免这种损失。网构软件结构可以根据应用需求和网络环境变化而发生动态演化,主要表现在其实体元素数目的可变性、结构关系的可调节性和结构形态的动态可配置性上。
另外,即使在一个软件建构已经完成之后,它的性质由用户所在环境所决定。如果软件的性质总是在变化,新的改进也需要进行。云计算可以比较实时地感测到性质的变化,并做出改进,然后把改进的放到云里,用户便可以根据所在环境选择不同性质的软件需求。
2.4开发组织的社会化
从生命周期特点看,传统的软件生命周期模型是串行的,本质都是瀑布模型的变形,这样的生命周期模型更易于控制,可以保证在确定时间有确定的结果。但在云计算环境下,软件开发生命周期模型:并发模型、多重螺旋模型将成为主流,瀑布模型、迭代模。型的使用越来越少,在软件部署后,交付的都是中间版,软件升级成为常态。
开发流程软件开发不再是一个封闭的、全局控制的流程,而是存在多个并发和自治的流程,在一个项目中,自底向上、自顶向下有机集成。[3]
开发过程中,用户、开发人员之间不再有明确的角色划分,云计算为开源软件的发展也提供了很大的便利。软件工程的开发组织人员可以是社会网络上任何一个人,即每个人都可以为这个软件提供一些改善优化,除了人员,还有物件也都是从云上各取所需,而构件提供者也可以是社会上任何一个人员,因此可以说这个开发组织是庞大的,社会化的。
2.5开发人员的大众化
随着以云计算和物联网为代表的互联网应用的发展,全球信息总量出现十分激烈的增长,同时由于开源软件及项目的出现,使得很多资源直接暴露给大众人员。这为开发人员提供了很大的便利,同时大大降低了软件开发的门槛,学习资料以及开源代码给软件开发人员入门者提供了很大的帮助,可以让大众人员很快掌握并完成部分的软件开发。
另外,由于软件的复用机制,云上有很多现成的软件构件,即使一些开发人员不懂里面的具体结构,也可以拿来使用,这里也体现了开发人员的大众化。
2.6 资源部署的虚拟化
云计算的一个核心便是将资源进行虚拟化,底层的资源的管理与维护对于上层来说是透明的,上层应用不需要知道细节只需要请求资源。资源的管理在云中可能就是复杂并且随时会发生变化的,尤其是虚拟机技术的引入使得一个上层应用所使用的资源甚至会动态的被迁移。[4]这是资源耦合性提高后,直接被使用产生的虚拟化效果。
另外,云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自云,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。这是物理层面上不用关系资源实际所处的未知的虚拟化体现。
三、总结
虽然云计算技术还没有达到非常成熟的地步,但它在软件工程很多方面已经发挥出效用,软件工程的传统开发模型以及有关技术势必在云计算的广泛应用下随之产生变革,其丰富程度和复杂程度都将进一步加强。从我国国情看,在传统IT产业中还处于非常不利的地位,关键核心技术都掌握在国外厂商中,云计算给我们实现跨越式发展提供了难得的机遇,我们必须抓住这个机会,成为全球云计算的先进国家,这对企业和个人都有非常重要的意义。
参考文献:
【1】维基百科编者. 云端运算[G/OL]. 维基百科, 2016(20160914)[2016-09-14]. https://zh.wikipedia.org/w/index.php?title=%E9%9B%B2%E7%AB%AF%E9%81%8B%E7%AE%97&oldid=41490527.
【2】程国江.云计算简介及应用前景[J].中国新技术新产品,2011(08).
【3】张勇.云计算环境下软件工程模式初探[A].第三届全国软件测试会议与移动计算、栅格、智能化高级论坛文集[C].2009
【4】靳志成.云计算环境下的软件动态部署[D].上海交通大学2011
标签:
原文地址:http://www.cnblogs.com/why1012/p/5965182.html