论文部分内容阅读
面向服务架构(SOA)为开发与维护日益复杂的企业应用软件提供了有效解决方案。因此,基于SOA的技术得到广泛应用,如何有效地保证基于SOA的服务化软件质量也日益受到重视。但是,企业应用的分布式特性与SOA自身特点,给服务化软件质量保障带来新的挑战。 测试与静态检测是保证软件质量的两种重要方法,由于SOA利用松耦合、自治、可粗粒度复用的服务构造分布式应用,使得服务化软件的测试面临诸多新困难。已有的服务测试研究工作,并不能解决诸如对服务运行平台的可控程度弱、在线测试代价大与风险高等困难。而保证软件质量的静态检测方法可以避免这些问题。因此,采用静态方法检测服务化软件的缺陷具有实际意义。 静态检测服务化软件缺陷的方法,适用于检测预先设定类型的缺陷。已有的工作检测了诸多类型的缺陷。因此,静态方法可以检测不适合或不能通过测试来发现的缺陷,这对于降低测试服务化软件代价,提高服务化软件质量具有重要意义。针对已有的静态检测工作尚未解决的服务化软件的并发缺陷、引用环路与会话缺陷等,本文根据服务化软件的结构特点,探讨静态检测这些缺陷的方法。具体工作概述如下: 1.针对服务化软件并发缺陷,提出一种轻量级静态检测技术。该技术在总结服务化软件中复杂数据依赖关系与控制依赖关系基础上,用消息传播图对服务化软件数据流建模;基于消息传播图与控制依赖关系,用活动依赖关系图对程序中活动时序关系建模;从活动依赖关系图构造可并发运行的活动序列分组集合,以该集合为基础检测服务化软件并发缺陷。 2.针对服务引用环路,提出一种轻量级静态检测技术。该技术通过扩展服务接口描述的信息,提出并实现了预防服务新增引用环路的策略,在此基础上,检测服务集合中服务引用环路。 3.针对服务化软件会话缺陷,提出一种轻量级静态检测技术。在归纳总结服务运行平台消息路由机制、服务化软件通信模式以及消息关联机制等对服务会话影响的基础上,抽象出服务化软件正确会话的必要条件;利用消息端点对服务化软件中接收与发送消息的活动建模,以及用消息端点时序关系图对服务化软件建模,根据消息端点时序关系图生成服务化软件所有可能的消息端点序列,利用正确会话的必要条件来判定每一消息端点序列是否存在会话缺陷。 实验结果表明本文提出的静态检测服务化软件并发缺陷、会话缺陷的方法能有效地检测对应类型的缺陷。此外,本文从理论上论述了所提出的服务引用环路预防与检测方法的正确性。