JPH11110252A - Device and method for suporting program development, and storage medium recorded with program development support software - Google Patents

Device and method for suporting program development, and storage medium recorded with program development support software

Info

Publication number
JPH11110252A
JPH11110252A JP9272522A JP27252297A JPH11110252A JP H11110252 A JPH11110252 A JP H11110252A JP 9272522 A JP9272522 A JP 9272522A JP 27252297 A JP27252297 A JP 27252297A JP H11110252 A JPH11110252 A JP H11110252A
Authority
JP
Japan
Prior art keywords
program
execution
guard
guard instruction
development support
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
JP9272522A
Other languages
Japanese (ja)
Inventor
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 JP9272522A priority Critical patent/JPH11110252A/en
Publication of JPH11110252A publication Critical patent/JPH11110252A/en
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a program development suport technology high in reliability. SOLUTION: The test is executed at the desired condition of a given program 1 by a test part 2, an execution log when a user admits as a correct behavior is stored as test information 3 in a preservation part 4. By adding a guard command for suppressing the behavior that is not recorded in the execution log saved, a change part 5 changes to a program 6. This guard command is generated as a conditional sentence for starting an operation in a program. The behavior which is not tested cannot be guaranteed that it is correct, but since the program 6 attached by the guard command does not perform such a behavior as the untested one, a failure by having non-decisiveness is avoided and reliability of the program is greatly improved.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、コンピュータに代
表される情報処理装置のプログラム開発を支援する技術
の改良に関するもので、より具体的には、信頼性の高い
プログラムを開発するように改良したものである。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an improvement in technology for supporting the development of a program for an information processing apparatus represented by a computer, and more specifically, to a technique for developing a highly reliable program. Things.

【0002】[0002]

【従来の技術】コンピュータのプログラムを開発するに
は、専用のプログラム開発支援装置を用いて、プログラ
ムのソースコードを作成し、テスト実行やミスの除去
(デバッグ)などを行なう。このようなプログラム開発
支援装置は、エディタやテスト実行のためのシミュレー
タなど専用の機能を持ち、CASEツールなどとも呼ば
れる。
2. Description of the Related Art In order to develop a computer program, a program source code is created using a dedicated program development support device, and a test is executed and a mistake is eliminated (debugged). Such a program development support device has dedicated functions such as an editor and a simulator for executing a test, and is also called a CASE tool or the like.

【0003】本来、コンピュータのプログラムは状況に
応じてコンピュータの動作を制御するものであるから、
入力が変わればプログラム内容に応じて動作も変わる。
しかし、このように予め設計された挙動の範囲を超え
て、多様な動作を示すプログラムも存在する。そのよう
にプログラムの実行時の挙動が非決定的であるプログラ
ムを非決定的なプログラムと呼ぶ。対して、前記のよう
に入力が決まれば挙動が一意に定まるプログラムは決定
的なプログラムと呼ぶ。
[0003] Originally, a computer program controls the operation of the computer according to the situation.
If the input changes, the operation changes according to the contents of the program.
However, there are programs that show various operations beyond the range of behavior designed in advance in this way. Such a program whose execution behavior is non-deterministic is called a non-deterministic program. On the other hand, a program whose behavior is uniquely determined when an input is determined as described above is called a definitive program.

【0004】非決定的なプログラムの代表例は並行プロ
グラムである。並行プログラムは、複数のプロセスが別
々に動作しながら協調するので、各プロセスのどの部分
がどのようなタイミングで実行されるかによって、全体
としての動作が異なってくる。また、プログラムそのも
のには並行性がない場合でも、外部からの入力のタイミ
ングなどに起因して実行順序に非決定性が発生し、事実
上の非決定性を示すプログラムも存在する。例えば、IF
-THEN ル−ル型のプログラムでは、外部からの入力のタ
イミングでル−ルの実行順序が変わってしまう場合も考
えられる。
[0004] A typical example of a non-deterministic program is a concurrent program. In a concurrent program, a plurality of processes cooperate while operating separately, so that the overall operation differs depending on which part of each process is executed and at what timing. In addition, even when the program itself has no concurrency, non-determinism occurs in the execution order due to the timing of input from the outside and the like, and some programs exhibit virtual non-determinism. For example, IF
In a -THEN rule-type program, the execution order of the rules may change depending on the timing of external input.

【0005】また、ここで問題とする非決定性は、プロ
グラム言語の意味論があいまい、すなわち文法が統一さ
れていないために、同じプログラムでも処理系によって
挙動が異なる場合や処理系自体の動作が不安定であるた
めに並行プログラムの挙動が異なるような場合をも含む
ものとする。
[0005] In addition, the nondeterminism in question here is that the semantics of the programming language are ambiguous, that is, the grammar is not unified. This includes cases where the behavior of concurrent programs differs due to stability.

【0006】[0006]

【発明が解決しようとする課題】ところで、並行プログ
ラムに代表される非決定的なプログラムをテスト及びデ
バッグする開発作業は、文献「C.E. McDowell, D.P. He
lmbold, Debugging Concurrent Programs, ACM Computi
ng Surveys, Vol.21, No.4, 1989. 」に示されているよ
うに、決定的なプログラムの開発作業に比べて非常に困
難である。これは、非決定性を持つプログラムに従来の
テスト・デバッグの手法を適用した場合、プログラムが
非決定的な挙動を持つために、(1)必要なテストケ−
スが条件の組合せによって膨大な数になり、また(2)
バグの発生自体も再現性がない、といった問題が生じる
ためである。この問題を解決するために従来用いられて
いたアプロ−チは下記の3種類に分類できる。 (1)プログラムテスト技術(並行プログラム用デバッ
ガなど) (2)プログラム検証技術(並行プログラムの検証な
ど) (3)プログラム合成手法(論理による仕様記述からプ
ログラム生成など) しかし、これらのアプロ−チには、 (1)個々のユ−ザのスキルに依存する部分が大きい (2)単純化した例題のような簡単なプログラムにしか
適用できない といった問題があった。
The development work for testing and debugging a non-deterministic program represented by a concurrent program is described in "CE McDowell, DP He
lmbold, Debugging Concurrent Programs, ACM Computi
ng Surveys, Vol.21, No.4, 1989. " This is because, when a conventional test / debugging method is applied to a nondeterministic program, the program has a nondeterministic behavior.
Is huge depending on the combination of conditions, and (2)
This is because there is a problem that the bug itself is not reproducible. Approaches conventionally used to solve this problem can be classified into the following three types. (1) Program test technology (such as a debugger for concurrent programs) (2) Program verification technology (such as verification of concurrent programs) (3) Program synthesis method (such as generation of a program from specification description by logic) There are problems that (1) a large part depends on the skill of each user, and (2) it can be applied only to a simple program such as a simplified example.

【0007】また、試験工程で十分テストを行なったプ
ログラムでも、実際の実行時に試験工程と実行環境すな
わちマシンの性能、入力のタイミング、処理系などが異
なり、試験では起こらなかった非決定的な挙動により、
不具合が発生する場合が多い。銀行のオンラインシステ
ムなど高い信頼性を要求されるシステムにおいては、こ
のようなバグが致命的な事故を引き起こす場合もある。
Further, even in a program that has been sufficiently tested in the test process, the actual environment differs from the test process in the execution environment, that is, the performance of the machine, the input timing, the processing system, and the like. ,
Failure often occurs. In a system that requires high reliability, such as a bank online system, such a bug may cause a fatal accident.

【0008】このような問題点を解決すべく、本出願人
は、信頼性の高い並行プログラムを開発するための技術
として、超逐次プログラミングを提案している(特開平
8−16429)。この技術は、並行プログラムを一旦
逐次化し、そのプログラムについてテスト実行とデバッ
グを行ない、正しい実行ログをマージしたグローバル状
態遷移システムから、改めて並行プログラム全体を再度
生成するものである。
In order to solve such a problem, the present applicant has proposed ultra-sequential programming as a technique for developing a highly reliable concurrent program (Japanese Patent Laid-Open No. 16429/1996). In this technique, a parallel program is temporarily serialized, test execution and debugging are performed on the program, and the entire concurrent program is generated again from the global state transition system in which correct execution logs are merged.

【0009】しかし、この技術では、プログラムの規模
に応じたサイズの状態遷移モデルを扱わなければなら
ず、また、並行プログラムを一旦逐次化して再度生成す
る必要がある。このため、並行プログラムが大規模化す
ると全体の処理量が多くなり、効率的な適用が困難であ
った。
However, in this technique, it is necessary to handle a state transition model having a size corresponding to the size of the program, and it is necessary to serialize the parallel program once and generate it again. For this reason, when the size of the concurrent program is increased, the entire processing amount is increased, and efficient application is difficult.

【0010】また、本出願人は、シナリオを用いたプロ
グラミング支援装置を提案している。この技術では、プ
ロセスに含まれる各部分の実行順序を状態遷移図形式の
シナリオで表している。このシナリオは、ノードをエッ
ジで接続したネットワーク状のもので、ノードが状態を
表し、ノードから延びるエッジはノードが表す状態から
実行可能なプログラムの部分を表し、一つのノードから
複数のエッジが出て行く場合も多い。このようなシナリ
オの分岐から、利用者が、妥当でないエッジを削除して
行くと妥当な実行順序を表すエッジがシナリオに残る。
この順序を実現するための同期命令を各プロセスに埋め
込むことによってユーザが認める実行順序を実現すると
いうものである。
The present applicant has proposed a programming support device using a scenario. In this technique, the execution order of each part included in a process is represented by a scenario in a state transition diagram format. In this scenario, nodes are connected by edges in a network-like manner. Nodes represent states, edges extending from nodes represent portions of a program that can be executed from the state represented by nodes, and multiple edges are output from one node. Often go. If the user deletes an invalid edge from such a scenario branch, an edge representing a valid execution order remains in the scenario.
By embedding a synchronization command for realizing this order in each process, the execution order recognized by the user is realized.

【0011】しかし、この技術でも、複数のプロセスを
含む並行プログラム全体を状態遷移図形式で表す必要が
あるため、複雑な並行プログラムについてはそれに比例
して複雑な状態遷移図を扱わなければならないという問
題点があった。また、プログラムに埋め込む同期命令の
分だけ、プログラムが複雑化して理解しにくくなった
り、容量が増大するという問題点があった。さらに、こ
のようにプログラムに同期命令を埋め込む場合、プログ
ラミング(コーディング)の段階からプログラム中に存
在する同期命令と、上記のような実行順序を実現するた
めに新たに埋め込まれた同期命令が相互に影響する可能
性もあり、これを避けるためにはその分注意してコーデ
ィングを行なわなければならなかった。
However, even in this technique, since the entire concurrent program including a plurality of processes needs to be represented in the form of a state transition diagram, a complicated state transition diagram must be handled in proportion to a complicated concurrent program. There was a problem. Also, there are problems that the program becomes complicated and difficult to understand and the capacity increases due to the synchronization instruction embedded in the program. Further, when a synchronization instruction is embedded in a program as described above, the synchronization instruction existing in the program from the programming (coding) stage and the synchronization instruction newly embedded in order to realize the execution order as described above are mutually exchanged. This could have an effect, and we had to be careful with coding to avoid this.

【0012】さらに、本出願人は、割り込み処理のプロ
グラミングに適した超逐次プログラミングの発明を提案
している。この技術では、割り込み処理を用いるプログ
ラムにおいて、割り込みを許可しようとする候補の箇所
を仮に指定して実行をテストする。そして、利用者が実
行結果を正しいと認めると、その正しい結果を発生させ
た候補の箇所に実際に割り込み許可命令が付加されると
いうものである。
Further, the present applicant has proposed a super-sequential programming invention suitable for programming interrupt processing. In this technique, in a program that uses interrupt processing, a candidate location where interrupt is to be permitted is temporarily specified to test execution. Then, when the user recognizes that the execution result is correct, an interrupt permission instruction is actually added to the candidate where the correct result is generated.

【0013】しかし、この技術では、割り込みを許可し
ようとする候補の箇所を予め指定しなければならない点
で手数が煩雑である。
[0013] However, this technique is troublesome in that it is necessary to specify in advance a candidate location for which interruption is to be permitted.

【0014】また、他の従来技術として、ル−ル形式の
不完全なプログラムを入力とし、所定のアルゴリズムを
用いてル−ルの条件部に条件を自動的に付加するなどに
よって、不完全部分が補足されたプログラムを出力する
発明(特開平6−59879)が提案されている。この
技術では、一部に不足があるプログラムを入力すると、
不足部分を補充した実験プログラムが作成される。そし
て、実行所要時間など全体的な性能を測定しながら、実
験プログラムの実行と修正を繰り返し、最終的に優れた
特性のプログラムが作成される。しかし、この特開平6
−59879は主に性能の改善が目的であり、プログラ
ムの正しい動作を特定することによって非決定性による
不具合を除去するものではなかった。
Further, as another conventional technique, an incomplete program in a rule format is input, and a condition is automatically added to a condition part of the rule by using a predetermined algorithm. (Japanese Patent Application Laid-Open No. 6-59879) has been proposed which outputs a program supplemented with. With this technology, if you enter a program that is partially missing,
An experimental program that fills in the missing parts is created. The execution and modification of the experimental program are repeated while measuring the overall performance such as the required execution time, and a program with excellent characteristics is finally created. However, Japanese Patent Application Laid-Open
The -59879 was primarily intended to improve performance, and did not eliminate nondeterministic problems by identifying the correct operation of the program.

【0015】本発明は、上記のような従来技術の問題点
を解決するために提案されたもので、その目的は、信頼
性の高いプログラムを開発する技術を提供することであ
る。また、本発明の他の目的は、新たな同期命令や割り
込み命令を必須とすることなく正しい挙動を実現するプ
ログラム開発の技術を提供することである。また、本発
明の他の目的は、並列論理型プログラム・ルール型プロ
グラム・黒板型並行プログラムなど各種のプログラムに
適用できるプログラム開発の技術を提供することであ
る。
The present invention has been proposed to solve the above-mentioned problems of the prior art, and an object of the present invention is to provide a technique for developing a highly reliable program. Another object of the present invention is to provide a program development technique for realizing a correct behavior without requiring a new synchronization instruction or interrupt instruction. Another object of the present invention is to provide a program development technique applicable to various programs such as a parallel logic type program, a rule type program, and a blackboard type concurrent program.

【0016】[0016]

【課題を解決するための手段】上記の目的を達成するた
め、請求項1のプログラム開発支援装置は、プログラム
の開発を支援するプログラム開発支援装置において、与
えられたプログラムを試験する手段と、前記試験で得ら
れた情報を用いて正しい挙動を示すように前記プログラ
ムを変更する手段と、を備えたことを特徴とする。請求
項1の発明では、与えられたプログラムを実行して試験
することによって正しい挙動を得ると、その正しい挙動
を示すようにプログラムが変更されるので、プログラム
の信頼性が向上する。
According to a first aspect of the present invention, there is provided a program development support apparatus for supporting a program development, wherein the program development support apparatus tests a given program; Means for changing the program so as to exhibit correct behavior using information obtained in the test. According to the first aspect of the present invention, when a correct behavior is obtained by executing and testing a given program, the program is changed so as to exhibit the correct behavior, thereby improving the reliability of the program.

【0017】請求項2のプログラム開発支援装置は、プ
ログラムの開発を支援するプログラム開発支援装置にお
いて、与えられたプログラムを実行することによって試
験する手段と、プログラムの挙動が正しいと認められた
際の実行ログを保存する手段と、保存されている実行ロ
グに記録されていない挙動を抑制するガード命令を付加
することによってプログラムを変更する手段と、を備え
たことを特徴とする。請求項15のプログラム開発支援
方法は、請求項2の発明を方法の観点から把握したもの
で、プログラムの開発を支援するプログラム開発支援方
法において、与えられたプログラムを実行することによ
って試験する工程と、プログラムの挙動が正しいと認め
られた際の実行ログを保存する工程と、保存されている
実行ログに記録されていない挙動を抑制するガード命令
を付加することによってプログラムを変更する工程と、
を含むことを特徴とする。請求項19の発明は、請求項
2の発明を、コンピュータを制御することによってプロ
グラムの開発を支援するプログラム開発支援用ソフトウ
ェアを記録した記録媒体の観点から把握したもので、当
該プログラム開発支援用ソフトウェアは、コンピュータ
に、与えられたプログラムを実行することによって試験
させ、プログラムの挙動が正しいと認められた際の実行
ログを保存させ、保存されている実行ログに記録されて
いない挙動を抑制するガード命令を付加することによっ
てプログラムを変更させることを特徴とする。
According to a second aspect of the present invention, there is provided a program development support apparatus for supporting a program development, comprising: means for testing by executing a given program; It is characterized by comprising means for storing an execution log, and means for changing a program by adding a guard instruction for suppressing a behavior not recorded in the stored execution log. A program development support method according to a fifteenth aspect grasps the invention according to the second aspect from the viewpoint of the method. In a program development support method for supporting program development, a step of executing a given program to execute a test is provided. Saving the execution log when the behavior of the program is determined to be correct, and modifying the program by adding a guard instruction that suppresses behavior not recorded in the saved execution log,
It is characterized by including. According to a nineteenth aspect of the present invention, the invention of the second aspect is grasped from the viewpoint of a recording medium that records software for supporting program development for supporting program development by controlling a computer. Is a program that allows a computer to test a given program by executing it, save an execution log when the behavior of the program is found to be correct, and suppress the behavior not recorded in the saved execution log. It is characterized in that the program is changed by adding an instruction.

