基于测试估值的Alloy模型求解器草图绘制
1. 利用测试估值完成草图模型
在进行Alloy模型草图绘制时,要让最终的草图模型一次性满足所有测试。例如,将测试转化为相应的事实,像Test0会变成如下事实:
fact Test0 {
some L0: List {
let ls = L0 | let header = none->none | let ns = none | let links = none->none |
Acyclic[ls, header, ns, links]
}
}
2. 调用Alloy分析器填补漏洞
最终的元模型由之前生成的各个部分组成。ASketch会调用Alloy分析器,对最终的元模型执行一个空的运行命令( run {} )。分析器会搜索结果R sigs的可能估值,使其符合所有测试。例如,RQ1评估为Q_All,RCO2评估为CO_In,RE3评估为E3_1,RCO4评估为CO_NIn,RE5评估为E3_2。最后,ASketch会将结果值映射到相应的Alloy片段,并向用户报告所有漏洞的具体值。完成后的草图模型如下:
one sig List { header: lone Node }
sig Node { link: lone Node }
pred Acyclic() { all n: Node | n in List.header.*link => n !in n.^l
超级会员免费看
订阅专栏 解锁全文
262

被折叠的 条评论
为什么被折叠?



