标签:
在计算机领域,摩尔定律一直是信息计算能力发展速度的标尺。即相同成本下,性能每18-24个月就会翻一倍。然而,人类物理认知的限制可能在不远的未来限制摩尔定律的威力,硬件性能可能按现在的速度无限制的进步。在各方努力寻找解决方法的洪流中,云计算应运而生。
所谓云计算,在学术领域有如下认知,①在云上提供海量 数据存储;②有无数的软件和服务置于云中;③它们均构筑于 各种标准和协议之上;④数据、软件和服务可通过各种设备获得。在云计算的时代,似乎信息世界已经从以硬件性能为核心逐步转移到以软件乃至服务为核心的时代。在云计算所畅想的未来中,用户终端甚至不需要下载安装软件,通过web服务就可以实现想要的一切服务。历史告诉我们,每当新的技术诞生时,都必然会和旧的技术冲击直至融合,本文即从云计算和传统软件工程着手,来分析软件工程面对云计算,将会产生怎么样的变化。
传统的软件工程,作为一项相对完善的技术手段,已经实现了软件开发的流水线化。编写者们按照一定的规则一步步程式化的执行即可以完成软件的开发。然而,云计算概念的提出以及实践似乎将要打乱原有的形式,本文将从如下七个角度阐述所谓云计算对传统软件工程将会带来什么样的影响。
1、 软件架构的开放性。
云计算技术的兴起与实施,带来的第一个无与伦比的大变化就是极大的开放性。基于
云计算的软件体系架构可以轻松而便捷的采用现有的架构完善自身软件的开发。同时,大量的开发者所新研制的软件又会回归云中,成为后来者软件开发架构的参考。这是可以想见的以及必然的,因为云计算的一大理念就是大量的软件与服务置于云中,通过一系列的标准以及协议,大量的基础软件服务将被云的维护者提供,用以辅助开发者进行更大规模,更复杂的应用软件系统,实现更便利的软件开发工作。同时,云计算通过现在已经非常成熟的虚拟化技术,可以更大的拓展开发者的选择范围,开发者无需太多考虑所需要的开发环境,这更加突出了云计算时代软件架构的开放性。
2、软件对象的多样性。
面向对象的开发技术,在如今已经非常深入的渗透到了软件开发行为的各个角落,通过这项技术,开发者能够更好的模拟现实世界。而且更为喜人的是,一般来讲,面向对象的设计方法的代码复用性高于面向过程的程序设计模式,前者可以在抽象的模块层次上进行复用,而后者则更多局限于细节代码段的复用。在云计算的时代,这种复用性的优点被大大的凸显了出来。大量的封装好的代码块被储存在云端,开发者可以全身心的着眼于需求的分析与满足,利用云端已有的代码段,开发者甚至无需编写太多的代码段就能完成自己想要的需求。同时,也会有更多的对象被云端采纳,用来满足更多的开发需求。软件对象的多样性,必然会对软件工程产生深远影响。
3、软件过程的动态性。
在传统的软件工程想来,软件的开发流程是相对静态的,大体上呈瀑布式模型,流水线般的发展,到某个时间就该完成某项内容。软件的各个部分之间耦合度较高,导致灵活性较低。而在云计算的时代,软件的开发部署运营等等都具有非常大的灵活性。并发模型与多重螺旋模型将会一定程度上的替代瀑布模型和迭代模型。软件的生命周期模型将从严苛的串行模式向并行靠拢。软件的开发过程将会随着需求的变化产生变化,这将极大的提高软件过程的动态性。
4、开发组织的社会化。
云计算依赖于网络技术的发展,同时又会反作用于网络上。通过云计算的发展和普及,软件的开源以及部分开源将会越来越受到欢迎。软件的开发流程也可以像传统工业一样一个一个零件的开展。一个软件可以由多个开发小组协同发展,它们的开发成果在云端实时同步,一个小组开发一个部分,完成跨空间甚至跨时间的开发活动,更加有效的利用社会上的技术资源,实现软件开发行为的社会化,甚至全球化。
5、开发人员的大众化。
正如整个软件开发的历史一样,软件开发的门槛在不断的降低。从仅有专业人员才能驾驭的机器码,到现在各种高度抽象的高级程序语言。软件开发这个行为在不断的向着需求与服务靠拢。云计算技术的出现,会更加加剧这个趋势的发展。对于人而言,按照一定的规则去拼接几个模块总是要比从零开始开发要简单的多。在云计算提供的强大资源之下,开发人员的大众化将成为必然的趋势。
6、资源部署的虚拟化。
在云计算的时代,对于开发者和用户,硬件的概念将越来越模糊。基于云计算开发的程序尽管在逻辑上泾渭分明,可在物理结构上可能会有千丝万缕的联系。应用之间会共享大量的公用软件构件,以至于它们的物理界限愈加的不清晰。开发者和用户只需要关心服务,而更少的关心具体的计算,存储等等资源。况且,正如前文所说,云计算的兴起与当今虚拟技术的完善有很大关系。通过虚拟化技术,各种不同平台的资源都会为云端提供支持,完成云计算资源部署的虚拟化。
7、潜在的风险。
和所有的新兴技术一样,云计算技术作为新出现的技术,对于软件开发行为可能产生潜在的消极影响。首先,从成本上来说,虽然总体上来看云计算技术的使用与推广将极大的降低开发者群体的开发成本,中小型开发团体尤为收益。然而云计算技术的特点却注定推广者将会承担不小的负担。他们不仅需要建立大量的云计算基础设施,还需要制定相应的规则与规范,短期投入是巨大的。其次,云计算技术在现今不完善的情况下不可避免的要注意安全问题,在传统的软件开发运营环境下。一组服务器的瘫痪仅会在一个服务上带来影响。然而,在云计算的时代,大量的数据,服务,群集于云端,一旦云端瘫痪或数据泄露,将会产生极其严重的连锁反应。最后,鉴于现今云计算的应用还处于起步阶段,各厂商云的标准化程度依然低下,现在的选型不当可能会在未来产生相当严重的后果。不过,任何新事物出现都会伴随着风险,我们不能因噎废食因为害怕风险而延误了大好时机。
总结:
尽管还不是很成熟,但云计算所带来的种种好处却是实实在在的吸引着广大开发者们,可以预见的是,在不远的将来,如果使用得当,这项技术将对软件开发这项人类行为产生极为深远的积极影响。
参考文献:
《云计算环境下软件工程模式初探》 张勇 全国软件测试会议与移动计算、栅格、智能化高级论坛, 2009
《论云计算对软件工程的影响》 史杰,解继丽,史少华 《昆明学院学报》, 2011, 33(6):67-68
《wikipedia 云计算》
《云计算现状与发展趋势分析》 胡慧,王辉http://www.rjdk.org/qikan/manage/wenzhang/2009-09-001.pdf
标签:
原文地址:http://www.cnblogs.com/tybz9000/p/5982230.html