云计算对传统软件工程的影响
0. 云计算
云计算这一名字源流较为复杂,据传由谷歌于2006年提出。云计算的出现是信息技术领域的重要发展。借助于网络和虚拟化等技术,云计算实现了对软硬件 资源的集中化、动态化和弹性化管控,建立了从硬件资源到软件应用的整合一体化的全新服务模式。这种服务方式给传统信息技术的诸多领域带来了新的机遇与挑战,软件工程就是其中一个重要的方面。软件危机在本质上就是由于用户对软件功能的要求超出了软件技术所能满足的程度,使得软件产品过于复杂,以至于开发组织难以控制。软件工程就是为了解决软件危机而诞生的。软件工程的发展已经形成了工业化的流水线形式格局,而云计算的出现,为传统的软件工程提供了一个重大的变革契机。云计算会不会就是软件工程从业人员苦苦寻觅的克服软件危机的“银弹”呢。
1. 软件架构开放性
云计算使得软件开发具有了前所未有的开放性。软件的体系结构呈现分布式的形式。在云计算的整个“生态系统”中,不同的软件甚至可以共享一些公共的软件成分。这些软件拥有模糊的物理边界而保留相当清晰的逻辑界限。在软件开发的各个基本阶段,需求阶段将占据较大的工作量比例。架构设计基本可以从已有的成熟架构模式中选型确定,详细设计可以借用大量的成熟构件和代码。随着软件复用程度的提高,软件测试的工作量将大大降低,而软件质量却能得到有效提升。在网络环境下,软件开发从封闭的计算机平台走向互通、互联、协作的网络平台环境。网络不再仅仅只具备信息传递的功能,而逐渐拥有运算和服务的能力。软件开发从网络边缘走上网络中心,网络成为虚拟的超级开发平台,云计算使之得到最大程度的体现。
2. 软件对象多样性
软件在开发的过程中显示出构件化的特征。在实际的软件开发过程中,程序员可以利用大量现成的软件构件,而新开发的构件又可以供来者使用。在面向对象的云计算软件工程中,对象设计是对系统所要实现的各类对象进行具体描述以及精细化,并标识已有的对象,分析对象和已有的对象和商业外购的对象的差异。其过程包括两个部分。第一是复用,标识设计模式和已有的或能进行商业外购的构件,在设计以及实现的过程中,选择具体的设计模式和构件。第二个是接口规格说明,定义每一个类的接口。通过描述每一个类的实现者、扩展者、用户、类型、方法、前置条件、后置条件等形成类图。
3. 软件过程动态性
在云计算环境下,软件开发生命周期模型中的例如并发模型、多重螺旋模型等将成为主流。瀑布模型、迭代模型等的使用将会越来越少。在软件部署后,交付的都是中间版,软件升级成为常态。软件开发的流程将不再是一个封闭的、全局控制的流程,而是存在多个并发和自治的流程。在一个项目中,自底向上、自顶向下有机集成,对于一个特定的应用,软件部署、运行管理、维护和开发过程都会是并行的。第一次部署的可能只是一小部分功能,在随后的软件升级中不断完善。
4. 开发组织社会化
云计算软件开发模式下,公共服务软件、基础设施的开发和维护将由专业的机构或者公司负责。这种模式将会很大程度地优化社会分工。软件开发工具由云计算服务商统一提供。开发组织无需购买永久性的软件许可,只需在开发周期内按需租用云服务商的软件许可,这样可以大大降低软件工具费用,也将在很大程度上降低软件产品的最终成本。在 PaaS 的平台中, 开发者有可能写很少的代码甚至不需要代码,而只需按照业务流程对平台中提供的各类资源进行设计 和组织即可。
5. 开发人员大众化
开发过程中,用户和开发人员之间的角色划分不会像从前那样的鲜明。早期的软件开发较为简单,开发效率依赖于程序员的个人才智。随着计 算机性能的提升和应用的扩展,软件的比重不断提高,无论是软件的规模还是其复杂程度,都非单枪匹马千里单骑者所能企及。软件工程是解决这一问题的有效手段,其长久的历史证明了它在抗击软件危机中的中流砥柱的地位。随着云计算的发展,越来越多的人可以参与到软件的设计和开发中。用户可以参与到软件的设计和实现中,设计和实践人员通过在云上广泛地交流信息和资源来获得更好的思路和方法。程序开发者人尽皆知的github,虽然不知道能否被算作是一个云计算平台,但是它体现了云计算软件工程开发人员大众化的特点。
6. 资源部署虚拟化
云计算技术的虚拟化手段很大程度上提高了软件复用和重新部署的效率。云计算软件按照用户需求随时运行。软件运行平台采用目前非常成熟的虚拟化技术,在客户端可以产生多种虚拟环境,用户可以根据自己的喜好来选择。服务器端可以把大规模的服务器系统虚拟化为单一处理单元和连续的存储单元,以降低用户端的管理复杂程度。云计算可以提高计算机的主机效率,因为云计算的技术核心其实是虚拟化技术。使用虚拟化技术可以在内部建立多个虚拟机,对于软件系统的构建管理有着非常重大的帮助。而且,在联网的情况下,它还可以在物理机和虚拟机之间相互操作,在方便实行管理的同时,大大的降低管理的成本。
7. 回首与展望
云计算本身所具有的价值,和它在软件系统构件和管理中的价值一样,都举足轻重。IT科学技术发展风起云涌,云计算恰恰就在风口浪尖,它的发展蕴含着不容小觑的力量,并且正在向着普罗大众的日常生活走来,通过数据处理乃至于软件工程,每一秒都在直接或者间接地影响着每一个人的生活。云技术一往无前之时,所有人都不应该被冲昏头脑,应该审慎地评估云计算所带来的风险,例如潜在的安全威胁。对于云计算,我们都应该放下狭隘的观点,正视它所带来的好处和坏处。并且,我们也要相信,解决软件危机的银弹很有可能就出现在云计算不断发展的历史进程中或者就是云计算本身。
8. 参考文献
[1] 史杰,解继丽,史少华.论云计算对软件工程的影响[A].2011
[2] 张勇. 云计算环境下软件工程模式初探[A]. 太原: 北方自动控制技术研究所,2009
[3]贾昆霖.云计算发展对软件工程构建系统的影响分析[A]. 惠州:惠州商贸旅游高级职业技术学校,2012
[4]吴成铠.一种云下的软件开发与部署方法研究[D].武汉:华中师范大学,2013:16-17