zoukankan      html  css  js  c++  java
  • DSM:使用MetaEdit+编写Family Tree Modeling Language

    本文已挪至  http://www.zhoujingen.cn/blog/2687.html

      在信息系统开发平台OpenExpressApp - 总体架构的由来中说到MetaEdit+是全球DSM领域内著名的产品,OpenExpressApp将借鉴它的思想来形成自己的模型引擎,本篇介绍一下如何使用MetaEdit+来建立一个家族模型语言,这个也是MetaEdit+提供的一个示例,通过家族树语言的生产来加深对MetaEdit+的了解。如果你也想开发自己的建模工具,那么推荐你也去研究一下。

    MetaEdit+下载

      去官方网站MetaCase下载Free 31-day evaluation version of full MetaEdit+ Workbench,它自带一些示例模型,例如UML示例的一个图的界面如下:

    需求

    对家族树进行建模,图形建模后如下:

    GOPPRR 元模型语言

    再开始之前介绍一下GOPPRR原模型语言。对于家族树图形语言表示如下,在图中标识了多个元类型,每个类型有自己的功能和语义:

    Eachmetatype has its function and semantics as follows:
    • Graph 图:一个独立模型,通常使用图来表示
    • Objects 对象:图的主要元素,例如例子中的Person
    • Property 属性:图、对象、端口、角色和关系都可以拥有一些属性描述
    • Port 端口:定义角色如何连接对象的可能语义
    • Relationship 关系:让对象连接在一起
    • Role 角色:连接关系与对象之间

    家族树例子使用这些元类型表示如下:Person为对象,Family为关系,Parent、Child为角色,First name、Family Name为属性,没有定义端口,整个显示为一张

    实现家族树模型语言

    1. 生成对象Person,对象属性如下:
    2. 生成标记
      在上图Object Tool中点击【Symbol Editor】按钮,弹出标记编辑器界面,生成标记如下:
    3. 生成关系Family
    4. 生成角色Parent、Child
    5. 生成图Family Tree
        
        
    6. 经过上面5步,Family Tree模型语言就轻易地建立起来了,这一步主要是应用模型语言生成家族树

    模型演进

    上面只是实现了一个简单的家族树模型,一般模型会随着要求不断演进,对于上面示例我们现在做一下演进:Person区分男性和女性

     

    1. 修改Person属性
    2. 增加从Person继承下来两个对象:Female和Male对象
    3. 增加男性和女性标记
        
    4. 修改图(Graph)定义
        
    5. 增加端口,限制连接点
        
    6. 再次修改Graph定义
    7. 应用模型生成一个家族图

     

     

    欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]

     

  • 相关阅读:
    LeetCode:Validate Binary Search Tree
    二叉树的非递归遍历(非递归使用栈、非递归不使用栈)
    scala 基础语法
    scala VS python2 (linux or shell)
    web压力测试工具
    Elasticsearch cluster health: yellow unassigned shards
    GC overhead limit exceeded
    linux定时任务的设置
    linux CPU占用率高(转)
    JQuery Sparkline 说明文档
  • 原文地址:https://www.cnblogs.com/zhoujg/p/1786003.html
Copyright © 2011-2022 走看看