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

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

说起云计算对于传统软件工程的影响,我们当然首先需要了解这两个概念。

一、传统软件工程

首先是传统软件工程,了解传统软件工程其实就是了解软件工程的历史,早期的计算机系统以硬件为主,程序员在早期的计算机上通过比较复杂的操作来运行比较简单的程序,程序的规模一般不会很大。但随着计算机硬件的不断发展,计算机系统的性能也越来越强,在上面运行的软件规模也就越来越大。到了上个世纪六十年代,“软件危机”这一事实逐渐被大家所认识,这其中的具体问题包括:软件生产难以满足用户日益增长的需求、软件开发者与用户交流不充分、软件质量难以保证、软件维护不当等问题。我想这样的问题的出现原因应该主要是以下原因造成的:软件规模越来越大,小型程序的开发可能还不需要特定的方法和原则,但规模大起来的话,没有明确的开发原则,工程化方法作指导,就会使杂乱无章的软件开发造成越来越多的问题。

于是1968年首次提出了软件工程的概念,软件工程强调可维护性,强调文档化、强调软件生命周期系统化。软件工程的提出也让软件开发的研究成为了一个独立的领域,和硬件研究区分开来。软件开发的一般流程为分析、设计、编码、运行、维护五个步骤。虽然在几十年之间软件工程的各种新的开发思想不断被提出,但是大的格局并没有改变。

 

二、云计算

接下来我们要说说云计算。在维基百科中,云计算被定义为一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常是虚拟化的资源。服务分为以下模式:

基础设施即服务(IaaS):是消费者使用处理、储存、网络以及各种基础运算资源,部署与执行操作系统或应用程序等各种软件。

平台即服务(PaaS):提供运算平台与解决方案堆栈即服务。平台即服务使用户能将云基础设施部署与创建至客户端,或者借此获得使用编程语言程序库与服务。用户不需要管理与控制云基础设施,包含网络、服务器、操作系统或存储,但需要控制上层的应用程序部署与应用托管的环境。

软件即服务(SaaS):在这种软件交付模式中云端集中式托管软件及相关数据,软件仅需透过互联网,而不需安装即可使用。

 

说白了,我认为这三种服务分别为三个层次。如果把软件开发比喻成做一个拼装玩具,那么我们至少需要零件和改锥、钳子这样的工具。于是为我们提供基础运算资源等资源的基础设施即服务就像是为我们提供了零件和工具,我们需要自己去完成所有的安装工作。

但是,也有人不愿意从第一步开始安装,但也不愿意直接买来已经组装完毕的玩具,因此有的时候他们会选择买来半成品进行安装。这时候,在玩具分为几个模块的情况下,如果销售玩具的人事先将几个模块组装好,然后进行销售,这样就能满足这类人的心愿。这类服务就很像平台即服务(PaaS),提供了所需的平台。

当然,还有些人并不想做任何安装工作,只想拿来就用,那么这种人买玩具的时候只要买现成的就好。因此有时销售者也会贩卖已经组装好的玩具。这类玩家就好比接受软件即服务(SaaS)。

三、关于云计算的出现对于传统软件工程的影响

       了解了云计算是什么,传统软件工程是怎么回事,我们如何去分析云计算究竟会给软件工程带来什么呢?我想我们最重要的事情是分析云计算的出现目的是什么,这些目的所作用的对象和软件开发有什么样的关系。

       1、我想我们都能想到的一点是:软件开发成本的降低。以前在没有云计算的概念的时候,开发软件所需要的所有硬件都必须要由公司自己来购买,如果需要硬件有很高的运算能力的话,还必须要花大价钱来购买高价的硬件。除了硬件之外,工具软件、软件许可证也都需要公司不小的开销,更何况软硬件一般都需要定期进行维护,这又是一笔不小而且需要公司长期进行承担的开销。而这些问题,这些思之令人感到头大的开销,在有了云计算这一概念之后,必将得到极大地缓解。

       2、软件安装的困难也会减少很多。我想大家都很清楚,工具软件的安装,环境的搭建,有时很简单,有时却非常麻烦,会耗掉很多时间,有时工具软件还会有开发者事先不知道的问题。这些都会使得软件开发程序员浪费掉大量时间和精力,情绪有时也会受到很大影响。而有了云计算的软件即服务(SaaS)之后,软件开发者并不需要安装软件就可以使用。

       3、硬件的利用效率也会有很多提高。很多时候我们自己买来硬件,自己进行管理调度的效果会比较差,使得程序运行的效果也会比较差。而云计算恰恰又帮助我们解决了这一问题,我们无需自己进行硬件的调度和管理。

       4、软件的复用程度也会提高。云中的软件是被不同开发者所共有的,因此不同开发者都在用这同一个软件,而不是不同的开发者每人装了一个这样的软件,因此被共用的软件被使用的次数自然也就得到了很大的提高。在提高的同时,软件自身存在的问题也更容易被发现,因此软件值得信任的程度也更高。而可信性这一点对于软件开发的效率提高也起着非常大的作用,根据国内著名PaaS提供商800APP 提供的信息,云计算模式下开发时间可以缩减1/3~1/10。绩效与可靠的矛盾关系一直是软件危机的根源所在,云计算在这两方面同时具有的优势无疑为缓解软件危机带来了希望。

       5、不仅仅是数量,我相信软件的质量、以及用户的满意程度也会得到非常大的提高。为什么这么说呢?因为在有了云服务的情况下,特别是在有平台即服务、软件即服务的情况下,很多原先在软件开发的过程中需要开发者自己动手去写的底层很琐碎的代码现在直接拿来用即可。这显然就为软件开发者争取了更多的时间来思考如何设计整个架构才能更好地满足客户的需求,而不是纠结于无尽的小bug的调试中。同时,由于不再像过去那样需要开发者有非常强的调试能力,因此会有更多人能够胜任开发者的工作,人手的增加也会提高软件的开发速度。因此从这个角度也能得出云计算加大软件开的的效率的结论。

       6、最后,我还发现,开发商和用户的二元格局被打破,变成了开发商——云计算中心——用户三元格局。这可能是不多的对于软件开发商不利的一面。因为大量的计算和服务工作交给了云计算中心,用户所出的酬劳就必然要拿出相当一部分来给云计算中心,从而使得开发商的地位下降。因此我想对于开发商来说,最重要的事情是抓住所有云计算中心提供的便利因素,尽最大可能提高开发速度,从而在和以前相同的时间内能够完成更多的项目。当然,这样有可能反而加大了开发者的压力和负担,因此如何把握这一尺度,在我看来是一个相当困难,值得好好研究的点。

 

四、小结

       我们现在可以知道,在云计算的影响下,软件开发的效率、质量都会有很大的提高。但所有的失误都有两面性,云计算也会打破原先的两极格局,使得开发商对其是一种“爱恨交织”的想法。不过,我想传统的软件工程开发流程中,虽然很多步骤的实现都会比原先方便很多,但大的步骤还是那些,并没有因为云计算的出现而有哪一步消失,因此我认为云计算不会成为打倒传统软件工程的“银弹”。

 

参考文献:

史杰,谢丽君,史少华.《论云计算对软件工程的影响》.昆明学院学报,2011,33(6):67-68

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

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