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

云计算(cloud computing),是分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。

云计算是一种资源交付和使用模式,指通过网络获得应用所需的资源(硬件、平台、软件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取。这种特性经常被比喻为像水电一样使用硬件资源,按需购买和使用。最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱等,使用者只要输入简单指令即能得到大量信息。未来如手机、GPS等行动装置都可以透过云计算技术,发展出更多的应用服务。进一步的云计算不仅只做资料搜寻、分析的功能,更可计算一些像是分析DNA结构、基因图谱定序、解析癌症细胞等。稍早之前的大规模分布式计算技术即为“云计算”的概念起源。

这样的模式有三个好处,第一,由于不受本地资源的限制,客户端可以有更广阔的资源库,可以说享有现有的所有种类的资源。第二,对于做云计算的企业来说伸缩性更好,如果市场需求大则投入更多,反之减少投入。第三,pay as you go,也就是你取多少付多少,再也不用想为了一个简简单单的事情而专门买一个服务器。

云计算,与其说是一项技术,不如说是一种服务,就像IT界的自来水公司一样,为来自四面八方的运用提供自己能提供的服务,对于传统软件工程也是如此,云可以为传统软件工程提供更加广泛的资源。云计算对软件工程的具体影响如下。

1.软件体系结构化

与传统的软件工程相比,基于云计算的软件工程的体系结构变得更加构件化以及开放性更大。在软件即服务(SaaS)模式下,云计算抽象了传统开发和集成中的低端任务,提供了标准化的、即装即用的解决方案。在云端,我们可以找到很多构件作为我们要开发的软件的一部分,而这些构件会在不断的使用中改进,变得越来越成熟。同时,新开发出的软件可以作为以后要开发的更加复杂的软件的构件。这样,软件危机可以在一定程度上得到缓解。在这种软件开发模式下,软件的体系结构基本上是完全处于分布式的,一个软件由客户端、服务端、管理端、开发端、测试端等各个不同的构件有机结合,也就是说,不同的软件完全可能享有共同的构件,这也使得应用之间没有了严格的物理边界。

2.软件对象的多样性

云服务和云计算已经吸引了工业和科研界的注意,由于他能够使合作研究开发,电子商务,健康护理,网格应用,企业计算设施,军用应用和国家网络安全这样的大型分布式系统应用的快速发展成为可能。

 事实上,有四种云的类型,公共云,私有云(只提供服务给独立组织的用户),一个组织云提供服务,和一个混合云(上述三种的任意组合)。云计算结构有三个层级,software as a service(SaaS), platform as a service(PaaS), and infrastructure as a service(IaaS).如图1.开发者可以实施任意层级作为服务。应用开发者能用服务计算,云计算,或者二者的结合。二者的结合会很大程度上减轻了软件开发架构中的挑战。比如,服务计算的一个主要挑战就是去管理QoS的松散对应的服务(包括分布式服务提供者)。云计算能够通过虚拟化和资源分配来解决。

3.软件动态开发

与传统软件工程相比,基于云计算的软件工程不再是瀑布模型的,并发模型、多重螺旋模型将成为主流。在软件部署之后,每个阶段交付的都是中间版本,软件升级会变得越来越频繁。随之而来的,是软件开发过程的高度并发状态和高度动态性。由于软件开发所需的构件和资源都在云端,软件开发的过程变得更加灵活,对于一个应用,软件部署、运行管理、维护和开发过程都是并发的,因此也就可能会出现这种情况:第一次软件部署可能只是一个很简单的功能,由于云计算大大降低了软件构件之间的耦合程度,在软件开发各个过程并发进行的情况下,软件可能在很短的时间只能就可以升级到可以实现很复杂的功能,而且这个发展方向的容错性很强。

4.开发人员的大众化

   云的普及使开发者不再只是有工作的技术人员,业余爱好者或者其他行业的从业人员也可以参与自己感兴趣的项目的开发工作之中。最著名的例子就是github,在一个软件工程的实施过程中,不仅同组内的人员可以随时更新其他人负责部分的代码,如果这个项目很有价值,还会吸引各路大牛的挑错和指导。一些初学者的门槛也变低了,可以通过阅读其他人的代码来学习技巧,开发人员逐渐的平民化,大众化。       

5.软件开发更加简单

在传统的软件开发过程中,程序员的编程能力极为重要,只有很好的编程能力才能对不同需求提出解决方案。但在基于云计算的软件开发中,几乎所有解决方案都可以在云端找到,因此编程能力似乎显得不是那么重要了,而更重要的是如何来更好的构建和布置自己所要开发的应用程序。用户、开发人员之间不再有明确的角色划分,在一定情况下,软件开发者、服务提供者和软件使用者可以是同一个人,而软件开发工具由云计算服务商提供,软件开发者只需要在开发周期内向服务商支付一定的软件服务费用即可。在这样的大环境下,人人都可以是开发人员。

6.资源虚拟化

    维基百科对云计算的定义是:云计算是一种通过internet以服务的方式提供动态可伸缩的虚拟化资源的计算模式。可以看到,计算资源虚拟化是云计算技术的核心,通过虚拟化技术使得上层的软件应用和底层的软件实现分离,由于资源都在云端,用户可以随时随地访问这些云端资源。现如今的软件开发,资源一般有人力资源、软件资源和硬件资源,在云资源高度虚拟化的情况下,通过云计算的三种模式IaaS(基础设施即服务)PaaS(平台即服务)SaaS(软件即服务),软件资源和硬件资源都可以通过云端轻松获得,对于软件开发者来说,剩下要考虑的资源只剩下人力资源。

当前在云计算越来越普及的大环境下,软件开发模式必然要做出相应的改变,这种改变很可能会大大缓解软件危机,然而并不能彻底杜绝软件危机,当然完全解决软件危机也是不大可能的。但可以肯定的是,随着云计算的发展,我相信软件开发会进入一个全新的时代。

   总结:云计算的成长已经大大的促进了信息时代的发展,无论是开发者还是普通用户,都从云服务中受益,并且带动了很多企业和业务的发展。对于软件工程来说,云计算的出现为开发者提供了很多遍历,无论是节省了开发时间,还是更方便的访问接口和环境配置,都能够极大的促进技术发展!

转载于:https://www.cnblogs.com/dx14061170/p/5985198.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值