來源自我的博客
http://www.yingzinanfei.com/2017/02/01/yunxingshiyanzhenggongjuhuizong/
運行時驗證框架列舉
MOP (Monitor-Oriented Programming)
面向監視的程序設計方法,對運行時驗證技術進行了擴展,能夠在性質滿足或違反的時候作出相應的反應。基於AOP (Aspect-Oriented Programming)
實現LARVA
JAVA
程序的安全實時監控RMOR (Requirement Monitoring and Recovery)
用於監控C程序的驗證框架MaC (Monitoring and Checking)
是一個通用的運行時驗證框架,設計目的是確保目標程序在滿足形式化需求規約前提下正確運行。它可以對任何編程語言進行驗證。Mac
驗證框架使用形式化需求規約來描述待驗證的性質,且其根據一個給定的需求規約自動執行插裝、監控及驗證。相比於MOP
、LARVA
等其它驗證框架來說,它最大的特點是將程序監控與驗證過程分享開來,從而使得高層需求規約獨立於實現。
運行時驗證工具列舉
MOP
\
是現有的最有效最先進的運行時驗證系統。MOP
以插件的方式支持許多不同的邏輯,都使用同樣的索引算法來快速訪問監視器基於參數事件。一般地,MOP
被設計來監視程序執行(在線監視)。例如,JAVAMOP
驗證由運行時JAVA
程序生成的事件,用ASPECTJ
儀表化。在這個評價裏日誌分析是在程序中插入一個日誌閱讀器來實現的,從日誌中讀入每個事件,調用給特定各類事件定義的方法,這些是空的函數體(什麼都不做)。對這些空函數體方法的調用用ASPECTJ
儀表化來驅動監視器JavaMOP
\
一個針對Java
的基於監控的編程(MOP
)的軟件開發和分析環境繼承了MOP
的架構,它將軟件需要滿足的規則以及程序的實現結合在一起。最大特點是支持多種邏輯,如上下文無關文法CFG
、線性時序邏輯LTL
、有限狀態機FSM
等。使用這些邏輯可以方便地對屬性規範進行描述。JavaMOP
屬性規範的描述採用mop
語法,生成的監控器代碼是AspectJ
源文件,採用abc
編譯器將AspectJ
源文件與Java
文件進行混合編譯即可對程序進行運行時驗證。使用JavaMOP
,用戶還可以實現特定的接口,定義自己的屬性描述語言,具有可插拔性和靈活性。MaC(Monitoring and Checking)
\
爲程序的正確運行提供了保證,可以對目標程序進行運行時監控。Java-MaC
是MaC
體系的一個原型實現,可以應用於Java
程序的運行時監控。Java-MaC
最大的特點是較低層次的、與實現相關的程序行爲的監控和較高層次的、與編程語言無關的、使用形式化描述的規範的分離。該設計使JavaMaC
具有很強的靈活性和可擴展性。Java-MaC
RULER
\
是一個應用於JAVA
的運行時驗證工具,創建爲基於規則的系統,但和RETE
算法相比有點小區別。RULER
在下一步中移除了事實,除非通過規則明確指示保持它。與其相反,RETE
只有在規則中明確指示移除事實時纔會移除。LOGSCOPE
\
是一個小規模輕量級的修改版RULER
,強調數據參數化狀態機器,應用於SCALA
上。LOGSCOPE
與RULER
相反,研究的是事實的保留除非其在規則中被明確移除。LOGSCOPE
被開發來探索語言特徵且不是優化的。TRACECONTRACT
\
一個內部的SCALA DSL
用於狀態機器,淺層的DSL
和深層的LTL
,也是一個簡單的基於規則的符號(淺層)。應用於重寫和標準化公式。TRACECONTRACT
被開發來探索語言特徵且不是優化的。PaX
Eagle
Hawk
\
是一個基於Eagle
的運行時驗證工具。Eagle
邏輯能夠被用來定義和實現多種線性軌跡監控邏輯,採用不動點理論計算時序公式的真假。Jass
\
是對Java
進行運行時驗證的工具,源於契約設計思想,使用註釋及代碼生成技術進行運行時驗證。對程序的源代碼有很強的依賴性。JPaX(Java PathExplorer)
\
針對Java
語言的運行時驗證工具TraceMatches
\
利用關於計算路徑的正則表達式對AspectJ
進行了擴展,使得多線程程序驗證人員可以單獨考慮單個線程或者多個線程的交叉執行。LOLA
Larva
J-LO
Temporal Rover
Conspec
MOPBox
程序靜態驗證系統
JML
Jahob
FindBugs
Coverity
- 特定領域的運行時驗證工具
ARVE
Tamago
ORCHIDS
DMac
LIME
- 運行時驗證算法實現
RETE
LOGFIRE
: 擴充了事件處理和索引方案的RETE
算法RETE/UL
: 添加了事件處理的對RETE
算法的SCALA
直接實現。LOGFIRE
是附帶有索引的此方法優化實現。DROOLS
: 一個主要的最先進的爲JAVA
語言制訂的基於規則系統,並且能免費從JBoss
社區獲取。DROOLS
基於一個RETE
算法的增強實現。
- 工具描述
Jass
和JavaMOP
都使用了切面編程(Aspect-oriented Programming, AOP
)技術及代碼生成技術,而Java-Mac
採用了更爲精細的字節碼插入技術。這3種解決方案涵蓋了目前運行時驗證領域裏的常用技術。MOP
支持基於自動機的驗證算法。在監控器生成的初期,MOP
將所有的非自動機的邏輯描述轉化爲自動機,然後生成一個監控器抽象表示,之後再生成監控器代碼。LARVA
採用時間自動機描述屬性,並生成AspectJ
監控器。Java-MaC
與TraceMatches
也採用類似的方法- 基於公式重寫的驗證算法被面向規則的運行時驗證技術所採用,它們一般使用公式重寫的方法對有限蹤跡是否滿足給定的屬性進行判定。
LOLA
、Java PathExplorer
在對LTL
屬性進行監控時也採用了這樣的方法。