模型驱动工程范式认为软件开发生命周期由工件(需求规范、分析和设计文档、测试套件、源代码)支持,这些工件是表示要构建的系统不同视图的模型。存在一个由模型转换驱动的(半)自动构造过程,从系统的抽象模型开始转换直到生成一个可执行的模型。

本文关注模型转换,尤其是它们的验证,要验证的最低要求是转换以及源模型和目标模型都是很好地形成的。通过一个案例研究来举例说明那些可以是在模型转换中可以验证方面以及如何验证它们。最后,我们得出结论,需要一个集成的环境来处理模型转换的异构验证。

我们首先在第2节中详细介绍了审查过程。然后,在第3节中,我们将快速查看模型转换并定义一个运行示例。

第二节是文献审查

这一节回答了用哪些策略处理模型转换的验证,以及试图解决什么样的问题?

该过程分为两个步骤进行:(a)电子数据库中的Web搜索;(b)对执行Web搜索结果的作者、会议和引用进行并行搜索。

第一步通过“模型转换”和“验证”以及它们的同义词构造一个搜索查询,在scopus、scienceDirect、Springer等数据库中搜索。

第二步寻找【2】中引用的论文以及确定与该主题相关的作者和会议来加强第一步。在作者的个人网页以及DBLP数据库中进行搜索,找到了一些技术报告和小会议材料,跟随一些作者工作的发展。

第三节是 模型迁移的简单介绍

MDE生态系统中所有东西都是模型,模型是系统或其环境的抽象。每个模型(包括元模型)都符合元模型。

模型,实例,元素,条件的表示方法

图一左侧是UML类图,介绍类,属性,关联,约束

图一右侧是关系模型,介绍表,列,主键,外键

模型转换也可以被视为模型,模型转换(基于面向数学的概念)与程序转换密切(采用面向对象的方法)相关又有不同
Klepe等人[51]对模型转换的定义:源模型--(规则)-->目标模型
图二介绍模型转换涉及到的模型以及它们的关系。
转换有多种,只考虑模型的转换。
模型转换可用的范围很广
模型转换有多种可变性:双向,多输入,多输出,策略可以是确定的,非确定的,交互的……
转换规则作为源元素和目标元素之间的数学关系

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

翻译

每一个传统的软件开发生命周期都由许多工件(例如需求规范、分析和设计文档、测试套件、源代码)支持,这些工件主要用作开发的指南以及与利益相关者的通信工具。
模型驱动工程(MDE,[49])范式通过设想由工件驱动的软件开发生命周期将这种观点推向其极限,这些工件是表示要构建的系统不同视图的模型。它的可行性是基于存在一个由模型转换驱动的(半)自动构造过程,从系统的抽象模型开始转换直到生成一个可执行的模型。
因此,整个过程的质量很大程度上取决于模型和模型转换的质量。

我们关注模型转换,尤其是它们的验证。
从这个意义上说,在模型转换上需要验证的最低要求是转换以及源模型和目标模型都是很好地形成的。
然而,还有许多其他的特性可以验证,并且有很多的验证方法可以这样做。
本课题在[2]中被分析为一个三维问题,包括:涉及的转换、所涉及的特性以及用于建立特性的形式验证技术。

本文的目的是对[2]中扩展工作的模型转换验证的文献进行全面回顾。
特别是,我们引入第一维度但没有深入研究,因为有许多著名的著作[67,26]论述了这一主题,我们将第二和第三维度与[2]中未提及的其他方面进行了扩展。
我们还遵循一个基于问题的方法,通过一个案例研究来举例说明那些可以在模型转换中验证的感兴趣的方面以及如何验证它们。
最后,我们得出结论,需要一个集成的环境来处理模型转换的异构验证。

论文的其余部分结构如下。
我们首先在第2节中详细介绍了审查过程。
然后,在第3节中,我们将快速查看模型转换并定义一个运行示例。
在第4节中,我们介绍了必须验证的转换的不同方面,在第5节中,我们回顾了如何在文献中验证这些方面。
在第6节中,我们使用运行的示例来举例说明验证属性,并讨论如何对其进行验证。
最后,在第7节中,我们就这个主题发表了一些总结性的评论,并为今后的工作提供了指导。

2文献审查
文献综述遵循与系统综述方法相关的过程[50]。我们专注于回答这个问题:哪些策略被用来处理模型转换的验证,以及什么样的问题试图解决?

该过程分为两个步骤进行:(a)电子数据库中的Web搜索;(b)对执行Web搜索结果的作者、会议和引用进行并行搜索。

第一步首先确定关键词“模型转换”(与同义词“转换”)和“验证”(与同义词“验证”、“形式验证”、“验证”、“认证”),并构造一个搜索查询,该查询通过Timb'o Portal在某些选定的电子数据库中使用:scopus、scienceDirect、Springer、IEEE数字图书馆和ACM数字图书馆。
搜索应用于那些数据库中论文的标题、摘要和关键字,或者在那些不允许我们将搜索限制在这些字段的情况下的所有搜索字段。

