JP2000207248A - 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体 - Google Patents

並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体

Info

Publication number
JP2000207248A
JP2000207248A JP11008325A JP832599A JP2000207248A JP 2000207248 A JP2000207248 A JP 2000207248A JP 11008325 A JP11008325 A JP 11008325A JP 832599 A JP832599 A JP 832599A JP 2000207248 A JP2000207248 A JP 2000207248A
Authority
JP
Japan
Prior art keywords
parallel
behavior
statement
program
parallel operation
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.)
Pending
Application number
JP11008325A
Other languages
English (en)
Inventor
Hideji Kawada
秀司 川田
Naoshi Uchihira
直志 内平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP11008325A priority Critical patent/JP2000207248A/ja
Publication of JP2000207248A publication Critical patent/JP2000207248A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 正確な依存関係を得ながら不必要なシナリオ
を生成しないように効率よく枝刈りを行う。 【解決手段】 プログラム実行部1は、各スレッドをス
テートメントごとに実行することによって、ありうる実
行経路の各時点について、共有変数のアクセスを表す第
1の情報と、次にどの並列動作単位が動作可能かを表す
第2の情報と、を作成する。依存性解析部2は、第1の
情報に基づいて、各スレッドの各ステートメントの間の
依存関係を解析する。実行経路記録部3は、実行経路の
各時点について、分岐の可能性と、解析された依存関係
とを、木構造の形式でデータベース4に記録する。パス
実行判定部5は、各時点において、それまでに得られた
依存関係と第2の情報に基づいて、まだ実行していない
経路の部分について実行すべきかどうかを判定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は情報処理装置のソフ
トウェアを作成する技術の改良に関するもので、より具
体的には、並行プログラムの挙動の解析や、テストの際
に利用される実行シナリオを効率よく生成するようにし
たものである。
【0002】
【従来の技術】並列プログラムは、複数の実行主体(並
列動作単位とも呼ぶ)が互いに協力しながら同時並行的
に動作するプログラムであり、実行主体とは、並列プロ
グラムを構成する個々のスレッドやプロセスなどの単位
である。また、並列プログラムとしては、具体的にはマ
ルチスレッド、マルチプロセスと呼ばれるものや、複数
のコンピュータ上で複数のプログラムが通信を行ないな
がら実行を進めるものなどが知られている。
【0003】このような並行プログラムでは、プログラ
ムのステートメントの実行順序が実行毎に異なる可能
性、つまり、それぞれの実行主体の間で、どの実行主体
のどの部分が先に実行されるかが実行ごとに異なる可能
性がある。このように、実行ごとに実行順序が異なる可
能性があるという性質を非決定性と呼び、どのプロセス
のどの部分が、どのような順序で実行されるかのパター
ンをシナリオと呼ぶ。
【0004】このような並列プログラムのテストでは、
可能性のある全てのシナリオでエラーなどの問題が起き
ないことを確認する必要があるが、その非決定的な動作
のため、ありうる実行シナリオの数は通常は非常に膨大
となり、これを全てチェックすることは困難である。そ
して、並列プログラムのテストは、この膨大な数の実行
シナリオを前提としてテストシナリオを考えなければな
らず、その作業は非常に負担の大きいものとなってい
る。
【0005】なお、シナリオは、複数まとめることで、
木構造のデータであるシナリオ木で表すことが考えられ
る。この場合、シナリオ木を構成する個々のノードが、
次にどの実行主体のどの部分を実行するかに応じた分岐
を表し、このように分岐する枝をいくつか通ってルート
から末端に到達する個々の経路(パス)が、それぞれ1
つずつのシナリオを表す。
【0006】そして、プログラム一般についてテストを
支援する技術の例としては、プログラムの仕様書などに
基づいてテストケースごとのスクリプトファイルやテス
トデータを生成する技術(特開平6−110733)、
製品の動作仕様を表した状態遷移図を探索してテストケ
ースを自動生成する技術(特開平7−253905)、
状態遷移表を使ってテストシーケンスを作成する技術
(特開平10−3405)などが知られている。
【0007】また、例えば、特開平9−288200
は、このような負担を軽減するために提案された技術で
あり、具体的には、シナリオを網羅的に生成し、生成し
た複数のシナリオのなかから、テストや解析のために必
要なものを選びだすものである。しかし、この従来技術
でも、最初にシナリオを網羅的に生成するため、生成さ
れるシナリオの数は膨大となり、実際に適応できる問
題、すなわち並列プログラムについては複雑さや構造な
どが限定されるという問題があった。
【0008】また、Godefroid, P らは、参考文献:Go
defroid, P. and Wolper, P. : Using Partial Orders
for the Efficient Verification of Deadlock Freedo
m and Safety Properties, Proc. CAV′91, LNCS Vol.5
75, Springer-Verlag (1991), (also Formal methods i
n System Design, Vol.2, Kluwer Academic Publishers
(1993)). に記載されているように、実行主体の部分
同士の間の依存関係を解析し、テストなどのためにシナ
リオを生成する際、不必要なものを生成しない技術を提
案している。ここで、依存関係とは、複数の実行主体の
各部分の間で、実行の前後が異なることで異なった実行
結果が出る関係である。
【0009】
【発明が解決しようとする課題】しかし、この従来技術
も、静的な解析であるため、C、C++、Javaなど
参照型の変数、ポインタや関数呼び出しなどが多用され
る言語では、解析しづらい依存関係が多く、またデバッ
ガなどを動作させる関係もあり、シナリオ生成の効率が
悪いという問題があった。
【0010】本発明は、上記のような従来技術の問題点
を解決するために提案されたもので、その目的は、並列
プログラムのシナリオ作成において、深さ優先探索でシ
ナリオを生成しながら依存関係を取得し、この依存関係
に基づいて次に作るシナリオの必要性を判定すること
で、正確な依存関係を得ながら不必要なシナリオを生成
しないように効率よく枝刈りを行うようにしたものであ
る。
【0011】
【課題を解決するための手段】上記の目的を達成するた
め、請求項1の発明は、並列プログラムのありうる挙動
を表すシナリオを生成する並列プログラムの挙動生成装
置において、前記並列プログラムに含まれる各並列動作
単位の各部分を実行することで、前記各部分間の依存関
係を得る手段と、得られた依存関係に基づいて、次のど
のような順序で前記各部分を実行するかを決める手段
と、を備えたことを特徴とする。請求項3の発明は、請
求項1の発明を方法という見方からとらえたもので、並
列プログラムのありうる挙動を表すシナリオを生成する
並列プログラムの挙動生成方法において、前記並列プロ
グラムに含まれる各並列動作単位の各部分を実行するこ
とで、前記各部分間の依存関係を得るステップと、得ら
れた依存関係に基づいて、次のどのような順序で前記各
部分を実行するかを決めるステップと、を含むことを特
徴とする。請求項2の発明は、並列プログラムに含まれ
る複数の並列動作単位について、ありうる挙動順序を表
すシナリオを生成する並列プログラムの挙動生成装置に
おいて、前記各並列動作単位の各部分を予め決められた
単位ごとに実行することによって、前記各部分について
ありうる実行経路の各時点について、各並列動作単位に
よって共有される変数がどの並列動作単位によっていつ
参照及び変更されているかを表す第1の情報と、次にど
の並列動作単位が動作可能かを表す第2の情報と、を作
成する手段と、前記各時点で、前記第1の情報に基づい
て、各並行動作単位の各部分の間にどのような依存関係
があるかを解析する手段と、前記実行経路の各時点につ
いて、分岐の可能性と、解析された依存関係とを木構造
の形式で記録する手段と、記録された各時点において、
それまでに得られた前記依存関係と前記第2の情報に基
づいて、まだ実行していない経路の部分について実行す
べきかどうかを判定する手段と、を備えたことを特徴と
する。請求項4の発明は、請求項2の発明を方法という
見方からとらえたもので、並列プログラムに含まれる複
数の並列動作単位について、ありうる挙動順序を表すシ
ナリオを生成する並列プログラムの挙動生成方法におい
て、前記各並列動作単位の各部分を予め決められた単位
ごとに実行することによって、前記各部分についてあり
うる実行経路の各時点について、各並列動作単位によっ
て共有される変数がどの並列動作単位によっていつ参照
及び変更されているかを表す第1の情報と、次にどの並
列動作単位が動作可能かを表す第2の情報と、を作成す
るステップと、前記各時点で、前記第1の情報に基づい
て、各並行動作単位の各部分の間にどのような依存関係
があるかを解析するステップと、前記実行経路の各時点
について、分岐の可能性と、解析された依存関係とを木
構造の形式で記録するステップと、記録された各時点に
おいて、それまでに得られた前記依存関係と前記第2の
情報に基づいて、まだ実行していない経路の部分につい
て実行すべきかどうかを判定するステップと、を含むこ
とを特徴とする。請求項5の発明は、請求項2,4の発
明を、コンピュータのソフトウェアを記録した記録媒体
という見方からとらえたもので、コンピュータを使っ
て、並列プログラムに含まれる複数の並列動作単位につ
いて、ありうる挙動順序を表すシナリオを生成する並列
プログラムの挙動生成用ソフトウェアを記録した記録媒
体において、そのソフトウェアは前記コンピュータに、
前記各並列動作単位の各部分を予め決められた単位ごと
に実行することによって、前記各部分についてありうる
実行経路の各時点について、各並列動作単位によって共
有される変数がどの並列動作単位によっていつ参照及び
変更されているかを表す第1の情報と、次にどの並列動
作単位が動作可能かを表す第2の情報と、を作成させ、
前記各時点で、前記第1の情報に基づいて、各並行動作
単位の各部分の間にどのような依存関係があるかを解析
させ、前記実行経路の各時点について、分岐の可能性
と、解析された依存関係とを木構造の形式で記録させ、
記録された各時点において、それまでに得られた前記依
存関係と前記第2の情報に基づいて、まだ実行していな
い経路の部分について実行すべきかどうかを判定させる
ことを特徴とする。本発明では、変数間の依存関係をあ
らかじめ解析してからシナリオを生成するのではなく、
ステップ単位の実行の際に依存関係を集める。そして、
この依存関係に基づいて枝刈りを行い、真に必要な枝を
生成することで、並列プログラムから、同じと見なされ
るシナリオを可能な限り1つだけ作り出す。このように
動的に依存関係を集めることで、より正確な依存関係に
基づいて効率よく枝刈りを行うことができ、テストや挙
動解析を効率化することが容易になる。
【0012】
【発明の実施の形態】以下、本発明の実施の形態(以下
「実施形態」という)について図面を参照しながら説明
する。なお、本発明は、周辺機器を持つコンピュータ
を、ソフトウェアで制御することによって実現されるこ
とが一般的と考えられる。この場合、そのソフトウェア
は、この明細書の記載にしたがった命令を組み合わせる
ことで作られ、上に述べた従来技術と共通の部分には従
来技術で説明した手法も使われる。また、そのソフトウ
ェアは、プログラムコードだけでなく、プログラムコー
ドの実行のときに使うために予め用意されたデータも含
む。
【0013】そして、そのソフトウェアは、CPU、コ
プロセッサ、各種チップセットといった処理装置、キー
ボードやマウスといった入力装置、メモリやハードディ
スク装置といった記憶装置、ディスプレイやプリンタと
いった出力装置などの物理的な資源を活用することで本
発明の作用効果を実現する。
【0014】但し、本発明を実現する具体的なソフトウ
ェアやハードウェアの構成はいろいろ変更することがで
きる。例えば、ソフトウェアの形式には、コンパイラ、
インタプリタ、アセンブラなどいろいろあり、外部との
情報をやり取りするにも、フロッピーディスクなどの着
脱可能な記録媒体、ネットワーク接続装置などいろいろ
考えられる。また、本発明を実現するソフトウェアやプ
ログラムを記録したCD−ROMのような記録媒体は、
単独でも本発明の一態様である。さらに、本発明の機能
の一部をLSIなどの物理的な電子回路で実現すること
も可能である。
【0015】以上のように、コンピュータを使って本発
明を実現する態様はいろいろ考えられるので、以下で
は、本発明や実施形態に含まれる個々の機能を実現する
仮想的回路ブロックを使って、本発明と実施形態とを説
明する。
【0016】すなわち、この実施形態は、並列プログラ
ムに含まれる複数の並列動作単位について、ありうる挙
動順序を表すシナリオを生成する並列プログラムの挙動
生成装置である。そして、本実施形態における並列動作
単位をスレッドと呼び、プログラム内でスレッドの生成
は可能とする。なお、実際の並列プログラムでは、個々
の並列動作単位のみがアクセスするローカル変数と、複
数の並列動作単位によって共有されるグローバル変数が
ありうるが、ここではモデルを簡単にするため、変数は
グローバル変数のみとする。
【0017】〔1.用語の定義〕まず、本実施形態につ
いては、以下のような用語の定義を前提として説明を行
うこととする。 〔1−1.スレッド〕並列プログラムの並列動作単位を
スレッドと呼ぶ。
【0018】〔1−2.環境〕プログラムが動作してい
るとき、プログラムの状態を環境と呼ぶ。この環境の内
容は、具体的には、 1.変数とその値 2.現在アクティブなスレッド 3.スレッドの優先順位 4.各スレッドの現在のアクティブポイント 5.動作不確定状態のスレッド によって定義される。
【0019】このうち動作不確定状態とは、スレッドが
sleep状態、入力待ち状態といった待ち状態にいる
場合を指し、プログラムと環境だけでは次に実行される
スレッドが決まらない状態にあることを示す。また、こ
のような動作不確定状態に関するsleep命令や、入
力を行う命令は、以下のような2つの命令からなると考
える。
【0020】(1)sleep状態、入力待ち状態にな
る命令 これらの命令は、現在のスレッドを動作不確定状態に変
化させるもので、前非決定命令と呼ぶ。
【0021】(2)sleep状態を抜ける、もしくは
入力待ち状態から入力を受けて通常状態に復帰する命令 これらの命令は、現在のスレッドを動作不確定状態から
通常の状態に戻すもので、非決定命令と呼ぶ。特に非決
定命令が入力を受けて通常状態に復帰する命令である場
合、入力非決定命令と呼ぶ。
【0022】なお、これら前非決定命令と非決定命令は
必ず連続するとする。例えば、今、二つのアクティブな
スレッドA、Bがあり、スレッドAの優先順位がスレッ
ドBより高いとする。この場合、スレッドAの次の命令
が入力のとき、次の状態としては、入力が行われAのア
クティブポイントが1つ進んだ状態と、入力待ちの間に
Bのアクティブポイントが1つ進んだ状態の2通り考え
られる。
【0023】〔1−3.サブステートメント〕プログラ
ムの最小の実行単位をサブステートメントと呼ぶ。サブ
ステートメントについては、Atomicityが保証
されるとする。
【0024】〔1−4.入力サブステートメント、入力
ステートメント、出力ステートメント〕入力非決定命令
で構成されるサブステートメントを入力サブステートメ
ントと呼ぶ。この入力サブステートメントは入力値が決
まらないとその動作が決定されない。また、入力サブス
テートメントη、Nをηの入力値となり得る値とすると
き、η[N]を入力ステートメントと呼ぶ。また、η
[N]をηの実現という。また、出力を行うステートメ
ントを出力ステートメントと呼ぶ。
【0025】〔1−5.ステートメント〕入力サブステ
ートメントを除くサブステートメント、および入力ステ
ートメントをステートメントと呼ぶ。
【0026】〔1−6.入出力集合〕また、プログラム
ρに現れうるすべての入力サブステートメント、出力ス
テートメンの命令の集合を、ρの入出力集合と呼ぶ。
【0027】〔1−7.実行可能〕スレッドTがある環
境Γで実行可能とは、スレッドTが環境Γでアクティブ
であり、その優先順位が、アクティブかつ動作不確定状
態でないスレッドの優先順位で一番高いものと同じが大
きい場合をいう。
【0028】〔1−8.実行可能〕環境Γで、サブステ
ートメントψが、実行可能なスレッドのアクティブポイ
ントになっているときサブステートメントψは環境Γで
実行可能であるという。このとき、 exec(Γ,ψ) と書く。
【0029】〔1−9.実行可能〕環境Γで、ステート
メントψが、実行可能なスレッドのアクティブポイント
になっているときステートメントψは実行可能という。
このとき、 exec(Γ,ψ) と書く。
【0030】〔1−10.実行〕ステートメントψがあ
る環境Γで実行可能であるとき、ψ(Γ)は環境であっ
て、ある環境Γでステートメントψを実行した後の環境
と定義する。
【0031】今、ステートメントの列ψ1 ,ψ2 ,…,
ψn に対し、 exec(Γ,ψ1 )∧ exec(ψ1 (Γ),ψ2 )∧ exec(ψ2 (ψ1 (Γ)),ψ 3)…∧ exec(ψn (ψ(n −1 )(…ψ1 (Γ)…))) であるとき、ψ1 ,ψ2 ,…,ψn は、環境Γで実行可
能、もしくは環境Γのシナリオという。このとき、 ψn (ψ(n −1 )(…ψ1 (Γ)…)))をψn ψ
(n −1 )….ψ1 (Γ)と表記する。
【0032】〔1−11.特殊ステートメント、準特殊
ステートメント〕また、環境Γで実行可能なサブステー
トメントをψとするとき、以下の条件のどれかを満たさ
ないとき、サブステートメントψは真特殊ステートメン
トであるという。 1.実行の結果、環境Γでアクティブなスレッドを変え
ない。 2.実行の結果、環境Γの各スレッドに対する優先順位
を変えない。 3.実行の結果、環境Γのアクティブポイントを変えな
い。
【0033】また、説明を簡単にするため、真特殊ステ
ートメントは変数の値を変えるものはないとする。
【0034】また、ステートメントψが、環境Γの動作
不確定状態を増やすステートメント、つまり前非決定命
令からなるとき、このようなステートメントψを前非決
定ステートメントと呼ぶ。また、ステートメントψが環
境Γの動作不確定状態を減らすステートメント、つま
り、非決定命令からなるとき、このようなステートメン
トψを非決定ステートメントと呼ぶ。また、これら前非
決定ステートメント、非決定ステートメントを準特殊ス
テートメントと呼ぶ。なお、前非決定ステートメントは
変数の値を変えない。
【0035】さらに、このような準特殊ステートメント
と上に説明した真特殊ステートメントを合わせて、特殊
ステートメントと呼ぶ。
【0036】〔1−12.パーシステント〕また、Γを
環境、ψ,φをΓで実行可能でかつ特殊ステートメント
でないステートメントとする。このとき、ステートメン
トψの参照変数とステートメントφの変更変数、及びス
テートメントφの参照変数とステートメントψの変更変
数のどちらにも共通なものがないとき、ステートメント
ψはステートメントφに対しパーシステントであるとい
う。
【0037】この場合、あきらかに、ψφ(Γ)=φψ
(Γ)が成り立つ。
【0038】〔1−13.パーシステント〕また、Γを
環境、ψをΓで実行可能でかつ特殊ステートメントでな
いステートメントとし、φ1 ,φ2 ,…,φn ,をΓで
実行可能なステートメント列とする。このとき、 ψφ1 φ2 …φn (Γ)=φ1 φ2 …φn ψ(Γ) ならば、ψはφ1 ,φ2 ,…,φn に対しパーシステン
トであるという。
【0039】〔1−14.環境同値〕また、Γを環境、
ψ1 ,ψ2 ,…,ψn ,φ1 ,φ2 ,…,φm を環境Γ
のシナリオとする。この場合、 ψ1 ψ2 …ψn (Γ)=φ1 φ2 …φm (Γ) であるとき、ψ1 ,ψ2 ,…,ψn とφ1 ,φ2 ,…,
φm は環境Γで同値であるという。
【0040】〔1−15.Ψ−観察同値〕また、プログ
ラムρのすべての入力サブステートメント、出力ステー
トメントの集合を入出力集合と呼ぶ。そしてこの入出力
集合の部分集合を要素とする集合Ψ={Ψ1 ,Ψ2 ,
…,Ψp }とし、Γを環境、ξ1 ,ξ2 をΓのシナリオ
とする。
【0041】この場合、すべての
【数1】 であるiに対し、ξ1 からΨi に含まれるステートメ
ントを順序を変えずに取り出した列と,ξ2 からΨi に
含まれるステートメントを順序を変えずに取り出した列
が一致するとき、ξ1 , ξ2 はΨ−同値という。また、
Ψが入出力集合のみからなる集合のとき、ξ1 , ξ2 は
Ψ−観察同値であるという。またΨを観察集合と呼ぶ。
【0042】〔1−16.Ψパーシステント〕また、Ψ
を観察集合、Γを環境、ψ,φをΓで実行可能なステー
トメントとするとき、一方のステートメントψは他方の
ステートメントφに対しパーシステントかつ∀s ∈Ψ¬
(ψ∈s∧φ∈s)ならば、ステートメントψはステー
トメントφに対しΨパーシステントであるという。
【0043】〔1−17.Ψパーシステント〕また、Ψ
を観察集合、Γを環境、ψ,φ1 ,φ2 ,…,φn をΓ
で実行可能なステートメントとする。このとき、ψはφ
1 φ2 …φn に対しパーシステントかつ ∀s ∈Ψ¬(ψ∈s∧φ1 ∈s∧φ2 ∈s∧…∧φn ∈
s) ならば、ステートメントψはφ1 φ2 …φn に対しΨパ
ーシステントであるという。
【0044】〔1−18.Ψ環境同値〕また、Ψを観察
集合、Γを環境、ξ1 ,ξ2 をΓのシナリオとすると
き、ξ1,ξ2 が環境同値でありかつ、Ψ−観察同値の
とき、ξ1 ,,ξ2 は環境ΓでΨ−環境同値であるとい
う。
【0045】なお、この実施形態は、並列プログラムの
試験を支援する装置であり、上記の用語を用いれば、以
下のような装置であると表現することができる。すなわ
ち、本実施形態は、Ψを観察集合とし、ある環境Γのす
べてのシナリオをΩとし、これを環境同値かつΨ観察同
値な集合に分けたとする場合、各集合の元となるシナリ
オをそれぞれ1つ以上求めるような装置であり、そのよ
うなシナリオはそれぞれ1つだけ求めるのがもっとも望
ましい。
【0046】〔2.本実施形態の基礎となる性質〕続い
て、上記の定義に基づいて、本発明及び本実施例のベー
ス(基礎)となる性質を以下に説明する。 〔2−1.性質1〕Ψを観察集合、Γを環境、ψをΓで
実行可能でかつ特殊ステートメントでないステートメン
ト、φ1 ,φ2 ,…,φn を環境Γで実行可能でステー
トメントψを含まないシナリオとし、シナリオφ1 φ2
…φn (Γ)でステートメントψは実行可能であるとす
る。今、φ1 ,φ2 ,…,φn の特殊ステートメントで
ない各ステートメントとステートメントψがΨ−パーシ
ステントであるならば、ψ,φ1 ,φ2 ,…,φn とφ
1 ,φ2 ,…,φn ,ψは、Ψ−環境同値である。
【0047】〔2−2.共通仮定〕次に、以下を、後述
する性質2、3、4の共通な仮定とする。すなわち、Ψ
を観察集合とし、ある環境ΓでスレッドT1 ,T2 ,
….,Tn ,Tが動作可能であるとし、 S={T1 ,T2 ,…,Tn } とおき、環境Γで実行可能なステートメントはスレッド
Tのステートメントを含め複数あるとし、スレッドTの
環境Γで実行可能なステートメントをψ1 、スレッドT
の環境Γ(ψ1 )で実行可能なステートメントをψ2 と
する。さらに、環境Γで実行可能なすべてのシナリオに
対し、そのシナリオを部分シナリオとするあるシナリオ
が存在し、そのシナリオにステートメントψ2 が含まれ
る。
【0048】〔2−3.性質2〕上記のような共通の過
程に基づいて、まず、性質2は、次のように表現でき
る。すなわち、ステートメントψ1 が特殊ステートメン
トでないとき、環境Γのステートメントψ1 で始まるす
べてのシナリオに含まれる特殊ステートメントでないス
テートメントで、かつ、ステッドTのステートメントで
ないものが、ステートメントψ1 とΨパーシステントな
らば、環境Γのステートメントψ1 を含まない任意のシ
ナリオに対し、これを部分シナリオとするシナリオが存
在し、ステートメントψで始まるあるシナリオに対し、
2つのシナリオはΨ−観察同値かつ環境同値である。
【0049】〔2−4.性質3〕同様に、性質3は次の
ように表現できる。すなわち、ステートメントψ1 が前
非決定ステートメント(ψ2 は非決定ステートメン
ト)、かつスレッドTがアクティブなスレッドのなかで
もっとも優先順位が低いとき、環境Γのステートメント
ψ1 で始まりステートメントψ2 で終わるすべてのシナ
リオに、ステートメントψ1 、ψ2 以外に特殊ステート
メントが含まれないならば、環境Γのステートメントψ
1 を含まない任意のシナリオに対し、これを部分シナリ
オとするシナリオが存在し、ステートメントψ1 で始ま
るあるシナリオに対し、2つのシナリオはΨ−観察同値
かつ環境同値である。
【0050】〔2−5.性質4〕同様に、性質4は次の
ように表現できる。すなわち、ステートメントψ1 が非
決定ステートメント、かつスレッドTがアクティブなス
レッドのなかでもっとも優先順位が低いとき、環境Γの
ステートメントψ1 で始まりステートメントψ2で終わ
るすべてのシナリオに、ステートメントψ1 、ψ2 以外
に特殊ステートメントが含まれないならば、環境Γのス
テートメントψ1 を含まない任意のシナリオに対し、こ
れを部分シナリオとするシナリオが存在し、ステートメ
ントψ1 で始まるあるシナリオに対し、2つのシナリオ
はΨ−観察同値かつ環境同値である。
【0051】〔2−6.性質5(スリープセット)〕ま
た、Ψを観察集合とし、ある環境Γで、スレッドT1 ,
T2 ,….,Tn ,Tが実行可能であるとし、各スレッ
ドの実行可能なステートメントをそれぞれψ1 ,ψ2 ,
…,ψn 、ψとする。ステートメントψは特殊ステート
メントではないとし、このステートメントψで始まる任
意のシナリオに最初に現れる、ステートメントψとΨパ
ーシステントでなく、かつ特殊ステートメントでないス
テートメントをすべて集めた集合を P=φ1 ,φ2 ,…,φt とする。
【0052】また、集合Pが空でないとき、環境Γで実
行可能なステートメントψで始まらない任意のシナリオ
に対し、あるψk ,ν1 ,ν2 ,…,νm ,φi ,…の
形をした環境Γで実行可能なシナリオ(
【数2】 ,ν1 ,ν2 ,…,νm はψを含まない)か、もしくは
あるステートメントψで始まるシナリオが存在し、これ
らのシナリオはΨ−観察同値かつ環境同値である。
【0053】〔2−7.性質6(スリープセット)〕Ψ
を観察集合とする。スレッドある環境Γで、スレッドT
1 ,T2 ,….,Tn ,Tが実行可能であるとし、各ス
レッドの実行可能なステートメントをそれぞれψ1 ,ψ
2 ,…,ψn 、ψとする。ψは準特殊ステートメントと
し、ψで始まる任意のシナリオに最初に現れる、特殊ス
テートメントをすべて集めた集合をP=φ1 ,φ2 ,
…,φt とする。
【0054】Pが空でないとき、Γで実行可能なψで始
まらない任意のシナリオに対し、あるψk,ν1 ,ν2
,…,νm ,φi ,…の形をしたΓで実行可能なシナ
リオ(
【数3】 ,ν1 ,ν2 ,…,νm はψを含まない)か、もしくは
あるψで始まるシナリオが存在し、これらのシナリオは
Ψ−観察同値かつ環境同値である。
【0055】〔3.構成〕次に、この実施形態の具体的
な構成を図1の機能ブロック図に示す。すなわち、この
実施形態では、CPU(C1)、メインメモリC2、補
助記憶装置C3、入力装置C4、出力装置C5などを備
えたコンピュータCが、ソフトウェアSを実行すること
によって、プログラム実行部1、依存性解析部2、実行
経路記録部3、データベース4及びパス実行判定部5が
実現される。
【0056】ここで、並列プログラムは複数のスレッド
を含み、個々のスレッドは予め決められた実行の単位で
あるステートメントによって構成されるものとし、どの
スレッドのどのステートメントがどのように実行される
かについて、ありうる順序の列を実行経路又はパスと呼
ぶ。また、各スレッドは所定の共有変数を参照及び変更
できるものとする。
【0057】すなわち、プログラム実行部1は、各スレ
ッドをステートメントごとに実行することによって、あ
りうる実行経路の各時点について、どの共有変数がどの
スレッドによっていつ参照及び変更(アクセス)されて
いるかを表す第1の情報と、次にどの並列動作単位が動
作可能かを表す第2の情報と、を作成する手段である。
【0058】また、依存性解析部2は、前記各時点で、
共有変数のアクセスに関する第1の情報に基づいて、各
スレッドの各ステートメントの間にどのような依存関係
があるかを解析する手段である。そして、これらプログ
ラム実行部1及び依存性解析部2は、各スレッドの各部
分を実行することで、それら各部分間の依存関係を得る
手段を構成している。また、実行経路記録部3は、実行
経路の各時点について、分岐の可能性と、上記のように
解析された依存関係とを、木構造の形式でデータベース
4に記録する手段である。
【0059】また、パス実行判定部5は、このような依
存関係に基づいて、次のどのような順序でどのステート
メントを実行するかを決める手段であり、具体的には、
上記のように記録された各時点において、それまでに得
られた依存関係と第2の情報に基づいて、まだ実行して
いない経路の部分について実行すべきかどうかを判定す
る手段である。
【0060】〔4.作用〕上記のように構成された本実
施形態は、次のように作用する。すなわち、本実施形態
では、Ψを観察集合とし、すべてのスレッドの集合をT
Hとするとき、上記の各性質を利用して環境Γに基づい
てすべてのシナリオを求める。そして、本実施形態で
は、ありうるシナリオをシナリオ木で表すが、シナリオ
木のどの部分から先が実行不要かの判断を(枝刈り)、
それまでの実行で得た依存関係に基づいて動的に行う。
【0061】すなわち、シナリオ木では、次にどのスレ
ッドのどの部分(ステートメント)を実行するかについ
て選択肢が複数あるという分岐ごとにノードがあり、本
実施形態では、ステートメント(処理)間の依存性(依
存関係)を各スレッドを動作させながら取得し、シナリ
オ木では深さ優先で各パスを作成する。なお、パスは、
1つ以上のノードから構成され、シナリオ木の出発点と
なるノード(ルートと呼ぶ)から末端のノードまでの連
なりであり、1つのパスがある特定の実行順序を表す。
そして、本実施形態では、あるパスでのステートメント
の実行結果に基づいて、他のパスが枝刈り可能かを判定
する。
【0062】つまり、本実施形態において、シナリオ木
を作成する処理は、予め決められた基準で選ばれる初期
ノードから開始され、ノードを単位として行われる(図
2)。
【0063】ここで、ノードを単位とした処理の手順を
示すフローチャートを図3及び図4に示す。なお、図3
及び図4は、結合子1及び2を介して一体の手順を示す
ものである。また、図4に示すディペンデンシリストの
処理(ステップ412)及びスリープセットの処理(ス
テップ419)の具体的な内容をそれぞれ図5及び図6
に示す。
【0064】すなわち、まず、パス実行判定部5は各時
点で、データベース4に記録されているシナリオ木のう
ち現在処理しているノード(カレントノードと呼ぶ)か
ら(ステップ31)、プログラムの状態や次に動作可能
なスレッドの情報を順次取り出し(ステップ32,3
3)、プログラム実行部1は、スレッドに含まれるステ
ートメントごとの処理を(ステップ36)実行すること
で(ステップ310)プログラムの状態を更新してゆく
(ステップ41)。
【0065】同時に、プログラム実行部1は、処理の種
類に応じて共有変数のアクセスに関する情報すなわち第
1の情報や(ステップ46)、次にどの並列動作単位が
動作可能かを表す第2の情報と、を得る。
【0066】すなわち、あるスレッドが、実施形態の構
成で説明したsleep状態(スリープ状態)や入力待
ち状態になると、それぞれ所定の条件が満たされた場合
や所定の入力が行われるまでそのスレッドは実行できな
くなるので、このような事実はスリープセットと呼ぶ項
目に記録しておき(図4のステップ45〜48)、他の
処理によってそのスレッドが実行可能になったかどうか
を確認する(図3のステップ39、図4のステップ41
8,419)。
【0067】また、スレッドの各部分間で共有変数のア
クセスや(図5のステップ52,53)、そのような共
有変数に基づいた条件判断などにかかわるようなチェッ
ク処理など(図5のステップ55)が存在するときは、
依存性解析部2が、これら依存関係の基礎となるような
処理を所定のディペンデンシリストに記録してゆき(図
4のステップ411〜414)、それらに基づいて依存
関係を抽出する(図5のステップ55,56)。このよ
うな依存関係を持っている処理は、上に説明したスリー
プセットに加えられる(ステップ56)。
【0068】このように得られる情報は、実行経路記録
部3が実行経路の各時点で、木構造の形式でデータベー
ス4に記録することでシナリオ木を深さ優先で完成させ
てゆく。また、パス実行判定部5は、上記のように記録
された各時点において、それまでに得られた依存関係と
第2の情報に基づいて、まだ実行していない経路の部分
について実行すべきかどうかを判定する。
【0069】つまり、ある処理のスリープセットが空に
なっている場合は、その処理は他のスレッドの他の処理
との間で、どのような順序で実行しても結果に影響しな
い。このため、パス実行判定部5は、そのような処理を
プログラム実行部1に実行させないことで枝刈りを行う
(ステップ39)。なお、データの形式としては、例え
ば、 ノード={プログラム状態,ディペンデンシリスト,次
のノード番号の集合} アクセス={アクセス種別,スリープセット} といったものが考えられる。
【0070】以上のような処理は、例えば、次のような
プログラムによって実現することができる。 開始 (state) {/* state はプログラムの初期状態 */ スレッド Th=メインスレッド; スレッド構造体 ThStruct=スレッド構造体 (t) シナリオ木 Tree; Tree= メイン (state,ThList);/* シナリオ木 */ return(Tree); } メイン (state,ThList) { スレッド構造体 ThStruct; ステートメント Statement,Statement1,Statement2; スリープセット sleep; プログラムの状態 state2; シナリオ木 Tree,TreeRet=null; for(int i=0; i< 長さ (ThList);i++) { /* ThList に対応するパスを作る */ ThStruct= メンバ参照 (i,ThList); Statement=カレントステートメント (ThStruct); if( スリープセットの取りだし (Statement) != なし) { continue; } if( 実行可能でない (State,ThStruct)) { continue; } state2=実行 (state,statement); ThStruct2=コピー (ThStruct); Depend= ディペンデンシリストの取りだし (ThStruct2); if( 特殊ステートメント (Statement)) { 空にする (Depend); } else { writeSlot=書き込みスロット取りだし (state,Statement); readSlot= 読み込みスロット取りだし (state,Statement); ディペンデンシリストへの登録 (Depend,Statement,writeSlot,readSlot); } ThList2=i 番目を取り替えたものを作る (ThList,ThStruct2,i); ThList2=優先順位順に並び替える (state2,ThList2); Tree= メイン (state2,ThList2);/* 再帰呼び出し */ Tree= 直列結合 (Statement,Tree); TreeRet=並列結合 (TreeRet,Tree); for(int j=0; j< 長さ (ThList); j++) { if(j==i) continue; ThStruct2= メンバ参照 (j,ThList); Statement2= カレントステートメント (ThStruct2); /* 各ステートメントのスリープセットのチェック */ if((sleep=スリープセットの取りだし (Statement2))) { if( 含む (sleep,statement)) { 消す (sleep,statement); } } /* 各ステートメントのディペンデンシのチェック */ Depend= ディペンデンシリストの取りだし (ThStruct2); if( ディペンドしている (writeSlot,Depend)) { Statement3= 関連ステートメント取りだし (Depend,writeSlot); sleep=スリープセットの取りだし (Statement3); スリープセットへ追加 (sleep,statement); } if( ディペンドしている (readSlot,Depend)) { Statement3= 関連ステートメント取りだし (Depend,readSlot) ; sleep=スリープセットの取りだし (Statement3); スリープセットへ追加 (sleep,statement); } } if( 特殊ステートメント (statement) || スリープセットの取りだし (Statement)!=なし) { continue; } break; } return(TreeRet); } 〔5.具体例〕次に、以上のような処理によって並列プ
ログラムの挙動を生成する例として、次のような具体的
なプログラムについて説明する。 〔5−1.どちらのスレッドもプライオリティ2の場
合〕まず、スレッドA,Bともに実行の時の優先度(プ
ライオリティ)が等しい場合について説明する。 〔5−1−1.動的枝刈りを使わない場合〕この場合、
上記プログラムに対して、本実施形態による上記のよう
な動的枝刈りを適用せず、従来技術を用いてシナリオ木
を作成すると、図7に示すようなシナリオが作られる。
すなわち、この場合の観察列は、 1: {A.get():2,A.put():4,B.get():5,B:put():9} 2: {A.get():2,B.get():5,A.put():4,B.put():9} 3: {A.get():2,A.put():5,B.get():5,B.put():10} 4: {A.get():2,B.get():5,A.put():5,B.put():10} 5: {B.get():5,A.get():2,A.put():5,B.put():10} 6: {B.get():5,A.get():2,A.put():5,B.put():6} 7: {B.get():5,B.put():6,A.get():2,A.put():5} であり、このうち、Ψ観察同値類は、{1,2},
{3,4,5},{6,7}となる。この例では、余分
なシナリオが多く生成されている。
【0071】〔5−1−2.動的枝刈りを利用する場
合〕一方、同じプログラムに、本実施形態による動的枝
刈りを適用した場合、図8に示すようなシナリオが作ら
れる。この例において、数字はノードの作られていく順
番を示し、それぞれ、次のような処理が対応するものと
する。 1.push P.b<={} 2.push in(B2){P.b<=} 3.{P.b<=,in(B2)} 4.pop P.b<={P.b<=,in(B2)} 5.{in(B2)} 6.clear 9.clear 13.clear 19.{in(B2),<=P.c} 20.pop <=P.c{in(B2),<=P.c} 21.* 22.* 23.* 24.{<=P.c} 25.delete 26.{<=P.c} 27.sleep pop * 27.{} 28.* 32.delete 33.sleep_pop 34.push P.b<={} 35.{P.b<=} 36.{P.b<=} 37.clear 38.{} 39.* 40.clear 41.{} 42.* 43.* 44.delete 45.delete すなわち、「{}」はディペンデンシリスト、「pus
h」はディペンデンシリストへの追加を(図4の*1
(ステップ413))、「clear」はディペンデン
シリストを空にすることを(図4の*2(ステップ42
〜43))、「pop」は依存性の発見を(図5の*3
(ステップ56))、「delete」は、図6の*5
(ステップ69)でスリープセットが空になって枝刈り
したことを、「sleep_pop」はこのように図6
の*5(ステップ69))でスリープセットが空にな
り、図3の*4(ステップ310)で、スリープセット
が空になったため実行可能になったことを意味する。
【0072】すなわち、観察列としては、上記動的枝刈
りを利用しない場合のうち、2,5,7が得られる。こ
のうち、Ψ観察同値類は{2},{5},{7}とな
る。本装置を利用しない場合に比べ、生成されるシナリ
オの数が少なくかつ、必要なシナリオが得られているの
がわかる。なお、図8では線で示した部分は、従来技術
による図7と比べて、本実施形態による枝刈りをしたた
め生成せずに済んだ枝の部分である。
【0073】〔5−2.Aのプライオリティが1、Bの
プライオリティが2の場合〕次に、スレッドA,Bのプ
ライオリティが異なる場合について説明する。 〔5−2−1.動的枝刈りを使わない場合〕この場合、
本実施形態による動的枝刈りを利用しないと、図9に示
すようなシナリオが作られる。すなわち、観察列は、
3,4,5,6,7であり、Ψ観察同値類は{3,4,
5}、{6,7}である。この例でも、余分なシナリオ
が多く生成されている。
【0074】〔5−2−2.動的枝刈りを利用する場
合〕一方、本実施形態による動的枝刈りを利用する場
合、図10に示すようなシナリオが作られる。この場
合、観察列は5,6で、Ψ観察同値類は、{5},
{6}となる。本装置を利用しない場合に比べ、生成さ
れるシナリオの数が少なくかつ、必要なシナリオが得ら
れているのがわかる。
【0075】〔5−3.具体例の効果〕上記のように、
この具体例に本実施形態を適用した場合、プライオリテ
ィが同じ場合で7/23,プライオリティが設定されて
いる場合で2/6と、従来技術と比べて少ないシナリオ
数で必要なものが得られている。特に、この具体例は、
通常の並列プログラムに比べ比較的依存関係や、特殊ス
テートメントを多く含んでいることから、通常はより大
きな効果を期待することができる。
【0076】また、上記の7/23,2/6といった数
値はプログラムの規模nに対し、乗数として効いてくる
ため規模の大きなものほど効率化の度合いは大きい。こ
のように、本実施形態を利用することで、通常の網羅テ
ストと同じ効果を、より少ないシナリオのチェックで得
ることができる。
【0077】〔6.効果〕以上のように、本実施形態で
は、変数間の依存関係をあらかじめ解析してからシナリ
オを生成するのではなく、ステップ単位の実行の際に依
存関係を集める。そして、この依存関係に基づいて枝刈
りを行い、真に必要な枝を生成することで、並列プログ
ラムから、同じと見なされるシナリオを可能な限り1つ
だけ作り出す。このように動的に依存関係を集めること
で、より正確な依存関係に基づいて効率よく枝刈りを行
うことができ、テストや挙動解析を効率化することが容
易になる。
【0078】〔7.他の実施形態〕なお、本発明は上記
各実施形態に限定されるものではなく、次に例示するよ
うな他の実施形態も包含するものである。例えば、並列
プログラムをいくつの並列動作単位で構成してもよく、
また、並列動作単位についてもスレッドには限定され
ず、プロセス、オブジェクトなど内容・形式や名称は自
由である。また、並列動作単位を実行する単位となる
「部分」についても、ステートメントの他、予め決めら
れた単位のブロックなど自由に定義しうる。また、シナ
リオの形式も木構造には限定されず、ありうる実行順序
を表せるものであれば自由に選択することができる。
【0079】
【発明の効果】以上説明したように、本発明によれば、
シナリオを生成する際、動的に依存関係を集めること
で、より正確な依存関係に基づいて効率よく枝刈りを行
うことができ、テストや挙動解析を効率化することが容
易になる。
【図面の簡単な説明】
【図1】本発明の実施形態の構成を示す機能ブロック
図。
【図2】本発明の実施形態において、初期ノードから始
めてシナリオ木を作る処理手順を示すフローチャート。
【図3】本発明の実施形態においてシナリオ木を作る具
体的な手順を示すフローチャート(前半)。
【図4】本発明の実施形態においてシナリオ木を作る具
体的な手順を示すフローチャート(後半)。
【図5】本発明の実施形態におけるディペンデンシリス
ト処理の手順を示すフローチャート。
【図6】本発明の実施形態におけるスリープセットの処
理の手順を示すフローチャート。
【図7】本発明の実施形態で説明する具体例において、
2つのスレッドのプライオリティが同じ場合に、従来技
術を適用することで作られるシナリオ木の一例を示す
図。
【図8】本発明の実施形態で説明する具体例において、
2つのスレッドのプライオリティが同じ場合に、実施形
態を適用することで作られるシナリオ木の一例を示す
図。
【図9】本発明の実施形態で説明する具体例において、
2つのスレッドのプライオリティが異なる場合に、従来
技術を適用することで作られるシナリオ木の一例を示す
図。
【図10】本発明の実施形態で説明する具体例におい
て、2つのスレッドのプライオリティが同じ場合に、実
施形態を適用することで作られるシナリオ木の一例を示
す図。
【符号の説明】
C…コンピュータ C1…CPU C2…メインメモリ C3…補助記憶装置 C4…入力装置 C5…出力装置 S…ソフトウェア 1…プログラム実行部 2…依存性解析部 3…実行経路記録部 4…データベース 5…パス実行判定部 S21以降…手順の各ステップ

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 並列プログラムのありうる挙動を表すシ
    ナリオを生成する並列プログラムの挙動生成装置におい
    て、 前記並列プログラムに含まれる各並列動作単位の各部分
    を実行することで、前記各部分間の依存関係を得る手段
    と、 得られた依存関係に基づいて、次のどのような順序で前
    記各部分を実行するかを決める手段と、 を備えたことを特徴とする並列プログラムの挙動生成装
    置。
  2. 【請求項2】 並列プログラムに含まれる複数の並列動
    作単位について、ありうる挙動順序を表すシナリオを生
    成する並列プログラムの挙動生成装置において、 前記各並列動作単位の各部分を予め決められた単位ごと
    に実行することによって、前記各部分についてありうる
    実行経路の各時点について、各並列動作単位によって共
    有される変数がどの並列動作単位によっていつ参照及び
    変更されているかを表す第1の情報と、次にどの並列動
    作単位が動作可能かを表す第2の情報と、を作成する手
    段と、 前記各時点で、前記第1の情報に基づいて、各並行動作
    単位の各部分の間にどのような依存関係があるかを解析
    する手段と、 前記実行経路の各時点について、分岐の可能性と、解析
    された依存関係とを木構造の形式で記録する手段と、 記録された各時点において、それまでに得られた前記依
    存関係と前記第2の情報に基づいて、まだ実行していな
    い経路の部分について実行すべきかどうかを判定する手
    段と、 を備えたことを特徴とする並列プログラムの挙動生成装
    置。
  3. 【請求項3】 並列プログラムのありうる挙動を表すシ
    ナリオを生成する並列プログラムの挙動生成方法におい
    て、 前記並列プログラムに含まれる各並列動作単位の各部分
    を実行することで、前記各部分間の依存関係を得るステ
    ップと、 得られた依存関係に基づいて、次のどのような順序で前
    記各部分を実行するかを決めるステップと、 を含むことを特徴とする並列プログラムの挙動生成方
    法。
  4. 【請求項4】 並列プログラムに含まれる複数の並列動
    作単位について、ありうる挙動順序を表すシナリオを生
    成する並列プログラムの挙動生成方法において、 前記各並列動作単位の各部分を予め決められた単位ごと
    に実行することによって、前記各部分についてありうる
    実行経路の各時点について、各並列動作単位によって共
    有される変数がどの並列動作単位によっていつ参照及び
    変更されているかを表す第1の情報と、次にどの並列動
    作単位が動作可能かを表す第2の情報と、を作成するス
    テップと、 前記各時点で、前記第1の情報に基づいて、各並行動作
    単位の各部分の間にどのような依存関係があるかを解析
    するステップと、 前記実行経路の各時点について、分岐の可能性と、解析
    された依存関係とを木構造の形式で記録するステップ
    と、 記録された各時点において、それまでに得られた前記依
    存関係と前記第2の情報に基づいて、まだ実行していな
    い経路の部分について実行すべきかどうかを判定するス
    テップと、を含むことを特徴とする並列プログラムの挙
    動生成方法。
  5. 【請求項5】 コンピュータを使って、並列プログラム
    に含まれる複数の並列動作単位について、ありうる挙動
    順序を表すシナリオを生成する並列プログラムの挙動生
    成用ソフトウェアを記録した記録媒体において、 そのソフトウェアは前記コンピュータに、 前記各並列動作単位の各部分を予め決められた単位ごと
    に実行することによって、前記各部分についてありうる
    実行経路の各時点について、各並列動作単位によって共
    有される変数がどの並列動作単位によっていつ参照及び
    変更されているかを表す第1の情報と、次にどの並列動
    作単位が動作可能かを表す第2の情報と、を作成させ、 前記各時点で、前記第1の情報に基づいて、各並行動作
    単位の各部分の間にどのような依存関係があるかを解析
    させ、 前記実行経路の各時点について、分岐の可能性と、解析
    された依存関係とを木構造の形式で記録させ、 記録された各時点において、それまでに得られた前記依
    存関係と前記第2の情報に基づいて、まだ実行していな
    い経路の部分について実行すべきかどうかを判定させる
    ことを特徴とする並列プログラムの挙動生成用ソフトウ
    ェアを記録した記録媒体。