【0018】請求項2,15,19の発明では、所望の
条件でプログラムをテスト実行し、利用者がプログラム
の挙動を正しいと認めた場合の実行ログを保存する。そ
して、正しいと認められた実行ログに記録されていない
挙動を抑制する記述がプログラムに付加される。このよ
うな記述はガード命令と呼ばれ、プログラム中のある動
作に先立って成立しなければならない条件を表す。テス
トしていない挙動は正しい保証がないが、ガード命令を
付加されたプログラムは、このようなテストしていない
挙動を行わない。このため、非決定性による不具合が回
避され、プログラムが高信頼化される。なお、「ガード
命令」は、狭義の実行命令だけでなく、宣言文や命令の
条件節など各種ステートメントやその一部分も含む広い
概念である。また、ガード命令について「付加」及び
「挿入」とは、ガード命令がプログラム中に存在する状
態を実現する事を広く意味し、新たに付け加えることだ
けでなく、プログラム中に既にあるステートメントにつ
いて、他のものと入れ替えたり、新たな文字列を挿入し
たり、一部を削除するなど様々な態様を含む。このよう
な本発明によれば、開発しようとするプログラムに応じ
た規模の状態遷移モデルやシナリオを扱う必要がない。
また、プログラム全体の再構成も行なわないので、処理
が簡単になり、大規模なプログラムに対しても容易に適
用することができる。また、本発明によれば、必ずしも
全く新たな同期命令や割り込み関係の命令をプログラム
に埋め込む必要がないので、プログラムが複雑化したり
コーディングで用いた同期命令や割り込み関係の命令に
影響を与えることがない。なお、ガード命令の付加は、
プログラム中の既存のステートメントを書き換えること
によって行なうことが考えられるが、新たなステートメ
ントを新規に挿入することによって行なうこともでき
る。
According to the second, fifteenth, and nineteenth aspects of the present invention, the program is test-executed under desired conditions, and an execution log is stored when the user determines that the behavior of the program is correct. Then, a description that suppresses a behavior that is not recorded in the execution log recognized as correct is added to the program. Such a description is called a guard instruction and represents a condition that must be satisfied prior to a certain operation in the program. Untested behavior is not guaranteed to be correct, but programs with guard instructions do not perform such untested behavior. For this reason, problems due to non-determinism are avoided, and the program is highly reliable. The “guard instruction” is a broad concept including not only an execution instruction in a narrow sense but also various statements such as a declaration statement and a conditional clause of the instruction and a part thereof. The terms “add” and “insert” for the guard instruction broadly mean that the guard instruction realizes the state that exists in the program, and not only to add a new guard instruction, but also to other statements that already exist in the program. Various modes are included, such as replacing a character string, inserting a new character string, and deleting a part of the character string. According to the present invention, there is no need to handle a state transition model or scenario of a scale corresponding to a program to be developed.
In addition, since the entire program is not reconfigured, the processing is simplified, and it can be easily applied to a large-scale program. Further, according to the present invention, it is not always necessary to embed a completely new synchronous instruction or interrupt-related instruction in the program, so that the program becomes complicated or the synchronous instruction or interrupt-related instruction used in coding may be affected. Absent. Note that the addition of the guard instruction
This can be performed by rewriting an existing statement in the program, but can also be performed by inserting a new statement.

【0019】請求項3の発明は、請求項2記載のプログ
ラム開発支援装置において、前記変更する手段は、与え
られたプログラムからその挙動が一意に定まらない非決
定性を有する部分を抽出する手段と、抽出された非決定
性を有する部分について、前記ガード命令を生成する手
段と、生成されたガード命令を前記非決定性を有する部
分に付加する手段と、を備えたことを特徴とする。請求
項16の発明は、請求項3の発明を方法の観点から把握
したもので、請求項15記載のプログラム開発支援方法
において、前記変更する工程は、与えられたプログラム
からその挙動が一意に定まらない非決定性を有する部分
を抽出する工程と、抽出された非決定性を有する部分に
ついて前記ガード命令を生成する工程と、生成されたガ
ード命令を前記非決定性を有する部分に付加する工程
と、を含むことを特徴とする。請求項20の発明は、請
求項3の発明を、プログラム開発支援用ソフトウェアを
記録した記録媒体の観点から把握したもので、請求項1
9記載のプログラム開発支援用ソフトウェアを記録した
記録媒体において、当該プログラム開発支援用ソフトウ
ェアは、前記プログラムを変更させる際に前記コンピュ
ータに、与えられたプログラムからその挙動が一意に定
まらない非決定性を有する部分を抽出させ、抽出された
非決定性を有する部分について前記ガード命令を生成さ
せ、生成されたガード命令を前記非決定性を有する部分
に付加させることを特徴とする。請求項3,16,20
の発明では、プログラムを変更する際に、まずプログラ
ムから非決定性を有する部分が抽出され、この部分に対
してガ−ドの生成と付加が行なわれることによって非決
定性による不具合が回避される。
According to a third aspect of the present invention, in the program development support apparatus according to the second aspect, the changing means extracts a non-deterministic part whose behavior is not uniquely determined from a given program; For the extracted non-deterministic part, there is provided a means for generating the guard instruction, and means for adding the generated guard instruction to the non-deterministic part. According to a sixteenth aspect of the present invention, the invention of the third aspect is grasped from the viewpoint of a method. In the program development supporting method according to the fifteenth aspect, the changing step is such that the behavior is uniquely determined from a given program. Extracting a non-deterministic part, generating the guard instruction for the extracted non-deterministic part, and adding the generated guard instruction to the non-deterministic part. It is characterized. According to a twentieth aspect, the invention of the third aspect is grasped from the viewpoint of a recording medium on which software for supporting program development is recorded.
9. In a recording medium recording the program development support software according to 9, the program development support software has a nondeterminism that when the program is changed, the behavior of the computer is not uniquely determined from a given program. A part is extracted, the guard instruction is generated for the extracted nondeterministic part, and the generated guard instruction is added to the nondeterministic part. Claims 3, 16, 20
According to the invention, when a program is changed, a nondeterministic part is first extracted from the program, and a guard is generated and added to this part, thereby avoiding a problem caused by the nondeterminism.

【0020】請求項4の発明は、請求項2又は3記載の
プログラム開発支援装置において、開発対象となるプロ
グラムが、複数の節を含む並列論理型プログラムであっ
て、前記変更する手段が、並列論理型プログラムから、
同時に実行可能な複数の節を非決定性を有する部分とし
て抽出し、抽出された節に含まれる述語の変数を、前記
実行ログに記録されている実行系列のみに適合するよう
に抑制するガード命令を生成し、このガード命令を前記
非決定性を有する部分に付加するように構成されたこと
を特徴とする。並列論理型プログラムでは、個々の節に
ついて実行(単一化)される対象が述語名及び変数で指
定されていて、節が実行可能か否かの判断が並行に行な
われる結果、ある状況で実行可能な節の候補が複数存在
する場合がある。この場合、節は一つだけ選択実行され
るが、どの候補が選択されるかは非決定的である場合が
多く、どの候補が実行されるかによってプログラムの挙
動が変りうる。請求項4の発明では、同時に実行可能と
なりうる節が複数存在する場合でも、述語の変数を単一
化させる対象を限定するガード命令を用いることによっ
て、並列論理型プログラムの非決定性が抑制され、正し
い挙動が実現される。
According to a fourth aspect of the present invention, in the program development support device according to the second or third aspect, the program to be developed is a parallel logic type program including a plurality of clauses, and From a logical program,
A plurality of simultaneously executable clauses are extracted as nondeterministic parts, and a guard instruction that suppresses variables of predicates included in the extracted clauses so as to match only the execution sequence recorded in the execution log is used. The guard instruction is generated and added to the non-deterministic part. In a parallel logic type program, an object to be executed (unified) for each clause is specified by a predicate name and a variable, and it is determined in parallel whether or not the clause is executable. There may be more than one possible clause candidate. In this case, only one clause is selected and executed, but it is often indeterminate which candidate is selected, and the behavior of the program may change depending on which candidate is executed. In the invention according to claim 4, even when there are a plurality of clauses that can be executed simultaneously, the non-determinism of the parallel logic type program is suppressed by using the guard instruction that limits the target of unifying the variable of the predicate, Correct behavior is achieved.

【0021】請求項5の発明は、請求項2又は3記載の
プログラム開発支援装置において、開発対象となるプロ
グラムが、条件部と実行部とを有するルールを組み合わ
せたル−ル型プログラムであって、前記変更する手段
が、ルール型プログラムから、同時に実行可能な複数の
ルールを非決定性を有する部分として抽出し、抽出され
たルールについて、条件部のパタ−ンマッチを、前記実
行ログに記録されている実行系列のル−ルのみに適合す
るように抑制するガード命令を生成し、このガード命令
を前記非決定性を有する部分に付加するように構成され
たことを特徴とする。ルール型プログラムでは、各ルー
ルに条件部と実行部とがあり、各時点でのデータに条件
部がマッチするルールが起動され、そのルールの実行部
が実行されることによって処理が進んで行く。請求項5
の発明では、同時に実行可能となりうるルールが複数存
在する場合でも、ルールがマッチする条件を限定したガ
ード命令を用いることによって起動されるルールが限定
されるので、ルール型プログラムの非決定性が抑制さ
れ、正しい挙動が実現される。
According to a fifth aspect of the present invention, in the program development support device according to the second or third aspect, the program to be developed is a rule-type program in which a rule having a condition part and an execution part is combined. The changing means extracts, from the rule-type program, a plurality of rules that can be executed simultaneously as non-deterministic portions, and for the extracted rules, a pattern match of a condition part is recorded in the execution log. And generating a guard instruction that suppresses the execution so as to conform only to the rules of the execution sequence that is present, and adding the guard instruction to the nondeterministic portion. In the rule type program, each rule has a condition part and an execution part, and a rule whose condition part matches data at each time point is activated, and the processing proceeds by executing the execution part of the rule. Claim 5
According to the invention, even when there are a plurality of rules that can be executed at the same time, rules activated by using a guard instruction that restricts conditions for matching rules are limited, so that nondeterminism of a rule type program is suppressed. , Correct behavior is realized.

【0022】請求項6の発明は、請求項2又は3記載の
プログラム開発支援装置において、開発対象となるプロ
グラムが、複数のプロセスが、黒板上に保存されるデー
タの組であるタプルを読み書きすることによって協調動
作を行う黒板型並行プログラムであって、前記変更する
手段が、黒板型並行プログラムから、黒板上に保存され
た同一のタプルとパターンマッチ可能な複数のプロセス
を非決定性を有する部分として抽出し、抽出されたプロ
セスについて、保存されている実行ログにしたがって、
黒板上のタプルを読み書きするプロセスを限定するガー
ド命令を生成し、このガード命令を前記非決定性を有す
る部分に付加するように構成されたことを特徴とする。
黒板型並行プログラムでは、各プロセスの動作は黒板上
のタプルを読み込むことで変化するが、意図しないプロ
セスがタプルを読み込むと非決定性による支障が生じ
る。請求項6の発明では、非決定性の原因となるタプル
を読み込むプロセスを限定するように、タプルの書き込
みや読み出しの記述を変更してガード命令とする。これ
によって、黒板型並行プログラムの非決定性が抑制さ
れ、正しい挙動が実現される。
According to a sixth aspect of the present invention, in the program development support apparatus according to the second or third aspect, the program to be developed is such that a plurality of processes read and write tuples, which are sets of data stored on a blackboard. A blackboard-type parallel program that performs a cooperative operation by means of the blackboard-type parallel program, wherein a plurality of processes that can be pattern-matched with the same tuple stored on the blackboard are defined as non-deterministic parts. According to the extracted execution process and the saved execution log for the extracted process,
A guard instruction for limiting a process of reading and writing tuples on a blackboard is generated, and the guard instruction is added to the nondeterministic portion.
In a blackboard-type parallel program, the operation of each process changes by reading a tuple on the blackboard, but when an unintended process reads the tuple, a problem occurs due to nondeterminism. According to the sixth aspect of the present invention, the description of the tuple write or read is changed to a guard instruction so as to limit the process of reading the tuple that causes nondeterminism. As a result, nondeterminism of the blackboard-type concurrent program is suppressed, and correct behavior is realized.

【0023】請求項7の発明は、請求項2又は3記載の
プログラム開発支援装置において、開発対象となるプロ
グラムが、複数のプロセスがメッセージの交換によって
協調動作を行なうメッセ−ジ交換型並行プログラムであ
って、前記変更する手段が、メッセージ交換型並行プロ
グラムから、複数のメッセージを異なった順序で受け取
る可能性があるプロセスを非決定性を有する部分として
抽出し、抽出されたプロセスについて、保存されている
実行ログにしたがった順序でメッセージを受け取るよう
に制御するガード命令を生成し、このガード命令を前記
非決定性を有する部分に付加するように構成されたこと
を特徴とする。メッセージ交換型プログラムでは、プロ
セス間で交換するメッセージによって各プロセスの挙動
が影響されるので、複数のメッセージを受け取る場合は
到着する順序で挙動が異なる場合がある。請求項7の発
明では、メッセージを交換するためのバッファの役割を
果たすメイルボックスについて名称を細分化するなどし
て、メッセージが到着する順序を限定するガード命令を
作成する。これによって、メッセージ交換型プログラム
の非決定性が抑制され、正しい挙動が実現される。
According to a seventh aspect of the present invention, in the program development support apparatus according to the second or third aspect, the program to be developed is a message exchange type concurrent program in which a plurality of processes cooperate by exchanging messages. The changing means extracts, as a non-deterministic part, a process which may receive a plurality of messages in a different order from the message exchange type parallel program, and stores the extracted process. A guard instruction for controlling reception of messages in the order according to the execution log is generated, and the guard instruction is added to the nondeterministic portion. In a message exchange program, the behavior of each process is affected by the messages exchanged between the processes, so when receiving a plurality of messages, the behavior may differ in the order of arrival. According to the seventh aspect of the present invention, a guard instruction for limiting the order in which messages arrive is created by subdividing the name of a mailbox that serves as a buffer for exchanging messages. Thereby, nondeterminism of the message exchange type program is suppressed, and correct behavior is realized.

【0024】請求項8の発明は、請求項2乃至7のいず
れか一に記載のプログラム開発支援装置において、プロ
グラム、実行ログ及びガード命令のうち少なくともいず
れかを解析する手段と、生成されたガード命令を、解析
の結果を用いて改善する手段と、を備えたことを特徴と
する。請求項17の発明は、請求項8の発明を方法の観
点から把握したもので、請求項15又は16記載のプロ
グラム開発支援方法において、プログラム、実行ログ及
びガード命令のうち少なくともいずれかを解析する工程
と、生成されたガード命令を、解析の結果を用いて改善
する工程と、を含むことを特徴とする。請求項8,17
の発明では、生成したガード命令をそのままプログラム
に付加するのではなく、解析の結果に基づいてガード命
令を改善するので、最終的なプログラムの効率又は信頼
性が向上する。改善の態様としては、冗長なガード命令
を除去したり、ガード命令の統合や拡張による抽象化な
どを用いる。
According to an eighth aspect of the present invention, in the program development support apparatus according to any one of the second to seventh aspects, means for analyzing at least one of a program, an execution log, and a guard instruction, and the generated guard Means for improving the instruction using the result of the analysis. According to a seventeenth aspect of the present invention, the invention of the eighth aspect is grasped from the viewpoint of a method. In the program development support method according to the fifteenth or sixteenth aspect, at least one of a program, an execution log, and a guard instruction is analyzed. And improving the generated guard instruction using the result of the analysis. Claims 8 and 17
According to the invention, the generated guard instruction is not added to the program as it is, but the guard instruction is improved based on the analysis result, so that the efficiency or reliability of the final program is improved. As an aspect of the improvement, a redundant guard instruction is removed, or an abstraction by integrating or extending the guard instruction is used.

【0025】請求項9の発明は、請求項8記載のプログ
ラム開発支援装置において、前記改善する手段は、プロ
グラムに付加しようとするガード命令から、前記解析の
結果に基づいて必須のガ−ド命令のみを選択するように
構成されたことを特徴とする。請求項9の発明では、解
析の結果に基づいて冗長なガード命令が除去され、真に
必要なガード命令だけが選択され付加されるので、変更
の処理も最終的なプログラムの内容も効率化される。例
えば、プログラムのある部分に付加しようとする2つの
ガード命令のうち、一方のガード命令が求める条件が成
立すると他方のガード命令が求める条件も必ず成立する
場合、一方のガード命令のみを付加する。
According to a ninth aspect of the present invention, in the program development support apparatus according to the eighth aspect, the means for improving includes a guard instruction required from a guard instruction to be added to the program based on a result of the analysis. It is configured to select only one. According to the ninth aspect of the present invention, redundant guard instructions are removed based on the result of the analysis, and only truly necessary guard instructions are selected and added, so that the processing of changes and the contents of the final program are made more efficient. You. For example, of the two guard instructions to be added to a certain part of the program, if the condition required by one guard instruction is satisfied, the condition required by the other guard instruction is always satisfied, only one guard instruction is added.