第二步是通过寻找[2]中引用的论文,以及确定与该主题相关的作者和会议来加强第一步。
通过作者列表,我们在他们的个人网页以及DBLP数据库中进行了搜索。
这第二步帮助我们找到了一些技术报告和小会议材料,并允许我们跟随一些作者工作的发展。

纳入标准是基于对论文标题、摘要和关键词的回顾,评估他们是否以某种方式回答了最初的问题。
我们考虑了用英语和西班牙语写的论文。
这套最初的论文是通过阅读全文而加以完善的。
虽然有些论文由于没有经过严格的审查而出版,因此不能被认为是高质量的,但我们对它们的内容给予了特权,有利于回答最初的问题。
由于篇幅原因,我们这里不包括完整的文献综述。在[18]中可以找到这本著作的扩展版本以及每一篇论文的描述。

3 A Quick Look at Model Transformations

在MDE生态系统所有东西都是模型,甚至代码都被视为模型。在这种情况下,模型是系统或其环境的抽象。每个模型都符合元模型,即引入某种模型的语法和语义的模型。同样地,元模型符合某种元模型。元模型通常是自定义的,这意味着它可以通过自己的语义来指定。

元模型通常使用UML类图来定义[36]。但是,还有其他几种特定语言可用于此目的,例如元对象工具(mof,[35])、为Eclipse建模框架定义的Ecore元模型(emf,[31])和内核元模型(km3,[5])。除了元模型定义了通常具有具体语法的建模语言之外,还可以使用与元模型相同的语言表示模型。此外,对于表示模型实例以及作为元模型“实例”的模型,UML对象图提供了图形表示。最后,层次结构中的每个元素都可以使用XML元数据交换(XMI,[39])来表示。在某些情况下,有一些条件(称为不变量)不能被这些语言的结构规则捕获,在这种情况下,建模语言由另一种逻辑语言补充,例如对象约束语言(ocl,[38])

让我们介绍众所周知的类到关系模型转换作为一个运行示例,它最初在[10]中引入,已成为模型转换的实际标准示例。我们将使用如[47]所示的转换。图1左侧的元模型定义了UML类图,其中类可以包含一个或多个属性,可以属于一个类层次结构,并且可以声明为持久的。每个属性都有一个类型,可以是另一个类或基元数据类型(字符串、布尔值、整数等)。属性可以定义为主要属性。关联是在具有从源到目标方向的类之间定义的。附加的约束是每个类必须至少有一个属性和至少一个主属性(它们可以被继承)。

另一方面,关系模型符合图1右侧的元模型。每个模型都包含许多由许多列构成的表。其中一些列是对应表的主键。表可以与零个或多个外键关联。每个外键引用一个表,并与构成该键的许多列相关联。

MDE范式的第二个构建块是模型转换,它也可以被视为模型。如[26]所述,模型转换与程序转换密切相关。“他们在各自转型社区的思维方式和传统、正在转型的主题以及正在考虑的要求方面存在差异。
虽然程序转换系统通常基于面向数学的概念,如术语重写、属性语法和函数编程,但模型转换系统通常采用面向对象的方法来表示和操纵其主题模型。

Klepe等人[51]定义模型转换如下:“转换是根据转换定义从源模型自动生成目标模型。转换定义是一组转换规则,它们共同描述如何将源语言中的模型转换为目标语言中的模型。转换规则是对如何将源语言中的一个或多个构造转换为目标语言中的一个或多个构造的描述。

如图2所示,从[6]中提取,模型转换基本上将符合给定源元模型mma的模型ma作为输入,并生成另一个符合给定的目标元模型mmb的模型Mb作为输出。模型转换可以定义为一个模型mt,mt本身符合模型转换元模型mmt。最后一个元模型以及mma和mmb元模型必须符合元模型(如mof或ecore)。转换定义由转换引擎执行。

这个模式定义了模型到模型的转换。还有模型到文本和文本到模型的转换,其中目标模型和源模型分别是不符合任何特定元模型的字符串。在不丧失一般性的情况下,我们将只考虑模型到模型的转换(从现在起只考虑转换,或模型转换)。

在不丧失一般性的情况下,我们将只考虑模型到模型的转换(从现在起只考虑转换,或模型转换)。
正如在[67,66]中指出的,“这一定义非常普遍,涵盖了模型转换可用于的广泛活动:自动代码生成、模型合成、模型演化、模型模拟、模型执行、模型质量改进(例如通过模型重构)、模型转换、基于模型的测试、模型检查,模型验证。

然而,这个模式可以扩展,正如在[26]中详细研究的那样。撇开细节不谈,作者识别了一个模型转换的多种可变性,例如它可以是双向的,可以以多个源模型作为输入和/或生成多个目标模型作为输出,其规则应用策略可以是确定性的、非确定性的或交互的,源模型和目标模型可以是不同的抽象级别(水平与垂直转换),源模型和目标模型是否符合相同的元模型(内生与外生转换)。

除了这些方面之外,还有几种用于定义和执行模型转换的方法,从直接操作中转换,通常是在编程语言中开发的,这些编程语言访问模型的内存表示(例如Java元数据接口[27)]到相关的(又名声明性)。
转换规则作为源元素和目标元素之间的数学关系(例如,查询/视图/转换(QVT)关系[37]),通过基于图的转换,该转换包括将模型视为类型化的属性标记图,并应用图转换技术(例如,属性图语法[83])。

