Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NeoMLs

= Neo Modeling Languages
= 新一代建模语言集
= 一组基于 KerML 的建模语言,直接目的是为 AI 驱动的软件工程提供文本化的建模表示法。

基于 KerML 重建 MOF、UML 及 KerML 自身,并可扩展到其他建模语言。一旦 OMG 官方正式发布相应原生标准,本项目将完成其历史使命 :)

以下各节详述本项目思路:

  • 缘起 :引出项目的直接原因

  • 当下 :目前官方(OMG)建模语言体系以及社区相关项目

  • 彼岸 :理想中的建模语言体系

  • 花开 :路线图,即本项目主要内容

1. 缘起

开发过程中的有效沟通是软件工程的核心困难,不论人与人之间还是人与 AI 之间都是如此(本文所说 AI 均指基于大语言模型的人工智能分支)。软件建模是解决这一困难的主要手段。

目前软件建模的标准表示法是 UML。尽管这种图形化表示法便于人类理解,但与 AI 更高效的沟通方式是文本。因此,需要一种与UML图形表示法等价的文本化建模表示法。

2. 当下

2.1. 官方(OMG)现状

2.1.1. MOF、UML 和 KerML

首先说明 MOF 、UML 和 KerML 的关系。如下图:

  • UML (Unified Modeling Language,统一建模语言)是面向对象方法学的标准建模语言,当前版本是 2.5.1。一般开发者使用 UML 是为了为软件建立"模型"。而 OMG 的 UML 规范则是描述 UML 自身的模型,是"关于模型的模型",因此是"元模型"(metamodel)。

  • MOF(Meta-Object Facility,元对象设施)是用于描述其他建模语言规范(Specification)的规范,当前版本为 2.5.1 。如上文,UML规范是元模型,而 MOF 是用于描述元模型的模型,因此是"元元模型"(meta-metamodel)。MOF 是 OMG 建模语言体系的基础,其他建模语言规范都以 MOF 描述。

  • MOF 由 UML 的一个子集,以及少许特有内容组成。这个子集是 UML 类模型的一部分。MOF 使用这个 UML 子集来描述自身,因此 MOF 用自己描述了自己,实现了"自举"(bootstrapping)。此外,MOF 中专用于元元模型的特有内容只对建模工具的开发者有意义,并不直接用于描述其他建模语言。

  • UML 是用 MOF 中包含的 UML 子集来描述的,因此间接地用自己描述了自己,也实现了自举。

  • MOF 包含 UML 的子集,所以 MOF 依赖 UML;而 UML 又由 MOF 所描述,因此 UML 依赖 MOF。也就是说 MOF 和 UML 是双向依赖的。但由于 MOF 是元元模型,处于基础地位,因此画在图的下方。

  • 由于 UML 具有一定缺陷,因此 OMG 另起炉灶,建立了 KerML(Kernal Modeling Language,内核建模语言),并于 2026年9月正式发布。KerML 也由 MOF 描述,因此依赖 MOF。后文会解释 KerML 解决了 UML 的哪些缺陷。

2.1.2. 当前建模语言体系

OMG 主要建模语言的关系如下图:

  • MOF 是元元模型,用于描述元模型。

  • 用 MOF 描述 UML 元模型。

  • 通过使用 Profile,从 UML 中扩展出了 SysML (System Modeling Language)的第一版,用于 MBSE(Model-Based System Engineering, 基于模型的系统工程)。UML 一般只用于软件,而 SysML 所描述的系统通常既包含软件也包含硬件,例如汽车、卫星、电视等。

  • UML 的固有缺陷影响了 SysML 本身的能力。这些缺陷包括:

    • UML 的语法是用图形来表示的,无法像编程语言那样通过形式语言来定义,容易产生歧义;

    • UML 的语义是用自然语言表示的,同样缺乏形式化,容易产生歧义;

    • UML 的行为模型(状态机、活动、交互)之间缺乏统一性;

    • UML 的行为模型和结构模型之间缺乏统一性;

    • UML 元模型的层次过于复杂,有些属于过度设计;

    • UML 的功能过于复杂,从而难以演进。

  • 为了解决上述问题,为 SysML 建立坚实的基础,OMG 开发了 KerML。KerML 由 MOF 描述,是一种元模型而不是元元模型。从功能的角度,KerML 和 UML 存在交集;但从内部结构而言,KerML 进行了彻底的重建,包括以下方面:

    • KerML 的表示法是文本,类似编程语言,通过 EBNF 的变体严格定义;

    • KerML 的语义采用一阶谓词定义,没有歧义;

    • KerML 的行为模型是统一的;

    • KerML 的行为模型和结构模型之间是统一的;

    • KerML 优化了元模型的层次结构,比 UML 更加简洁;

    • KerML 简化了 UML 的原有功能,同时又增加了一些 UML 不具备的抽象和功能,比 UML 更加完善。

  • 基于 KerML 扩展出了新的 SysML,也就是 SysML v2。尽管仍然叫做 SysML,但与第一版已经大相径庭:

    • SysML v2 继承了 KerML 的所有优点;

    • SysML v2 的概念和术语发生了很大变化;

    • 理论上 SysML v1 将会逐步退役,因此图中使用灰色背景。

