基于MDA的领域模型到HBase的模型转换研究

lmy9559

贡献于2015-05-27

字数:0 关键词: UML建模

基于 MDA 的领域模型到 HBase 的 模型转换研究 李 燕 二○一四 年 六 月 硕士学位 论 文 硕 士 李 燕 基 于 M D A 的 领 域 模 型 到 H B a s e 的 模 型 转 换 研 究 2014 分类号 密级 UDC 硕士学位论文 基于 MDA 的领域模型到 HBase 的 模型转换研究 李 燕 学科专业 计算机软件与理论 指导教师 顾平 教授 论文答辩日期 2014 年 5 月 24 日 学位授予日期 答辩委员会主席 葛丽娜 教授 广西大学学位论文原创性和使用授权声明 本人声明所呈交的论文,是本人在导师的指导下独立进行研究所取得 的研究成果。除已特别加以标注和致谢的地方外,论文不包含任何其他个 人或集体已经发表或撰写的研究成果,也不包含本人或他人为获得广西大 学或其它单位的学位而使用过的材料。与我一同工作的同事对本论文的研 究工作所做的贡献均已在论文中作了明确说明。 本人在导师指导下所完成的学位论文及相关的职务作品,知识产权归 属广西大学。本人授权广西大学拥有学位论文的部分使用权,即:学校有 权保存并向国家有关部门或机构送交学位论文的复印件和电子版,允许论 文被查阅和借阅,可以将学位论文的全部或部分内容编入有关数据库进行 检索和传播,可以采用影印、缩印或其它复制手段保存、汇编学位论文。 本学位论文属于: □保密,在 年解密后适用授权。 □不保密。 (请在以上相应方框内打“√”) 论文作者签名: 日期: 指导教师签名: 日期: 作者联系电话: 电子邮箱: I 基于 MDA 的领域模型到 HBase 的模型转换研究 摘 要 模型驱动架构(MDA)是国际标准化组织(OMG)提出的一种软件开 发方法。MDA 通过定义四种模型,将系统的业务逻辑、功能描述、系统在 特定平台上的实现以及具体的代码实现分离开来,降低了业务与技术间的 耦合度,减少需求变更对软件开发的影响,有效的提高了系统的可移植性 和不同平台间的互操作性。另外,随着大数据时代的来临以及互联网 web2.0 的广泛应用,具有处理超大量数据、易扩展、高性能、灵活特点的基于列 存储的分布式数据库 HBase 能满足大数据处理的需求。本文基于 MDA 的 思想,研究用例图和用例描述到类图的模型转换方法以及类图到 HBase 数 据模型的模型转换方法,实现了从领域模型到平台相关模型(PSM)的模 型转换,提高应用领域基于 HBase 的设计开发效率。研究的主要内容包括: (1)本文构建的领域模型由用例图和用例描述两部分组成,因此首先 研究用例图元素和类图元素间的映射规则,提出用例图到类图的转换方法; 然后采用 Liwu Li 定义的 13 种简单英文句型和约束规则编写用例描述,并 分析每一种英文句型的组成部分与类图元素的对应关系,提出用例描述到 类图的转换方法。 (2)采用基于元模型的转换方法实现类图到 HBase 数据模型的转换。 首先构造类图和 HBase 数据模型的元模型,然后研究类图的元模型元素与 HBase 数据模型的元模型元素间的映射规则,提出类图到 HBase 数据模型 的转换规则。 II (3)验证本文方法的可行性。首先设计实现一个可以完成从用例图和 用例描述到类图转换的工具;然后采用模型转换语言 ATL 实现从类图到 HBase 数据模型的转换规则;最后使用设计的工具和编写的转换规则实现 一个图书管理系统例子的领域模型到 HBase 数据模型的转换。 关键词:模型驱动架构 HBase 模型转换 领域模型 平台相关模型 元模型 III RESEARCH ON TRANSFORMING DOMAIN MODEL TO HBASE MODEL BASED ON MDA ABSTRACT Model Driven Architecture (MDA) is a method of software development, which is proposed by the Object Management Group (OMG). MDA treats models as the center of the entire software development process. It separates functional description of the system and achievement of the system on specific platform by defining four kinds of model, which not only can reduce the degree of coupling between business and technology, and the influence of requirement change, but also improve portability of the system and interoperability between different platforms. While with the rise of Internet web2.0 site, HBase which is a database based on column is fully satisfied with the requirements of the age of Big Data because of its ability dealing mass data and character of good expansibility, high-performance and flexibility. So this paper based on MDA, researches the transformed method of transforming use case diagram and use case description to Class Diagram and transforming Class Diagram to HBase model to achieve the transformation from domain model to Platform Specific Model(PSM), which will improve the efficiency of developing of HBase. The main search contexts of this paper including: (1) The domain model is build by use case diagram and use case description in this paper. So study the mapping rules between the use case diagram and class diagram and propose the transformed method of transforming use case diagram to class diagram firstly; then use the 13 kinds of simple English sentences and constraint rules defined by Liwu Li to restrict use case description, and analysis the relations between the every part of these sentences and elements of class IV diagram, and propose the transformed method of transforming use case description to class diagram finally. (2) Use the method based on meta model to achieve the transformation from class diagram to HBase. Build the meta models of class diagram and HBase firstly, then study the mapping rules between the two meta models, and propose the transformed method of transforming class diagram to HBase. (3) Verify the feasibility of those methods this paper proposes. Firstly, Design and realize a tool that can realize the transformation from use case diagram and use case description to class diagram; then use the transforming language ATL to describe the transforming rules of transforming class diagram to HBase; realize a transformation from domain model of a library management system to data model of HBase. KEY WORDS: MDA; HBase; Model Transformation; Domain Model; PSM; Meta-model; V 目 录 摘 要 ........................................................................................................................................... I ABSTRACT ........................................................................................................................... III 第一章 引言 .......................................................................................................................... 1 1.1 研究背景 ...................................................................................................................... 1 1.1.1 模型驱动架构 .................................................................................................... 1 1.1.2 HBase .................................................................................................................. 3 1.2 研究的目的和意义 ...................................................................................................... 4 1.3 研究内容 ...................................................................................................................... 5 1.4 论文组织结构 .............................................................................................................. 5 第二章 相关知识介绍 .......................................................................................................... 7 2.1 MDA .............................................................................................................................. 7 2.1.1 MDA 概述 ........................................................................................................... 7 2.1.2 MDA 模型转换 ................................................................................................... 8 2.1.3 模型转换语言 .................................................................................................. 10 2.2 HBase 相关知识介绍 ................................................................................................. 11 2.2.1 HBase 的数据模型 ........................................................................................... 11 2.2.2 HBase 的数据存储和访问 ............................................................................... 12 2.3 小结 ............................................................................................................................ 13 第三章 用例图和用例描述到类图的半自动转换研究 .................................................... 14 3.1 用例图到类图的转换 ................................................................................................ 14 3.1.1 用例图概述 ...................................................................................................... 14 3.1.2 类图概述 .......................................................................................................... 14 3.1.3 转换思想 .......................................................................................................... 15 3.2 规范化用例描述到类图的转换 ................................................................................ 16 3.2.1 用例描述 .......................................................................................................... 16 3.2.2 规范化用例描述语言 ...................................................................................... 17 3.2.3 转换思想 .......................................................................................................... 19 3.2.4 转换算法 .......................................................................................................... 20 VI 3.3 模型转换工具的设计与实现 .................................................................................... 22 3.3.1 模型转换工具的需求分析 .............................................................................. 22 3.3.2 模型转换工具的设计 ...................................................................................... 22 3.3.3 模型转换工具的实现 ...................................................................................... 24 3.4 实例验证 .................................................................................................................... 26 3.5 小结 ............................................................................................................................ 32 第四章 基于元模型的类图到 HBase 的转换研究 ........................................................... 33 4.1 模型转换方法 ............................................................................................................ 33 4.2 源元模型的构建 ........................................................................................................ 33 4.3 目标元模型的构建 .................................................................................................... 34 4.4 模型转换思想 ............................................................................................................ 35 4.4.1 类的映射规则 .................................................................................................. 35 4.4.2 类关系的映射规则 .......................................................................................... 36 4.5 模型转换规则 ............................................................................................................ 38 4.6 小结 ............................................................................................................................ 43 第五章 总结与展望 ............................................................................................................ 44 5.1 总结 ............................................................................................................................ 44 5.2 下一步工作 ................................................................................................................ 45 参考文献 .................................................................................................................................. 46 致谢 .......................................................................................................................................... 50 攻读学位期间发表论文情况 .................................................................................................. 51 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 1 第一章 引言 1.1 研究背景 1.1.1 模型驱动架构 20 世纪 60 年代以前,计算机的应用范围较小,软件开发主要以个人设计、个人开 发、个人使用的自给自足的私人化生产方式为主,这种个性化的开发方式没有精确的需 求分析和统一规范的方法指导[1]。随着计算机应用的迅速扩大,这种落后的软件开发方 式已经无法满足迅速增长的计算机软件高效率、多样性、复杂度高等需求,因此很多专 家学者们开始对软件的特性以及软件开发方法进行深入的研究,进而促使了“软件工程” 这一学科的诞生。 随着研究的深入,人们开始认识到软件开发已经不再是简单的软件编程,而是需要 一套完整成熟的概念、原理、技术和方法来开发和管理软件。为了提高软件质量,减少 开发周期和降低开发成本,计算机领域的专家学者提出了一系列如面向结构化的软件开 发方法、面向数据结构的软件开发方法、面向对象的软件开发方法、面向构件的软件开 发方法等的开发方法。这些软件开发方法的提出虽然在一定程度上提高了软件的开发效 率,解决了软件的可靠性和重用性等问题,但是在处理生产效率问题、可移植性问题、 互操作性问题、维护与文档问题上稍显不足。为此在 2001 年,OMG(Object Management Group,对象管理组织)提出了一种新的开发方法,即 MDA(Model Driven Architecture, 模型驱动架构)[2]。MDA 以模型为核心,定义了计算无关模型,即 CIM(Computation Independent Model),平台无关模型,即 PIM(Platform Independent Model),平台相关 模型,即 PSM(Platform Specific Model)和实现相关模型,即 ISM(Implementation Specific Model)四种模型[3]。基于 MDA 开发的整个开发过程是通过模型来驱动完成[4],很好的 解决了上述的四大问题: (1)生产效率问题。MDA 的核心思想是模型转换,将模型贯穿于软件开发的整个 过程中,代码最终也是由模型自动生成的。采用这种开发模式,当需求发生变更时,只 需修改初始的模型,然后通过模型间的自动转换重新生成符合新需求的源代码,有效的 提高软件的生产效率。 (2)可移植性问题。平台相关模型 PSM 是由平台无关模型 PIM 转换得到的,而且 可以将同一个 PIM 转换成多个不同平台的 PSM,而 PIM 不关注目标平台的细节,因此 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 2 在软件开发的过程中,当平台发生改变时,只需直接将原有的 PIM 重新转换成需要的平 台模型即可,有效的解决了当新技术出现时,将现有软件移植到新技术上的问题。 (3)互操作性问题。一个系统开发和使用可能都会涉及到多个不同的平台,如EJB、 数据库等,这些平台之间需要进行相互访问和操作,因此平台之间必然要存在一个关联 机制。在基于 MDA 的开发中,不同 PSM 都是由同一个 PIM 生成的,因此根据每个 PSM 的元素与 PIM 的元素之间对应关系,可以获得不同 PSM 之间的联系,即桥接器。桥接 器是在 PIM 转换成不同 PSM 时生成的,它可以让系统知道不同平台的元素之间的关联 和对应关系,方便平台间进行互操作,使得系统中不同平台之间互操作问题得到有效的 解决。 (4)维护和文档问题。MDA 从 PIM 开始每一个模型都是由软件开发上一阶段生 成的模型转换而来,各个模型环环相扣,紧密相连。最终代码的生成依赖于这些模型的 生成,缺少任何一个模型都无法生成最终的代码,因此基于 MDA 的开发过程的模型不 像传统的开发方法中的文档,可有可无。相反模型是必然产物,其重要性与最终代码一 样,所以基于 MDA 开发过程中得到的模型不会像文档一样轻易的被忽略或丢弃。当需 求发生变更时,只需更改相应的模型,然后重新进行转换即可,而且模型的生成和转换 一般都是通过工具完成的,这样使得维护变得更加简单方便。 MDA 这一方法被提出后,便引起了广大研究人员关注。目前很多组织机构都致力 于 MDA 的研究,并取得了一定的研究成果。这些成果可以分为应用方面和理论方面的 研究成果。国外在应用方面取得的研究成果主要包括成功的应用 MDA 的思想进行系统 的实践开发,如由美国开发的政府医疗管理系统 GCPR(Government Computer-Based Patient Record Project);以及一些 MDA 支持工具的开发[5],如开源工具 AndroMDA[6], IBM 的 Rational Software Architect,美国 Compuware 公司的 OptimalJ 等。此外还有一些 研究机构研究开发的一些转换工具和转换语言,如 ATLAS 研究组开发了基于 EMF (Eclipse Modeling Framework)框架的模型转换语言 ATL(ATLAS Transformation Language)。相对于国外的研究成果,国内在 MDA 的应用方面的研究还比较滞后,但是 也取得了一些不错的进展。国内的研究成果主要有金蝶软件公司开发的支持 MDA 软件 开发的商业软件工具和楚凡科技开发的中国第一个基于 UML(Unified Modeling Language)的模型驱动架构开发工具 Trufun Kant[7],以及一些研究团体针对特定模型和 平台应用开发的转换工具,如南京大学开发的 ME4ET[8]。这些工具的诞生减少了开发人 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 3 员的工作量,提高了软件的生产效率。不足的是这些工具绝大部分都只能支持 PIM 到 PSM 以及 PSM 到代码的转换,无法支持 CIM 到 PIM 部分的转换。 理论方面的研究主要包括模型转换方法和规则的研究,如手动转换、基于规则的转 换方法[9]、基于关系代数的转换方法、基于元模型的转换方法[10]、运用模式进行转换[11] 以及基于本体的转换方法[12]等都是目前比较常用的转换方法。这些方法大部分用于 PIM 到 PSM 的模型转换。虽然 PIM 到 PSM 的转换尚未制定明确的转换标准,但是其转换方 法的研究已相对成熟,PIM 模型到各种技术和平台的转换规则的研究正在不断的进步完 善,如 PIM 模型到关系数据库模型[13]、EJB 模型[14]等的转换。另外目前已有很多模型 转换工具支持实现 PSM 模型到代码的转换。相对于 PIM 到 PSM 的转换,CIM 到 PIM 的模型转换研究相对较少[15],不少的研究人员甚至错误的认为 CIM 到 PIM 的转换不属 于 MDA 的生命周期[16],因而忽略了这方面的研究。主要是因为领域模型具有二义性和 不确定性,很难像 PIM 到 PSM 的转换一样单纯的依靠转换规则和转换工具自动实现转 换,CIM 到 PIM 的转换或多或少的需要人为的参与才能实现,要实现自动化还具有一 定的难度。随着人们开始意识到需求分析的重要性以及需求分析对后续的开发工作产生 的重大影响,很多关于需求描述的研究成果不断涌现,如数据流图、用例图等半形式化 的描述方法,面向模型的 Z 语言[17,18]、B 语言[19]、VDM[20]和基于代数语义的 OBJ[21]等 形式化的描述方法。另外还有许多研究者制定了一些描述规则来规范用例描述,减少用 例描述的随意性,如 Ben Achour 等的 CREWS[22]、Anda 的 Simula[23]、Cox 的 CP[24]以及 Liwu Li[25,26]提出的用于用例描述的 13 种英文句式和 8 条描述规则等。这些研究成果的 诞生为 CIM 到 PIM 的自动转换研究提供了基础和新的思路。近年来有不少的关于 CIM 到 PIM 的模型转换的研究成果产生,如通过构建用例模型和规范化的用例描述,实现用 例图到活动图[27]、顺序图[28]以及类图[29]的转换,和通过形式化语言 B 语言描述领域模 型,实现领域模型到类图的转换[30]等。 虽然 MDA 一直受到很大的关注,也有不少的研究成果,但是 MDA 还正处于一个 发展的阶段,还存在许多局限性以及技术问题,需要进一步研究探讨。即使如此,MDA 的诞生给软件工程领域带来的震撼和促进作用是不容忽视的,其发展前景还是光明的。 1.1.2 HBase 伴随着全球信息化的发展,信息获取技术取得巨大的进步,数据的来源变得越来越 广泛,如移动互联网、云计算、物联网、手机、平板电脑、PC 以及遍布地球各个角落 的各种各样的传感器,都是数据来源或者承载的方式;数据的结构也越来越复杂,半结 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 4 构化和非结构化数据越来越频繁的出现在人们的生活中。这些发展导致了“大数据(Big Data)” [31]时代的出现,2012 年 2 月《纽约时报》中的一篇名为《The Age of Big Data》 [32]的报道指出我们已经进入了大数据时代,以及即将面临的种种机遇和挑战。大数据时 代的数据海量性和复杂性对数据的存储和管理提出了挑战。传统的基于行存储模式的数 据库在存储和管理海量性和复杂性数据已显得力不从心,为此提出了列存储方式。 HBase 是 Hadoop 平台[33]下的基于分布式的、面向列的存储模式的开源数据库[34]。 Hadoop 的广泛应用,使得 HBase 成为目前比较流行的基于列存储的数据库。HBase 依 靠 Hadoop 平台下的 HDFS、MapReduce、Zookeeper 分别获得了高可靠的底层存储支持、 高性能的计算能力、稳定服务和失效节点的替换机制[35],因此 HBase 具有高扩展性、高 性能和高可用性,支持高并发用户数的高速读写访问,具有数据自动复制和容错的功能。 随着大数据时代的来临,列存储数据库对于海量数据处理的优越性使得它受到越来 越多的关注,近几年来关于这方面的研究成果越来越多。这些成果主要集中在列存储数 据库的商业价值以及主要关键技术,包括基于其主要存储原理的存储压缩、延时物化、 成组叠代、查询优化、索引、及加密等研究[36]。虽然目前 HBase 想要完全取代传统的关 系数据库几乎是不可能的,但是随着其应用正在不断的增加扩大,一些迁移工具和从关 系数据库到 HBase 的转换研究[37]成果也在不断的产生,而且关于这方面的研究受到越来 越多的关注。 1.2 研究的目的和意义 模型贯穿于整个 MDA 的开发过程,模型转换是 MDA 的核心思想。基于 MDA 的 模型转换研究一直是近几年来的研究热点和重心。PIM 到 PSM 的模型转换一直是专家 学者研究关注的热点,而由于领域模型的二义性和不确定性,关于 CIM 到 PIM 的转换 研究较少。CIM 也可称为领域模型,而类图与具体的平台信息无关,因此本文提出的领 域模型到类图的转换方法属于 CIM 到 PIM 转换的范畴。本文构建的领域模型是由用例 图和规范化的用例描述两部分组成,使用固定的句式和规则约束用例描述,提高了用例 描述的规范性,使得转换后的 PIM 模型更为精确。类图是 UML 中最常用的图,在很多 PIM 到 PSM 的模型转换研究中都是用类图作为 PIM 进行转换的。本文提出的由用例图 和用例描述到类图的转换,再由类图到 HBase 数据库模型的转换实现 CIM 到 PIM,PIM 到 PSM 模型转换的衔接,为如何从领域模型开始转换得到需要的平台相关模型提供了 一个思路。 如今已进入大数据时代,传统的关系数据库已不能满足 web2.0 对数据库高并发读 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 5 写、对海量数据的高效率存储和访问、对数据库的高可扩展性和高可用性的需求,急需 新型的数据处理系统来解决现今关系数据库无法解决的数据处理问题。像 HBase 等 NoSQL 数据库就是在这样的历史背景下诞生的,并且这类数据库在未来的应用将会越 来越广泛。本文提出的类图模型到 HBase 数据库模型的转换就是顺应现今的发展趋势提 出的一种新的研究方向,具有研究价值。 1.3 研究内容 本文主要研究基于 MDA 的领域模型到 HBase 数据模型的模型转换方法,研究如何 将在需求分析阶段构造的领域模型逐步转换为 HBase 数据模型。根据 MDA 的思想,领 域模型即是计算无关模型,HBase 数据模型属于平台相关模型,而计算无关模型需先转 换为平台无关模型,然后再由平台无关模型转换为平台相关模型。因此领域模型到HBase 数据模型的转换包含了 CIM 到 PIM 和 PIM 到 PSM 两个阶段。本文通过研究 CIM 到 PIM 半自动化转换方法以及 PIM 到 PSM 的自动化转换方法,实现领域模型到 HBase 数据模 型的模型转换过程。在软件开发过程中一般使用 UML 定义的图来描述开发中各个阶段 的模型,因此本文采用用例图和规范化的用例描述作为 MDA 中的计算无关模型,类图 作为平台无关模型,首先将用例图转换得到类图,然后再将类图转换成 HBase 数据模型, 主要的研究内容包括以下几个方面: (1)用例图和用例描述到类图的半自动化转换方法。首先使用用例图和采用固定 的句式和约束规则的规范化用例描述构建领域模型;然后分析用例图和类图的元素的对 应关系,制定相应的转换规则;再从规范化的用例描述中提取出相关的对象,转换成类 图中相关的元素,实现用例描述到类图的半自动化转换。 (2)基于元模型的类图到 HBase 数据模型的转换方法。首先深入分析类图模型和 HBase 数据库模型的结构,分别构造类图模型和 HBase 数据模型的元模型;然后分析这 两种元模型的元素间的对应关系,设计转换规则,通过元模型层的转换规则实现类图到 HBase 数据模型的转换。 (3)设计实现一个用例图和用例描述到类图的模型转换工具并使用模型转换语言 ATL 描述(2)提出的转换规则。然后通过一个图书馆系统的应用实例说明如何应用该 转换工具以及 ATL 描述的转换规则实现从领域模型到 HBase 数据模型的转换,验证本 文提出的转换方法和规则的有效性和可行性。 1.4 论文组织结构 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 6 论文主要包含以下五个章节,各章节的内容如下: 第 1 章 引言。首先介绍本文课题的研究背景,总结了基于 MDA 的开发方法具有 的优势以及大数据时代基于列存储的数据库的发展前景;然后说明研究基于 MDA 方法 设计开发 HBase 的目的和意义;最后介绍论文的主要研究内容和框架组织结构。 第 2 章 相关知识简单介绍。首先介绍 MDA 的相关知识,主要包括 MDA 的概述, 主要的模型,模型转换的几种情况以及模型转换方法和本文所使用的模型转换语言 ATL 的介绍。然后对 HBase 的相关知识进行说明,主要包括 HBase 的数据模型,存储结构 以及访问方式。 第 3 章 用例图和用例描述到类图的半自动换转换。首先分析用例图和类图的元素 间的对应关系,形成相应的转换规则;然后介绍一种规范化的用例描述语言,并根据实 际的应用情况对该语言和约束规则进行修改完善;再列出从用例描述中提取出相关的对 象信息和类图的元素的对应关系,完成转换;最后介绍基于该转换方法设计实现的一个 模型转换工具并用一个图书管理系统实例对提出的转换方法进行分析验证。 第 4 章 基于元模型的类图到 HBase 的转换。首先介绍分析类图的模型结构和 HBase 的数据结构,分别构造出他们的元模型;然后分析两种元模型元素间的映射关系,形成 转换规则;最后使用 ATL 描述转换规则,通过在第 3 章中描述实现的图书管理系统实 例来描述转换的实现。 第 5 章 总结与展望。对论文进行一个全面性的总结,并对 MDA 的模型转换研究 提出下一步的方向和展望。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 7 第二章 相关知识介绍 2.1 MDA 模型驱动架构 MDA 是一种以模型为核心的,通过提高软件开发的抽象层次来达到 有效的提高软件的生产效率和质量的目的软件开发方法。下面主要介绍 MDA 的相关知 识,包括 MDA 的体系结构、模型架构、模型转换的方法以及转换语言等。 2.1.1 MDA 概述 模型是基于 MDA 开发方法的核心部分,MDA 通过在软件开发的各个过程定义了 不同的模型,将系统的业务逻辑、功能描述、系统在特定平台上的实现以及具体的代码 实现分离开来。当需求发生变更时,它可以灵活的应对业务功能变更或者相关技术的更 换。MDA 提出了更高层次的抽象,各个具体的实现都是基于比具体实现更高层次的抽 象,有利于实现不同系统和不同平台之间的移植和互操作[38]。图 2-1 是 MDA 的体系结 构。 图 2-1 MDA 的体系结构[4] Fig. 2-1 The architecture of MDA 由 MDA 的体系结构图可知在 MDA 核心层是由 UML[39]、MOF(Meta Object Facility) [40]、XMI(XML-based metadata Interchange)[41]和 CWM( Common Warehouse Meta-model) [42]等标准构成,由此说明 MDA 这一软件开发方法的实现需要一系列的标准支撑[43]。 MDA 的主体思想是:一切都是模型,即在 MDA 的整个开发过程中都是以模型为 主体,软件开发的各个阶段(测试和维护阶段除外)完成的标志就是相关模型的建立。 MDA 定义的四个模型分别对应于软件开发过程中的四个阶段,具体对应关系如下: 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 8 (1)计算无关模型 CIM 处于软件开发的需求分析阶段,它是以用户的角度来描述 某一特定领域的系统需求的一种模型,代表着一个系统的业务需求,因此它又叫做领域 模型或者业务模型。它不涉及具体的系统结构以及实现技术,并且独立于软件,为业务 人员所使用,可以用 UML 来描述,是业务分析人员和软件设计人员沟通的桥梁。 (2)平台无关模型 PIM 处于软件开发的概要设计阶段,它定义了系统的结构,包 含各种相关的系统数据、处理流程等与具体平台无关信息。它是系统独立于平台的一种 抽象描述,因此它不关心和涉及任何跟平台相关的内容。可以用 UML 来对它进行描述。 (3)平台相关模型 PSM 处于软件开发的详细设计阶段,它是某个特定的平台或者 技术的具体描述,一般是由 PIM 自动转换生成的。一个系统里面包括多个 PSM,如 EJB PSM、关系数据库 PSM 和 WEB 应用 PSM,并且 PSM 间建有关联,以实现不同平台间 的互操作。 (4)实现相关模型 ISM 处于软件开发的编码阶段,它描述了系统的实现细节。它 是基于确定的平台或者技术定义转换规则,然后通过 MDA 转换工具自动生成的,是以 具体的码的形式呈现出来的,它的建立意味着系统的实现[44]。 2.1.2 MDA 模型转换 在基于 MDA 的软件开发方法中,在需求分析、概要设计、详细设计和编码阶段都 有一个相应的模型产生,而这个模型是由上一个阶段的模型变换而来的,即模型转换。 模型转换即将源模型按照一组变换规则自动化转换成目标模型的过程[2],而变换规则必 需是无歧义的,必需能保证变换得到的目标模型的含义始终与源模型保持一致,这样才 能保证模型转换的实用价值。根据 MDA 在软件开发过程中定义的 4 种模型,可以将其 模型转换分为 6 种情况,如图 2-2 所示: 图 2-2 MDA 的主要模型转换 Fig. 2-2 The main model transformation of MDA (1)CIM 到 PIM 的模型转换是描述系统功能需求的业务模型到概要分析模型的转 换,如 UML 中的用例图到顺序图、活动图、类图等的转换。以往这部分的转换都是依 靠软件设计分析人员手动完成,随着人们意识到需求分析过程的二义性对整个软件开发 过程的影响的重要性,专家们开始研究这部分的自动转换方法,尽量消除因为人为参与 CIM PIM PSM ISM 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 9 产生的不一致性和二义性。但是就目前的技术而言,要想从 CIM 自动推导出 PIM 是不 可能,因为一些选择,如 CIM 中的哪些部分要由软件系统来支持,是需要人来决定。 本文研究的用例图到类图的转换方法就是属于 CIM 到 PIM 的转换。 (2)PIM到PIM的模型转换是对系统模型在功能层次上的规约分析和设计精化[45], 是对 PIM 模型的一个求精过程。有了这部分转换的定义,当在软件开发生命周期中,模 型需要进行与特定平台信息无关的改进、过滤或者特殊化,可以直接使用 PIM 到 PIM 的转换进行改造精化。 (3)PIM 到 PSM 的模型转换是概要分析模型到系统的详细设计模型的转换,其转 换规则准确的描述了如何将系统的功能描述转换成系统在特定平台上的功能描述。一个 系统需要多个平台或多项技术的支撑,如基于 WEB 的三层应用,需要涉及数据库、中 间件和用户界面三个层次,所以需要将系统平台无关的功能描述映射成为与一个个特定 平台相关的功能描述,完成各特定平台的功能实现。这部分的转换一直是基于 MDA 方 法研究的重点,由 PIM 到一些常用的特定平台的转换方法已经相当完善和成熟,而且基 本上可以实现自动化转换,如类图到关系数据库的转换, (4)PSM 到 PIM 的模型转换是从现有的实现模型中抽象出平台无关模型的过程, 是一个逆向工程,很难通过自动化来完成转换过程。一般是在对 PSM 进行修改后,需 要对修改后的 PSM 进行验证或者向 PIM 进行反馈时使用 PSM 到 PIM 的转换。 (5)PSM 到 PSM 的模型转换是对系统模型在实现层次上的细化精化过程。当涉及 到组件实现与部署时,就需要用到 PSM 到 PSM 的转换[45]。 (6)PSM 到 ISM 的模型转换是将特定的平台转换成该平台相关可读的代码。目前 已有很多研究机构和厂商研究开发平台相关模型到代码的转换工具。 目前 PIM 到 PSM 的模型转换研究相对较多,CIM 到 PIM 的研究也开始备受关注, 市场上也出现了很多 PSM 到 ISM 的转换工具。基于 MDA 的模型转换研究一直是研究 MDA 方法一大重点,也是一大难点。随着研究的深入,很多有效的模型转换方法相继 被提出,如手动转换方法、基于规则的模型转换方法、基于关系代数的模型转换方法、 结构驱动的转换方法和基于元模型的转换方法等[46]。 本文采用的基于元模型的转换方法是目前最为流行的转换方法。这种转换方法源自 于 MOF,MOF 是 MDA 的四项核心技术之一,是为了统一各种建模结构而诞生的。OMG 定义了 MOF 的 4 层体系结构,从下到上依次称为 M0、M1、M2、M3。其中 M1 层是 模型层,M2 层是元模型层,M1 层是 M2 层的实例,M2 层定义了 M1 层的结构和包含 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 10 的元素,比 M1 层具有更高层次的抽象。基于元模型的转换方法以元建模为基础,通过 抽象出处于 M1 层的源模型和目标模型的元模型,实现源模型和目标模型的元模型层间 元素的转换来完成源模型到目标模型的转换。基于元模型的模型转换方法的转换框架如 图 2-3 所示: 图 2-3 基于元模型的模型转换方法的转换框架 Fig. 2-3 The framework of the transforming method based meta-model 图中 Ma 是源模型,MMa 是 Ma 的元模型,Mb 是目标模型,MMb 是 Mb 的元模型, 两个元模型都是元元模型 MOF 的实例,转换语言也是基于 MOF 的,而转换规则是依 据转换语言来编写的。由图可知,转换规则 Rule 是 MMa 到 MMb 的映射,源模型 Ma 是通过转换机制得到目标模型 Mb,而转换机制是执行了 MMa 到 MMb 的转换规则,即 基于元模型的转换方法的转换思想是模型层的模型之间是依据元模型层的元模型之间 的转换规则来实现转换的。 Eclipse 模型框架 EMF 是对 MOF 规范的实现,EMF 定义了一套 Ecore 元模型,该 模型是 MOF 核心元素集的 EMOF(Essential MOF)的实现[47],并且与 UML 元模型类 似,同样位于 MOF 中的 M2 层。EMF 在 Eclipse 中以插件的形式存在,它可以准确高 效的实现模型的转换,在实际应用中非常广泛,已经是很多应用项目的基础。EMF 定 义的 Ecore 元模型包含了类、数据类型、属性和方法等元素,涵盖了类图的所有元素, 因此可以用来定义类图模型。本文采用类图来描述类图和 HBase 数据库模型的元模型, 因此类图和 HBase 数据库模型的元模型都可以使用 EMF 的 Ecore 来定义描述的。 2.1.3 模型转换语言 OMG 在提出 MDA 后,又提出了 QVT(Query/Views/Transformation)标准,旨在 定义一种通用的语言描述转换规则,为模型的查询、视图以及转换制定了一个规约,解 决模型间的转换问题。QVT 不是具体的转换规则,而是一种变换定义语言,与元模型 MOF MMa MMb Ma Mb Language Conversion Engine Rule 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 11 的定义类似,是对转换规则的一种标准化描述,同时也符合 MOF 的定义。 本文所使用的模型转换语言 ATL 是目前比较流行的模型转换语言,是由 ATLAS INRIA&LINA 研究组织依据 OMG 的 MOF/QVT RFP 而创立的[48],因此 ATL 和 QVT 的 转换框架非常相似。ATL 现在是 Eclipse Modeling Project 子项目 M2M(Model-to-Model Transformation)上的一个子项目,它是基于 EMF 框架,依托运行于 Eclipse 平台上,并 且是开源的,只需在 Eclipse 安装相应的插件即可永久使用。ATL 中提供了类似 JAVA 的 KM3(Kernel Meta Meta Model)[49]语言,KM3 是 ATLAS INRIA&LINA 研究组织定义 的一种描述元模型的与具体实现无关的语言,可以被看着是一种描述元模型的领域专用 语言 DSL(Domain Specific Language)。在 EMF 框架中可以先用 KM3 语言来描述元模 型,然后再将 KM3 描述的元模型转换成 EMF 框架下遵循 XMI 标准的用 XML 描述 的.ecore 文件。这个转换过程是自动的,转换规则也是系统自带的,而且 KM3 与 JAVA 类似,开发人员容易掌握,这样使得开发人员在 EMF 框架上构建元模型时变得更为简 单。ATL 正在被不断的完善,并且随着 Eclipse 平台的广泛使用,其应用范围也在不断 扩大,一些开源的模型转换工具都使用 ATL 来描述转换规则,如 AndroMDA,因此 ATL 拥有非常好的应用前景。 ATL 是一种混合式的转换语言,既包括命令式语言,又包括声明式语言[50]。声明式 语言是主体,可以描述简单的模型转换;当遇到较为复杂的模型转换,则使用命令式语 言。在 ATL 的模型转换框架中主要包括源模型、目标模型、源模型的元模型、目标模 型的元模型和一个描述转换规则的.atl 文件,其中源模型、目标模型和元模型都是由 EMF 来描述的。ATL 的转换过程就是先构建源元模型、目标元模型和源模型,然后执行转换 规则得到目标模型。 2.2 HBase 相关知识介绍 HBase 是一个稀疏的、多维的、分布式的、面向列存储的 Hadoop 的开源数据库, 是目前比较流行的基于列存储的 NoSQL 数据库。 2.2.1 HBase 的数据模型 HBase 数据库中的表存储的是一系列行记录,每条行记录由三个基本元素组成,分 别是行关键字 Row Key、时间戳 Timestamp 和列 Column。Row Key 相当于关系数据库 中的主键,标识不同的行记录,并且系统会自动将行关键字按照字典的顺序进行排序; Timestamp 是一条行记录里面不同版本记录的标识,记录了数据的不同版本,标明了每 次数据操作的先后顺序;Column 被定义为:的形式,即 Column 包含 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 12 Family 和 Qualifier 两部分。通常将 Family 称为列簇,列簇是一个集中存储单元,一般 将经常被一起访问的数据放到同一个列簇中,以提高访问效率,其个数在创建表时定义。 而 Qualifier 是指列簇中的列,它的个数是没有限制的,可以无限制的动态增加。对于传 统的关系数据库,只需知道列名就能确定数据的存储列,而在 HBase 中需要同时知道 Family 和 Qualifier 才能唯一的确定一个数据的存储列。因此对 HBase 的索引必须知道 行关键字、列簇名、列关键字和时间戳四部分信息,即要通过 Row Key 、 :、Timestamp 才可以唯一确定表中某一数据单元的值。HBase 中的 数据没有类型,其都是以二进制格式存储。 用户在存储数据时,每一行都有一个可排序的主键和任意多的列,但是每一行数据 可以有不用的列。因此每一行具有相同的列簇,但是可能具有不同的列。HBase 的数据 模型如表 2-1 所示。HBase 与传统的关系数据库存在很大的差异,它是基于列存储的, 表与表之间不存在关联,每张表都是一张独立的表,没有外键约束。 表 2-1 HBase 的数据模型[35] Table 2-1 The data model of HBase 2.2.2 HBase 的数据存储和访问 HBase 的存储架构如图 2-4 所示。HBase 中 Table 随着记录的增加不断增多后就会 被分解成多个 Region,每个 region 的信息存储在一个.meta 的表中,.meta 表中的 RowKey 的存储信息的格式为:,此外 Table 的每一个 Region 的相关信息以及.meta 表对应的 HRegionServer 信息也存放在.meta 表中。而.meta 表也会随着信息量的增多被分解为多个 Region,每个 region 信息都存储在一个 Root 表 中,Root 的存储信息格式与.meta 表类似并且 Root 表的位置信息由 Zookeeper 记录。 Table 的每一个 Region 都和一个 HRegion 对应,每个 HRegion 包含多个 HStore。 HBase 是基于列存储的,因此一个 HStore 里面存储的是同一个列簇的信息,不同列簇的 数据存放在不同的 HStore 中。MemStore 和 StoreFile 组成了一个 HStore,其中 MemStore 是一个缓存机制,写入的数据首先是存储在 MemStore 中,当 MemStore 中的数据量达 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 13 到设定的存储阈值时,系统自动将 MemStore 中的数据写入一个新的 StoreFile 中并清空 MemStore。当 StoreFile 的数量达到一定值就会产生一个合并操作,将里面的数据进行 版本合并和删除,当某个 StoreFile 大到一定程度时又会触发一个分解操作,分解成两个 StoreFile,同时对应的 Region 也会被分解成两个,重新被分配到对应的 HregionServer。 HBase 中的数据最终是以二进制文件 HFile 的形式存储在底层的 HDFS 中。HFile 包含有 多个数据块,每个数据块格式都是由 Magic 开头,接着是一个个 key/value 对。Value 部 分就是存放的真实数据,数据是以二进制的形式存储的。 图 2-4 HBase 的存储框架[34] Fig. 2-4 The storage framework of HBase 用户对 HBase 的增删改操作都是一个不断添加数据的过程,当进行 StoreFile 合并 操作时才对数据进行删除并且通过版本合并来更新数据。对于 HBase 的数据访问,HBase 不支持任何的连接查询,只提供了根据行关键字、行关键字范围查询以及扫描全表的访 问方式。当根据行关键字或行关键字范围进行查询时,首先根据 Zookeeper 的记录找到 Root 表的位置访问 Root 表,然后根据输入的 Rowkey 从 Root 表中找到对应的信息,得 到该 Rowkey 在.meta 表中对应的 Region,再访问该 Region 找到该 Rowkey 在 Table 中 对应的 Region 以及对应的 HRegionServer 信息,最后通过 HRegionServer 向 HDFS 获取 访问数据。全表扫描也是同样的流程,而且更为简单。 2.3 小结 本章首先介绍了 MDA 的体系结构、模型层次、模型转换类型以及转换语言 ATL 等 MDA 相关知识,全面了解了 MDA 的模型转换的思想、方法以及相关的技术问题;然 后介绍了 HBase 数据的数据模型、存储形式以及访问方法,对 HBase 的基本知识有个 全面的了解,为下面的应用提供理论依据。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 14 第三章 用例图和用例描述到类图的半自动转换研究 在基于 MDA 的软件开发过程中一般使用 UML 作为标准的建模语言,使用其定义 的 13 种图来描述系统在开发过程中各个阶段的信息。其中在软件需求分析阶段一般使 用用例图来描述系统的各个模块的功能信息,用例驱动的需求分析方法[45]是需求分析阶 段普遍使用的方法。在软件分析阶段,开发人员普遍采用类图来描述系统的静态结构, 而类图包含的类、类的属性和操作以及类之间的关系等信息都可以通过用例描述系统的 功能和场景中获取,这说明由用例图到类图的转换是完全可能的。 用例图和用例描述只描述系统的功能以及业务,不涉及到系统的具体结构和实现技 术,属于 MDA 定义的 CIM,即领域模型。类图描述的是系统的静态结构,不涉及具体 的平台或者技术相关的信息,属于 MDA 定义的 PIM。因此用例图到类图的转换属于 MDA 中 CIM 到 PIM 转换的范畴。 本文构造的领域模型包括用例图和用例描述两部分,因此本章先分析用例图和类图 元素之间的映射关系,创建初始类图,然后在此基础上从用例描述中获取更多的对象信 息,完善类图。 3.1 用例图到类图的转换 3.1.1 用例图概述 用例图是由执行者、用例以及它们之间的关系构成的描述系统需求的模型,反应了 系统对象间的交互情况。它以外部使用者的角度从系统的外部看系统的功能,并不描述 系统内部的具体实现,即它描述的是系统要做什么,而不是怎么做[51]。用例图普遍用于 需求分析阶段,它以最简洁明了的方式描述了系统的需求,是用户和开发人员交流沟通 的重要桥梁。用例图主要包括系统、执行者、用例三个模型元素。执行者是在系统的外 部与系统进行交互的用户,即系统的参与者;一个用例是系统的一个功能单元。 在用例图中,执行者与执行者之间存在泛化关系,执行者与用例之间存在关联关系, 用例与用例之间存在包含关系、扩展关系和泛化关系。因此用例图中主要包含关联关系、 包含关系、扩展关系和泛化关系四大关系。 3.1.2 类图概述 类图是 UML 中最常见的图,主要用于软件开发过程的概要设计阶段,描述了系统 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 15 的静态结构特征。类图描述的是类、接口、协作以及类之间的关系,本文研究的用例图 和用例描述到类图的转换主要研究如何将用例图和用例描述转换成类图中类和类之间 关系,不涉及到接口和协作的转换。类图中的类包含三部分的内容,分别是类名、类的 属性和类的操作,其中类名不能为空,其他两项可以为空。类之间的关系包括关联关系、 泛化关系、依赖关系和实现关系,其中关联关系还包含了聚合和组合关系。 类的识别需要大量的技巧和经验,寻找类的一些技巧包括:名词识别法,根据用例 描述描述确定类,根据边界类、控制类、实体类的划分来分析确定系统中的类等[40]。本 文主要根据用例图和用例描述来确定类的。 3.1.3 转换思想 根据以上分析可知,用例图中包含的主要元素有执行者、用例以及他们之间的关系, 下面将这些元素一一映射到类图中的元素中。根据这些元素的性质可以分为执行者和用 例的映射以及各种关系的映射。 (1)执行者和用例的映射 执行者是系统的用户,是使用系统的对象,因此可以直接转换成一个类。而用例代 表系统的功能,属于系统的一个功能实体,因此也可以直接将用例转换成一个类。转换 成的类的属性和操作可以从用例描述中获取,这部分将在后面介绍。 (2)关联关系的映射 用例图中的关联关系与类图中的关联关系类似,因此用例图中相关联的执行者和用 例的关联关系可以直接转换成执行者和用例对应类间的关联关系 (3)泛化关系的映射 用例图中的泛化关系与类图中的泛化关系定义类似,因此用例图中存在泛化关系的 执行者与执行者或者用例与用例的泛化关系可以直接转换成他们对应类间的泛化关系。 (4)包含关系的映射 用例图的包含关系中的包含用例是从多个基用例中抽离的具有相似操作的部分,可 以认为包含用例是属于基用例的一部分,与类图中聚合关系和组合关系的定义类似。但 是包含用例可能不仅仅对应一个基用例,它可以与多个基用例对应,形成包含关系,即 这个包含用例是可以被多个基用例共享的,包含关系的这个特性与组合关系的定义相违 背,与聚合关系相符合,因此可以将用例图中的包含关系转换成类图中的聚合关系。 (5)扩展关系的映射 用例图的扩展关系中的扩展用例是从某一基用例中抽取出来的相对独立而且可选 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 16 的部分,可以认为扩展用例属于基用例的一部分,与类图中的聚合和组合关系类似。而 且扩展用例只对应于一个基用例,系统是根据基用例的选择来决定是否执行扩展用例的 功能,即扩展用例是依赖于基用例的。扩展用例是从基用例中抽取出来的,即在基用例 产生的情况下才有扩展用例,当基用例不存在时,扩展用例也不复存在。扩展用例的这 些特性与组合关系的相符合,因此可将用例图中的扩展关系转换成类图中的组合关系。 根据上述映射规则的分析,可以总结出用例图到类图的转换规则如下: (1)将每个用例转换成一个类,每个执行者转换成一个类,并为每个类添加一个对 象标识符的属性; (2)将用例图中执行者和用例之间的关联关系,转换成类图中的执行者所转换的类 指向用例所转换的类的关联关系; (3)将用例图中特殊用例与一般用例以及执行者之间的泛化关系,转换成类图中的 特殊用例或执行者所转换的类指向一般用例或执行者所转换的类的泛化关系; (4)将用例图中包含用例与基用例之间的包含关系,转换成类图中的包含用例所转 换的类指向基用例所转换的类的聚合关系; (5)将用例图中扩展用例与基用例之间的扩展关系,转换成类图中的扩展用例所转 换的类指向基用例所转换的类的组合关系。 3.2 规范化用例描述到类图的转换 3.2.1 用例描述 用例图中的用例只能描述系统具有的总体功能,而无法详细的描述系统的具体的功 能细节和具体的需求信息,因此需要对抽象的用例进行细化,使用文本语言对每个用例 的功能加以详细的描述介绍。 用例描述将系统的功能需求分成一个个功能模块后再使用通俗易懂的语言精简准 确的加以描述,可以完整详细的描述一个业务流程。一个完整的用例描述不需要囊括需 求分析得到的所有信息,但是一般都包括用例的目标、用例的触发条件、消息流、可选 流程、特殊需求、执行结果等方面的内容[51]。开发人员在软件开发的需求分析阶段,一 般会根据自身的需要生成一个用例描述模板来对用例进行描述,这个模板包含了用例描 述所要描述表达的内容。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 17 表 3-1 用例描述模板 Table 3-1 The template of use case description 用例描述主要是描述系统的详细功能,是对某一业务需求的工作流程的具体描述, 因此事件流是用例描述的核心。事件流是对系统的业务需求的具体描述,描述了这一业 务流程所有的可能发生的情况。它有且只有一个主事件流,其他事件流都是主事件流的 可能出现的分支或者异常情况,是对主事件流的一种补充。在事件流中包含了完成系统 这一功能需要涉及到的对象以及相关操作,因此可以从事件流中提取出具体的参与对象 和产生的行为动作。 3.2.2 规范化用例描述语言 为了让用户和开发人员能更好的交流,用例描述尽量采用通俗易懂的语言来描述, 但是这种描述存在很大的随意性和二义性,可能会由于个人理解的不同和偏差而导致构 建的模型有偏差。而且采用随意的自然语言来对用例进行描述,很难实现通过机器来读 取自动获取对象,只能通过人工的方式来完成对象的获取,这样会导致生产效率低下, 而且越多的人为参与过程,意味着其产生的二义性越多。为此人们开始尝试使用规范化 的描述语言来描述用例,最大量的减少二义性,提高建模效率。 Liwu Li 总结归纳出 13 种英文简单句的句式结构,并将这 13 种句式用于用例描述, 实现用例描述到序列图的半自动化转换。本文也将采用这 13 种句式来描述用例,实现 用例描述到类图的半自动化转换。Liwu Li 定义的 13 种英文简单句句式如表 3-2 所示: 表 3-2 13 种英文简单句的句型结构[26] 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 18 Table 3-2 Structure of 13 simple English sentence 这 13 种句式简单而且常见,与其他规范化的用例描述语言相比,其约束性虽然不 够强,但是却方便开发人员编写。用例描述语言约束力越强,越规范,产生二义性的机 会较低,但是描述形式就会越复杂,会增加开发人员的工作难度,他们需去了解学习该 语言后才能用来描述用例,不仅如此,实现起来也会比较困难。而本文采用这 13 种简 单句式来描述用例,开发人员不是去了解学习其具体结构,只需要在模型转换工具提供 的用例描述编辑器中选择使用的句式,然后根据约束规则将相应的内容填入对应的文本 框中即可。这样大大的降低了开发人员的难度,同时也保证了用例描述的规范性。 此外本文在 Li 提出的 8 条约束规则的基础上做了相应的补充,使得规范化描述语 言更适用于本文的用例描述到类图的转换。Li 定义的 8 条约束规则如下[25]: 规则 1:每个句子只包含一个主语和一个谓语; 规则 2:每个句子都必须是主动句; 规则 3:使用同一个动词描述同一个动作; 规则 4:句子中不能出现代词,必须是具体的名字; 规则 5:表示分支结构的句子以 If 开始,以 EndIf 结束,使用 Else 表示可选项; 规则 6:表示并发执行结构的句子以 StratConcurrency 开始,以 EndConcurrency 结 束,并且并发块都必须以 Concurrent 开始,第一个并发块除外; 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 19 规则 7:表示同步执行结构的句子以 StartSynchronization 开始,以 EndSynchronization 结束,并且同步块都必须以 Synchronized 为开始,第一个同步块除外; 规则 8:表示循环结构的句子以 While 开始,以 EndWhile 结束。 本文在此基础上增加了 3 条约束规则: 规则 9:在不同句子中描述同一物体时,使用同一个名词,而且能准确描述该物体, 另外如果指代的是系统,使用关键字 system; 规则 10:如果是系统提示执行者向系统输入数据,使用关键词 ask 以及使用句型 2; 规则 11:如果是执行者向系统输入数据,使用关键词 input 以及句型 8; 3.2.3 转换思想 每个用例描述对系统的功能进行了详细的描述,其核心部分事件流描述了一个业务 需求的详细流程,该业务涉及的对象、参数以及操作都包含在事件流的描述中。因此可 以从事件流中提出这些对象和操作信息,再转换成系统的类以及类的相关属性和操作。 本文使用了 13 种简单英文句式和 11 条约束规则将用例描述规范化,对这 13 种句 式进行分析,就可以在句式中提取需要的对象信息。具体的提取步骤可以分为以下三步: (1)类和属性信息的提取。首先要清楚代表类和属性的词一定是名词,所以要从 固定句式中提取出名词。在 13 种句式中只有 subject 和 object 可能是名词,将这些部分 提取出来后要判断它们是属于类还是属性,如果是属性的话,要判断是属于哪个类的属 性。由于这部分信息在事件流的描述中无法体现,所以提取出这些词后需要开发人员人 为的判断这些词的分类。也正是由于这个原因本文提出的领域模型到类图的转换是半自 动化转换。 (2)操作信息的提取。操作是一个动作,因此要从固定句式中抽取出动词,以此 作为操作。事件流的每一句描述都代表着用户与系统的一次交互,因此都会有一个动作 产生,而且根据不同的句式,这个动作的发生者也会有所不同,要根据具体的句式来定。 其中如果句型 2 用于系统提示执行者向系统输入数据时,该句的对应的 Operation 信息 为此用例所转换的类下 getobject(),如果句型 8 用于执行者向系统输入数据,该句对应 的 Operation 信息为此用例所转换的类下 getobject()。此外控制关键字 If 和 While 的下一 个语句的操作固定为 check 操作。 (3)关系信息的提取。每一句的用例描述都包含着外界与系统的一次交互,与系 统有交互的对象必然与系统存在一种关联关系,因此可以从用例描述中提取出可能产生 交互的两个对象,如果其中一个对象是系统,就可以为这两个对象建立一种关联关系。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 20 根据上述的分析,可以得出 13 种句式分别可能对应的类或属性、操作、关系信息, 如表 3-3 所示: 表 3-3 13 种简单句式分析表 Table 3-3 The parse list of 13 simple sentence 3.2.4 转换算法 用例描述到类图的转换算法是:首先获取用例图中的所有用例并依次读取每个用例 对应的用例描述中的事件流,然后依次判断每一条语句是否是以 If、IfElse 等控制结构 的关键字开头的,如果不是就根据该语句前面的数字判断该语句所属的句式,然后根据 表 3-3 的划分分别提取出类或属性、操作、关系等信息(实际应用中这些信息在输入用 例描述时已经根据表 3-3 的划分规则提取出来),并分别把这三类信息存放在三个列表 中。最后分别读取这三个列表的信息,根据具体的信息转换成类图中的类、类的属性、 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 21 类的操作以及生成类间的关系,具体算法如下: 1.循环读取每个用例描述中的事件流; 2.循环读取事件流的每一条语句; 2.1 如果该语句是以“[n]”形式开头的,就读取该语句后面的分别对应于类或属 性、操作、关系的三个字符串,分别存放在三个列表中; 2.2 如果该句不是以“[n]”形式开头的,则跳过; 3.循环读取存放类或属性信息的列表,判断句型中的名词所属类型; 3.1 如果是一个类,首先在已有的类图里面查找是否存在此类,如果不存在就将 此类加入到类图中,并为该类添加对象标识符属性; 3.2 如果是一个属性,读取其所属的类,判断该类是否已存在; 3.2.1 如果该类已经存在,判断该类是否已有该属性,如果没有就将该属性加入 到该类中; 3.2.2 如果该类不存在,就将该类添加到类图中,并为该类添加对象标识符属性, 然后再将该属性加入到该类中; 4.循环读取存放操作信息的列表,判断其所属的类是否存在; 4.1 如果该类已存在,将该操作加入到该类中; 4.2 如果该类不存在,就将该类添加到类图中,并为该类添加对象标识符属性, 然后再将该操作加入到该类中; 5.循环读取存放关系信息的列表,判断列表中的每一对词组是否包含 system 对象; 5.1 如果包含,判断另外一个对象是否是一个类 5.1.1 如果是一个类,则判断该类是否存在 5.1.1.1 如果已存在,判断类图的关系中是否已有这个类和当前对应的用例类 的关系,如果没有就将此关系加入到类图中; 5.1.1.2 如果不存在,就放弃此关系。 5.1.2 如果不是一个类,则提取出其所属的类,并判断该类是否存在 5.1.2.1 如果已存在,判断类图的关系中是否已有这个类和当前对应的用例类 的关系,如果没有就将此关系加入到类图中; 5.1.2.2 如果不存在,就放弃此关系; 5.2 如果不包含,就放弃此关系。 由于用例描述可能不涉及到所有的对象或者对象信息,因此需要对转换得到的类图 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 22 进行精化操作,完善类以及类间的关系,绝大部分的精化过程需要人为完成。 精化的过程如下: (1)根据需求描述,完善类的属性信息; (2)检查类之间的关系,保证不能出现独立的类; (3)由于子类对父类有继承关系,所以如果类 A 既与父类有关联关系,又与子类 有关联关系,就删除 A 与子类的关联关系。这一步骤可以由转换工具自动完成。 3.3 模型转换工具的设计与实现 本节基于前面讨论的用例图和用例描述到类图的转换方法设计了一个模型转换工 具。该工具根据输入的用例图以及用例描述中的事件流,按照提出的转换方法进行转换 得到 XML 文件格式描述的类图模型。 3.3.1 模型转换工具的需求分析 本文设计实现的模型转换工具主要用于用例图和用例描述到类图的转换,根据上述 的转换方法,首先将用例图转换成类图;然后在生成的类图的基础上实现用例描述到类 图的转换,完善类图;最后再对生成的类图进行精化。因此设计实现的模型转换工具应 该具有以下的功能: (1)用例图编辑功能。用户能够根据需求添加、删除以及修改用例图中的元素, 如执行者、用例和关系,并且将编辑好的用例图以一定的形式存储起来。 (2)用例描述编辑功能。本文采用了 13 种简单的英文句式来对用例进行描述,所 以工具必须能提供这 13 种语句的句型结构的编辑框架,以供用户输入,并将输入的用 例描述以一定的形式存储起来。 (3)模型转换功能。这是模型转换工具的核心部分,要求能够读取用例图的元素 以及用例描述,然后按照本文提出的算法实现,将用例图和用例描述中的对象转换成类 图中的元素。 (4)类图编辑功能。在转换生成类图之后,需要对类图进行精化,要求用户能够 对类图中的类、属性、操作以及关系进行添加、删除、修改等操作,并将最终的类图以 一定的形式存储起来。 3.3.2 模型转换工具的设计 根据上述的需求,本文设计的用例图和用例描述到类图的转换工具可以划分为以下 四个主要模块:用例图构造模块、编辑用例描述模块、核心转换模块、类图生成模块, 其中核心转换模块包括了用例图到类图的转换模块和用例描述到类图的转换模块,而且 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 23 用例描述到类图的转换是在用例图到类图的转换的基础上实现的。转换工具中的数据流 依次通过这四个主要模块完成模型的转换。这四个主要转换模块的框架图如图 3-1 所示: 图 3-1 用例图到类图模型转换工具框架图 Fig. 3-1 The framework of transforming tool 用例图构造模块的主要功能是用例图信息的编辑。本工具为用户提供了一个树形结 构输入框架,如图 3-2 所示。第一层的节点包含了用例图转换过程中涉及的三个元素: 执行者、用例和关系,用户可以通过增、删、改树形结构中的节点来编辑用例图的执行 者、用例和关系信息。编辑完成后工具会为用例图生成一个 XML 格式文件,存放用例 图的结构信息,同时为每一个用例生成一个文本文件,用于存储下面要编辑的用例描述。 图 3-2 用例图编辑界面 Fig. 3-2 Interface for editing use case 编辑用例模块包含了两部分功能。第一部分功能是提供了一个事件流编辑器。在这 个编辑器中包含了 Li 定义的 13 种句型以及用于结构控制的关键字,用户根据需要选择 要使用的句型,编辑器就会产生对应的编辑框架,用户只需把相应的内容填入该框架中 即可完成用例事件流的输入。第二部分功能是解析事件流。用户完成用例描述编辑后, 工具会自动根据 3.2.3 小节提出的各个句型的划分规则来提取相关的信息,在提取类或 属性部分的信息时需要用户为该部分信息选择分类。此模块结束后,输入的事件流以及 提取出的对象信息都会存放在对应的用例描述文本文件中。 核心转换模块包括了用例图到类图的转换和用例描述到类图的转换两部分。首先读 用例图构造 模块 编辑用例描述 模块 类图生成 模块 核心转换 模块 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 24 取描述用例图结构的 XML 文件,按照前面 3.1.3 小节提出的映射规则依次将用例图中的 元素转换成类图中的元素,完成用例图到类图的转换功能。然后依次读取用例图中的每 个用例对应的文本文件,获取文本文件中的对象信息,按照前面 3.2.4 小节的算法完成 用例描述到类图的转换功能。 类图生成模块的功能是为核心转换模块得到的类图模型生成一个树形结构,用户可 以继续编辑该类图完成类图的精化步骤。最后会输出得到一个 XML 文件格式描述的类 图模型结构。该文件经过转化成.ecore 格式的文件后可作为基于元模型的类图到 HBase 转换过程的源模型。 3.3.3 模型转换工具的实现 本文采用能够提供图形编辑界面的 Microsoft Visual Studio 2005 和 C#作为模型转换 工具的开发平台和开发语言。模型转换工具的各个模块的具体实现如下。 (1)用例图构造模块 本模块主要采用 VS2005 提供的 treeview 控件来实现,通过对该控件上的节点进行 增、删、改操作来实现对用例图上的执行者、用例和关系的编辑功能。首先为每一个新 建的项目在 treeview1 上生成一个用例图的树形结构,这个树形结构包括 Actor、UseCase 和 Relation 三个并列的一级节点,然后通过对这个三个节点进行增加子节点、删除子节 点和修改子节点的操作来构造用例图。这一模块实现主要包括以下四个部分: (a)添加节点操作。通过 treeview 控件提供的 treeView1.SelectedNode.Nodes.Add() 方法为选中的节点添加子节点,实现添加执行者、用例和关系的功能。其中因为添加的 关系是已有的执行者和用例间的关系,所以本工具在实现关系的添加时提供了一个已有 的执行者和用例的列表供用户选择,避免手动输入导致的不一致错误。此外,在添加用 例的同时,会自动生成与该用例同名的文本文件。 (b)删除节点操作。通过 treeview 控件提供的 treeView1.SelectedNode.Remove()方 法删除选中节点和 treeView1.SelectedNode.Clear()方法删除选中节点的所有子节点,实现 删除执行者、用例和关系的功能。此外,一旦某一执行者或用例被删除,与该执行者或 用例有关的关系也会被删除。 (c)修改节点操作。修改节点主要是修改节点的名字 Name 和字节的显示文本 Text,通过对节点的这两个属性重新进行赋值来实现修改执行者和用例的名称的功能。 此外,需要说明的是因为关系是执行者和用例、用例和用例之间的关系,是建立在已有 的用例和执行者上,因此本工具不提供对关系进行修改的操作,只能通过删除后再添加 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 25 的操作来实现修改用例图中的关系。 (d)读取文件操作。对于编辑完成的用例图,需要将其保存以备下次使用时可以 直接读取而不必再进行构造,减少工作量,因此本模块通过构造两个函数方法 SaveTreeViewToXml()和 ReadXmlToTreeView()实现了将控件 treeview1 的内容保存到 XML 文件和读取 XML 文件的内容填入到 treeview1 控件中的功能。 (2)用例描述编辑模块 本模块主要是提供了一个用例描述的编辑框架,并实现对用例描述的存储功能。此 模块的实现主要包括以下三个部分: (a)用例描述的编辑框架。触发编辑用例的操作后,会自动产生一个新的窗体为 用户提供一个编辑用例的界面,该界面上提供了上述 13 种英文句型编辑框架。通过一 个下拉菜单的选择和一个确定按钮的触发,界面会根据用户选择的句型显示相应的编辑 框,方便用户输入和相关对象的提取。在此处用户需要对对象的类别进行划分,判断该 对象是一个类还是类的属性,此工具提供了四个类别:NoneClass(表示该对象既不是 类也不是类的属性)、IsClass(表示该对象是一个类)、NewClass(表示该对象是一个新 类的属性)、OldClass(表示该对象是用例图中的执行者或者用例转换成的类的属性)。 一次只能输入一句用例描述。 (b)用例描述的缓存机制。由于用例描述需一句一句编辑,如果每编辑完一句用 例描述就将其保存到文件中,会增加 I/O 开销,因此此工具对于编辑完成的每一句用例 描述采用一种缓存机制,通过定义一个委托事件 MyEvent 将编写完成的每一句用例描述 都存放在一个 VS2005 提供的类似于表格的 dataGridView 控件中,该控件可以显示用户 输入的用例描述以及提取出的相关对象信息,方便用户及时发现错误并进行修改。 (c)用例描述的存储。当完成一个用例的所有编辑工作后,通过一个确定按钮的 触发,调用一个 save()方法,逐行读取 dataGridView 控件中的内容保存到与该用例同名 的文本文件中。由于 dataGridView 控件中的每一行数据都包括事件流、提取出的属性信 息和操作信息三部分内容,因此需要使用\t 将不同的内容隔开,以方便读取相关的内容 (3)核心转换模块 此模块是本工具的核心模块,主要是实现用例图到类图的转换。在执行具体的转换 之前,此模块会在一个控件 treeview2 上构造一个类图的树形结构,这个树形结构主要 包含 Class 和 Operation 两个并列的一级节点,此转换模块的转换实质就是根据前面介绍 的用例图和用例描述到类图的转换方法和算法为这两个节点添加相关联的子节点。这一 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 26 模块主要包括以下两部分: (a)用例图到类图的转换。这一部分转换的前提是在控件 treeview1 上已经打开或 者新建一个用例图的树形结构,然后读取该用例图结构,按照本文提出的用例图元素与 类图元素的映射规则,将用例图的相关元素转换为类图的元素,并添加到 treeview2 的 相应节点上。 (b)用例描述到类图的转换。这一部分是在用例图到类图的转换中已生成的类图 的基础上进行的。首先获取用例图上的所有用例名称;然后循环读取与获取的用例名称 相对应的文本文件中的相关的属性和操作信息,并将这些信息分别放入三个 List 中,其中第三个 List 是存放关系信息,是对存放属性信息的 List 进行相关修改后得到的; 再依次读取 List 中的对象,按照本文提出的算法分别映射到相关类的属性、操作和关系。 (4)类图生成模块 在执行完模型转换功能后,就会在控件 treeview2 中显示经过转换得到的类图,其 格式与用例图框架类似。在类图的精化过程也需要对 treeview2 中类图的节点进行增、 删、改操作,最后也需要将生成的类图结构保存的 XML 文件中,以供平台无关模型到 平台相关模型的转换使用。这些操作和方法与在 treeview1 中构造用例图的相似,在此 便不再做详细介绍。 3.4 实例验证 本节将通过一个简单的图书管理系统的例子具体描述分析用例图是如何根据上述 的模型转换方法得到类图,然后使用在上一节中设计实现的转换工具进行实践,得到描 述类图模型。此类图模型是符合本文所构建的类图元模型的描述的,是类图元模型的一 个实例。关于类图元模型的构建以及详细介绍将会在第四章中提及。图书管理系统的用 例图如图 3-3 所示: 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 27 图 3-3 图书管理系统的用例图 Fig. 3-3 User Case Diagram of book management system 根据 3.1 小节的用例图到类图的转换规则,将用例图中的执行者和用例都转换为类, 用例图中的关联关系转换为类图中的关联关系,泛化关系转换为类图中的泛化关系,由 此可以得到初步的类图,如图 3-4 所示: 图 3-4 图书管理系统的初步类图 Fig. 3-4 The primary Class Diagram of book management system 接着使用规范化的用例描述语言对每个用例的事件流进行描述,由于篇幅的限制, 本文列举 Login 和 BorrowBook 两个用例的用例描述,并用其作为描述 3.2 节提出的用 例描述到类图转换的转换实例。Login 用例和 BorrowBook 用例的用例描述分别如表 3-4 和表 3-5 所示: 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 28 表 3-4 Login 用例描述 Table 3-4 Description of Login 表 3-5 BorrowBook 用例描述 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 29 Table 3-5 Description of BorrowBook 根据 3.2.3 小节提出的 13 种句型的划分规则,得出上述两个用例的事件流解析结果, 分别如表 3-6 和表 3-7 所示: 表 3-6 Login 用例事件流的解析结果 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 30 Table 3-6 The analytic results of event flow of Login 控制关键字 类或属性 操作 关系 user, usertype user.selectuserstype() user, userID, system system.getuserID() If userID system.checkuserID() / system, password, user system.getpassword() While password system.checkpassword() / system, password, user system.getpassword() EndWhile system, logintime system.recordlogintime() system, services system.showservices() Else system, errormessage system.showerrormessage() EndIf 表 3-7 BorrowBook 用例事件流的解析结果 Table 3-7 The analytic results of event flow of BorrowBook 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 31 控制关键字 类或属性 操作 关系 admin,cardNumber admin.scancardNumber() If cardNumber system.checkcardNumber() / system, errormessage system.shrowerrormessage() Else system, borrowStatus system.checkborrowStatus() If borrowStatus system.checkborrowStatus() / system, errormessage system.shrowerrormessage() Else admin, bookID admin.scanbookID() system, bookBorrowStatus system.checkbookBorrowStatus () If bookBorrowStatus system.checkbookBorrowStatus () / system, errormessage system.shrowerrormessage() Else system, borrowTime system.recordborrowTime() system, bookPeriod system.alterbookPeriod() < system, bookPeriod> system,bookBorrowSt atus system.alterbookBorrowStatus () < system, bookBorrowStatus> EndIf EndIf EndIf 对于系统的每个用例都采用同样的方法进行分析,然后再采用 3.2.4 的转换算法就 可得到对应的类图。通过模型转换工具得到的类图文件相应的图形化的类图如图 3-5 所 示: 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 32 图 3-5 图书管理系统的类图 Fig. 3-5 Class Diagram of book management system 3.5 小结 本章研究领域模型到类图的半自动转换方法,提出了用例图和用例描述到类图的转 换方法和规则。首先介绍用例图和类图的主要元素以及元素间涉及的关系,分析用例图 元素与类图元素之间的映射关系,形成用例图到类图的转换规则;然后采用一种规范化 语言描述用例,根据该语言特性从事件流中获取与类相关的信息,并将这些信息转换成 类图中的相关元素,完成用例描述到类图的转换;最后再根据实际应用对转换得到的类 图进行精化。接着根据提出的用例图和用例描述到类图的转换方法设计实现了一个模型 转换工具,根据转换方法的步骤,将工具划分为 4 个功能模块,并对每个模块进行了介 绍。最后运用一个简单图书管理系统的例子,先根据需求构建领域模型,然后分析描述 了从用例图和规范化用例描述到类图的具体的转换过程,并使用本文实现的转换工具实 现该实例的用例图和用例描述到类图的模型转换。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 33 第四章 基于元模型的类图到 HBase 的转换研究 数据库是存储和管理数据的仓库,在很多领域的前台应用都需要数据库来支撑,数 据库结构的好坏对系统前台的应用起着关键的作用。以往在对数据库进行设计时都是数 据库设计人员根据需求手工绘制 E-R 图来完成数据库的设计,由于个人理解的不同,这 种设计方式存在很大的二义性,而且可能导致设计的数据库与用户需求的数据库模型存 在差异。自从 MDA 方法提出后,人们试图运用 MDA 的思想,由需求分析模型,自动 生成数据库模型,以降低因为人为的原因导致设计的数据库系统与需求的差异。 目前,已有关系数据库模型自动生成方法的研究,有的将分析阶段的类图作为数据 库设计的参考依据,将类转换成数据库的表,类的属性转换成对应表的字段,并根据类 之间的关系为对应表建立连接,如增加外键约束等。本文也是以类图为基础,研究 HBase 数据模型的自动生成方法。通过前面的介绍可知,HBase 是基于列存储的数据库,与传 统的关系数据库存在着很大的差异,因此他们之间的自动生成方法必然存在不同。 4.1 模型转换方法 从 MDA 方法的角度来看,UML 类图属于 PIM 模型的范畴,HBase 数据模型属于 PSM 模型的范畴,要实现 UML 类图到 HBase 的转换就是要实现 PIM 模型到 PSM 模型 的转换。PIM 模型到 PSM 模型的转换方法有很多种,本文采用的是比较常用的基于元 模型的模型转换的方法。 基于元模型的转换方法是以 MOF 为基础的,其基本思想是以 MOF 中处于 M2 层的 元模型间的元素的映射作为转换规则,通过实现 M2 层元模型间的转换来实现 M1 层的 模型的转换[52],即转换规则是属于 M2 层的元模型的,而实际的转换是发生在 M1 层的。 UML 类图和 HBase 数据模型都属于 M1 层模型,要实现基于元模型的 UML 类图到 HBase 的转换,首先要构建能够精确的描述类图和 HBase 数据的元模型,即源元模型和 目标元模型,然后实现源元模型各元素到目标元模型各元素的映射,最后以此映射规则 作为模型转换规则实现具体的 UML 类图到 HBase 的转换。 4.2 源元模型的构建 由于 MDA 中的模型可以使用特定的 UML 来描述,所以本文采用 UML 类图来描述 源元模型。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 34 UML 类图是对系统的静态结构的描述,类图中包含了接口、协作、类以及类之间 之间的关系。由于接口和协作一般与数据库不存在映射关系,所以本文认为类图主要是 由类和关系两种元素组成。类的主要特征包括一组 Attribute 类型的属性和一组 Operation 类型的操作,其中对象标识符 OID 是一种特殊的 Attribute,是类对象的唯一标识。类之 间的关系主要包括依赖关系、实现关系、关联关系和泛化关系,另外聚合关系和组合关 系属于特殊的关联关系。UML 类图元模型如图 4-1 所示: 图 4-1 UML 类图元模型 Fig. 4-1 The meta model of UML Class Diagram 4.3 目标元模型的构建 HBase 数据模型的元模型是属于 MDA 方法中定义的模型,因此也可以由 UML 类 图来描述。 通过前面的介绍可知 HBase 数据库主要包含 5 个元素,分别是表、行关键字、时间 戳、列簇、列,因此分别用 Table 类、RowKey 类、Timestamp 类、ColumnFamily 类和 Column 类五个类分别代表这五个元素。因为每张表都是由一个行关键字字段、一个时 间戳字段和多个列簇字段组成,而且这三个字段会因为表的建立而创建的,会因为表的 删除而撤销,所以为 Table 类和 RowKey 类建立一对一的组合关系,为 Table 类和 Timestamp 类建立一对一的组合关系,为 Table 类和 ColumnFamily 类建立一对多的组合 关系。而每一个列簇下有无数个列,而且列是在列簇建立后才产生,当删除某一列簇是, 该列簇下面的列也会跟着删除,因此为 ColumnFamily 类和 Column 类建立一对多的组合 关系。 HBase 数据模型的元模型如图 4-2 所示: 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 35 图 4-2 HBase 数据模型的元模型 Fig. 4-2 The meta model of HBase 4.4 模型转换思想 由于 web 系统对数据库的需求会发生变更,模型也会跟着不断变化,因为要确保当 需求发生变更时只需要对 UML 类图模型进行修改即可自动体现在 HBase 数据模型上, 所以需要在 UML 类图模型和 HBase 数据模型之间建立映射规则。因此本文在前面构建 的两个元模型的基础上定义这两个模型的映射关系。 类图描述系统中类的静态结构,不仅定义系统中的类,包括类的内部结构(类的属 性和操作),也表示了类之间的联系如关联、依赖、泛化等。根据 UML 类图元模型可以 将规则分为两部分:类映射规则和类关系映射规则。 4.4.1 类的映射规则 类是类图的重要组成部分,类的内部结构包含了一组属性和一组操作。由于类的操 作一般与数据库元素不存在映射关系,所以不考虑操作的映射。由 UML 类图元模型可 知 UML 类图中类的映射主要包括以下三个方面的映射。 (1)类的映射 通常,可以将类映射为数据库中的表,即为每一个类在 HBase 数据库中创建一张表, 表名为相应类的类名。 (2)对象标识符的映射 对象标识符 OID 是用于标识对象类或属性的编号,本文将其映射为 HBase 中的行 关键字,作为行在表中的唯一标识。由于行关键字不能为空,而在类中,对象标识符这 个属性可能不存在,所以在进行所有映射操作前需要为每一个类在其已有的属性中指定 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 36 一个属性或者增加一个新的属性作为其对象标识符,然后再将每个类的对象标识符映射 为表中的行关键字。 (3)属性的映射 属性是用来描述类的特征的,可以将类的所有属性映射(对象标识符除外)为数据 库表中的列,并将映射成的这些列放到一个列簇中。由于根据类图无法分析出哪些属性 是相关的,经常需要一起被访问的,所以只能将所有属性映射的所有列暂时放到一个列 簇中,当所有的映射完成后再根据这些属性的相关性划分列簇。 4.4.2 类关系的映射规则 由 UML 类图元模型可知类之间存在四种关系:关联关系、泛化关系、依赖关系、 实现关系,聚合关系和组合关系是两种特殊的关联关系。实现关系是类与接口间的关系, 与数据库的元素不存在映射关系。依赖关系有很多种表现形式,情况非常复杂,因此本 文不考虑其的映射。本文主要研究关联关系、聚合关系、组合关系和泛化关系的映射规 则。 (1)关联关系的映射 在关系数据库中,为了减少数据冗余和满足三大范式,如果实体之间是一对多的关 联就将一方的主键作为外键放到另一方的表中,如果实体间是多对多的关联就增加一个 新表存放两边的主键。而根据 HBase 数据库的大容量、列式存储、列可以动态增加、不 支持表间的连接操作的特点,本文认为不用考虑是哪种关联关系,只需为每一边的表都 新建一个列簇,列簇中的列存放对方的行关键字,如图 4-3 所示。这种映射方式虽然增 加了数据的冗余,但是由于 HBase 不像关系数据库支持表的连接操作,有外键约束,导 致 HBase 无法保证数据的一致性,而采用这种映射方式有利于保证数据的最终一致性。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 37 Project 类表 Task 类表 Person 类表 图 4-3 关联关系的映射 Fig. 4-3 The mapping of association relationship (2)聚合关系的映射 聚合关系属于关联关系的一种,强调了整体和部分之间的弱关联性。关联的两个类 不在同一层次,而是上下层之间的一种包含和被包含的关系,并且这种关联关系不强, 即“部分”不依赖于“整体”的存在而存在的,如车与零件的关系,零件是车的一部分, 但是零件不是在该车生产出来后才存在的,也不会因为该车的销毁而消失,它还可以为 其事物车所用。在此可以将聚合关系成是普通的关联关系,其映射规则跟上述关联关系 的映射规则一样,如图 4-4 所示: Car 类表 Piece 类表 图 4-4 聚合关系的映射 Fig. 4-4 The mapping of aggregation relationship (3)组合关系的映射 组合关系也属于关联关系的一种,强调了整体和部分之间的强关联性。与聚合关系 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 38 相同,属于组合关系的两个类也不在同一层次,而且是一种上下层之间的包含与被包含 关系。但是在组合关系中“整体”控制决定“部分”的生命周期,“部分”在“整体” 的出现后才会被创建,而且随着“整体”的消失而被删除,即“部分”是依赖一个“整 体”的存在而存在的,如数据库和表的关系,数据库创建后表也随之创建,删除数据库 后,该数据库中的表也不复存在。对于此类关系的映射,本文首先将其看作是一种普通 的关联关系,先按照关联关系的映射规则,在关系的两边都增加一个列簇,该列簇中的 列存放对方的行关键字。而根据这类关系“部分”紧紧依赖于“整体”而存在的特性, 就必须要求“部分”表存放“整体”表的行关键字的列永远不能为空。为了保证满足该 条件,可以将“部分”一边的表的行关键字改为“部分类 OID_整体类 OID”的形式, 同时删除在“部分”表创建的存放“整体”表的行关键字的列簇和列。如图 4-5 所示: Database 类表 Table 类表 图 4-5 组合关系的映射 Fig. 4-5 The mapping of combination relationship (4)泛化关系的映射 泛化关系是一种一般与特殊的关系,体现了分类与继承的原则,即一个子类继承了 父类的全部属性和方法,所以可以将“子类”中的所有属性映射为“父类”中的列,并 删除“子类”对应的表,同时“子类”与其他类之间的所有关系转化为根父类与其他类 的关系。如图 4-6 所示: Person 类 图 4-6 泛化关系的映射 Fig. 4-6 The mapping of generalization relationship 4.5 模型转换规则 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 39 本文采用 ATL 模型转换语言来描述类图到 HBase 的转换规则。根据前面的介绍, ATL 是一种基于 MOF 的转换语言,其转换框架与基于元模型的转换方法的框架一致, 提供了一种从源元模型转换到目标元模型的模型转换方式。对于基于 ATL 的转换应用, 首先要构建用 EMF 描述的源元模型、目标元模型,然后使用 ATL 编写转换规则,接着 构建源模型,最后执行 ATL 描述的转换规则即可得到目标模型。根据前面介绍的模型 转换思想,使用 ATL 描述的转换规则如下。 (1)p:以 rule 开头,定义匹配规则 Class2Table,使用关键字 from 声明转换源是 UMLClass 中的非子类,使用关键字 to 声明转换的目标是 HBase 中的表。接着是匹配项, 描述将非子类转换为相应的表以及将所有的类的相关属性转换为对应表中的行关键字, 列簇等。对应关键代码如下: (2)r:调用 helper getrowkey 将类本身对象标识符或者与该类存在组合关系的类 (在组合关系中属于“整体”)的对象标识符的组合转换为行关键字。对应代码如下: (3)CF:生成存放类本身的属性以及其子类属性的列簇和列,以 info 作为列簇名, 将类中的所有非对象标识符属性以及该类的所有子类的属性转换成该列簇下面的列。其 中 ColumnOfNoOId 是调用 helper getattribute 获取自身除对象标识符以为的所有属性, GeneralizationCol 是调用 helper getGeneralizationAttribute 获取其子类的所有属性对应的 关键代码如下: 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 40 (4)CompositionCF:为在组合关系中属于“整体”部分的类生成存放与该类存在 组合关系的类的对象标识符的列簇和列,以与该类存在组合关系的类的名称加上 foreign 作为列簇名,CompositionCol 调用 helper getComprimaryAttribute1 获取与该类存在组合 关系的类的对象标识符并分别转换成相应的列簇下面的列。对应的关键代码如下: (5)AssociationCF:生成存放与该类存在关联关系的类的对象标识符的列簇和列, 以与该类存在关联关系的类的名称加上 foreign 作为列簇名,AssociationCol 调用 helper getAssociationAttribute 获取与该类存在关联关系的类的对象标识符并分别转换成相应列 簇下面的列对应的关键代码如下: 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 41 下面通过运行 ATL 模型转换语言实现第三章中的图书管理系统的例子说明如何根 据本文提出的转换规则实现 UML 类图到 HBase 的转换,验证本文提出的转换方法的可 行性。在第三章中,运用本文设计的用例图和用例描述到类图模型转换工具实现了图书 管理系统的用例图和用例描述到类图的转换,得到了 XML 文件描述的类图模型。该 XML 文件是遵循 XMI 的元数据交换标准,且该类图模型也是符合本章构建的类图元模 型,是本章构建的类图元模型的一个实例,因此可以将第三章得到的图书管理系统的类 图作为基于 ATL 的模型转换的源模型。将第三章中使用模型转换工具得到的 XML 文件 描述类图模型强制转换为.ecore 文件,并导入到 ATL 的相应的项目中,在 EMF 的 Ecore Model Editor 中看到的源模型如图 4-7 所示: 图 4-7 源模型 Fig. 4-7 Source model 从上图可以获取到如下信息,这个系统包含 11 个类,每个类里面包含有相应的属 性和操作。此系统的类与类之间主要存在关联和泛化两种关系,其中 user 类和 admin 类 以及 user 类和 reader 类是泛化关系,user 类分别和 Login 类、AlterPassword 类存在关联 关系,admin 类分别和 BorrowBook 类、ReturnBook 类、ManageBook 类、ManageReader 类存在关联关系,reader 类分别和 BorrowBook 类、ReturnBook 类、QueryBook 类、 ManageBook 类存在关联关系,Book 类分别和 BorrowBook 类、ReturnBook 类、QueryBook 类、ManageBook 类存在关联关系。将此源模型通过 ATL 的转换就可以得到目标模型— 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 42 —HBase 的数据模型,得到的.ecore 文件描述如下: 在 EMF 的 Ecore Model Editor 中看到的目标模型如图 4-8 所示: 图 4-8 目标模型 Fig. 4-8Target model 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 43 从图中可知,类图模型经过 ATL 转换得到的 HBase 数据库模型包含 9 个表,分别 与类图中的 9 个类对应,类中的对象标识符对应到 HBase 数据表中的 Row Key,表中 info 列簇中的列包含了对应类的除了对象标识符外的所有属性。其中因为 user 类和 admin 类、 user 类和 reader 类存在泛化关系,故只生成与父类对应的表 user,而 admin 类和 reader 类的属性则作为表 user 下 info 列簇中的列字段。转换得到目标模型保证了类和类的属性 的完整性和一致性,类中的所有关系都通过表的 foreign 列簇得以体现。对于存在关联 关系和聚合关系的任意两个类,生成的对应的表都有一个对应的列簇,将对方类的对象 标识符作为该列簇下的列。以 BorrowBook 类为例,BorrowBook 类与 reader 类、admin 类和 book 类都存在关联关系,故 BorrowBook 表中包含有 readerforeign、admimforeign 和 bookforeign 三个列簇,bookforeign 列簇下面的列字段是 book 类的对象标识符,而由 于 reader 类和 admin 类是 user 类的子类,经转换后 reader 类和 admin 类的所有属性都会 转换成 user 表的 info 列簇下的列字段,user 类的对象标识符 userID 成为 reader 类和 admin 类的对象标识符,因此 BorrowBook 表中的 readerforeign 和 admimforeign 列簇下面的列 是 user 类的对象标识符。经过转换最终得到的 HBase 数据库模型不仅保证了类的完整 性,而且有利于保证数据的最终一致性。当对一个表的数据进行增删改操作时,可以通 过查找这些 foreign 列簇获得与之关联的表,并对这些表进行相应的处理,保证数据的 最终一致性。上述例子很好的验证了本章所述的转换方法的可行性。 4.6 小结 本章基于 MDA 的思想,提出了一种基于元模型的 UML 类图到 HBase 的转换方法。 首先介绍基于元模型的转换的基本思想及方法,然后根据该方法先构建 UML 类图元模 型和 HBase 数据模型元模型,即源元模型和目标元模型,再分析出这两个元模型中各个 元素的映射规则,实现 UML 类图模型到 HBase 数据模型的转换,最后使用 ATL 实现一 个具体实例的转换,验证本章所提出的转换方法的可行性和有效性。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 44 第五章 总结与展望 5.1 总结 基于 MDA 的软件开发方法可以有效的提高软件的生产效率,解决不同平台或技术 间可移植性和互操作性问题。本文在全面学习 MDA 相关知识,了解掌握 MDA 的体系 结构、模型层次、相关支撑标准、模型转换思想、模型转换语言以及基于列存储的数据 库 HBase 的数据模型的基础上,通过研究基于 MDA 的模型转换方法实现从领域模型逐 步转换成 HBase 数据模型的过程。首先通过提出了用例图到类图和规范化用例描述到类 图的转换方法,实现由用例图和用例描述构造成的领域模型到类图的半自动化转换,然 后提出了基于元模型的类图到 HBase 数据模型的模型转换方法,最终实现了从领域模型 到 HBase 数据模型的转换。论文主要做了以下几个方面的研究: 1. 提出用例图和用例描述到类图的半自动化转换方法。研究用例驱动的需求分析 方法,构建用例图和编写规范化用例描述作为领域模型,分别实现用例图和用例描述到 类图的转换。首先全面分析了用例图和类图包含的主要元素以及元素间存在的关系,提 出用例图和类图的元素映射关系,实现用例图到类图的初步转换;然后分析用例描述的 随意性带来的弊端,提出使用 Li 提出的 13 种英文简单句式来规范化用例描述,并根据 实际需要修改相应的约束规则;然后根据各个固定句式提取出每个语句可能是描述类或 属性、操作、关系等信息的词组,并提出将这些词组转换成类图的转换算法和规则,实 现用例描述到类图的转换。 2. 提出基于元模型的类图到 HBase 的模型转换方法。在了解基于元模型的模型转 换方法思想的基础上,构建类图和 HBase 数据库的元模型,讨论类图元模型中的类、属 性、关联关系、聚合关系、组合关系和泛化关系与 HBase 数据模型的元模型中的表、行 关键字、时间戳、列簇和列之间的映射关系,得出类图到 HBase 数据模型的转换规则, 并采用模型转换语言 ATL 实现该转换规则;最后采用 ATL 描述的转换规则实现一个具 体实例的类图到 HBase 数据模型的转换,验证了 ATL 描述的转换规则的正确性以及本 文提出的转换规则的可行性。 3. 基于用例图到类图的半自动化转换方法,设计实现了用例图到类图的模型转换 工具。根据本文提出的方法的转换步骤,将转换工具划分成不同的功能模块,并对各功 能模块进行分析介绍。最后采用一个简单的图书管理系统系统的例子,说明本文提出的 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 45 方法是如何将领域模型转换成 HBase 数据模型,验证设计的模型转换工具的正确性以及 本文提出的转换方法的可行性。 5.2 下一步工作 在基于 MDA 的软件开发方法中,模型转换是其核心思想,MDA 包含了 6 种类型 的模型转换。本文研究的领域模型到类图的半自动化转换属于 MDA 中 CIM 到 PIM 的 模型转换,而类图到 HBase 数据模型的转换属于 MDA 中 PIM 到 PSM 的模型转换。本 文采用 MDA 的软件开发方法,研究从领域模型开始,通过模型间的自动转换生成最终 的平台相关模型 HBase 数据模型的方法,对于提高软件的开发效率有一定的意义。但是 本文提出的转换方法还存在不足,需要做进一步的研究。本文的下一步研究工作主要包 括以下几个方面: 1. 用例图和用例描述到类图的转换部分。这部分的转换是半自动化的转换,需要 对转换得到的类图进行精化,会对类图进行人工修改,不可避免的可能会出现前后模型 不一致的情况,因此需要进行逆向工程保证转换前后模型的一致性,本文未涉及这一内 容,所以下一步工作需要研究实现类图到用例图的逆向转换。此外在提取出了可能是描 述类或属性的词组后,无法自动判断该词组是类还是属性,以及是属于哪个类的属性等, 需要人为的判断,具有一定的局限性,所以下一步还需要研究如何结合一些智能算法实 现将这些词组自动化分类的方法。 2. 类图到 HBase 的转换部分。这部分在对类的各种关系进行映射时,只是讨论了 简单的关联关系、聚合关系、组合关系和泛化关系的映射规则,而依赖关系也是类图中 常见的关系,由于其复杂性,本文没有给予探讨,因此下一步需要对更为复杂的类图模 型就行研究探讨,总结出依赖关系的映射规则,完善这部分的转换规则。 3. 模型转换工具部分。工具在对于用例图和类图的构建时只能采用简单的树形结 构来描述,无法将他们图形化,下一步需要在工具中增加图形编辑框架,用于编辑图形 化的用例图和类图。 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 46 参考文献 [1] 张帆.软件开发技术[M].北京: 电子工业出版社,2009: 1-3. [2] Anneke Kleppe. MDA Explained: The Practice and Promise of The Model Driven Architecture [M]. Boston: Pearson Education, Inc. 2003: 1-31. [3] 辛永博. 基于 MDA 的 UML 模型转换研究[D]. 西安: 西安电子科技大学,2009. [4] 鲍志云. 解析 MDA[M]. 北京: 人民邮电出版社, 2003:1-42. [5] 张康康, 赵建华. MDA 模 型 转 换 工 具 的研 究[J]. 计 算 机 应 用与 软 件, 2009, 26(8):122-124. [6] 汪菊琴. 开源模型转换工具 AndroMDA 原理[J]. 黑龙江科技信息, 2012, 19: 98-99. [7] 戚铁林. MDA 模型转换平台中模型转换方法的研究与实现[D]. 北京: 北京工业大学, 2010. [8] 姜泉, 赵建华, 李炫东. 一个基于 EDOC ER 模型的模型转换工具[J]. 南京大学学报 (自然科学报), 2006,10(5):1023-1031. [9] 张征, 何克清, 刘进. 一种基于规则的模型转换方法.[J]. 计算机应用研究, 2005, 10:16-19. [10] Karimi Siamak Najjar, Parsa Saeed. Semi-Automatic transformation of sequential code to distributed code using Model Driven Architecture approach[C]// 2009 IEEE International Symposium on Parallel and Distributed Processing with Applications. IEEE, 2009: 708-714. [11] 曹晓夏, 缪淮扣, 孙军梅. 一种运用模式将 CIM 转换到 PIM 的方法[J]. 计算机科学, 2007, 34(6): 265-269. [12] 冯娟, 史浩山, 赵宏伟, 等. 基于本体的 CIM 层模型转换技术研究[J]. 计算机应用研 究, 2009, 26(2): 645-647. [13] Zhang Bo, Li Yafen. Research of relational model transformation based on ATL [C]//2012 IEEE International Conference on Computer Science and Automation Engineering. IEEE, 2012: 115-118. [14] Singh Yashwant, Sood Manu. Model and Transformations in MDA [C]// 2009 First International Conference on Computational Intelligence, Communication Systems and Networks. IEEE, 2009: 253-258. [15] A.Fouad, K.Phalp, J.M.Kanyaru, et al. Embedding requirements with Model-Driven Architecture[J]. Software Qual J, 2011, 19: 411-430. 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 47 [16] Tao Yue, Lionel C.Briand, Yvan Labiche. A systematic review of transformation approaches between user requirements and analysis models[J]. Requirements Eng, 2011, 16: 75-99. [17] J. M. Spivey. The Z Notation: a Reference Manual [M].second edition. London: Prentiee Hall, 1992. [18] Antoni Diller. Z: An Introduction to Formal Methods [M]. 2nd Edition, London: John Wiley & Sons, Inc, 1994. [19] Edmunds A, Butler M. Linking Event-B and Concurrent Object-Oriented Programs[J]. Electronic Notes in Theoretical Computer Science, 2008, 214(C): 159-182. [20] 朱玉恺, 陈忠民, 张乃孝. VDM 和 Z 两种规范描述语言的比较[J]. 计算机研究与发 展, 1996, 33(11): 516-522. [21] Joseph A. Gogueny, Timothy Winklerz, Jose Meseguerz, el at. Introducing OBJ[EB/OL]. http://homepage.cs.uri.edu/faculty/hamel/obj/iobj.pdf, 1993. [22] Ben Achour C, Rolland C, Maiden N, et al. Guiding use ease authoring: Results of an empirical study[C]//4th IEEE international symposium on Requirements engineering. IEEE, 1999: 36-43. [23] Anda B, Sjoberg D, orgensen M. Quality and understanding of use case models[C]// In J. Lindskov Knudsen (Ed.), 15th European conference on object-oriented programming, LNCS. Springer, Budapest, 2001: 402-428. [24] Cox K, Aurum A, Jeffery R. An experiment in inspecting the quality of use case descriptions[J]. Journal of Research and Practice in Information Technology. 2004, 36(4), 211-229. [25] Liwu Li. A Semi-Automatic Approach to Translating Use Case to Sequence Diagrams[J]. Technology of Object-Oriented Language and System, 1999, 184-193. [26] Liwu Li. Translation Use Case to Sequence Diagrams[C]//15th IEEE International Conference on Automated Software Engineering (ASE'00). IEEE Computer Society, 2000: 293-296. [27] 蒋璐. 基于 MDA 的 UML 模型转换[D]. 西安: 西安电子科技大学, 2009. [28] 陈磊. 用例图到顺序图转换的研究[D]. 西安: 西安电子科技大学, 2009. [29] Jin Hong, Yan Haihua. Requirement Modeling and Analysis based on MDA [C]//Proceedings of the 2012 International Conference on Control Engineering and Communication Technology. IEEE Computer Society, 2012: 774-777. [30] 曾一, 王艳丽, 洪媛, 等. 一种 B 语言描述的需求模型到 PIM 的转换方法[J]. 计算机 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 48 工程与科学, 2010, 32(3): 85-88. [31] Bernice Purcell. The emergence of “big data” technology and analytics[J]. Journal of Technology Research, 2013, 4: 1-7. [32] Steve Lohr. The Age of Big Data[N]. The New York Times, 2012-2-11. [33] Tom White. Hadoop 权威指南[M]. 北京: 清华大学出版社, 2011: 1-12. [34] Lars George. HBase 权威指南[M]. 南京: 东南大学出版社, 2012: 27-63. [35] HBase 技术介绍[EB/OL]. http://www.searchtb.com/2011/01/understanding-hbase.html, 2011-01-14. [36] 李超, 张明博, 刑春晓. 列存储数据库关键技术综述[J]. 计算机科学, 2010, 12(37): 1-8. [37] Chongxin Li. Transforming relational database into HBase: A case study [C]// 2010 IEEE International Conference on Software Engineering and Service Sciences (ICSESS). IEEE, 2010: 683-687. [38] 周春燕. 基于 MDA 的元模型软件生成方法研究[D]. 南京: 南京航空航天大学, 2011. [39] 刁成嘉. UML 系统建模与分析设计[M]. 北京: 机械工业出版社, 2007: 31-56. [40] Torsten Fink, Manuel Koch, Pauls. An MDA approach to Access Control Specifications Using MOF and UMLProfiles[J]. Electronic Notes in Theoretical Computer Science, 2005, 142(2006): 161-179. [41] Application[M]. Addison-Wesley Professional, 2001: 240-252. [42] OMG. The Common Warehouse Model 1.1., OMG Document: formal/2003-02-03. [43] Omg/ormsc. Model Driven Architecture. OMG Document Ormsc, 2001, 7(1). [44] David S. Frankel. Model Driven Architecture: Applying MDA to Enterprise Computing [M]. New Jesey: John Wiley&Sons, Inc. 2003: 95-109. [45] 刘涛. MDA 中从 CIM 到 PIM 的模型转换研究[D]. 西安: 西安电子科技大学, 2010. [46] Czarnecki K, Helsen S. Classification of model transformation approaches[C]// Proceedings of the 2nd OOPSLA Workshop on Generative Techniques in the Context of the Model Driven Architecture. 2003, 45(3): 10-13. [47] Mohamed Maddeh, Romdhani Mohamed, Ghedira Khaled. MOF-EMF alignment[C] //Proc. of the 3rd International Conference on Autonomic and Autonomous Systems. 2007. [48] ATLAS group LINA&INRIA Nantes. Atlas Transformation Language ATL User Manual. Version 0.7.2006. [49] Jouault.F, and Bézivin.J. KM3: a DSL for Metamodel Specification[C]//Proceedings of 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 49 8th IFIP International Conference on Formal Methods for Open Object-Based Distributed Systems, LNCS 4037. 2006: 171-185. [50] ATL/Concepts[EB/OL]. http://wiki.eclipse.org/ATL/Concepts, 2012-09-18. [51] 余安萍, 俞俊平. UML2 工具箱[M]. 北京: 电子工业出版社, 2004: 1-122. [52] 张博, 李亚芬, 王普. 基于 Atlas 语言的数据库模型转换方法的研究[J]. 计算机工程 与设计, 2013, 34(2): 507-514. 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 50 致谢 时光飞逝,三年的研究生生涯即将画上结束符了。我很庆幸也很感激这艰辛而又美 好的六个寒暑有老师孜孜不倦的教诲和关怀,家人殷切的支持和鼓励以及同窗好友热情 无私的友爱和帮助陪伴着我,借此机会,我诚心的向他们表达我最诚挚的谢意。 首先我要感谢广西大学和老师们对我的教育和栽培,特别要感谢我的导师顾平教授 对我的悉心教育和培养。从踏入研究生生涯开始,无论是课程的学习、论文的选题还是 最后论文的撰写,顾老师都给予了我很多的帮助和鼓励。在我课程学习遇到问题时,顾 老师教导我要学会独立思考;在我为论文选题感到迷茫时,顾老师为我指引了前进的方 向;在我科研遇到瓶颈时,顾老师耐心的指导我并鼓励我迎难而上。在科研上,顾老师 严格要求并认真耐心的指导我完成每一个阶段的学习科研任务,在生活中,顾老师无微 不至的关心并鼓励我积极面对各种困难,勇往直前。这三年来,顾老师孜孜不倦的教学 态度和严谨的学术作风深深的影响着我,让我学到了很多课堂以及书本以外的东西,并 激励着我不断的成长进步。在此,谨向顾老师表达我最诚挚的谢意。 其次我要感谢实验室的师兄弟以及周围的同学、朋友这三年来在学习和生活中给予 我的帮助和支持。在离开了家庭的温暖的怀抱后,是你们给了我无限的温暖。谢谢你们 在我孤单、难过的时候一直陪伴和支持着我;谢谢你们在我遇到困难时无私的给予我帮 助;谢谢你们让我这三年的研究生生活过得非常的丰富、充实和温馨。这三年的求学生 涯因为有了你们的一路陪伴,成为了我人生中的一段美好回忆。 最后我要感谢我的家人一直以来对我的理解和鼓励。在家里环境如此艰难的时刻, 你们不但不给我任何负担和压力,反而无怨无悔的支持和鼓励我去追寻我的梦想,让我 可以毫无顾虑的全身心投入的科研工作中,专心的完成学业。你们的支持是我坚持不懈、 奋发图强的动力。你们不仅给我机会去实现自己的梦想,更让我感受到了家庭的温暖, 幸福的滋味,谢谢你们! 李 燕 2014 年 6 月于广西大学 广西大学硕士学位论文 基于 MDA 的领域模型到 HBase 的模型转换研究 51 攻读学位期间发表论文情况 [1] Yan Li, Ping Gu, Chao Zhang. Transforming UML Class Diagrams into HBase Based on Meta. 2014 International Conference on Information Science, Electronics and Electrical Engineering (ISEEE 2014), 2014: 720-724. [2] Chao Zhang, Ping Gu, Yan Li. Workflow Management Systems Meet Model Drive Architecture. The 11th IEEE International Conference on Dependable, Autonomic and Secure Computing (DASC2013), 2013: 96-99.

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档