1. 低代码与模型驱动
笔者认为,“低代码”几乎是“模型驱动(Model-Driven)”的同义词,从现在绝大多数低代码平台的实现来看,低代码平台背后的实现技术正是模型驱动,带来的新东西并不多。本文将深度分析低代码、模型驱动的关系,以及如何支撑MES/MOM的未来。
考虑模型在软件开发中的作用,除了广泛使用的“模型驱动”概念,还有基于模型(Model-based)、面向模型(Model-oriented)、以模型为中心(Model-centric)等等,其中“模型驱动”过去在学术界得到了更多的认同。为啥模型驱动一直不温不火,而低代码怎么突然就火了?
模型驱动一词过于学术化,其中包含的概念元数据(Meta-data)、元模型(Meta-model)、建模语言(Modeling language)、自描述(Self-descripted)等概念理解起来有一定的困难,吓跑了许多民众。而低代码就非常亲民,传达的信息非常清晰,得到业界广泛的认可,在商业上也取得了巨大成功。
图 “低代码”几乎是“模型驱动(Model-Driven)”的同义词
在软件开发过程中应用建模技术,其目的是提高抽象层次。计算机软件开发方法的每一次变革都是通过提高抽象层次实现,从机器语言到汇编语言、再到高级语言、可视化建模语言,开发效率得到了显著提升。
低代码的目标是最大限度减少手工的硬编码,意味着必须更多的使用模型,这正是模型驱动工程(MDE,Model-Driven Engineering)的目标和领域。MDE使用模型提供更高抽象层次,来降低软件的复杂性的思想已经存在了20余年:
1) 更高抽象层次“领域模型(Domain Models)”➜更具体、繁琐的“代码(Source code)”
2) 更易学易用的“建模工具(Modeling tools)”➜高门槛的“编程工具(Programming tools)”
3) 更直观的“领域建模(Domain Modeling)”➜更偏向技术细节的“编程(Coding)”
其结果是模型驱动的应用程序开发比手工编码的效率有显著的提升,而且基于模型的系统通常更加易于维护。
2. 模型驱动的架构
创建和使用领域模型是MDE的核心理念。其中最成功的MDE方法是OMG国际组织提出的MDA(Model-Driven Architecture)方法,然而MDE是一种典型的生成式技术,是一种以建模(Modeling)和模型转换(Model Transformation)为主要途径的软件开发方法。
图 模型驱动的方法MDA
如下图,MDA使用模型转换工具将平台无关的模型(PIM,Platform Independent Model)转换为平台相关模型(PSM, Platform Specific Model),最后再进一步转为代码,代码最后编译为应用系统。目前部分低代码平台正是基于模型转换实现的。
图 MDA将模型最终转换为代码
这种模式开发过程和运行过程是分离的,建模工具只是在开发期间使用,并不成为系统的一部分,任何对系统的修改都需要进入开发环境,修改模型、重新生成代码、编译。然后进入运行过程,关闭系统、部署系统、重新启动系统。
图 传统MDE开发过程和运行过程是分离的
传统的软件开发过程相关概念我建个模型总结如下:
图 传统软件开发的核心概念
“模型驱动的架构”的相关概念梳理如下,建模语言替代了编程语言,建模工具替代了编程工具,相对于开发环境直接编写代码,MDA先创建模型再自动生成代码,最后编译为应用系统。
图 模型驱动开发的几个核心概念
首先,生成式方法产生的代码有些时候不能完全满足客户需求,通常需要手工修改生成的代码,模型就与代码不一致了。其次,通过模型自动生成的代码可能不容易阅读。另外,模型只是软件开发过程中的中间产物,无法在系统运行期间动态修改并立刻生效。
3. 运行时的模型驱动
运行时模型驱动(Run-time Model-Driven)架构解决了不能在系统运行期间修改模型并立刻生效的问题。建立了一体化的开发和运行环境,在运行的系统中内置建模工具,支持在系统运行时创建和修改模型,并且在运行时借助“模型解释器(Model interpreter)”或“执行引擎(Execution engine)”直接加载、解释和执行模型。
图 运行时模型驱动的开发运行一体化架构
图 运行时模型驱动开发的几个核心概念
4.通用建模能力是不足够的
图 专用的电路图建模工具建模电路图非常容易
图 通过UML类图定义电路图的概念
图 使用UML对象图描述电路
图 通用建模语言虽然通用但不万能
图 常见的低代码平台通用建模工具
图 面向IT的通用建模能力举例
图 基于类图定义MES/MOM的数据结构
5. 面向业务领域建模
图 基于模型定义高度柔性自动化的数字孪生智能工厂
图 面向业务工程师的建模能力
图 生产监控图形化布局设计
图 设备联网建模工具
图 同时提供面向IT和业务的建模工具
6. 分层扩展的架构
图 MES/MOM更好的拆分方式是分层
1) 技术平台可以解决架构和技术问题,屏蔽技术细节和复杂性,并提供低代码开发的相关能力,提高整个系统的扩展性和灵活性。
2) MES/MOM产品平台解决提供覆盖制造运营全业务流程的共性模块,从而最大限度实现重用,满足共性需求,满足跨组织的协同要求,封装内部的复杂性。
3) 行业扩展满足特定行业的扩展,例如提供各个行业层的扩展,实现对细分领域的深耕,从而更好为细分领域客户创造价值。
4) 客户扩展是为单个客户而开发的,满足单个客户的共性需求。
图 MES/MOM产品线业务范围、知识产权范围
7.突破技术方面的限制
图 支持Web及运行时模型驱动的多级缓存系统
图 对程序员屏蔽多级缓存系统的复杂性
8. 运行时模型驱动代表未来
9. 总结
说明:本文为佰思杰原创文章,未经佰思杰书面许可,任何人不得复制、转载、摘编等任何方式使用。如需转载,请联系佰思杰市场部,电话:027-87774868 邮箱:bsg@bestmes.cn