UML是一种编程语言吗?

WeN*_*ers 19 uml modeling model-driven-development

UML可以用于自己编程计算机系统,没有支持的实现语言,例如直接到机器代码的图表(可能通过C或C++等),没有人工编码干预.

Eri*_* J. 23

我将违背大趋势并分享一个体验,展示UML今天可以做什么,以及未来的UML版本(或其他建模方法)可能是什么.

首先是一点历史.

回来的时候,人们在装配程序中编程计算机(不会一直回到这里).然后是更高级的语言,如C和Basic.组装非常好的程序员认为,你无法用更高级别的语言完全表达处理器能够做的所有事情(以优化的方式).事实上,他们是对的.从更高级语言的内存和性能角度来看,有些东西的优化程度要低得多,因为你无法完全控制发给处理器的指令.

问题是,更高层次的语言提供了更抽象的表达形式.所以,他们流行起来,过了一段时间,人们并不真正关心你无法完全控制处理器的各个方面,因为开发人员的工作效率更高(摩尔定律也有帮助).

类似的回合发生在面向对象的语言上,再次发生在托管语言中.每次都可以获得更高级别的抽象,并最终获胜,因为它更有效地用作开发人员.实际上,随着编译器变得更好并且优化技术得到改进,通常在更高级别的表达中的低效率消失.

模型驱动的开发是一种更高层次的表达.您无法完全代表您可以编写的任何代码,例如C#或Java.特别是没有开箱即用.但是,可以直接从UML模型生成应用程序的非常重要的部分.

我为几个相当大的项目领导了基于UML的代码生成工作.在许多情况下,我们可以生成(现实生活,企业级)应用程序的整个源代码的30%到60%.而这只是一个小团队为特定域编写生成器.最终,整个行业将成为从模型中生成越来越多真实应用程序的工具.

这是我们在行业中一次又一次地看到的自然演化的下一步,自从第一个汇编代码抽象操作码以来(之前可能还有一些东西,但那是在我的时间之前).

  • 很好的答案.它是自动生成的:) (13认同)
  • 小心你的历史.面向对象和"托管"语言都是在70年代提供的.进步比步骤更加渐进,抽象水平可以长时间和平共存,因为它们在权力/程序员时间/紧凑性/可维护性空间中达到不同的平衡. (4认同)
  • 可执行UML的问题是UML的语义不清楚以及UML不适合编程的一般问题,它是一种表示法.但是,正如我上面提到的,UML基于MOF,您可以在其中为另一种语言建模.UML和MOF对具体语法不是太严格,你可以真正使用文本语法而没有任何问题(甚至有一个标准 - HUTN).实际执行只是语义 - 如果语言定义了语义,它可以用于编程,如果它是图灵完成,你可以编程任何算法. (3认同)

Mic*_*yan 10

简答:不.一些UML建模工具可以用其他编程语言生成Java,C++和代码.但是,它生成的通常是接口和类关系.这些工具生成存根,仍然需要提供实现,因此需要人工干预.

  • @Eric:哪个只留给你40%的难写,不是吗?这不是一场胜利. (6认同)

Jus*_*ier 5

有一些工具可以将UML建模图转换为代码 - 特别是UML状态图.例如,我在2000年使用了一个名为"Rhapsody"(来自I-Logix)的工具,它将UML图转换为C++.这很酷,因为该工具可以直接运行状态机,也可以在远程计算机上运行代码(在这种情况下,运行vxworks的板).

但总的来说,UML最适合用作建模工具.使用它来为您的系统建模并为您的设计论文或其他任何内容提供图表.然后使用该知识以有组织的方式开发您的系统.