首页 > 代码库 > 云计算对于传统软件工程的影响
云计算对于传统软件工程的影响
云计算对传统软件工程的影响
传统软件工程的概念
传统软件工程采用的一是结构化泛型,基本阶段按顺序如下:需求阶段、规格说明阶段、设计阶段、实现阶段、集成阶段、维护阶段、退役等,这是一种适用于代码量适中的传统软件开发方式。
而随着社会进步与技术发展,软件越来越复杂,计算越来越繁琐,代码量也越来越大,存储和处理的信息越来越多,软件规模也越来越大。而传统的结构化设计方法在大规模的软件的开发组织和维护方面困难重重,软件的复用性能也不好。于是发展出了云计算的概念。
云计算的概念
云计算是以数据为中心的一种数据密集型的超级计算,是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均值、热备份冗余等传统计算机和网络技术发展融合的产物,在数据存储,数据管理,编程模式,并发控制,系统管理等方面具有自身独特的技术。云计算基于互联网的相关服务的增加、使用、和交互模式,通过互联网来提供动态易扩展且经常是虚拟化的资源。这是一种按使用量付费的模式,提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池,这些资源能够被快速提供,而只需要投入很少的管理工作,或与服务供应商进行很少的交互。云计算是通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统,这样的好处是由于不受本地资源的限制,客户端可以有更广阔的资源库。
云计算与其说是一项技术,不如说是一种服务,为来自四面八方的运用提供自己能提供的服务。云也可以为传统软件工程提供更加广泛的资源。
云计算对传统软件工程的影响
1. 软件架构的开放性
互联网时代,网络上的共享和开源达到前所未有的新高度。在此基础上,基于云计算开发的软件的开放性得到了极大的提高,软件结构的复用性也有了很大的提升。云计算可以提供成熟的软件体系,设计构架甚至开源代码,在分布式的计算模式下,可以被不同的“云下”开发者所使用,甚至是不同的软件开发团队之间。在软件即服务(SaaS)模式下,云计算抽象了传统开发和集成中的低端任务,提供了标准化的、即装即用的解决方案。在云端,我们可以找到很多构件作为我们要开发的软件的一部分,而这些构件会在不断的使用中改进,变得越来越成熟。同时,新开发出的软件可以作为以后要开发的更加复杂的软件的构件。
2. 软件对象的多样性
传统软件开发过程中,数据和方法是相互独立的。而目前最流行的面向对象开发方法却是将数据和方法结合,起来封装在一起。这种开发方法是从一开始人们在分析阶段就可以将对象提取出来,在设计阶段进行对比,从而进行程序实现,它的阶段之间的变化比结构化设计要平缓,从而减少了错误的数量,但是这样设计的对象存在不同开发者,不同软件之间的理解差异,实现方法低效而且有很大的局限性。云计算时代每个人都可以将自己构造的对象放到网络上,云计算提供商也可以提供成型的、多种多样的对象供开发者使用,不同的软件开发者对于对象的理解趋于统一,可以复用前人已有的经验,减少时间花费。
3.软件过程的动态性
软件开发过程中,项目所需的资源,比如开发人员、数据、设备和软件需求都可能是动态变化的。一个软件开发团队,可能会有正常的人事调动;软件的使用范围可能随着时间而不断扩大,甚至超出最初的设计;软件开发同时,设备也在更新换代。传统的软件开发需要一个严谨的流程,出现的变化可能对于开发产生巨大的负面影响,造成损失。而相比传统软件工程,基于云计算的软件工程不再是瀑布模型的,并发模型、多重螺旋模型将成为主流。在软件部署之后,每个阶段交付的都是中间版本,软件升级会变得越来越频繁。有任何变化,也可以随时改动,在下一版本更新或者上传到云里,软件开发的过程变得灵活。
4.开发组织的社会化
传统软件开发一般是一个开发团队,跟团队外的人交流很少,而且遇到人员资源的流动,通常是一个程序员走了,需要两个程序员去顶替他的位置,在开发者方面存在巨大的局限性。而在云计算模式中,人员流动并不存在影响,只要有一台能上网的电脑,就可以随时随地的开发并和团队交流,使得开发变得更加包容与开放。基于云计算的软件开发让用户放弃了对应用程序的部分控制权和自治权,将这部分控制权和自治权交由云平台运营商来掌握,这就意味着软件的组织管理不再仅仅是开发者的任务了,而是一个社会化团体的开发管理。
5.开发人员的大众化
软件公司的软件开发虽然具有优秀的组织管理机构,但是在开发人员上仍然有一定的局限性。一个公司的开发部门的人员,可能由于企业文化的影响等因素,存在一定的思想局限。而在云计算下,很多的模块设计可以从云计算提供商直接获得,只要筛选适合自己开发的模块就好。而不仅仅是一个公司的固定人员,他们也不用完成所有的任务,而可以在自己擅长的领域做出更大的成就。同时,软件开发的前期准备成本减小,人人都可以量力而行的租用云上的资源和设备,这使得商业化编程得到普及,人人都可以有一个安全稳定的开发环境实现自己的应用。
6. 资源部署的虚拟化
云计算是一种通过internet以服务的方式提供动态可伸缩的虚拟化资源的计算模式。计算资源虚拟化是云计算技术的核心,通过虚拟化技术使得上层的软件应用和底层的软件实现分离,由于资源都在云端,用户可以随时随地访问这些云端资源,而且是按照需求,用多少就买多少。这样就使得对资源的利用率达到了最大化,同时也使得程序能够永远保持在最高的运行效率。在云资源高度虚拟化的情况下,通过云计算的三种模式IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务),软件资源和硬件资源都可以通过云端轻松获得。软件开发更多的是需要考虑人力资源。
总结
云计算促成的软件工程的发展是否能成为破解软件危机的“银弹”尚不可知,但是它却在提高效率、降低成本等方面发挥出效力。虽然云计算技术还没有非常成熟,但是越来越多的人已经意识到云计算的好处。在云计算越来越普及的大环境下,软件开发模式必然要做出相应的改变。软件工程的传统开发模型以及有关技术势必在云计算的广泛应用下随之变革,更加多元化的软件工程开发模式和商业模式都将成为可能。云计算的发展,软件开发会进入一个全新的时代。
云计算对于传统软件工程的影响