云计算时代对传统软件工程的冲击
所处的web2.0以及即将演化而来的so-called sematic web(web3.0)的时代对我们的日常生活的巨大推动力随处可见, 而由其所定义的新的商业模型-即通过出租硬软件计算平台和服务获取利润的云计算模式-已经广泛的被实践于商业领域,而由于互联网的介入,传统的软件工程领域面临非常大的冲击, 许多的开发设计方法和经验模式没法匹配云计算对软件的架构开放性、 软件对象的多样性、软件过程的动态性,开发组织的社会化,开发人员的大众化, 资源部署虚拟化的诸多要求。而云计算凭借部署方便快捷,成本低廉,维护简单等特点备受青睐。从以下软件工程和云计算的特点的对比中,我们可以深切体会到互联网时代里对传统软件工程的重新定义。
云计算特点
在web2.0时代里, 一些web技术的出现激发了人们对网络的创造性的使用。在 Web 2.0 中,编写的元数据XML (可扩展标记语言) 描述 web内容可以由计算机自动进行读取和处理。 其他基于 XML 的 web 协议,如服务面向的架构 (SOA),简单对象访问协议(SOAP),web 服务描述语言 (WSDL) 等能够将不同计算平台,不同系统和众多语言整合起来。基于这种数据整合能力,应用程序部署和交付的互联网化也逐渐被概念化。应用可以宿主在web上并且不同地域的人们可以通过internet随时访问, 这也就逐渐形成了web services 的雏形。
而在新的一种商业模式中,应用程序开发的基础设施, 如处理器,存储数据库,内存,操作系统和软件开发工具甚至时软件等资源被分布于web提供给用户。 这也就是我们称之为云计算的新模式。
云计算是未来计算的趋势。不同的资源共享,不同的客户对象,定义了4 种主要的云计算类型。在云计算术语里 如通过提供硬件处理器、 存储和网络作为服务称为基础设施即服务 (IaaS)。IaaS 的例子亚马逊公司的弹性云计算 (EC2);当编程平台和工具被提供作为服务则称为平台即服务 (PaaS) ;当应用被提供为服务时,被称作应用软件即服务 (SaaS),;以及Data storage as a Service (DaaS) 比如亚马逊简单的存储服务 (S3)。
云计算基于面向服务的体系结构 (SOA) 和 Web 2.0虚拟化的硬件和软件资源 (如下图 )。利用虚拟化技术,用户可以动态地链接不同的应用程序以及在不同的操作系统上运行的物理资源。虚拟化技术可以实现物理资源在用户间共享,也能够实现有效的资源管理、资源利用和可扩展性上的需求、提高资源利用率、 降低成本的地板空间、 电源和冷却成本。可以说,今天的云,积聚着力量倡导着生态友好型绿色计算,可谓诱人之极。
而且,云计算不仅降低了使用资源的成本而且还降低了用户的资源维护成本的, 而且提供了极大的延展性(scalibility)。 由于云计算的诸多属性,其催生的极大的商业效益也是很可观的。世界领先的 IT 公司,像微软、 谷歌、 IBM、 SalesForce、 HP 和亚马逊都在部署自家的云服务 ,而且由诸多Web 服务应用程序,如Hadoop 和 Mashup 可以运行在这些云上。由于所有它的优点,云计算模型可能是普遍的计算模式的未来。
云计算时代的软件工程
引用【1】中,作者对当代软件公司在云计算的生存状况进行了调查
they present framework activities for designing applications based on discovery of semantic web service using software engineering methodologies. They propose generating semiautomatic semantic description of applications exploiting the existing methodologies and tools of web engineering. This increases design efficiency and reduces manual effort of semantically annotating the new application composed from web services of multiple enterprises.
Salesforce.com finds that agile process model works better on cloud computing platform. Before cloud computing, release of the SW to the user took time and getting feedback from the customer took more time which thwarted the very concept of agile development. Whereas now a new releases of the SW can be uploaded on the server and used by the users immediately.
从以上的引用中,我们可以很容易看出,这些在cloud computing 盛行的时代里存活下来的传统软件公司,都在积极寻找适应这个时代需要的software engineering skills。尽管如此,作为IT领域新型的计算模式,传统软工在云计算平台的挑战人们还没有完全的进行探索, 迄今还没有很完美的软件开发过程及方法被完整的提出。
在极具变化性和要求敏捷性的云计算平台和云服务里, 软件开发将会非常具有挑战性。软件开发过程将会涉及不同平台,分布式的网络服务,异域分布的用户, 传统的开发模型和框架行为将难以满足需求,除非云提供商在此方面提供更多的交互功能服务。
在云计算时代之前, 需求搜集阶段仅涉及用户,顾客, 及软件工程师, 现在除了这些人的参与, 还得加上云服务提供者,因为他们是硬件和服务的提供者和维护者。又因为仅有云服务提供者明晰架构的细节和虚拟化技术以及资源的有效利用, 在计划和涉及阶段又必须有云服务提供者介入。这样在开发人员确定,组件重用,成本估算,计划调度,风险评估,配置管理,质量控制等过程都会有他们的身影。这也是云计算时代软件开发的一个特点。
云计算给软件开发方面带来的也有积极影响。由于开发和测试阶段特有的独立性, 可以利用云的特点,每个参与者都可以很快捷方便地访问所有的资源, 加快开发测试的速度和降低测试和validation的时间成本。比如git生态圈就是很典型的例子。
结论
云计算凭借自身的优越性催促传统软件工程进行着范式转换,这将使得软件开发过程更具挑战性,因为他们不得不增加过程中与云服务提供商的交互,而这一过程挑战性巨大。尽管,开发软件的工作量得到了减少,但随之而来的是不得不更多的交流和协调工作。在可见的未来,希望能有比较完美的云计算时代的软件开发的成熟过程及相应的服务支持。
参考文献
《1》 Guha, R., Al-Dabass, D.: Impact of Web 2.0 and cloud computing platform on software engineering. In: Proceedings of 1st International Symposium on Electronic System Design (ISED) (2010)
《2》 Niemann, B., et al.: Introducing Semantic Technologies and the Vision of the Semantic Web, SICoP White Paper (2005)
《3》 Introduction to the Semantic Web https://www.cambridgesemantics.com/semantic-university/introduction-semantic-web
《4》 M. Brambilla et al. A Software Engineering Approach to Design and Development of Semantic Web Service Applications
《5》 https://en.wikipedia.org/wiki/Cloud_computing
《6》 Salesforce.com. Agile Development Meets Cloud Computing for Extraordinary Results. www.salesforce.com