下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

云计算时代的软件开发技术及其应用

作者:课课家教育     来源: http://www.kokojia.com点击数:1088发布时间: 2019-03-11 14:00:16

标签: 云计算的使用方式云计算时代的分布并行编程技术云计算时代软件开发应该考虑的一些问题

  云计算的使用方式:

  1、将计算损和存储的资源以服务的方式来计费。有了云计算,就可以按需求获取海量的IT资源,可以更快的开发自己的业务系统。

  2、大家经常看到一些云计算的图,云计算的体系非常简要分成三层,有Saas、Paas、Iaas,这三层都涉及到云技术的各个方面,对每一层来讲它最核心的技术,我们认为是这样的,Iass层资源虚拟化是最核心的,Paas是提供平台可伸缩化,Saas提供服务多租赁化的技术特征。让人振奋的许多云计算的特性主要是靠软件技术来实现的,背后提供特征的支撑是在我们开发的软件系统,比如像虚拟化,虚拟化这种特性必须要有需求化变换的软件来实现,否则的话,无线和有限的东西是没法把它衔接起来。所有的软件必须在某一台机器,每一台设备上来运行,不管中间经历多少变化,最后都落脚到这个地方。我们要有软件系统去做这种转换的东西。软件技术将在云计算时代开发出令人惊讶的应用系统,并且会促进技术的发展。

  3、大家看到这个是每个层次里面具体的服务内容,它本身都是有相应的软件技术来实现,而且它同时为它的上层和直接纬终端用户提供服务。

  现在目前已经有了很多云计算的软件实例。最早比如Google的搜索引擎,是全球最著名的云计算事例,它的数据都是放在数据中心里面。另外还有一个值得一提的是,因为前面Google可以看到是一个多用的平台,但是Salesforce做了一个很大的创新,使得云计算软件开发有更多的强项。Salesforce在1999年的时候,就首先创新以在线租赁的模式,应该来讲是一个创新。这里面功能的删减,用户个性化定制等等,这都是很有特色的地方。用户只需按月付租用费就可以使用CRM的服务,它的所有软件和数据都是在Salesforce的平台上。

  这样一些基础平体和应用软件的开发,使我们逐步感觉到云计算软件,基于云计算技术体系还是有不同的特点。Gartner预计,到2010年企业30%的软件应用将通过服务来提供。

  4、云计算时代软件的新变化,它具有什么特征?应该怎么开发?我们应该有甚么样的技术,以及现有技术是否充分完备,是不是需要进一步的研究,而且需要进一步的去应用等等,这些都是我们软件从业者在云计算时代里面应该去考虑的问题。下面我们看一看云计算时代软件有哪些新变化?

  (1)用户只需要实用软件,而不是用自己去运行软件。因为软件始终在数据中心里面运行,不需要管理软件,他只要注册、客户化、应用就可以了。

  (2)有一个重要的概念性变化,云计算实际上是一个在线多租赁的方式来使用,所以用户概念是一个租户的概念。现在软件是在网上提供服务,一个软件的版本的单个实例可以为成千上万的用户服务。以前我们不得不做多个版本的东西,现在我们只做一个实例,这也是一个非常大的变化。这个大的变化,在使用上给我们带来很多方便,但是大家想想我们的东西都是人做出来的,都是在险业技术体系下积累起来的,这就需要做工作,需要关心原来没有关心的问题,去使用原来没有使用的一些技术手段,去做这个软件开发。

  (3)网站从Web信息发布平台变成Web应用软件运行平台,变成系统托管平台,变成多租户的软件服务平台。软件资源的维护,这些工作要把它作为非主流的业务包出去进行托管。当然在托管的时候,所谓托管服务的企业,它是对一个用户企业做了一套服务体系,包括它的软硬件提供服务,不管这个软件是不是同一个产品,它都是一个对一个来做的。

  现在一个很重要的就是,对于托管技术进一步的发展,能不能更高效,更简单,特别是我们讲得如果这个软件版本多了,管理手段更加复杂,能不能变成一个版本,一个多租户的服务平台,这也是云计算时代的第三变化。

  (4)软件运行在因特网上的共享数据中心里面,而不是应用在自有的服务器和计算机上面,这也是云计算时代必须具备的特征。当然可以根据自己特定的需求,不一定都这样去做,但是我们讲从概念上来讲,云计算时代的软件,它的软件一定是放在共享的数据中心,至于把这个数据中心变成私有的,还是安全设施不让访问,那是另外一回事。

  (5)应对用量变化手段,从制作网络镜像手工增删资源,到系统和平台的自动伸缩,这也是现在云计算时代的软件,必须具备的特征。大家都知道我们做网站,这个网站的应用量大怎么办?那再加一台服务器,全国性的服务网站,如果这个不行,再找另外一个地方加服务器等等,这都是手工的去建立这样一些东西。云计算处于一个海量资源,而且因特网连接起来,在这样一个基础上,必须对硬件和软件资源,有基于服务和自动化的手段。在软件运行的时候,它可以自由的去伸缩。

  (6)现在云计算软件非常强调个性化的定制。同一个软件的同一个版本的东西,但是用户可以根据需要,做一些许可的这样一些定制。这个定制是一个好东西,但是大家想定制越方便,那么对我们软件本身基础的结构,和它所依赖开发技术的要求是非常高的,只要做过大型软件开发和工程项目实践技能都知道,一个软件去定制,不是你想定制什么就能定制什么的,所以这个定制的东西对用户来讲是一个好的要求,但是从技术从工程可能性来讲,它一定是有限度的。比如目前对同一个软件系统,它的服务化和它的领域工程和产品线,如果做得很好的合,那就挑选所需要的服务,然后对用户界面进行定制,这些实际上在现有技术和工程范畴里面,应该是可行的,我们进行这方面的功能服务模块的选择,组合过程的指定,用户界面的定制,这都是云计算时代必须具备的。

  (7)快速开发。快速开发是软件工程里面很古老的一个话题,随着我们的技术水平,特别随着现在的资源水平和产品线的技术的发展,快速开发应该讲水平是越来越高,而且现在有一个云计算,应该来讲特别有资源共享,有符合标准的服务可以集成,快速开发将更加有效。

  所以我们讲,这是我们总结出来关于云计算时代软件的新变化,这也是非常重要的,我们怎么去看待什么是云计算时代的软件,那么就是有这样一些特征才行。下面的话题就是,要有这样新的技术特征的东西,我们应该有甚么相应的技术手段去做?做了哪些成果?我们要理智的去看待现有研发成果,到底在技术体系的本质上面,到底做得是什么?它的本质是什么?它的局限性在哪里?现在我们面临的问题是什么?我们就要认真的去思考,这就是我下面接着要讲的第二部分内容。

  我们报告关心的主题是云计算时代软件需要新的开发技术,软件工程师也需要使用云计算时代的软件开发技术去提高开发能力。大家都知道,作为软件工程来讲,不断的提高软件的生产能力和管理水平,这是软件工程师永远追求的目标,因为我们面临用户的需求是不断的扩张,而且时刻面临着做更难更复杂性的开发要求,这个软件工程师不断提高自己的生产能力。云计算我们做软件开发不要忘了自己,我们也要有云计算的技术,我们软件公司要把开发作为服务,开发作为服务应该以什么样的形式来提供我们使用,我们往下面讲。

  这是我们报告关注的主题,大家看到这个图也见过,语音计算技术的主体结构,它的层次。我们关注的话题是这一部分,主要关注的是“云计算模式下的软件开发与设计技术”。如何开发运营和维护那些为最终用户,或者一般用户提供的云服务的软件系统,这里面包括了系统软件、工具软件和应用软件等各种软件。

  二、云计算时代的分布并行编程技术。

  1、云计算是在分布式计算、并行计算和网格计算的基础上,经一系列技术的创新和融合而形成的。云计算是一个很大的统称,这里面既体现它的核心价值,不可替代、不可或缺的这样一些技术内容,同时也可以结合其他资源,使得云计算更强。所以它的是一个非常庞大的IT技术的统称。

  目前,在云计算平台种衣剂云计算平台应用润间的开发都使用了分布式并行编程的技术。分布式并行编程技术,在计算机里面并不是特别新的东西,当年只有局域网的情况下提到这个话题,随着几十年的发展,虽然分布式并行编程技术举步维艰,并没有革命性的大突破,但是它的进步还是有目共睹,而且确实技术可以让我们去做很多事情。

  2、云计算时代的分布并行编程技术介绍三方面:分布并行数据处理技术,分布式文件系统,分布式数据库。我们开发各方面应用的时候,首当其冲的是做高性能计算,高性能计算逐步扩充数据处理,包括大规模海量的数据处理,其次要把技术发展成为,一定能够做企业级的业务应用技或者是某个团体的,某个组织的业务应约,做这样的开发。软件技术也是这样一步步在走,今天仔细总结和审视现在目前已经有的云计算时代的软件开发技术,看到它的道路发展模式是完全一样的,我们来看看这里面分布式并行数据处理方面的东西。按照高性能计算,包括网格,包括云计算,这个非常大的程序运行,都是在云计算里面看到很多。

  我们来看看分布式的一些编程的东西。大家都知道Mab/Reduce用于大规模数据并行处理,它的数据量非常大,在成百上千个CPU并行处理,这也是我们讲得,它有很多很鲜明的时代特征,在这个时代,问题摆在我们的面前,我们就要考虑如何做大规模的数据处理和并行编程设计的开发。Mab/Reduce简化了数据编程模式,以前在我们单机上面,像文件处理基本上跟这个是一样的,实际上是提供了一个海量数据的处理,它跟编程模式是一样的。把多个数据源的东西,把它简单处理,安排在不同数据源同一个关键子来规避起来。这里面有多个结点进行分布式并发数据归并,这样一个数据变换。在变换过程之前和之后,你可以根据应用要求,再加上自己所需要数据的处理机制,这里面主要讲得是海量数据的变换,大规模分布海量数据的编程格式,这是它的基本原理。

  3、Google提出文件系统。当时Google推出搜索引擎也是一个革命性的,让我们很多人很惊讶。IT从业人员来讲,在惊讶之后马上就要去学习,它有一些什么核心技术,我们应该怎么去开发,这是我们需要去学习的。

  在Google设计文件系统的时候,如何在廉价,而且相对补可靠的计算机上对巨量数据进行存储,当然要构造符合这个要求的一些存储和它相应的文件和数据系统。这里面为什么要重新设计呢?因为文件比较大,都在100M以上,通过为几个GB,文件通常需要频繁的追加,用流方式读取,高吞吐量等方面都进行了优化。

  背后采用的理念就是文件用块存储,拷贝多个备份,负责协调和保存元数据,在我们刚开始已经有了分布式并行数据处理的时候,这个元素概念还是没有的,这需要相关的技术融合起来,形成新的技术体系,这样就更加有利。云计算在各方面的技术,都是按照这个模式来做的。它提供所谓定制化的API,给应用变成的人去使用。再一个就是它没有无数据缓存。

  4、讲到BigToble的设计理念,面向网页的数据发布及搜索和浏览等特定处理的需要,演化数据管理系统的设计,并提高性能。它是面向网页数据发布搜索浏览特定处理器需要的技术,这种技术还是有相对的局限性。光有数据处理并不能编出来程序,而且它不支持关联,不支持SQL的查询,网页数据对搜索服务来讲对数据的管理一致性要求并不高。实际上我们这个地方就可以看到一个总结,现有的技术还是相对来讲比较单一。目前有发展趋势的就是Google提出的APP引擎,这种平台容易维护,自动的伸缩这样工作。

  5、Force的在线服务,提供一个基础的开发平台的提供商。做了一个有意义的工作就是做了在线“超市”,符合开发的软件,都可以进行一个集成,这个集成的软件有云计算的特征。提供一个开发人员和用户共享软件和数据的社区。它一方面可以进行共享,把开发的平台通过云计算的方式公开出来。另外,不同厂商之间进行交互和集成,这样的开发工具是非常重要的。现在有的厂商经常号称,做得东西开发性很强,但是真正做到完全性的开发那还是很难的,还要有基础设施和编制手段的保障。

  6、技术评价方面,已有的编程主要面向特定。

  三、云计算时代软件开发应该考虑的一些问题。

  1、基于SOA和的Saas模式。2、多租赁的特征。3、自由伸缩这是必须考虑的问题。

  云计算时代的设计软件,我们更多要满足云计算技术特征这样一些任务的设计完成,按照以前讲得有更多关注软件系统的质量属性,高性能、伸缩性、并发性、分布性、安全性和容错性等等,这是我们软件工程面临的难题和挑战。到了语音计算时代成了不可回避的问题,如何去实现这样一些属性,需要新的技术和方法。

  2、多租赁特性是一套软件的一个版本,为多个用户服务,要支撑用户的界面、业务逻辑和数据等方面个性化需求。支持不同租户之间的数据配置和隔离,要保证每个租户数据的安全和隐私。我们从完成软件工程的方法体系,所需要的技术,我们现有的软件技术开发显然是不充分的,当然我们可以针对特定问题,设定解决方案,但是这不是最终一个好的解决方案。

  四、武汉大学国家重点实验室,我们开始了这方面的研究,目前在做一个高考智能择校的推荐系统,这个系统非常好,它能够很好体现云计算的特征。它的适用性是“突爆性”的,这个方面我们做了一些工作。我们核心的开发基于云计算的高考服务中心的设计,我们搭建自己的实验平台。

  五、最后给大家小结一下,软件是IT系统的灵魂。人类创造出软件开发技术不会随着IT技术的发展而失去作用或降低作用性,它是我们在新的IT环境中开发更大规模、更复杂、更创新的应用软件系统的有力武器。

  软件开发技术不但会跟随IT技术的发展而变化,而且它自己也出不断的发展过程中,新的软件开发技术将提高人类开发软件系统的能力。有了云计算可以做更多的事情,但是你的学习和负担会更重,需要提高业务能力,所以我们讲云计算为人类使用更大、更复杂的软件系统。比如流动人口服务、中小企业的社会服务,这样一些复杂的系统开发,都需要有更好的技术。

  云计算的服务需要创新和发展,云计算的分布并发编程和数据库技术的现状,提供API支持和简单的工具支持,欠缺编程模式的开发框架和方法学体系,适用于较简单的海量数据高效处理,欠缺对复杂关系的数据处理能力。在云平台中,对于开发大规模复杂的企业应用系统而言,是不充分的,这是现状。

  做过大型软件开发的人,把你用的十八般武艺都想全的话,大家看到我们左边是主要常规的开发软件使用的工具和方式,现在我们可以看到在云计算时代,相应的框架和方法学是没有的,所以这需要我们科研界和产业界共同合作去研究,去开发,去应用,去实施,而且强调一个最佳的业务实践。

  另外我们从纯粹数据这方面来看,我们从理论框架到开发框架,到底层数据成熟机制。大家不要低估理论体系的作用,它的理论体系是非常重要的,把很多东西都说清楚了。

  最后的结束语,云服务软件系统的开发技术,需要创新、发展和积累。云服务软件系统的开发技术将提高人类的生产能力,满足开发更大规

  

赞(10)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程