2.1.3. 当前建模语言体系的问题

就整个建模语言体系而言,OMG 目前的状态只是半成品,表现在以下方面:

  • KerML 由 MOF 描述,而 MOF 仍然依赖于 UML。因此,KerML 并没有彻底斩断与 UML 的脐带,仍然没有实现自举。这导致了在 KerML 的规范中,其抽象语法仍然由 UML 表示,而无法用文本表示。而文本化本来是 KerML 的核心优势之一。

  • OMG 为 SysML v2 规定了与文本等价的图形表示法,但并没有为 KerML 规定图形表示。理论上,KerML 可以单独用于建模,但没有图形化,则对人类不友好。

  • OMG 并没有基于 KerML 重建 UML。

  • 因此,对于软件建模语言而言,面临如下尴尬局面:

    • KerML 缺乏用例、组件、接口等必要机制,并且没有图形化,因此无法代替 UML 用于软件建模;

    • SysML v2 的网站上提到"预计 SysML v2 也将被软件系统工程师和其他希望利用这一现代开发实践的人所采用(It is also anticipated that SysML v2 will be embraced by software systems engineers and others wishing to leverage this language as part of their modern development practices)",然而,SysML 的概念和术语体系与 UML 差别巨大,要取而代之实属渺茫;

    • UML 的缺陷影响了自身的发展,字2017年12月的 2.5.1 版后就不再更新;

    • 由于没有标准的文本表示法,UML 难以有效地支撑基于 AI 的软件开发;

    • 官方虽然有基于文本的 XMI 的规范,但其目的是进行进行模型数据交换,便于机器阅读,却难以被人类理解,因此不适合作为建模语言使用。

2.2. 社区尝试

社区中已经有多种基于文本的 UML 绘图或建模的工具,例如:

其中最常用的当属 PlantUML,而且 AI 也能比较好地理解其文本。因此,在没有更好的选择之前,不妨将其作为临时方案。而 pumla 是一种基于 PlantUML 的建模工具,十分有趣。

3. 彼岸

为了解决上述问题,不妨畅享一下理想中的的建模语言体系。

3.1. 理想中的 MOF v3 和 KerML v2

理想的 MOF 和 KerML 的关系如下图:

  • 对 MOF 的改进:

    • 用 KerML 的子集取代原来 UML 的子集;

    • 用这个子集描述自身,实现自举;

    • 考虑基于领域驱动设计(DDD)中上下文映射(Context Mapping)的思路,增加基于 MOF 的语言之间的概念映射机制,从而可以使这些语言协同使用;

    • 升级后的版本称为 MOF v3。

  • 对 KerML 的改进:

    • 由升级后的 MOF v3 来描述,从而彻底抛弃对 UML 的依赖;

    • 又由于 KerML 是由 MOF v3 中 KerML 自身的子集所描述的,因此也实现了自举;

    • 为 KerML 补充与文本等价的图形表示法;

    • 升级后的版本称为 KerML v2。

  • MOF v3 和 KerML v2 的共同改进:

    • 用文本化的方式描述其抽象语法;

    • 用 EBNF 描述其具体语法;

    • 用一阶谓词描述其语义。

  • 原版 UML 已经退役,因此图中没有画。

3.2. 理想的建模语言体系

