云计算对软件工程的影响

 

 

要说云计算对软件工程的影响,首先来了解了解云计算。

 

云计算,是一种基于互联网的计算方式,是以数据为中心的一种数据密集型的超级计算。云计算强调按需使用、动态调配、弹性扩展的理念,以用户的需求为原则进行资源的组织和交付。通俗来说:云计算改变了信息服务的提供方式,所谓的”云”其实是指分布在Interact中的形形色色的计算中心,包含成千上万甚至几十万、几百万台计算机或服务器。用户不再购买高性能的硬件,也不再购买或开发各种功能的软件,而是使用任何可上网的设备,连接”云”,利用”云”提供的的软件或服务,直接在”云”上处理并存储数据。因此“云”中的资源在使用者看来是可以无限扩展的,并且可以及时获取,随时扩展和缩小,按需使用,按时收费。

 

云计算分为三种主要类型:基础设施即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。

 

三个层次中基础架构即服务(IaaS)为用户提供基本的计算和存储能力,通过虚拟化和智能化技术自动为用户分配计算和存储资源。具体来说就是:IaaS将基础设施——计算资源和存储——作为服务出租,代表了一种作为标准化服务在网上提供基本存储和计算能力的手段。IaaS是作为服务计算的最原始的形式来提供服务的。

 

平台即服务(PaaS)和软件即服务(SaaS)则是面向软件资源,两者在一定程度上存在着关联。IaaS之上的服务是平台即服务(PaaS)。PaaS提供一个完整的虚拟平台,它包括一个或多个服务器(在一组物理服务器上虚拟而成)、操作系统以及特定的应用程序(如支撑基于Web的应用程序的Apache和MySQL)。PaaS是一种无须下载或安装,即可通过互联网发送操作系统和相关服务的模式。云计算应用的开发平台也可作为一种PaaS提供,用分布在不同地区的开发团队可以共同完成某些软件的开发项目,使用者也能够从不同公司的庞大平台资源中获得服务,另一方面,通过使用由单一供应商提供的基础架构服务,中小型企业可减少对硬件设施和平台维护的收入,通过程序集成开发,信息化总体费用可大大降低。

 

在PaaS之上的是可以提供给终端用户的应用程序,这一层被称作软件即服务(SaaS)。它是从一个集中的系统来部署软件,并使之在一台本地计算机上运行的一个软件模型。SaaS是一种通过互联网提供软件的模式:软件厂商将应用软件统一部署在自己的服务器上,用户可以根据自己实际需求,通过互联网向厂商订购所需的应用软件服务,按订购的服务多少和时间长短向厂商支付费用。这样,用户不用再购买软件,而改为向供应商租用基于web的软件服务,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件。

 

云计算用最简单的一句话来解释就是:“客户端将运算任务交给服务器(云端),服务器运算完成之后,再将运算结果交还给客户端”。这里的客户端可以是个人也可以是企业,在某种情况下,本地的资源不足以支持要进行的运算,就运用线上已有的成熟的资源和数据来为自己完成自己的需求。

 

云计算的出现是信息技术领域的重要发展。与其说它是一项技术,不如说是一种服务。借助于网络和虚拟化等技术,云计算实现了对软硬件资源的高效管控。通过这种计算方式,共享的软硬资源和信息可以按需供给计算机和其他设备。

 

云可以为传统软件工程提供更加广泛的资源。云计算对软件工程的具体影响如下:

 

1.开发人员的大众化

 

传统的软件开发在软件开发之前的阶段就需要许多的准备工作,需要很多资金来搭建运行环境,这使得很多资金不足的独立开发人员在开发软件之前便止步于资金问题,而现在有了云计算,人人都可以量力而行地租用自己所需要的设备,使得商业化编程不再只是某些大公司的专利,人人都可以运用自己的技术来实现自己的应用,开发人员趋向于大众化。一个人只要掌握了编程的技术,资源配置之类的都不需要担心,云计算服务商已经为我们包装好了一个安全稳定的运行环境。

 

2.软件架构的开放性

 

与传统的软件工程相比,基于云计算的软件工程的体系结构变得更加构件化以及开放性更大:有了云计算服务,软件开发者就不必纠结于软件的开发环境,而是可以通过向云计算服务提供商定制属于自己的系统,可选的软件架构也有很大的选择空间。一个好的软件架构对可靠性,安全性,可伸缩性,可定制性,可拓展性,可维护性都有和严格的要求,而云计算正好可以很好地满足这个要求。

 