【0026】請求項10の発明は、請求項8記載のプロ
グラム開発支援装置において、前記改善する手段は、プ
ログラムに付加するガード命令を前記解析の結果に基づ
いてより汎用的な挙動の抑制を行うように抽象化するよ
うに構成されたことを特徴とする。請求項10の発明で
は、プログラムに付加するガード命令が抽象化されるの
で、使用するガード命令の数やデータ容量に対して、実
現される機能が充実する。ガード命令の抽象化は、解析
の結果にしたがって行なうが、典型的には、数種類のガ
ード命令を包含するような上位概念を帰納的に作成する
ことによって行なう。また、抽象化の一つの態様とし
て、ガード命令に記載された条件に論理関数ORで新し
い条件を加えることによって、条件を拡げることも考え
られる。
According to a tenth aspect of the present invention, in the program development support apparatus according to the eighth aspect, the improving means suppresses a more general-purpose behavior of a guard instruction added to the program based on a result of the analysis. It is configured to be abstracted as follows. According to the tenth aspect of the present invention, since the guard instruction added to the program is abstracted, the functions to be implemented are enhanced with respect to the number of guard instructions to be used and the data capacity. The guard instruction is abstracted according to the result of the analysis. Typically, the abstraction is performed by inductively creating a superordinate concept including several types of guard instructions. Further, as one aspect of the abstraction, it is conceivable to extend the condition by adding a new condition with a logical function OR to the condition described in the guard instruction.

【0027】請求項11の発明は、請求項2乃至10の
いずれか一に記載のプログラム開発支援装置において、
ガード命令を付加することによってプログラムを変更し
ようとする場合に、変更するか否かをガード命令ごとに
問い合わせる手段を有し、前記変更する手段は、前記問
い合わせに対して変更してよい旨の回答が与えられたガ
ード命令を付加することによってプログラムを変更する
ように構成されたことを特徴とする。請求項11の発明
では、オリジナルのプログラムを書き換える前に、ユ−
ザへ書換えの可否を問い合わせるので、ユーザが希望す
る以上にプログラムを制約するような書き換えを抑止で
きる。
According to an eleventh aspect of the present invention, in the program development support apparatus according to any one of the second to tenth aspects,
In a case where a program is to be changed by adding a guard instruction, the program has means for inquiring for each guard instruction whether or not to change the program. Is configured to change the program by adding a given guard instruction. In the eleventh aspect, before rewriting the original program,
Since the user is inquired about whether rewriting is possible, rewriting that restricts the program more than the user desires can be suppressed.

【0028】請求項12の発明は、請求項2乃至11の
いずれか一に記載のプログラム開発支援装置において、
プログラムのうち、前記変更する手段によって変更され
た部分及び前記実行ログに含まれていなかった部分のう
ち少なくとも一方を実行する場合に、実行の安全性を確
保する手段を備えたことを特徴とする。請求項18の発
明は、請求項12の発明を方法の観点から把握したもの
で、請求項15,16又は17記載のプログラム開発支
援方法において、プログラムのうち、前記変更する工程
によって変更された部分及び前記実行ログに含まれてい
なかった部分のうち少なくとも一方を実行する場合に、
実行の安全性を確保する工程を含むことを特徴とする。
請求項12,18の発明では、変更されたプログラムを
実行する際に安全性が確保されるので、書き換えによっ
て予期しない挙動が発生したり、変更の際に前提としな
かった挙動が発生しても障害や不都合は最小限に抑制さ
れ、プログラムの信頼性が向上する。ここで、実行の安
全性を確保する態様としては、変更された部分を実行す
る場合や実行ログにない挙動が発生した場合に、警告を
出力したり障害からの復帰用データを保存しておくなど
が考えられる。
According to a twelfth aspect of the present invention, in the program development support apparatus according to any one of the second to eleventh aspects,
When executing at least one of a portion of the program changed by the changing unit and a portion not included in the execution log, a unit for ensuring execution safety is provided. . The invention according to claim 18 is ascertained from the viewpoint of the method according to claim 12, and in the program development support method according to claim 15, 16, or 17, a part of the program, which is changed by the changing step. And when executing at least one of the parts not included in the execution log,
The method is characterized by including a step of ensuring execution safety.
According to the twelfth and eighteenth aspects, the security is ensured when the changed program is executed. Therefore, even if an unexpected behavior occurs due to rewriting or a behavior not assumed at the time of the modification occurs. Problems and inconveniences are minimized, and the reliability of the program is improved. Here, as a mode for ensuring the execution safety, when executing the changed part or when a behavior not in the execution log occurs, a warning is output or data for recovering from the failure is stored. And so on.

【0029】請求項13の発明は、請求項12記載のプ
ログラム開発支援装置において、前記安全性を確保する
手段は、プログラムのうち、前記変更する手段によって
変更された部分及び前記実行ログに含まれていなかった
部分のうち少なくとも一方を実行する場合に、警告を出
力することによって実行の安全性を確保するように構成
されたことを特徴とする。請求項13の発明では、変更
された部分やテストしていない部分を実行する場合に警
告が出力されるので、ユーザは、プログラムの信頼性を
判断したり、障害に備えて各種の措置を取るなどの対応
が容易になる。この場合、プログラムの変更する部分に
はソフトウェア的なマークを付けておき、実行時にはこ
のマークの登場を検出して警告を表示すればよい。な
お、警告は、数種類用意しておくなかから選択的に表示
してもよい。例えば、変更した部分ごとに異なった警告
を表示すれば、プログラムの実行状態を具体的に把握す
ることができる。
According to a thirteenth aspect of the present invention, in the program development support apparatus according to the twelfth aspect, the means for ensuring the security is included in a part of the program changed by the changing means and the execution log. When at least one of the parts that has not been executed is executed, a warning is output to ensure the execution safety. According to the thirteenth aspect, a warning is output when a changed part or a part that has not been tested is executed, so that the user can determine the reliability of the program or take various measures in preparation for a failure. This makes it easier to respond. In this case, a portion of the program to be changed may be marked with a software mark, and at the time of execution, the appearance of the mark may be detected and a warning may be displayed. Note that the warning may be selectively displayed from among several types of prepared warnings. For example, if a different warning is displayed for each changed part, the execution state of the program can be grasped concretely.

【0030】請求項14の発明は、請求項12記載のプ
ログラム開発支援装置において、前記安全性を確保する
手段は、プログラムのうち、前記変更する手段によって
変更された部分及び前記実行ログに含まれていなかった
部分のうち少なくとも一方を実行する場合に、その時点
におけるプログラムの実行状態を表すデータを保存する
ように構成されたことを特徴とする。請求項14の発明
では、変更した部分やテストしていない部分が実行され
る場合に、プログラムの実行状態を表すデータが保存さ
れる。このため、それらの部分で障害が発生した場合
も、保存しておいたデータを原因の分析やロールバック
(後退復帰)に用いてシステムを回復することができる
ので、障害による影響が最小限に抑制できる。
According to a fourteenth aspect of the present invention, in the program development support device according to the twelfth aspect, the means for ensuring the security is included in a part of the program changed by the changing means and the execution log. When executing at least one of the parts that have not been executed, data representing the execution state of the program at that time is stored. According to the fourteenth aspect, when the changed portion or the untested portion is executed, data representing the execution state of the program is stored. Therefore, even if a failure occurs in any of these parts, the system can be recovered using the stored data for cause analysis and rollback (reversion), minimizing the impact of the failure. Can be suppressed.

【0031】[0031]

【発明の実施の形態】次に、本発明のプログラム開発支
援装置に係る複数の実施の形態について、図面を参照し
て説明する。なお、本発明は、従来の逐次プログラムに
も適用可能であるが、以下の各実施の形態は、逐次プロ
グラムよりも開発が困難とされる並行プログラムを開発
対象とするものである。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Next, a plurality of embodiments of a program development support device according to the present invention will be described with reference to the drawings. Although the present invention can be applied to a conventional sequential program, the following embodiments are directed to a parallel program which is more difficult to develop than a sequential program.

【0032】〔1.第1の実施の形態〕 〔1−1.構成〕 〔1−1−1.ハードウェアの構成〕まず、第1の実施
の形態(以下「第1実施形態」という)を実現するため
に用いるコンピュータシステムのハードウェア構成を、
図1のハードウェアブロック図に示す。このコンピュー
タシステムは、この図に示すように、N台のプロセッサ
101−1,101−2,…,101−Nを有し、この
うち少なくとも1つのプロセッサが、第1実施形態の機
能を実現するためのソフトウェアを実行する。また、各
プロセッサ101−1,101−2,…,101−Nは
それぞれ、並行プログラムの各プロセスを同時並行的に
実行するのに用いられる。これら各プロセッサ101−
1,101−2,…,101−Nは、I/Oインタフェ
ース102に接続され、このI/Oインタフェース10
2を介して共有メモリ103及び周辺装置にアクセスす
ることができる。共有メモリ103は、各プロセッサ1
01−1,101−2,…,101−N上で実行される
各プロセスが情報を交換して協調動作を行なうのに用い
られる。また、周辺装置には、入力装置104、出力装
置105及び外部記憶装置106などが含まれる。
[1. First Embodiment] [1-1. Configuration] [1-1-1. Hardware Configuration] First, the hardware configuration of a computer system used to implement the first embodiment (hereinafter, referred to as “first embodiment”) is as follows.
This is shown in the hardware block diagram of FIG. This computer system has N processors 101-1, 101-2,..., 101-N as shown in this figure, and at least one of the processors realizes the function of the first embodiment. Run the software for Each of the processors 101-1, 101-2,..., 101-N is used to execute each process of the concurrent program simultaneously and in parallel. Each of these processors 101-
, 101-N are connected to the I / O interface 102, and the I / O interface 10
2, the shared memory 103 and peripheral devices can be accessed. The shared memory 103 stores each processor 1
Each of the processes executed on 01-1, 101-2,..., 101-N is used to exchange information and perform a cooperative operation. The peripheral devices include an input device 104, an output device 105, an external storage device 106, and the like.

【0033】このうち入力装置104は、キーボードと
ポインティングデバイスなどを有し、ユーザによる各種
コマンドやデータの入力を受け入れる装置である。出力
装置105は、CRTディスプレイなどを有し、ソース
プログラムやデバッグ状況に関する情報を、テキスト表
示又はグラフィック表示することによって、ユーザに提
示するための装置である。ユーザは、これら入力装置1
04及び出力装置105を用いて、対話的にコンピュー
タを操作することができる。外部記憶装置106は、磁
気ディスク装置や光磁気ディスク装置などを用いて、ソ
ースプログラムやデバッグ状況に関する情報を書き込み
及び読み出すことができるように構成されている。
The input device 104 has a keyboard, a pointing device, and the like, and receives various commands and data input by the user. The output device 105 has a CRT display or the like, and is a device for presenting information on a source program or a debugging situation to a user by text display or graphic display. The user operates these input devices 1
The computer can be operated interactively using the output device 104 and the output device 105. The external storage device 106 is configured to be able to write and read information relating to a source program and debugging status using a magnetic disk device or a magneto-optical disk device.

【0034】なお、第1実施形態は上記のようなマルチ
CPUシステムを用いて構成されているが、他の構成例
として、例えば共有メモリのある並列計算機、共有メモ
リのない並列計算機、分散ネットワーク計算機システ
ム、単一CPUによるマルチタスク計算機などを用いて
第1実施形態を実現することも可能である。
Although the first embodiment is configured using the above-described multi-CPU system, examples of other configurations include, for example, a parallel computer having a shared memory, a parallel computer having no shared memory, and a distributed network computer. The first embodiment can be realized by using a system, a multi-task computer with a single CPU, or the like.

【0035】これらのコンピュ−タシステム上の並行プ
ログラムの形態としては、複数のプロセス(タスクとも
呼ぶ)が、プロセッサに分散して存在し、プロセス間で
インタラクション(協調動作)を行なうものが一般的で
ある。プロセス間でインタラクションを行なう形態とし
ては、 ・共有メモリ/黒板を介したインタラクション ・メッセ−ジ交換によるインタラクション ・通信チャンネルやストリ−ムによるインタラクション などがある。
As a form of a concurrent program on these computer systems, a plurality of processes (also called tasks) are distributed among processors, and an interaction (cooperative operation) is performed between the processes. is there. Interaction between processes includes:-Interaction via shared memory / blackboard-Interaction by message exchange-Interaction by communication channel and stream.

【0036】また、並行プログラミング言語としては、 ・手続き型言語に同期通信機構を付加した言語 ・並列論理型言語 ・並列ル−ル型言語 などがある。The parallel programming languages include: a language in which a synchronous communication mechanism is added to a procedural language; a parallel logic language; and a parallel rule language.

【0037】本装置の各機能は、先に述べたように、ソ
フトウェアによって実現されるが、このソフトウェアが
上記のような一連のハードウェア資源を利用することに
よって第1実施形態の効果を生じさせる。したがって、
各ハードウェア資源の構成や種類は、それぞれ同様の機
能を果たす他の構成や種類のものに置き換えても差しつ
かえない。
As described above, each function of the present apparatus is realized by software, and the software uses the above-described series of hardware resources to produce the effects of the first embodiment. . Therefore,
The configuration or type of each hardware resource may be replaced with another configuration or type that performs the same function.

【0038】〔1−1−2.機能に関する構成〕第1実
施形態の各機能は、上記のようなコンピュータシステム
をソフトウェアで制御することによって実現される。こ
こで、第1実施形態の各機能を、図2の機能ブロック図
に示す。第1実施形態は、この図に示すように、試験部
2と、保存部4と、変更部5とを有する。このうち試験
部2は、与えられたプログラム1をさまざまな条件で実
行することによって、プログラム1の正しい挙動がどの
ようなものかを試験する手段であり、請求項1,2にい
う「試験する手段」に相当する。
[1-1-2. Configuration of Function] Each function of the first embodiment is realized by controlling the above-described computer system by software. Here, each function of the first embodiment is shown in a functional block diagram of FIG. The first embodiment includes a test unit 2, a storage unit 4, and a change unit 5, as shown in FIG. The test section 2 is a means for testing the correct behavior of the program 1 by executing the given program 1 under various conditions. Means ".

【0039】また、保存部4は、試験の結果を表す試験
情報3を保存する手段で、請求項2にいう「保存する手
段」に相当する。試験情報3は、具体的には、プログラ
ム1の挙動が正しいとユーザが認めた場合の実行ログで
ある。また、変更部5は、試験で得られた正しい挙動を
示すようにプログラム1を変更する手段で、請求項1,
2にいう「変更する手段」に相当する。ここで、プログ
ラム1の変更はガード命令を付加することによって行な
い、ガード命令とは、保存部4に保存されている実行ロ
グに記録されていない挙動、換言すれば「正しい挙動で
あると認められていない挙動」を抑制する記述である。
The storage section 4 is a means for storing the test information 3 representing the test result, and corresponds to the "storage means" described in claim 2. The test information 3 is, specifically, an execution log when the user recognizes that the behavior of the program 1 is correct. The changing unit 5 is means for changing the program 1 so as to show a correct behavior obtained in the test.
This corresponds to “means for changing” described in 2. Here, the program 1 is changed by adding a guard instruction. The guard instruction is a behavior that is not recorded in the execution log stored in the storage unit 4, in other words, “is a correct behavior. This is a description that suppresses "behavior that does not occur."

【0040】さらに、変更部5は、具体的には、非決定
性抽出部51、ガード生成部52、ガード付加部53を
有する。このうち非決定性抽出部51は、与えられたプ
ログラム1から挙動が非決定性を有する部分を抽出する
手段であり、請求項3にいう「抽出する手段」に相当す
る。また、ガード生成部52は、抽出された非決定性を
有する部分についてガード命令を生成する手段であり、
請求項3にいう「生成する手段」に相当する。また、ガ
ード付加部53は、生成されたガード命令を前記非決定
性を有する部分に付加する手段であり、請求項3にいう
「付加する手段」に相当する。
Further, the changing unit 5 specifically has a non-deterministic extracting unit 51, a guard generating unit 52, and a guard adding unit 53. Among them, the non-deterministic extracting unit 51 is a means for extracting a part whose behavior is non-deterministic from the given program 1 and corresponds to “extracting means” in claim 3. Further, the guard generation unit 52 is a unit that generates a guard instruction for the extracted nondeterministic portion,
This corresponds to the "generating means" described in claim 3. Further, the guard adding unit 53 is a means for adding the generated guard instruction to the non-deterministic part, and corresponds to the “means for adding” in claim 3.

