在云计算推动下的软件开发

什么是云计算

  对云计算的定义有多种说法。对于到底什么是云计算,至少可以找到100种解释。现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括互联网,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。本文将着重讨论云计算与传统软件开发的联系与相互关系。

  云计算(cloud computing)是一种基于Internet的计算。在云计算中,存储和运算将不再运行在本地计算机或服务器中,而是运行在分布于Internet上的大量计算机上,也就是说,云计算通过把原来由个人计算机和私有数据中心执行的任务转移给分布在Internet上由全体用户共享的大型计算中心来完成,实现了计算机硬件、软件等计算资源及对这些计算资源进行安装、配置与维护等服务资源的充分共享。

  所谓的”云”其实是指分布在Interact中的形形色色的计算中心,包含成千上万甚至几十万、几百万台计算机或服务器。用户不再购买高性能的硬件,也不再购买或开发各种功能的软件,而是使用任何可上网的设备,连接”云”,利用”云”提供的的软件或服务,直接在”云”上处理并存储数据。云计算的应用模式如图l-l所示。

  因此,云计算可以看作是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展。云计算与网格计算的主要区别在于:网格计算侧重于解决计算和存储资源的分配,即将大家提供的计算和存储资源根据各自应用的需要重新分配给大家;而云计算则倾向于计算、存储和应用资源的共享,在云计算中,用户不仅不需要象网格计算那样,提供计算和存储资源,也不需要自己购买或开发应用,所有的一切全都由云服务商提供。

  由于云计算  (cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、万维网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示网络和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预知气候变化和市场发展趋势。用户通过个人PC、台式电脑、手机等方式接入数据中心,按自己的需求进行运算。

区别究竟在哪

要了解云计算环境下的软件开发(包括WEB开发),我们就必须要先明白云计算的诸多特点:

(1)     高扩展性。与传统的单一服务器不同,云计算充分调动着位于云端的诸多计算资源,意味着所有的用户、需求都是潜在的,软件的业务规模是可以任意发展的。如果将传统的软件工程比作开发一个固定功能的软件,那基于云计算的软件开发则更像一个Chrome浏览器平台,用户可以自己定制插件和功能。这就给软件开发的过程提出了更高的要求。无论是在撰写文档的过程,还是代码开发的过程,都需要考虑更多的潜在需求。

(2)     虚拟化的超大规模。云计算对应着用户的云需求,这些需求按传统的观念需要传送到主机服务器进行处理,并即时返回到client端。然而,在云计算环境下,一切需求与其使用的具体物理计算资源无关。我们开发人员无需担心需求所需要的具体物理计算资源,而只需要在开发时制定好规则,剩下的计算过程交给云计算来处理。当然地,这就对应着软件开发过程中测试过程的改变。以往的软件工程需要先大致计算潜在客户需求和,设计和测试服务器。其中,服务器压力测试是非常重要的一个环节。如果服务器经常崩溃,那对用户体验来说是致命的破坏。然而,基于云计算的软件开发便可不必担心此类问题。

(3)    接口的变化。软件工程向云计算迁移可能需要开发人员学习新的应用编程接口(API)(比如需要开发面向GOOGLE应用引擎、SalesForce.com或者应用程序将来依赖的任何软件的API)。虽然对于大部分开发人员,API的学习是非常平常的,但在云计算开发中尤为突出。另外,虽然一些开发工具拥有允许部署在云计算的插件,但是编程人员必须学习那些新的功能特性。以微软SQL Azure为例,存在“普通的”Web开发环境没有的技术障碍。但是还是要尽快熟悉稀疏列(sparse column)、扩展存储过程(extended stored procedure)、服务代理(Service Broker)或通用语言运行时环境(CLR)和CLR用户定义类型。这些工具或升级版有许多比较新颖,尤其是目前软件工程开发的概念日新月异,开发人员可能要注意它们存在的局限性和版本的不断革新。

(4)     更高强度的安全性挑战。云计算在给用户带来成本降低、管理信息便利的同时,云计算的安全问题也日益凸显,云计算意味着用户数据转移到用户掌控范围之外,其安全风险涉及到诸多方面:数据泄露、数据传输过程、用户难以监管等。逐个来说,云平台的环境使得数据集中存储,一旦云平台遭到攻击被破坏,那么就会造成数据丢失和隐私泄露的严重后果,云服务提供商拥有超级用户角色,如果没有严格的监管或者这种超级用户角色的权限被滥用,就会增加用户数据泄露风险。数据泄露往往发生在数据传输过程,这对软件开发过程中的加密算法、动态密码等方面提出了更高的要求。然而道高一尺魔高一丈,需要防范用户信息的泄露,编程人员需要不断地提高自己防御性编程意识,并还要具备一定的密码学知识。当然,在用户使用过程中,用户对云计算软件的监控也是另一个尖锐的安全问题。用户在使用云服务时用户数据的控制权会转移到云服务提供商手中,用户可能无法知道自己的数据存放在哪里,也不知道云服务提供商是否对数据进行了正确的保护:比如云平台是否隔离了多个用户的数据、云服务提供商是否按照用户要求删除了数据、是否对存储位置进行了清洗、云服务提供商是否周期性地对存储的数据进行完整性检查等。这又是一个亟待解决和规范化的问题。作为软件开发工程领域,需要制定严格的规则和标准(例如在用户使用手册、开发文档中加入相关说明或解决方案)。

云计算对软件工程的促进与弥补

  对于传统的软件行业,最令开发组织头疼的问题莫过于盗版问题。这一问题在中国等发展中国家非常严重。事实上,各个行业的“盗版、假货、山寨”层出不穷,然而由于软件行业的复制低成本和高利润,使得这一问题尤为突出。如何能解决这一问题?一方面需要法律的严惩,另一方面,我们可以转换思维,为什么客户会选择盗版?一次成本过高!那么,云计算便可解决这一问题。对于传统软件开说,其项目的最大初始化成本主要包含三部分:授权成本、培训成本和服务器的部署。然而,云计算的开发更为敏捷,也不需要一开始就购置庞大的服务器设备。这就可以将“首付”转化为软件后期维护、升级的“贷款”。对于企业和个人来说,分期支付小额的维护费用也是更容易接受的,这样就不会去铤而走险购买盗版软件。反而,盗版软件缺乏后期的维护,在软件升级上也会出现非常大的问题。

  除此以外,基于云计算的软件之间可以很好的交互,这无疑大大提高部署各种软件的各个部门之间的工作效率。比如,传统环境下,某公司的财务、生产、人事管理软件之间无法友好的工作,形成了一个一个的信息孤岛。随着时间推移,也许公司会采取跨部门的软件系统,但这意味着更庞大的软件系统、更复杂的软件管理和维护,无疑大大增加的人力物力成本。云计算的强大交互性、互联性便是解决这一问题的最好方案。

未来的发展

  从短期来看,云计算所带来的各项变化对个人影响还是较小,云计算技术首先会部署到各大企业用于提高生产力效率。对于软件开发公司,广泛地聘用有大数据、数据挖掘、网络安全背景的程序员则是大势所趋,也是公司在未来软件开发行业的核心竞争力所在。

当然,云计算的未来发展也面临着各种挑战。在安全问题越来越重要的今天,如何能阻止图谋不轨的人对网络信息的截获,是整个软件开发行业亟待解决的问题。只有将此问题解决,云计算才能真正完成从概念到服务性产业的跃进和转变。

参考文献

[1] 宋小荣.浅析云计算与传统软件行业的相互影响.郑州:郑州大学教育技术中心,2011.

[2]王金金.云计算服务模式下的知识产权保护研究.合肥:中国科学技术大学.2014.

[3]郭晶晶.云计算及其安全性分析.信息安全,2012.

[4] Kevin McDonald. 认清云计算:管理云计算领域的风险(译).

时间: 2024-10-06 03:14:10

在云计算推动下的软件开发的相关文章

基于软件开发对嵌入式开发的思考

由于本人专业方向是计算机体系结构方向的,平时做嵌入式方面的实验以及项目较多,这个学期又学习了软件工程的课程,因此想借此机会,总结下在软件工程上面学习到的知识,并看看是否有什么能够借鉴到嵌入式方向的开发上面去. 首先我想总结下,软件开发与嵌入式开发的不同之处.作为软件开发,首先应当从用户或者用户的需求入手,明白用户想让你去实现什么功能,而到了具体的实现,有时却限制的不是那么的死.而至于嵌入式的开发,从需求入手是相同的,但是对于实现的方式,却明显不同于传统的软件开发.对于编程语言,不同的嵌入式开发平

HiSDP —— 高效的C++软件开发平台

目前阿里集团每天有近1000PB的数据是通过LogAgent采集的,为了让LogAgent做到资源占用节省和高效采集,背后是基于HiSDP去构建的. 缘由 当决定采用C++编程语言去开发一个软件时,紧接着所面临的问题是软件库.平台与框架的选择.当然,选择的范围估计很大程度来自开源软件.进一步地,无外乎两种思路: 根据所开发软件的需要选择各种合适的开源软件,然后将这些开源软件组合到一起去完成软件开发工作.这种方式所带来的问题在于,将各个开源软件拼凑到一起需要耗费一定的精力.此外,可能因为踩各开源软

软件开发能否转网络安全?从事网络安全是否需要经常出差?

有同学经常询问陈老师: 从事网络安全是否需要经常出差?另外,软件开发是否可以转行网络安全? 先快速回答下: 第一个问题,是否需要经常出差?这个具体情况具体分析. 第二个问题,做开发能否转***?非常好转. 为什么呢 => 首先,网络安全工程师是否需要出差?如果你接下来入职的是甲方单位,例如政府.国企.税务.金额.互联网等,基本上是这个岗位的工作内容就是对自家产品或业务系统进行安全测试,这种情况下跟软件开发岗的情况几乎一样,都是在自家单位上班即可,无需外出.注:在甲方,类似的招聘岗位和工作内容,还

高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框

上一篇高仿QQ即时聊天软件开发系列之二登录窗口界面写了一个大概的布局和原理 这一篇详细说下拉框的实现原理 先上最终效果图 一开始其实只是想给下拉框加一个placeholder效果,让下拉框在未选择未输入时显示一个提示字符串.由于Background对ComboBox无效,所以直接通过Background来实现是不行了.需要重新写ComboBox的模板,也就是Template,自定义一个模板来实现这个结果.又看了一下QQ的下拉框,这玩意不自定义也难以实现,所以就干脆自定义了. 先上代码,先是Com

让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改 [文章摘要] Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发现普通编译器所不能发现的代码中的很多问题,因此被广泛应用于软件开发项目中. 本文介绍了如何在VC++集成开发环境中配置Linux下的Pclint工程,给出了C语言中pclint规则A检查的常见错误,并描述了对应的修改办法. [关键词] VC++  Pclint  配置  操作  修改 1. 前言 P

Windows下搭建PHP开发环境,整合Apache+PHP+MySQL(举例软件为32位)

原文来自:http://www.cnblogs.com/pharen/archive/2012/02/06/2340628.html 在原作者的基础上,只是做了详细的解释.避免走弯路.(注:红色字体为本人加的) 一.准备工作-下载所需软件 Apache  httpd-2.2.22-win32-x86-openssl-0.9.8t.msi PHP       php-5.3.10-Win32-VC9-x86.zip MySQL   mysql-5.5.20-win32.msi 二.安装软件 安装A

【开发软件】 在Mac下配置php开发环境:Apache+php+MySql

本文地址 原文地址 点击关注微信公众号 wenyuqinghuai 本文提纲: 1. 启动Apache 2. 运行PHP 3. 配置Mysql 4. 使用PHPMyAdmin 5. 附录 有问题请先 看最后的附录 摘要: 系统OS X 10.8.5,Apache是Mac自带的,主要是php的配置和MySql的配置,网上教程也挺多,本人也有参考,但是感觉有些步骤执行起来不是很顺畅,根据自己配置的过程整理 一.启动Apache 有两种方法 1.打开网络共享 打开"系统偏好设置"->&

基于花生棒在windows下小团队软件开发及web演示服务器的搭建

案例分析 由于共同爱好和目标组成的2~5人的软件开发团队,在团队初期组建初期,需要一个成本低,而又能对外展示和管理软件代码的平台.因此,选择以下方式来搭建一个服务平台. 花生棒官网:http://www.oray.com 案例目标 搭建一个演示web站点供开发团队对外展示: 建立一个SVN代码版本控制库,供开发人员代码提交管理. 服务器的安装 由于开发团队主要采用微软visual studio工具及其语言进行开发生产,顾服务器操作系统采用window2008 R2 数据库采用sql server

华为瞄准5万亿软件开发云端变革机遇

数字化转型.开放式创新.技术与业务深度融合是新时期软件产业发展的重要特点.顺应时代变革,华为将携手合作伙伴,帮助客户迎战云时代,通过软件开发云向软件企业和软件开发团队提供智能化软件研发管理平台,以云的方式传承华为20多年积累的软件工程能力和优秀实践,不断提升软件企业核心竞争力,加速推进中国软件(20.550, -0.11, -0.53%)产业的转型升级. “风口”处加速转型 六年来,我国软件产业收入由2010年的1.3万亿元增至2016年的4.9万亿元,年均增速为24.7%.软件和信息服务业快速