一、基本信息
标题:Object Constraint Language for Code Generation from Activity Models
时间:2018
出版源:Information and Software Technology
领域分类:UML;XML;OCL;活动图
二、研究背景
问题定义:如何在对象约束语言的帮助下改进UML模型的代码生成.
难点:将OCL合并到UML活动模型中
相关工作:提出了OCL表达式与UML活动图关联的元模型。实现了一个名为ActivityOCLKode的工具,它遵循代码生成算法。该算法在文中描述。
三、创新方法
1.本文提出的元模型给出了强大的理论背景,将OCL语句与UML活动图中的每个元素相结合。
四、实验
实验1:UML活动图中OCL表达式的元模型
要探究的问题:现有技术;运营合同的元模型;初始值的元模型;实例的元模型;实际参数的元模型;条件的元模型
结论:ExpressionInOcl类在以下元模型中用于表示OCL表达式。这是OCL规范和UML活动图规范的当前状态。
Constraint类与Action类相关联,其值为localPrecondition和localPostcondition,它们是UML2.x规范中定义的ownedElement 集合中的元素。这些约束是使用OCL表达式实现的。Constraint类Expression类相关联,并且是ExpressionInOcl 的超类。
初始值始终附加到分类器的属性/属性或关联端。元模型暗示可以使用OCL表达式表示属性/属性值。
可以使用OCL表达式表示每个参数。可以有一次OCL表达式对应于每个参数。
该DecisionNode类相关的保护使用的保护条件一流。DecisionNode和其他兄弟节点是ControlNode类的子类。决策节点具有零个或一个保护条件。这些保护条件使用OCL表达式表示。相同的方法可以应用于其他控制节点,如JoinNode,MergeNode等。
实验2:活动图
要探究的问题:ocl增强活动图的操作语义;
结论:我们通过扩展中给出的语义,使用有限状态机(FSM)定义OCL增强活动图的操作语义。状态变量和描述状态变量转换的一组谓词在FSM的描述中给出。状态变量将在每个状态下更改。使用谓词描述的转换函数给出了当前值与状态变量的下一个值之间的关系。
实验3:从OCL增强的活动图生成代码
要探究的问题:检查OCL表达式后,XML文档将用于代码生成;证明算法的正确性
结论:活动对象将从AG的XML文档中获取。如果没有对应于该对象的类,则将创建一个类。否则,将使用方法声明更新现有类并将其添加到源代码中SC。拍摄所有节点后搜索停止。将创建一个主类,并在其中嵌入main()方法。
该算法能够处理和生成具有OCL,决策节点,分支节点,连接节点,合并节点,初始和最终节点的活动节点的实现代码。该算法1.1接受带有活动节点,判定节点,叉节点的任何活动图,连接节点,合并节点,初始和最终节点,并将其转换为源代码。因此证明了算法的正确性。
实验4:自动代码生成器的实现
要探究的问题:OCL检查程序;ctivityOCLKode的核心
结论:我们检查前后条件,操作体和保护条件的语法。提及表达式的类型以及标记。如果有任何错误,将使用适当的错误消息向用户报告。然后,用户可以对OCL语句进行必要的更改并重新生成XML文档。这将持续到模型没有错误。
我们使用模型驱动开发方法来生成代码。该工具有助于使用活动图对流程流进行建模,然后将其转换为XML。该工具使用Java和XML进行平台特定建模(PSM)。该工具获取在检查和更正OCL语句之后构建的XML文档。重新生成XML后,不会单独处理OCL语句。对于代码生成,我们遵循上一节中提到的算法。代码生成器有两个主要组件; 执行逻辑生成器和方法定义生成器。
五、结论
作者的总结:本文提出的元模型给出了如何将OCL结合到UML 活动图中的清晰图像。所提出的算法为从OCL增强活动图生成代码提供了适当的指导。据我们所知,没有其他研究成果报告了从OCL增强的UML活动图中生成代码的精确算法。
ActivityOCLKode是基于所提出的算法实现的工具,为用户提供了用户友好的环境,以模拟基于过程流的软件系统。对该工具的评估表明,所提出的代码生成方法有助于我们生成超过83%的代码。当我们使用活动图添加OCL时,这会增加到84.4%。从OCL生成的代码非常重要,因为它包含方法定义和特定的前后条件。
自己的评价:从统一建模语言(UML)模型实现代码生成过程中百分之百的自动化将在软件行业中取得巨大进步。UML不使用完全形式化的语义。因此,在UML模型的自动实现过程中会导致模糊。使用对象约束语言(OCL)可以在很大程度上避免这些歧义。OCL是正式且用户友好的,这对业界人士来说也很熟悉。本文探讨了如何在对象约束语言的帮助下改进UML模型的代码生成。它还探讨了将OCL合并到UML活动模型中并从OCL增强活动图生成代码的可能性。
参考文献:
【1】L. Bichler A flexible code generator for MOF-based modeling languages 2nd OOPSLA Workshop on Generative Techniques in the context of Model Driven Architecture (2003)
【2】B. Davison, T. Ruckle Automated Code Generators Department of Computer Science, University of Minnesota (2006)
【3】MDA Guide Version 1.0.1 OMG (June 2003)
【4】W. Harrison, C. Barton, M. Raghavachari Mapping UML designs to Java Proceedings of the 15th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (2000), pp. 178-187 Pages
【5】E. Bjoraa, T. Myhre, E.W. Straapa Generating Java Skeleton From XMI Open Distributed Systems, Agder University College (2000)