BPEL流程的故障模式及其静态分析技术的研究
【摘要】:Web服务已经成为我们生活中的重要组成部分。面向服务计算的目的是通过组装独立的、松耦合的服务为构建软件提供基础。由于任何软件开发活动,包括开发组合服务,都需要执行应用的质量评估策略,尤其是验证和测试。服务组合是一个能够提供包括语言、规范等多种功能在内的SOA当前的一个发展趋势,它具有异构性、开放和分布式等鲜明特征。服务组合的出现和发展为未来的软件发展指出了演进的方向,同时也为工业界和学术界提出了新的任务和挑战。保证组合服务的正确性执行以及相关特性的验证问题显得尤为重要。
随着基于BPEL的组合服务在业界的日益普及,并逐渐成为企业应用集成的重要组成部分。各种组合流程经常表现的不尽人意,呈现出脆弱、难以置信的特征,甚至会给企业带来不可挽回的经济损失。对于像BPEL这种安全性要求极高的业务应用,也许一个很小的错误,就会造成重大的经济损失。因此,研究提高组合流程可信性技术成为十分重要的头等大事。
目前,服务组合技术还远未成熟,要想在大规模的商业中实现有效应用,还有许多关键技术和具体问题需要突破。任何企业和个人都无法保证所开发的业务流程一定没有问题,能够在开发的早期发现错误,便可以减少大量严重错误的发生几率,减少企业的经济损失。已经出现的模型检测技术和各种各样的动态测试技术,尽管能够对一定规模的流程进行验证,但这些方法在某种程度上都存在一定的局限性,比如流程规模(一般只适用于较小流程)和测试开销(测试费用昂贵)。而基于缺陷的软件测试技术,不需要运行被测系统,而且可以避免模型检查和组合路径的状态爆炸问题,通过对缺陷建模以及精确的检测算法,可以检测出流程中存在的相应缺陷,从而进一步提高对流程可靠性的可信度。在这种背景下,本文从组合流程中可能存在的缺陷方面入手,集中对服务组合语言BPEL中的缺陷及测试进行了深入而系统的研究,并取得了一系列有价值的研究成果,概括起来主要包括以下几个方面:
(1)在对BPEL规范、语法、语义等进行理解和分析的基础上,结合现有的对组合服务的故障分类,首次提出了基于缺陷的BPEL静态检测方法,确保流程在部署之前进行全面的检测,减少故障发生的几率。除了BPEL规范中给出的94个缺陷,我们又针对性的提出了16个BPEL缺陷。
(2)针对上面提到的110个故障提出了一种通用的缺陷检测方法:采用扩展的有限状态机(EFSM)对缺陷进行建模,沿着状态机的变迁条件对BPEL源代码进行检测。为了在控制流图中表示BPEL并发和同步的语义,对传统控制流图进行了扩展。实现中统筹考虑,将link语义和路径条件有机集合起来,提高了检测的精度;
(3)数据竞争作为困扰并发语言正确性的因素,在时间戳的基础上,采用向量时钟获得活动之间的发生序关系,为确保存在数据竞争的活动实际能够执行,减少数据竞争的误报,对事件增加了权值,进一步提高了检测效率。
(4)除了单一流程内部的控制依赖死锁,还对流程间的死锁进行了深入分析,提出了“流程摘要”的概念,用以记录流程执行信息。该信息只与具体缺陷相关,从而在进行流程间的缺陷分析时,仅通过“流程摘要”便可以检测出流程间的通信问题,减少全面流程依赖图分析的系统开销。
除此而外,本文还对组合服务产生的背景、研究现状、研究热点以及其它相关问题进行了高度的概括和总结,对全面认识和把握基于BPEL的组合web服务具有积极的作用。