传统的基于代码的工程和模型驱动的工程方法之间的区别是什么?



我在文献中找到了这段话,但我不明白它的意思

设计实践正在从传统的基于代码的工程,有了沿着开发生命周期的强大分工,就可以模型驱动的工程方法让所有人都参与设计流可以在模型上有自己的说法。

任何帮助将非常感激

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

基于代码的编程长寿的来源是,在其最好的变体中,它非常适用于短项目-最多1k行。我们可以将描述/模型直接写入注释,使用Structured English(我习惯将其命名为Pseudocode)重写一两次,并将代码写入相同的文件中。它确实适用于较小的项目,人们从较小的项目开始,通常习惯了这种方法,作为学生,很难转向其他开发人员算法。但他们必须这样做,因为这种方法不适用于更大的项目。

模型驱动的工程意味着所创建的产品会周期性地与其模型进行比较。模型也在变化,并且是团队需要达到的一个不断移动的目标。这个术语出现在敏捷编程中,因此,它是相对现代的。

它反对测试驱动和需求驱动的工程,而不是基于代码的工程。创建基于代码和模型驱动的项目是可能的。但我不建议这样做。

我不确定我是否同意这句话的写作方式,但我可能错过了一些上下文,无论如何,这不是问题的要点。

传统上,电脑时间是昂贵的,所以设计通常是在纸上进行的,有时是大量的纸。设计师会写下需求。在设计阶段,他们在纸上画了一些图表,使用塑料"快速设计"模板(我仍然有我的…)来描绘程序和数据流程图,阶梯(逻辑)图,信号图等。一旦完成,就会使用各种技术(例如"结构化英语")来定义程序的运行方式。然后程序员将获取这些信息并实际编写可在计算机上运行的代码(汇编、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++),以及现在的模型。

历史记录

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

未来

相反,模型驱动工程意味着在编码工作完成之前,需求必须足够清晰,写下来,并且必须创建目标系统和代码的一些"模型"。使用一些建模标准,如BPMN, UML等。这种建模工作通常由一些非程序员完成,一些"分析师"。然后程序员将模型(在模型被批准后)具体化到代码中。这种方法的可伸缩性更好,特别是对于大型系统。

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

现实

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

(它不是免费的,但您可以获得评估许可证,并且对于严肃的工作,它将支付许多倍的成本,因为有大量的精力投入到产品中。)我有偏见,因为我是他们满意的客户)

您可能认为基于代码和基于模型的方法之间的差异是向更高抽象级别编程语言的移动。例如,有汇编语言和C/c++、Java等高级语言。因此,像UML这样的模型语言只是从技术细节中抽象出来并更加集中于要解决的问题的下一步。与任何语言一样,它需要编译/代码生成"低级"语言,即EMF中的Java。

相关内容

最新更新