云计算对传统软件工程的影响
Posted Avatara
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云计算对传统软件工程的影响相关的知识,希望对你有一定的参考价值。
如今的计算机硬件技术以一种无法阻挡的态势迅猛增长,随之而增长的还有计算机软件的需求,但用户对于软件功能的要求太多,以至于超过了软件技术能够满足的程度,从而使得软件产品在原有基础上不断改动增需,软件变得越来越复杂,以至于开发组织越来越难,从而导致软件危机。而云计算技术的出现恰好很大程度上解决了软件危机问题。在讨论云计算对传统软件工程的影响之前,我们先来了解一下云计算技术。
云计算(cloud computing),是分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。
一般来说,云计算具有以下几个特点:
(1) 超大规模
“云”具有相当的规模,Google云计算已经拥有100多万台服务器, Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户前所未有的计算能力。
(2) 虚拟化
云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。
(3) 高可靠性
“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。
(4) 通用性
云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。
(5) 高可扩展性
“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。
(6) 按需服务
“云”是一个庞大的资源池,你按需购买;云可以像自来水,电,煤气那样计费。
(7) 极其廉价
由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。
云计算可以彻底改变人们未来的生活,但同时也要重视环境问题,这样才能真正为人类进步做贡献,而不是简单的技术提升。
(8) 潜在的危险性
云计算服务除了提供计算服务外,还必然提供了存储服务。但是云计算服务当前垄断在私人机构(企业)手中,而他们仅仅能够提供商业信用。对于政府机构、商业机构(特别像银行这样持有敏感数据的商业机构)对于选择云计算服务应保持足够的警惕。一旦商业用户大规模使用私人机构提供的云计算服务,无论其技术优势有多强,都不可避免地让这些私人机构以“数据(信息)”的重要性挟制整个社会。对于信息社会而言,“信息”是至关重要的。另一方面,云计算中的数据对于数据所有者以外的其他用户云计算用户是保密的,但是对于提供云计算的商业机构而言确实毫无秘密可言。所有这些潜在的危险,是商业机构和政府机构选择云计算服务、特别是国外机构提供的云计算服务时,不得不考虑的一个重要的前提。
云计算是一种资源交付和使用模式,指通过网络获得应用所需的资源(硬件、平台、软件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取。这种特性经常被比喻为像水电一样使用硬件资源,按需购买和使用。最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱等,使用者只要输入简单指令即能得到大量信息。未来如手机、GPS等行动装置都可以透过云计算技术,发展出更多的应用服务。进一步的云计算不仅只做资料搜寻、分析的功能,更可计算一些像是分析DNA结构、基因图谱定序、解析癌症细胞等。稍早之前的大规模分布式计算技术即为“云计算”的概念起源。
云计算对于软件工程来说,比起一项技术,更像是一项服务,一项可以为软件工程提供各式各样资源的服务。运用了云计算技术的软件工程,有着如下几点特征:
1. 软件体系结构化,软件复用率提高
与传统的软件工程相比,基于云计算的软件工程的体系结构变得更加构件化以及开放性更大。在软件即服务(SaaS)模式下,云计算抽象了传统开发和集成中的低端任务,提供了标准化的、即装即用的解决方案。在开发软件时,开发者可以从云端获取足以完成其软件所需部分功能的构件,这些构件在被多方使用之后自然会收到反馈并由此进行改进,借此云端的构件会变得越来越成熟。在这种软件开发模式下,软件的体系结构基本上是完全处于分布式的,一个软件由客户端、服务端、管理端、开发端、测试端等各个不同的构件有机结合,也就是说,不同的软件完全可能享有共同的构件,这也使得应用之间没有了严格的物理边界。运用成熟的构件既可以显著地减少软件开发错误,增加软件可信度,又可以缩短开发时间,增加开发绩效。且运用了成熟构件的软件亦可以作为其他功能更为复杂的软件的构件,极大地提高了软件的复用率。如此,云计算技术很大程度上缓解了软件危机。
2. 软件更具多样性
云计算作为当代计算机界的热词之一,从事云计算的公司自然数不胜数,而想要在和如多同行的竞争中存活下来,就必须确保自己提供的服务和资源的质量。因此,软件开发者不需要投入过多精力关注开发自身软件所使用的构件的质量,其可以从无数的云端中挑选最适合自身需求的构件。有这样的开发条件,软件对象的多样性就得到了确保
3. 软件开发过程更为动态灵活
云计算的软件工程由于其软件开发所需的构件和资源都从云端获取,开发的过程就变得更为灵活。对于一个应用,软件部署、运行管理、维护和开发过程都是可以是并发的,这使得软件可以在很短的时间内进行更大规模的升级。
4. 更多人参与开发
一方面,采用基于云计算的软件开发的同时就意味着开发者放弃了对应用程序的部分控制权和自治权,将这部分控制权和自治权交由云平台运营商来掌握,也就是说软件的组织管理不再仅仅是开发者的任务了。
另一方面,云的普及使一个工程不再只是由单一方的开发者来完成,在将自己的工程于云端分享给组内成员的时候(确保安全的情况下),其他人也可以从云端查看这个的工程,若是感兴趣的话,自然会投入进去研究并提出相应的意见。这方面最著名的例子就是github。在一个软件工程的实施过程中,不仅同组内的人员可以随时更新其他人负责部分的代码,如果这个项目很有价值,还会吸引各路大牛的挑错和指导。
5. 软件开发更加简单
在传统的软件开发过程中,程序员的编程能力很大程度上决定了软件的好坏。因为只有程序员有着扎实的编程能力才能根据不同需求得出相应的解决方案,若是编程能力不足,则就会无法满足客户提出的不断更改的古怪需求。但是在基于云计算的软件开发中,大多数需求的解决方案都可以在云端找到,因此如何架构和设计自己的软件反而显得更为重要。
6. 软件开发成本降低
在传统软件开发的“用户—开发者”这种二元格局中,加入了第三方云计算服务之后,很多需要开发者承担的成本便转移到了第三方云服务上。云计算模式下的软件开发和运行环境基本上都是由云计算服务来架构的,这些资源按照开发者的要求来进行配置,开发者也就省去了硬件设施架构、运行环境调试等工作。软件构件的更新和维护都交给了云计算服务,为开发者省去了大部分的维护成本。甚至,由于云计算环境下,软件开发工具、环境、工作模式发生了转变,也就要求软件测试的工具、环境、工作模式也应发生相应的转变。因此,软件的测试工作也是交于云平台完成的。
云计算技术为软件开发提供了极大的便利,也很大程度上缓解了软件危机。但是,云计算依赖的软件工程独立性相对较差,若是云平台出了问题(这个情况并不少见),软件将会受到很大影响。因此,对于一些大型公司来说,构建一个属于自己的云便是重中之重了。
参考资料:
[1]Wiki百科:云计算
[2]百度百科:云计算
[3] http://mt.sohu.com/20161018/n470588115.shtml
[4]http://wenku.baidu.com/link?url=HuttqAhavipCddkmXEPWASrNjtFbzONH4vOPq9_CSFg-UWdQ0PJSO6Dd5a6dCebWgcxZ52tcJKA__O_3vPzerFi1SKFEWsCp-E1d-KwJKGG
[5]史杰. 论云计算对软件工程的影响[A]. 昆明学院学报,2011,33(6)
以上是关于云计算对传统软件工程的影响的主要内容,如果未能解决你的问题,请参考以下文章