UML是一种编程语言吗? 可以使用UML来独立地编程计算机系统,而不支持一种支持的实现语言,例如直接到机器代码的图(也许通过C或C++等),没有人为的编码干预。 < P>有一些工具将UML建模图转换成代码-具体地说,UML状态图。例如,我使用了一个名为“RiaSoStuy”的工具(来自I-Logix),它在2000中将UML图转换为C++。这很酷,因为该工具可以直接运行状态机,也可以在远程机器上运行代码(在本例中,是运行vxworks的板)

UML是一种编程语言吗? 可以使用UML来独立地编程计算机系统,而不支持一种支持的实现语言,例如直接到机器代码的图(也许通过C或C++等),没有人为的编码干预。 < P>有一些工具将UML建模图转换成代码-具体地说,UML状态图。例如,我使用了一个名为“RiaSoStuy”的工具(来自I-Logix),它在2000中将UML图转换为C++。这很酷,因为该工具可以直接运行状态机,也可以在远程机器上运行代码(在本例中,是运行vxworks的板),uml,modeling,model-driven-development,Uml,Modeling,Model Driven Development,但一般来说,UML最好用作建模工具。使用它来为您的系统建模,并为您的设计文件或任何东西提供图表。然后利用这些知识以一种有组织的方式开发您的系统。根据您使用的UML工具,可以将类图向前设计成编程语言。我认为您仍然需要编写自己的业务逻辑等。UML可以为状态机建模。因此,它可以表示图灵机。具有足够复杂度的编译器可以读取此表示并创建图灵机的二进制(可执行)表示 所以,我的答案是肯定的 编辑 因为我的回答似乎有些人不同意。。。让我澄清一下,这个“足够复杂的编译器”完全是虚构的,可能在遥远的将来。。。但从其

但一般来说,UML最好用作建模工具。使用它来为您的系统建模,并为您的设计文件或任何东西提供图表。然后利用这些知识以一种有组织的方式开发您的系统。

根据您使用的UML工具,可以将类图向前设计成编程语言。我认为您仍然需要编写自己的业务逻辑等。

UML可以为状态机建模。因此,它可以表示图灵机。具有足够复杂度的编译器可以读取此表示并创建图灵机的二进制(可执行)表示

所以,我的答案是肯定的

编辑

因为我的回答似乎有些人不同意。。。让我澄清一下,这个“足够复杂的编译器”完全是虚构的,可能在遥远的将来。。。但从其他答案来看,似乎有些程序可以生成一些样板代码,甚至可以生成并运行整个程序

我认为这证明了UML(或其子集)可以作为一种编程语言,但可能不是一种好语言。

它不是。一点也不


它不能做决定(如果)或运行循环。与其说它是一种编程语言,不如说它是一种有限状态机。至少FSM可以做出决定。UML甚至没有状态理论上?是的-您可以使用gajillion并详细指定所有内容,然后将状态机图连接到类图中的方法,并运行一些极其复杂的工具来生成所有这些内容


但这不是你想做的事。你将无法在表达自己的方式上获得更多的自由,因为你必须使用正确的语法,这样工具才能理解你所写的一切。不仅如此,您自己编写实际代码所需的时间远远少于绘制所有这些图表所需的时间,而且它给您的唯一好处是代码是规范的副本(因为规范生成代码)。这可能是一件好事,但由于您没有实际的代码,这也意味着调试意味着调试图表-这几乎肯定是不可能的。

简短回答:目前,您无法生成100%的代码


您可以通过类图生成系统的类结构,也可以通过交互图和/或状态图生成方法体的一部分,但我认为仅此而已。

我将逆潮流而行,分享一个经验,展示UML现在可以做什么,以及UML的未来版本(或另一种建模方法)可以是

首先是一段历史

很久以前,人们用汇编语言对计算机进行编程(不是一直用汇编语言)。随后出现了C和Basic等高级语言。在汇编方面非常出色的程序员认为,你不能完全表达处理器所能做的一切(以优化的方式)在更高级的语言中。事实上,他们是对的。在更高级的语言中,从内存和性能的角度来看,有些事情远不是最理想的,因为您无法完全控制发送给处理器的指令

问题是,更高级别的语言提供了更抽象的表达形式。因此,它们流行起来,过了一段时间,人们并不真正关心您不能完全控制处理器的各个方面,因为开发人员的工作效率更高(也有助于)

面向对象语言和托管语言也出现了类似的情况。每一次,都有更高级别的抽象可用,并最终胜出,因为作为开发人员使用更高效。事实上,随着编译器的改进和优化,更高级别的表达式中的低效率通常会消失关于技术的改进

模型驱动的开发是一种更高层次的表达。您无法完全表示任何可以用C#或Java编写的代码。特别是不能开箱即用。但是,可以直接从UML模型生成应用程序的很大一部分

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

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

一些链接,因为我深受他的评论的影响:

  • 产品,它支持MDA
  • 斯巴克斯“
  • “白皮书
这应该是一个开始。

是的,这是可能的,朱