【0041】〔1−2.第1実施形態の作用〕上記のよ
うな構成を有する第1実施形態は次のような作用を有す
る。まず、第1実施形態における処理手順を図3のフロ
ーチャートに示す。この図に示すように、第1実施形態
では、まず、エディタなどを用いてプログラム1を作成
し、必要な修正などがあれば予め行なっておく(ステッ
プ1)。続いて、試験部2を用いて、与えられたプログ
ラム1を種々の試験項目についてテスト実行することに
よって試験する(ステップ2)。
[1-2. Operation of the First Embodiment] The first embodiment having the above configuration has the following operation. First, a processing procedure in the first embodiment is shown in a flowchart of FIG. As shown in this figure, in the first embodiment, first, the program 1 is created using an editor or the like, and if necessary, any modification is made in advance (step 1). Subsequently, the test is performed by executing the given program 1 for various test items using the test section 2 (step 2).

【0042】すなわち、上記テスト実行はいくつもの条
件(試験項目)下で行ない、この試験項目は、プログラ
ムに与えるテストデータの内容や与えるタイミングを変
更したり、プログラムの部分ごとの実行順序を変更する
ことによって何種類も用意する。なお、この試験項目
は、テストデータの内容、与えるタイミング、部分ごと
の実行順序などが順列組み合わせの要領で各種考えられ
る場合でも、その総数が一定の数に収まるなら全ての組
み合わせについて予め自動生成してもよい。但し、総数
が多すぎる場合は、問題となりそうな点や典型例だけを
試験項目としてテストを繰り返すようにしてもよい。
That is, the test execution is performed under a number of conditions (test items), and the test items change the contents and timing of test data to be given to the program, and change the execution order for each part of the program. There are several types available. Even if the contents of test data, the timing of application, and the execution order for each part can be variously considered in the manner of permutation combination, this test item is automatically generated in advance for all combinations if the total number is within a certain number. You may. However, if the total number is too large, the test may be repeated using only points or typical examples that are likely to cause problems as test items.

【0043】上記のような各試験項目についてテスト実
行を行なうごとに、その実行ログは一時記憶領域に格納
しておく。そして、利用者は、実行ごとにその処理結果
が正しいか否かを判定して本装置に入力する(ステップ
3)。テスト実行の結果、不具合が発見された場合は
(ステップ3)ステップ1に戻り、プログラム自体をデ
バッグする。一方、ステップ3において不具合が発見さ
れない場合は、一時記憶領域に格納されている実行ログ
は実行結果が正しい場合の実行ログであるから、一次記
憶領域から保存部4にコピーされ、試験情報3として蓄
積される(ステップ4)。このような手順を繰り返すこ
とによってテストすべき試験項目(テストデータ)がな
くなるまで(ステップ5)テストを続行する。
Each time a test is executed for each test item as described above, its execution log is stored in a temporary storage area. The user determines whether the processing result is correct for each execution and inputs the result to the apparatus (step 3). If a failure is found as a result of the test execution (step 3), the process returns to step 1 to debug the program itself. On the other hand, if no defect is found in step 3, the execution log stored in the temporary storage area is an execution log when the execution result is correct, and is copied from the primary storage area to the storage unit 4 as test information 3. It is stored (step 4). By repeating such a procedure, the test is continued until there are no more test items (test data) to be tested (step 5).

【0044】なお、バグ(不具合)が判明し、ステップ
1に戻ってプログラムの修正を行った場合、その時点ま
でに保存されている実行ログは次のように扱う。すなわ
ち、デバッグによる変更が、保存されている実行ログと
その実行ログを得たときの条件との関係に影響を与える
ような内容の場合や、その判断がつかないような場合
は、その時点までに保存されていた実行ログは廃棄し、
デバッグ後のプログラム1について再度試験を行なう。
そうでない場合は、それまでの実行ログはそのまま保存
し、新たな試験情報3を追加して行く。
When a bug (fault) is found and the program returns to step 1 to correct the program, the execution log stored up to that point is handled as follows. In other words, if the changes made by debugging affect the relationship between the saved execution log and the conditions under which the execution log was obtained, or if the judgment cannot be made, Discard the execution log saved in
The test is performed again on the debugged program 1.
If not, the previous execution log is stored as it is, and new test information 3 is added.

【0045】上記のように実行ログの蓄積が終了した
ら、まず、変更部5の非決定性抽出部51(図2)が、
プログラム1を解析することによって非決定性を有する
部分を抽出する(ステップ6)。ここで、非決定性の抽
出は従来から知られた技術を用いて行なえばよい。例え
ば、2つ以上のプロセスの間に、同じデータを読み書き
することで影響を与える命令があるが、それらの命令の
実行の順序や時期を指定する命令が存在しない場合、2
つのプロセスは非決定な振る舞いを示す可能性が高いの
で、非決定性を持つ部分として抽出する。非決定性の具
体的な抽出方法は開発対象とするプログラム言語に応じ
て詳細が異なるが、一例として「Emrath他、Detecting
Nondeterminacy in Parallel Programs, IEEE Softwar
e, Jan 1992」(参考文献1)などに記述されている。
When the accumulation of the execution log is completed as described above, first, the non-deterministic extracting unit 51 (FIG. 2) of the changing unit 5
A non-deterministic part is extracted by analyzing the program 1 (step 6). Here, the extraction of nondeterminism may be performed using a conventionally known technique. For example, if there are instructions between two or more processes that affect reading and writing the same data, but there are no instructions that specify the order or timing of execution of those instructions,
Since two processes are likely to exhibit nondeterministic behavior, they are extracted as nondeterministic parts. The details of the specific method of extracting nondeterminism differ depending on the programming language to be developed. For example, see "Emrath et al., Detecting
Nondeterminacy in Parallel Programs, IEEE Softwar
e, Jan 1992 "(Reference 1).

【0046】続いて、抽出された非決定性を有する部分
それぞれに対して、ガード生成部52が試験情報3を用
いて非決定性を抑制するガード命令を生成する(ステッ
プ7)。このガード命令は、非決定的な挙動のうち、試
験情報として蓄積された実行ログにないものを抑制する
記述で、一般的にはプログラム中のある動作を開始する
ための条件文として生成される。このガ−ド命令を生成
する手法や具体的な内容は開発対象とするプログラムの
言語に応じて詳細は異なるが、例えば、次のように作成
することができる。
Subsequently, for each of the extracted nondeterministic parts, the guard generation unit 52 generates a guard instruction for suppressing nondeterminism using the test information 3 (step 7). The guard instruction is a description for suppressing non-deterministic behaviors that are not included in the execution log accumulated as test information, and is generally generated as a conditional statement for starting a certain operation in a program. The details and the method of generating the guard instruction differ depending on the language of the program to be developed. For example, the method can be created as follows.

【0047】まず、2つの部分の間で実行順序が問題と
なる場合としては、2つの部分が、変数やメッセージな
ど何らかの共通するデータを通じて関連し合っている場
合が挙げられる。このような場合、まず、実行順序を制
御したい2つの部分から、このような共通のデータを検
出し、そのデータに関わる記述の部分を、抽出した実行
順序を実現されるように書き換えてガード命令とする。
どのような記述があるときに、どのような書き換えを行
なうかの対応関係は、言語ごとにあらかじめ対照テーブ
ルを作成しておけばよい。そして、このような書き換え
の形式を対照テーブルから読み出し、実際の変数名など
データの名称と組み合わせてガード命令を作成する。
First, as a case where the execution order becomes a problem between the two parts, there is a case where the two parts are related to each other through some common data such as variables and messages. In such a case, first, such common data is detected from the two parts whose execution order is to be controlled, and the description part relating to the data is rewritten so as to realize the extracted execution order, and the guard instruction is executed. And
The correspondence between what description and what rewriting is performed may be made in advance by creating a comparison table for each language. Then, such a rewriting format is read from the comparison table, and a guard instruction is created by combining the rewriting format with a data name such as an actual variable name.

【0048】このようなガード命令は、一般的には、あ
るステートメントの実行を開始するための条件文として
生成される。このような条件文が付加されたステートメ
ントは条件が満足されない限り実行されないので、プロ
セス間で実行順序などを制御する作用を果たす。このよ
うに生成されたガード命令を、ガード付加部53がプロ
グラム1のソ−スコ−ド中の対応する位置に付加するこ
とによって、変更されたプログラム6を作成する(ステ
ップ8)。
Such a guard instruction is generally generated as a conditional statement for starting execution of a certain statement. Since the statement to which such a conditional statement is added is not executed unless the condition is satisfied, the statement controls the order of execution between processes. The guard instruction generated in this way is added by the guard adding unit 53 to the corresponding position in the source code of the program 1 to create a modified program 6 (step 8).

【0049】テストしていない挙動は正しいという保証
がないが、上記のようにガード命令を付加されたプログ
ラム6は、このようなテストしていない挙動を行わな
い。このため、第1実施形態によれば、非決定性を有す
ることによる不具合が回避され、プログラムの信頼性が
大幅に向上する。
Although there is no guarantee that the untested behavior is correct, the program 6 to which the guard instruction is added as described above does not perform such untested behavior. For this reason, according to the first embodiment, problems due to nondeterminism are avoided, and the reliability of the program is greatly improved.

【0050】なお、本実施形態は、さまざまな種類の言
語に広く適用できるものであるが、とりわけパタ−ン照
合型並行プログラミング言語では非決定的な要素が多い
ため、本発明による効果が大きい。以下、第1実施形態
を適用した場合の実例を、次の4種類のパタ−ン照合型
並行プログラミング言語のそれぞれについて説明する。 ・並列論理型言語(GHC) ・ル−ルベ−ス言語(OPS5) ・共有変数あるいはブラックボ−ド(黒板)型並列プロ
グラミング言語(Linda−C) ・メッセ−ジ通信型並列プログラミング言語(Ada) 〔1−3.第1の実施例…並列論理型言語に適用した場
合〕第1の実施例は、請求項4に対応するもので、本発
明を並列論理型言語GHCに適用したものである。この
並列論理型プログラムは複数の節を含み、個々の節につ
いて実行(単一化)される対象が述語名及び変数で指定
されている。そして、並列論理型プログラムでは、それ
ぞれの節が実行可能か否かの判断が並行に行なわれる結
果、ある状況で実行可能な節の候補が複数存在する場合
がある。この場合、節は一つだけ選択実行され、一つの
候補が選択実行されると他の候補は実行されないことに
なる。
Although the present embodiment can be widely applied to various kinds of languages, the effect of the present invention is particularly large in a pattern matching type parallel programming language, which has many non-deterministic elements. Hereinafter, examples in which the first embodiment is applied will be described for each of the following four types of pattern matching type parallel programming languages. Parallel logic language (GHC) Rule-based language (OPS5) Shared variable or blackboard (blackboard) parallel programming language (Linda-C) Message communication parallel programming language (Ada) [1-3. First Embodiment: Case of Applying to Parallel Logic Language] The first embodiment corresponds to claim 4 and applies the present invention to a parallel logic language GHC. This parallel logic type program includes a plurality of clauses, and an object to be executed (unified) for each clause is specified by a predicate name and a variable. Then, in the parallel logic type program, as a result of judging whether each clause is executable or not in parallel, there may be a plurality of clause candidates that can be executed in a certain situation. In this case, only one clause is selected and executed, and if one candidate is selected and executed, the other candidates will not be executed.

【0051】すなわち、従来の逐次型の論理型言語にお
いては、実行可能な節の候補が複数存在する場合でも優
先順位は明確に決まっており、プログラムソ−スコ−ド
中のより上の位置に記述されている節ほど優先されるの
で、非決定性は存在しなかった。ところが、並列論理型
言語においては節が実行可能か否かの判断も並行に行な
われるために、どの候補が選択されるかは非決定的であ
る場合が多く、どの候補が実行されるかによってプログ
ラムの挙動が変りうる。
That is, in the conventional sequential logic language, even when there are a plurality of executable clause candidates, the priority order is clearly determined, and the priority is determined at a higher position in the program source code. There was no non-determinism, as the clauses described had precedence. However, in a parallel logic language, whether or not a clause is executable is also determined in parallel, so it is often indeterminate which candidate is selected, and the program depends on which candidate is executed. Behavior can change.

【0052】ここで、第1の実施例において開発対象と
する並列論理型プログラムを図4に示す。このプログラ
ムは各述語p1,p11,p2,p21を含んでいて、
各述語p1,p11,p2,p21は、それぞれ対応す
るプロセスP1,P11,P2,P21を動作させるた
めの記述である。なお、これらプロセスP1,P11,
P2,P21が相互に関連を持ちながら動作することを
図5の概念図に示す。
FIG. 4 shows a parallel logic program to be developed in the first embodiment. This program contains each predicate p1, p11, p2, p21,
Each predicate p1, p11, p2, p21 is a description for operating the corresponding process P1, P11, P2, P21, respectively. These processes P1, P11,
FIG. 5 is a conceptual diagram showing that P2 and P21 operate while associating with each other.

【0053】図4のプログラムでは、述語p2は4つの節
から構成されているが、偶数の処理に関する2番目の節
と奇数の処理に関する3番目の節は、それぞれ4番目の
節と同時に実行可能となりうるので、この点に非決定性
が存在する。この非決定性を以下"nd:p2" と表す。
In the program of FIG. 4, the predicate p2 is composed of four clauses, but the second clause for even-numbered processing and the third clause for odd-numbered processing can be executed simultaneously with the fourth clause. Therefore, there is nondeterminism in this respect. This non-determinism is referred to as "nd: p2" hereinafter.

【0054】また、図4のプログラムを実行すると、こ
の非決定性nd:p2 に起因して、バグが発生したりしなか
ったりという現象が発生する。ここで、バグのない実行
系列θ1及びバグがある実行系列θ2の例を図6に示
す。これら実行系列において、pi/kは、述語piのk番
目の節を意味する。なお、図4のプログラムが与えられ
た時点では、非決定性nd:p2 や実行系列θ1,θ2の存
在は潜在的で、まだ判明していない。
When the program shown in FIG. 4 is executed, a phenomenon that a bug occurs or not occurs due to the nondeterminism nd: p2. Here, FIG. 6 shows an example of the execution sequence θ1 having no bug and the execution sequence θ2 having the bug. In these execution sequences, pi / k means the k-th clause of the predicate pi. At the time when the program shown in FIG. 4 is given, the existence of the nondeterminism nd: p2 and the execution sequences θ1 and θ2 are latent and have not been determined yet.

【0055】第1の実施例では、図3のステップ1(プ
ログラムの作成)で図4に示すプログラム1が作成され
ると、ステップ2(プログラムの試験)において、図4
のプログラム1を試験部2でテスト実行することによっ
て試験する。
In the first embodiment, when the program 1 shown in FIG. 4 is created in step 1 (program creation) of FIG. 3, in step 2 (test of the program), the program shown in FIG.
The test is performed by executing the test 1 of the program 1 in the test section 2.

【0056】この際、このプログラム1では、非決定性
nd:p2 によってバグ(FAIL)が発生したり発生しなかった
りする。すなわち、図6に示したバグのない実行系列θ
1が得られることもあれば、バグがある実行系列θ2が
得られることもある。この2つの実行系列θ1,θ2を
含む多くの実行系列の中で、試験ではθ1だけが実行さ
れ、実行系列θ1においてバグがないことをユーザが確
認し、その旨を入力すると、ステップ4(実行ログの蓄
積)では、実行系列θ1の実行ログを試験情報3として
蓄積する。θ2はたまたま実行されず、バグは見つから
ならなかったとする。
At this time, in this program 1, nondeterminism
A bug (FAIL) may or may not occur with nd: p2. That is, the execution sequence θ having no bug shown in FIG.
1 may be obtained, or the execution sequence θ2 having a bug may be obtained. Of the many execution sequences including these two execution sequences θ1 and θ2, only θ1 is executed in the test, and the user confirms that there is no bug in the execution sequence θ1, and when the user inputs that fact, step 4 (execute) In (accumulation of log), the execution log of the execution sequence θ1 is accumulated as the test information 3. It is assumed that θ2 is not executed by chance and no bug is found.

【0057】さらに、ステップ6(非決定性の抽出)で
は、プログラム1を解析することによって非決定性を有
する部分として、先に述べた2,3,4番目の節を抽出
する。このような非決定性を有する部分を抽出するに
は、次のような手法を用いる。すなわち、GHCプログ
ラムにおいては、実行過程で実行可能な節の数が複数あ
ればそれらの節が非決定性を有する部分である。このよ
うな非決定性は、例えば、GHCインタプリタを作成し
てプログラムを逐次解釈実行させ、プログラムの中で実
行可能になっている部分を特定させることによって容易
に抽出することができる。
Further, in step 6 (extraction of nondeterminism), the second, third and fourth clauses described above are extracted as a nondeterministic part by analyzing the program 1. The following method is used to extract the nondeterministic portion. That is, in the GHC program, if there are a plurality of executable clauses in the execution process, those clauses are nondeterministic parts. Such nondeterminism can be easily extracted by, for example, creating a GHC interpreter, causing a program to be sequentially interpreted and executed, and specifying an executable portion in the program.

