既然我们要讨论这个问题,那就先要明确两个概念“云计算”,“传统软件工程”和一个“影响作用”。
首先是“传统软件工程”,通过查阅资料,对传统软件工程的基本印象如下:

  传统软件工程采用的一是结构化泛型,基本阶段按顺序如下:需求阶段、规格说明阶段、设计阶段、实现阶段、集成阶段、维护阶段、退役等,这是一种适用于代码量适中的传统软件开发方式。与其相对的是面向对象的软件工程方法,相比于前者,它解决了结构化方法在软件规模越变越大时遭遇的维护困难缺陷,并提高了软件的复用性。

好,差不多明确了传统软件工程之后,接下来的重点就要面对“云计算”这个新概念了:

  “云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。”

然后云计算当前的定义也多到不胜枚举,其中广泛为人接受的一种是美国国家标准与技术研究院(NIST)定义:

  “云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。”

这些定义无疑是全面的、明确的,然而如果要为初次接触云计算的人(比如笔者)所理解的话,比较理想的定义就像这样:

  假设我是一个准地主,我有自己的私有土地,土地需要耕种,我需要雇佣一些奴隶来干活,正常情况下,一个土豪地主是买好多奴隶,一直为自己工作,那么这些奴隶就是该地主的人力资源,然而我是准地主,我土地并不是那么多,我只是在收获时节缺乏劳动力,那么我就不能再购买奴隶了,不然平时还得管吃管住,好了,那我怎么办呢?假设同村还有个大土豪地主王老五,他有很多个奴隶(多的不行),那么我就可以和老王商量商量:“哎,能不能在这两天农忙的时候借我些苦力啊,我这忙不过来啊,你放心好了,忙完付给你钱!”,然后老王爽快的答应了。这其中,奴隶是地主的私人资源,我和老王的人际关系就是可交互的网络访问,这些计算资源,哦不,劳力资源是可以被快速提供的(找个主管领过来就行了),投入很少的管理工作与服务商进行很少交互(我假设这群苦力有个头头,我跟他说你把你这班人管好,我中午给你加鸡腿或者我直接告诉老王,您把您的人调教好,下次我表哥托人带的腊肉一定给您送过来),这样这个过程模式就是所谓的云计算(云苦力)了。