在软件即服务(SaaS)模式下,云计算抽象了传统开发和集成中的低端任务,提供了标准化的、即装即用的解决方案。在这种软件开发模式下,软件的体系结构基本上是完全处于分布式的,一个软件由客户端、服务端、管理端、开发端、测试端等各个不同的构件有机结合,也就是说,不同的软件完全可能享有共同的构件,这也使得应用之间没有了严格的物理边界。

 

这使得软件开发不再像之前那样要在软件开发的一开始就订好整个软件的开销,而是可以在开发过程中动态地确定,这样既保证了软件开发过程的高效,又做到了尽可能地利用资源。

 

3.软件对象的多样性

 

如果云端资源的质量能够得到保障,那么软件开发者完全不用担心用于软件开发的构件质量问题。面对一个需求,软件开发者可以根据不同的使用情景来选择最合适的开发环境,在云端茫茫的构件中选择能更好地满足需求的构件。在这样的条件下,就可以保证软件对象的多样性。

 

4.软件过程的动态性

 

         软件开发的过程中,需求可能是在不断地变化,比如刚开始预期的使用人数只有一万人,但是当软件上线之后发现该软件很受欢迎,使用人数达到了一百万,大大超过了之前软件设计容量,于是通过云计算,可以对软件的运行环境进行动态扩充,只要对软件稍作修改变可以使得软件继续顺利运行。而在传统的软件开发过程中,软件使用者对软件的需求也是在不断地改变,需求的改变则可能会导致软件架构的改变,运用云计算的动态性,可以动态改变软件的运行环境,尽量减少整个软件结构所需要的改动。同时对于在开发过程中选择更改架构的程序,也只需要改变本地代码就可以了,对于云端服务器只要进行简单的设置就可以顺利的让程序运行。

 

5.资源部署的虚拟化

 

计算资源虚拟化是云计算技术的核心,通过虚拟化技术使得上层的软件应用和底层的软件实现分离。由于资源都在云端,通过云计算的三种模式IaaS(基础设施即服务)、PaaS(平台即服务)和SaaS(软件即服务),用户可以随时随地访问这些云端资源。

 

在传统软件工程中,开发者如果需要增加资源使用,或者是开发前期对系统能力的估计错误,可能会使得资源的浪费或者面临出现突发情况时服务器不够使用的情况。而在云计算系统里,所有的资源都是虚拟的,需要多少就向云服务提供商租借多少,如果遇到突发情况还可以临时租借服务器,在不再使用之后就返回给服务商,这样就使得对资源的利用率达到了最大化,同时也使得程序能够永远保持在最高的运行效率。例如电商就经常遇到节假日或者购物节的时候访客流量突然上升的情况,如果去购买服务器显然是不划算的,毕竟平时用不到这么多的服务器,所以选择再特殊时期向云服务商租借,过期再退租可以使得自身利益最大化。

 

6.开发组织的社会性

 

传统的软件工程开发更多地是将软件工程师集中起来进行开发以求最大的开发效率,开发组织大部分都局限在某一个具体公司里,组织之外的人想要参与进项目是很复杂麻烦的,而在云计算的时代,由于服务器在云端,只需要通过远程操作云服务器就能完成软件的开发部署工作,所以软件工程师可以身处世界各地而共同完成同一个工程。

 

编程不再是一个开发团队,可能很多组件、很多服务来自互联网,来自你不认识的人,来自于你看不见的地方。这使得开发变得更加包容与开放,所有人不再需要一直待在一起,只要互相之间进行约定,每个人按时完成自己所负责的工作就可以了,这使得开发组织可以变得很大,github上有好多开源的项目就是由全世界各个地方的人一起开发的。

 

 

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

 

回顾软件技术发展的历史,最明显的趋势是软件变得越来越复杂,计算越来越繁琐。从最初的机器指令开始发展到面向对象再到云计算,目的都是让软件开发变得越来越简单,越来越能迎合用户的要求。

 

      当前在云计算越来越普及的大环境下,软件开发模式必然要做出相应的改变。云计算服务器为开发人员提供了更加宽广的开发平台,在这之上开发人员可以更加高效地构建应用,而传统的软件工程行业则会受到诸多的限制使得开发过程没有现在这样高效便捷。所以推广云计算的使用是很有必要的,它使得我们开发人员可以专注于业务的实现而从复杂的运行环境中抽身出来,使得软件变得更加可靠。我相信:随着云计算的发展,软件开发会进入一个全新的时代。

你可能感兴趣的:(云计算对软件工程的影响)