uml - UML 是一种编程语言吗?

标签 uml modeling model-driven-development

是否可以使用 UML 对计算机系统进行独立编程,而无需支持实现语言,例如图表直接生成机器代码(可能通过 C 或 C++ 等),无需人工编码干预。

最佳答案

我将逆势而行,分享一次经验,展示 UML 今天可以做什么,以及 UML 的 future 版本(或其他建模方法)可以做什么。

首先介绍一下历史。

很久以前,人们就用汇编语言对计算机进行编程(并不是一直回到这里)。随后出现了 C 和 Basic 等高级语言。擅长汇编的程序员认为,您无法用高级语言完全表达处理器能够执行的所有操作(以优化的方式)。事实上,他们是对的。从高级语言的内存和性能角度来看,有些事情不太理想,因为您无法完全控制发送给处理器的指令。

事实是,高级语言提供了更加抽象的表达形式。因此,他们流行起来,过了一段时间,人们并不真正关心你无法完全控制处理器的各个方面,因为开发人员的工作效率大大提高( Moore's Law 也有所帮助)。

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

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

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

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

关于uml - UML 是一种编程语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485746/

相关文章:

domain-driven-design - 为什么我不能使用 ERD 为我的域建模?

grails - Grails中的合成:构造函数中的addTo *

java - 推荐遵循裸对象模式的工具/框架?

java - 为角色制作装备时子类太多(角色扮演游戏)

c# - 最好的 UML 设计器工具,支持 C# 中的属性

constraints - 三元关联相关的属性

java - 开源工具,通过 Maven2 生成 Javadocs,带有像 ydoc 这样的自动 UML 图

uml - 请推荐一个工具来创建域模型图

c++ - 如何在不同流程/系统中的 Rhapsody 模型之间进行通信?