让我们再回过头来审视一下前面的定义,是不是好像有点感觉了?接下来我们继续从各个方面开始讨论“云计算”带给传统软件工程的变革和影响。

  • 软件架构的开放性

  既然我们已经用上了“云计算”,那么相比于以前“内部软件开发小组”式的传统软件工程,软件的开放性得到了前所未有的提高,这样软件构件的复用性也随之提高,成熟的体系,设计构件以及代码,在分布式的计算模式下,可以被不同的“云下”开发者所使用,甚至是不同的软件开发团队之间。继续借用前面的例子,我临时借用的奴隶本来就具有成熟的耕作技术,我不必再花费额外的精力去教这些人如何耕作,或者是这个奴隶这次在我这里干活学会了如何护养花园,那么下次别的准地主向王老五租用劳力时,也不必再去教花园护养。

  • 软件对象多样性

  上面提到面向对象软件工程方法,其中的对象是一个抽象的概念,结构化范型中数据和方法是独立开来的,而在面向对象方法中,它将把数据和方法结合起来,封装在一起,所以从一开始人们在分析阶段就可以将对象提取出来,在设计阶段进行对比,从而进行程序实现,它的阶段之间的变化比结构化设计要平缓,从而减少了错误的数量。通俗的讲,比如我还是那个准地主,我想扩大一下家族产业,我要养猪,从结构化的视角来看,首先需求和目标是什么?我要养猪。好开始设计,我要在哪养,和谁养,养什么猪,怎么养等,设计完毕动手吧。而面向对象不同,在分析阶段它需要进行对象提取,先建立一个养猪事业的对象,资源需要有什么?种猪,技术,设备,市场。方法呢?构造方法:种猪引进,从哪引、引哪种、引多少…… 培养方法:……等等。然后开始实现。返回来看,结构化与面向对象相比之下,阶段之间的跳跃性比较大,容易偏离或者错误。而且对象是将方法数据封装在一起,更适合成熟构件的设计,这将更能增加构件的复用性,比如我把养猪事业分成构件,可以出这么几本书《种猪选择指南》《养猪的关键技术》《如何把握猪肉市场》……等等,这样其他人可以复用前人已有的经验,减少时间花费。

  • 软件过程的动态性

  一个软件团队在开发的过程中,项目所需的资源,比如开发人员,设备,数据等都是动态变化的,那么在“云计算”中,这种动态性更为显著,因为系统是分布式的,对于资源的控制要比传统方式上更为复杂一些,首先是同步问题,并行性固然是一个优点,而相对而言的同步问题也需要投入更多的精力。就好比我在大山里钻出一个隧道,如果从一头开始打,那么我需要勘测好路线一直打就好,而如果从两头同时前进,那么对准确度的要求就特别高,而在软件项目中,往往不止从两头开始。另一方面是人员资源的流动,通常说一个程序员走了,需要两个程序员去顶替他的位置,而在已经大众化的云计算中,人员的流动可能比较频繁,因此需要利用网络交互,降低学习的门槛,让大家快速熟悉起项目来。

  • 开发组织的社会化

  你这个准地主带着一群劳力划了一块地皮说,你要在这建一个堡垒,以防附近山上的强盗土匪劫掠财物,有哪位地主参与吗,各位地主王老五,刘老六等人闻讯也带了一拨人加入,结果越干越大,附近十里八乡的乡绅土豪都来插一脚,人际关系网愈来愈大,最后把附近山上的强盗都气跑了。在云计算模式里,同样原来的单个团队,总体控制的形式已经不适用了,在各个不同的组织合作下,整个工程的向前发展是并行性的,社会上任何一个团队都能加入合作,这就是开发组织的社会化。

  • 开发人员的大众化

  假设你是地主家的主管,为了地主家族的发展和自己的未来,你提出需要承包一个超大块的土地,你申请地主说,我要一千个奴隶,地主一定劈头盖脸训斥你一顿:这么多人住哪吃哪,吃住都把我弄穷了。这可怎么办呢,你脑瓜一拍,这不是有乡里的村民吗,只要你付给村民一定的工钱作为劳务,白天他们在地里干活晚上回自己家睡觉这不是一举两得吗,所以本来对于地主来说可以作为劳动力只有归属于自己的奴隶,这下劳力大众化了,既解决的问题,又减轻了人员集中的负担,只有有序的管理他们,分配好任务,目的就达到了。开发中呢,因为云计算网络访问,所以可以有更多开发人员远程参与进来,大家坐在自己家里就把活干了,领导不愁提供吃住,工作者也省的两头跑了。

  • 资源部署的虚拟化

  什么是资源部署的虚拟化呢,在云计算的定义里,我们提到它提供了可配置的计算资源共享池,而描述这种共享资源就需要用到虚拟化的计量方式,如果你需要跑一个程序计算某个东西,需要用到远程的CPU资源,假设我们用一台主机或者一个核来描述,可能对大型计算复杂的任务有用,如果是一个小型任务,分配给他一个主机,可能有剩余的计算资源,本着资源利用率最大化和节省预算的原则,我们是能用多少买多少,所以我可以用另外的衡量方式,比如按小时计量工作量,这样对远程来说,可能并不知道自己正在使用的计算资源在现实中是几个主机几个CPU,但工作量已经被清楚地表示了出来。因此,对于“云计算”,首先是计算资源的虚拟化和云计算的弹性伸缩能力,即允许用户按需购买,用多少购多少。

  • 结语

  初识云计算,由于现在缺乏实际的项目经验,也只能空泛的谈谈了,有了经验之后再做修正,以上用通俗的语言表达了一下我所理解的“云计算”,正所谓知之为知之,不知为不知,我也就不想写一些连我自己也不懂的概念了。也希望各位看官大牛不吝赐教。

  • 参考
  1. Stephen, R, Schach. 面向对象与传统软件工程[M]. 北京:机械工业出版社, 2003.
  2. 百度百科. 云计算[Z]. Baidu: Baidu,2014.

转载于:https://www.cnblogs.com/duolk/p/5968171.html

