JP2001109644A - プログラム検証方法及び装置 - Google Patents
プログラム検証方法及び装置Info
- Publication number
- JP2001109644A JP2001109644A JP28656699A JP28656699A JP2001109644A JP 2001109644 A JP2001109644 A JP 2001109644A JP 28656699 A JP28656699 A JP 28656699A JP 28656699 A JP28656699 A JP 28656699A JP 2001109644 A JP2001109644 A JP 2001109644A
- Authority
- JP
- Japan
- Prior art keywords
- program
- verification
- processing
- executed
- route
- 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
が実現すべき本来の処理仕様を抽出し、その処理仕様に
合致しないプログラムの部分を自動的に抽出するプログ
ラム開発支援システムを提供する。 【解決手段】本発明は、計算機で実行される実行プログ
ラムまたはこの実行プログラムを生成するためのソース
プログラムを検証するものであって、実行プログラムま
たはソースプログラムを検証する仕様に対応したプログ
ラムの部分としての1以上の処理からなるブロックに分
割し、2以上のブロックの組み合わせを、上記検証する
仕様に対応した検証ルートとして複数抽出し、所定数以
上の検証ルートにおいて実行される上記検証する仕様に
対応した処理を他の検証ルートにおいても実行されるべ
き処理としての処理仕様として抽出することにより、プ
ログラムを検証するものである。
Description
支援する技術に係り、特にプログラムの欠陥摘出に好適
な検証方法及び検証システムに関するものである。
ステムの代表的なものとして、次の2つの技術がある。
1つは、実際にプログラムを動作させてメモリ領域への
不正なアクセス等、障害の要因となるプログラムの動作
の有無をチェックすることにより行うものである。
実行前に行うもので、例えばUNIXオペレーティングシス
テムにおけるlintコマンドのように、プログラムの記述
が所定のプログラム言語の文法に合致するものであるか
否かをチェックするものである。
以下のような問題があった。すなわち、実際にプログラ
ムを動作させて検証する方法では、検証対象は、実際に
実行されたプログラムのステップのみであり、すべての
ステップではない。その上、分岐条件のすべての組み合
わせに対してプログラムの検証を行うことは困難であっ
た。また、そのような検証のためのテストデータは通常
人手で準備されるため、重要な箇所の検証漏れ等人為ミ
スも誘発されやすい。
に合致するか否かの検証では、たとえ検証結果が正常で
あっても、それは単にソースプログラムが所定の文法に
従って記述されていることが検証されたにすぎず、プロ
グラムの動作が正常か否かまでを検証するものではな
い。
要求仕様を計算機に記憶させ、その仕様が正しく反映さ
れているかを自動で検証するシステムが検討されている
が、これらの要求仕様は、個々のプログラムが対象とす
る応用分野と実現すべき機能とに依存しており、プログ
ラムの検証システム(あるいは検証方法)として、汎用
的なシステムの開発は、困難と考えられていた。
ラムの要求仕様を計算機で自動的に検証する方法及び装
置に関わるものであり、上記従来技術の問題を解決する
汎用的なプログラム検証技術を提供することを目的とす
る。
つ要求仕様の共通部分を予め検証する仕様として規定
し、その検証する仕様に対応した個々のプログラムが持
つ具体的仕様(処理仕様)を自動的に抽出することによ
り、上記問題点の解決を図るものである。
するために、以下の手段を採用した。すなわち、本発明
は、計算機で実行される実行プログラムまたはこの実行
プログラムを生成するためのソースプログラムを検証す
るものであって、実行プログラムまたはソースプログラ
ムを検証する仕様に対応したプログラムの部分としての
1以上の処理からなるブロックに分割し、2以上のブロ
ックの組み合わせを、前記検証されるべき仕様に対応し
た検証ルートとして複数抽出し、所定数以上の検証ルー
トにおいて実行される前記検証する仕様に対応した処理
を他の検証ルートにおいても実行されるべき処理として
の処理仕様として抽出することにより、プログラムを検
証するものである。
が実行されない検証ルートをプログラムの欠陥として抽
出してもよい。上記のブロック,検証ルート,処理仕様
として抽出された処理,または処理仕様として抽出され
なかった処理を表示するようにしてもよい。
れるべき処理に係る情報を補助情報として入力させるよ
うにしてもよい。次に、本発明が使用する方式の機能構
成を、従来方式との比較から説明する。図1は、従来方
式の構成と本発明の方式の構成とを比較するためのイメ
ージ図である。
のA,Bを、また対応する処理仕様としてa1,a2及
びb1,b2を挙げる。 A: 一つの関数の中で、特定のプログラム資源を扱う
場合、対となる処理が必要である。 a1:一つの関数の中でデータバッファに対する処理に
は、獲得/開放処理に対応する対となる処理がある。 a2:一つの関数の中で、実行レベル(プログラムを実
行するときの他のプログラムと比較した優先度)を操作
する場合、実行レベルを上げる処理と実行レベルを下げ
る処理とが対となって存在する。 B:個々の関数は、それが呼び出される場合、設定され
なければならない引数の要素は一定である。 b1:関数1が呼び出される場合、引数の要素1,2,
3,...が設定されていなければならない。 b2:関数2が呼び出される場合、引数の要素a,b,
c,...が設定されていなければならない。
仕様を入力値として準備すること、または検証システム
内部に予めそれらを保持することが必要であった。これ
に対し、本発明は、検証すべき仕様として、より汎用的
なものを予め準備し、複数の検証ルートでの比較結果か
ら具体的仕様を検証システム自体が自動的に抽出する方
法を採用している。したがって、従来技術に比べてより
汎用的なシステムの提供が可能となっている。
から図17の図面に基いて説明する。図2は、本実施の
形態に係るプログラム検証装置のハードウェアの構成図
であり、図3は図2に示すCPU1において実行される
プログラムの構成図であり、図4〜図8は本実施の形態
で取り扱うデータ構造を示す図であり、図9は本実施の
形態の動作を例示するための検証対象となるサンプルプ
ログラムの構造を示す図であり、図10、11、12
は、図9のサンプルプログラムを検証対象として処理し
た際の中間結果を示すものであり、図10はプログラム
のブロック構造、図11はプログラムの検証ルートの抽
出例、図12は検証ルート抽出時に使用するリスト構造
を示す構造図である。図13は図3に示した構成図の検
証ルート抽出部12と処理パターン抽出部13との関連
を示す図であり、図14及び図15は本実施の形態の動
作を例示するためのサンプルプログラム1を示す図であ
り、図16及び図17は図14のサンプルプログラム1
に対する処理結果を示す図である。 <構成>図2は本発明の実施の形態に係るプログラム検
証装置を示すものである。図2に示すように、このプロ
グラム検証装置は、CPU1、メモリ2、ハードディス
ク装置3、表示装置4、キーボード5、及びマウス6を
備えている。
装置に備えたCPU1において実行されるプログラムの
構成図である。このプログラムは、検証の対象となるプ
ログラムをブロックに分割するブロック分割部11と、
2以上のブロックを組み合わせて、連続して実行される
文(命令)の集合としての検証ルートを抽出する検証ル
ート抽出部12と、抽出された検証ルートから特定の処
理を実行する文(以下処理パターンという)を抽出する
処理パターン抽出部13と、複数の検証ルートにおいて
抽出された処理パターンを比較して本来実行されるべき
処理としての処理仕様を抽出する処理仕様抽出部14
と、検証を補助する情報を入力するための補助情報入力
部16(入力手段に相当)とを備えている。 <ブロック分割部11の処理>ブロック分割部11は、
処理対象のソースプログラムに含まれる分岐文(分岐命
令)と関数呼び出し文とからプログラムの階層構造を解
析する。分岐文とは、if文、while文、あるいはcase文
等のように、指定された条件に従って、あるいは無条件
にプログラムの実行順を変更する文をいう。一方、関数
呼び出し文とは、プログラムの部品としての関数を呼び
出すための文をいう。関数をサブルーチンともいい、関
数呼び出し文をサブルーチン呼び出し文ともいう。
このような関数または分岐文の定義の中の’{’及
び’}’または’(’及び’)’で囲まれた範囲には、通
常のソースプログラムの文の他、文と文とを組み合わせ
た複数の文が含まれるので、これをブロックと呼ぶ。
対象とするソースプログラムは、複数の分岐文と関数呼
び出し文によって、複数の部分としてのブロックに区分
される。このブロックの中には、さらに分岐文や関数呼
び出し文が存在する。したがって、処理対象となるプロ
グラムは分岐文や関数呼び出し文が組み合わされて、階
層構造をなしている。ブロック分割部11は、分岐文と
関数呼び出し文とによって構成されるこのようなブロッ
ク間の組み合わせ、すなわちプログラムの階層構造を解
析し、図3に示す検証ルート抽出部12において処理可
能なデータ構造として表現する。
するソースプログラムの階層構造(ブロックの組み合わ
せ)を表現するためのデータ構造を示す。図4は、関数
もしくは、分岐文の構造を示す文構造体である。文構造
体は、その文の種類を表す情報と、その種類に依存した
情報とを含む。
第一階層のブロックの構造を示すブロック構造体であ
る。図5に示すようにこのブロック構造体は、ブロック
情報と、そのブロックに直接含まれる分岐文と関数とを
示す文構造体へのポインタ配列へのポインタからなって
いる。
この構造体は、図6のように、関数を示す情報、その関
数の定義を含むファイルの名称であるファイル名、この
ファイル内において、その関数が定義されている先頭の
行を示す行番号、及びその関数内の第1階層のブロック
構造へのポインタを含んでいる。
文の文構造体を示したものである。図7でif文であるこ
とを示す情報は、この文構造体で表現した分岐文がif文
であることを示している。ブロックaに対するブロック
構造体へのポインタとは、if(a)に含まれるブロックaを
表現するブロック構造体(図5で示したもの)へのポイ
ンタである。また、ブロックbに対するブロック構造体
へのポインタとは、if(a)then{b}に含まれるブロックb
を表現するブロック構造体へのポインタである。ブロッ
クcに対するブロック構造体へのポインタも同様であ
る。
分岐文が含まれている場合には、上述した図4と図5の
構造を繰り返すことによって、文の階層構造が表現され
ることになる。なお、この文構造体は、図6〜図8に例
示したものの他、case文、for文等プログラミング言語
に現れる他の制御文も同様に表現することができる。
内部の関数呼び出し及び分岐文によって区分されるブロ
ックの組み合わせとしての階層構造が表現されることに
なる。
を例示するためのサンプルプログラムであり、図10
は、このサンプルプログラムをブロック分割部11が処
理した結果の例である。 <検証ルート抽出部の処理>検証ルート抽出部12は、
上記ブロック分割部11によって認識されたプログラム
の階層構造(図4〜図8)を利用し、分岐文によって実
行を制御されるプログラムの部分(ブロック)の組み合
わせとしての検証ルートを生成する。
から構成されており、最初のif(a1)のに含まれるブロッ
クa1が真か偽かによって、ブロックA1またはブロックA2
のいずれかが実行される。同様に、次のif(b1)に含まれ
るb1が真か偽かによって、ブロックB1またはブロックB2
のいずれかが実行される。そして、ブロックB1が実行さ
れる場合には、さらにif(c1)に含まれるブロックc1が真
か偽かによってブロックC1またはブロックC2のいずれか
が実行される。
て区分されたプログラムの部分(ブロック)を組み合わ
せて得られる連続して実行される文の並びをいう。例え
ば、ブロックa1、b1及びc1のいずれもが真の場合、a1=>
A1=>b1=>B1(c1=>C1)のように実行される。このようなブ
ロックの並びが検証ルートである。
関数のブロック(図4から図8に示すブロック分割部1
1によって作成された階層構造を表すデータ構造)から
プログラムが実行されるすべての検証ルートを作成す
る。
従って検証ルートが抽出される。この走査規則は、検証
する仕様に依存にしない一般的走査規則と検証する仕様
に依存して適用される具体的走査規則に区分される。な
お、検証ルートの抽出は、指定により、プログラムを構
成する個々の関数ごとに、または関数を組み合わせたプ
ログラム全体に対して実行される。 <一般的走査規則>以下に検証する仕様に依存しない走
査規則を示す。 (1)1個の分岐文においては、先に現れるブロックが
優先して実行される。例えば、if(a)then{b}else{c}な
る分岐において、ブロックbとブロックcとでは、ブロ
ックbが優先されて検証ルートが作成される。 (2)同一階層中にある分岐文は、実行順序が後ろにあ
る分岐文のルートの判定を優先して変化させて検証ルー
トが網羅される。 (3)複数階層に渡る分岐文の組み合わせにおいては、
最も深い階層の分岐文の判定を優先して変化させて検証
ルートが網羅される。
ラムから生成した検証ルートを図11に示す。まず、最
初の検証ルート1)は、上記規則(1)に従って最初に
現れるブロックを優先して生成したものである。次の検
証ルート2)は、上記規則(2)(3)に従って、実行
順序が後ろにあって、かつ、最も深い階層構造のif(c1)
then{C1}else{C2}の判定を変更して検証ルートをC1から
C2に変更したものである。3)以下は同様の手順で生成し
たものである。
現するためのデータ構造を図12に示す。図12はリス
ト構造と呼ばれるデータ構造により図11の検証ルート
1)を表現したものである。リスト構造とは、複数の要
素を矢印で示されるポインタで連結したもので、各要素
に値を格納することで、格納された値の順序を保持する
ことができる。図12では、a1=>A1=>b1=>B1(c1=>C1)に
従って値(この場合は、ブロックa1等へのポインタ)が
保持されるので、検証ルートとしてのブロックの順序に
関する情報が保持される。 <具体的走査規則>上記抽出した検証ルートに沿って、
プログラムを走査する場合は、検証する仕様に対応して
より詳細な具体的走査規則が必要になる。以下に検証仕
様1とそれに対応する具体的走査規則とを示す。
ログラム資源を扱う場合、対となる処理(例えば資源の
獲得/資源の開放)が必要である。具体的走査規則: (1)個々の関数内部の先頭から走査を開始し、他の関
数呼び出しが存在しても呼び出し先の関数内部までは走
査しない。 (2)複数の分岐文が同一レベルで組み合わされている
場合、すべての組み合わせを網羅して検証ルートを走査
する。例えば、2分岐のif文と4分岐のcase文があった
場合、2×4=8個の検証ルートを走査する。 (3)ループ文(for文、while文)については、そのル
ープ処理部を一度だけ走査する。 (4)ループ内にbreak文を検出した場合、ループ処理
部から抜ける。 (5)return文検出時は、その関数から抜けるものとす
る。 <処理パターン抽出部及び処理仕様抽出部の処理>処理
パターン抽出部13は、上記の検証する仕様に対応する
処理パターンが各検証ルートに含まれているか否かを調
査し、含まれている処理パターンを各検証ルートごとに
処理仕様抽出部14に報告する。
ン抽出部13の報告に基づいて、各検証ルートごとにど
の処理パターンが含まれるかを集計し、その結果として
上記検証する仕様に対応する処理仕様が成立するか否か
を判断する。この処理仕様が一定数以上の検証ルートで
成立する場合、これを他の検証ルートでも成立すべき処
理仕様として決定する。また、上記決定された処理仕様
が成立しない検証ルートについて、プログラム上の欠陥
とみなし、当該検証ルートと成立しない処理仕様及び処
理仕様が成立しない原因となった処理パターンを提示す
る。従って、本実施の形態では、処理仕様抽出部14
が、欠陥検出部を兼ねている。
場合、処理パターン抽出部の抽出規則における対となる
パターンを示す。 −獲得パターン ・関数内で、変数に具体的値が設定されている部分が該
当する(関数の引数となる変数は、その関数の先頭で、
関数の呼び出し元から値を獲得しているとみなす)。
る部分が該当する。−開放パターン ・変数が、関数呼び出し時の引数となる部分が該当す
る。
部分が該当する。なお、これらのパターン抽出規則を適
用した場合、検証仕様1に対応する処理仕様には以下の
ものがある。 処理仕様1:一つの関数の中でデータバッファに対する
処理には、獲得/開放処理に対応する対となる処理があ
る。 処理仕様2:一つの関数の中で、実行レベル(プログラ
ムを実行するときの他のプログラムと比較した優先度)
を操作する場合、実行レベルを上げる処理と実行レベル
を下げる処理とが対となって存在する。 処理仕様3:一つの関数の中で資源の排他制御をする場
合、リザーブ(資源の占有)とフリー(資源の開放)と
が対となって存在する。 <動作例>検証する仕様が上記検証仕様1の場合の検証
ルート抽出部12、処理パターン抽出部13、及び処理
仕様抽出部14の関係を図13に詳細に示す。処理パタ
ーン抽出部13は、検証ルート抽出部12から指示され
た検証ルート(今このルートをaとする)について、獲
得パターンと開放パターンの存在を調査する。処理仕様
抽出部は、獲得パターンαと開放パターンβとが存在し
て、検証仕様1が適用できる場合、検証ルートaの獲得
パターンαの処理を共有する他のすべての検証ルート
(これを検証ルートaの獲得パターンαを基準にした補
ルートという)について、開放パターンが存在するか否
かを判定する。
ン抽出部13、及び処理仕様抽出部14の動作を図14
に示すサンプルプログラム(プログラム1)を例にして
説明する。プログラム1は、通信プロトコルの一階層を
実現するための機能を簡易化して記述したものである。
このプログラムは、図15に示すようにプロトコルの下
位層から関数として呼び出され、プロトコルの上位層を
実現するプログラムに下位層から通知された情報をsndm
sg()という関数の呼び出し(実際にはOSの機能の実
行)によって通知するものである。このプログラム1で
はstruct buf及びstruct ctlで定義された構造体変数へ
のポインタが獲得パターンと開放パターンの調査の対象
にあてはまる。なお、プログラム1は、本発明の説明の
ため、ブロックA1とC2とで、bufpの開放処理(relb
uf(bufp))漏れが発生するように記述してある。
2が抽出した検証ルート及び上記検証仕様1に基づいて
抽出した獲得と開放の処理パターンを図16に示す。ま
た、これらの獲得、開放パターンを抽出する場合の処理
の流れを図17に示す。
なわち、a1=>A1から走査が開始される。獲得パタ
ーンとして、bufp、ctlp、及びbuf2p=getbuf()が検出さ
れ、開放パターンとしてreturn(buf2p)が検出されてい
る。そのため、buf2pの獲得パターンを共有する他の検
証ルートに開放パターンが存在するかが検証され、ルー
ト2、3、及び4においてbuf2pの開放パターンが検出
され正常と判定されている。
れる。bufp、ctlp及びbuf2pの獲得パターンと開放パタ
ーンとが検出されているが、buf2pについては、すでに
ルート1の走査において検証済みであるので、bufpとct
lpとについて他の検証ルートの検証が行われる。その結
果、ルート1とルート4とでbufp及びctlpの開放パター
ンがないことが判明する。以下同様にルート4まで走査
がなされ、最終的にルート1とルート4とにおいて、bu
fpとctlpの開放処理の漏れが検出される。
のように、ルート1(ブロックA1)とルート4(ブロ
ックC2)とで、bufpの開放処理が漏れていることだけ
であり、ctlpについては、開放処理は必要ない。この結
果は、ctlpが仕様的には、獲得/開放処理の対象になら
ないが、上記のパターンの抽出規則の条件を満たしたた
めに発生したことである。このような結果は、後から人
が確認すれば容易にチェックできることであるが、この
例で示したctlpのように、予め特定の資源について開放
処理の必要がないことが分かっているような場合には、
処理パターン抽出時の補助情報として、事前に判定対象
外の資源を指定できるようにしておけば、上記のような
無用の情報の検出を防止することができる(処理仕様に
含まれる処理に係る情報を補助情報として入力すること
に相当)。
装置は、種々のプログラムに共通に必要とされる一般的
な規則を検証する仕様として規定し、その検証する仕様
に対応した検証ルートをプログラムから抽出し、一定数
以上の検証ルート(上述では1以上の検証ルート)にお
いて成立している、そのプログラムが持つ検証する仕様
に対応した具体的な仕様を、そのプログラムの全体で成
立する仕様(処理仕様)であると判定するものである。
そして、その結果、本来満たすべき処理仕様が成立して
いない検証ルートをプログラムのバグの可能性がある部
分として抽出する機能を提供するものである。
独自の要求仕様や複雑な文法規則を用いることなく、プ
ログラム開発上の汎用的な規則としての検証する仕様に
基づき、プログラムの正当性を検証することができる。 <変形例>上記実施の形態では、図14のサンプルプロ
グラムに対して、検証する仕様として検証仕様1を適用
した例を示したが、本発明の実施は検証仕様1には限定
されない。他の検証する仕様の例として、以下に検証仕
様2とこれに対応する具体的走査規則を示す。 検証仕様2:個々の関数はプログラム上のどのルートで
呼び出されても、その関数の引数となる要素のうちで、
設定が必要なものは一定である。具体的走査規則: (1)検証ルートの走査の開始点(具体的には、コマン
ドの入り口、一次割り込みの入り口となるもの)を外部
から指定させる。 (2)複数の分岐文が同一レベルで組み合わされている
場合、すべての組み合わせを網羅して検証ルートを走査
する。例えば、2分岐のif文と4分岐のcase文があった
場合、2×4=8個の検証ルートが走査される。 (3)ループ文(for文、while文)については、そのル
ープ処理部を一度だけ走査する。 (4)関数内部で他の関数を呼び出す場合、呼び出し先
の関数まで検証ルートを走査する。ただし、走査済みの
検証ルートですでに走査されている関数を再度走査する
ことはしない。 (5)ループ内にbreak文を検出した場合、ループ処理
部から抜ける。 (6)return文検出時は、その関数から抜けるものとす
る。
場合、処理パターン抽出部の抽出規則を示す。 (1)検証対象のプログラムを構成するすべての関数を
抽出する。 (2)1つの関数に対して、上記具体的走査規則に従っ
て抽出したすべてのルートにおけるその関数の呼び出し
位置に対して、その関数呼び出し時にどれだけの情報
(引数となっている構造体の要素)が設定されているか
を抽出する。
出されるときに設定されている要素が、一定以上の検証
ルートで同一のとき、その要素がその関数呼び出し時に
設定が必要な要素であると判断される。
検証対象としたが、本発明はソースプログラムの検証に
限るものではない。すなわち、本発明は、検証ルートと
その検証ルートに含まれる処理パターンを抽出できるプ
ログラム一般に適用できるので、その処理対象のプログ
ラムの形式がソースプログラムのようにテキスト形式で
あるか、コンパイルされたバイナリ形式であるかには依
存しない。例えば、上述した実施の形態において、文を
命令に置き換え、ブロックを命令列に置き換えて、図4
の行番号をファイルのアドレスに変更すれば、本発明を
バイナリ形式のプログラムにもそのまま適用できる。
計算機で実行される実行プログラムまたはこの実行プロ
グラムを生成するためのソースプログラムを検証する仕
様に対応したプログラムの部分としての1以上の処理か
らなるブロックに分割し、2以上のブロックの組み合わ
せを、前記検証する仕様に対応した検証ルートとして複
数抽出し、所定数以上の検証ルートにおいて実行される
検証する仕様に対応した処理を他の検証ルートにおいて
も実行されるべき処理としての処理仕様として抽出する
ことによりプログラムを検証するので、個々のプログラ
ムが実現すべき本来の処理仕様を抽出し、その処理仕様
に合致しないプログラムの部分を自動的に抽出すること
ができる
成図
図
す図
処理仕様抽出部の関係を示す図
を抽出した例を示す図
Claims (9)
- 【請求項1】計算機で実行される実行プログラムまたは
この実行プログラムを生成するためのソースプログラム
の検証方法であって、 実行プログラムまたはソースプログラムを検証する仕様
に対応したプログラムの部分としての1以上の処理から
なるブロックに分割し、 2以上の前記ブロックの組み合わせを、前記検証する仕
様に対応した検証ルートとして複数抽出し、所定数以上
の検証ルートにおいて実行される前記検証する仕様に対
応した処理を他の検証ルートにおいても実行されるべき
処理としての処理仕様として抽出する実行プログラムま
たはソースプログラムの検証方法。 - 【請求項2】前記処理仕様として抽出された処理が実行
されない検証ルートをプログラムの欠陥として抽出する
請求項1記載の実行プログラムまたはソースプログラム
の検証方法。 - 【請求項3】前記ブロック,前記検証ルート,処理仕様
として抽出された処理,または処理仕様として抽出され
なかった処理を表示する請求項1記載の実行プログラム
またはソースプログラムの検証方法。 - 【請求項4】前記処理仕様に含まれる処理に係る情報を
補助情報として入力させる請求項1記載の実行プログラ
ムまたはソースプログラムの検証方法。 - 【請求項5】計算機で実行される実行プログラムまたは
この実行プログラムを生成するためのソースプログラム
の検証装置であって、 実行プログラムまたはソースプログラムを検証する仕様
に対応したプログラムの部分としての1以上の処理から
なるブロックに分割するブロック分割部と、 2以上の前記ブロックの組み合わせを、前記検証する仕
様に対応した検証ルートとして複数抽出する検証ルート
抽出部と、 前記抽出された検証ルートに対して、所定数以上の検証
ルートにおいて実行される処理を他の検証ルートにおい
ても実行されるべき前記検証する仕様に対応した処理と
しての処理仕様として抽出する処理仕様抽出部とを備え
た実行プログラムまたはソースプログラムの検証装置。 - 【請求項6】前記処理仕様として抽出された処理が実行
されない検証ルートをプログラムの欠陥として検出する
欠陥検出部をさらに備えた請求項5記載の実行プログラ
ムまたはソースプログラムの検証装置。 - 【請求項7】前記ブロック,前記検証ルート,処理仕様
として抽出された処理,または処理仕様として抽出され
なかった処理を表示する表示手段をさらに備えた請求項
5記載の実行プログラムまたはソースプログラムの検証
装置。 - 【請求項8】前記処理仕様に含まれる処理に係る情報を
補助情報として入力させる入力手段をさらに備えた請求
項5記載の実行プログラムまたはソースプログラムの検
証装置。 - 【請求項9】計算機で実行される実行プログラムまたは
この実行プログラムを生成するためのソースプログラム
を検証するプログラムであって、 実行プログラムまたはソースプログラムを検証する仕様
に対応したプログラムの部分としての1以上の処理から
なるブロックに分割し、 2以上の前記ブロックの組み合わせを、前記検証する仕
様に対応した検証ルートとして複数抽出し、 所定数以上の検証ルートにおいて実行される処理を他の
検証ルートにおいても実行されるべき処理としての処理
仕様として抽出して実行プログラムまたはソースプログ
ラムを検証するプログラムを記録したコンピュータ読み
取り可能な記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28656699A JP4098448B2 (ja) | 1999-10-07 | 1999-10-07 | プログラム検証方法及び装置 |
US09/593,423 US6697965B1 (en) | 1999-07-10 | 2000-06-14 | Program verifying method and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP28656699A JP4098448B2 (ja) | 1999-10-07 | 1999-10-07 | プログラム検証方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001109644A true JP2001109644A (ja) | 2001-04-20 |
JP4098448B2 JP4098448B2 (ja) | 2008-06-11 |
Family
ID=17706079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP28656699A Expired - Fee Related JP4098448B2 (ja) | 1999-07-10 | 1999-10-07 | プログラム検証方法及び装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6697965B1 (ja) |
JP (1) | JP4098448B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004145381A (ja) * | 2002-10-21 | 2004-05-20 | Hitachi Ltd | ソースプログラムの静的解析装置 |
WO2006038394A1 (ja) * | 2004-10-04 | 2006-04-13 | Matsushita Electric Industrial Co., Ltd. | ソースコード検査器、方法、プログラム及び記憶媒体 |
JP2006293417A (ja) * | 2005-04-05 | 2006-10-26 | Ntt Docomo Inc | アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム |
JP2007249765A (ja) * | 2006-03-17 | 2007-09-27 | Fujitsu Ltd | ソースプログラム中の関数呼出し異常パターン検出プログラム |
JP2008226208A (ja) * | 2007-03-16 | 2008-09-25 | Hitachi Information Systems Ltd | プログラム検証方法とシステムおよびプログラム |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015820A1 (en) * | 2000-09-25 | 2004-01-22 | Edward Balassanian | Method and system for dynamic delivery of beads |
US6907446B1 (en) * | 2000-10-16 | 2005-06-14 | Implicit Networks, Inc. | Method and system for dynamic delivery of beads |
US20070016692A1 (en) * | 2000-10-16 | 2007-01-18 | Edward Balassanian | Method and system for dynamic delivery of beads |
US6859894B1 (en) * | 2001-11-30 | 2005-02-22 | Emc Corporation | System and method for risk management of errors in software program code |
US7647579B2 (en) * | 2004-03-31 | 2010-01-12 | International Business Machines Corporation | Method, system and program product for detecting deviation from software development best practice resource in a code sharing system |
US7886273B2 (en) * | 2005-04-29 | 2011-02-08 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Systems, methods and apparatus for generation and verification of policies in autonomic computing systems |
US8726232B1 (en) * | 2005-12-02 | 2014-05-13 | The Math Works, Inc. | Identification of patterns in modeling environments |
JP2007213292A (ja) | 2006-02-09 | 2007-08-23 | Nec Electronics Corp | マルチプロセッサシステム及びスレーブシステムの起動方法 |
JP5117495B2 (ja) | 2006-07-21 | 2013-01-16 | バークレイズ・キャピタル・インコーポレーテッド | ネットワーク上のコンピュータ資産のインベントリを識別し、インベントリ管理を実行するシステム |
US9003236B2 (en) * | 2012-09-28 | 2015-04-07 | Intel Corporation | System and method for correct execution of software based on baseline and real time information |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5721926A (en) * | 1993-01-12 | 1998-02-24 | Kabushiki Kaisha Toshiba | Correspondence-oriented state-transition-model-based programming systems |
JPH08212106A (ja) * | 1995-02-01 | 1996-08-20 | Toshiba Corp | システム試験支援装置及びシステム試験支援方法 |
US6192108B1 (en) * | 1997-09-19 | 2001-02-20 | Mci Communications Corporation | Performing automated testing using automatically generated logs |
US6378088B1 (en) * | 1998-07-14 | 2002-04-23 | Discreet Logic Inc. | Automated test generator |
US6128727A (en) * | 1998-08-21 | 2000-10-03 | Advanced Micro Devices, Inc. | Self modifying code to test all possible addressing modes |
JP2000112786A (ja) * | 1998-10-05 | 2000-04-21 | Fujitsu Ltd | 試験ルート選定方法及び装置 |
US6449711B1 (en) * | 1999-02-04 | 2002-09-10 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs |
US6421634B1 (en) * | 1999-03-04 | 2002-07-16 | Sun Microsystems, Inc. | Interface independent test system |
US6415396B1 (en) * | 1999-03-26 | 2002-07-02 | Lucent Technologies Inc. | Automatic generation and maintenance of regression test cases from requirements |
US6378087B1 (en) * | 1999-06-08 | 2002-04-23 | Compaq Computer Corporation | System and method for dynamically detecting unchecked error condition values in computer programs |
US6513133B1 (en) * | 1999-06-29 | 2003-01-28 | Microsoft Corporation | Uniformly distributed induction of exceptions for testing computer software |
-
1999
- 1999-10-07 JP JP28656699A patent/JP4098448B2/ja not_active Expired - Fee Related
-
2000
- 2000-06-14 US US09/593,423 patent/US6697965B1/en not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004145381A (ja) * | 2002-10-21 | 2004-05-20 | Hitachi Ltd | ソースプログラムの静的解析装置 |
WO2006038394A1 (ja) * | 2004-10-04 | 2006-04-13 | Matsushita Electric Industrial Co., Ltd. | ソースコード検査器、方法、プログラム及び記憶媒体 |
US8020153B2 (en) | 2004-10-04 | 2011-09-13 | Panasonic Corporation | Source code checker, source code checking method, program for causing execution of the method, and storage medium for storing the program |
JP2006293417A (ja) * | 2005-04-05 | 2006-10-26 | Ntt Docomo Inc | アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム |
JP4727278B2 (ja) * | 2005-04-05 | 2011-07-20 | 株式会社エヌ・ティ・ティ・ドコモ | アプリケーションプログラム検証システム、アプリケーションプログラム検証方法およびコンピュータプログラム |
US8332823B2 (en) | 2005-04-05 | 2012-12-11 | Ntt Docomo, Inc. | Application program verification system, application program verification method and computer program |
JP2007249765A (ja) * | 2006-03-17 | 2007-09-27 | Fujitsu Ltd | ソースプログラム中の関数呼出し異常パターン検出プログラム |
JP2008226208A (ja) * | 2007-03-16 | 2008-09-25 | Hitachi Information Systems Ltd | プログラム検証方法とシステムおよびプログラム |
JP4679540B2 (ja) * | 2007-03-16 | 2011-04-27 | 株式会社日立情報システムズ | プログラム検証方法とシステムおよびプログラム |
Also Published As
Publication number | Publication date |
---|---|
US6697965B1 (en) | 2004-02-24 |
JP4098448B2 (ja) | 2008-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4098448B2 (ja) | プログラム検証方法及び装置 | |
JP4950454B2 (ja) | テスト自動化のスタック階層化 | |
JP4395761B2 (ja) | プログラムテスト支援装置およびその方法 | |
US5231691A (en) | Speech recognition system including interrupt scheme that avoids operational and interfacing conflicts | |
JPH10283189A (ja) | 内蔵実行可能アプリケーション及びコンピュータ読み取り可能な記憶媒体並びに内蔵実行可能アプリケーションの作成方法及びその作成システム | |
US7016807B2 (en) | Device and method for monitoring a program execution | |
US20100050257A1 (en) | Confirmation method of api by the information at call-stack | |
US7036111B2 (en) | Code verification system and method | |
JP5303795B2 (ja) | アプリケーションの解析方法、解析システム及び解析プログラム | |
US20030226131A1 (en) | Method for semantic verification of supporting programming artefacts | |
JPWO2011108584A1 (ja) | アプリケーション改変部位探索装置およびアプリケーション改変部位探索方法 | |
US8079026B2 (en) | Job definition verification system, and method and program thereof | |
US20040216138A1 (en) | Method and system for processing input from a command line interface | |
US20030217352A1 (en) | Script processing apparatus, script processing method, and script processing program | |
US20220092476A1 (en) | Dependence relationship detection device and dependence relationship detection method | |
JP4929121B2 (ja) | ソースプログラム解析装置、ソースプログラム解析方法及びコンピュータプログラム | |
JP2765549B2 (ja) | コンピュータシステムにおける動作評価システム | |
JP2002288004A (ja) | プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム | |
JPH0962493A (ja) | ソフトウェアインストールシステム | |
JP2002157144A (ja) | ソフトウェア自動試験方式 | |
JPH10293683A (ja) | プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体 | |
CN112604296B (zh) | 一种游戏更新的方法、电子设备和相关系统 | |
JPH10187450A (ja) | オブジェクト指向プログラム自動生成装置,自動生成方法およびそのプログラム記憶媒体 | |
JPH07114460A (ja) | データ処理システム | |
CN117873870A (zh) | 一种yum源完整性测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040824 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070525 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070619 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070816 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071204 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080204 |
|
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: 20080304 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080313 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110321 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110321 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120321 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130321 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130321 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140321 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |