Uml 是否可以从企业架构师中的用例、活动或序列图生成代码?

Uml 是否可以从企业架构师中的用例、活动或序列图生成代码?,uml,enterprise-architect,sdlc,Uml,Enterprise Architect,Sdlc,我是一名软件工程专业的学生。我的“软件架构和设计”讲师告诉我们,我们可以从所有UML图(或大多数)生成源代码。 我已经可以/已经从类图生成代码了。我无法从其他图表生成代码。 我是否必须以某种方式将这些图与类图连接起来才能做到这一点?这简直是胡说八道。您根本无法从任何图表生成代码。但是,您可以从UML模型生成代码。这可以(但不是必须)有几个图表来帮助人类可视化 现在,代码与类相关。这意味着您至少需要在模型中定义一些类。用例有助于理解类为什么要做他们应该做的事情。但在任何情况下,您都不能从用例创建代

我是一名软件工程专业的学生。我的“软件架构和设计”讲师告诉我们,我们可以从所有UML图(或大多数)生成源代码。 我已经可以/已经从类图生成代码了。我无法从其他图表生成代码。
我是否必须以某种方式将这些图与类图连接起来才能做到这一点?

这简直是胡说八道。您根本无法从任何图表生成代码。但是,您可以从UML模型生成代码。这可以(但不是必须)有几个图表来帮助人类可视化

现在,代码与类相关。这意味着您至少需要在模型中定义一些类。用例有助于理解类为什么要做他们应该做的事情。但在任何情况下,您都不能从用例创建代码

还有其他模型元素可以帮助创建更详细的代码。例如,状态机可以转换为等效的代码段


活动和序列图还有助于可视化某些代码段在执行期间的运行方式。但是你不会(认真地)使用它们来创建代码。

我想我已经找到了答案。我们可以生成代码。假设我有一个“用例”。我右键点击它。转到“高级”并选择“实例分类器”。在那里,我可以将我的“用例”、“序列图对象”等作为已经创建的类的实例,甚至可以在那里创建一个类

是的,你可以,但它不像你描述的那么简单。现在是一个活跃的研究领域,但它还没有真正“流行起来”。它的支持者认为它允许更高级别的抽象,就像C提供比汇编语言更高级别的抽象,Java提供比C更高级别的抽象一样。我认为如果他们能够正确使用工具,这在未来可能非常有用

事实上,这甚至不是一个全新的想法——一般来说,图形编程的想法(如果你仔细想想,它基本上是UML衍生编程的一个概括)至少在我所知道的20世纪80年代(可能更早)就已经存在了。事实上,小弗雷德里克·布鲁克斯(Frederick Brooks Jr.)在《无银弹——软件工程中的本质和意外》(1986年出版,现出现在《神话人月》(Mythic Man Month)的最新版本中)中谈到了这一点:

博士最喜欢的科目。软件工程的学位论文是图形或可视化编程,是计算机图形学在软件设计中的应用。有时,这种方法的前景来自于与超大规模集成电路(VLSI)芯片设计的类比,计算机图形学在VLSI芯片设计中发挥着如此卓有成效的作用。有时,通过将流程图视为理想的程序设计媒介,并提供构建流程图的强大工具,可以证明这种方法是正确的

在这些努力中,甚至没有任何令人信服、更令人兴奋的东西出现。我相信没有什么会

他的论点是,在编写时,工具还没有“存在”;例如,屏幕尺寸是出了名的小。此外,流程图实际上是一个非常糟糕的设计机制。而且

更根本的是,正如我上面所说的,软件很难可视化。无论我们是绘制控制流、变量范围嵌套、变量交叉引用、数据流、分层数据结构还是其他什么,我们都只感觉到复杂互锁的软件大象的一个维度。如果我们叠加由许多相关视图生成的所有图表,则很难提取任何全局概览。VLSI类比从根本上来说是误导性的——芯片设计是一个分层的二维对象,其几何结构反映了其本质。软件系统并非如此

我将让你来判断你是否同意他的观点,或者这是否仍然适用


所以,总而言之:是的,至少在理论上是可能的,并且已经有相当多的努力从UML图生成代码,但是您将需要多个图来生成比基本类结构和方法存根多得多的代码。这不像你可以写一个用例图,按下一个按钮,然后神奇地拥有一个完整的软件系统。

实际上,我可以生成代码。假设我有一个“用例”。我右键点击它。转到“高级”并选择“实例分类器”。在那里,我可以将我的“用例”、“序列图对象”等作为已经创建的类的实例,甚至可以在那里创建一个类。代码与类直接相关。坎特伯雷大学与这个班级有着间接的联系。需求与UC间接相关。需求是某人曾经的想法。所以你可以从你的想法中创造代码。成为你的原力。