云计算对传统软件工程的影响相关推荐

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

    云计算对传统软件工程的影响 传统软件工程的概念 传统软件工程采用的一是结构化泛型,基本阶段按顺序如下:需求阶段.规格说明阶段.设计阶段.实现阶段.集成阶段.维护阶段.退役等,这是一种适用于代码量适中的 ...

  2. 从柯布-道格拉斯生产函数看云计算对传统软件工程的影响

    随着软件技术的不断发展,软件的功能变得越来越强大,软件的结构也变得越来越复杂,需要处理的数据变得越来越庞大,计算的复杂度也越来越高.如何开发能够应对这样日益增长的需求的软件便成为了亟待解决的问题. 2 ...

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

    如今,云这种概念已经越来越深入人心,似乎云已经成了我们生活的一部分.那么,这种近几年兴起的技术,是否对我们传统的一些行业有所影响. 首先了解一下软件工程的概念.软件工程是一门研究用工程化方法构建和维护 ...

  4. 算对于传统软件工程的影响

    说起云计算对于传统软件工程的影响,我们当然首先需要了解这两个概念. 一.传统软件工程 首先是传统软件工程,了解传统软件工程其实就是了解软件工程的历史,早期的计算机系统以硬件为主,程序员在早期的计算机上 ...

  5. 云计算对软件工程的影响

    云计算对传统软件工程的影响 什么是云计算: 云计算(cloud computing)是基于互联网的相关服务的增加.使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源.云是网络.互联 ...

  6. 云计算对于软件工程的影响

    内容提要: 1.背景介绍:云计算的基本概念 2.传统软件工程介绍:流程.方式 3.云计算下软件工程的变化 4.总结,对比软件工程的改变 5.参考文献   一.背景介绍[1] 云计算是以商业需要为出发点 ...

  7. 多元化时代敏捷软件开发的崛起与传统软件工程的延续

      多元化时代敏捷软件开发的崛起与传统软件工程的延续 1.传统软件开发模式 1.1瀑布模型 1.1.1概念 瀑布模型,顾名思义,软件开发的过程如同瀑布飞流一般,自上而下,逐级下落.瀑布模型的核心思想是 ...

  8. 浅析互联网金融对传统金融的影响

    金融领域的发展能够在较大程度上促进经济的增长,而国内金融领域对于经济的促进作用更为显著.伴随科技的创新与发展,互联网金融应运而生,使得传统金融受到了一定的影响,主要表现在以下几个方面:对经营思想的影响 ...

  9. 云计算助力传统安防智慧升级

    智慧安防是智慧城市建设中的重要部分,被誉为智慧城市中的隐形安全网.在面临着智慧城市更大更新的需求下,传统的安防需要融合新的技术来满足市场的需求,作为维护社会治安的有效手段,安防行业在近些年来结合现下大 ...

最新文章

  1. 网络规划设计培训与方案集下载
  2. SAP ECC6.0-中建信息版
  3. 非法ip通过ssh成功登录,自动结束会话
  4. 博弈论笔记:逆向选择与非对称信息
  5. Windows Phone 的控件倾斜效果
  6. ndoejs中中间件的使用
  7. 拥有16年开发经验,我都使用了什么工具?[最近更新:2017-10-12]
  8. 【数据结构(郝斌)】01-数据结构概述
  9. 下面对html描述正确的有多选题,web前端笔试题
  10. 计算机组成原理6-20,计算机组成原理课后题6.20PPT课件
  11. java gui 打开另一个_从另一个Java服务启动Java GUI应用程序
  12. 27.【小学五年级】确定母亲节
  13. 分段函数的期望和方差_概率论与数理统计的公式及定义总结
  14. Android 通知栏图标
  15. 一步控制台编译java_在控制台运行一个 Java 程序 Test . class ,使用的命令正确的是( )_学小易找答案...
  16. A - Artwork ( 并查集 )
  17. (11)向量组及其线性组合
  18. 重磅!大数据《实战全栈工程师成长手册》,附 PDF PPT 下载
  19. 软件测试测试用例—用户注册界面
  20. linux kernel decompress_kernel 启动解压

热门文章

  1. LoRa节点开发:9、LoRaWAN在各个国家或地区可使用的频段列表
  2. 基于Tensorflow实现声纹识别
  3. Java课程设计学生考勤管理
  4. python中fontsize_更改MatPlotLib中顶部xaxis的fontsize
  5. js与朴php订单评价功能
  6. 文件锁(三)——文件锁的原理
  7. 2018年专业技术人员权益保护-测试题答案
  8. PhotoShop - 滤色模式(screen) 的 响应曲线(关于加镜头光晕的思考)
  9. AI时代的全链路监控(阿里)
  10. 078 周期函数定积分性质及定积分三大性质总结