一、基本信息

标题: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. Codeforces Round #436 B. Polycarp and Letters

    题意:给你一串长度为n的字符,由大小写字母组成,求连续的小写子串中不同字母个数的最大值. Input 11aaaaBaabAbA Output 2 Input 12zACaAbbaazzC Outpu ...

  2. Form-encoded method must contain at least one @Field.

    https://blog.csdn.net/liunian823/article/details/80290855 记得之前遇到过这个问题,并且记录笔记了,这次再翻笔记,却没有找到...搜索 了下. ...

  3. 拦截过滤防御XSS攻击 -- Struts2.3 以及 2.5 的解决方式

    使用Struts2框架开发的后台在防御XSS攻击的时候很多方式都不能用,因为Struts2对请求进行的二次封装有区别.以下针对Struts2的XSS攻击进行拦截过滤防御解决: Struts2.3 本方 ...

  4. mpvue前期准备

    一.配置环境: 1.下载node.js,去官网上下载相应的版本.http://nodejs.cn 2.安装就是下一步下一步,检查是否安装成功,打开cmd.输入  node -v 会出现版本号. 3.推 ...

  5. 20175126《Java程序设计》第七周学习总结

    # 20175126 2016-2017-2 <Java程序设计>第七周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第八章,本章主 ...

  6. Python开发【第十一篇】:MySQL

    数据库介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的API用于创建.访问.管理.搜索和复制所保存的数据.每个数据库都有一个或多个不同的API ...

  7. 关于fftshift----将零频率的分量移到频谱的中心

    fftshift 作用:将零频点移到频谱的中间 用法: Y=fftshift(X) Y=fftshift(X,dim) 描述:fftshift移动零频点到频谱中间,重新排列fft,fft2和fftn的 ...

  8. 轻量级富文本编辑器wangEditor

    开发公司一个系统的时候需要一个富文本编辑器,找了几个,最后选择这个,蛮不错的. 百度搜索wangEditor,进入官网根据所介绍的使用进行开发就可以了,很不错的一个工具.

  9. vuex中store保存的数据,刷新页面会清空

    用vuex,项目中需要记录一些状态,来判断页面是否为登录状态和页面是否可被编辑,此时用到了vuex中的store来存储一个状态. //首先 安装vuex npm install vuex --save ...

  10. 查看 设置mysql时区

    # 查看时区 show variables like '%time_zone%'; system_time_zone CST time_zone SYSTEM # 设置全局 set global ti ...