I'm a student of software engineering. My lecturer of "Software Architecture and Design" has told us that we can generate source code from all the UML diagrams (or most). I already can / have generated code from class diagram. I'm unable to generate code from other diagrams. Do I have to someway connect those diagrams with class diagrams to do that?
3 回答
这简直是胡说八道。您根本无法从任何图表生成代码。但是,您可以从 UML 模型生成代码。这可以(但不是必须)有几个图表来帮助人类可视化。
现在,代码与类有关。这意味着您至少需要在模型中定义一些类。用例有助于理解为什么类会做他们应该做的事情。但在任何情况下,您都不能从用例中创建代码。
还有其他模型元素有助于支持创建更详细的代码。这些是例如可以转换成等效代码段的状态机。
活动和序列图还有助于可视化某些代码段在执行期间的运行方式。但是您不会(认真地)使用它们来创建代码。
是的,你可以,但它并不像你描述的那么简单。模型驱动架构目前是一个活跃的研究领域,但还没有真正“流行起来”。它的支持者认为它允许更高级别的抽象,就像 C 提供比汇编语言更高级别的抽象和 Java 提供比 C 更高级别的抽象一样。我认为这在未来可能非常有用如果他们能得到正确的工具。
实际上,这甚至不是一个全新的想法——一般的图形编程的想法(如果你考虑一下,它基本上是 UML 派生的编程的概括)至少从 1980 年代就已经存在,据我所知(可能更早)。事实上,Frederick Brooks Jr. 在No Silver Bullet – Essence and Accident in Software Engineering(最初于 1986 年出版并出现在当前版本的The Mythical Man-Month中)谈到了它:
博士最喜欢的科目。软件工程论文是图形或可视化编程,即计算机图形在软件设计中的应用。有时,这种方法的前景是通过与 VLSI 芯片设计的类比来假设的,其中计算机图形学发挥着如此丰硕的作用。有时,通过将流程图视为理想的程序设计媒介,并为构建它们提供强大的工具,这种方法是合理的。
这些努力还没有产生任何令人信服的东西,更不用说令人兴奋了。我深信,什么都不会……
他的论点是,在编写它的时候,工具还没有“出现”。例如,屏幕尺寸非常小。此外,流程图实际上是一个非常糟糕的设计机制。还,
更根本的是,正如我在上面所说的,软件很难可视化。无论我们绘制控制流、变量范围嵌套、变量交叉引用、数据流、分层数据结构还是其他任何东西,我们都只感觉到错综复杂的互锁软件大象的一个维度。如果我们将许多相关视图生成的所有图表叠加起来,则很难提取任何全局概览。VLSI 类比从根本上具有误导性——芯片设计是分层的二维对象,其几何形状反映了其本质。软件系统不是。
我将由您来判断您是否同意他的观点,或者这是否仍然适用。
因此,总结一下:是的,至少在理论上是可行的,并且已经付出了相当大的努力来从 UML 图生成代码,但是您需要多个图来生成比基本类结构和方法存根更多的东西。不像你可以写一个用例图,按下一个按钮,神奇地拥有一个完整的软件系统。
我想我已经找到了答案。我们可以生成代码。假设我有一个“用例”。我右键单击它。转到“高级”并选择“实例分类器”。在那里,我实际上可以使我的“用例”、“序列图对象”等成为已经创建的类的实例,或者我什至可以在那里创建一个类。