博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MetaModelEngine:元模型引擎开发思路
阅读量:6873 次
发布时间:2019-06-26

本文共 1655 字,大约阅读时间需要 5 分钟。

本文已挪至   

 

 

  在中介绍了MetaEdit+的一个家族树模型语言应用示例,通过示例的学习掌握了基本的概念,本篇将介绍一下的元模型引擎MetaModelEngine的应用思路。

为何借鉴MetaEdit+思想

  我在提到产品线带来的几个好处:减少成本,快速上市,减少风险和提高质量,这些都是我们在做软件产品时都期望达到的。在我以前blog中也有一个软件工厂的图,该图表明了模型驱动开发是支持软件产品线工程的一种方法,所以我会比较关注模型驱动开发。

中我讲到过MetaEdit+是全球DSM领域内著名的产品,它能够带来产品线中期望的几个好处:

  • 缩短上市时间,开发生产力能够提高5-10倍
  • 开发人员可以集中设计和关注业务功能,而不必用代码去写所有方面的内容
  • 由于使用的是经过验证的工具,产品质量显著提高
  • 可以完全控制模型和代码生成,而不像MDA方法模型和代码生成固定,不便于特定领域开发

通过以上说明可以看出,我借鉴MetaEdit+的思路是想采用一种模型驱动开发方法来支持产品线工程。  

元模型引擎对平台的支持

  知道MetaEdit+已经好多年了,之前也研究过这个工具,并查看过它的一些资料,也是在OpenExpressApp计划之中的重要组成部分。

  1. 支持OpenStudio的图形化建模,让业务人员能看、能做,符合OpenExpressApp让业务人员编写软件的价值主张,通过业务人员更早更多的参与,可以更快的构建应用
  2. 支持OpenTool的工具:快速原型开发工具、图形化自动化测试工具

Visual Studio的DSL架构

 

  • Microsoft.VisualStudio.Modeling:域模型框架时整个系统的核心,负责管理模型的元素和连接,也就是域类和域关系的实例。
  • Modeling.Disgrams:设计界面框架建立在域模型框架之上,它负责处理图形符号的显示,包括处理图表、图形、连接器和装饰等元素在设计界面上的显示
  • Modeling.Validation:验证框架负责执行关于模型元素和连接的验证方法,如果验证失败,它还要负责创建错误对象。它与Shell框架交互,把错误信息显示到Visual Studio的错误窗口
  • Modeling.TextTemplation:模板引擎负责执行文本模板来生成代码或其他的工件。模板引擎室一个独立的组件,用于执行来自非DSL的模板输入
  • Modeling.Shell:建模用的Shell负责管理将涉及器集成到Visual Studio中,例如处理工具窗口和菜单名利,以及文件的打开和关闭等

对MetaEdit+的技术借鉴

  • 组件架构图
    MetaModel实现步骤:图形编辑器(Diagram Editor)-> 矩阵和列表编辑器(Matrix和Table Editor)-> 代码生成器

  • 模型架构图:GOPRR为元元模型层、领域概念为元模型层、产品规格为模型层、实例为系统应用层

  • 元模型概念GOPPRR:图、对象、属性、端口、关系、角色

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

  • 绑定Binding

  • 对象引用图 Decomposition

实现DSM步骤

    • 设计领域概念(参考示例:
      1. 找到领域概念
      2. 把领域概念映射到模型概念GOPPRR:图、对象、属性、端口、关系、角色

  • 定义领域规则
    1. 定义规则
    2. 规则例子:【开始】状态不能直接连接到【结束】状态
        
  • 画标记
  • 实现生成器

              

主要技术及初步计划

  • 元模型引擎
  • 图形编辑器
  • 代码生成器

今年下半年主要实现元模型引擎以及图形编辑器,基于引擎初步支持企业架构建模工具。代码生成器放在明年开始。

 

欢迎转载,转载请注明:转载自 [ ]

你可能感兴趣的文章
c# 多线程排队队列实现的源码
查看>>
LDA入门与Java实现
查看>>
19_css背景控制.html
查看>>
计算机网络测试和故障诊断的发展
查看>>
Delphi 与 DirectX 之 DelphiX(29): TDIB.AddMonoNoise();
查看>>
Windows Server 2008 FTP用户目录隔离模式
查看>>
zookeeper-kafka环境搭建,生产者消费者终端测试
查看>>
Catnut 微博app第一个版本发布了
查看>>
python实现linux下指定目录下文件中的单词个数统计
查看>>
SQL SERVER存储过程中如何使用事务与try catch
查看>>
我的友情链接
查看>>
常见算法的记录
查看>>
ssh 问题
查看>>
Android源代码下载编译
查看>>
nhmicro添加信审功能
查看>>
eclipse安装maven插件-解决requires ‘bundle org.slf4j.api
查看>>
jsp---语句对象Statement
查看>>
java进阶之路
查看>>
优化Android Studio
查看>>
zabbix二次开发-flask-获取告警
查看>>