以下是我对使用Alloy进行建模的理解:
问题的合金模型有两个部分:
所有问题都可以根据约束条件制定吗?是否存在无法根据约束条件制定的问题,因此无法使用Alloy进行建模?如果是的话,你能提供一个例子吗?
是否存在可以根据约束条件制定的问题,但最好以其他方式制定?如果是的话,你能提供一个例子吗?
答案 0 :(得分:2)
我认为它是隐含在正式模型中的吗?当您在Alloy中定义sig时,您将从这些Sig可以到达的所有可能状态开始。约束然后移除不合需要或不实际的状态(例如,范围是使模型可计算的约束)。我把它与雕刻相比较;你从一块花岗岩开始,去掉不需要的部分。
所以问题是花岗岩是否足够?我认为很难给出一个理论上完整的答案,因为哥德尔总是潜伏在拐角处。然而,实际上存在明显的局限性。范围显然是一个,但由于缺乏语法糖,许多常见问题很难建模。然而,尽管存在这些限制,我发现Alloy确实为我提供了分析现有软件结构的手段。
答案 1 :(得分:2)
从逻辑的本质来看,几乎所有工件都可以用逻辑术语来描述。因此,正如您正确指出的那样,问题更多的是可以方便和有说服力地表达的内容。我说基于约束的方法(如Alloy)的主要替代方案是基于显式排序的方法,如CSP(以及之前的迈克尔杰克逊的JSD)。我实际上把我的硕士论文作为双重范式写成了这两个范例。它被称为"结合数据和流程描述"。有关相关阅读,请参阅Pamela Zave关于操作规范的早期论文,以及她与Michael Jackson关于多范式描述的论文。