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

随着数字化,网络化在全世界范围的推进,其高速的发展也为管理运营带来了不少的难题,大量的数据以指数的形式随时间增长,如何面对这一个大数据时代成为了10年前许多行业龙头互联网公司的燃眉之急。2006年,Google 和 amazon 等公司相继提出了“云计算”的思想。这是一些可以自我维护和管理的虚拟计算资源,通常为大型服务器的集群。

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

对云计算的定义有多种说法。对于到底什么是云计算,至少可以找到100种解释。 现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。

相比于传统意义上的计算,云计算的突破所在为分布式处理以及面向服务化。那么与此同时,传统意义上的软件工程将要何去何从,会产生哪些变化呢?

1.由面向对象转变为面向服务

云计算为软件工程提供了丰富的计算和存储资源,传统软件工程的面向对象思想慢慢可以进一步规约为面向服务。

2.开发平台变更

传统软件工程的开发工作需要在开发者的计算机设备上配备相应的开发环境,搭建相关的开发平台。而云计算模式下的软件开发运行和维护都在云计算服务器之中进行,不在对开发者和运行人员本地的硬件架构和开发环境提出要求。开发者只需连接到云端即可进行开发。

3.用户操作简化

随着开发和维护的工作移居云端,用户的使用自然也就在云端进行。云端的软件平台采用虚拟化技术,模拟相关的虚拟环境并对用户隐藏细节只提供相关的接口,用户无需关心其底层的实现方式。用户在云端进行操作的使用体验和本地端几乎是没有差异的,一切操作得以简化。

4.软件架构开放性提高

云计算的架构相较于传统的软件工程出现了分布式的特点,在云计算之中,不同的软件会存在彼此之间的公共部分交集,他们拥有模糊的物理边界的同时保持着逻辑边界的清晰。软件开发的架构部分可以直接从已经成熟的架构库之中进行选择,伴随着开发过程还有大量可复用的算法和原码可以使用。软件开发从线下走向线上,从网络边缘走向网络中心。

5.开发人员大众化

云计算模式下,用户与开发人员之间的划分将不如之前那样明确。最早时的软件开发比较简单且随意,程序的质量很大程度上依赖于程序员的个人水平。随着计算机性能的提升以及应用的发展,软件的规模与复杂度与日俱增,软件工程的出现解决了这一问题,在抗击软件危机的过程之中起到了至关重要的地位。现在越来越多的人可以参与到软件的开发工作中来,用户甚至可以参与软件的构想和实现,设计与开发人员不断交流敲定解决方案,开发人员得到了很大程度的泛化。

6.资源部署虚拟化

传统软件工程在开发之前需确定并准备好所需资源,然而预计资源很难做到与实际发展情况契合,随着开发进行,可能出现缺少资源或者资源过剩的情况。对于前者,可能由于无法及时补充资源而导致延误时间;后者则会造成成本的浪费。而云平台采取虚拟分配资源的方式,开发者可以灵活地更改所需的资源量,当所申请的资源过剩时可以请求收回,缺少资源时也可申请分配。这一过程对云平台而言,只需要调整部分资源的服务对象即可,省去了开发者人工添置资源的成本。

云计算的结构为软件工程的发展带来了新的契机,云计算架构打破了开发商与用户的二元模式,将云计算提升到枢纽的地位形成了三足鼎立的新模式。借助于网络和基于网络的计算模式,软件真正走向了网构软件的阶段。

云计算强调按需使用,动态调配,弹性扩展的理念,按照用户的需求进行资源的组织和交付。其服务内容的三个部分分别是:基础架构即服务(IaaS),平台即服务(PaaS)以及软件即服务(SaaS)。其中IaaS为用户提供基本的运算和存储能力,PaaS和SaaS面向软件资源两者一定程度上存在相互关联。云计算的这三层服务体系创造了新的软件开发模式。

回顾软件的发展历程,我们不难发现,软件本身经历了从单纯的程序到称之为软件产品的阶段直到软件服务这一更加面向用户的阶段。随着计算机体系结构的不断深化和宽化,硬件的不断发展,程序开发的流程从较为简单慢慢转变为现在的超大规模超高复杂度,深刻运用工程化设计思想的软件开发体系。借此契机,1968年“软件工程”这一概念被提出,其思想的要点为软件的可维护性,文档化以及对软件生存周期系统化的管理,使软件摇身一变变为一种产品,一项工程。在软件工程这一概念提出来的这几十年内,其概念被不断丰富和深刻,不过其核心要点没有发生显著的变化。

当前云计算下软件工程也进一步显现出软件工程总体的发展趋势,当云计算将信息技术推入服务化模式的时候,软件与硬件在以服务为共同指向的目标指引下又重新走到了一起。计算处理从用户终端转移到云计算中心,软硬件资源技术融为一体,共同满足用户的业务需求。

当下,云计算对传统软件工程的影响已经在很多层面上体现了出来,我们可以直观的看到传统软件工程的价值链受到了一定程度上的冲击,不过目前的云计算尚且不能对传统软件工程产生颠覆性的影响,两者互相依存将是未来比较长的一段时间的可能状态。纵使云计算模式下的软件开发有着许多传统软件工程尚且不能及的优点,但是其也受到了适用范围的限制,而其使用范围之外传统软件工程依旧发挥着至关重要的作用。当下云计算模式在理论技术以及实践方法上尚且处于不断的摸索状态中。软件工程的系统性和复杂性必然会对多种理论技术以及模型产生要求,而如此广泛和深入的条件规模也就说明其架构之上的技术尚且不会消失。按照目前的状况来讲,软件工程的多元并存将会是具有很大可能性的未来。

参考文献

[1] 史杰,谢丽君,史少华. 论云计算对软件工程的影响[J]. 昆明学院学报.2011

[2] 罗军舟,金嘉晖,宋爱波. 云计算:体系架构与关键技术. 通信学报.2011

[3] 维基百科:云计算

[4] 张勇,云计算环境下软件工程模式初探,北方自动控制技术研究所

你可能感兴趣的:(云计算对传统软件工程的影响)