理想状态下,各建模语言规范的关系应如下图:

  • 尽管 KerML 自身的描述发生了变化,但对上层元模型的表达方式没有发生任何改变,因此,SysML v2 并没有变化。

  • 通过扩展 KerML 重建的 UML 具有以下特点:

    • 继承 KerML 的所有优点;

    • 术语和使用习惯上与当前 UML 尽量兼容,熟悉 UML 的人容易上手;

    • 以文本表示为主,同时具有等价的图形表示;

    • 删除原来 UML 中罕用的功能;

    • 统一不同的行为模型,以及行为和结构模型;

    • 升级后的 UML 称为 UML v3。

  • 其他几种建模语言是想象中的,举例说明基于 MOF 可以创建各种不同的建模语言:

    • PDML(Physical Data Modelling Language, 物理数据建模语言),用于可视化数据库的物理数据模型,下面是 Power Designer 中的 PDM(物理数据模型)图;

  • ERML(Entity Relationship Modeling Language, 实体关系建模语言)。有了 UML 类图,其实不需要传统的 ER 图了,不过毕竟还有不少人在使用,可以尝试将其纳入统一的建模语言体系;

  • APIML(API Modeling Languate,API建模语言)。考虑把基于 JSON、YAML、XML、二进制协议的各种API的逻辑描述统一起来。

4. 花开

在官方有所作为之前,凭社区之力先做探索,以解燃眉之急。下面是初步的过渡期路线图。恐怕做到退休也做不完。希望 AI 加持下会好一些。

4.1. 第一步 VPCLI(当前位置)

4.2. 第二步 NeoUML v1

4.3. 第三步 NeoMOF & NeoKerML v1

4.4. 第四步 NeoKerML v2

4.5. 第五步 NeoUML v2

4.6. 第六步 完整的建模语言体系

5. 附录:OMG 建模语言时间线

Table 1. OMG 建模语言时间线
时间 语言 版本 说明

1997年12月

UML

1.1

统一建模的开端
UML 正式标准化,终结建模方法割据,奠定建模产业基础

1999年07月

UML

1.2

小幅迭代

2000年02月

UML

1.3

小幅迭代

2001年09月

UML

1.4

UML 1 的巅峰
UML 2 前普及度最高的工业稳定版

2002年04月

MOF

1.4

元建模的先声
首次提供统一元建模框架,是 UML 1 时代工具互操作的基础

2003年03月

UML

1.5

UML 1 的尾声
UML 1.4 的小幅修订,UML 2 之前的过渡

2005年07月

UML

2.0

软件建模范式的跨越
建立四层元模型体系,从绘图符号跃升为具有精确语义的可扩展建模平台,成为新一代软件建模的标准

2006年10月

MOF

2.0

元建模的底座
完善 OMG 建模语言体系的"元元模型"顶层规范,奠定 XMI 模型交换能力,新一代建模生态的基石

2007年09月

SysML

1.0

系统工程建模范式的诞生
为系统工程建模定义统一语言,基于 UML 2 扩展,突破纯软件边界,填补航空、军工、汽车等复杂装备工程空白,催化 MBSE(基于模型的系统工程)生态的形成与发展

2007年10月

UML

2.1.2

小幅迭代

2008年11月

SysML

1.1

小幅迭代

2009年01月

UML

2.2

小幅迭代

2010年05月

UML

2.3

小幅迭代

2010年06月

SysML

1.2

小幅迭代

2011年07月

UML

2.4.1

小幅迭代

2012年06月

SysML

1.3

小幅迭代

2014年04月

MOF

2.4.2

小幅迭代

2015年08月

SysML

1.4

小幅迭代

2016年10月

MOF

2.5.1

MOF 2 的最新稳定版
延续 MOF 2.0 的核心架构,至今仍是 OMG 建模语言生态的元模型基础标准

2017年05月

SysML

1.5

小幅迭代

2017年12月

UML

2.5.1

UML 2 的最新稳定版
固化成熟语义、修复历史缺陷、成为业界默认的 UML 2 通用基准

2019年12月

SysML

1.6

小幅迭代

2024年06月

SysML

1.7

SysML 1 的余晖
新旧范式间的桥梁,是 SysML 2 前的工业稳态版本

2025年09月

KerML

1.0

新一代建模范式的崛起
基于形式化方法重构建模体系,以纯文本完成模型表示,以数理逻辑定义模型语义,摆脱图形符号依赖,推动建模工程化、版本化和自动化,适配AI智能建模需求,可扩展为其他新一代建模语言

2025年09月

SysML

2.0

系统工程建模的新时代
基于 KerML 重建,彻底脱离 UML 桎梏,统一文本/图形双范式,开启文本优先,语义精确的系统工程建模新范式

About

NeoMLs – A set of next-generation modeling languages built on KerML. 一组基于 KerML 的新一代建模语言。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /