您好, 访客   登录/注册

基于扩展Petri网的软件服务模型设计方法

来源:用户上传      作者:

  摘  要:为了提高复杂软件服务系统的构建效率,文章提出了一种基于扩展Petri网的软件服务模型设计方法。首先,该方法将注册的软件服务转换成Horn子句,并将用户需求转换为Horn子句的事实和目标,接着通过逻辑推理来构建完整的软件服务流程,将得出的Horn子句映射至扩展Petri网上,构建出满足用户需求的抽象服务集,最后通过案例验证了该方法的可行性。
  关键词:软件服务模型;Petri网;Horn子句;抽象服务集
  中图分类号:TP18         文献标志码:A         文章编号:2095-2945(2020)05-0087-02
  Abstract: A service model design method based on extended Petri nets is proposed in this paper. First, the registered service is converted into a set of Horn clauses, and the input and output parameters provided by the user are converted into a set of facts and goals in the Horn clause. Then, this paper constructs a complete service process by logical reasoning, maps the Horn clauses obtained to the extended Petri network, and constructs an abstract service set that finally meets user expectations. Finally, a case is given to verify the feasibility of the method.
  Keywords: software service model; Petri net; Horn clause; abstract service set
  随着用户需求的个性化程度的提升,软件服务系统的构建难度日益增加[1-2]。用户除了关心功能性方面的可满足性外,对非功能性发方面的可满足度也越加关注。针对这一问题,本文提出了一种基于扩展Petri网[3]的软件服务模型设计方法,利用Petri网直观的图形建模方式,以及异步和并发的特点,将其运用至服务组合[4]问题上,并结合Horn子句和T-不变量对软件服务组合过程中的过程进行逻辑推理,最终构建出一组满足用户期望的抽象服务集。
  1 基于扩展Petri网的软件服务模型
  该模型架构分为三层,查询层、抽象层和具体层,如图1所示。查询层是用户层,在该层将用户的输入转换为机器可识别的语义软件服务,它由提供给用户一个表达和提交查询语句到软件服务接口的关系集合组成,可使用一种从XML文档中抽取数据查询语言规范XQuery来构造。然后根据用户的输入和输出请求的合成服务转换为Horn子句的事实和目标,从而进行逻辑推理推算出可能的抽象服务。
  抽象层负责将软件服务的非功能约束扩展到经由Petri网转化的抽象服务流程中,构建一套含有非功能性约束的抽象服务流程。具体层存在着与抽象层对应的各个具体的服务,可以实现用户的实际功能。这些服务由一些服务提供者或者是服务生产厂商提供。他们将开发后的具有某一功能的服务发布到服务注册中心中,供需求者远程调用。
  2 抽象服务流程构建
  2.1 Horn子句逻辑推理
  Horn子句可以接受用户输入的标准化参数,将非关系语句转换为数学上的逻辑推理问题,Horn子句有三种描述形式规则、事实、和目标,推理流程如图2所示。通过这三种规则,Horn子句每次最多接受一组分析数据,每次的到一个关联关系,一个规则化的Horn子句如式(1)所示。
  其中,Pi和Q都表示着逻辑上的命题,∧和->表示着数学上的逻辑连接符,它们分别代表归并和推出关系。在这个式子中,如果所有的命题P都被满足的话,就可以推出结论Q为真。
  2.2 Petri网的Horn子句推理
  在Horn子句网Petri网上的转化中,先通过算法1求解与Horn子句相互兼容的T-不变量集和。然后根据算法1结果,通过算法2求解最终的Petri网模型PNcs。
  输入:服务组合对应的Petri网关联矩阵C,T-不变量Xi∈XSc.
  输出:Xi对应的合成服务的Petri网模型PNcs.
  Step1. 删除关联矩阵C中除Xi中不变0的变迁所对应的行以外的其他行,得到一个新的矩阵,记为C''.
  Step2. 删除矩阵C''中元素全是0的那些列,得到矩阵C''.
  Step3. 根据矩阵C''',我们可以得到一个Petri网模型PN''',并用每个变迁对应的规则的部分附属参数<ServiceName,QoS>标记该变迁.
  Step4. 合并网PN'''中那些标记一样的变迁(表示这些变迁代表同一个软件服务),即将PN'''中所有标记一样的变迁用一个新变迁表示。该新变迁的前集和后集分别是所有原变迁的前集和后集的并集,新变迁的标记不变。将新的Petri网模型标记为PNcs.
  3 案例分析
  根据上述的模型,我们模拟了一个服务组合案例,在该案例中,我们模拟了7个可用的软件服务和该用户对该场景下的输入参数请求,这7个软件服务均会接收对应的输入参数,输入正确的参数后会产生一个输出的参数。每一个服务都会有相应的行为约束。
  通过上面的建模方法,我们建立一个包括10条Horn子句的子句集:
  根据这10条Horn子句,构建出Horn子句集的Petri网模型如图3所示。
  利用上面提到Horn子句集到Petri网的转换程序,我们可以得到该子句的Petri网模型关联矩阵。上述子句集对应的Petri网模型如图4所示。
  通过提出的模型与算法,最终构建出了一套符合用户期望的抽象服务集,验证了方法的可行性。
  参考文献:
  [1]王宁.基于Web的领域知识图谱构建平台的研究与实现[D].北京邮电大学,2019.
  [2]Xu X, Motta G, Tu Z, et al. A new paradigm of software service engineering in big data and big service era[J]. Computing, 2018,100(4):353-368.
  [3]韓敏,孙国庆,郑丹晨,等.一种基于时变Petri网的服务组合质量检验方法[J].软件学报,2019,30(08):2453-2469.
  [4]宋航,王亚丽,刘国奇,等.基于改进多目标蜂群算法的软件服务组合优化方法[J].东北大学学报(自然科学版),2019,40(06):777-782.
转载注明来源:https://www.xzbu.com/1/view-15121034.htm