云计算对软件工程的影响

 

云计算在今天这个时代不再是研究人员忽悠经费的工具,也不再是媒体争相吹捧的噱头,它的应用之广泛,已经从最基础的数据存储,电子邮箱过渡到商务合作,虚拟办公等领域。云计算使得用户体验变得丰富,想要什么直接获取。但用户体验得流畅是由软件人付出的巨大努力来完成的。但不论如何,任何物联网都涉及到多部门、多领域、多产业、多地域,云计算的应用场景可为无处不在。这种量的要求对传统软件工程提出了一个挑战,如何去满足这种领域广、地域广、需求广的要求。 

李未院士曾在云计算大会上提出两点意见:

一、是精英化,精英不是天才,是经过系统有效训练的人,高等教育的人,精英化人才。

二、是计划性,要做一个软件预先规划需求,而且需求能够提得很清楚,然后把需求不断的展开,做到细节。开发的时候是自底向下的开发,自底向下的测试,整个活动是自闭的,不对外开放的。

李未院士生动的举例说明现在开发一套系统的特点:“跟我们研制一个大型客机一样,从自顶向下的设计,专业人士研究制造,训练有素,现在开发面向群社会服务的这样一些系统,就像建设城市一样,我们所有的城市建设都是在过去的基础上逐渐的堆垒起来的。所以社会工程更多的思想将渗入到超量信息的研究,特别是在云的思想指导下的超量信息系统的构造的东西。”

云计算从宏观上,国家领域战略层面对软件行业的影响是深远的,它使得企业在软件开发中获得更多便利。但云计算的出现使得市场对软件本身的性能需求更高,软件本身应具有高可用性(High Availability),要具有强大的数据存储以及处理能力,同时在安全性层面将面临更严酷的攻击挑战。

从微观层面,云计算本身与软件开发与测试人员的日常工作的关系更为密切。

1.云计算对软件开发人员的影响 

软件的发展过程从大体上经历了程序,软件产品和软件服务等三个阶段。早期的计算机系统以硬件为主,在硬件上搭配规模不大的程序,程序开发的流程较为简单,开发效率依赖于程序员的个人才智。随着计算机性能的提升和应用的扩展,软件的比重不断提高。无论是从规模还是从复杂程度上,都超越了个人的设计开发能力。工程化的设计思想及其相关的技术方法逐渐开始在开发中显得愈加重要。1968 年“软件工程”的概念被首次提出。

云计算技术成熟化后,面向服务的开发模式延伸出了云计算下的软件工程。其基本特性表现在以下方面: 

 (1) 构件的成熟度提高,软件的可复用程度得到提升。软件复用程度的提高一方面可以运用成熟构件模块减少软件开发错误,提高软件的可信性;另一方面则可以缩短开发时间,提高开发的绩效。云计算在这两方面同时具有的优势无疑为缓解软件危机带来了希望。

(2) 开发者面向业务应用,需求工程成为重点。在PaaS 的平台中,开发者有可能写很少的代码甚至不需要代码,而只需按照业务流程对平台中提供的各类资源进行设计和组织即可。这种模式下,需求与开发具有了同等的语境,同时需求在软件工程中的地位也将更加重要。 

(3) 云计算下的软件工程打破了软件开发商与用户的二元格局,第三方云计算中心的作用更加重要。云计算模式下的软件开发和运行环境基本上都是由云计算中心来架构的,这些资源按照开发者的要求进行配置。在开发者一端省去了硬件设施架构、运行环境调试等工作,只需一个浏览器和一些简单的工具就可以实施开发。开发完成之后的测试以及运行和维护也全部由云计算中心负责。 

这种三足鼎立的关系是传统软件工程中所不曾有的,这既改变了工程业务链也改变了商业价值链。云计算中心将开发者与用户联系起来,并且在软件体系中占据了重要的位置。这种情况将会是云计算推广后众多的中小企业所面临的问题,对于大型的软件开发企业来讲,则可以通过构建企业私有云来完成之一嬗变。但是这也将存在着巨大的技术、资金挑战。因此,公共云与私有云的软件工程将会并存发展,这也是比较现实的一种预测。 

2.云计算对测试人员的影响

在云计算环境下,由于软件开发工作的变化,也必然对软件测试带来影响和变化。

软件技术、架构发生变化,要求软件测试的关注点也应做出相对应的调整。软件测试在关注传统的软件质量的同时,还应该关注云计算环境所提出的新的质量要求,如软件动态适应能力、大量用户支持能力、安全性、多平台兼容性等。

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

软件产品表现形式的变化,要求软件测试可以对不同形式的产品进行测试,如Web Services的测试,互联网应用的测试,移动智能终端内软件的测试等。

云计算的普及和应用,还有很长的道路,社会认可、人们习惯、技术能力,甚至是社会管理制度等都应做出相应的改变,方能使云计算真正普及。但无论怎样,基于互联网的应用将会逐渐渗透到每个人的生活中,对我们的服务、生活都会带来深远的影响。要应对这种变化,我们也很有必要讨论我们业务未来的发展模式,确定我们努力的方向。

以当前的技术发展水平,云测试会在以下两个方面率先展开。

(1)提供测试环境。云测试提供彼此独立的测试环境,测试人员登录之后,运行自己的测试用例。这种服务对平台的要求较低,相关技术也已经成熟。

(2)提供测试运行服务。测试人员编写好测试之后,将其提交给云测试平台,云测试平运行测试并返回测试结果。例如,测试人员编写了一组Load Runner测试,他将该组测试与测试用例执行概率、虚拟用户数、网络连接配置等性能测试参数提交给云测试平台。云测试平台将测试部署到多台测试代理(Test Agent)上执行,最后生成性能测试报告。此类服务仍旧基于现有的成熟技术,虽然要集成多种工具,但实现难度不大。

虽然云测试具有众多的优点,但是云测试也同样存在着某些不足之处,具体体现在以下几个方面: 

(1)数据安全。用户的数据都是存在云环境中,这样不利于保护用户数据的隐私问题,对于用户信息的交互,数据在云环境的不同系统中使用,测试人员在测试这些问题的时候应该更加留意和小心来避免用户数据泄露的问题,这也是最重要的问题,来保障客户的权益。 

(2)多用户租赁。云计算是多用户租赁环境下的应用系统,多个用户共享一个实例化的应用实体及数据达到需求的目的,对测试而言也是一种极大的挑战。 

(3)并发问题。云服务可以快速地提供测试其他软件所需的资源和环境,但并不是所有的测试过程和场景都适合云测试框架,需要考虑系统、测试用例间相互的依赖关系。 

(4)兼容和交互性。云计算中的软件运行在多个不同环境中,那么相对传统的软件测试就很复杂,测试的环境很难得到把控,需要考虑“云”中软件和不同环境的兼容以及与其他“云”的兼容问题。

 

参考文献

1.李未《云计算与软件开发变革》2013年03月19日

2.浅谈云计算时代的软件开发技术

3.王钰.基于云计算的软件测试.现代计算机(专业版),2013-01-25 

4.孙礼强.基于云计算平台的软件测试策略.软件产业与工程,2012-09-10