2011-11-11 9 views

答えて

4

Daikonにリンクされているページが使用しているように、最も広い意味で「不変」を意味する場合、多くの静的解析ツールの作業は、あなたが見ていた表現不変なものではなく「不変物の発見」ために。

Frama-Cの価値分析は、それぞれのステートメントのすべての変数の可能な値であるその結果を累積します。分析の終わりには、それにより、各ステートメントで、プログラム内の各変数のドメイン変動に関する非関係情報を提示することができます。 this screenshotでは、この確定的プログラムのすべての実行に対して、選択された命令の直前にはSが常に0,1,3または6であることが不変である。

問題の2つの隠れたパラメータは、あなたが興味を持っている不変量の形と、これらの不変量を見つけるプログラムの形です。たとえば、Iraの回答に記載されているSLAMは、デバイスドライバのコードを処理し、システムAPIの適切な使用を検証するために必要な情報だけを含む不変量を推測するように設計されています。別のツールAstréeは、飛行制御ソフトウェアの実行時の安全性を実証するための正しい不変量を推論する上で非常に良い仕事をしていることで有名です。

2自由度は非常に大きな設計スペースになります。すべての種類のCプログラムに対応するものは見つからず、関心のある不変条件を推論しますが、特定のアプリケーションドメインと不変条件について質問を絞り込むと、関連する回答を見つける機会が増えます。

+0

こんにちは、お返事ありがとうございます。私は区間(ボックス)のような単純な構造の不変量に​​興味があります。私はFrama-Cの価値分析は、間隔だけでなく特定の価値を提供するという点でも優れていると思います。 –

+0

@ VijayaraghavanMuraliまあ、どの情報を捨てるべきか、そしてどの情報を捨てるべきかに関する妥協点はすべてあります。例えば、Frama-Cの価値分析では値の集合を8要素まで保持し、合同情報を持つ区間に切り替えます。これは整数用です。 'float'と' double'については、個々の意味を持つ控えめな値を表すために頻繁に使用されないという事実を反映するためにintervalを使用するだけです。アドレスについては、詳細はhttp://frama-c.com/download/frama-c-value-analysis.pdfを参照してください。 –

関連する問題