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

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

引言

  近年来兴起的云计算是计算机技术的创新,它是一种以网络为载体共享软硬件资源和信息的新型资源利用模式和服务模式。云计算的兴起为软件开发提供了便利,也在一定程度上促进了软件工程领域的发展。本文将围绕云计算、软件工程以及前者对后者的影响这三方面展开讨论。

 

了解云计算

  云计算(Cloud Computing)是一种分布式计算技术,总结起来就是以虚拟化技术为基础,以网络为载体,以用户为主体为其提供基础架构、平台、软件等服务为形式,整合大规模可扩展的计算、存储、数据、应用等分布式计算资源进行协同工作的超级计算服务模式。

  云计算的服务可以分为基础设施即服务(Infrastructure as a Service,IaaS)、应用平台即服务(Platform as a Service,PaaS)以及软件即服务(Software as a Service,SaaS)三个类型,即分别将基础设施、平台和软件作为服务层向用户提供服务。

  基础设施即服务就是通过网络提供按需付费的虚拟化弹性基础设施服务,典型代表如亚马逊云计算AWS的弹性计算云EC2和简单存储服务S3,IBM蓝云等;平台即服务是要把客户用供应商提供的开发语言(如Python、Java、.Net)创建的应用程序部署到云计算基础设施上去,典型代表如Google APP Engine(GAE),其允许客户使用Python和Java语言,基于称为Django的Web应用框架调用GAE来开发在线应用服务;软件即服务是指通过Internet提供软件的模式,无需用户购买或维护软件,而是租用服务商运行在云计算基础设施上的应用程序,典型代表有Salesforce公司提供的在线客户管理服务(CRM),Zoho Office,Webex等。

  关于云计算的内容还有很多,比如云计算除了有上述三种服务模式,还有四种部署模式(私有云、社区云、公共云、混合云)以及五个主要特征(按需自助式服务、广泛的网络访问、资源池、快速弹性使用、可度量的服务),这里都只做了解,不再展开。总而言之,云计算是一种可以通过互联网按需访问资源池模型,为用户提供各种各样的服务的方便的服务模式。

 

软件工程发展历程回顾

  20世纪60年代,由于高级语言的流行,使得计算机的应用范围得到了较大的扩展,对软件系统的需求急剧上升,从而产生了所谓的软件危机(即软件开发从质量、效率等方面都不能满足应用的需求或是为了满足需求导致软件产品过于复杂,以至于开发组织难以控制)。为了解决软件危机这一问题,1968年在NATO会议上首次提出“软件工程”这一概念。

  20世纪60年代末到70年代中期,在一系列高级语言应用的基础上出现了结构化程序设计技术,并出现了一些支持软件开发的工具。

  20世纪70年代中期到80年代,计算机辅助软件工程(CASE)成为热点,出现了一些对软件技术发展具有深远影响的软件工程环境。

  20世纪80年代中期到90年代,出现了面向对象语言和方法并成为了主流的软件开发技术,开展了软件过程及软件过程改善的研究,开始注重软件复用和软件构件技术的研究和实践。

  随着全球化软件产业发展更迭,在市场竞争压力下,软件工程发展趋势正向模块化、开放计算、合理的开发治理、全球化软件协作交付等方面发展。

 

云计算时代的软件工程

  云计算下的软件工程主要具有以下特点

软件架构的开放性

  应用软件支撑平台为开发者提供业务软件开发所需的业务接口和公共基础处理的支持。由于构件成熟度的提高,软件的可复用程度得到提升,开发者面向业务应用,架构设计基本可以从已有的成熟架构模式中选型确定,详细设计可以借用大量的成熟构件和代码,有可能只写很少的代码甚至不需要代码,而只要按照业务流程对平台中提供的各类资源进行设计和组织即可。随着软件复用程度的提高,软件测试的工作量也将大大降低。

软件对象的多样性

  云计算应用软件体系结构呈分布式,由客户端、服务端、管理端、开发端、测试端等多种软件构件有机集成,多种应用共享公共软件构件。利用云计算成熟的虚拟技术,还可以在客户端可以产生多种虚拟环境,如Windows、Linux,甚至是浏览器等,用户可以根据自己的喜好选择;在服务器端,可以把大规模的服务器系统虚拟化为单一处理单元和连续的存储单元,降低用户端的管理复杂程度。

软件过程的动态性

  传统软件工程的软件生命周期模型是串行的,本质都是瀑布模型的变形,这样的生命周期模型更易于控制,可以保证在确定的时间有确定的结果。云计算环境下软件工程的软件开发生命周期模型多为并发模型和多重螺旋模型,瀑布模型和迭代模型的使用越来越少,在软件部署后,交付的都是中间版,软件升级成为常态。

  云计算给软件部署、运行管理和维护带来了高度的灵活性,对于一个特定的应用,软件部署、运行管理、维护和开发过程是并行的,第一次部署的可能只是一小部分功能,在随后的软件升级中不断完善。

开发组织的社会化

  云计算在更大范围内规范了SQA体系,是多种应用共享基础设施,采用了虚拟化手段提高了软件复用和重新部署的效率,尤其由专业机构完成公共服务软件、基础设施的开发和维护,优化了社会分工。

  在网络环境下,软件开发从封闭的计算机平台走向互通、互联、协作的网络平台环境。网络不再仅仅具有信息传递的功能,而开始拥有运算和服务的能力。网构软件已经成为了将来软件开发的主要趋势,其特征主要是自主性、协同性、演化性等。

开发人员的大众化

  开发过程中,用户、开发人员之间不再有明确的角色划分,通常情况下,在不同阶段,软件开发者、服务提供者、软件使用者多种角色是同一个人。云计算中心将开发者和用户联系起来,成为软件体系重要的一部分。

资源部署的虚拟化

  云计算的核心是虚拟化技术,使用虚拟化技术可以在内部建立多个虚拟机,对于软件系统的构建管理有着非常巨大的帮助。云计算模式下的软件开发和运行环境基本上都是由云计算中心来架构的,这些资源按照开发者的要求进行配置,在开发者一端省去了硬件设施架构、运行环境调试等工作,只需一个浏览器和一些简单的工具就可以实施开发,开发完成之后的测试以及运行和维护也全部由云计算中心负责。

 

结语

       云计算的产生,使软件工程所面临的环境开始从静态封闭逐步走向开放、动态和多变。虽然云计算能否成为破解“软件危机”的银色子弹尚不可知,但它确乎已经在提高效率、降低成本等方面极大地促进了软件工程的进步,而软件工程中传统的开发模型以及其他相关技术也必将在云计算的推动下进一步地变革。

 

参考文献

  [1]方巍,文学志,潘吴斌,薛胜军  云计算:概念、技术及应用研究综述 2011

  [2]张勇 云计算环境下软件工程模式初探 2009

  [3]史杰,解继丽,史少华 论云计算对软件工程的影响 2011

  [4]杨芙清 软件工程技术发展思索 2005

posted @ 2016-10-23 22:03  李康宇  阅读(312)  评论(0编辑  收藏  举报