---
title: 使用 Altova UModel 实现模型驱动架构
date: 2012-02-14
tags:
  - uml
  - uml-tool
  - umodel
  - v2012
description: UModel 支持模型驱动架构，它使用平台无关的模型，并提供模型转换功能，可以将所有相关的建模元素在 UML、C#、Visual Basic、Java、数据库和 XML Schema 之间进行转换
---
Status: #blog

Tags:  #uml #uml-tool #umodel #v2012

Categories: [Altova](/blog/zh/category/altova.md) 
# 使用 Altova UModel 实现模型驱动架构

 [UModel](https://www.altova.com/zh/umodel.html) 支持模型驱动架构 (MDA)，它使用平台无关的模型，并提供模型转换功能，可以将所有相关的建模元素转换为和从 UML、C#、Visual Basic、Java、数据库以及 XML Schema 之间进行转换。
**模型转换** 采用模型驱动架构的方法进行软件工程，使用平台无关的模型，具有以下两个主要优势：

- 在设计阶段，开发者无需过多关注不同软件语言之间的细节和差异  
    
- 现有的 UModel 项目可以从一种源代码语言转换为另一种。例如，一个用于 C# 应用程序的 UML 模型可以转换为一个 Java 或 Visual Basic 项目

用户甚至可以将模型转换应用于从现有源代码逆向工程得到的项目。例如，可以使用UModel对现有的Java应用程序进行逆向工程，然后将其转换为Visual Basic类，并且还有许多其他可能性。 

[![Altova UModel 中的模型转换对话框](https://lh5.ggpht.com/-vlDqDh0bm04/TzGCelTJU_I/AAAAAAAAAmo/5iBbBSXMQN8/clip_image001_thumb.png?imgmax=800 "Model Transformation Dialog")](http://lh4.ggpht.com/-IkLLlKyafts/TzGCeZSd8gI/AAAAAAAAAmk/l08wEfYKH04/s1600-h/clip_image001%25255B3%25255D.png) 

## 平台无关的模型
模型驱动架构 (Model Driven Architecture, MDA) 是一套标准和方法，用于应用由对象管理组 (Object Management Group) 维护的统一建模语言 (Unified Modeling Language, UML)。在模型驱动架构中，软件项目的 UML 模型是一个平台无关模型 (Platform Independent Model, PIM)，它可以被完整地描述，而无需考虑任何特定编程语言的细节。这种开发策略允许软件架构师和其他开发人员专注于与业务领域相关的逻辑，而不是关注任何编程语言的特性。 

## 类型映射
在模型转换过程中，UModel 会将源模型中的数据类型映射到目标模型，以适应不同语言之间的差异。 "类型映射" 对话框允许您查看或编辑类型映射关系。 

[![UML模型转换中的类型映射](https://lh5.ggpht.com/-wv6KDewZJG8/TzGCfHTDz8I/AAAAAAAAAm8/2HbRCTFxdoQ/clip_image002_thumb.png?imgmax=800 "Type Mapping for UML Model Transformation")](http://lh4.ggpht.com/-rEbyMfbBpyQ/TzGCesGg87I/AAAAAAAAAm0/bxq-gJkEpxA/s1600-h/clip_image002%25255B3%25255D.png) 

UModel还会自动将目标语言的配置信息添加到转换后的项目中。 

## UML 类图 
作为模型转换的一部分，UModel 会为目标系统创建新的 UML 类和类图，这些新的类和类图反映了原始项目中的类和类图。下图显示了从 Java 转换到 Visual Basic 后的“账户”层级图。在模型树中的名为“VB Target”的新文件夹中，新的“账户”类包含了所有属性和操作的 Visual Basic 语法。例如，新的“余额”属性被定义为 Visual Basic 中的 Single 数据类型，而在 Java 中，该数据类型是 float。转换完成后，原始的 Java “账户”类仍然保留在模型中，并位于模型树中的原始位置。现在，原始的 Java UML 设计将能够生成多种源代码语言的代码，包括 Java 和 Visual Basic。 

[![UModel 类图和模型树](https://lh4.ggpht.com/-YLCTivkFrmA/TzGCfqos7qI/AAAAAAAAAnM/LXPoJNJq2w8/clip_image003_thumb.png?imgmax=800 "UModel class diagram and Model Tree")](http://lh4.ggpht.com/-szjiBcB8F-k/TzGCfaRJyVI/AAAAAAAAAnE/BG4Wj_kpps8/s1600-h/clip_image003%25255B3%25255D.png) 

## 持续的转换参数 
这种转换范式不仅适用于创建新的转换，还可用于更新现有的转换，并将这些更新集成到指定的模型中。转换参数存储在模型中的“模型转换配置文件”中。该配置文件可以设置为在代码生成（正向工程）之前，以及/或在逆向工程之后，自动执行转换，从而根据对另一种模型的元素更改，来更新针对特定目标语言的元素。 

[![与模型一同存储的 UModel 转换参数](https://lh4.ggpht.com/-Bx5vm9d3qxs/TzGCgsJoN9I/AAAAAAAAAnc/7ztagxEOGsM/clip_image004_thumb.png?imgmax=800 "UModel Model Transformation Parameters")](http://lh4.ggpht.com/-DHWJQT8EZsI/TzGCgI86yiI/AAAAAAAAAnU/rgnof3YteXc/s1600-h/clip_image004%25255B3%25255D.png) 

这些“转换配置”设置也可以随时进行修改。 

[![UModel 转换配置文件设置](https://lh6.ggpht.com/-sReAh4mAWY0/TzGChB9cMlI/AAAAAAAAAns/4VUGEppaMGo/clip_image005_thumb.png?imgmax=800 "Transformation Profile Settings")](http://lh3.ggpht.com/-f4vf3DYtxLU/TzGCgzLGIDI/AAAAAAAAAnk/l2ck6BKgv3w/s1600-h/clip_image005%25255B3%25255D.png) 

此功能允许 UModel 自动化维护多种源代码语言的任务，从而简化跨平台模型的演进过程。如果您想尝试使用 UModel 2012 进行模型驱动架构和模型转换，您可以[下载一个免费的 30 天试用版](https://www.altova.com/zh/download/umodel/uml_tool_enterprise.html)。
