近些年,“云”、“云端”这两个词火了,这两个词十分的生动形象,它代表的是一种虚拟化的环境,云端是一款采用应用程序虚拟化技术的软件平台,集软件搜索、下载、使用、管理、备份等多种功能为一体。通过该平台,各类常用软件都能够在独立的虚拟化环境中被封装起来,从而使应用软件不会与系统产生耦合,达到绿色使用软件的目的。这种虚拟化的环境,可以给系统带来轻便、干净、稳定等等有利条件。
那么,云计算又指的是什么呢?云计算是一种基于互联网的计算方式,通过这种方式,共享的软件、硬件资源和信息都可以按照需求提供给计算机以及其他的设备,是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。其实,对于云计算的定义有很多种,而在现阶段被广为接受的说法是美国国家标准与技术研究院的定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
上面对于云计算的解释和定义我认为都太过于抽象了,在通过查阅资料之后,我个人理解的云计算就有点类似与“将服务外包出去”的形式。就好比说,我家里平时只有一间空着的客房,今天突然来了两位或者是更多的要留宿的客人,这个时候家里住的房间不够用了,那我该怎么办呢?这时候,我会去找附近的酒店,让客人们入住到酒店里去,酒店客房多,一人一间。当然,我还需要支付给酒店住宿费用。这样看来,我自己加就像是主机服务器,酒店则是云端,因为用户过多,我就需要将用户转移到云端,我租用云端后支付给云端固定的费用,这种就是云计算的运行模式。
传统软件工程采用的是面向过程,结构化的程序设计方法,它对于软件开发是一种工业化的流水线过程,不能驾驭复杂系统的开发过程,而面对越来越多、越来越复杂的软件和系统,传统的软件工程已经不能胜任这种开发的工作了。云计算的出现给软件工程带来了全新的选择,注入了全新的血液。
1、 软件架构的开放性
云计算的计算方式将软件工程中的软件与硬件归集到一起,计算处理从用户终端归集到云计算的中心以此为基础的软硬件资源通过自下而上的虚拟化的技术融合为一个整体,从而可以共同满足用户的业务需求。在这种网络高速发展的环境下,软件开发的工作从封闭的计算机平台逐步走向互相联系、彼此协作的网络平台,网络已经逐渐具有了运算和服务等功能,使得现在软件开发工作大都需要更多地使用、依靠网络环境进行。网络计算技术和网络存储技术为软件工程提供了良好的开放性环境,毫无疑问,在云计算和网络发展后,软件架构的开放性得到了极大的提升。
2、 软件对象的多样性
在面向对象的开发过程中,数据与行为方法是封装在一起的,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统,有效提高编程的效率。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。在软件工程的发展中,其抽象程度不断提高,从面向过程到面向对象,从过程函数到流程模块。而在云计算出现后,软件工程在面向对象的基础上进一步抽象化,因为云计算的运行模式,软件开发人员参与编写的代码量下降。软件开发人员主要的任务变为了进行对用户需求的分析和建立软件的功能模型。软件对象的多样性可以提高软件的重用性、灵活性和扩展性,使软件工程得到更好的发展。
3、 软件过程的动态性
在云计算工作的方式中,软件过程的动态性体现得十分充分。在一个软件的开发过程中,许多资源都是流动的,例如开发人员,引用数据等等,因为软件开发中用到了云计算的模式,其中的各种数据的上传、下载,系统的更新还代,人员的频繁调动,这些过程中的资源都因为网络的交互、协作特性而不断变动。
4、 开发组织的社会化
在云计算的运行模式中,软件开发过程已经不再是只由单个的团队单枪匹马地完成了。这种网络环境使各个团队开始协作,一同参与开发工作,比如我想使用一个技术,这个技术已经有其他的团队研发出来了,因此我只需要在云端下载即可。这样一来,许多的软件开发过程都是由许多团队共同进行的,也就是将开发组织社会化了,在这个社会里,每人负责自己的工作,使得这个过程有序地、整齐地进行。
5、 开发人员的大众化
由于云端的出现,可以有更多的开发人员在远程完成自己的开发工作,软件工程也可以分为多个小的项目,主团队可以将这些小项目分配给其他的团队去完成。这种方式在现在的软件开发中十分常见,开发团队将次要的任务分配、交付给外部人员外包完成,最后再将多个零碎的小项目整合、联系在一起。如此便使得一个软件的开发人员大众化,因为云计算提供了这种便捷的方式。
6、 资源部署的虚拟化
虚拟化指的是在单一或者多个服务器的基础上,通过虚拟机软件系统对硬件资源进行调配,子啊每台硬件系统中建立一个或者多个的虚拟硬件系统,其中的虚拟机系统项目独立、互不干扰。在云计算中,将资源池化、快速部署,使得软件能够在共享硬件上运行,而服务器的虚拟化和集群化为云提供了资源池化合灵活的可伸缩性。也就是说,服务器的虚拟化是实现云的一个重要技术,而云计算的出现也使得在软件开发中的资源部署虚拟化了。
结语
实际上,这也是我第一次对云计算进行深入的了解,理解得并不充分,也没有实际接触的经验,说得不正确的地方希望能多多谅解。云计算的出现,对软件工程的发展产生的很大的变革,软件开发的丰富性得到了很大的提升,这也是软件工程发展的一个良好的契机。
参考文献:
[1] 史杰,解继丽,史少华,《论云计算对软件工程的影响》,联创亚信科技有限公司,天津,30020.
[2]百度百科. 云计算[Z]. Baidu: Baidu,2014.