云计算对传统软件工程的影响
在这个互联网时代,“云”的概念也被社会各界广泛认识,虽说人们不一定了解云和云计算的具体定义,但是至少大家都对此有所耳闻。在软件工程方面同样也不例外,云计算的广泛应用也对软件工程产生了巨大的影响。
首先,我们需要了解清楚云计算的定义:云计算是将IT 相关的能力以服务的方式提供给用户,允许用户在不了解提供服务的技术、没有相关知识以及设备操作能力的情况下,通过Internet 获取需要服务。总的来说,云计算是一种基于互联网的超级计算模式,它将计算机资源汇集起来,进行统一的管理和协同作,以便提供更好的数据存储和网络计算服务。
云计算架构
云计算的体系结构由5部分组成,分别为应用层,平台层,资源层,用户访问层和管理层。
1、应用层:应用层提供软件服务。
2、平台层:平台层为用户提供对资源层服务的封装,使用户可以构建自己的应用。
3、资源层:资源池层是指基础架构屋面的云计算服务,这些服务可以提供虚拟化的资源,从而隐藏物理资源的复杂性。
4、用户访问层:用户访问层是方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口。
5、管理层:管理层是提供对所有层次云计算服务的管理功能

云计算服务分为三层:
1、IaaS Infrastructure-as-a-Service(基础设施即服务):有IaaS,你可以将硬件外包到别的地方去。IaaS公司会提供场外服务器,存储和网络硬件,你可以租用。节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用。
2、PaaS Platform-as-a-Service(平台即服务):PaaS公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统。这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易。
3、SaaS: Software-as-a-Service(软件即服务):这一层是和你的生活每天接触的一层,大多是通过网页浏览器来接入。任何一个远程服务器上的应用都可以通过网络来运行,就是SaaS了。
云计算特点
云计算主要有以下五大特点:
1、支持异构基础资源:云计算可以构建在不同的基础平台之上,即可以有效兼容各种不同种类的硬件和软件基础资源。
2、支持资源动态扩展:支持资源动态伸缩,实现基础资源的网络冗余,意味着添加、删除、修改云计算环境的任一资源节点,亦或任一资源节点异常宕机,都不会导致云环境中的各类业务的中断,也不会导致用户数据的丢失。
3、支持异构多业务体系:在云计算平台上,可以同时运行多个不同类型的业务。异构,表示该业务不是同一的,不是已有的或事先定义好的,而应该是用户可以自己创建并定义的服务。
4、支持海量信息处理:云计算,在底层,需要面对各类众多的基础软硬件资源;在上层,需要能够同时支持各类众多的异构的业务;而具体到某一业务,往往也需要面对大量的用户。由此,云计算必然需要面对海量信息交互,需要有高效、稳定的海量数据通信/存储系统作支撑。
5、按需分配,按量计费:按需分配,是云计算平台支持资源动态流转的外部特征表现。云计算平台通过虚拟分拆技术,可以实现计算资源的同构化和可度量化,可以提供小到一台计算机,多到千台计算机的计算能力。按量计费起源于效用计算,在云计算平台实现按需分配后,按量计费也成为云计算平台向外提供服务时的有效收费形式。
与传统结构的对比
下面两幅图是传统结构和云计算架构的对比:


从以上两幅图可以明显看出,云计算将用于存储、计算与网络的单元放到了云端。明显对于开发人员所需的硬件要求可以大大降低。因此开发者对于硬件的需求大大下降,不再需要强大功能的机器进行开发,只需要保证一个够快的网速即可。在完成设计后让程序在云端运行即可,本地只需要接收结果和对代码进行修改等工作,可以大大节约成本。
对传统软件工程的影响
回顾计算机软件技术的发展,一个主要的趋势就是软件要处理更复杂的逻辑、更大规模的运算、存储并处理更多的信息。对于软件开发而言,当软件规模和复杂程度增大后软件问题就会增加软件危机实质上并没有解决,但可以设法回避或降低其影响,基本的思路就是降低系统的复杂性(云计算也是这个基本思路的产物)【1】。因此传统条件下在软件复杂度不断增加的情况下开发者所需的硬件条件也会不断上升,从而大大增加开发成本。而采用云计算的方式则可以有效回避这一问题。接下来,通过对照云计算的特点,我会对云计算对于软件工程的影响进行逐条分析。
1、支持异构基础资源:由于提供硬件和基础软件(如操作系统、数据库等)的是服务供应商,所以软件开发可以认为是在本地的一台虚拟机上进行工作。不仅如此,这台虚拟机的硬件配置是足够强大的,可以按照开发者的需要进行定制。而且在现实中,一款软件一般来说都是需要兼容多个不同的系统,利用云计算资源就可以同时在不同的操作系统或是机器环境下进行开发和测试,大大提升效率并节约了大量成本。
2、支持资源动态扩展:云计算环境支持动态伸缩,资源节点的变动不会导致整个虚拟机的宕机和数据丢失。这里的资源节点可以是计算节点、存储节点和网络节点。我个人认为,这样的功能在开发时可以十分方便的对开发中的软件进行功能的增删。开发组在开发时只需要将软件模块化,在查找问题的时候就能够针对某一模块进行改动而不会影响软件其他模块以及软件整体部分的测试,极大的降低了软件构件之间的耦合程度。软件的客户端、服务端、管理端等构件完全以并发、独立的方式部署和管理。并且可以使升级、测试和开发并发进行,有效地提升了开发的效率。并且在软件交付后,也可以根据实施用户的多少相应的添加或是减少资源,升级更新也会更加灵活。
3、支持异构多业务体系:在云计算平台上,可以同时运行多个不同类型的业务。用户通过自定义服务来达到自己的目的和完成自己的目标。云计算模式极
大的降低了软件构件之间的耦合程度,软件的客户端、服务端、管理端等构件完全以并发、独立的方式部署和管理。甚至软件运行的基础设施也可以在用户透明的方式完成升级换代和重新部署。开发者随时可以切换自己的任务和模块,极大地方便了软件的开发、测试、和维护。
4、支持海量信息处理:由于开发的软件放在了云端并能够支持大量的不同种类业务,因此软件在云端可以更好的进行并发处理。开发过程中,用户、开发人员之间不再有明确的角色划分。所有人都在云端进行操作,而且云端上也能够支持海量信息的处理,所以在大量用户使用的同时,软件开发人员也能够对软件进行实时的维护和升级,大大提高软件开发的并发性。
5、按需分配,按量计费:云计算技术可以让开发组成员根据自己当前开发的软件的需要自定义所需的硬件资源和系统软件资源,采用租用的形式,大大节省了购置机器的费用以及配置和开发环境的时间,而且开发组可以更好且更有针对性的对软件的开发环境进行定制,节约了成本,提高了效率。
总之,云计算是从互联网演变而来,云计算本质通过网络将计算力进行集中,并且通过网络进行服务,如果没有网络,计算力集中规模、服务的种类和可获得性就会受到极大的限制。软件开发工程也应当借助云计算这股“东风”完成自己的革新。云计算让软件开发能够进入云端,让软件的开发过程进入网络,从而大大提升自己的效率,减少成本,让更多的人都能参与到软件开发中来。
【1】张勇,云计算环境下软件工程模式初探【A】 北方自动控制技术研究所 太原
浙公网安备 33010602011771号