【0058】この場合、続くステップ7(ガ−ド生成)
では、非決定性nd:p2 を前提として、正しいことが確認
された実行ログである実行系列θ1を解析する。そし
て、この解析によって、抽出された節に含まれる述語の
変数の単一化(パタ−ンマッチ)について、実行ログに
記録されている実行系列のみに適合するように制約を強
化したガード命令を生成する。
In this case, the following step 7 (guard generation)
Then, on the premise of non-determinism nd: p2, the execution sequence θ1 which is an execution log confirmed to be correct is analyzed. By this analysis, a guard instruction with a stricter constraint to match only the execution sequence recorded in the execution log with respect to unification (pattern match) of the variables of the predicates included in the extracted clause is generated. I do.

【0059】この例では、結果的にp2([num(N,T)|X],Ou
t)におけるNとTは常に変数ではなくアトムであること
が抽出できる。このため、この節について、任意の項と
単一化するのではなく、アトムのみと単一化するような
ガ−ド命令wait(N) を生成する。
In this example, as a result, p2 ([num (N, T) | X], Ou
It can be extracted that N and T in t) are not variables but atoms. For this reason, a guard instruction wait (N) is generated such that this section is unified with only an atom, not with any term.

【0060】ステップ8(ガ−ド付加)では、述語p2/4
のtrueの代わりに上記のように生成したガード命令wait
(N) およびwait(T) を挿入することによってプログラム
を変更する。変更されたプログラム(図7)では、バグ
のある実行系列θ2が発生するような非決定性はガ−ド
命令により排除されている。
In step 8 (guard addition), the predicate p2 / 4
Guard instruction wait generated as above instead of true
Modify the program by inserting (N) and wait (T). In the modified program (FIG. 7), the non-determinism such that the execution sequence θ2 having a bug occurs is eliminated by the guard instruction.

【0061】以上のように、第1の実施例では、同時に
実行可能となりうる節が複数存在する場合でも、述語の
変数を単一化させる対象を限定するガード命令を用いる
ことによって、並列論理型プログラムの非決定性が抑制
され、正しい挙動が実現される。
As described above, in the first embodiment, even when there are a plurality of clauses which can be executed simultaneously, the use of the guard instruction for limiting the target for unifying the variable of the predicate enables the parallel logical type Nondeterminism of the program is suppressed, and correct behavior is realized.

【0062】〔1−4.第2の実施例…ルールベース言
語に適用した場合〕第2の実施例は、ル−ルベ−ス言語
(OPS5)に本発明を適用したものである。ルール型
言語によるプログラムは、条件部と実行部とを有するル
ールを組み合わせたもので、各時点でのデータに条件部
がマッチするルールが起動され、そのルールの実行部が
実行されることによって処理が進んで行く。
[1-4. Second Embodiment: In the case of application to a rule-based language] The second embodiment is an application of the present invention to a rule-based language (OPS5). A program in a rule type language is a combination of a rule having a condition part and an execution part. A rule whose condition part matches data at each time is activated, and the execution part of the rule is executed. Goes on.

【0063】まず、第2の実施例における開発対象とし
て、ル−ルベ−ス言語OPS5で記述されたプログラム
を図8に示す。このプログラムは、ワ−キングメモリ上
の整数デ−タに対して、奇数および偶数の総数を数え上
げるものである。このプログラムには、rule2 、rule3
、rule4 に関する非決定性ndとして、奇数に係るrule2
及び偶数に係るrule3 が、それぞれrule4 と同時に実
行可能となりうるという非決定性が存在する。
First, FIG. 8 shows a program described in the rule-based language OPS5 as a development target in the second embodiment. This program counts the total number of odd and even numbers for integer data in the working memory. This program includes rule2, rule3
, As nondeterminism nd for rule4, rule2 for odd numbers
And even-numbered rule3 can be executed simultaneously with rule4.

【0064】このプログラムを実行すると、上記の非決
定性に起因して、バグが発生したりしなかったりする。
ここで、ワ−キングメモリに(data 1 unmark) が存在し
ていたとして、バグのない実行系列θ1とバグがある実
行系列θ2を示す。 ・バグのない実行系列θ1: rule1 → rule2 → rule4 、結果(count odd 1) ・バグがある実行系列θ2: rule1 → rule4 、結果(count 1 1) 第2の実施例では、ステップ1(プログラム作成)で、
図8に示したプログラムが与えられると、ステップ2
(プログラム試験)では、試験部2でテスト実行を行な
うと、上記の実行系列θ1及びθ2が得られる可能性が
ある。ここでは、ユーザが、θ1,θ2のうちθ1のみ
を試験し、実行系列θ1においてバグがないことを確認
し、その旨を入力すると、ステップ4(実行ログ蓄積)
では、バグのない実行系列θ1の実行ログが試験情報3
として保存部4に蓄積される。θ2はたまたま実行され
ず、バグは発見されなかったとする。
When this program is executed, a bug may or may not occur due to the nondeterminism described above.
Here, assuming that (data 1 unmark) exists in the working memory, an execution sequence θ1 having no bug and an execution sequence θ2 having a bug are shown. -Execution sequence without bug θ1: rule1 → rule2 → rule4, result (count odd 1) ・ Execution sequence with bug θ2: rule1 → rule4, result (count 1 1) In the second embodiment, step 1 (program creation) )so,
When the program shown in FIG.
In the (program test), when a test is performed by the test unit 2, the above-described execution sequences θ1 and θ2 may be obtained. Here, when the user tests only θ1 out of θ1 and θ2, confirms that there is no bug in the execution sequence θ1, and inputs that fact, step 4 (accumulation of execution log)
Then, the execution log of the execution sequence θ1 having no bug is the test information 3
Is stored in the storage unit 4. It is assumed that θ2 happens not to be executed and no bug is found.

【0065】さらに、ステップ6(非決定性抽出)で
は、プログラム1から、非決定性を有する部分として先
に述べたrule2,rule3,rule4 を抽出する。ル−ルベ−ス
言語によるルール型プログラムでは、実行過程で適用可
能なル−ルの数が複数あればそれが非決定性を意味する
ので、ル−ルインタプリタを作成してプログラムを実行
し、同時に利用可能となる部分を検出することによって
非決定性は容易に抽出できる。
Further, in step 6 (extraction of nondeterminism), rule2, rule3, and rule4 described above are extracted from the program 1 as portions having nondeterminism. In a rule-based program in a rule-based language, if there are a plurality of rules applicable in the execution process, which means nondeterminism, a rule interpreter is created and the program is executed. Nondeterminism can be easily extracted by detecting the portion that becomes available.

【0066】ステップ7(ガ−ド作成)では、以上のよ
うに抽出された非決定性を有する部分を前提として、実
行系列θ1の実行ログを解析し、非決定性ndに関して、
ル−ルの条件部のパタ−ンマッチを、その実行系列のル
−ルだけに適合するように制約を強めることによってガ
ード命令を生成する。この例では、rule4 の(mark ^val
ue<Type>) の<Type>は整数ではなく、より限定されたod
d またはevenとすることによってガード命令として用い
る。
In step 7 (guard creation), the execution log of the execution sequence θ1 is analyzed on the premise of the nondeterministic portion extracted as described above.
A guard instruction is generated by strengthening the constraint so that the pattern match of the condition part of the rule matches only the rule of the execution sequence. In this example, (mark ^ val
ue <Type>) is not an integer, but a more specific od
Use as a guard instruction by setting it to d or even.

【0067】そして、このように作成されたガ−ドodd_
or_even(<Type>) は、ステップ8(ガ−ド付加)におい
て、rule4 の<Type>の代わりに挿入され、変更されたプ
ログラム6として図9に示すプログラムが得られる。
Then, the guard "odd_" created in this manner is created.
or_even (<Type>) is inserted in place of <Type> in rule 4 in step 8 (addition of guard), and the program shown in FIG.

【0068】以上のように、第2の実施例では、同時に
実行可能となりうるルールが複数存在する場合でも、ル
ールがマッチする条件を限定したガード命令を用いるこ
とによって起動されるルールが限定されるので、ルール
型プログラムの非決定性が抑制され、正しい挙動が実現
される。
As described above, in the second embodiment, even when there are a plurality of rules that can be executed at the same time, the rules to be activated by using the guard instruction in which the conditions for matching the rules are limited are limited. Therefore, nondeterminism of the rule type program is suppressed, and correct behavior is realized.

【0069】〔1−5.第3の実施例…黒板型並行プロ
グラミング言語に適用した例〕第3の実施例は、請求項
6に対応するもので、本発明を黒板型並行プログラミン
グ言語(Linda−C)に適用したものである。この
黒板型並行プログラミング言語は、複数のプロセスが、
黒板(タプルスペ−ス)上に保存されるデータの組であ
るタプルを読み書きすることによって協調動作を行うも
のである。
[1-5. Third Embodiment An example in which the present invention is applied to a blackboard-type parallel programming language] A third embodiment corresponds to claim 6, in which the present invention is applied to a blackboard-type parallel programming language (Linda-C). is there. This blackboard-type parallel programming language has multiple processes,
A cooperative operation is performed by reading and writing a tuple, which is a set of data stored on a blackboard (tuple space).

【0070】黒板型並行プログラムでは、各プロセスの
動作は黒板上のタプルを読み込むことで変化する。一
方、黒板に書き出されたタプルは、特に指定しないかぎ
りすべてのプロセスからアクセスできる。このため、同
じタプルとパタ−ンマッチ可能な複数のプロセスが存在
する場合、非決定的な状況が発生する。
In the blackboard type parallel program, the operation of each process changes by reading a tuple on the blackboard. On the other hand, tuples written on the blackboard can be accessed by all processes unless otherwise specified. Therefore, when there are a plurality of processes that can be pattern-matched with the same tuple, a non-deterministic situation occurs.

【0071】この黒板型並行プログラムについては、黒
板上に保存された同一のタプルとパターンマッチ可能な
複数のプロセスを非決定性を有する部分として抽出す
る。そして、抽出されたプロセスについて、保存されて
いる実行ログにしたがって、黒板上のタプルを読み書き
できるプロセスを限定するようなガード命令を生成して
付加する。本発明では、下記のようなタプルの項を追加
することで、非決定性を制約することができる。 (T1,T2,...,Guard) これは、追加するタプルの項の形式を一般化して示した
もので、T1,T2はタプルとして黒板に記入する情報
の内容を抽象的に示し、Guardはそのタプルを読み
込めるプロセスを制限するための記述を示す。
In this blackboard-type parallel program, a plurality of processes that can be pattern-matched with the same tuple stored on the blackboard are extracted as nondeterministic portions. Then, a guard instruction is generated and added to the extracted process in accordance with the stored execution log so as to limit the processes that can read and write tuples on the blackboard. In the present invention, non-determinism can be restricted by adding the following tuple term. (T1, T2, ..., Guard) This is a generalization of the form of the tuple term to be added. T1 and T2 abstractly show the contents of information to be written on the blackboard as tuples. Indicates a description to restrict the process that can read the tuple.

【0072】例えば、図10は、各プロセスP1〜P4
がタプルスペースS上のタプルA,Bを読み書きする状
態を示す概念図である。この図では、タプルに記入する
情報T1,T2の具体的な内容として、タプルAとして
情報(′a′,2) が、タプルBとして情報(′b′,1) がそ
れぞれ記入されている。この図に示すように、最初に与
えられたプログラム1では、プロセスP1が生成したあ
るタプルA(T1,T2) は、プロセスP2,P3およびP4
のいずれでも読み込み可能だとする。しかし、保存され
ているテストの実行ログにおいて、プロセスP1が生成
したタプルAが常にプロセスP2によって読み込まれて
いるならば、プロセスP1におけるタプルAの書き込み
命令を変更することによって、書き込むタプルAを(T1,
T2,′P1-P2′) という形式に変更する。さらにプロセス
P2におけるタプルAの読み込み命令を変更し、(T1,T
2,′P1-P2′) とする。これによって、プロセスP3や
P4はこのタプルAを読み込みことが不可能になり、非
決定性が抑制される(図11)。
For example, FIG. 10 shows each process P1 to P4
Is a conceptual diagram showing a state in which tuples A and B on a tuple space S are read and written. In this figure, information ('a', 2) is written as tuple A and information ('b', 1) is written as tuple B as specific contents of information T1 and T2 to be written in the tuple. As shown in this figure, in the program 1 given first, a tuple A (T1, T2) generated by the process P1 is replaced by processes P2, P3 and P4.
It can be read by any of. However, if the tuple A generated by the process P1 is always read by the process P2 in the stored test execution log, the tuple A to be written is changed by changing the write instruction of the tuple A in the process P1 to ( T1,
T2, 'P1-P2'). Further, the instruction to read tuple A in the process P2 is changed to (T1, T
2, 'P1-P2'). This makes it impossible for the processes P3 and P4 to read the tuple A, thereby suppressing nondeterminism (FIG. 11).

