我是软件工程专业的学生。我的软件架构与设计讲师#34;告诉我们,我们可以从所有UML图(或大多数)生成源代码。 我已经可以从类图生成代码了。我无法从其他图表生成代码。 我是否必须将这些图表与类图连接起来呢?
答案 0 :(得分:1)
这简直是胡说八道。您根本无法从任何图表生成代码。但是,您可以从UML模型生成代码。这可以(但不是必须)有一些图表来帮助人类可视化。
现在,代码与类有关。这意味着您至少需要在模型中定义的某些类。用例有助于理解为什么类会做他们应该做的事情。但在任何情况下都不能从用例中创建代码。
还有其他模型元素可帮助创建更详细的代码。这些是例如可以转换为等效代码段的状态机。
活动和序列图还有助于可视化执行期间某些代码段的运行方式。但是你不会(严重地)使用它们来创建代码。
答案 1 :(得分:0)
是的,你可以,但它并不像你所描述的那么简单。 Model-Driven Architecture现在是一个活跃的研究领域,但它还没有真正“流行”。它的支持者认为它允许更高级别的抽象,就像C提供比汇编语言更高级别的抽象,而Java提供比C更高级别的抽象。我认为这个可以如果能够正确使用工具,将来会非常有用。
实际上,这甚至都不是一个全新的想法 - 一般来说图形编程的概念(如果你考虑它,基本上是UML派生编程的概括)至少从20世纪80年代就开始了。我知道(可能很早)。实际上,Frederick Brooks Jr.在 No Silver Bullet--软件工程中的本质和事故(最初发表于1986年,并出现在当前版本的 The Mythical Man-Month < / em>的):
博士最喜欢的科目。软件工程中的论文是图形化,或视觉化,编程化,计算机图形学应用于软件设计。有时,这种方法的承诺是与VLSI芯片设计的类比假设的,其中计算机图形学起着如此丰富的作用。有时这种方法是通过将流程图视为理想的程序设计介质,并为构建它们提供强大的工具来实现的。
从这些努力中还没有出现任何令人信服的,更令人兴奋的事情。我被说服没有任何事情......
他的论点是,在撰写本文时,工具尚未“存在”;例如,屏幕尺寸非常小。此外,流程图实际上是一个非常糟糕的设计机制。此外,
更重要的是,正如我上面所论述的那样,软件很难可视化。无论我们是图表控制流程,可变范围嵌套,可变交叉引用,数据流,分层数据结构还是其他什么,我们感觉只有复杂互锁的软件大象的一个维度。如果我们叠加由许多相关视图生成的所有图表,则很难提取任何全局概述。 VLSI类比从根本上说是误导 - 芯片设计是一个分层的二维物体,其几何形状反映了它的本质。软件系统不是。
我会留给你判断你是否同意他或者是否仍然适用。
因此,总结一下:是的,它至少在理论上是可行的,并且已经有相当大的努力从UML图生成代码,但是你需要多个图来生成比基本类结构和方法存根更多的东西。这不像你可以写一个用例图,按一个按钮,并神奇地拥有一个完整的软件系统。
答案 2 :(得分:-2)
我想我找到了答案。我们可以生成代码。说我有一个&#34;用例&#34;。我右键单击它。转到&#34;推进&#34;并选择&#34;实例分类器&#34;。在那里,我实际上可以制作我的用例&#34; ,&#34;序列图对象&#34;等已经创建的类的实例或我甚至可以在那里创建一个类。