符號執行和模型檢查(例如在模型轉換中)有什麼區別?我不明白他們的區別。他們是一樣的嗎?!符號執行和模型檢查
2
A
回答
2
在模型檢查中,您必須將您的系統編碼爲有限狀態機,並將該FSM提供給模型檢查器以及規範。模型檢查器將確保規範始終在該系統中。
在符號執行中,您只提供程序,符號執行引擎將檢查所有可行路徑以生成測試輸入或檢查斷言。
一個簡單的例子:併發性。模型檢查可以處理多線程系統,因爲它在作爲輸入提供的FSM中指定,但符號執行不能處理多個線程。
2
模型檢查: 正式驗證程序是否滿足規範的方法。規範通常以一個時態邏輯公式給出,如:「如果輸入是x輸出必須是y - 對於程序的所有執行(全局)」(例如參見Edward A Lee)。
符號模型檢查與顯式狀態檢查: 程序可以是有限狀態機(FSM)。這裏明確的狀態檢查就足夠了。但幸運的是,模型檢查器也適用於擴展的FSM,併發,概率,實時應用程序。爲了幫助防止具有非常大(無限)狀態的系統中的狀態爆炸,使用符號模型檢查。 在符號模型中檢查狀態和輸入等被視爲符號和命題公式(或狀態集合,集合操作等)。爲了執行模型檢查,需要進行可達性分析,並執行此操作,程序轉換將以符號方式執行。這些檢查程序不能使用工具化本機代碼的正常執行。
符號執行: 在符號執行過程中存在不同的編碼方法。有些模型檢查非常具體,有些模塊是模塊化的,並且在象徵執行的發明人所定義的獨立符號執行框架中使用。一個象徵性的執行框架也經常使用符號模型檢驗的某些元素(勘探,搜索),以用於測試等是可用的
最後一些例子:
JPF,Java的探路者:模型檢查,明確檢查狀態,輸入:Java字節碼
SPF,符號探路者:符號執行,JPF
JCBMC的延伸:界的模型檢查器,JPF的擴展,SPF
XRTs:探索與符號IC執行,輸入:CIL字節碼
IntelliTest:參數化單元測試使用XRTs
規格資源管理器:基於模型的測試使用XRTs
相關問題
- 1. Scala:執行泛型類型檢查
- 2. 在進行註冊模塊時應執行檢查類型
- 3. AC_CHECK_LIB檢查什麼類型的符號?
- 4. Rails:將模型添加到模型以基於current_user執行檢查?
- 5. Django模型繼承和類型檢查
- 6. 檢查模板類型並執行相應的計算
- 7. 在Django的管理員中保存模型時執行檢查
- 8. 如何在對模型執行操作之前對相關模型執行復雜的驗證檢查?
- 9. 靜態分析和符號執行中的錯誤檢測
- 10. 可達性和符號執行
- 11. 執行由M文件Simulink模型和檢索結果
- 12. 當執行模型
- 13. 執行查找和替換時維護$(美元符號)
- 14. 執行有符號和無符號整數的區別C++
- 15. 模型檢查Paxos
- 16. 檢查content_object是某型號
- 17. 執行字符串和檢索結果
- 18. 模板類型檢查參數C++,不同類型的執行路徑
- 19. 軌道模型行動檢查
- 20. 使用SPIN進行LTL模型檢查
- 21. 使用NuSMV進行模型檢查
- 22. Django的 - 檢查模型有孩子(相關型號)
- 23. 執行帶參數模型和查詢的queryExecuteFactory時出錯
- 24. 檢查號碼模1
- 25. Pycurl執行()方法,writefunc執行模型
- 26. 解耦模型和輸入檢查
- 27. 幹工程符號執行
- 28. 檢查表情符號
- 29. C++對象模型和多態:運行時檢查
- 30. 使用Spin和Promela語法進行LTL模型檢查
感謝你的幫助。 Java Path Finder是模型檢查工具還是符號執行工具或兩者? 是否有任何不使用模型檢查的符號執行工具? – any