【0073】また、同様な例として、例えば別のテスト
の実行ログにおいて、プロセスP3で生成されたタプル
Bは常にプロセスP4で読み込まれているならば、同様
に(T1,T2,′P3-P4′) のようなタプルBを書き込むよう
に、書き込み命令を変換する。さらにプロセスP4にお
けるタプルBの読み込み命令を変更し、(T1,T2,′P3-P
4′) とする。これによって、プロセスP1やP2はこ
のタプルBの読み込みが不可能になり、非決定性が抑制
される(図11)。
Further, as a similar example, for example, in the execution log of another test, if the tuple B generated in the process P3 is always read by the process P4, similarly, (T1, T2, 'P3-P4 ') Is converted to write a tuple B as shown in FIG. Further, the instruction to read tuple B in process P4 is changed to (T1, T2, 'P3-P
4 '). This makes it impossible for the processes P1 and P2 to read the tuple B, thereby suppressing nondeterminism (FIG. 11).

【0074】以上のように、第3の実施例では、非決定
性の原因となるタプルを読み込むプロセスを限定するよ
うに、タプルの書き込みや読み出しの記述を変更してガ
ード命令とすることによって、黒板型並行プログラムの
非決定性が抑制され、正しい挙動が実現される。
As described above, in the third embodiment, the description of tuple writing and reading is changed to a guard instruction so as to limit the process of reading tuples that cause nondeterminism. Nondeterminism of type-concurrent programs is suppressed, and correct behavior is realized.

【0075】〔1−6.第4の実施例…メッセージ交換
型並行プログラム言語に適用した場合〕第4の実施例
は、請求項7に対応するもので、本発明をメッセ−ジ交
換型並行プログラミング言語(Ada,C言語+μIT
RONなど)に適用したものである。このメッセ−ジ交
換型並行プログラムでは、複数のプロセスがメッセージ
の交換によって協調動作を行なう。このようなメッセー
ジ交換型プログラムでは、プロセス間で交換するメッセ
ージによって各プロセスの挙動が影響されるので、複数
のメッセージを受け取るプロセスではメッセージが到着
する順序に応じて挙動が異なる場合がある。
[1-6. Fourth embodiment: When applied to a message exchange type concurrent programming language] A fourth embodiment corresponds to claim 7, and the present invention relates to a message exchange type concurrent programming language (Ada, C language + μIT
RON). In this message exchange type concurrent program, a plurality of processes cooperate by exchanging messages. In such a message exchange type program, the behavior of each process is affected by the messages exchanged between the processes. Therefore, the behavior of a process receiving a plurality of messages may differ depending on the order in which the messages arrive.

【0076】ここでは、メッセ−ジ交換をsend文、wait
文で行なうとものとする。なお、Adaのように、本来
のプログラム文法上、ガ−ド条件による選択的実行が許
される場合は、これまでの実施例と同様な方法でガ−ド
条件を追加し、非決定性を抑制することが可能である。
Here, the message exchange is performed by using a send statement and a wait statement.
Assume that this is done in sentences. If the original program grammar allows selective execution according to guard conditions, such as Ada, guard conditions are added in the same manner as in the previous embodiments to suppress nondeterminism. It is possible.

【0077】第4の実施例におけるプログラムの例を図
12に示す。このプログラムでは、プロセスP1とP2
が相互に前後関係を考慮せずに同じメイルボックスMB
にメッセ−ジX,Yを送っている。このため、プロセス
P3がこのメイルボックスMBを介してメッセ−ジを受
けとる順序は非決定的であり、プロセスP1からのメッ
セージXと、プロセスP2からのメッセージYのどちら
を先に受けとるかによって、プロセスP3による処理の
結果が異なる。図13は、図12のプログラムにしたが
った場合に、プロセスP3が一つのメイルボックスMB
で二つのメッセージX,Yを受け取ることを示す概念図
である。すなわち、この場合は、プロセスP3はメイル
ボックスMBの内容を順次読み出すだけなので、プロセ
スP1からのメッセージXとプロセスP2からのメッセ
ージYのいずれが先に到達するかに応じて、受け取るメ
ッセージの順序がX,Yの場合とY,Xの場合のいずれ
も発生する可能性がある。
FIG. 12 shows an example of a program in the fourth embodiment. In this program, processes P1 and P2
Are the same mailbox MB without considering each other's context
To send messages X and Y to Therefore, the order in which the process P3 receives the messages via the mailbox MB is non-deterministic, and depends on which of the message X from the process P1 and the message Y from the process P2 is received first. Results in different processing. FIG. 13 shows that when the program of FIG. 12 is followed, the process P3 is executed by one mailbox MB.
FIG. 3 is a conceptual diagram showing that two messages X and Y are received. That is, in this case, since the process P3 only sequentially reads the contents of the mailbox MB, the order of messages to be received depends on which of the message X from the process P1 and the message Y from the process P2 arrives first. Both X and Y cases and Y and X cases may occur.

【0078】この場合の非決定性の抽出では、図12の
メッセージ交換型並行プログラムから、複数のメッセー
ジを異なった順序で受け取る可能性があるプロセスを非
決定性を有する部分として抽出する。第4の実施例に対
応する非決定性の検出については、前記の参考文献1に
詳しい。そして、この実施例では、抽出されたプロセス
について、保存されている実行ログにしたがった順序で
メッセージを受け取るように制御するガード命令を作成
して付加する。
In the extraction of nondeterminism in this case, a process that may receive a plurality of messages in different orders is extracted as a nondeterministic part from the message exchange type parallel program of FIG. The non-deterministic detection corresponding to the fourth embodiment is described in detail in the above-mentioned Reference 1. Then, in this embodiment, a guard instruction for controlling to receive messages in the order according to the stored execution log is created and added to the extracted process.

【0079】上記の例では、試験の実行ログにおいてプ
ロセスP3はプロセスP1からのメッセ−ジをプロセス
P2からのメッセージよりも先に受けとっていたとする
と、ガ−ドを付加したプログラムは図14のようにな
る。すなわち、この変更後のプログラムは、メイルボッ
クスの名前をMB1とMB2に細分化することによっ
て、最初のwait文では、必ずプロセスP1からのメッセ
−ジしか受けとれないように変更したものである。
In the above example, if the process P3 receives the message from the process P1 earlier than the message from the process P2 in the test execution log, the program to which the guard is added is as shown in FIG. become. In other words, the program after this change is modified such that the mailbox name is subdivided into MB1 and MB2 so that the first wait statement can always receive only the message from the process P1.

【0080】このように変更した図14のプログラムに
したがった場合に、プロセスP3が2つのメイルボック
スMB1,MB2を通じて、二つのメッセージX,Yを
受け取る様子を図15に概念的に示す。すなわち、この
場合は、プロセスP3はメイルボックスMB1及びMB
2の内容を順次読み出すだけであるが、プロセスP1か
らのメッセージXは必ずメイルボックスMB1に送信さ
れ、プロセスP2からのメッセージYは必ずメイルボッ
クスMB2に送信される。このため、いずれが先に到達
した場合でも、プロセスP3はメッセージX,Yを決ま
った順序で受け取ることができる。
FIG. 15 conceptually shows how the process P3 receives two messages X and Y via the two mailboxes MB1 and MB2 in accordance with the program of FIG. 14 thus changed. That is, in this case, the process P3 includes the mailboxes MB1 and MB1.
2, the message X from the process P1 is always sent to the mailbox MB1, and the message Y from the process P2 is always sent to the mailbox MB2. Therefore, regardless of which one arrives first, the process P3 can receive the messages X and Y in a predetermined order.

【0081】このように第4の実施例では、メッセージ
を交換するためのバッファの役割を果たすメイルボック
スについて名称を細分化するなどして、メッセージが到
着する順序を限定するガード命令を作成する。これによ
って、メッセージ交換型プログラムの非決定性が抑制さ
れ、正しい挙動が実現される。
As described above, in the fourth embodiment, a guard instruction for limiting the order in which messages arrive is created by subdividing the name of a mailbox that serves as a buffer for exchanging messages, for example. Thereby, nondeterminism of the message exchange type program is suppressed, and correct behavior is realized.

【0082】〔1−7.第1実施形態の効果〕以上のよ
うな第1実施形態によれば、次のような利点が得られ
る。例えば、開発しようとするプログラムが大規模で
も、それに比例して大規模な状態遷移モデルやシナリオ
を扱う必要がない。また、プログラム全体の再構成も行
なわないので、処理が簡単になり、大規模なプログラム
に対しても容易に適用することができる。また、プログ
ラムの正しい挙動を実現する手段として、もともとプロ
グラム中に存在する命令を書き換えたガ−ド命令を用い
るので、必ずしも同期命令や割り込みに関する命令を新
たにプログラムに埋め込む必要がない。このため、プロ
グラムが複雑化したりコーディングで用いた同期命令や
割り込み関係の命令に影響を与えることがない。
[1-7. Effects of First Embodiment] According to the above-described first embodiment, the following advantages can be obtained. For example, even if the program to be developed is large, it is not necessary to handle a large-scale state transition model or scenario in proportion thereto. In addition, since the entire program is not reconfigured, the processing is simplified, and it can be easily applied to a large-scale program. Further, since a guard instruction in which an instruction originally existing in the program is rewritten is used as means for realizing the correct behavior of the program, it is not always necessary to newly embed a synchronous instruction or an instruction relating to an interrupt in the program. For this reason, the program is not complicated, and the synchronous instruction and the instruction related to the interrupt used in the coding are not affected.

【0083】〔2.第2の実施の形態〕第2の実施の形
態(以下「第2実施形態」という)は、付加しようとす
るガード命令ごとにプログラムを変更するかどうかをユ
ーザに問い合わせるようにしたものである。図16は、
第2実施形態の構成を示す機能ブロック図である。第2
実施形態は、この図に示すように、図2に示した第1実
施形態の構成に加えて、確認部7を有する。確認部7
は、ガード命令を付加することによってプログラムを変
更しようとする場合に、変更するか否かをガード命令ご
とにユーザに問い合わせる手段であり、請求項11にい
う「問い合わせる手段」に相当する。また、これに対応
して、第2実施形態における変更部3、特にガード付加
部53は、確認部7において、問い合わせに対して変更
してよい旨の回答がユーザから与えられた場合にだけ、
ガード命令を付加するように構成されている。
[2. Second Embodiment] In a second embodiment (hereinafter, referred to as a "second embodiment"), a user is inquired whether to change the program for each guard instruction to be added. FIG.
It is a functional block diagram showing the configuration of the second embodiment. Second
As shown in this figure, the embodiment has a confirmation unit 7 in addition to the configuration of the first embodiment shown in FIG. Confirmation part 7
Is a means for inquiring the user for each guard instruction whether or not to change the program by adding a guard instruction, and corresponds to "inquiring means" in claim 11. Correspondingly, the changing unit 3 in the second embodiment, in particular, the guard adding unit 53, changes the check unit 7 only when the user gives a response to the inquiry that the change may be made.
It is configured to add a guard instruction.

【0084】問い合わせの具体例としては、ガード命令
と関連情報を画面にテキストで表示するとともに「1:
付加 2:無視」といった選択肢を表示し、利用者が数
字で回答するごとに付加したり次へ進むなどが考えられ
る。また、他の例としては、画面にもとのプログラムを
表示し、付加しようとするガード命令を付加する箇所ご
とに別の色で表示する。利用者は付加してよいと考える
ガード命令をマウスのカーソルでクリックして選択する
とクリックされたガード命令が反転表示される。クリッ
クを繰り返すことによって付加したいガード命令を全て
反転表示にしてから利用者が所定の入力キーを操作する
と、選択したガード命令が一気にプログラムに付加され
る。
As a specific example of the inquiry, the guard instruction and the related information are displayed as text on the screen and "1:
An option such as “Addition 2: Ignore” is displayed, and each time the user answers with a number, the option is added or the process proceeds to the next. As another example, the original program is displayed on the screen, and a different color is displayed for each location where the guard instruction to be added is added. When the user clicks and selects a guard command that the user may add, the clicked guard command is highlighted. When the user operates a predetermined input key after all guard instructions to be added are highlighted by repeating clicking, the selected guard instruction is added to the program at a stretch.

【0085】このように、第2の実施の形態では、オリ
ジナルのプログラムを書き換える前に、ユ−ザへ書換え
の可否を問い合わせるので、必要以上にプログラムを制
約するような書き換えを抑止できる。
As described above, in the second embodiment, before rewriting the original program, the user is inquired about whether or not rewriting is possible, so that rewriting that restricts the program more than necessary can be suppressed.

【0086】〔3.第3の実施の形態〕第3の実施の形
態(以下「第3実施形態」という)は、変更されたプロ
グラム6を実行する際の安全性を確保する手段を備えた
例である。
[3. Third Embodiment] A third embodiment (hereinafter, referred to as a "third embodiment") is an example provided with means for ensuring safety when executing the changed program 6.

【0087】なお、上記各実施形態においては、試験で
正しさを確認した挙動以外の挙動は完全に抑制するよう
にガ−ドを作成したのに対し、本実施形態は、挙動の抑
制は部分的なものとしてもよいとの観点からなされたも
のである。
In each of the above embodiments, a guard was prepared so as to completely suppress the behavior other than the behavior whose correctness was confirmed in the test, whereas in the present embodiment, the behavior was partially suppressed. It is made from the viewpoint that it may be a typical thing.

【0088】例えば、まず、プログラムを、正しい実行
ログから抽出された実行順序に従う部分と、それ以外で
実行順序が自由な部分に分ける。該実行順序に従う各部
分についてはプログラムの部分ごとに、先に実行する部
分ほど優先度が高くなるように、数値などで優先度を設
定し、それ以外の実行順序が自由な部分については低い
優先度を設定する。そして、プログラムの実行時には、
コンパイラやインタプリタなどの作用によって優先度の
高い順に各部分を実行する。この場合、優先度が設定さ
れた部分の挙動を優先するが、ある時点で実行可能なプ
ログラムの部分のなかに、そのような優先度の高い挙動
が存在しない時にはそれ以外の挙動を許すようにする。
このようにすれば、必要な実行順序は実現される一方、
それ以外の部分には非決定性(良い非決定性)が残され
る。このような良い非決定性は、例えば負荷の軽いプロ
セスでは処理を先まで進めておくなど、システム全体の
処理効率の向上に貢献する。
For example, first, the program is divided into a part that follows the execution order extracted from the correct execution log and a part whose execution order is free in the other parts. For each part that follows the execution order, a priority is set by a numerical value or the like so that the part that is executed first has a higher priority, and the other parts that have a free execution order have a lower priority. Set the degree. And when the program runs,
Each part is executed in descending order of priority by the action of a compiler or an interpreter. In this case, the behavior of the part with the priority set is prioritized, but if there is no such high-priority behavior in the part of the program that can be executed at a certain point in time, other behaviors are allowed. I do.
In this way, the necessary execution order is realized,
Nondeterminism (good nondeterminism) is left in other parts. Such good nondeterminism contributes to an improvement in the processing efficiency of the entire system, for example, in a process with a light load, the process is advanced.

【0089】このような場合は、図2に示した変更され
たプログラム6が試験された以外の挙動も示すので、実
行の際に安全性を確保する手段を設けることが特に望ま
しい。また、このような優先度を用いない場合でも、変
更部5によって変更された部分は当初のコーディング内
容が変更されているので、やはり安全性を確保すること
が望まれる。
In such a case, since the modified program 6 shown in FIG. 2 also shows behavior other than the test, it is particularly desirable to provide a means for ensuring security during execution. Even when such priorities are not used, the parts changed by the changing unit 5 have the original coding contents changed, so that it is desired to ensure the security as well.

【0090】〔3−1.構成〕図17は第3実施形態の
構成を示す機能ブロック図である。この図に示すよう
に、第3実施形態では、図2に示した第1実施形態の構
成に加え、変更されたプログラム6を実行する実行部8
と、この実行における安全性を確保するための安全化部
9とが設けられている。実行部8は、変更されたプログ
ラム6をコンパイルし、各プロセッサ101−1,10
1−2,…,101−N上でそれぞれプロセスを実行さ
せることによってプログラム6を実行させる手段であ
る。また、安全化部9は、プログラム6のうち、変更部
5によって変更された部分及び実行ログに含まれていな
かった部分を実行する場合に、実行の安全性を確保する
手段であり、請求項12にいう「安全性を確保する手
段」に相当する。安全化部9は、上記の各部分を実行す
る場合に、警告10を出力したりその時点でのプログラ
ムの実行状態を表すデータ11を保存するように構成さ
れている。
[3-1. Configuration] FIG. 17 is a functional block diagram showing the configuration of the third embodiment. As shown in this figure, in the third embodiment, in addition to the configuration of the first embodiment shown in FIG. 2, an execution unit 8 that executes the changed program 6
And a safety unit 9 for ensuring safety in this execution. The execution unit 8 compiles the changed program 6, and executes each of the processors 101-1 and 101-1.
.., 101-N to execute the program 6 by executing the respective processes. Further, the security unit 9 is a means for ensuring the execution safety when executing a part of the program 6 changed by the changing unit 5 and a part not included in the execution log. This corresponds to “means for ensuring safety” described in No. 12. The safety section 9 is configured to output a warning 10 and store data 11 representing the execution state of the program at that time when executing each of the above parts.

【0091】〔3−2.検出の手法〕上記のような構成
を有する第3実施形態は、次のように作用する。まず、
実行ログに含まれていなかった部分、すなわち試験で正
しさを確認した挙動以外の挙動(以下「保証範囲外挙
動」と呼ぶ)は、変更されたプログラム6の実行時に、
次のように検出することができる。すなわち、前記のよ
うに設定した優先度が低い部分が実行されているときに
保証範囲外挙動とみなしてもよいし、試験で正しさを確
認した挙動と保証範囲外の部分とをアドレスなどで区分
しておき、どの区分が実行されているかによって保証範
囲外挙動かどうかを判断してもよい。また、変更された
部分を検出するには、プログラムを変更する際、その部
分にはソフトウェア的なマークを付けておき、実行時に
はこのマークの登場を検出すればよい。
[3-2. Detection Method] The third embodiment having the above configuration operates as follows. First,
The part that was not included in the execution log, that is, the behavior other than the behavior whose correctness was confirmed in the test (hereinafter referred to as “behavior outside the guaranteed range”),
It can be detected as follows. That is, when the low-priority part set as described above is executed, it may be regarded as the behavior outside the guaranteed range, or the behavior whose correctness is confirmed in the test and the part outside the guaranteed range may be identified by an address or the like. Classification may be made, and it may be determined whether the behavior is out of the guaranteed range depending on which classification is being executed. Further, in order to detect the changed portion, when changing the program, the portion may be marked with a software mark, and the appearance of the mark may be detected at the time of execution.

【0092】〔3−3.警告の出力〕これらが検出され
た場合に考えられる対応は、まず、警告10を出力する
ことであり(請求項13)、具体例としては、発電所を
制御するプログラムにおいて、保証範囲外にあることを
オペレータに警告することによって注意を促すなどが考
えられる。また、警告10は、数種類用意しておくなか
から選択的に表示してもよい。例えば、変更した部分ご
とに異なった警告を表示すれば、プログラムの実行状態
を具体的に把握することができる。また、CPU実行時
間のうちどの位の割合が保証範囲外挙動になっているか
を、数字や棒グラフなどでリアルタイムに画面表示すれ
ば、どのような条件でプログラムを実行している場合
に、どの程度の挙動の信頼性が期待できるかを容易に判
断することができる。このように、変更された部分やテ
ストしていない部分を実行する場合に警告10が出力さ
れれば、ユーザは、プログラムの信頼性を判断したり、
障害に備えて各種の措置を取るなどの対応が容易にな
る。
[3-3. Output of Warning] A possible countermeasure when these are detected is to output a warning 10 first (claim 13). As a specific example, a program for controlling a power plant is out of the guaranteed range. For example, a warning may be given to the operator to call attention. Further, the warning 10 may be selectively displayed from among several types prepared. For example, if a different warning is displayed for each changed part, the execution state of the program can be grasped concretely. Also, if the percentage of the CPU execution time that is out of the guaranteed range is displayed in real time on the screen using numbers or bar graphs, etc., under what conditions the program is executed, It can be easily determined whether or not the reliability of the behavior can be expected. As described above, if the warning 10 is output when executing the changed part or the part that has not been tested, the user can determine the reliability of the program,
It becomes easy to take various measures such as taking measures in preparation for a failure.

【0093】〔3−4.データの保存〕また、変更され
た部分やテストしていない部分が検出された場合の他の
対応としては、その時点の実行状態を表すデータ11を
保存することが挙げられる(請求項14)。ここで、保
存する実行状態は、保証範囲外挙動が実際に開始される
直前のものが望ましい。このようにすれば、フォ−ルト
トレラントシステムにおいて、保証範囲外でトラブルが
発生した場合に、保証範囲外に入る直前の状態にロ−ル
バック(後退復帰)することができる。なお、フォール
トトレラントシステムとは、障害があっても動作を継続
できるシステムであり、ロールバックとは、処理内容を
以前の時点における処理内容に戻すことである。このよ
うに、それらの部分で障害が発生した場合も、保存して
おいたデータを原因の分析やロールバックに用いてシス
テムを回復することによって、障害による影響が最小限
に抑制できる。
[3-4. Saving of Data] Further, as another countermeasure in the case where a changed portion or a portion that has not been tested is detected, saving data 11 representing the execution state at that time may be mentioned (claim 14). Here, it is desirable that the execution state to be saved is a state immediately before the behavior outside the guaranteed range is actually started. In this way, in the fault-tolerant system, if a trouble occurs outside the guaranteed range, the roll-back (return and return) can be performed to a state immediately before entering the out of the guaranteed range. Note that a fault-tolerant system is a system that can continue operation even if there is a failure, and rollback is to return the processing contents to the processing contents at a previous point in time. In this way, even if a failure occurs in those portions, the effect of the failure can be minimized by restoring the system by using the stored data for cause analysis and rollback.

【0094】〔3−5.非安全状態の検出〕変更された
部分やテストしていない部分が検出された場合につい
て、さらに他の対応としては、検出された部分を実行す
る際に非安全状態を検出する機能を働かせることも考え
られる。すなわち、ガ−ドに起因するデッドロック(無
限ループ)などの非安全状態を実行時に検出すれば、そ
のような状態に陥ったプログラムを安全な状態へ移動さ
せることもできる。
[3-5. Detection of non-secure state) When a changed part or untested part is detected, as another countermeasure, the function of detecting the non-safe state may be used when executing the detected part. Conceivable. That is, if an unsafe state such as a deadlock (infinite loop) due to a guard is detected at the time of execution, a program that has fallen into such a state can be moved to a safe state.

【0095】この場合、非安全状態の検出は、プログラ
ムの実行に用いている変数領域やジレスタなどの監視に
よって行なう。例えば、プログラムカウンタなどプログ
ラムの実行位置を示す数値が同じ数値を一定以上繰り返
していれば、デッドロックが発生していると判断でき
る。このような非安全状態が発生した場合は、プログラ
ムの例外処理機構を用いることによって、安全な状態へ
プログラムの実行状態を移動させる。ここでいう安全な
状態としては、例えば、非安全状態が発生した時点のデ
ータを保存したうえ、CPUの制御をエラー処理ルーチ
ンやオペレーティングシステムに移転するなど、利用者
が自由に定義できる。
In this case, the detection of the non-safety state is performed by monitoring the variable area and the gilesta used in the execution of the program. For example, if a numerical value indicating the execution position of a program such as a program counter repeats the same numerical value more than a certain value, it can be determined that deadlock has occurred. When such an unsafe state occurs, the execution state of the program is moved to a safe state by using an exception handling mechanism of the program. The safe state here can be freely defined by the user, for example, by saving data at the time when the non-safe state occurs, and transferring control of the CPU to an error processing routine or an operating system.

【0096】以上のように、第3実施形態では、変更さ
れたプログラムを実行する際に安全性が確保されるの
で、書き換えによって予期しない挙動が発生したり、変
更の際に前提としなかった挙動が発生しても、それによ
る不都合は最小限に抑制され、プログラムの信頼性が向
上する。
As described above, in the third embodiment, since the security is ensured when the changed program is executed, unexpected behavior may occur due to rewriting, or the behavior not assumed in the modification may be performed. Occurs, the inconvenience caused thereby is minimized, and the reliability of the program is improved.

【0097】〔4.第4の実施の形態〕第4の実施の形
態(以下「第4実施形態」という)は、生成したガード
命令をそのままプログラムに付加するのではなく、文献
「K. Ueda and M. Morita, Moded Flat GHC and Its Me
ssage-Oriented Implementation Technique. New Gener
ation Computing, Vol.13, No.1, pp.3-43, November 1
994.」などにおけるプログラム解析技術を用いることに
よって、より適切なガード命令を生成したり、ガード命
令を改善したうえでプログラムに付加するように構成し
たものである(請求項8)。
[4. Fourth Embodiment] In a fourth embodiment (hereinafter referred to as a "fourth embodiment"), a generated guard instruction is not added to a program as it is, but a document "K. Ueda and M. Morita, Moded" Flat GHC and Its Me
ssage-Oriented Implementation Technique. New Gener
ation Computing, Vol.13, No.1, pp.3-43, November 1
994. "and the like, so that a more appropriate guard instruction is generated or the guard instruction is improved and added to the program (claim 8).

【0098】図18は、第4実施形態の構成を示す機能
ブロック図である。第4実施形態は、この図に示すよう
に、図2に示した第1実施形態の構成に加えて、変更部
5に解析部54及びガード改善部55を設けたものであ
る。解析部54は、与えられたプログラム1、実行ログ
及び生成されたガード命令を解析する手段であり、請求
項8にいう「解析する手段」に相当する。また、ガード
改善部55は、ガード生成部52によって生成されたガ
ード命令を、解析部54による解析の結果を用いて改善
する手段であり、請求項8にいう「改善する手段」に相
当する。
FIG. 18 is a functional block diagram showing the configuration of the fourth embodiment. In the fourth embodiment, as shown in this figure, in addition to the configuration of the first embodiment shown in FIG. 2, the changing unit 5 is provided with an analyzing unit 54 and a guard improving unit 55. The analysis unit 54 is a unit that analyzes the given program 1, the execution log, and the generated guard instruction, and corresponds to “analysis unit” according to claim 8. Further, the guard improving unit 55 is a means for improving the guard instruction generated by the guard generating unit 52 by using the result of the analysis by the analyzing unit 54, and corresponds to “improving means”.

【0099】ガード命令を改善する代表的な態様は、冗
長なガード命令の除去とガード命令の抽象化(簡単化)
である。冗長なガード命令の除去(請求項9)は、プロ
グラムに付加しようとするガード命令から、前記解析の
結果に基づいて余分なガ−ドを除去することによって必
須のガ−ドのみを選択することである。例えば、プログ
ラムのある部分に付加しようとする2つのガード命令の
うち、一方のガード命令が求める条件が成立すると他方
のガード命令が求める条件も必ず成立する場合、一方の
ガード命令のみを付加する。
Typical modes for improving the guard instruction are removal of redundant guard instructions and abstraction (simplification) of guard instructions.
It is. Removal of redundant guard instructions (claim 9) is to select only essential guards from guard instructions to be added to a program by removing extra guards based on the result of the analysis. It is. For example, of the two guard instructions to be added to a certain part of the program, if the condition required by one guard instruction is satisfied, the condition required by the other guard instruction is always satisfied, only one guard instruction is added.

【0100】このように解析の結果に基づいて冗長なガ
ード命令を除去することによって、真に必要なガード命
令だけが選択され付加されるので、変更の処理も最終的
なプログラムの内容も効率化される。
By removing redundant guard instructions based on the result of analysis in this way, only truly necessary guard instructions are selected and added, so that the processing of changes and the contents of the final program are made more efficient. Is done.

【0101】また、ガード命令の抽象化(請求項10)
は、プログラムに付加するガード命令を解析の結果に基
づいて抽象化することであり、典型的には、数種類のガ
ード命令を包含するような上位概念を帰納的に作成する
ことによって行なう。また、抽象化の一つの態様とし
て、ガード命令に記載された条件に論理関数ORで新し
い条件を加えることによって、条件を拡げることも考え
られる。
Further, the guard instruction is abstracted.
Is to abstract a guard instruction to be added to a program based on the result of analysis, and is typically performed by inductively creating a superordinate concept that includes several types of guard instructions. Further, as one aspect of the abstraction, it is conceivable to extend the condition by adding a new condition with a logical function OR to the condition described in the guard instruction.

【0102】解析の対象とするのはプログラム1、実行
ログ、ガード命令のうち少なくとも1つであり、2つ以
上を組み合わせて解析することも自由である。例えば、
プログラムを解析した結果を用いてガード命令を抽象化
する例として、ガード命令が実現する実行順序のなか
で、あるモジュールを実行ログにない別のモジュールに
替えても処理結果が必ず同じになる場合、そのような別
のモジュールも対象とするようにガード命令を拡張する
ことが考えられる。
The object to be analyzed is at least one of the program 1, the execution log, and the guard instruction, and the analysis can be freely performed by combining two or more. For example,
As an example of abstracting a guard instruction using the result of analyzing a program, when the processing result is always the same even if one module is replaced with another module not in the execution log in the execution order realized by the guard instruction It is conceivable to extend the guard instruction to cover such another module.

【0103】また、実行ログの解析によってガード命令
を抽象化する例としては、次のようなものが考えられ
る。例えば、ある処理は、いくつかの先行モジュールの
うちいずれかの後に実行するという試験結果に基づい
て、それぞれの先行モジュールの実行をOR条件で待つ
ガード命令を付加することも考えられる。この場合、実
行ログを解析した結果、どのモジュールの実行後でも、
ある特定の状態が成立するために正しい挙動となること
が判明したとする。この場合は、そのような状態を待つ
ガード命令さえ付加すれば、個々の先行モジュールに言
及するまでもなく正しい挙動が得られる。
The following can be considered as an example of abstracting a guard instruction by analyzing an execution log. For example, it is conceivable to add a guard instruction that waits for the execution of each preceding module under an OR condition based on a test result that certain processing is executed after any of several preceding modules. In this case, as a result of analyzing the execution log, even after executing any module,
Suppose that it has been found that the behavior is correct because a specific state is established. In this case, if only a guard instruction that waits for such a state is added, correct behavior can be obtained without referring to each preceding module.

【0104】また、ガード命令自体を解析して抽象化す
る例として、「偶数」によって満足されるガード命令と
「奇数」によって満足されるガード命令とを同じ箇所に
付加しようとしていて、いずれかのガード命令が満たさ
れれば足りる場合、両者を抽象化して「整数」という上
位概念によるガード命令を用いることができる。どのよ
うなガード命令が揃ったときに、どのような上位概念を
用いることができるかなど、抽象化の手法は予め対照テ
ーブルに格納しておけばよい。このように、プログラム
に付加するガード命令を抽象化することによって、使用
するガード命令の数やデータ容量に対して、実現される
機能が充実する。
As an example of analyzing and abstracting a guard instruction itself, a guard instruction satisfied by an “even number” and a guard instruction satisfied by an “odd number” are to be added to the same location. When it is sufficient that the guard instruction is satisfied, both can be abstracted and a guard instruction based on a superordinate concept of “integer” can be used. The abstraction method, such as what kind of guard instruction can be used when what kind of guard instruction is prepared, may be stored in the comparison table in advance. As described above, by abstracting the guard instruction added to the program, the functions to be realized are enhanced with respect to the number of guard instructions to be used and the data capacity.

【0105】以上のように、第4実施形態では、生成し
たガード命令をそのままプログラムに付加するのではな
く、解析の結果に基づいてガード命令を改善するので、
最終的なプログラムの信頼性が向上する。このような第
4実施形態は、並列論理型プログラムに特に適する。
As described above, in the fourth embodiment, the generated guard instruction is not added to the program as it is, but the guard instruction is improved based on the analysis result.
The reliability of the final program is improved. Such a fourth embodiment is particularly suitable for a parallel logic type program.

【0106】〔5.他の実施の形態〕なお、本発明は、
上記実施の形態に限定されるものではなく、次に例示す
るような他の実施の形態をも包含するものである。例え
ば、ガード命令の付加は、プログラム中の既存のステー
トメント(記述)を書き換えることによって行なうこと
が考えられるが、新たなステートメントを新規に挿入す
ることによって行なうこともできる。
[5. Other Embodiments] The present invention
The present invention is not limited to the above embodiment, but includes other embodiments as exemplified below. For example, it is conceivable to add a guard instruction by rewriting an existing statement (description) in a program, but it is also possible to add a new statement by inserting a new statement.

【0107】また、第1実施形態における各実施例で
は、パタ−ン照合型並行プログラミング言語によるプロ
グラムを例示したが、本発明の適用対象はこれらに限定
されるものではない。すなわち、本発明は、並行プログ
ラムにおける非決定性だけでなく、逐次プログラムにお
いても発生しうる「外部からの入力による非決定性」や
「処理系の問題による非決定性」などに関しても適用可
能である。
Further, in each example of the first embodiment, a program in a pattern matching type parallel programming language has been exemplified, but the application of the present invention is not limited to these. That is, the present invention can be applied not only to nondeterminism in a concurrent program but also to nondeterminism due to an external input and nondeterminism due to a processing system problem that can occur in a sequential program.

【0108】このような逐次プログラムに適用する場合
は、例えば、正しい実行ログを解析することによって、
外部からの特定の入力とプログラムのある部分との順序
関係を抽出し、そのような特定の入力を待ってその部分
が実行されるようにガード命令を付加するように構成す
ればよい。また、処理系の状態を実行ログに記録してお
き、処理系が一定の状態の場合に、プログラムのある部
分が無事に実行できることが解析されれば、そのような
状態の成立を待つようなガード命令を付加するように構
成すればよい。
When applied to such a sequential program, for example, by analyzing a correct execution log,
The order relationship between a specific input from the outside and a certain part of the program may be extracted, and a guard instruction may be added so as to wait for such a specific input and execute the part. In addition, the state of the processing system is recorded in an execution log, and if it is analyzed that a certain part of the program can be executed safely when the processing system is in a certain state, it is necessary to wait for the establishment of such a state. What is necessary is just to comprise so that a guard instruction may be added.

【0109】[0109]

【発明の効果】以上説明したように、本発明によれば、
大規模なプログラムについても信頼性の高いプログラム
を効率的に開発できるので、プログラム開発における生
産性が向上する。
As described above, according to the present invention,
Since a highly reliable program can be efficiently developed even for a large-scale program, productivity in program development is improved.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の第1実施形態に用いるコンピュータシ
ステムのハードウェア構成を示す図。
FIG. 1 is an exemplary view showing a hardware configuration of a computer system used in a first embodiment of the present invention.

【図2】本発明の第1実施形態の構成を示す機能ブロッ
ク図。
FIG. 2 is a functional block diagram showing the configuration of the first embodiment of the present invention.

【図3】本発明の第1実施形態における処理手順を示す
フローチャート。
FIG. 3 is a flowchart showing a processing procedure according to the first embodiment of the present invention.

【図4】本発明の第1実施形態において、並列論理型言
語によるプログラムの例 (ソ−スコ−ド)を示す図。
FIG. 4 is a diagram showing an example (source code) of a program in a parallel logic language according to the first embodiment of the present invention;

【図5】図4のプログラムを実行する際のプロセスを示
す概念図。
FIG. 5 is a conceptual diagram showing a process when the program of FIG. 4 is executed.

【図6】図4のプログラムを実行する場合の実行系列を
示す図。
FIG. 6 is a diagram showing an execution sequence when the program in FIG. 4 is executed.

【図7】図4のプログラムを変更したプログラムの例
(変換後のソ−スコ−ドの部分)を示す図。
FIG. 7 is an example of a program obtained by changing the program of FIG. 4;
The figure which shows (the source code part after conversion).

【図8】本発明の第1実施形態において、ル−ル型言語
によるプログラムの例 (ソ−スコ−ド)を示す図。
FIG. 8 is a diagram showing an example (source code) of a program in a rule type language in the first embodiment of the present invention.

【図9】図8のプログラムを変更したプログラムの例
(変換後のソ−スコ−ド)を示す図。
FIG. 9 shows an example of a program obtained by modifying the program of FIG. 8;
The figure which shows (the source code after conversion).

【図10】本発明の第1実施形態において、黒板型並行
プログラムの作用によってプロセスがタプルを読み書き
する状態を示す概念図。
FIG. 10 is a conceptual diagram showing a state in which a process reads and writes a tuple by the action of a blackboard type concurrent program in the first embodiment of the present invention.

【図11】本発明の第1実施形態において、変更された
黒板型並行プログラムの作用によってプロセスがタプル
を読み書きする状態を示す概念図。
FIG. 11 is a conceptual diagram showing a state in which a process reads and writes a tuple by the operation of a changed blackboard type concurrent program in the first embodiment of the present invention.

【図12】本発明の第1実施形態において、メッセ−ジ
交換型並行プログラミング言語によるプログラムの例を
示す図。
FIG. 12 is a diagram showing an example of a program in a message exchange type concurrent programming language in the first embodiment of the present invention.

【図13】図12のプログラムによって単一のメイルボ
ックスを用いてプロセス間でメッセージが交換される状
態を示す概念図。
FIG. 13 is a conceptual diagram showing a state where messages are exchanged between processes using a single mailbox by the program of FIG. 12;

【図14】図12のプログラムをガード命令付加によっ
て変更したプログラムの例を示す図。
FIG. 14 is a diagram showing an example of a program obtained by modifying the program of FIG. 12 by adding a guard instruction.

【図15】図14のプログラムによって2つののメイル
ボックスを用いてプロセス間でメッセージが交換される
状態を示す概念図。
FIG. 15 is a conceptual diagram showing a state in which messages are exchanged between processes using two mailboxes by the program of FIG. 14;

【図16】本発明の第2実施形態の構成を示す機能ブロ
ック図。
FIG. 16 is a functional block diagram showing a configuration of a second embodiment of the present invention.

【図17】本発明の第3実施形態の構成を示す機能ブロ
ック図。
FIG. 17 is a functional block diagram showing a configuration of a third embodiment of the present invention.

【図18】本発明の第4実施形態の構成を示す機能ブロ
ック図。
FIG. 18 is a functional block diagram showing a configuration of a fourth embodiment of the present invention.

【符号の説明】[Explanation of symbols]

101…プロセッサ 102…I/Oインタフェース 103…共有メモリ 104…入力装置 105…出力装置 106…外部記憶装置 1…与えられたプログラム 2…試験部 3…試験情報 4…保存部 5…変更部 51…非決定性抽出部 52…ガード生成部 53…ガード付加部 54…解析部 55…ガード改善部 6…変更されたプログラム 7…確認部 8…実行部 9…安全化部 10…警告 11…データ p〜,P〜…プロセス A,B…タプル S…タプルスペース MB…メイルボックス DESCRIPTION OF SYMBOLS 101 ... Processor 102 ... I / O interface 103 ... Shared memory 104 ... Input device 105 ... Output device 106 ... External storage device 1 ... Provided program 2 ... Test part 3 ... Test information 4 ... Storage part 5 ... Change part 51 ... Nondeterministic extraction unit 52 Guard generation unit 53 Guard addition unit 54 Analysis unit 55 Guard improvement unit 6 Changed program 7 Confirmation unit 8 Execution unit 9 Safety unit 10 Warning 11 Data p ~ , P ~ ... Process A, B ... Tuple S ... Tuple space MB ... Mail box

Claims (20)

【特許請求の範囲】[Claims] 【請求項1】 プログラムの開発を支援するプログラム
開発支援装置において、 与えられたプログラムを試験する手段と、 前記試験で得られた情報を用いて正しい挙動を示すよう
に前記プログラムを変更する手段と、 を備えたことを特徴とするプログラム開発支援装置。
1. A program development support device for supporting development of a program, comprising: means for testing a given program; and means for changing the program so as to exhibit correct behavior using information obtained in the test. A program development support device, comprising:
【請求項2】 プログラムの開発を支援するプログラム
開発支援装置において、 与えられたプログラムを実行することによって試験する
手段と、 プログラムの挙動が正しいと認められた際の実行ログを
保存する手段と、 保存されている実行ログに記録されていない挙動を抑制
するガード命令を付加することによってプログラムを変
更する手段と、 を備えたことを特徴とするプログラム開発支援装置。
2. A program development support device for supporting program development, comprising: means for testing by executing a given program; means for storing an execution log when the behavior of the program is recognized to be correct; Means for changing a program by adding a guard instruction that suppresses a behavior not recorded in the stored execution log.
【請求項3】 前記変更する手段は、 与えられたプログラムからその挙動が一意に定まらない
非決定性を有する部分を抽出する手段と、 抽出された非決定性を有する部分について、前記ガード
命令を生成する手段と、 生成されたガード命令を前記非決定性を有する部分に付
加する手段と、 を備えたことを特徴とする請求項2記載のプログラム開
発支援装置。
3. The means for changing includes: means for extracting a nondeterministic part whose behavior is not uniquely determined from a given program; and generating the guard instruction for the extracted nondeterministic part. 3. The program development support apparatus according to claim 2, further comprising: means for adding a generated guard instruction to the nondeterministic portion.
【請求項4】 開発対象となるプログラムが、複数の節
を含む並列論理型プログラムであって、 前記変更する手段が、 並列論理型プログラムから、同時に実行可能な複数の節
を非決定性を有する部分として抽出し、 抽出された節に含まれる述語の変数を、前記実行ログに
記録されている実行系列のみに適合するように抑制する
ガード命令を生成し、このガード命令を前記非決定性を
有する部分に付加するように構成されたことを特徴とす
る請求項2又は3記載のプログラム開発支援装置。
4. A program to be developed is a parallel logic type program including a plurality of clauses, and the means for changing includes a part having a non-deterministic property from a parallel logic type program to a plurality of clauses which can be executed simultaneously. And generating a guard instruction that suppresses a variable of a predicate included in the extracted clause so as to match only the execution sequence recorded in the execution log. The program development support device according to claim 2, wherein the program development support device is configured to be added to the program development support device.
【請求項5】 開発対象となるプログラムが、条件部と
実行部とを有するルールを組み合わせたル−ル型プログ
ラムであって、 前記変更する手段が、 ルール型プログラムから、同時に実行可能な複数のルー
ルを非決定性を有する部分として抽出し、 抽出されたルールについて、条件部のパタ−ンマッチ
を、前記実行ログに記録されている実行系列のル−ルの
みに適合するように抑制するガード命令を生成し、この
ガード命令を前記非決定性を有する部分に付加するよう
に構成されたことを特徴とする請求項2又は3記載のプ
ログラム開発支援装置。
5. A program to be developed is a rule-type program in which rules having a condition part and an execution part are combined. A rule is extracted as a non-deterministic part, and a guard instruction that suppresses a pattern match of a condition part of the extracted rule so as to conform only to a rule of an execution sequence recorded in the execution log is provided. 4. The program development support device according to claim 2, wherein the guard instruction is generated and added to the non-deterministic part.
【請求項6】 開発対象となるプログラムが、複数のプ
ロセスが、黒板上に保存されるデータの組であるタプル
を読み書きすることによって協調動作を行う黒板型並行
プログラムであって、 前記変更する手段が、 黒板型並行プログラムから、黒板上に保存された同一の
タプルとパターンマッチ可能な複数のプロセスを非決定
性を有する部分として抽出し、 抽出されたプロセスについて、保存されている実行ログ
にしたがって、黒板上のタプルを読み書きするプロセス
を限定するガード命令を生成し、このガード命令を前記
非決定性を有する部分に付加するように構成されたこと
を特徴とする請求項2又は3記載のプログラム開発支援
装置。
6. A program to be developed is a blackboard-type parallel program in which a plurality of processes cooperate by reading and writing tuples, which are sets of data stored on a blackboard, wherein the changing means Extracts, from a blackboard-type parallel program, a plurality of processes that can be pattern-matched with the same tuple stored on the blackboard as non-deterministic parts, and for the extracted processes, 4. The program development support according to claim 2, wherein a guard instruction for limiting a process of reading and writing tuples on a blackboard is generated, and the guard instruction is added to the nondeterministic portion. apparatus.
【請求項7】 開発対象となるプログラムが、複数のプ
ロセスがメッセージの交換によって協調動作を行なうメ
ッセ−ジ交換型並行プログラムであって、 前記変更する手段が、 メッセージ交換型並行プログラムから、複数のメッセー
ジを異なった順序で受け取る可能性があるプロセスを非
決定性を有する部分として抽出し、 抽出されたプロセスについて、保存されている実行ログ
にしたがった順序でメッセージを受け取るように制御す
るガード命令を生成し、このガード命令を前記非決定性
を有する部分に付加するように構成されたことを特徴と
する請求項2又は3記載のプログラム開発支援装置。
7. A program to be developed is a message exchange type concurrent program in which a plurality of processes cooperate by exchanging messages, and the changing means comprises a plurality of message exchange type concurrent programs. Processes that may receive messages in a different order are extracted as nondeterministic parts, and a guard instruction is generated for the extracted processes to control the messages to be received in the order according to the stored execution log. 4. The program development support apparatus according to claim 2, wherein said guard instruction is added to said non-deterministic part.
【請求項8】 プログラム、実行ログ及びガード命令の
うち少なくともいずれかを解析する手段と、 前記解析の結果を用いてガード命令を改善する手段と、 を備えたことを特徴とする請求項2乃至7のいずれか一
に記載のプログラム開発支援装置。
8. The apparatus according to claim 2, further comprising: means for analyzing at least one of a program, an execution log, and a guard instruction; and means for improving the guard instruction using a result of the analysis. 8. The program development support device according to any one of 7.
【請求項9】 前記改善する手段は、プログラムに付加
しようとするガード命令から、前記解析の結果に基づい
て必須のガ−ド命令のみを選択するように構成されたこ
とを特徴とする請求項8記載のプログラム開発支援装
置。
9. The method according to claim 1, wherein said improvement means is configured to select only an essential guard instruction from guard instructions to be added to the program based on a result of the analysis. 8. The program development support device according to 8.
【請求項10】 前記改善する手段は、プログラムに付
加するガード命令を前記解析の結果に基づいてより汎用
的な挙動の抑制を行うように抽象化するように構成され
たことを特徴とする請求項8記載のプログラム開発支援
装置。
10. The method according to claim 1, wherein the improving unit is configured to abstract a guard instruction to be added to the program so as to suppress more general behavior based on a result of the analysis. Item 9. The program development support device according to Item 8.
【請求項11】 ガード命令を付加することによってプ
ログラムを変更しようとする場合に、変更するか否かを
ガード命令ごとに問い合わせる手段を有し、 前記変更する手段は、前記問い合わせに対して変更して
よい旨の回答が与えられたガード命令を付加することに
よってプログラムを変更するように構成されたことを特
徴とする請求項2乃至10のいずれか一に記載のプログ
ラム開発支援装置。
11. When a program is to be changed by adding a guard instruction, means for inquiring for each guard instruction whether or not to change the program is provided. The program development support device according to any one of claims 2 to 10, wherein the program is modified by adding a guard instruction to which a response to the effect is given.
【請求項12】 プログラムのうち、前記変更する手段
によって変更された部分及び前記実行ログに含まれてい
なかった部分のうち少なくとも一方を実行する場合に、
実行の安全性を確保する手段を備えたことを特徴とする
請求項2乃至11のいずれか一に記載のプログラム開発
支援装置。
12. When executing at least one of a portion of the program changed by the changing means and a portion not included in the execution log,
The program development support apparatus according to claim 2, further comprising a unit for securing execution safety.
【請求項13】 前記安全性を確保する手段は、プログ
ラムのうち、前記変更する手段によって変更された部分
及び前記実行ログに含まれていなかった部分のうち少な
くとも一方を実行する場合に、警告を出力することによ
って実行の安全性を確保するように構成されたことを特
徴とする請求項12記載のプログラム開発支援装置。
13. The method according to claim 13, wherein the security unit issues a warning when executing at least one of a part of the program changed by the changing unit and a part not included in the execution log. 13. The program development support device according to claim 12, wherein the output is output so as to ensure execution safety.
【請求項14】 前記安全性を確保する手段は、プログ
ラムのうち、前記変更する手段によって変更された部分
及び前記実行ログに含まれていなかった部分のうち少な
くとも一方を実行する場合に、その時点におけるプログ
ラムの実行状態を表すデータを保存するように構成され
たことを特徴とする請求項12記載のプログラム開発支
援装置。
14. The method according to claim 1, wherein the means for ensuring security executes at least one of a part of the program changed by the changing means and a part not included in the execution log. 13. The program development support device according to claim 12, wherein data representing an execution state of the program in the program is stored.
【請求項15】 プログラムの開発を支援するプログラ
ム開発支援方法において、 与えられたプログラムを実行することによって試験する
工程と、 プログラムの挙動が正しいと認められた際の実行ログを
保存する工程と、 保存されている実行ログに記録されていない挙動を抑制
するガード命令を付加することによってプログラムを変
更する工程と、 を含むことを特徴とするプログラム開発支援方法。
15. A program development support method for supporting program development, wherein a step of testing by executing a given program, a step of storing an execution log when the behavior of the program is recognized to be correct, Changing the program by adding a guard instruction that suppresses a behavior that is not recorded in the stored execution log.
【請求項16】 前記変更する工程は、 与えられたプログラムからその挙動が一意に定まらない
非決定性を有する部分を抽出する工程と、 抽出された非決定性を有する部分について前記ガード命
令を生成する工程と、 生成されたガード命令を前記非決定性を有する部分に付
加する工程と、 を含むことを特徴とする請求項15記載のプログラム開
発支援方法。
16. The changing step includes: extracting a non-deterministic part whose behavior is not uniquely determined from a given program; and generating the guard instruction for the extracted non-deterministic part. The method according to claim 15, further comprising: adding a generated guard instruction to the nondeterministic portion.
【請求項17】 プログラム、実行ログ及びガード命令
のうち少なくともいずれかを解析する工程と、 前記解析の結果を用いてガード命令を改善する工程と、 を含むことを特徴とする請求項15又は16記載のプロ
グラム開発支援方法。
17. The method according to claim 15, further comprising: analyzing at least one of a program, an execution log, and a guard instruction; and improving the guard instruction using a result of the analysis. The described program development support method.
【請求項18】 プログラムのうち、前記変更する工程
によって変更された部分及び前記実行ログに含まれてい
なかった部分のうち少なくとも一方を実行する場合に、
実行の安全性を確保する工程を含むことを特徴とする請
求項15,16又は17記載のプログラム開発支援方
法。
18. When executing at least one of a part of the program changed by the changing step and a part not included in the execution log,
18. The program development supporting method according to claim 15, further comprising a step of ensuring execution safety.
【請求項19】 コンピュータを制御することによって
プログラムの開発を支援するプログラム開発支援用ソフ
トウェアを記録した記録媒体において、 当該プログラム開発支援用ソフトウェアは、コンピュー
タに、 与えられたプログラムを実行することによって試験さ
せ、 プログラムの挙動が正しいと認められた際の実行ログを
保存させ、 保存されている実行ログに記録されていない挙動を抑制
するガード命令を付加することによってプログラムを変
更させることを特徴とするプログラム開発支援用ソフト
ウェアを記録した記録媒体。
19. A recording medium on which a program development support software for supporting a program development by controlling a computer is provided. The program development support software executes a test by executing a given program on a computer. And storing the execution log when the behavior of the program is found to be correct, and modifying the program by adding a guard instruction that suppresses the behavior not recorded in the stored execution log. A recording medium that stores software for supporting program development.
【請求項20】 請求項19記載のプログラム開発支援
用ソフトウェアを記録した記録媒体において、当該プロ
グラム開発支援用ソフトウェアは、前記プログラムを変
更させる際に前記コンピュータに、 与えられたプログラムからその挙動が一意に定まらない
非決定性を有する部分を抽出させ、 抽出された非決定性を有する部分について前記ガード命
令を生成させ、 生成されたガード命令を前記非決定性を有する部分に付
加させることを特徴とするプログラム開発支援用ソフト
ウェアを記録した記録媒体。
20. A recording medium on which the program development support software according to claim 19 is recorded, wherein the program development support software has a behavior unique to a computer from a given program when the program is changed. Extracting a part having nondeterminism that is not determined by the above, generating the guard instruction for the extracted part having nondeterminism, and adding the generated guard instruction to the part having nondeterminism. A recording medium that records support software.
JP9272522A 1997-10-06 1997-10-06 Device and method for suporting program development, and storage medium recorded with program development support software Pending JPH11110252A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9272522A JPH11110252A (en) 1997-10-06 1997-10-06 Device and method for suporting program development, and storage medium recorded with program development support software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9272522A JPH11110252A (en) 1997-10-06 1997-10-06 Device and method for suporting program development, and storage medium recorded with program development support software

Publications (1)

Publication Number Publication Date
JPH11110252A true JPH11110252A (en) 1999-04-23

Family

ID=17515075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9272522A Pending JPH11110252A (en) 1997-10-06 1997-10-06 Device and method for suporting program development, and storage medium recorded with program development support software

Country Status (1)

Country Link
JP (1) JPH11110252A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180122870A (en) * 2017-05-04 2018-11-14 고려대학교 산학협력단 Method for synthesizing programs

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180122870A (en) * 2017-05-04 2018-11-14 고려대학교 산학협력단 Method for synthesizing programs

Similar Documents

Publication Publication Date Title
US7526750B2 (en) Object-based systematic state space exploration of software
US8010949B2 (en) Database breakpoint apparatus and method
US8091075B2 (en) Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
US7316005B2 (en) Data race detection using sequential program analysis
US20070277163A1 (en) Method and tool for automatic verification of software protocols
Flanagan et al. Modular verification of multithreaded programs
CZ293613B6 (en) Method for monitoring the operation of a facility using CPU
Hu et al. Exploring AADL verification tool through model transformation
EP2141587A1 (en) Method and system for generating of a control flow graph for representing a program code
Artho Finding faults in multi-threaded programs
Bodeveix et al. Towards a verified transformation from AADL to the formal component-based language FIACRE
US20050066312A1 (en) Inter-job breakpoint apparatus and method
Fitzgerald et al. Validation support for distributed real-time embedded systems in vdm++
Wang et al. Symbolic execution of behavioral requirements
JPH11110252A (en) Device and method for suporting program development, and storage medium recorded with program development support software
Ousterhout Tcl/Tk Engineering Manual
Beizer et al. Bug taxonomy and statistics
Matsubara et al. Model checking of automotive control software: An industrial approach
JPH09237191A (en) Programming supporting device, programming supporting method and medium recording programming supporting program
Kroening Verification of Concurrent Software
Purchase et al. Message pattern specifications: a new technique for handling errors in parallel object oriented systems
Zhao Using the Karp-Miller tree construction to analyse concurrent finite-state programs
Duan et al. Verifying temporal properties of c programs via lazy abstraction
Bauman LABORATORY FOR COMPUTER SCIENCE
Kim et al. A Testing Frameworks for Mobile Embedded Systems Using MDA