簡體   English   中英

將具體執行跟蹤與合金 Model 進行比較

[英]Comparing a concrete execution trace with an Alloy Model

我正在使用合金 model 系統。 我想通過將實際系統的具體執行的日志跟蹤與 model 進行比較來檢查實現的系統是否與合金 model 匹配。

我看到這個工作的方式是:

  1. 在與 Alloy 中建模的高級概念相對應的點處將日志添加到已實現的系統,例如“來賓 G1 中的接待員檢查”
  2. 將這些預處理成合金可以理解的形式
  3. 把它交給 Alloy(或其他工具),然后說“這個 model 承認這個痕跡嗎?” (這個問題)

這將在系統的操作日志(或者如果性能有問題,可能是子集)上運行,並不斷驗證系統是否“按規范”運行。

這可能/合理嗎?

可能是的。

合理我不太確定。 對我來說,Alloy 擅長在您的規范中發現未知的未知數,即陷阱。

一旦使用合金分析對規范進行了防呆,我看不出用不必要的翻譯和分析步驟來阻礙你的程序有什么意義。 它不僅容易出錯,而且如果您要驗證的跟蹤量很大,您可能還會發現自己受限於分析器的可擴展性……但同樣,它是可行的。 所以如果你想要它,當然,做它...... :-)

我正在使用合金 model 系統。 我想通過將實際系統的具體執行的日志跟蹤與 model 進行比較來檢查實現的系統是否與合金 model 匹配。

是的,我認為這有點工作,但它應該是可行的。 我會對讓它發揮作用非常感興趣。 我一直在考慮這個問題。

Loïc 正確地辯稱,Alloy 在尋找解決方案方面大放異彩,但為了保持這種可管理性,Alloy 必須保持 scope 很小。 盡管這是真的,Alloy 也是一種規范語言 時間問題只是在尋找解決方案。 但是,您繪制的問題不同,您已經在日志中找到了解決方案。 每個事件在 state 中指定一個轉換。

如果您熟悉 Alloy Evaluator,那么您應該知道,一旦有了解決方案,您就可以在該實例上運行任何 Alloy 代碼。 在 Alloy 內部,有一整套類可以模擬一個實例並針對它運行 Alloy 代碼。

所以我認為你可以從一個初始實例開始,使用你的日志事件來創建一個輔助實例,然后使用 Alloy 來驗證這是一個有效的轉換。 這將非常快,我不明白為什么它不能處理大量的對象。 肯定有數以百萬計的緩存魔法。

我們目前正在努力開發合金 6,它將集成 Electrum,我們將在其中擁有完整的時間邏輯,這將使規則更容易表達。

很長一段時間以來,我一直在尋找願意開發必要的代碼來橋接合金和戰壕的客戶。 如果這能像我認為的那樣奏效,那對軟件行業來說將是非常有趣的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM