我正在阅读an article that uses Alloy to model some safety and security requirements for aircraft avionics。我正在努力理解文章中显示的“事实约束”之一。如何解释Alloy事实
数据流入系统。数据被系统消耗。该模型声明的一组数据,一组系统,和一个consumedBy关系(数据由系统消耗的):
sig Data {
consumedBy: some System
}
sig System {}
然后,该模型声明了一套“临界值”。关系将关键性映射到数据。另一个关系将关键性映射到系统:
sig Criticality {
concernedData: one Data,
concernedSystem: one System
}
接下来,模型表达两个事实。这是我挣扎的第二个事实。
第一个事实说,每个系统消耗的至少一个数据:
all s: System | some consumedBy.s
文章有关于第二个事实此评论:
// for any system which consumes a given datum,
// the said datum and system should belong to
// a same unique criticality
我觉得评论是这样说:如果一个系统消耗一个数据,那么数据和系统必须具有相同的关键性。例如,如果数据D1被系统S1消耗并且数据D1具有关键性C1,那么系统S1也必须具有关键性C1。你是否同意对评论的解释?
现在,这里的事实是如何在合金表示:
all d: Data | all s: System | one c: Criticality |
c.concernedData = d and c.concernedSystem = s
我怎么读这个事实的理解是这样的:
The following constraint holds for exactly one c in Criticality:
For every d in Data and every s in System:
c.concernedData = d and c.concernedSystem = s
是这样的事实,一个正确的认识?如果是这样,我不认为这个事实表达了与评论中的描述相同的内容。
所以我的问题是:
一:评论这样说:
// for any system which consumes a given datum,
// the said datum and system should belong to
// a same unique criticality
执行以下合金事实表达了同样的事情有何评论?
all d: Data | all s: System | one c: Criticality |
c.concernedData = d and c.concernedSystem = s
二:如果评论和合金其实是不一样的,又是什么来表达合金的评论的正确方法?
哇,真棒丹尼尔。非常感谢你! –