3

我在文献中找到了这一段,但我不明白它的含义

设计实践正在从传统的基于代码的工程(在开发生命周期中具有强大的工作分工)转变为模型驱动的工程方法,在这种方法中,设计流程中的所有人都可以对模型发表意见。

任何帮助将不胜感激

4

4 回答 4

4

基于代码的工程意味着大部分工作都是在编码和代码中完成的。它不是一个广泛使用的术语。它不是一种项目管理方法,相反,当开发人员在接到任务后几乎立即开始编码时,它似乎是对一些不良 PM 实践的负面描述。这个方法以前用过,唉,现在也用。

基于代码的编程长寿的根源在于,在它的最佳变体中,它非常适用于短项目——最多 1k 行。Structured English我们可以将描述/模型直接写入评论,使用(我习惯使用 name )重写一两次Pseudocode,然后将代码放入同一个文件中。它确实适用于较小的项目,人们从较小的项目开始,并且经常在学生时习惯于这种方法,并在困难的情况下转向其他开发人员算法。但他们必须这样做,因为该方法不适用于更大的项目。

模型驱动工程意味着定期将创建的产品与其模型进行比较。模型也发生了变化,并且是团队需要达到的不断变化的目标。该术语出现在敏捷编程中,因此它相对现代。

它反对测试驱动和需求驱动的工程,而不是基于代码的工程。可以制作基于代码和模型驱动的项目。但我不会建议它。

于 2014-03-26T20:52:30.193 回答
3

我不确定我是否同意这句话的写法,但是我可能会遗漏一些上下文,无论如何,这不是问题的要点。

传统上,计算机时间很昂贵,因此设计通常发生在纸上——有时是大量的纸。设计师会写下需求。在设计阶段,他们使用塑料“RapiDesign”模板(我还有我的……)在纸上绘制了一些图表来描绘程序和数据流图、梯形图(逻辑)图、信号图等。一旦完成,使用了各种技术(例如“结构化英语”)来定义程序的运行方式。然后,程序员将获取这些信息并实际编写可以在计算机上运行的代码(汇编程序、COBOL、FORTAN、C)。

进化的下一步是构建软件工具来更好地处理一些工作。建模工具诞生了,其中许多以不同的方式显示信息。这些早期的建模工具是美化的绘图程序,几乎没有建立支持模型的语义。它们基本上足以使流程自动化并更容易修改图纸。Rational Rose(基于 Booch 表示法)和 Popkin System Architect 的早​​期版本就是此类工具的示例。

随着这些工具添加了更多功能和相关方法,它们还添加了一些语义(有时隐含在方法中)。这使得这些工具可以开始生成一些代码。由于这些工具主要对面向对象的方法感兴趣,因此生成的代码主要是类定义。缺乏行为语义阻止了实际运行代码的创建。

与此同时,UML(统一建模语言)出现,以帮助加入各种语言,从 Booch、OMT 和 Objectory 开始。随着 UML 的发展,它的元模型变得更加复杂、更加严格,并且添加了更多的行为语义。最近,还定义了一个抽象语言框架 (ALF),以认识到程序需要采取的动作并不总是可以使用图形 UML 表示法来表达。

请注意,其他方法也与 UML 并行出现。实现模型驱动工程方法的一些值得注意的方法是 ROOM 和 SDL,它们都相当特定于领域,并且都为 UML 的发展提供了能力(例如,ROOM:结构化类,SDL:消息序列图)。

在模型驱动的工程世界中,我们现在就是这样,在设计过程中使用具有定义语义的形式化模型,而不是在纸和黑板上绘制,来驱动所使用的代码。

在某些具有支持工具的特定领域中,您甚至可以看到从模型生成和部署完整应用程序的情况——模型正在变成代码。

整个建模历史也是运行软件一代演变的延续,其中抽象级别不断上升,从可编程门阵列到二进制、汇编程序、2GL(例如,C)、3GL(例如,C++),现在的模型。

于 2014-03-21T22:01:57.560 回答
2

历史

对我来说,基于代码的工程意味着程序员在他的脑海中创建一些模型并编写相应的代码。当需求发生变化时,程序员会改变他脑海中的模型并重写代码。这样的程序员也被称为程序员分析师。(s)他根据模糊的通常不成文的要求创建代码,不需要其他任何东西。一个人秀

未来

相反,模型驱动的工程意味着在编码工作完成之前,需求必须足够清晰,写下来,并且必须创建目标系统和代码的一些“模型”。使用一些建模标准,如 BPMN、UML 等。这种建模工作通常由一些非程序员、一些“分析师”完成。然后,程序员采用模型(在获得批准后)并将想法具体化为代码。这种方法可以更好地扩展,尤其是对于大型系统。

这种方法的理想结果是根本不需要手动编写任何代码(有错误)。建模工具应该支持模型驱动体系结构 (MDA),甚至可能支持可执行 UML,以便建模的结果将不仅仅是一组“图片”和明确的需求。它可以成为构成应用程序主干的源代码骨架,甚至可以是模型单击并运行的产品。

现实

例如, Sparx Systems Enterprise Architect包含许多模型驱动生成 (MDG) 技术,这些技术在某种程度上使这种方法成为现实。您可以通过逆向工程将现有代码(支持多种语言)转换为 UML 模型,并在修改后从模型生成代码(支持多种语言)。支持许多 UML 建模方面(行为、结构)。如果您想获得一些真实的图片并且您的兴趣不仅仅是“学术研究”,那么我建议您使用这个软件。

(它不是免费的,但你可以获得评估许可证,对于认真的工作,它会付出很多倍的成本,因为产品需要付出巨大的努力。我有偏见,因为我是他们满意的客户)

于 2014-05-11T05:49:38.223 回答
0

您可以将基于代码和基于模型的方法之间的差异视为向更高抽象级别的编程语言的移动。例如,有汇编语言和更高级的语言,如 C/C++、Java 等。因此,像 UML 这样的模型语言只是朝着从技术细节抽象化并更专注于要解决的问题的下一步。与任何语言一样,它需要编译/代码生成为“低级”语言,在 EMF 情况下是 Java。

于 2015-10-08T06:25:08.203 回答