JP11008325A 1999-01-14 1999-01-14 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体 Pending JP2000207248A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11008325A JP2000207248A (ja) 1999-01-14 1999-01-14 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11008325A JP2000207248A (ja) 1999-01-14 1999-01-14 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体

Publications (1)

Publication Number Publication Date
JP2000207248A true JP2000207248A (ja) 2000-07-28

Family

ID=11690038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11008325A Pending JP2000207248A (ja) 1999-01-14 1999-01-14 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP2000207248A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204405A (ja) * 2007-02-22 2008-09-04 Fujitsu Ltd ソフトウェアのリグレッションテストシステム、リグレッションテストプログラムおよびリグレッションテスト方法
JP2009087356A (ja) * 2007-10-02 2009-04-23 Nec Lab America Inc 保護された独立関係を用いた部分的命令低減
JP2010532905A (ja) * 2008-06-26 2010-10-14 ラッセル・エイチ・フィッシュ スレッドに最適化されたマルチプロセッサアーキテクチャ
WO2011158320A1 (ja) 2010-06-14 2011-12-22 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
US8584095B2 (en) 2009-12-21 2013-11-12 International Business Machines Corporation Test support system, method and computer program product, which optimize test scenarios to minimize total test time
CN109800077A (zh) * 2018-12-11 2019-05-24 北京奇安信科技有限公司 全程序静态检测的文件优先检测顺序的处理方法及装置
CN110008030A (zh) * 2019-04-16 2019-07-12 苏州浪潮智能科技有限公司 一种元数据访问的方法、系统及设备
WO2021100156A1 (ja) * 2019-11-20 2021-05-27 日本電信電話株式会社 テストデータ生成装置、テストデータ生成方法、及びプログラム

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008204405A (ja) * 2007-02-22 2008-09-04 Fujitsu Ltd ソフトウェアのリグレッションテストシステム、リグレッションテストプログラムおよびリグレッションテスト方法
JP2009087356A (ja) * 2007-10-02 2009-04-23 Nec Lab America Inc 保護された独立関係を用いた部分的命令低減
JP2010532905A (ja) * 2008-06-26 2010-10-14 ラッセル・エイチ・フィッシュ スレッドに最適化されたマルチプロセッサアーキテクチャ
US8584095B2 (en) 2009-12-21 2013-11-12 International Business Machines Corporation Test support system, method and computer program product, which optimize test scenarios to minimize total test time
WO2011158320A1 (ja) 2010-06-14 2011-12-22 富士通株式会社 マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム
US8996820B2 (en) 2010-06-14 2015-03-31 Fujitsu Limited Multi-core processor system, cache coherency control method, and computer product
US9390012B2 (en) 2010-06-14 2016-07-12 Fujitsu Limited Multi-core processor system, cache coherency control method, and computer product
CN109800077A (zh) * 2018-12-11 2019-05-24 北京奇安信科技有限公司 全程序静态检测的文件优先检测顺序的处理方法及装置
CN110008030A (zh) * 2019-04-16 2019-07-12 苏州浪潮智能科技有限公司 一种元数据访问的方法、系统及设备
WO2021100156A1 (ja) * 2019-11-20 2021-05-27 日本電信電話株式会社 テストデータ生成装置、テストデータ生成方法、及びプログラム
JPWO2021100156A1 (ja) * 2019-11-20 2021-05-27
JP7268759B2 (ja) 2019-11-20 2023-05-08 日本電信電話株式会社 テストデータ生成装置、テストデータ生成方法、及びプログラム

