gpt4 book ai didi

模型驱动开发 : What is a transform?

转载 作者:行者123 更新时间:2023-12-01 08:31:49 24 4
gpt4 key购买 nike

据我了解,模型驱动开发(MDD)允许自动化程序/模型通过应用转换从其相应模型自动生成。

关于转换,我所知道的只是它们是存储开发人员特定于平台的专业知识的某种方式。

但究竟什么是转型?

最佳答案

一个 (program) transformation是一个函数,给定一个程序表示实例,计算另一个。

程序表示可以是任意的,但通常是抽象语法树(AST)或图(例如,UML);您甚至可以包含字节码作为程序表示。像数学函数一样,转换可以是“部分的”(即,仅在某些 [可能复杂的] 条件下工作)。

我个人喜欢术语转换来指代函数本身,而转换来指代应用转换以获得新表示的行为或结果。

通常,(全局)程序转换可能会影响整个表示,即使它很大,但通常单个转换仅修改一小部分,而将大部分程序表示单独保留。抽象地说,
整个程序表示实例由转换处理以产生另一个全新的程序表示实例。由于表示实例往往很大,这通常通过让转换简单地修改现有表示实例来实现。
您可以将此类“小”转换视为具有附加参数,这些参数将它们集中在它们将对其进行更改的表示的特定部分。

像数学函数一样,转换组合产生“更大”的转换(也是部分的,因为条件也组合)。通常您编写一组转换来完整地转换程序表示,因为没有一个转换会在一个步骤中处理整个表示实例。您可以组合它们的事实允许您编写许多共同实现您的目的的“小”转换,因此您在语义翻译中获得了一种模块化,这就是人们喜欢程序转换的想法的原因。

与数学函数一样,您可以通过编写程序代码来实现此类转换。这样的代码检查原始模型的一些部分,并在模型运行时对其进行更改,但这通常很尴尬。

因此,此类转换通常以所谓的“声明性”形式写成 rules which contain a pairs of patterns and a condition .每个规则都被解释为“如果您看到左侧模式,并且条件匹配,则更改程序表示以匹配右侧模式”。模式变量允许模式指定原始程序表示的 block 以不受影响地通过转换(通常由一些其他转换处理)。虽然这些规则被称为“声明性”(因为它们看起来不像传统代码),但它们只是表示一些等效的功能,因此在预期的意义上不是声明性的。规则往往比等效的过程代码更具可读性,这通常是因为模式是用源和目标表示的表面语法编写的。

实际上,单个转换仅适用于表示中的特定位置,并且它们的应用(“组合”)顺序很重要。为了处理这个问题,(程序)转换工具通常提供一种“元程序”来控制焦点和规则应用顺序的方法。

这些想法适用于所谓的“模型驱动开发”,它只是将转换应用于可以说是高级模型以生成低级代码,或将低级代码转换为其他低级代码。您甚至可以使用这些想法来构建逆向工程工具,例如,将低级代码映射到某个抽象模型。我们的DMS Software Reengineering Toolkit是一个程序转换工具,具有程序转换和源到源重写,用于所有这些目的。

关于模型驱动开发 : What is a transform?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5913704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com