運行時驗證工具彙總

來源自我的博客

http://www.yingzinanfei.com/2017/02/01/yunxingshiyanzhenggongjuhuizong/

  1. 運行時驗證框架列舉

    • MOP (Monitor-Oriented Programming) 面向監視的程序設計方法,對運行時驗證技術進行了擴展,能夠在性質滿足或違反的時候作出相應的反應。基於AOP (Aspect-Oriented Programming)實現
    • LARVA JAVA程序的安全實時監控
    • RMOR (Requirement Monitoring and Recovery) 用於監控C程序的驗證框架
    • MaC (Monitoring and Checking) 是一個通用的運行時驗證框架,設計目的是確保目標程序在滿足形式化需求規約前提下正確運行。它可以對任何編程語言進行驗證。Mac驗證框架使用形式化需求規約來描述待驗證的性質,且其根據一個給定的需求規約自動執行插裝、監控及驗證。相比於MOPLARVA等其它驗證框架來說,它最大的特點是將程序監控與驗證過程分享開來,從而使得高層需求規約獨立於實現。
  2. 運行時驗證工具列舉

    • 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-MaCMaC體系的一個原型實現,可以應用於Java程序的運行時監控。Java-MaC最大的特點是較低層次的、與實現相關的程序行爲的監控和較高層次的、與編程語言無關的、使用形式化描述的規範的分離。該設計使JavaMaC具有很強的靈活性和可擴展性。
    • Java-MaC
    • RULER\
      是一個應用於JAVA的運行時驗證工具,創建爲基於規則的系統,但和RETE算法相比有點小區別。RULER在下一步中移除了事實,除非通過規則明確指示保持它。與其相反,RETE只有在規則中明確指示移除事實時纔會移除。
    • LOGSCOPE\
      是一個小規模輕量級的修改版RULER,強調數據參數化狀態機器,應用於SCALA上。LOGSCOPERULER相反,研究的是事實的保留除非其在規則中被明確移除。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算法的增強實現。
  3. 工具描述
    • JassJavaMOP都使用了切面編程(Aspect-oriented Programming, AOP)技術及代碼生成技術,而Java-Mac採用了更爲精細的字節碼插入技術。這3種解決方案涵蓋了目前運行時驗證領域裏的常用技術。
    • MOP支持基於自動機的驗證算法。在監控器生成的初期,MOP將所有的非自動機的邏輯描述轉化爲自動機,然後生成一個監控器抽象表示,之後再生成監控器代碼。
    • LARVA採用時間自動機描述屬性,並生成AspectJ監控器。Java-MaCTraceMatches也採用類似的方法
    • 基於公式重寫的驗證算法被面向規則的運行時驗證技術所採用,它們一般使用公式重寫的方法對有限蹤跡是否滿足給定的屬性進行判定。LOLAJava PathExplorer在對LTL屬性進行監控時也採用了這樣的方法。
發佈了97 篇原創文章 · 獲贊 25 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章