一、基本信息

标题: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)

Object constraint language for code generation from activity models的更多相关文章

  1. JVM Object Query Language (OQL) 查询语言

    Object Query Language (OQL) OQL is SQL-like query language to query Java heap. OQL allows to filter/ ...

  2. MySQL主从复制中断,报“Error on master: message (format)='Cannot delete or update a parent row: a foreign key constraint fails' error code=1217” 错误

    前几天,发现从库挂了,具体报错信息如下: 分析思路 1. 因为我采用的是选择性复制,只针对以下几个库进行复制: card,upay,deal,monitor,collect.所以,不太可能出现对于sa ...

  3. Code Generation and T4 Text Templates

    Code Generation and T4 Text Templates Code Generation and T4 Text Templates

  4. salesforce零基础学习(七十五)浅谈SOSL(Salesforce Object Search Language)

    在工作中,我们更多操作的是一个表的对象,所以我们对SOQL的使用很多.但是有时候,我们需要对几个表进行查询操作,类似salesforce的全局搜索功能,这时,使用SOQL没法满足功能了,我们就需要使用 ...

  5. 如何在 PhpStorm 使用 Code Generation?

    實務上開發專案時,有一些程式碼會不斷的出現,這時可靠 PhpStorm 的 Code Generation 幫我們產生這些 code snippet,除此之外,我們也可以將自己的 code snipp ...

  6. 【Spark】Spark性能优化之Whole-stage code generation

    一.技术背景 Spark1.x版本中执行SQL语句,使用的是一种最经典,最流行的查询求职策略,该策略主要基于 Volcano Iterator Model(火山迭代模型).一个查询会包含多个Opera ...

  7. Orchard Core 文档翻译 (二)代码生成模板 Code Generation Templates

    Code Generation Templates 翻译原文:https://www.cnblogs.com/Qbit/p/9746457.html转载请注明出处 Orchard Core Templ ...

  8. Spark SQL includes a cost-based optimizer, columnar storage and code generation to make queries fast.

    https://spark.apache.org/sql/ Performance & Scalability Spark SQL includes a cost-based optimize ...

  9. 记一次antlr错误:ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.2ANTLR

    场景:重构spark 2.1版本的sql语法.因此 需要使用antlr: 前期准备:idea安装了antlr插件(antlr的4.7.2版本) 因此在maven工程中添加了antlr的依赖: < ...

随机推荐

  1. C#客户端和服务端数据的同步传输 (转载)

      客户端: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;u ...

  2. 利用ELK分析Nginx日志

    本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意 ...

  3. NetCore+MySql+EF 数据库生成实体模型

    NetCore版本    2.1 1.点击“工具”->“NuGet包管理器”->“程序包管理器控制台” 分别安装以下几个包 Mysql 版本: MySql.Data.EntityFrame ...

  4. # 2018-2019-20175302实验一《Java开发环境的熟悉》实验报告

    2018-2019-20175302实验一<Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java ...

  5. 实时ETL

    传统的ETL通常采用批处理的方式,一般来说是每天的夜间进行,当天的数据要到第二天才可以获得.随着数据仓库技术的逐步成熟,企业对数据仓库时间延迟的要求更高,希望达到零延迟,也就出现了实时ETL. 实时E ...

  6. Winform 时间

    using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawi ...

  7. 阅读:JAVA 3& 4

    随机数: Random rand = new Random(47); // 产生随机算子.47 is seed. for incovating predicatable random numberin ...

  8. .Net代码控制PrivateBinPath和ConfigurationFile的位置

    .Net的WinForm程序有的时候让人很烦的是,在执行目录下总是一大堆的DLL,配置文件,最少则是个以下,多的时候怕有四五十个吧……,自己程序中的类库,第三方的类库……加载一起让人感觉乱糟糟的,非常 ...

  9. Odoo domain 中的 like, ilike, =like, =ilike

    Odoo domain 中的 like, ilike, =like, =ilike 举例说明[转]   Odoo domain 中的 like, ilike, =like, =ilike Odoo d ...

  10. 010Edit手写PE

    前言PE结构DOS头IMAGE_DOS_HEADERPE头介绍总大小[248字节]结构体含义标记(4字节)0x4550文件头(20字节)扩展头(224字节)为程序添加ExitProcess函数 前言 ...