首页 > 代码库 > 云计算对传统软件工程的影响
云计算对传统软件工程的影响
进入21世纪后,新兴的互联网应用如雨后春笋一般层出不穷,其发展速度之迅猛也带来了诸多运营管理上的难题,数据量的激增和用户群体的扩大使得传统模式下的公司力不从心。面对规模空前的计算需求,需要寻找一个能高效处理、交流海量数据,协同完成大型工作的方法。2006年,Google、Amazon等公司提出了”云计算“的构想,所谓”云“,即一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等等。云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。作为一种分布式计算技术,云计算之所以能解决庞大的计算需求问题,主要在于其对计算量的分解能力,它能将计算任务自动分割成无数较小的子任务,分配给子服务器,再经搜寻、计算分析之后将结果传回给用户。
在笔者个人看来,云计算相对于传统计算的一个重大区别在于资源的服务化与集中化,用户所需资源存放于共享资源池,它可以由任意用户访问以获取资源,也可根据用户特性自动分配资源,按照资源使用量等信息计费。这里提到的资源包括应用程序、数据存储、基础设施等。从某种意义上讲,云计算出现之前,不同用户都靠自家单台发电机发电,而云计算是发电厂集中供电,用户只需支付服务费用即可。因此,就像发电厂实现了电力的商品化,云计算则实现了计算能力的商品化。
那么回到题目上来,在云计算的大环境下,传统软件工程势必会受到一定影响,开发者们可以利用云计算的便利之处来改善软件开发过程。具体的变化则主要为以下几点:
(1)面向服务开发模式的出现
云计算为软件工程提供了丰富的可用资源,使得传统面向对象的开发模式得以进一步抽象为面向服务的模式,即将业务流整体分为众多子业务流,针对子业务流级别的模块进行组织设计。之所以将这一变化列在首位,是因为随后要提到的几点变化均与其有关。
(2)需求与开发的地位改变
云平台为开发者提供了现成的构件,已经完成的软件也可以成为未来软件开发中可用的构件,不论是某个模块还是软件架构,都可以为以后的开发所用,因此软件复用程度提高,不仅降低了软件错误率,开发者的代码量、开发时间和测试的工作量也随之减少。因此,软件工程的重心更加偏向于服务、需求,而在一定程度上偏离了开发,开发者在开发方面投入的精力减少,而更重视需求。开发者、服务提供者、用户之间不再界限分明,甚至可以是同一个人扮演着这三个角色。
(3)开发平台变更
传统软件工程的软件开发与运行环境都在开发者个人设备上,因此环境的调配、工程的交流与合并都较为繁琐。而云计算模式下,软件开发与运行环境建立在云计算中心,因此不再对开发者本地硬件架构、软件环境等提出要求,开发者只需与云端联网,再使用简单的工具就可以进行开发工作,之后的测试运行同样在云端进行。不过由此则会在用户与开发者之间引入第三方,即云平台,从而形成新的三足鼎立的利益链,这无疑是企业一方不愿意看到的结果,除非企业自行构建云平台,但难度较大。因此,这一模式短期内难以完全取代传统开发模式。
(4)开发灵活性增强
传统模式的软件开发过程中,通常需要先制定好一个完备的开发计划与部署,之后的开发过程按照部署进行,计划可能随开发实际情况有所调整,但不会有太大改动,这在一定程度上限制了开发的灵活性。而云计算下的软件开发,则不必遵循此模式,此时的软件部署、开发、运行管理、维护等过程都是并行的,不再有既定的先后顺序。当启动开发时,软件部署不需要很完备,它可能只规定了一小部分功能,暂时只需要针对这部分内容进行开发、维护等工作。随后软件部署逐渐更新,添加新的功能升级,其他工作也并行推进,使得开发过程的灵活性很大,可以在开发中途添加新的设计或改动,以获得更好的软件性能。这一灵活性得益于各环节之间的独立关系,即对软件客户端、服务端、管理端等构件采用并发、独立的构建与管理。
(5)用户操作的简化
正如之前所说,软件工程中的开发与运行环境均设置在云平台上。因此用户使用软件时的软件运行平台并非本地,而是位于云端。软件运行平台采用虚拟化技术,可根据用户的具体要求模拟相关虚拟环境,例如各类操作系统或浏览器等特定工具。用户无需关心这一虚拟系统的底层软硬件实现,在保证网络畅通的情况下,用户运行云平台软件的体验与本地运行的体验基本无区别。由于云平台对用户本地设备的软硬件配置没有特定要求,只需要能连接云平台,和开发者类似地,用户的操作也因此得以简化,以往用户使用软件需要经历安装配置等流程,而云平台已为用户做好此类工作,用户只需关注服务本身即可。
(6)开发组织社会化
笔者在介绍云计算时曾提到,云计算实现了计算能力的商品化。在软件工程领域,云计算为开发者与用户提供了一个庞大的综合性平台,其功能涵盖了开发、维护、管理、运行等涉及软件工程的各个方面。因此,软件开发的相关支持从过去开发者“自给自足”的方式中独立出来,成为了可以销售获利的商品。这一新型产业的出现能够优化社会分工,使得过去分散独立的软件开发组织社会化。开发者通过支付一定费用以降低人力及物力成本,如此则社会资源拥有更合理的分布方式,于双方和社会经济均有益处。
(7)开发人员大众化
云开发平台为开发者提供了完善的服务,不仅方便了有经验的开发者,同时也降低了开发软件的门槛。传统软件工程对开发者的硬软件成本均提出了较高的要求,使得独立开发者望而却步,而云平台提供现成的开发环境与构件,只收取一小笔费用,因此大大降低了资金和开发能力上的要求,新入门的开发者可以很快掌握软件工程的基本开发方法,在短时间内做出一定的成果。另一方面,通过云平台,软件用户也可对开发状态拥有更清晰的了解,能够参与到软件设计、开发环节中去。
(8)资源部署虚拟化
传统软件工程在开发之前需确定并准备好所需资源,然而预计资源很难做到与实际发展情况契合,随着开发进行,可能出现缺少资源或者资源过剩的情况。对于前者,可能由于无法及时补充资源而导致延误时间;后者则会造成成本的浪费。而云平台采取虚拟分配资源的方式,开发者可以灵活地更改所需的资源量,当所申请的资源过剩时可以请求收回,缺少资源时也可申请分配。这一过程对云平台而言,只需要调整部分资源的服务对象即可,省去了开发者人工添置资源的成本。
发电厂集中供电是工业与生活发展的重大进步,它也是随社会要求而自然诞生的产物。同样的,云计算的出现正是在计算资源需求量日益庞大的现状下应运而生的,作为软件开发资源与平台的提供者,它改变了传统的开发模式,形成了资源分配更加合理的产业链。不过目前云计算与软件工程的结合仍旧处于探索阶段,技术性、安全性和推广性这三方面仍旧存在局限,故在短期内还会继续保持多元模式并存的状态。不过相信未来云计算会在软件工程中扮演越来越重要的角色。
参考文献
【1】浅谈云计算时代的软件开发技术
【2】罗军舟,金嘉晖,宋爱波.云计算:体系架构与关键技术.通信学报.2011
【3】张勇.云计算环境下软件工程模式初探.2009
【4】史杰,解继丽,史少华.论云计算对软件工程的影响.昆明学院学报.2011
云计算对传统软件工程的影响