Similar Documents

Publication Publication Date Title
US6922827B2 (en) Iterative software development environment with prioritized build rules
US7386521B2 (en) Automatic test program generation using extended conditional constraint satisfaction
US20050171930A1 (en) Dynamic Determination of Transaction Boundaries in Workflow Systems
Chanda et al. Whodunit: Transactional profiling for multi-tier applications
US20090328002A1 (en) Analysis and Detection of Responsiveness Bugs
US20080115116A1 (en) Method and apparatus for dynamically binding service component implementations for specific unit test cases
US20180024910A1 (en) Efficient method data recording
CN117149658A (zh) 呈现代码实体调用之间的差异
US10871918B2 (en) Writing composite objects to a data store
JP2009537908A (ja) グラフ型計算における計算リソースの管理法
US8495593B2 (en) Method and system for state machine translation
CN109313547B (zh) 用于cpu利用率和代码重构的查询优化器
Han et al. Checkpointing workflows for fail-stop errors
Chapman et al. Learning the language of error
Kähkönen et al. Unfolding based automated testing of multithreaded programs
JP2000207248A (ja) 並列プログラムの挙動生成装置及び方法並びに並列プログラムの挙動生成用ソフトウェアを記録した記録媒体
US20070168995A1 (en) Optimal program execution replay
US7092858B1 (en) Method and apparatus for formally constraining random simulation
US20110191778A1 (en) Computer program, method, and apparatus for grouping tasks into series
Rinard et al. Active learning for inference and regeneration of computer programs that store and retrieve data
Bowie Applications of graph theory in computer systems
Pham et al. Unfolding-based dynamic partial order reduction of asynchronous distributed programs
Patil Regression Testing in Era of Internet of Things and Machine Learning
JP7244756B2 (ja) 分析プログラム、プログラム分析方法およびプログラム分析装置
Yang et al. Generating test scenarios using sysml activity diagram

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040120

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040322

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040928