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

什么是云计算:

云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。对于云计算的定义现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。与网格计算相比(云计算更好地迎合了IT企业界的发展需求(它不仅是一种技术体系(同时也是一种商业模式,由于人类所掌握的物理规律的限制(单处理器所具有的信息处理能力已经不能再按摩尔定律无限制的增长(传统的软硬件产品提供商已经很难通过提高器件性能来发展其产品市场(而云计算的理念正好提供了新的利润增长点(微软IBM等跨国公司正在全球布点(构建为全社会提供公共信息服务的云服务系统,。

什么是软件工程:

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。

在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。

软件的开发与运算模式与运行方式有着直接的关系,随着云计算技术的不断发展与推广,对传统软件工程产生了深远的影响,主要体现在以下几个方面:

对软件架构的影响:

目前,软件系统都是基于C/S技术的3层架构,数据服务层(DataAccessLayer,DAL),业务逻辑层(BusinessLogicalLayer,BLL),表示层(UserInterface,UI)。数据服务层提供持久服务,主要用于软件系统数据的存储与管理;业务逻辑层是3层架构中至关重要的一层,它起到了连结数据服务层和表示层之间的桥梁作用,主要用于数据服务层与表示层之间的数据互操作;表示层采用Win-dows窗体或Web浏览器,用于实现软件系统与用户之间的交互,为用户提供一种交互式的操作界面。在这种的3层架构中,中小型软件数据服务层和数据库都是放在同一服务器之上,数据的存储通常都是采用DBMS(DataBase  Managemant  System)或XML文档两种方式。这样的模式很可能在服务器发生不可逆的错误之后(自然灾害或者服务器硬盘发生错误不可修复)导致数据丢失。

随着云计算技术的发展,可以将软件的数据服务层移植到云计算服务中,这样,本地的服务器就可以只存储XML文件而不需要再存储庞大的DBMS软件,实现了软件数据的分布式存储,解决了传统3层软件架构中数据存储和数据服务同时放在一个服务器上带来的潜在问题。同时也提升了软件的安全性。

与此同时,业务逻辑层可以对本地服务器上的XML文档进行数据操作,也可以直接获取云计算服务中的数据服务,提升了软件架构的开放性。

对软件对象的影响:

云计算显著增加了软件对象的多样性,在云计算的架构下,数据服务层存储在云计算服务,而不再是存储在本地服务器的上,这意味着软件的对象不再依赖本地服务器的环境与形式而是由云计算服务所决定,这样就可以摆脱原有软件的束缚,而达到软件对象的多样性的目的。比如现在的研究方向之一的物联网,随着云计算的发展,软件的操作对象可以成为洗衣机也可以是冰箱,电视等等,可以是身边任意可以连上云服务的对象,让软件直接面对的对象大大丰富。

对软件过程的影响:

在云计算的模式下,软件工程在面向对象的基础上进一步抽象化,提升到面向服务的层次。 面向服务也就是将业务流整体分成子业务流,对子业务流级别的模块进行组织设计,并最终形成软件系统整体。面向服务使软件在IT 系统结构层次结构系统中更加接近应用。

通俗的说,云计算将软件的分成各个功能,从功能的层次上开始构建软件的轮廓,使得软件过程进一步抽象化。与此同时,软件的可复用程度得到了提升,每个功能作为各个模块可以为别的软件所利用,提高了软件的可复用性。

功能的模块化也提升了软件过程的动态性,根据不同的应用场景使用不同的软件功能模块,使得软件可以适用于多种不同的环境。在更新与修改程序功能时也可以直接通过更改相应功能的方式实现,提升了软件的灵活性。

对开发组织的影响:

在软件开发更趋向与面向功能的同时,软件的开发对于开发组织的要求会逐渐降低,趋于社会化。云计算将软件工程进一步抽象化,提升到面向服务的层次,软件的复用性显著增强,开发新软件的难度会显著降低。由大型的软件公司实现好各种可重用的功能,普通的开发者只需要根据自己的需要使用这些功能就可以按照自己的想法开发出适合自己的新软件,降低了软件开发的门槛,使得软件的开发组织逐渐社会化。社会组织诸如学校,政府,机构可以根据不同的需求而开发出适合的软件,让软件进一步普及,同时拥有更好的适应性。

对开发人员的影响:

正如上面所言,云计算将软件进一步抽象,提升到面向服务的层次,对于开发者而言会显著降低难度,开发者甚至不需要写很多的代码,只需要将自己需要的功能串联起来就可以形成自己需要的软件。这会使得软件的开发难度大大降低,开发者不需要太高的编程水平就可以编写出自己需要的程序,显然,开发人员会逐渐大众化。

有一点要注意的是,开发人员的大众化并不是说对于所有程序员而说,所需要的技能降低,门槛降低了。只是对一般人而说开发程序变得现实,变得触手可及,自己需要的软件可以实现。而对于开发这些功能模块的程序员而说,要求反而是提高了。如何提高程序功能的可复用性,可拓展性,将会给这些开发功能模块的程序员更大的挑战。

对于资源部署的影响:
         在云计算的影响,软件的数据服务层逐渐向云计算服务上迁移,同时软件对象也逐渐多样化,这意味着,对于资源的管理会趋于虚拟化,这是适应云计算框架的必然趋势。

总结:云计算由于其虚拟性,开放性对软件开发产生了深远的影响,将软件进一步抽象至面向功能的层次,降低了软件开发的难度,使得开发人员逐渐大众化,同时也因为其先进的资源管理机制使得软件更具开放,合理,安全。

引用:

1:Wikipedia软件工程,云计算 词条

2:百度百科 软件工程,云计算词条

3:《论云计算对软件工程的影响》     史杰,解继丽,史少华

4:《云计算环境下软件工程模式初探》   张勇

5:《云计算的软件架构研究》   章 俊,魏继伟,林和平

转载于:https://www.cnblogs.com/yexc/p/5991485.html

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

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

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

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

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

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

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

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

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

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

    既然我们要讨论这个问题,那就先要明确两个概念"云计算","传统软件工程"和一个"影响作用". 首先是"传统软件工程",通 ...

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

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

  7. 转载:云计算必将极大影响未来--云泉

    云计算是这几年一直比较热门的话题,本人从事过很长一段时间的云计算的相关研发工作,但是对于云计算在中国的发展情况与发展动向,一直比较模糊. 2010年4月13-14日我参加了Intel组织的" ...

  8. 云计算对电子商务行业的影响

    云计算电子商务的优点 首先, 云计算使得中小企业不必花很多成本在基础设施建设上.云计算为电子商务提供了具有自我维护和管理功能的虚拟计算资源, 也就是大型服务器集群, 可以利用云的计算能力来补充或取代电 ...

  9. 云计算机的发展对社会的影响,云计算对个人的影响有哪些

    云计算对个人带来的影响: 1.数据云化 个人只需连上互联网,即可检索自己的数据.工作等,不再局限于场所.设备,灵活处理工作与数据问题.而且在存储方面,利用云计算可以实现 2.弱化软件 个人可以通过云平 ...

最新文章

  1. mongodb windwos 安装(转)
  2. 【数据分析】可视化分类型变量,我一般使用这6种图形
  3. CImageList上的位图, CTabCtrl 还是用ICON好!
  4. Extjs4.1:模式窗口的设置
  5. JavaScript实现继承的方式,不正确的是:
  6. NX机制及绕过策略-ret2libc
  7. Android LinearLayout加载Fragment
  8. 计算机领域 热点应用,2017年度计算机科学各领域热点词汇
  9. Sentinel底层LongAdder的计数实现
  10. css 左边阴影_css揭秘-用户体验
  11. php 计算两点地理坐标的距离
  12. 咪咕音乐播放器 ubuntu 安装详解
  13. LibreELEC 10.0.2发布
  14. 【GPU结构与CUDA系列0】背景知识:GFLOPS,带宽,延迟和吞吐量,乱序执行,上下文切换,指令集体系结构
  15. 槃星—第1天任务—植物大战僵尸游戏数据修改(Hex Editor Neo)
  16. xxlJob定时任务,文章的上下架
  17. 解析鸿峰智能软件-------恒指
  18. Imperva WAF使用笔记
  19. custom_filter
  20. c语言一对多,NRF905一对多的有关问题

热门文章

  1. mg动画制作脚本时需要注意的事项
  2. python控制电脑程序,Python简单实现控制电脑的方法
  3. C++第10/11周项目 继承与派生 【项目1 - 点-圆-圆柱类族的设计】(复习新版)
  4. 自主招生计算机试题,2006年复旦大学计算机试题(自主招生)
  5. 紫外可见分光光度计种类的优缺点?
  6. Linux_任务计划作用和系统日志
  7. LVGL---对象(lv_obj_t)
  8. 深入理解 rootLogger、logLogger、qtLogger
  9. Qume-KVM虚拟化
  10. The consumer group has been created before, specify another name please RocketMQ异常