JP2672711B2 - コンピュータプログラムをテストし、デバッグする方法 - Google Patents

コンピュータプログラムをテストし、デバッグする方法

Info

Publication number
JP2672711B2
JP2672711B2 JP4507252A JP50725292A JP2672711B2 JP 2672711 B2 JP2672711 B2 JP 2672711B2 JP 4507252 A JP4507252 A JP 4507252A JP 50725292 A JP50725292 A JP 50725292A JP 2672711 B2 JP2672711 B2 JP 2672711B2
Authority
JP
Japan
Prior art keywords
computer program
experiments
simulation
program
experiment
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 - Lifetime
Application number
JP4507252A
Other languages
English (en)
Other versions
JPH05505271A (ja
Inventor
エルンスト ジー ウルリッヒ
カレン ピー レンツ
マイケル エム ガスティン
Original Assignee
ディジタル イクイップメント コーポレイション
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ディジタル イクイップメント コーポレイション filed Critical ディジタル イクイップメント コーポレイション
Publication of JPH05505271A publication Critical patent/JPH05505271A/ja
Application granted granted Critical
Publication of JP2672711B2 publication Critical patent/JP2672711B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

【発明の詳細な説明】 関連出願 本発明は、本出願と同時に出願された以下の出願: ディジタルコンピュータを用いての多次元並行シミュ
レーションの方法というタイトルの、エルネスト・ゲザ
ー・ユーリッヒ(Ernst Guenther Ulrich)及びカーレ
ン・パネッタ・レンツ(Karen Panetta Lents)による
米国特許出願(PD91−0088)に関するものである。
本発明の利用分野 本発明は、ディジタルコンピュータにおいて、実験を
シミュレートすること、特に、1つのプログラムの実行
中に、関連する実験の並列的なシミュレーションを実行
する改良された方法に関するものである。
本発明の背景 コンピュータのパワー、及び実際についての適切なモ
デルを構築する能力に基づき、実験のシミュレーション
が次第に有効となり、時には、物理的実験のより優れた
代用物となる。例えば、工作プロトタイプの構築及び試
験は、型にはまったものではなく、モデル及びシミュレ
ーションによって何度も何度も行われる実験的な努力で
ある。
並行シミュレーション(CS)とは、1回のコンピュー
タの実行内での、関連実験の同時並列的なシミュレーシ
ョンである。並行シミュレーション(CS)は、慣用のコ
ンピュータでランする方法であり、並行ハードウェアな
しに並行実験を実行する。このことは、別個の事象につ
いてシミュレートされたシステムについて適用され、限
定される。一般的に、その速度は、単一の実験におい
て、シリアル(1度に1回の)シミュレーションの10〜
1000倍も速く、数及び実験間の類似性に大きく依存して
いる。並行シミュレーション(CS)は、1970/1973年か
ら始まり、初めは、ゲートレベルネットワークのフォー
ルトシミュレーション用に開発された。ここ数年にわた
って、一般性が増し、更に最近では、シミュレーション
方法論に発展した。離散型事象のシミュレーションが、
特定の問題を解くのに選択された方法である場合は常
に、並行シミュレーション(CS)は、通常シリアルシミ
ュレーションよりも優れている。並行シミュレーション
(CS)は、シリアルシミュレーションに優る幾つかの利
点がある。
まず第1に、すべての実験は、時間の次元を介して同
時に進行し、従って、並行シミュレーション(CS)は、
実験が競争者であるレースに類似している。このこと
は、レース方法論、及び比較形式のシミュレーションを
構成する。この方法論及び並行シミュレーション(CS)
の速度を用いて、シリアルシミュレーションを用いた場
合よりも難しく、且つ大きな問題を解消することができ
る。この方法論及び比較形式に基づくシミュレーション
ストラテジーは、初め同一であるが、後に相違するよう
になる関連実験をシミュレートし、監視することであ
る。
第2に、シリアルシミュレーションの場合に困難で、
コストのかかる監視が、並行シミュレーション(CS)を
用いて、容易で且つ手際良く処理される。実験は、比較
的に監視され、統計的と同様に極めて正確に比較され
る。統計的な“記号”は、すべての実験に対して保持さ
れ、周期的に分析される。
次に、並行シミュレーション(CS)は、様々な形で速
度を提供する。シリアルシミュレーションにおいて、実
験は単一の実行に圧縮される。シリアルシミュレーショ
ン間のアイドル時間がなくなり、シミュレーション計画
が戦略的に加速される。また、並行実験の数、これらの
類似性、及びこれらと基準実験との類似性により、前述
したCPU時間が、等価シリアルシミュレーションよりも
一般的に10〜1000倍短くなる。更に、記号の分析に基づ
き、初めの基準実験は、しばしばより中心的なものと置
換される。このことによって、基準と並行実験との平均
的な差が小さくなり、付加的な速度が得られる。最終的
に、並行シミュレーション(CS)によって、正確性と一
般性が得られる。このような生物学、科学などの分野に
おいて、関連する類似の物理的実験を並行して実行する
ことが望ましいが、労働、空間、設備、及び必要な原材
料のために、通常コストがかかり過ぎる。並行シミュレ
ーション(CS)は、並列(且つ、正確に同時)な実験形
式であり、従って、並列な物理実験の代用物である。こ
れは慣用のコンピュータ及びモデリング/シミュレーシ
ョン技術を除き、何等リソースを必要としない。
シリアル及び並行シミュレーション 以下の図は、(a)シリアルシミュレーション、及び
(b)等価並行シミュレーションを示している。
実験C0〜Cnは、シリアルシミュレーションS0〜Snと等
価である。C0=Rは、完全にシミュレートされた基準実
験であるが、C1〜Cnは、小スケール並行C実験である。
C2は、時刻t3においてRから離れ、Rから(d)離れて
いる限り存在し、時刻t3においてRに戻る。多くのシミ
ュレート動作は、R実験によって行われる。R実験は、
C実験毎にコストなしで、R実験と同一のすべてのC実
験のすべてのセグメントを処理し、Rにおける他方の対
とする。すなわち、C実験の識別番号は、R実験を実行
しない。C実験毎のシミュレートコストは、C実験のR
からの差に比例している。C実験が依然としてRと同一
な場合、コストなしでシミュレートされる。C実験がほ
ぼRと同一な場合、多くの場合コストなしでシミュレー
トされる。多数のデータ離散型C実験は、多くの場合コ
ストなしでR実験によって、又はどちらかといえば費用
のかからない兄弟C実験によって処理される。
コンピュータプログラムのテスト及びデバッグ コンピュータソフトウェアの適切なテスト及びデバッ
グは、クオリティを保証する上で避けられないことであ
り、それにもかかわらず方法を実行する場合には、試験
プロセスはとるに足らないものであり、コンピュータソ
フトウェアを完全に実行しない。この完全性の欠如、手
作業の量、及びソフトウェアの典型的な部分をテスト及
びデバッグするのにかかる全時間が、ここで扱われる問
題点である。
発明の概要 本発明の目的は、コンピュータプログラムのテスト及
びデバッグのシミュレーション技術を提供することにあ
る。この方法は、ターゲットプログラムが実行されるの
ではなく、プログラムの実行がシミュレートされ、且つ
多数のプログラムパス実験が同時にシミュレートされる
という点で、慣用の方法と異なる。ここでの方法は、CS
PP(Concurent Simulation of Program Paths)と称さ
れている。CSPPの技術手段は、MDCS(Multi−Domain Co
ncurrent Simulation)である。コンピュータプログラ
ムのクリティカル入力変数が規定され、各変数の入力値
のセットが割り当てられる。基準値が選択され、記号を
割り当てる。更に、入力変数が基準値と対話する際に、
記号が作成され、最終的に正確に実行しているケースと
比較される。
本発明の他の目的、特徴、及び利点は、図面を参照し
ながら説明を読むことで明らかとなろう。図面中、同一
の構成要素には、同一の参照番号を付している。本発明
の目的及び利点は、添付した請求の範囲で特に指摘した
手段及び組み合わせによって実現、達成され得る。従来
技術に優る本発明の改良、及びこれから生じる利点は、
図面を参照しつつ、以下の好適実施例についての説明を
読むことによって更に明らかとなるであろう。
図面の簡単な説明 従来技術に優る本発明の改良点及びこれによって生じ
る利点は、以下の好適実施例の説明を読むことによって
更に明らかとなる。
ここで、図1は、小さなコンピュータプログラムを示
す図であり、 図2は、CSPPについての説明を通して使用される用語
を表示しているテーブルであり、 図3は、コンピュータの主要部分を示している概念図
であり、 図4は、CSPPを使用したシミュレーションを示す概念
図であり、 図5は、シーケンシャルに実行するように配置された
3個のコンピュータプログラムを示す概念図であり、 図6は、並行して実行するように配置された3個のコ
ンピュータプログラムを示す概念図である。
好適実施例の説明 CSPPは、設計検査及び診断誤りシミュレーションを簡
易にし、減少させることができる。設計検査の場合、CS
PPの慣用の方法に対するCPUタイムは、40:1以上優るも
のとと推定される。大規模システムの場合、クロック抑
制方法は、これよりも更に優り、200:1以上である。診
断誤りシミュレーションの場合、CSPPの慣用の方法に対
するCPUタイムは、100〜10000:1優っている。CSPPと
は、MDCSを使用し、以下のことを行う方法である。
・慣用の方法よりも多くのバグを検出、除去し、より速
くこれらを検出、除去し、試験され/デバッグされるプ
ログラムの残りのバグを更に少なくする。
・多くのテストケースを一つのシミュレーションで、シ
ミュレートできるようにしている。・テスト手続きの一
部を自動化し、実行可能な入力条件のみをシミュレート
する。このことによって、実行可能な入力条件を選択す
る手作業をなくすことができる。
・データ相違、インストラクション相違、及び不規則な
動き(無限ループ)などのプログラムの実行に関する監
視、及び自動化された統計収集を提供する。監視は、プ
ログラムパス毎の正確なインストラクションカウントと
もに、実行範囲(非実行に対する実行される)情報を有
している。
・互いのプログラムに対して、代替プログラムをシミュ
レートする機能を提供し、互いの速度、正確性、及び複
雑さを比較する。
CSPPは、インストラクション又は高レベル構造によっ
て、コンピュータプログラムの実行をシミュレートす
る。その中心的な特徴は、多くのプログラムパス“実
験”が同時にシミュレートされること、及び固有の記号
が固有のプログラムパスに対して発生することである。
各実験は、ユーザによって指定される入力条件によるも
のである。慣用のツール、実行不能な入力条件の指定、
及び実行不能なプログラムの実行に関する慢性の問題
は、ここで本質的に解消される。その理由は、好ましく
ない種類の実行不能なプログラムがCSPPを使用して自動
的に実行されないからである。全体として、CSPPは、慣
用のテスティング&デバッギングツールと比較して、よ
り容易に使用することができ、より有益且つ効果的であ
る。
プログラムテスティングの場合、ユーザが、実験の
(出力)結果を証明する必要がある。その一方、プログ
ラムデバッギングの場合、ユーザは記号を分析する。実
験と、人工的“平均的”実験との間の統計的“距離”を
有している各記号は、慣用のテスティング/デバッギン
グを用いて作成することのできない情報である。
CCPSは、複数領域並列シミュレーション(MDCS)に基
づいている。これは、並列シミュレーション(CS)を発
生させるものである。MDCSによって、種々の実験を対話
させることができる。すなわち、入力変数による基本
(primary)実験すなわちP実験は、他のP実験と対話
し、対話(interaction)実験すなわちI実験を発生さ
せる。また、MCDSは、“スタンドイン(standin)”実
験を介して、効率を発生させる。P実験は、実験ソース
において、1対多方式で行われる。ここで、多くの局所
的に同一なP実験は、実験ソースにおいて、1対多方式
で行われる。
CSPPを、類似の高価な置換方法によって説明できる。
この方法は、プログラムの入力変数を規定する工程と、
変数毎の値の小セットを規定する工程と、これらの値の
すべての直交結合のプログラムを実行する工程とから成
っている。例えば、プログラムは、6個の直交入力変数
を有し、変数毎に3個の値が規定される。これは、729
個のプログラムバージョン、すなわち、36入力結合のプ
ログラムテストを構成する。本質的に、この方法は非実
用的である。その理由は、多数の実行不能なプログラム
バージョンが実行されることとなるからである。CSPP
は、この方法の目的を達成し、この不都合を解消するも
のである。
上記プログラムにおいては、6個の直交領域を有する
CSPPシミュレーションが好適である。変数毎のこれらの
値は、ユーザによって規定され、1個の基準値を有して
いる。このシミュレーションは、レファレンスプログラ
ム、すなわちRプログラムの実行で開始する。このRプ
ログラムは実行の際入力変数と“出会い(encounte
r)”、この結果、Rプログラムとは別のPプログラム
が起動する。これらは、順次付加的な入力変数と出会
い、これらの出会いによる対話実験、すなわちI実験が
作成される。例えば、プログラムがそのエントリポイン
ト付近にバグを有している場合、プログラムの実行は入
力変数と出会わず、ただ1個の不正確なプログラムバー
ジョン又はパスが確立される。より一般的な例では、入
力変数と出会い、出会い毎に特定の値の約半数が別個の
I実験を発生させる。このため、ある1個のプログラム
が潜在的に多くの別個のプログラムパス及び出力結果を
有していても、これら多数の一部分のみが発生する。種
々の値の定義は、入力変数に限られるものではなく、デ
バッギングの場合に、内部変数として少数の異なる値を
(R実験から)“引き出す(force)”するのに有効で
ある。
構成された技術をコンピュータプログラムのテスト及
びデバッグに使用する場合、以下の処理工程: ・プログラムを設計する工程 ・プログラムを作成するすべてのモジュールの複雑性を
計算する工程 ・モジュール毎のテスト基礎パスを得る工程 ・テストパスのデータを得る工程 が発生する。
複雑性の測定は、モジュールのテスト能力特性を定め
るとともに、モジュールを介する独立テストパス数を定
める。モジュールの複雑性を認識し、ユーザは、テスト
されるのに必要なパス数を減少させることができる。図
1aは、プログラムのテストパスを得るための一例を示す
図である。図1aの参照番号を有しているボックスは、図
1bの疑似モードの対応する個々のラインに関連してい
る。更に詳しく述べると、図1aのボックス1は図1bのラ
イン1に対応し、図1aのボックス2は図1bのライン2に
対応し、図1aのボックス3は図1bのライン3に対応し、
図1aのボックス4は図1bのライン4に対応し、図1aのボ
ックス5は図1bのライン5に対応し、図1aのボックス6
は図1bのライン6に対応し、図1aのボックス7は図1bの
ライン7に対応する。構成からすべての起こり得るパス
を列挙することによって図1bのコードに対するテストパ
スが得られる場合、テストパスは: ・1−2−3−5−6−7 ・1−2−3−5−7 ・1−2−4−5−6−7 ・1−2−4−5−7 となる。コードの実際のインストラクションを考慮する
と、可能なパスは; ・1−2−3−5−6−7 ・1−2−4−5−7 となることに注意する。
この例示の目的は、テスティングプログラムが多くの
手作業を必要とすることを証明することにある。得られ
たテストパスは正確でなければならないが、ユーザが、
実行可能なパスを手作業で区別するとともに、コンピュ
ータの中央処理装置(CPU)時間によりテストケースの
数を最小にするようにしなければならない。プログラム
の大きさ及び複雑性が増大するに連れて、テストパスを
得るのにかかる時間が増加する。この結果、多数のテス
トケースがセットアップされ、実行される。
ここに記載されている作業では、図2のテーブルにま
とめられている相当量の用語を使用している。
図3は、プログラムを保持、実行するコンピュータの
主要部分を示す概念図である。PC14は、プログラムカウ
ンタである。MAR16は、メモリアドレスレジスタであ
る。更に、図3は、(プログラム及びデータを保持す
る)メモリ10と、プログラムインストラクションを実行
するネットワーク12との間の接続を示している。ネット
ワーク12は、作業を実行する中央処理装置(CPU)であ
る。実際に、PC14及びMAR16は、メモリ10の1つのロケ
ーションを示している1つの値のみを有することができ
る。プログラムカウンタ(PC)14及びメモリアドレスレ
ジスタ(MAR)16は、プログラムフローに含まれる重要
なノードであり、したがって01(18)及び02(20)は、
典型的なシミュレーションにおいて使用される重要な監
視ポイントである。同様に、メモリ10とネットワーク12
との間のデータ接続(監視ポイント03(22)及び04(2
4))が重要である。監視される基本プログラムは、レ
ファレンスプログラム(Rプログラム)である。レファ
レンス実験の実行により、レファレンスインストラクシ
ョン(Rインストラクション)を実行する。図3は、実
験オリジンとしてメモリ10に通常導入される、又は誤り
オリジンとしてネットワーク12に通常導入されるC(並
行実験)も示している。最初、これらの潜在する(メモ
リ10内でC1−1t、C2−1t等とラベル付けされた)C(並
行実験)のレファレンス実験に対する相違は小さい。
図4は、シミュレートされたPC34及びMAR36を含んで
いることを除き、図3と同様である。(並列)シミュレ
ーションの間、PC34及びMAR36は、メモリ30内の(異な
る実験における)異なるロケーションを差し示している
多くの値を有することができる。更に詳しく述べると、
図4は、Rプログラムが潜在的C(並行実験)を実行す
る際、C(並行実験)効果を発生させ、ネットワーク32
内のそれぞれC5−ca,C3−fa,及びC4−stとラベル付けさ
れた“キャプティブ(captive(束縛的))”、“フェ
アー(fair(公正的))”及び“ストロング(strong
(強力な))"C(並行実験)に発展する。これらの特性
は、C(並行実験)の監視可能性を記述するものであ
り、C(並行実験)記号の一部として有効である。C
(並行)実験は、C(並行実験)効果を発生させるに連
れて増加的に監視可能となる。C(並行)実験は、(ネ
ットワーク内の監視ポイントで)ネットワーク34で束縛
的に監視可能であり、データパス03(44)及び04(46)
にわたってC(並行実験)効果として公正に監視可能で
あり、01(48)及び02(50)制御パスにわたってC(並
行実験)効果として強力に監視可能である。図4におい
て、PC34及びMAR36は、ストロングC(並行実験)、C2
−st及びC4−stによるC(並行実験)効果を有し、C
(並行実験)プログラムC2及びC4は、Rプログラムとと
もに並列的にランする。ストロングC(並行実験)は、
常にC(並行実験)−インストラクション及びC(並行
実験)−プログラムを実行する。
Rプログラムは、R実験と、すべての潜在的、キャプ
ティブ及びフェアーC(並行実験)によって実行され
る。一般的にこれらのC(並行実験)は、01(48)〜04
(46)のポイントで監視不能であるが、フェアー(デー
タ・オンリー)C(並行実験)は、監視可能となる。例
えば、Rプログラムが図4の04(46)にわたって移動す
る際、監視不能な(暗示)データは、潜在的及びキャプ
ティブC(並行実験)に沿って移動するが、フェアーC
(並行実験)C3−faの監視可能な(明示)データアイテ
ムも移動する。このC(並行実験)効果はID番号C3を伝
達し、PC34及びMAR36に影響を与えることなく、実験C
#は、04(46)において簡単に監視監視可能となる。こ
のことは、C3がメモリ30内で監視可能となること、すな
わち、C(並行実験)効果がメモリロケーションに記憶
されることも示している。
ここで考え出された基本的な設計検査ストラテジー
は、小さなサブプログラムから成る連結プログラムの実
行及び監視である。図5において、開始から終了まで完
全にランする連結プログラムP60では、設計エラーの存
在しない確立が極めて高く、この確立はサブプログラム
数が増加するとともに増加する。各サブプログラム毎
に、多数の関連ケースが並列的に実行される。図5で
は、サブプログラムP1(62)、P2(64)、及びP3(66)
が、シーケンシャルに実行されるように配置された8
個、100個、及び13個のケースを有している。Rは、ケ
ースC1−0(68)、C2−0(70)、及びC3−0(72)を
処理する。他のすべてのケースは、C(並行実験)を用
いて処理される。各サブプログラムはレース(race)と
類似しており、各サブプログラムはレーサー(racer)
と類似している。レースは、フェアー又はストロングで
ある。フェアーレースでは、唯一つのプログラム、すな
わちRプログラムが実行される。Rプログラムは多くの
関連ケースから成っているが、これらは、制御ではなく
データにおいてのみ互いに相違している。ストロングレ
ースの間、Cプログラムは、Rプログラムに対してラン
する。Cプログラムは、レースの開始時、又はその後ス
トロングレースに起因して起動する。通常レースは、R
がサブプログラムの終了に到達する際にまでわたってい
る。この時、ケース間の相違及び類似性が監視される。
一般的にこの時、このレースに付随するC実験が除去さ
れる。このため、Rが次のインストラクションを実行
し、次のレースを初期化する。
タイ(tie)レースを配置することによって、すなわ
ちレースの最終的な結果を、ケースを正しくランさせた
場合と同等とすることによって、レースの監視を最適化
することができる。このことは、フェアー及びストロン
グレースの場合に、直接又は非直接方式で行われる。例
えば、タイレース99+1=98+2=97+3=100を配置
することは、直接的である。しかし、付加1+1=2及
び100+100が証明されなければならない場合、タイを作
成するのに、ある程度の非直接性が必要となる。これ
は、特別な付加、すなわち1+1+200=100+100+2
=202の補助を用いて行われる。全体的に、無関係なケ
ースが無理にタイにされる。例えば、2つのケースの予
測される結果が、数字7777及び記号ABCである場合、ケ
ース毎に少数のインストラクションを用いてタイを配置
することができる。すなわち、実際の個々の結果を、予
め記憶されたもう一方の結果と比較する。これらが一致
する場合には、共通の疑似結果が両ケースの同一の場所
に記憶され、このようにしてタイを作成する。上記の
m、エカニズムによって処理される設計検査実験は、以
下の通りである。
1.例えば、A+B=C、E+G=F等のデータの異なる
セットを用いての算術演算 2.単一メモリワードM1から多数のレジスタへ情報伝送
し、その後、メモリワードM2へ情報伝送する。これは、
すべての正しい結果が当然に同一となる場合、別のタイ
レースとなる。
3.互いに反対の関連インストラクションを実行する。例
えば、図5のケースC3−0(72)〜C3−2(74)が、証
明されるべき主要なアイテムとしてADD(加算)インス
トラクションを有している場合、ケースC3−3〜C3−12
(76)においては、SUBTRACTで置き換えることができ
る。
4.関連又は非関連インストラクションを並列的に実行す
る。これは、レース原理の直接的な適用であり、ストロ
ングレースである。これによって、任意の数のインスト
ラクションの正確性及びタイミングを並列的に比較する
ことができる。
5.2個以上のケースを配置し、判定インストラクション
の2個以上のブランチを並行して実行する。これは、適
切な監視を行うことで、出発点及び正確なタイミングを
明らかにする。図5において、サブプログラムP1(6
2)、P2(64)及びP3(66)は、順次にシミュレートさ
れる。時には、これを再構成できるとともに、これらの
プログラムを並列にシミュレート可能であり、図5に示
されているような、かなり“ショート(short)”で
“ワイド(wide)”なシミュレーションを作り出すこと
ができる。このことは、シミュレートされるクロック周
期を短くすることができるため有効である。クロック
は、しばしば、シミュレーションアクティビティの最大
シェア(大規模ネットワークの場合、時には90%)を呈
し、このため、CPUシミュレーションタイムもこれに比
例したシェアを消費する。CからC/20へクロック周期を
低減させることは、CPUタイムを1/20に低減させること
にはならないが、1/20に近づく場合がある。この再配置
は疑似タイを必要とし、すべての正確なケースが同一の
結果を有するように配置する。ケースは、その結果が達
成されると、そのシミュレーションを中止する。ここで
監視が影響されることに留意する。図5のサブプログラ
ムP2(64)は、Rプログラムのみが実行される場合、フ
ェアーレースとなりうる。図6の同一のサブプログラム
P2(80)はストロングレースとなり、すべてのケース
が、図5のレファレンスプログラムR=C1−0(68)と
は別個のストロングプログラムを実行する。この方法
は、特定の設計問題を解析するのに、変化の少ないまま
でシミュレーションが反復される際にも有効である。こ
のことは、クリティカルサブプログラムを除くすべての
プログラムの抑制を容易にし、じばしばCPUタイムを節
約することができる。図6は、図5のサブプログラムを
並行して配置した場合を示す図であり、121個の実験す
べてが並行してランする。
ここに記載されている本発明に関する記述を種々の応
用例に適用する際、変更、追加を行い得ること当業者に
とって明らかであることに留意すべきである。。従っ
て、本発明は、ここに記載された実施例に限定されるも
のではなく、むしろ以下の請求の範囲に従って解釈され
るべきである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ガスティン マイケル エム アメリカ合衆国マサチューセッツ州 01887 ウィルミントン フェデラル ストリート 155

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】複数領域並行シミュレーションを利用し、
    コンピュータプログラムをテストし、デバッグする方法
    であって、 当該方法が: a.各コンピュータプログラム内に、1セットのプログラ
    ムパスを自動的に確立する工程と; b.各プログラムパスのシミュレーションから記号を発生
    させる工程と; c.各コンピュータプログラムパスから発生した各記号と
    該コンピュータプログラムパスに対する幾つかの予想さ
    れる実験結果の相当する1つと比較し、所定数のコンピ
    ュータプログラム設計エラーの不在、存在及びロケーシ
    ョンを決定する工程と; d.最適化のために、2個以上のコンピュータプログラム
    を比較する工程と; を具えていることを特徴とするコンピュータプログラム
    のテスト及びデバッグする方法。
  2. 【請求項2】ディジタルコンピュータにおいて複数領域
    並行シミュレーションを利用し、コンピュータプログラ
    ムをテストし、デバッグする方法であって、 当該方法が: a.一連のコンピュータプログラムパスを具えるコンピュ
    ーラプログラムに対する1セットの入力変数を規定する
    工程と; b.該入力変数の各々に対する1セットの値を規定する工
    程と; c.各入力変数に割り当てられた第1の値としての基準値
    を識別する工程と; d.該入力変数の各々の基準値を用いて、コンピュータの
    各コンピュータプログラムパスのシミュレーションの実
    行として、第1のコンピュータプログラムを開始させ、
    各シミュレーションの実行を相当する第1の基準記号に
    割り当てる工程と; e.前記セットの入力変数の各々の1つに対するセットの
    値の後続値を用いて、コンピュータプログラムパスの各
    々をシミュレーションし、各コンピュータプログラムパ
    スの基準記号とセットの値の後続値との差に相当する主
    要な実験の第1群を規定し、固有の記号を具える主要な
    実験の各々を割り当てる工程と; f.セットの入力変数の各々に対するセットの値の次の後
    続値を用いて、コンピュータプログラムパスの各々をシ
    ミュレーションし、セットの値の次の後続値を用いて、
    各コンピュータプログラムパスの基準記号の差に相当す
    る主要な実験の第2群を規定し、固有の記号を具える主
    要な実験の第2群の各々を割り当てる工程と; g.基準の実験の記号と主要な実験の第1群及び第2群の
    記号との間の記号上の差に相当する複数の差記号を形成
    する工程と; h.各コンピュータプログラムパスから発生した記号の差
    の群と相当する基準記号とを比較し、所定数のコンピュ
    ータプログラム設計エラーの不存在、存在及びロケーシ
    ョンを決定する工程と; を具えていることを特徴とするコンピュータプログラム
    をテストし、デバッグする方法。
JP4507252A 1991-02-01 1992-02-03 コンピュータプログラムをテストし、デバッグする方法 Expired - Lifetime JP2672711B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US64939991A 1991-02-01 1991-02-01
US649,399 1991-02-01

Publications (2)

Publication Number Publication Date
JPH05505271A JPH05505271A (ja) 1993-08-05
JP2672711B2 true JP2672711B2 (ja) 1997-11-05

Family

ID=24604614

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4507252A Expired - Lifetime JP2672711B2 (ja) 1991-02-01 1992-02-03 コンピュータプログラムをテストし、デバッグする方法

Country Status (5)

Country Link
US (1) US5291497A (ja)
EP (1) EP0523232B1 (ja)
JP (1) JP2672711B2 (ja)
DE (1) DE69218682T2 (ja)
WO (1) WO1992014202A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2082066C (en) 1991-03-07 1998-04-21 James A. Wooldridge Software debugging system and method especially adapted for code debugging within a multi-architecture environment
US5699507A (en) * 1995-01-17 1997-12-16 Lucent Technologies Inc. Method of identifying similarities in code segments
US5872909A (en) * 1995-01-24 1999-02-16 Wind River Systems, Inc. Logic analyzer for software
US5964893A (en) * 1995-08-30 1999-10-12 Motorola, Inc. Data processing system for performing a trace function and method therefor
US5704034A (en) * 1995-08-30 1997-12-30 Motorola, Inc. Method and circuit for initializing a data processing system
US5737516A (en) * 1995-08-30 1998-04-07 Motorola, Inc. Data processing system for performing a debug function and method therefor
JP3846939B2 (ja) * 1995-08-30 2006-11-15 フリースケール セミコンダクター インコーポレイテッド データプロセッサ
US6275976B1 (en) * 1996-03-15 2001-08-14 Joseph M. Scandura Automated method for building and maintaining software including methods for verifying that systems are internally consistent and correct relative to their specifications
US5781454A (en) * 1996-03-25 1998-07-14 Raytheon Company Process modeling technique
US5903475A (en) * 1996-07-18 1999-05-11 Lsi Logic Corporation System simulation for testing integrated circuit models
US5966537A (en) * 1997-05-28 1999-10-12 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing an executable computer program using input data
TW508490B (en) * 1999-08-27 2002-11-01 Via Tech Inc PCI debugging device and method and chipset and system using the same
WO2001069391A2 (en) * 2000-03-14 2001-09-20 Arc Cores, Inc. Difference engine method and apparatus
CA2408457A1 (en) * 2002-10-17 2004-04-17 Ibm Canada Limited-Ibm Canada Limitee Collection and detection of differences of values of expressions/variables when debugging a computer process
US7028494B2 (en) * 2003-08-22 2006-04-18 Carrier Corporation Defrosting methodology for heat pump water heating system
DE102005009955A1 (de) * 2005-03-04 2006-09-07 Bayerische Motoren Werke Ag Verfahren und Vorrichtung zum Überwachen eines Ablaufs einer Rechenvorrichtung
US7793267B2 (en) * 2006-10-13 2010-09-07 International Business Machines Corporation Computer software test coverage analysis
US8918881B2 (en) 2012-02-24 2014-12-23 Appthority, Inc. Off-device anti-malware protection for mobile devices
US8713684B2 (en) 2012-02-24 2014-04-29 Appthority, Inc. Quantifying the risks of applications for mobile devices
US8819772B2 (en) 2012-06-25 2014-08-26 Appthority, Inc. In-line filtering of insecure or unwanted mobile device software components or communications
US9189215B1 (en) * 2014-08-26 2015-11-17 National Instruments Corporation Convergence analysis of program variables

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
UST939010I4 (en) * 1974-03-25 1975-10-07 Program test method
GB1413938A (en) * 1974-03-30 1975-11-12 Ibm Methods of testing computer programmes
US4729096A (en) * 1984-10-24 1988-03-01 International Business Machines Corporation Method and apparatus for generating a translator program for a compiler/interpreter and for testing the resulting translator program
US4745355A (en) * 1985-06-24 1988-05-17 International Business Machines Corporation Weighted random pattern testing apparatus and method
US4687988A (en) * 1985-06-24 1987-08-18 International Business Machines Corporation Weighted random pattern testing apparatus and method
US4769817A (en) * 1986-01-31 1988-09-06 Zycad Corporation Concurrent fault simulation for logic designs
US4993027A (en) * 1988-09-09 1991-02-12 Pace, Incorporated Method and apparatus for determining microprocessor kernal faults
US5095483A (en) * 1989-04-28 1992-03-10 International Business Machines Corporation Signature analysis in physical modeling
JP4336092B2 (ja) * 2002-10-21 2009-09-30 西部電機株式会社 磨きユニット付きnc加工機

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING=S50 *

Also Published As

Publication number Publication date
EP0523232A1 (en) 1993-01-20
EP0523232B1 (en) 1997-04-02
WO1992014202A1 (en) 1992-08-20
DE69218682D1 (de) 1997-05-07
JPH05505271A (ja) 1993-08-05
DE69218682T2 (de) 1997-09-18
US5291497A (en) 1994-03-01

Similar Documents

Publication Publication Date Title
JP2672711B2 (ja) コンピュータプログラムをテストし、デバッグする方法
Shen et al. Automating performance bottleneck detection using search-based application profiling
US7181376B2 (en) Apparatus and method for coverage directed test
US6993736B2 (en) Pending bug monitors for efficient processor development and debug
Alur et al. Theory in practice for system design and verification
Sen et al. Coverage metrics for verification of concurrent SystemC designs using mutation testing
Abdulla et al. The best of both worlds: Trading efficiency and optimality in fence insertion for TSO
Marsso et al. TESTOR: a modular tool for on-the-fly conformance test case generation
El Mandouh et al. Application of machine learning techniques in post-silicon debugging and bug localization
Smetsers et al. Complementing model learning with mutation-based fuzzing
Iman et al. The e hardware verification language
Yang et al. EdSynth: Synthesizing API sequences with conditionals and loops
Jimenez et al. Quiho: Automated performance regression testing using inferred resource utilization profiles
Bombieri et al. Functional qualification of TLM verification
Shacham et al. Verification of chip multiprocessor memory systems using a relaxed scoreboard
Bombieri et al. Testbench qualification of SystemC TLM protocols through mutation analysis
Kusano et al. Dynamic generation of likely invariants for multithreaded programs
Cassez et al. Wuppaal: Computation of worst-case execution-time for binary programs with uppaal
Gu et al. Specification-driven conformance checking for virtual/silicon devices using mutation testing
Sen Mutation operators for concurrent SystemC designs
Hillston Performance Modelling—Lecture 16: Model Validation and Verification
Wu et al. Mantra: Mutation Testing of Hardware Design Code Based on Real Bugs
Xiao et al. An ISA-level accurate fault simulator for system-level fault analysis
Guijt et al. Checking Model Learning Hypotheses with Symbolic Execution
CN114153750B (zh) 代码检查方法及装置、代码编写方法、电子设备