2014
年
2
月
第
32
卷第
1
期
西北工业大学学报
J
ournal of Northwestern Polytechnical University
Feb.
Vol.32
2014
No.1
收稿
日期
: 2013-04-23
作者简介
:
张森
( 1980—) ,
西北工业大学硕士研究生
,
主要从事软件工程的研究
。
一种
基于
MDA
的分布式对象模型框架代码生成方法
张森
1
,
邓磊
1
,
吴健
1
,
朱明洁
2
( 1.
西北
工业大学 计算机学院
,
陕西 西安
710072; 2.
中航工业西安飞机设计研究所
,
陕西 西安
710089)
摘 要
:
基于
模板技术的分布式对象模型框架代码生成系统提高了二次开发人员的工作效 率
。
但是
,
代码生成规则是在程序中硬编码实现的
,
耦合度较高
。
在此技术架构基础之上
,
提出了一种基于
MDA(
( m
odel driven architecture)
的分布式对象模
型框架代码生成方法
。
该方法以模型为基本输入
,
通过灵活的转换规则配置
,
生成具体平台的模型
,
并依次自动生成框架代码
,
从而有效提高了分布式
对象模型框架代码生成系统的扩展性和可维护性
。
关 键 词
: MDA; ATL;
模型转换
;
模板
;
代码生成
中图分类号
: TP311.5
文献标志码
: A
文章编号
: 1000-2758( 2014) 01-0049-06
分布式对象模型是分布式技术和面向对象技术
结合的产物
,
它是对分布式系统的业务处理进行抽
象来构造出的一组相关模型
。
这些模型通过接口来
实现客户程序和分布式中间件的相互通信
,
具有可
重用性
、
平台无关性等优点
。
分布式对象模型框架
代码是分布式对象模型在具体平台上的体现
,
提供
具体平台上的分布式对象发布订阅和远程方法访问
等服务
。
文献
[1]
描述了一种基于模板的代码自动
生成方法
,
该方法有效解决了人工编写分布式对象
模型框架代码工作量大
、
错误率高的问题
,
大大提高
了软件开发的速度和质量
。
然而代码生成的规则都
是在程序中硬编码实现的
,
可扩展性和可维护性
较差
。
MDA( model driven architecture,
模型驱动架构
)
是由
OMG( object management group,
对象管理组织
)
于
2001
年提出来的一种软件开发框架
。
该框架以
模型为核心
,
并将模型贯穿于整个软件开发过程之
中
。
它根据软件开发的不同阶段将模型分为
PIM
( platform independent model,
平台无关模型
) 、PSM
( platform specific model ,
平台相关模型
)
和代码
3
种
。
在
MDA
中
,
软件开发过程由对软件系统的建
模行为驱动
[2]
,
首先
要建立能够描述系统全部业务
的
、
与具体平台无关的
PIM。
然后制定
PIM
到具体
平台的
PSM
的模型转换规则
,
并通过这些规则将
PIM
转换成一个或多个
PSM。
最后根据具体平台
的代码生成技术将
PSM
转换成相应平台的程序代
码
。
本文结合一种典型的分布式对象模型框架需
求
,
改进了现有的基于模板技术的代码生成技术
,
提
出了一种基于
MDA
的代码生成方法
,
有效提高了
分布式对象模型框架代码生成系统的可扩展性和可
维护性
。
1
基于模板技术的模型框架代码生成
分布式对象模型框架代码生成系统的作用是将
用
户编写的分布式对象模型
描述
VDL
文件
,
通过解
析
,
生成分布式模型框架代码
。
该系统主要分为
3
个部分
:
模型解析
、
代码生成和驱动引擎
,
如图
1
所示
。
模型解析的功能是以动态链接库的形式提供一
组
API,
以供驱动引擎调用
。
此
API
实现了对用户
给出的分布式对象模型描述
VDL
文件的解析
,
并将
解析结果组织
、
记录在一个中间表示数据结构
( IR)
中
。
该部分包括词法分析和语法分析模块
。
词法分
析模块从
VDL
文件中分离出
VDL
的单词
。
语法分
析是通过
YACC( yet another compiler compiler)
工具
生成的
VDL
语法分析器来完成对
VDL
语法分析处