JP4607918B2 - プログラム検証仕様生成装置、方法およびプログラム - Google Patents
プログラム検証仕様生成装置、方法およびプログラム Download PDFInfo
- Publication number
- JP4607918B2 JP4607918B2 JP2007081612A JP2007081612A JP4607918B2 JP 4607918 B2 JP4607918 B2 JP 4607918B2 JP 2007081612 A JP2007081612 A JP 2007081612A JP 2007081612 A JP2007081612 A JP 2007081612A JP 4607918 B2 JP4607918 B2 JP 4607918B2
- Authority
- JP
- Japan
- Prior art keywords
- transition
- state
- event
- verification
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
Dawson Engler, Benjamin Chelf, Andy Chou, and Seth Hallem. "Checking System Rules Using SystemSpecific, Programmer-Written Compiler Extensions." In Proceedings of the Fourth Symposium on Operating Systems Design and Implementation, San Diego, CA, October 2000. Manuvir Das, Sorin Lerner, and Mark Seigle. Esp: Pathsensitive program verification in polynomial time. In Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation. Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, and William G. Griswold. An overview of AspectJ. In Proceedings of the European Conference on Object-Oriented Programming, Budapest, Hungary, 18--22 June 2001.
1. 複数の異なるオブジェクトが類似の状態遷移をする場合が多く、この場合に個別に検証仕様を記述すると重複する記述の量が多くなる。
2. 有限状態マシンの状態数が多いと検証仕様を誤り無く記述することが困難となる。
3. 型状態検証の報告した反例が現実に起き得るか否かの判断が困難である。
少なくとも1つのオブジェクトと、前記オブジェクトの操作関数とを含む検証対象のソースプログラムを検証するための検証仕様を生成する検証仕様生成装置であって、
イベントの発生による複数の各状態間の遷移を表す有限状態マシンを、遷移元状態と前記イベントとの組合せ毎に遷移先状態を記述した遷移表として入力する第1の入力手段と、
前記有限状態マシンを適用すべきオブジェクト型と、前記イベントと前記操作関数との対応関係と、を格納した対応表を入力する第2の入力手段と、
前記遷移表と前記対応表とに基づき、前記検証対象のソースプログラムにおいて前記適用すべきオブジェクト型をもつオブジェクトを指定するための文と、前記イベントと前記操作関数との対応を定めた文と、遷移元の状態と当該遷移元の状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する検証仕様生成手段と、
を備える。
少なくとも1つのオブジェクトと、前記オブジェクトの操作関数とを含む検証対象のソースプログラムを検証するための検証仕様を生成する検証仕様生成方法であって、
コンピュータが
イベントの発生による複数の各状態間の遷移を表す有限状態マシンを、遷移元状態と前記イベントとの組合せ毎に遷移先状態を記述した遷移表として入力する第1の入力ステップと、
前記有限状態マシンを適用すべきオブジェクト型と、前記イベントと前記操作関数との対応関係と、を格納した対応表を入力する第2の入力ステップと、
前記遷移表と前記対応表とに基づき、前記検証対象のソースプログラムにおいて前記適用すべきオブジェクト型をもつオブジェクトを指定するための文と、前記イベントと前記操作関数との対応を定めた文と、遷移元の状態と当該遷移元の状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する検証仕様生成ステップと、
を実行することを特徴とする。
少なくとも1つのオブジェクトと、前記オブジェクトの操作関数とを含む検証対象のソースプログラムを検証するための検証仕様を生成するためのプログラムであって、
コンピュータに、
イベントの発生による複数の各状態間の遷移を表す有限状態マシンを、遷移元状態と前記イベントとの組合せ毎に遷移先状態を記述した遷移表として入力する第1の入力ステップと、
前記有限状態マシンを適用すべきオブジェクト型と、前記イベントと前記操作関数との対応関係と、を格納した対応表を入力する第2の入力ステップと、
前記遷移表と前記対応表とに基づき、前記検証対象のソースプログラムにおいて前記適用すべきオブジェクト型をもつオブジェクトを指定するための文と、前記イベントと前記操作関数との対応を定めた文と、遷移元の状態と当該遷移元の状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する検証仕様生成ステップと、
を実行させることを特徴とする。
----- 例1:検証対象 -----
file f; // ファイル
mutex m; // 排他変数
int x;
f.fopen("test.txt");
m.init();
while (*) {
m.lock();
if (*) {
x = f.read(..);
}
else {
x = f.write(..);
if (x < 0) break;
}
m.unlock();
}
f.fclose();
m.destroy();
-----
----- 例2:検証仕様1 -----
sm mutex_check1 {
state decl { mutex } v;
decl any_fn_call call;
decl any_args args;
start:
{ v } ==> v.undef;
v.undef:
{ v.init() } ==> v.valid
| { v.call(args) } ==> { err("1") };
v.valid:
{ v.lock() } ==> v.valid
| { v.unlock() } ==> v.valid
| { v.destroy() } ==> v.undef
| { v.call(args) } ==> { err("2") };
}
-----
----- 例3:検証仕様2 -----
sm mutex_check2 {
state decl { mutex } v;
decl any_fn_call call;
decl any_args args;
start:
{ v } ==> v.undef;
v.undef:
{ v.init() } ==> v.valid
| { v.call(args) } ==> { err(“error1") };
v.valid:
{ v.lock() } ==> v.locked
| { v.destroy() } ==> v.undef
| { v.call(args) } ==> { err(“error2") };
v.locked:
{ v.unlock() } ==> v.valid
| { v.call(args) } ==> { err(“error3") };
}
-----
----- 例4:抽象仕様1 -----
// 汎用オブジェクト
fsm object {
state: undef, valid;
event: ini, fin, use;
delta:
(undef, ini -> valid),
(valid, fin -> undef),
(valid, use -> valid);
}
-----
----- 例5:抽象仕様2 -----
// 排他制御変数
fsm mutex {
state: undef, valid, locked;
event: ini, fin, lock, unlock;
delta:
(undef, ini -> valid),
(valid, fin -> undef),
(valid, lock -> locked),
(locked, unlock -> valid);
}
-----
----- 例6:具象仕様 1-----
// ファイル操作
spec file {
fsm(object): type(file) {
ini: call(open(..));
fin: call(close(..));
use: call(read(..)) || call(write(..));
} f;
}
-----
----- 例7:具象仕様 2-----
// ロック操作
spec lock1 {
fsm(object): type(mutex) {
ini: call(init(..));
fin: call(destroy(..));
use: call(lock(..)) || call(unlock(..));
} m;
}
-----
(1)オブジェクト型(file)と、(2)第1有限状態マシンの識別子(object)と、(3)検証対象プログラムにおいて前記オブジェクト型をもつオブジェクトを操作する関数(open(..),close(..)など)と前記識別子(object)をもつ第1有限状態マシンに含まれるイベント(ini,finなど)との対応と、の組と、
(1)オブジェクト型(mutex)と、(2)第1有限状態マシンの識別子(mutex)と、(3)検証対象プログラムにおいて前記オブジェクト型をもつオブジェクトを操作する関数(init(..),destroy(..)など)と前記識別子(mutex)をもつ第1有限状態マシンに含まれるイベント(ini,finなど)との対応と、の組と、
の2つの組が記述されている。
----- 例8:具象仕様3 -----
// ロック付ファイル操作
spec locked_file {
fsm(object): type(file) {
ini: call(open(..));
fin: call(close(..));
use: call(read(..)) || call(write(..));
} f;
fsm(mutex): type(mutex) {
ini: call(init(..));
fin: call(destroy(..));
lock: call(lock(..));
unlock: call(unlock(..));
} m;
assert(!f.use || (f.use && m@locked)); ←表明式
}
-----
----- 定義1:有限状態マシン -----
Q :state文の状態集合(エラー状態以外の全ての状態(受理状態)の集合)
Q': 全状態 = Q∪{error}
error : エラー状態
Σ : event文の記号集合
δ : 状態マシンの遷移関数
Q' * Σ → Q'
delta文に明記されない遷移はerror遷移と見なす。
error状態からの遷移先は全てerror状態とする。
q0 : 初期状態(state文の最初に宣言される状態)
----- 手順1:仕様合成 -----
機能:仕様合成
入力:有限状態マシンM[1]、,,,M[n]、表明expr
出力:有限状態マシンM
事例:図10の表
(1) 有限状態マシンM[i]の状態集合Q[i](エラー状態は含まない)の直積を生成し、エラー状態を加えて、状態集合Q'を得る。
すなわち、有限状態マシンMの状態集合はQ'=Q∪{error}とする。
Q := (Q[1] * Q[2] * ... * Q[n])
= { (q1,q2,...,qn) | q1 in Q[1] ∧ ... ∧ qn in Q[n] }
(2) 有限状態マシンM[i]のイベント集合Σ[i]の和を生成し、Mのイベント集合Σとする。
Σ := Σ[1] ∪ Σ[2] ∪ ... ∪ Σ[n]
= { a | a in Σ[1] ∨ ... ∨ a in Σ[n] }
(3) 表明exprを考慮しない遷移関数trans(q,a)を手順2の通り定義し、遷移表を計算する。
(4) 表明exprの真偽値表valid(q,a)を生成する。
(5) 表明expr(q,a)の真偽値表の値valid(q,a)が真とき遷移先trans(q,a)を用い、偽のとき遷移先errorとする。
(6) この遷移表delta(q,a)を有限状態マシンMの遷移関数δとする。
-----
----- 手順2:表明式を考慮しない遷移関数 -----
機能:表明式を考慮しない有限状態マシンの遷移delta(q,a)を計算する
入力:q:Q'、a:Σ、delta[i]:Q'[i] * Σ[i] → Q'[i]
出力:p:Q'
事例:図9の表
trans(q:Q', a:Σ):Q' :=
let q = (q[1],q[2],...,q[n])
var p = (p[1],p[2],...,p[2])
for each i in [1,2,...,n] do
if a in Σ[i] then
p[i] := delta[i](q[i],a)
else
p[i] := q[i]
endif
if p[i] = error then
return error
endif
endfor
return p
-----
----- 手順3:表明式を考慮した遷移関数 -----
機能:表明式を考慮した有限状態マシンの遷移表を計算する。
入力:表明式を考慮していない遷移表trans(q,a)、表明表valid(q,a)
出力:表明式を考慮した遷移表delta:Q' * Σ → Q'
事例:図10の表
delta(q:Q, a:Σ):Q :=
if valid(q,a) then
return trans(q,a)
else
return error
endif
-----
---- 定義2:表明式(表明の論理式) -----
以下のBNF記法で定義される論理式とし、記号"&&"は論理積、記号"||"が論理和、記号"!"が論理否定を意味し、状態変数"v@state"やイベント記号"v.event"は状態とイベントに応じて真偽値を取る。
expr ::= v@state | v.event | expr && expr | expr || expr | !expr
例)expr = (x@valid && y.use) && !(x@valid && z@locked)
----- 手順4:表明式の評価 -----
機能:状態qとイベントaに対する表明式の真偽値を計算する。
入力:表明式e、状態q、イベントa
出力:真偽値(trueまたはfalse)
事例:図8の表
valid(e:Exp, q:Q, a:Σ):bool :=
match e with
e1 && e2 => and(valid(e1,q,a), valid(e2,q,a))
e1 || e2 => or(valid(e1,q,a), valid(e2,q,a))
! e1 => not(valid(e1,q,a))
v@state => if q[v] = state then true else false
v.event => if a = v.event then true else false
endcase
-----
----- 手順5:入力検証仕様生成 -----
入力:中間仕様M=(Q',Σ,δ,q0,Q)
出力:有限状態マシンを実装するアスペクトモジュール
(1) 適当な検証仕様名Idのアスペクトaspectを修飾子pertarget(obj())で生成する
aspect Id pertarget(target(Type)) { ... }
(2) アスペクトのメンバに、状態Qを保持する変数qを宣言し、初期状態q0に初期化する
aspect ... { int q; ... }
(3) アスペクトのメンバに配列delta[][]を宣言し遷移δを格納する
aspect ... { ...; int delta[N][M]; ... }
(4) アスペクトのメンバに対象型Typeに対応するpointcut文を宣言する
aspect ... { ...; pointcut obj(): target(Type); ... }
(4) アスペクトのメンバにイベントΣに対応するpointcut文を宣言する
aspect ... { ...; pointcut evt(): call(...); ... }
(5) アスペクトのpointcut文に対応するアドバイスを宣言し、状態遷移を記述する
aspect ... { ...; before() : evt() { ... } ... }
a in Σに対応するアドバイス
before() : evt() { q = delta[q][a]; if (q == error) err(); }
-----
----- 例9:入力検証仕様(AspectJ言語の形式) -----
aspect Id pertarget(obj()) {
int q = q0;
int delta[][] = { ... };
pointcut obj() : target(Type);
pointcut evt1() : call(..); // イベントa1
...
before() : ev1() { q = delta[q][a1]; if (q == error) err(); }
...
}
-----
Claims (15)
- 少なくとも1つのオブジェクトと、前記オブジェクトの操作関数とを含む検証対象のソースプログラムを検証するための検証仕様を生成する検証仕様生成装置であって、
イベントの発生による複数の各状態間の遷移を表す有限状態マシンを、遷移元状態と前記イベントとの組合せ毎に遷移先状態を記述した遷移表として入力する第1の入力手段と、
前記有限状態マシンを適用すべきオブジェクト型と、前記イベントと前記操作関数との対応関係と、を格納した対応表を入力する第2の入力手段と、
前記遷移表と前記対応表とに基づき、前記検証対象のソースプログラムにおいて前記適用すべきオブジェクト型をもつオブジェクトを指定するための文と、前記イベントと前記操作関数との対応を定めた文と、遷移元の状態と当該遷移元の状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する検証仕様生成手段と、
を備えたプログラム検証仕様生成装置。 - 前記第1の入力手段は、複数の前記有限状態マシンに対応する複数の前記遷移表を入力し、
前記対応表は、前記複数の有限状態マシンをそれぞれ適用すべき複数のオブジェクト型と、前記複数のオブジェクト型のそれぞれに対する前記イベントと前記操作関数との対応関係とを含み、
前記検証仕様生成手段は、
前記複数の遷移表間での遷移元状態のすべての組合せ毎に、各前記遷移表に含まれるすべてのイベントがそれぞれ発生したときの遷移先状態を求めることにより、前記遷移元状態の組合せと前記イベントとの組合せ毎に前記遷移先状態を記述した合成遷移表を生成し、
前記合成遷移表と前記対応表とに基づき、前記適用すべき複数のオブジェクト型の個々オブジェクト型をもつオブジェクトを指定するための文と、前記適用すべき複数のオブジェクト型のそれぞれ毎に前記イベントと前記操作関数との対応を定めた文と、遷移元の状態の組合せと当該組合せの状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する
ことを特徴とする請求項1に記載の装置。 - 前記第2の入力手段は、前記複数のオブジェクト型のうちの1つを有するオブジェクトの遷移元状態と前記遷移元状態で前記複数のオブジェクト型のうちの他の1つを有するオブジェクトに関して発生するイベントとに基づく遷移の制約を記述した論理式である表明式をさらに入力し、
前記検証仕様生成手段は、
前記合成遷移表に示される各状態遷移が前記表明式を満たすか否かを検査し、前記表明式を満たさない当該状態遷移を特定し、
前記合成遷移表において、前記表明式を満たさないとして特定された状態遷移の遷移先をあらかじめ指定された状態に書き換えることにより前記合成遷移表を更新し、
更新された合成遷移表と前記対応表とに基づき前記検証仕様を生成する
ことを特徴とする請求項2に記載の装置。 - 前記あらかじめ指定された状態はエラー状態であることを特徴とする請求項3に記載の装置。
- 前記検証対象のソースプログラムを前記検証仕様に基づいて検証するプログラム検証部をさらに備えたことを特徴とする請求項1ないし4のいずれか一項に記載の装置。
- 少なくとも1つのオブジェクトと、前記オブジェクトの操作関数とを含む検証対象のソースプログラムを検証するための検証仕様を生成する検証仕様生成方法であって、
コンピュータが
イベントの発生による複数の各状態間の遷移を表す有限状態マシンを、遷移元状態と前記イベントとの組合せ毎に遷移先状態を記述した遷移表として入力する第1の入力ステップと、
前記有限状態マシンを適用すべきオブジェクト型と、前記イベントと前記操作関数との対応関係と、を格納した対応表を入力する第2の入力ステップと、
前記遷移表と前記対応表とに基づき、前記検証対象のソースプログラムにおいて前記適用すべきオブジェクト型をもつオブジェクトを指定するための文と、前記イベントと前記操作関数との対応を定めた文と、遷移元の状態と当該遷移元の状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する検証仕様生成ステップと、
を実行することを特徴とする検証仕様生成方法。 - 前記第1の入力ステップは、複数の前記有限状態マシンに対応する複数の前記遷移表を入力し、
前記対応表は、前記複数の有限状態マシンをそれぞれ適用すべき複数のオブジェクト型と、前記複数のオブジェクト型のそれぞれに対する前記イベントと前記操作関数との対応関係とを含み、
前記検証仕様生成ステップは、
前記複数の遷移表間での遷移元状態のすべての組合せ毎に、各前記遷移表に含まれるすべてのイベントがそれぞれ発生したときの遷移先状態を求めることにより、前記遷移元状態の組合せと前記イベントとの組合せ毎に前記遷移先状態を記述した合成遷移表を生成し、
前記合成遷移表と前記対応表とに基づき、前記適用すべき複数のオブジェクト型の個々オブジェクト型をもつオブジェクトを指定するための文と、前記適用すべき複数のオブジェクト型のそれぞれ毎に前記イベントと前記操作関数との対応を定めた文と、遷移元の状態の組合せと当該組合せの状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する
ことを特徴とする請求項6に記載の方法。 - 前記第2の入力ステップは、前記複数のオブジェクト型のうちの1つを有するオブジェクトの遷移元状態と前記遷移元状態で前記複数のオブジェクト型のうちの他の1つを有するオブジェクトに関して発生するイベントとに基づく遷移の制約を記述した論理式である表明式をさらに入力し、
前記検証仕様生成ステップは、
前記合成遷移表に示される各状態遷移が前記表明式を満たすか否かを検査し、前記表明式を満たさない当該状態遷移を特定し、
前記合成遷移表において、前記表明式を満たさないとして特定された状態遷移の遷移先をあらかじめ指定された状態に書き換えることにより前記合成遷移表を更新し、
更新された合成遷移表と前記対応表とに基づき前記検証仕様を生成する
ことを特徴とする請求項7に記載の方法。 - 前記あらかじめ指定された状態はエラー状態であることを特徴とする請求項8に記載の方法。
- 前記コンピュータが前記検証対象のソースプログラムを前記検証仕様に基づいて検証するプログラム検証ステップをさらに実行することを特徴とする請求項6ないし9のいずれか一項に記載の方法。
- 少なくとも1つのオブジェクトと、前記オブジェクトの操作関数とを含む検証対象のソースプログラムを検証するための検証仕様を生成するためのプログラムであって、
コンピュータに、
イベントの発生による複数の各状態間の遷移を表す有限状態マシンを、遷移元状態と前記イベントとの組合せ毎に遷移先状態を記述した遷移表として入力する第1の入力ステップと、
前記有限状態マシンを適用すべきオブジェクト型と、前記イベントと前記操作関数との対応関係と、を格納した対応表を入力する第2の入力ステップと、
前記遷移表と前記対応表とに基づき、前記検証対象のソースプログラムにおいて前記適用すべきオブジェクト型をもつオブジェクトを指定するための文と、前記イベントと前記操作関数との対応を定めた文と、遷移元の状態と当該遷移元の状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する検証仕様生成ステップと、
を実行させることを特徴とするプログラム。 - 前記第1の入力ステップは、複数の前記有限状態マシンに対応する複数の前記遷移表を入力し、
前記対応表は、前記複数の有限状態マシンをそれぞれ適用すべき複数のオブジェクト型と、前記複数のオブジェクト型のそれぞれに対する前記イベントと前記操作関数との対応関係とを含み、
前記検証仕様生成ステップは、
前記複数の遷移表間での遷移元状態のすべての組合せ毎に、各前記遷移表に含まれるすべてのイベントがそれぞれ発生したときの遷移先状態を求めることにより、前記遷移元状態の組合せと前記イベントとの組合せ毎に前記遷移先状態を記述した合成遷移表を生成し、
前記合成遷移表と前記対応表とに基づき、前記適用すべき複数のオブジェクト型の個々オブジェクト型をもつオブジェクトを指定するための文と、前記適用すべき複数のオブジェクト型のそれぞれ毎に前記イベントと前記操作関数との対応を定めた文と、遷移元の状態の組合せと当該組合せの状態で発生するイベントとから遷移先の状態を求めるための文とを各文に対してあらかじめ与えられたフォーマットに従って生成し、各生成した文を含めた検証仕様を生成する
ことを特徴とする請求項11に記載のプログラム。 - 前記第2の入力ステップは、前記複数のオブジェクト型のうちの1つを有するオブジェクトの遷移元状態と前記遷移元状態で前記複数のオブジェクト型のうちの他の1つを有するオブジェクトに関して発生するイベントとに基づく遷移の制約を記述した論理式である表明式をさらに入力し、
前記検証仕様生成ステップは、
前記合成遷移表に示される各状態遷移が前記表明式を満たすか否かを検査し、前記表明式を満たさない当該状態遷移を特定し、
前記合成遷移表において、前記表明式を満たさないとして特定された状態遷移の遷移先をあらかじめ指定された状態に書き換えることにより前記合成遷移表を更新し、
更新された合成遷移表と前記対応表とに基づき前記検証仕様を生成する
ことを特徴とする請求項12に記載のプログラム。 - 前記あらかじめ指定された状態はエラー状態であることを特徴とする請求項13に記載のプログラム。
- 前記検証対象のソースプログラムを前記検証仕様に基づいて検証するプログラム検証ステップをさらに前記コンピュータに実行させることを特徴とする請求項11ないし14のいずれか一項に記載のプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007081612A JP4607918B2 (ja) | 2007-03-27 | 2007-03-27 | プログラム検証仕様生成装置、方法およびプログラム |
US12/040,987 US20080250427A1 (en) | 2007-03-27 | 2008-03-03 | Apparatus and method for generating verification specification of verification target program, and computer readable medium |
CNA2008100878650A CN101276308A (zh) | 2007-03-27 | 2008-03-26 | 验证目标程序的验证规范的产生装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007081612A JP4607918B2 (ja) | 2007-03-27 | 2007-03-27 | プログラム検証仕様生成装置、方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008242737A JP2008242737A (ja) | 2008-10-09 |
JP4607918B2 true JP4607918B2 (ja) | 2011-01-05 |
Family
ID=39828112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007081612A Expired - Fee Related JP4607918B2 (ja) | 2007-03-27 | 2007-03-27 | プログラム検証仕様生成装置、方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20080250427A1 (ja) |
JP (1) | JP4607918B2 (ja) |
CN (1) | CN101276308A (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5067317B2 (ja) * | 2008-08-27 | 2012-11-07 | 富士通株式会社 | 検証支援プログラム、検証支援装置、および検証支援方法 |
EP2199956A1 (en) * | 2008-12-18 | 2010-06-23 | Siemens Aktiengesellschaft | Method and system for managing results of an analysis process on objects handled along a technical process line |
JP2010258124A (ja) | 2009-04-23 | 2010-11-11 | Renesas Electronics Corp | 半導体装置及び半導体装置の製造方法 |
JP5610530B2 (ja) * | 2010-12-27 | 2014-10-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | リソース保護処理プログラムとリソース保護処理装置とリソース保護処理方法 |
RU2586016C2 (ru) * | 2011-11-15 | 2016-06-10 | Японское Агентство По Науке И Технике | Система предоставления услуги анализа/верификации программ, способ управления такой системой, машиночитаемая среда хранения, устройство для анализа/верификации программ, устройство для управления средством анализа/верификации программ |
US9733782B2 (en) * | 2013-09-13 | 2017-08-15 | Fujitsu Limited | Extracting a deterministic finite-state machine model of a GUI based application |
EP3370150B1 (en) | 2015-11-25 | 2020-02-19 | Huawei Technologies Co., Ltd. | Program generation method and system for accelerator |
CN109508540B (zh) * | 2018-09-12 | 2023-06-23 | 成都奥卡思微电科技有限公司 | 一种芯片安全监视方法和安全监视芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06295253A (ja) * | 1993-04-07 | 1994-10-21 | Hitachi Ltd | マイクロプログラム検証方法および装置 |
JPH09160763A (ja) * | 1995-12-05 | 1997-06-20 | Ricoh Co Ltd | プログラム解析方法及び装置 |
JP2007011605A (ja) * | 2005-06-29 | 2007-01-18 | Kansai Electric Power Co Inc:The | ソフトウェア動作仕様のモデル検査支援装置およびこれを備えたモデル検査システム並びにモデル検査支援プログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481717A (en) * | 1993-04-12 | 1996-01-02 | Kabushiki Kaisha Toshiba | Logic program comparison method for verifying a computer program in relation to a system specification |
US5920718A (en) * | 1997-03-21 | 1999-07-06 | The Boeing Company | Method and apparatus for creating executable code for object-oriented objects having finite state machine |
US6938186B2 (en) * | 2002-05-28 | 2005-08-30 | Microsoft Corporation | System and method for performing a path-sensitive verification on a program |
US7979849B2 (en) * | 2004-10-15 | 2011-07-12 | Cisco Technology, Inc. | Automatic model-based testing |
JP2008171296A (ja) * | 2007-01-15 | 2008-07-24 | Fujitsu Ltd | モデル作成プログラム、モデル作成装置、モデル作成方法 |
-
2007
- 2007-03-27 JP JP2007081612A patent/JP4607918B2/ja not_active Expired - Fee Related
-
2008
- 2008-03-03 US US12/040,987 patent/US20080250427A1/en not_active Abandoned
- 2008-03-26 CN CNA2008100878650A patent/CN101276308A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06295253A (ja) * | 1993-04-07 | 1994-10-21 | Hitachi Ltd | マイクロプログラム検証方法および装置 |
JPH09160763A (ja) * | 1995-12-05 | 1997-06-20 | Ricoh Co Ltd | プログラム解析方法及び装置 |
JP2007011605A (ja) * | 2005-06-29 | 2007-01-18 | Kansai Electric Power Co Inc:The | ソフトウェア動作仕様のモデル検査支援装置およびこれを備えたモデル検査システム並びにモデル検査支援プログラム |
Also Published As
Publication number | Publication date |
---|---|
CN101276308A (zh) | 2008-10-01 |
JP2008242737A (ja) | 2008-10-09 |
US20080250427A1 (en) | 2008-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4607918B2 (ja) | プログラム検証仕様生成装置、方法およびプログラム | |
Almeida et al. | Jasmin: High-assurance and high-speed cryptography | |
Beyer et al. | Correctness witnesses: Exchanging verification results between verifiers | |
Beyer et al. | Witness validation and stepwise testification across software verifiers | |
Bouajjani et al. | On inter-procedural analysis of programs with lists and data | |
Maksimović et al. | Gillian, part II: real-world verification for javascript and C | |
Ipate et al. | Test generation from P systems using model checking | |
Ermis et al. | Splitting via interpolants | |
Blech et al. | On formal reasoning on the semantics of PLC using Coq | |
Bourbouh et al. | Automated analysis of Stateflow models | |
JP4959784B2 (ja) | 生成装置、生成方法、および、生成プログラム | |
Mateescu et al. | Quantifying the parallelism in BPMN processes using model checking | |
Montenegro et al. | A generic intermediate representation for verification condition generation | |
Both et al. | Automatic protocol conformance checking of recursive and parallel component-based systems | |
Ambal et al. | Certified derivation of small-step from big-step skeletal semantics | |
JP6116983B2 (ja) | エントリーポイント抽出装置 | |
Ressouche et al. | Modular compilation of a synchronous language | |
Kowal et al. | Incremental consistency checking in delta-oriented uml-models for automation systems | |
Urdahl et al. | Architectural system modeling for correct-by-construction RTL design | |
Kappes et al. | Effective Processor Model Generation from Instruction Set Simulator to Hardware Design | |
Dausend et al. | Introducing Aspect–Oriented Specification for Abstract State Machines | |
Alba-Castro et al. | Automated certification of non-interference in rewriting logic | |
Li et al. | Automated transformations from UML behavior models to contracts | |
Wang et al. | Umc4m: A verification tool via program execution | |
Lefticaru et al. | Model checking based test generation from P systems using P-lingua |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090327 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090828 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090911 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091110 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100917 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101007 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131015 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |