Towards Scalable Model Indexing (Konstantinos Barmpis 2016) 中文-第2章-背景

可扩展模型索引 Towards Scalable Model Indexing1

2. 背景

本章介绍模型驱动工程(Model-Driven Engineering,MDE)(2.1节)和其他有关模型维护和版本控制的已有工作。第2.2.1节讨论了数据持续性后端/格式和如何利用他们存储模型,第2.2.2节侧重模型版本控制,第2.2.2.1节讨论了一个基于文本的版本控制系统,随后在2.2.2.2节讨论了基于模型的版本控制系统,在第2.2.3节向读者介绍了当今使用的各种最先进的模型查询工具(model querying)。

MDE的背景是需要的,一方面是为了理解可扩展性问题的来源,另一方面是为了获得一些见识以在该领域研究中解决一些挑战。用在MDE中的各种有关版本控制形式的知识有助于我们了解模型开发中的局限性,也有助于在我们协同开发的过程中,深入了解构建使用的可扩展多用户模型管理工具的方法。最后,细化了多种模型持久性类型的知识,例如文件或数据库序列化,这对有效实现一个可扩展的解决方案以及发现、设计、实施、测试和比较最合适的后端存储是很重要的。

2.1. 模型驱动工程

MDE是一种软件开发方法,其中模型(models)是软件工程过程中的一级组件。本文中的模型是指“一个对感兴趣现象的描述(a description of phenomena of interest)”,是以文本、图形或者其他形式表示的(例如表格或树的形式)。在MDE中,模型用于描述系统和通过自动转换为较低级别的组件来(部分地)自动化地执行。为了使模型能自动化地处理,必须根据严格指定的建模语言(元模型,metamodels)来定义他们。本节将介绍MDE的几个关键的方面,举例说明业界广泛使用的模型管理方法,并讨论他们的重要性。此外,也将介绍当前最先进的MDE工具在写作环境中处理大型模型时所面临的挑战。

2.1.1. 建模和自动化模型管理

MDE有几个标准的过程和活动,最有代表性的几个如下。

2.1.1.1. 建模语言

MDE中使用的模型通常遵循一套严格的规则,这些规则被封装在元模型(metamodel)中。该模型的“蓝图(blueprint)”包含全部允许的语法、限制和符合其模型的特性。建模语言分为两个部分,特定领域(domain-specific)和通用目标(general-purpose),也可被视为从最小(领域关注的)到最大的表达能力的连续统一体(a continuum from minimal (domain-focused) to maximal expressiveness)。

通用目标语言包括统一建模语言(Unified Modeling Language,UML)、业务流程模型和表示法(Business Process Model and Notation,BPMN)、系统建模语言(Systems Modeling Language, SysML)、企业架构档案建模语言(Archimate enterprise architecture modeling language)和允许创建各种各样的模型,以应对广泛的关注领域。通用目标语言试图支出一个广泛的概念并支持可移植性(portability)和可维护性(maintainability),这是因为它旨在被广泛的受众所使用和理解。

特定领域语言包括WebML或系统生物学标记语言(Systems Biology Markup Language,SBML),它为一个特定的领域兴趣所定制。的虽然他们的范围有限,但是它们在问题领域内提供了同等抽象级别中更加简洁的表达解决方案的能力,因而能更好地允许领域专家在他们的领域工作。它也通常针对生产力(productivity)进行优化,而轻视可移植性(portability)。

2.1.1.2. 元建模架构(metamodeling Architectures)

各种体系结构可以用于定义元模型并构建符合他们自身的模型。他们主要的共同点是他们都定义了至少两个层次,一层用于描述系统/过程(a system/process),一层用于定义这类模型(models)。

元对象架构(The MetaObject Facility,MOF)对象管理组(The Object Management Group,OMG)于2001年引入了MDE以及用于定义元模型的体系结构(如图2.1所示)和符合这些元模型的约束。

