使用Alloy作为抽象建模语言吗?

时间:2018-09-20 16:25:07

标签: alloy

我想创建一个抽象模型,然后从中自动生成各种特定于数据格式的模型,例如XML模型(即,自动生成从抽象模型到XML模式),JSON模型(即从抽象模型自动生成JSON模式)等等。

使用Alloy作为表达抽象模型的语言会很棒

但是我不确定能否从Alloy模型自动生成所需的特定于数据格式的模型。请允许我解释一下。

考虑以下简单的Alloy模型:

sig Test {
   A: Int,
   B: Int
} {
    A > B
}

该模型包含两种类型的事物:(1)它包含有关数据结构的信息,并且(2)它包含互相关信息(“ A”必须大于“ B”)。

从Alloy模型中,我可以自动生成各种表示结构信息的特定于数据格式的模型;方法如下:

我可以做Execute > Show Metamodel,生成一个显示结构的实例。在这种情况下,我可以做File > Export As XML。然后,我可以将XML转换为XML模式或JSON模式或其他任何内容。

合金似乎适合作为一种抽象语言,从中可以自动生成各种表示结构信息的特定于数据格式的模型。

在上述模型中,请注意“ A”必须大于“ B”。在Alloy实例中没有描述该约束。但是该约束需要在格式特定的模型中表示(例如,对于XML格式,约束将在Schematron规则中表示)。

如何提取Alloy模型中表达的约束并将其转换为特定于数据格式的规则?

我想我可以尝试直接从.als文件中提取约束。但这似乎异常具有挑战性。

请寻求您的建议。

1 个答案:

答案 0 :(得分:2)

是的,我也有相同的想法。我也知道如何实现它。略有细节,以找到一些资金:-(

我认为这可能是对Alloy的很好使用。

更新

这个答案有点滑稽。您可以完全在Alloy中做某事。您可以将模型导出为XML,然后可以通过XSLT或其他工具转换XML。但是,这并不容易并且很难实现自动化。理想的情况是,Alloy可以处理一些脚本,以便您可以转换为所需的格式。