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

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

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

  随着计算机以及网络的发展,软件已经成为我们生活中密不可分的一部分了,但当我们回顾一下整个软件发展历史的时候,就会发现如今的软件和很多年之前的软件已经完全不是一个概念了。在计算机刚开始起步的时候,一个人在实验室捣鼓个两三个月就可以独立编写一个可使用的操作系统出来。但在二十一世纪的今天,已经不是一个个人英雄主义时代了,个人,企业和政府的信息技术需求日臻复杂,软件的用户群体也是不再局限于小部分人,因此各种形式,各个应用领域的软件都需要工程化,因此传统软件工程诞生了。但是任何一项技术都不会停滞不前,总会继续随着社会的需求和技术的革命而进步。当2006年Google首席执行官埃里克·施密特在搜索引擎大会首次提出“云计算”的概念后,云计算就对传统软件工程这一领域产生了显著的影响,也正是得益于这一影响,软件工程依旧活跃到现在。

  本文就主要来详细的说明一下云计算是如何对传统软件工程产生影响的以及产生了如何的影响。在此之前我们首先需要理解一下基础概念。

1.   云计算的概念及特点

  云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。简单来说就是云计算将软件功能通过Internet以服务的方式提供给用户,这种服务可以是一种web service也可以是一种app。

云计算具有以下特点:

  1. 云计算提供的是服务,而服务的实现机制是与用户透明的。
  2. 云计算具有高可靠性和可用性。
  3. 云计算具有服务的多样性,譬如通过支付不同的费用而获得不同的服务。这在传统购买实体软件是难以做到的。[1]

2.   传统软件工程的概念及特点

  我们所说的传统软件工程方法主要指的是结构化软件工程方法,它常常分为以下几个阶段:系统工程,分析,设计,测试,软件维护。其中分析和设计师传统软件工程中最重要的阶段。

  传统软件工程面向的是过程,关心的是功能,强调以模块为中心,采用模块化,自顶向下,逐步求精设计过程。系统是实现模块功能的函数和过程的集合,结构清晰,可读性好。结构化设计从系统的功能入手,按照工程标准严格规范的将系统分解成若干功能模块。然而由于用户的需求和软硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响,局部修改又很可能会引起系统的根本性变化。[2]

3.   云计算下的软件工程

  课本上有这么一段话:“根据学院派的观点——购买软件,拥有软件,并将使用和管理软件作为一项工作,这种模式已经走到了尽头。今天,随着web2.0的普适计算的发展,我们即将看到全然不同的新一代软件产品。软件通过网络交付使用,看起来就像驻留在每个用户的计算设备上运行一样,但实际上,软件可能运行在遥远的服务器上。”

没错,这段话就是当前时代在云计算下的软件最真实的描写,它不再是那个装在软盘上的程序段,软件具有了生命。

         云计算对软件工程的影响不仅仅直观的体现在最终的服务上,它对软件工程的各个阶段都产生了具有革命性的影响。

         首先,在软件开发组织模式方面,传统的软件生命周期模型是穿行的,本质都是瀑布模型的变形,这样的生命周期模型更易于控制,可以保证在确定时间有确定的结果。但在云计算环境下,软件开发生命周期模型;并发模型、多重螺旋模型将成为主流,瀑布模型、迭代模型的使用越来越少。软件开发不再是一个封闭的,全局控制的流程,而是自底向上,自顶向下的有机合成。

         其次,在软件体系结构模式方面,传统的软件体系结构相比,基于云计算的软件体系结构最重要的特点在于其前所未有的开放性和成熟的构件化。云计算应用软件必将大量利用云服务提供管理中问的现成的软件构件,同时,新研制的软件又将成为后续应用软件开发所能利用的成熟构件。云计算应用软件体系结构在本质上是完全分布式的,由客户端、服务端、管理端、开发端、测试端等多种软件构件有机集成,多种应用共享公共软件构件,应用之间仍然有清晰的逻辑边界,但不再有截然分开的物理边界。

         再者,云计算给软件部署、运行管理带来了高度的灵活性,对于一个特定的应用,软件部署、运行管理、维护和开发过程是并行的,第一次部署的可能只是一小部分功能,在随后的软件升级中不断完善。由于云计算模式极大的降低了软件构件之间的耦合程度,软件的客户端、服务端、管理端等构件完全以并发、独立的方式部署和管理,甚至软件运行的基础设施也可以在用户透明的方式完成升级换代和重新部署。

         除此之外,云计算也改变了传统软件工程中的测试环境。云计算环境下,软件开发工具、环境、工作模式发生了转变,也就要求软件测试的工具、环境、工作模式也应发生相应的转变。软件测试工具也应工作于云平台之上,测试工具的使用也应可通过云平台来进行,而不再是传统的本地方式;软件测试的环境也可移植到云平台上,通过云构建测试环境;软件测试也应该可以通过云实现协同、知识共享、测试复用。

  在这些影响下,云计算使得传统的面向过程化的软件工程逐步转为了面向服务的软件工程,这种情况下的软件工程主要特点有:软件复用的提高显著缩短了软件工程的时间,据统计,云计算下的开发时间可以最高可缩减1/3;开发者面向业务应用,需求工程成为重点;云计算下的软件工程打破了软件开发商与用户的二元格局,第三方云计算中心的作用更加重要,云计算模式下的软件开发和运行环境基本上都是由云计算中心来架构的。[3]

4.   个人对云计算下软件工程的感想

  我认为云计算的提出使得整个软件行业发生了显著的变化,最早的时候,计算机系统主要是软件和硬件的结合,软件往往是为了某一个特定的机器而编写的。后来,软件的独立化程度开始提高,软件被独立出来这也是软件工程的重要存在标志。再后来在云计算的影响下,软件趋于服务化,软件变成了一个个网页服务和终端服务。

  云计算给传统软件工程带来的影响是不可逆的,云计算为传统软件工程带来了极大的改善甚至有可能解决软件危机,但传统软件工程也还没有到达消亡的那一天,云计算下的软件工程目前不可能完全推到一些旧的模式,毕竟他也有其适用的领域限定。二者互相存在,互相影响应该是很长一段时时间会存在的局面。

 

[1] 陈全, 邓倩妮. 云计算及其关键技术[J]. 计算机应用, 2009, 29(9):2562-2567.

[2] 张艳. 传统软件工程方法与现代软件工程方法的比较[J]. 克拉玛依学刊, 2006(4):46-48.

[3] 史杰, 解继丽, 史少华. 论云计算对软件工程的影响[J]. 昆明学院学报, 2011, 33(6):67-68.

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