在图2.1所示的金字塔中,M0代表现实世界,例如待建模的物理要素(一本书或一个客户)或正在模型化建设的软件系统。M1表示可以在M0中提取的现实世界的模型,例如一本书由具有ISBN和标题等属性类的表示。M2表示用来定义M1中元素(如UML)的建模语言(modeling language,metamodel)。最终,M3表示用来定义M2中元素的元建模语言(meta-metamodel),对于OMG的MDA来说,M3的唯一组成便是MOF。

值得注意的是,这种分层类型(MOF - UML - UML model - 现实世界)与计算机的软件和编程语言(Backus-Naur Form(BNF)- Java Language - Java Program - 现实世界)的分层方式是相似的。和BNF定义Java的抽象语法一样, MOF定义了UML的抽象语法。不再详细讨论MOF架构,因为它在共结构和功能上与下面详细介绍的Eclipse建模框架是类似的。

MetaCase - The MetaEdit + Tool元案例(MetaCase)提供了一个图形化的元建模架构,即通过定制特定领域的元模型,可以创建一个用可视化符号定义不同概念和属性/规则的编辑器。这个元模型(属于MDA中的第M3层)如图2.2所示。

在此架构中,元模型被定义为图Graph,它包含了对象Objects,关系Relationships和角色Roles。一个对象Object用来描述一类模型元素,这些元素由关系Relationships彼此连接,角色Roles特指此类对象Objects如何参与到一个关系Relationship中。绑定Binding将一个关系Relationship和至少两个角色Roles连接起来,并为图Graph中的每个角色Role至少连接一个对象Objects。所有这些概念(除了绑定Binding)都能有属性Properties,这些属性可以是各种数据类型,例如字符串、布尔值、数字等。

使用这些概念,并在MetaEdit+Workbench编译器的帮助下,用户可以从头开始定义他们的领域特定的概念或使用提供的预定义的元模型,这个Workbench编译器允许为各种对象Objects、关系Relationships和角色Roles建立符号。元模型能通过使用这些概念并遵循定义原则,来定义实例化模型,然后这些模型能生成更多组件,例如文档或代码。

Eclipse建模框架(Eclipse Modeling FrameworkEMF)EMF是一个用于元建模定义和实例化的框架。在EMF中,使用一种高层次概括性的Ecore元建模语言定义元模型,如图2.3所示。由于EMF是当今使用最广泛的元建模框架,我们将深入研究其结构和功能的更多细节。

元模型以Epackages的形式表达,这些定义了元模型唯一的全局标识符(nsUPI -用作从存储标识符到元模型的映射的注册表(EpackageRegistry)检索元模型的唯一键值)并且包含在元模型中的类型,也就是以EClassifiers的形式,它的类型既是EClassEDataTypes(两个都是ENamedElements),EClasses包含他们的特征,也就是以EAttributes(具有EDataType作为其值的类型)和EReferences(具有EClass作为他们值的类型)的形式。(晕)

EMF使用资源Resource的概念来维护元模型和内存的表示。这样的资源Resources能在磁盘中序列化(以各种形式,例如文本或者数据库),并且能在各自的序列化中读取内存。资源Resource的内容可以迭代或者修改,EMF自动执行大部分资源之间和资源内一致性操作,例如,EMF将自动保持任何加载的资源与模型元素删除或修改的同步(相当于引用它们的任何元素)。

默认情况下,EMF基于XML标准对模型序列化,称为XML原数据交换(XML Metadata Interchange,XMI),这是一种OMG标准化格式,旨在增强工具互操作性。这种形式的序列化允许进行几个优化,例如能将模型保存在多个物理文件中,并使用惰性引用解析(lazy reference resolution)将他们连接在一起。由于格式的性质,在XMI中的序列化模型会非常冗长,需要按顺序反序列化。例如,默认的基于SAX的EMF XMI解析器(parser),需要读取整个模型文件才能创建一个可用的内存资源。

未完待续……



原文链接:https://etheses.whiterose.ac.uk/14376/7/Konstantinos%20Barmpis%20-%20EngD%20Thesis.pdf
官网链接:https://www.eclipse.org/hawk/


  1. Barmpis K. Towards Scalable Model Indexing[D]. University of York, 2016. ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值