Runtime verification とは

ランタイム検証は、実行中のシステムから情報を抽出し、それを使用して、特定の特性を満足または違反する観察された挙動を検出し、場合によってはこれに反応することに基づいているコンピューティングシステム分析および実行アプローチである。データレースやデッドロックの自由のようないくつかの非常に特殊なプロパティは、通常、すべてのシステムで満たされることが望ましく、アルゴリズム的に最適に実装できます。他のプロパティは、正式な仕様としてより便利に取り込むことができます。ランタイム検証仕様は、通常、有限状態機械、正規表現、文脈自由パターン、線形時間論理などのトレース述語形式、またはこれらの拡張で表現される。これにより、通常のテストよりもあまりアドホックなアプローチができなくなります。しかし、実行中のシステムを監視するためのメカニズムは、テストオーラと参照実装に対する検証を含むランタイム検証と見なされます。正式な要求仕様が提供されると、モニターはそれらから合成され、計装によってシステム内に注入される。ランタイム検証は、セキュリティや安全性ポリシーの監視、デバッグ、テスト、検証、検証、プロファイリング、フォールトプロテクション、動作修正(復旧など)などの多くの目的に使用できます。ランタイム検証では、従来のフォーマル検証手法1つまたは少数の実行トレースを分析し、実際のシステムと直接作業することで、モデルのチェックや定理の証明など、比較的うまくスケールアップし、分析の結果をより信頼できるようにします(これは、システムを形式的にモデリングするための-proneステップ)、より少ないカバレッジを犠牲にして。さらに、その反映機能により、実行時検証は、ターゲットシステムの不可欠な部分となり、展開中にその実行を監視および誘導することができます。