精通xmi_UML,XMI和代码生成,第2部分

精通xmi

本专栏目前专注于建模,UML和XML。 更具体地说,我正在探索将UML建模用于XML开发,尤其是XSLT样式表如何通过自动派生提供帮助。

由于XML已成为开发项目中的常见功能,因此许多开发人员对将XML与他们的其余开发集成起来越来越感兴趣。 尽管许多组织仍使用临时工具来进行XML开发,但趋势是采用已经用于其他开发需求(例如Java技术)的相同XML方法论(或至少一套通用工具)。 ,数据库或Web。

自动推导

如上一专栏所述,模型是对系统的简化描述,可以帮助进行计算和预测。 在本文的上下文中,系统始终是XML词汇表。

图1将建模周期说明为模型的连续体。 第一个模型绘制在白板(或一张纸)上,并且往往是非正式的。 在此阶段,目标是给所有参与者(用户,开发人员,设计师)一个自由表达自己的机会。

图1.连续的模型
连续模型

下一步是绘制一个UML模型(如果词汇很复杂,则可以绘制几个模型)。 UML模型更为完善和形式化,但由于它主要用作团队成员之间的沟通工具,因此仍具有综合性和可读性。

最后一个模型是XML模式,这是所有模式中最精确的一种。 它的目标是允许解析器根据词汇表定义来验证XML文档,以便它可以放弃可读性,而倾向于精度。

所有这些模型之间的主要区别是它们的目标:从非正式交流到解析器进行精确的正式验证。 区别不在于模型的性质(XML词汇表的简化描述),而在于每种模型提供的帮助级别。

如果您考虑到模型的连续性,从最不精确的模型到最正式的模型,则有必要研究一下自动推导 -从较早的模型自动生成一个模型的过程。 显然,仅当两个模型具有相同的描述性时,自动推导才能很好地工作,这与某些模型的描述性强于其他模型的思想产生了冲突。 下一节将讨论模型中描述的不同层次。 在这里,我将专注于推导。

XML元数据交换(XMI)

您会从上一期中回想起我是通过XMI和XSLT实现自动派生的。 假设你已经熟悉XML模式(如果你不是,请参阅相关信息 ),我将在本节介绍XML元数据交换(XMI)。

词汇和兼容性

XMI是一个复杂的规范(1.2版超过400页),因此,在本文中,我将局限于自动派生所需的最低限度的描述。

XMI不指定XML词汇表,而是指定一种为元模型生成词汇表的算法 。 换句话说,XMI不会像您期望的那样定义ClassAttributeAssociation或其他标签。 相反,XMI指定如何为元模型中的概念创建标签。 我知道有很多模型可以使用,但请耐心等待-稍后它会变得更加清晰。

因此,XMI与其说是框架,不如说是词汇。 不幸的是,这意味着没有两个工具以相同的方式解释该框架。 同一工具的不同版本之间也存在差异:Rational Rose最初是通过Unisys开发的附件来支持XMI的。 最新版本的Rational XDE具有对XMI的内置支持,但这是一个稍微不同的变体。 差异不一定显着,但可能会导致不兼容。 在实践中,将样式表定位到社区中使用的一个或两个工具是有意义的,而不必担心其余的工具。

在本文中,我将坚持使用OMG发布的示例,而不是采用一个特定版本的XMI。 尽管没有工具可以直接与样品兼容,但这是良好的中间立场。 使它们适应您选择的工具将不会很困难。

XMI标头

尽管XMI主要指定一种算法,但它还定义了一些标签和属性。 您将需要以下内容:

  • XMI始终是根元素。 它必须具有xmi.version属性(有效版本为1.0、1.1、1.2和2.0)。
  • XMI.header是有关模型信息的占位符。 它最重要的子级是XMI.documentationXMI.metamodel
  • XMI.documentation将最终用户信息保留为以下子元素(其名称不言自明):
    • XMI.owner
    • XMI.contact
    • XMI.longDescription
    • XMI.shortDescription
    • XMI.exporter <
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值