首页 > 代码库 > 云计算对传统软件工程的影响
云计算对传统软件工程的影响
云计算对传统软件工程的影响
目录
云计算对传统软件工程的影响... 1
云计算... 1
传统软件工程... 1
软件架构的开放性... 1
软件对象的多样性... 2
软件过程的动态性... 2
开发组织的社会性... 2
开发人员的大众化... 3
资源部署的虚拟化... 3
综述... 3
云计算
云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。之前在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让人们体验到每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。
云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
传统软件工程
进入上世纪六十年代之后,人们逐渐认识到确实存在着“软件危机”这样的事实。表现在许多方面上。例如:软件生产不能满足日益增长的需要;软件开发成本和开发进度估计往往不准确;软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很低;软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软件已经成为许多计算机系统中花钱最多的项目;软件质量很难保证;软件可维护性差,程序中的错误很难改正,适应性或完善性维护都极其困难。
这些“危机”问题的重要原因,就是软件研制和维护本身就是工程性的任务,然而软件人员采取的方式却是未能工程化,为了克服软件危机,人们就得考虑采用工程化方法和工程途经研制和维护软件。
于是上世纪60年代末到70年代初,逐渐发展起来了称为“软件工程”技术,这些技术把软件作为一个工程产品来处理:需要计划、分析、设计、实现、测试以及维护。
软件工程学主要研究软件结构、软件设计方法论、软件工具、软件工程标准和规范、以及与软件工程有关的理论。
软件架构的开放性
软件的架构通过云计算得到极大的共享和传播,在不同的开发者之间可以很方便的进行资源的分享。从软件工程的开发计划、需求规格说明、软件的结构设计说明到软件测试说明,相似的工程之间可以进行参考借鉴而无需自己再重新从头干起,这将会节约很多的成本。而且,在资源的共享过程,也是思想的火花碰撞的过程。
在工程的具体实现过程中,难免就会有相似功能的部件,开发人员就可以直接拿来使用,测试维护过程中的相似的问题也会出现,有了前车之鉴,开发人员就可以在升级之初解决很多问题而不会在测试甚至是使用过程中大费周折,相信这在开发过程中会节约很大成本。而在此基础上经过很多工程的开发的积累之后,相信软件开发的档次会提升到一个很正规的轨道上。或许由此可以催发出新的有效的设计模式和框架,或将对日后的开发者有新的启迪。
软件对象的多样性
软件的具体实现过程必然会使用面向对象的代码风格,这样就意味着在实际的代码层次的实现过程中,会有些类的细化功能和属性上是有极大的相似度甚至是完全一样的,亦或是软件的接口,在此基础之上开发人员可以添加个性化设计进行新的功能的添加完善。这样的话,新的开发者就可以在前人的基础上进行进一步的开发设计,节省大量成本,然后对同一类所实例化出的对象,将会有多种的属性方法。
当然对此的要求就是要还得写好各项的规格说明,这无论是在在工程的开发维护上还是在工程的共享上都是很有价值的,尤其是在一个团队里的交流合作方面,规格说明的重要程度尤显一般。从工程的维护,团队的协作,到项目的传承,规格说明书都将会是不可替代的重要环节。
构件的成熟度提高,软件的可复用程度得到提升。软件复用一直是提高软件开发效率克服软件危机的重要途径,而构件可以在更高抽象层次上实现大粒度的软件复用。软件复用户的提高一方面可以运用成熟的构件模块减少软件开发错误,提高软件的可行性;另一方面则可缩短开发时间,提高开发的绩效。
在云计算的模式下,软件工程在面向对象的基础上会有进一步抽象化提升到面向服务的层次,就是将业务流整体分成子业务流,对子业务级别的模块进行组织设计,并最终形成软件系统整体。面向服务使软件在IT系统结构层次结构系统中更加接近应用。
软件过程的动态性
在软件的开发及使用过程中,维护更新是从开始到软件寿命终结过程中都不可缺少的环节。工程在没有对外发布公开的时候就会受到测试者多样而全面的测试,这就意味着,正常情况下对外公开的工程都将会是在常态功能上没有什么重大问题的。然而随着软件的实际使用,不可避免的会有多种多样的问题暴露出来,或者是本来就有但是不影响主要功能的使用,随着公布时间变长,有足够的时间完善和解决一些功能或者问题。这就是我们在使用客户端的时候经常遇见的更新软件的现象。
不过这样的动态化进行之后,在积累下很多经验之后,后来的项目会少走很多弯路,对于软件开发的发展是极有益处的。
开发组织的社会性
云计算下的软件工程打破了软件开发商与用户的二元格局,第三方云计算中心的作用更加重要,云计算下的软件开发和运行环境基本上都是由云计算中心来架构的,这些资源按照开发者的要求进行配置。开发者一端省却了硬件设施架构、运行环境调试等工作,只需一个浏览器和一些简单的工具就可以实施开发,开发完成之后的测试以及运行和维护也全部由云计算中心负责。这种三足鼎立的关系是传统的软件工程中所不曾有的,这既改变了工程的业务链也改变了商业价值链。
开发人员的大众化
随着计算机的普及,越来越多的人有了能够进行编程完成工程项目的基本条件。而云计算的出现也给了普通大众越来越多的资源使之能够在基本的需求条件满足之后动手实现自己的完整的工程。且在云计算的基础上,还可以省却很大的资金而不用去部署有关的配件。这就能把开发成本极大的降低,从而使越来越多的人能够开发的起工程。
资源部署的虚拟化
资源的部署和维护整修及更新换代都是需要成本的,这也都得有相应的工作人员去做,人力成本花销也不小。在云计算的模式下就会格外不同了。很明显,维护和整修的费用没有了,管理难度和工作量将会降低很多。尤其是当遇见紧急情况的时候,迫切需要增加一些资源的时候,虚拟资源可以更为方便的添加进去。
综述
总的来说,云计算的出现是对传统软件技术的一次大的变革。在新兴的云计算的冲击下,软件工程模式将会迎来一次大换血,并能得到快速发展,软件开发的成本会随之大幅度降低。在云计算的广阔平台上,软件的开发会变得更加便捷而有效从而获得长足。
云计算对传统软件工程的影响