在我们的运行示例中,转换基本上描述了如何将持久化类转换为表。 类的属性和关联被转换为相应表的列,并且主键和外键也被适当地设置。 主键定义为定义为primary的属性,以及用于与其他类关联的外键,包括类层次结构中的类。 下面我们使用ATL声明表示法显示持久化类到表规则的定义。转换使用预处理步骤,该步骤使层次结构中的类的特征(属性或传出关联)变平。 使用此中间结构,更容易定义规则,如下面的规则将持久化类映射到表

Verification of Model Transformations A Survey of the State-of-the-Art 模型转换的验证 对现状的调查的更多相关文章

  1. 2-1. Creating a Simple Model 使用图形界面设计器创建一个简单的模型

    一.创建新项目 二.添加模型文件 三.添加完后,在设计面板空白处右击,创建一个实体 实体集(B) 这里的名称会是对应的数据库表名称!!! ,开始不知道这是什么,生成后才知道表名是这个,以后注意点就行. ...

  2. (转)Understanding, generalisation, and transfer learning in deep neural networks

    Understanding, generalisation, and transfer learning in deep neural networks FEBRUARY 27, 2017   Thi ...

  3. awesome-RecSys

    https://github.com/jihoo-kim/awesome-RecSys?fbclid=IwAR1m6OebmqO9mfLV1ta4OTihQc9Phw8WNS4zdr5IeT1X1OL ...

  4. atitit。自定义uml MOF EMF体系eclipse emf 教程o7t

    atitit.自定义uml MOF EMF体系eclipse emf  教程o7t 1. 元对象机制(MOF,Meta-Object Facility)and  结构 1 2. 元模型图.模型图.对象 ...

  5. atitit。自己定义uml MOF EMF体系eclipse emf 教程o7t

    atitit.自己定义uml MOF EMF体系eclipse emf  教程o7t 1. 元对象机制(MOF,Meta-Object Facility)and  结构 1 2. 元模型图.模型图.对 ...

  6. Deep Learning for Information Retrieval

    最近关注了一些Deep Learning在Information Retrieval领域的应用,得益于Deep Model在对文本的表达上展现的优势(比如RNN和CNN),我相信在IR的领域引入Dee ...

  7. Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本

    Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...

  8. BERT的通俗理解 预训练模型 微调

    1.预训练模型      BERT是一个预训练的模型,那么什么是预训练呢?举例子进行简单的介绍      假设已有A训练集,先用A对网络进行预训练,在A任务上学会网络参数,然后保存以备后用,当来一个新 ...

  9. 一文彻底搞懂BERT

    一.什么是BERT? 没错下图中的小黄人就是文本的主角Bert ,而红色的小红人你应该也听过,他就是ELMo.2018年发布的BERT 是一个 NLP 任务的里程碑式模型,它的发布势必会带来一个 NL ...

随机推荐

  1. CRM项目自定义的知识点

    python manage.py shell #自动配置环境 a = models.CustomerInfo #实例对象可以a._meta # dir 可以查看字段方法 a._meta.app_lab ...

  2. 洛谷P2949 工作调度Work Scheduling [USACO09OPEN] 贪心

    正解:贪心+并查集(umm不用并查集也成qwq 解题报告: 水题?主要感觉想到了俩方法然后还只实现了一个,怕忘了所以想着开个新坑记录下qwq 然后先放下传送门QAQ(哦这题和supermarket,双 ...

  3. sql 范式:1NF、2NF、3NF、BCNF(函数依赖)

    第一范式(1NF) 每个属性都是不可分的基本数据项.(必须有主键,列不可分) eg:非第一范式的表:(列可再分) 学院名称 高级职称人数 教授 副教授 信电学院 3 34 管理学院 5 23 外语学院 ...

  4. 消息服务jms

    jms是java消息服务的规范,也即接口,activemq是实现.队列模型和发布订阅模型很像,区别就是队列,多个消费者消费不同的消息(这些消费者整体消费完生产者生产的队列的消息),发布订阅模型是多个消 ...

  5. java中的key事件监听机制

    package com.at221; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.sw ...

  6. 关于view.py 中 ajax json 的用法

    1. data=models.Citys.objects.filter(upid=0) data 的数据形式是一个查询集(也是一个列表,查询出来的每一条数据是一个对象): <QuerySet [ ...

  7. input 输入速度和方向判断、搜索功能的延迟请求

    1.input 输入速度和方向判断 var wxApp = {} wxApp.click = function (str,speed) { var lastInput = { d: "&qu ...

  8. catch data

    抓取一些有反爬机制的website 喜马拉雅   每天都有-动态class 通过网络请求

  9. Python数据分析Pandas库方法简介

    Pandas 入门 Pandas简介 背景:pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观.它旨在成为在Python中进行实际, ...

  10. zabbix部署相关

    一.centos7 安装zabbix 二.zabbix 乱码问题 三.zabbix自动发现自动注册 四.zabbix3.4实现sendEmail邮件报警