JPH09502034A - より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法 - Google Patents

より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法

Info

Publication number
JPH09502034A
JPH09502034A JP6525644A JP52564494A JPH09502034A JP H09502034 A JPH09502034 A JP H09502034A JP 6525644 A JP6525644 A JP 6525644A JP 52564494 A JP52564494 A JP 52564494A JP H09502034 A JPH09502034 A JP H09502034A
Authority
JP
Japan
Prior art keywords
xpd
event
execution
target process
target
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
JP6525644A
Other languages
English (en)
Inventor
シャピロ,ベンジャミン・ヴィー
Original Assignee
シンキング・ソフトウエア・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by シンキング・ソフトウエア・インコーポレーテッド filed Critical シンキング・ソフトウエア・インコーポレーテッド
Publication of JPH09502034A publication Critical patent/JPH09502034A/ja
Pending legal-status Critical Current

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Hardware Redundancy (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)

Abstract

(57)【要約】 本発明のシステム及び方法によれば、誤りの位置、又は、新たな結果の予測に起因する修正の箇所に関する不確実性を最小化することができる。これは、目標プロセスの帰納の認知的な理解と類似するプロセスの総合によって達成される。目標プロセスのモデルが、静的な解析を基礎にして構築され、目標プロセス知識の更なる集積が、その実行に対して疑似パラレルである目標プロセスの解析を実行する本発明によるXPD(eXpert Program Diagnosis)マシンによる動的な解析の間に実行される。本発明は、目標プロセスのアルゴリズムの制御成分を、単一の定義形式を有し、任意のプロセスの制御構造を表すのに必要十分なアルゴリズムのXPDフレームの中に抽出する。連続的なビジョンを構築することによって、目標プロセスの任意の2つの要素の間のアクセス可能性すなわち潜在的な依存性を自動的に容易に評価し、たとえば、確実に終了不可能なプロセス構成すなわちデータ独立のエンドレス・ループを可能にするメカニズムが導入される。原因・効果関係に関する知識と、目標プロセスにおける及び本明細書で定義される「プロセス空間」と「プロセス時間」とによる座標系における個々の要素の正しさ及び不確実性の相対的で時間に独立な測定とを、構築する。本発明は、XPDマシンの「知識帰納」及び「知識演繹」プロセスと、ユーザと目標プロセスに関する集積された知識との間の非常に高レベルのインターフェースに対するメカニズムとを導入する。また、その診断のための別の媒体として、目標プロセスの行動の音声的な提供も行われる。本明細書で提供された「XPDオブジェクト・コード」は、その目標プロセスのメンテナンスだけでなく、静的及び動的に、その目標プロセスの解析するのに適している。これによれば、修正のための目標プロセスの再コンパイルと再リンケージとが短縮され、時には除去される。

Description

【発明の詳細な説明】 より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブ ジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新た な要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフ トウェア・プロセスにおける不確実性最小化方法 発明の背景 発明の分野 本発明は、コンピュータ・プログラムの静的及び動的な解析方法に関する。こ の解析方法により、プログラムの誤動作(故障、failure)の原因となる 誤り(fault)の位置と、仕様が変更された場合に必要となる修正の箇所と 、に関する不確実性を最小にすることができる。 本発明のプロセスは、また、目標(target)となるコンピュータ・ソフ トウェア・システムのユーザとその内部処理との間に、新規で非常に高レベルの インターフェースを提供する。このインターフェースによれば、目標となるソフ トウェアの解析を実行する非常に有効な方法が可能になる。 同じインターフェースによれば、システムの修正と更なる開発のための非常に 高レベルのプログラム言語の導入が可能になる。ここでは、それを、結果志向型 のプログラミング(Result Oriented Programming =ROP)と称する。 また、以下の説明では、XPDオブジェクト・コードを提案することにより、 コンピュータ・ソフトウェア処理のオブジェクト・コードの伝統的な形式に代わ る別の選択肢を提供する。ここで、XPDは、エキスパート・プログラム診断( eXpert Program Diagnosis)の略である。 XPDオブジェクト・コードは、静的なもの及び動的なものの両方のプログラ ム解析と、プログラム・メンテナンスとに関して、より適切である。XPDオブ ジェクト・コードは、処理の修正の結果として生じる目標となる処理コードの再 コンパイル(recompiling)や再リンキング(re−linking ) を、容易にし、時には不要にする。 関連技術の説明 数十年の間のコンピュータ・ソフトウェア工学が、以下の事柄を示している。 すなわち、a)コンピュータ・プログラム処理が正しい又は望ましい結果を常に 生じるということを証明する自動化された方法は存在しないこと、b)エラーの ないソフトウェアはない、すなわち、ソフトウェアは、試験自体が正しかったと 仮定した上で、試験された限度でのみ正しいということ、c)最も単純なソフト ウェアを除いては、完全に網羅的な試験などあり得ないこと、d)現時点でのソ フトウェア工学では、ハードウェアの安全性の限度に類似のものは全く提供され ず、1つの誤りによってシステム全体が停止してしまうことも多いこと、e)誤 動作の存在が試験又は製造の過程で認識されたとしても、その原因(誤り)の箇 所を特定することは、しばしば、余りに困難であること、である。 この理由は、ソフトウェアは、原因と結果とが近接しているという、ハードウ ェアと同じ単純な規則には従わないという点で、ハードウェアとは基本的に異な るからである。すなわち、ソフトウェアのエラー(誤り)は、その現れ(誤動作 )に近い場所にあるとは限らず、システムの中のほとんど任意の場所に存在し得 るのである。 産業界での平均では、試験に合格し生産過程にあるシステムに対して、100 行(ライン)のコード当たり、5から10の誤りがある。誤りの箇所を特定する ことが困難であるという理由により、多くの誤りは、我慢されている。プログラ マと彼らの管理者たちは、コードを改良又は修正しようとするどのような試みで も、むしろ、新たなエラーを導きシステムを更に破壊してしまいかねないので、 コードに触れることを恐れている。 1988年に言明された次の文章は、1993年でも依然として有効である。 すなわち、「原則的に、それは、こうである。注意深く作られたプログラムの欠 陥の割合は、1000ラインについて誤りが約5つである。よって、100万ラ インのプログラムでは、たったの5000の問題点ということになる。ここで、 それぞれの誤りに対してただ1つの試験箇所が必要であると仮定しても、数千回 の試みというのは、非現実的ではない。誤りは、明白かも知れないが、我々が認 めようとする以上に、試験についての我々の直感の元に存在している。誤りの箇 所は少ないのかも知れないが、我々は、それらをどのように見つけるかを知らな いのである。更に悪いことに、我々は、どうやってサーチしたらよいのかも、選 択された箇所をどのように判断すべきかも、どの時点でやめたらいいのかも、知 らない。だから、5000の箇所を試験してみてエラーが発見できなかった場合 でも、エラーは全くないのか、それとも、10残っているのか、あるいは、まだ 、5000も残っているのかなど、わからない。技術的な側面からいえば、試験 を最も必要としているのは、強固な基礎理論であり、・・・」(ACMのコミュ ニケーションの中のソフトウェア試験に関する特別セクション、1988年)で ある。 1990年代には、ソフトウェアの「リエンジニアリング」が、流行語(bu zzword)となった。IBMシステム・ジャーナルの28巻2号(1989 年)には、「プログラム理解:1990年代への挑戦」という表題が付けられて いる。 IBMの研究によれば、世界中では、3億ドルがソフトウェアのメンテナンス に費やされ、この数字は、新たなソフトウェアの集積と古いソフトウェアの加齢 とによって、上昇している。 MITの研究によれば、新たなソフトウェアのプロジェクトに配分される1ド ルに対して、そのプロジェクトのメンテナンスには、9ドルが費やされるとのこ とである。 1990年11月号のソフトウェア・マガジン誌では、プライス・ウォーター ハウスによる研究が掲載されており、そこでは、既存のシステムの中のエラーを 訂正するシステム・ワークに対しては、1年当たり10億ドルのマーケットが存 在すると評価されている。 ソフトウェアのデバッギングに関する現在の技術は、コントロール・ブレーク (control break)技術に基づいている。これは、以下のように行 われる。以下のa〜cの方法の中の1つを用いてコントロール・ブレークを設定 することにより、解析が、ソースから付勢される。 a)プログラマがソースを検討し、カーソル又はその他のポインティング・デ バイスを、特定のソース・コードのラインの上に位置させることにより、コント ロール・ブレークをマニュアルで設定する、又は、 b)プログラマは、デバッギング・ツールに命じて、現時点でアクティブなソ ース・コードのラインを自動的にハイライトすることにより、その実行を視覚的 にトレースできる程度の遅い速度でコードを解釈することにより、コードを動か させる(トレースさせる)、又は、 c)特定のタイプの命令(instruction)ごとに、コントロール・ ブレークが設定されるように命じられる。たとえば、各入力ステートメントの後 で、又は、各コール(実行)ステートメントの前に、である。 コントロール・ブレークの目的は、プログラムの変数の値をマニュアルに確認 するために、実行プロセスを一時的に停止させることである。 コントロール・ブレーク技術が用いられるときには、次のことが仮定される。 すなわち、 (i)プログラマは、コントロール・ブレークを、適切なソース・コードの位 置に設定する。 (ii)上の(i)を仮定した上で、プログラマは、どの変数を調べるかを理解 している。 (iii)上の(i)及び(ii)を仮定した上で、プログラマは、何が誤りの原 因であるかに関して正しい決定をする。 正確なマニュアルでの解析の確率は、したがって、(i)、(ii)及び(iii )の確率の積に等しい。たとえば、それぞれのステップにおける正しい決定の確 率が10%であれば、マニュアルの解析で正しい結果が得られる確率は、0.1 %である。 以上で見たように、誤りの原因の箇所を特定しようとする伝統的なコントロー ル・ブレーク技術は、全く自動化されておらず、チェックすべきか、何をチェッ クすべきか、それは何を意味するか、に関する認識上の決定の間の人的なエラー のあらゆる可能性を導入してしまう。 試験プロセスの実行の間に、どのソース・コードの命令がカバーされどれがカ バーされていないかを自動的に判断する領域で、いくらかの仕事がなされてきて いる。 米国特許第4853851号(Horsch)は、「静的及び動的な解析記録 に基づいて試験済みプログラムのコード・カバレッジを判断するシステム」を開 示している。これは、試験の最中にコンピュータ・プログラムにおいて実行され た命令の数と、そのプログラムの中の命令全体の数との比率を測定する方法であ る。 一般的にはより多くの命令が試験の間にカバーされるほどよいが、あるプロセ スのステップが実行されたという事実は、その有効性に関しては情報を与えてく れない。すなわち、実行されたその特定のステートメントはそもそも間違って構 成されていたかも知れないし、その特定のステートメントは、間違った場所で間 違った時点で実行されるかも知れないし、更には、その特定のステートメントは 、プロセスの結果を変更しない又はそれに影響しないステートメントであるかも 知れない。 米国特許第4802116号(Ward他)は、機械のプロセスを制御し、そ のデバッギングを容易にする「プログラムされたコントローラ」を開示している 。アプリケーションは、ここでは、1又は複数の個別のループに組織されること により、機械の各部分に対する特定の制御方式のシミュレーションをするように 設計されている。組み込み型(ビルトイン)の制御メカニズムが、これらのルー プの状態を、ループの間での移動の原因となる条件と共に、記録する。 この技術は、独立のループから構成されループの状態をトレースする手段がプ ロセスを制御するプログラムにおいて予めコード化されているような、非常に特 定の構文(syntax)規則によって特別にコード化されたプロセスだけに、 適用が制限される。プロセス履歴(ヒストリ)の記録は、ステートメントの各ブ ロックと異なるブロックを接続する各論理条件ステートメントとを表すシーケン スを記録することによって行われる。システムの誤り解析は、XPDマシンが与 える程度までには自動化されていないが、その理由は、XPDマシンの場合とは 異なり、解析が実際のプロセスの結果を参照することによってではなく、プログ ラム状態の記録されたシーケンスを解析することによってなされ、よって、XP Dマシンが行うような高レベルの推論とユーザ・インターフェースとを提供しな いことによる。 従来技術は、定義された領域内でのある程度の不確実さを有しながらであって も、コンピュータ・ソフトウェアにおける論理の誤りの位置を自動的に特定でき る汎用の(ジェネリックな)プロセスを提供していない。これは、そのような自 動化が、以下の2つの理由のために実現不可能である、と一般的に信じられてい ることが原因である。すなわち、 1)上述のように、ソフトウェアは、原因と結果とが近接しているというハー ドウェアと同じ規則には従わず、特定の誤動作の原因となるソフトウェア上の誤 りは、そのソフトウェア・システムの中の、ほとんどあらゆる場所に存在する可 能性がある。 2)ソフトウェア・システムは、予測される結果がシステム内でコード化され ているのでなければ、そこから結果として何が予測されるのかを知っておらず、 よって、予測されない結果である誤動作を認識できない。プログラム仕様を事前 にコード化することは、その複雑性とエラーを有する傾向のある特徴とにおいて 、このソフトウェア機能をプログラムすることと異ならないことを示す仕事がな されている。 更に、システム仕様を事前にコード化することによってソフトウェアの誤動作 を回避しようとすることは、ソフトウェアの誤動作は絶対的には定義できないの であるから、ソフトウェアの誤動作の有する以下の特性を見過ごすことになりか ねない。すなわち、 ソフトウェアの誤動作は、入力及び出力における予測の変化に対して相対的で あり、 ソフトウェアの誤動作は、動作環境の変化に対して相対的であり、 ソフトウェアの誤動作は、システムの結果の個別の予測に対して、これらの予 測が明示的に文書化されていない場合には、相対的である。 我々は、ここで、ソフトウェアの誤りの箇所を特定する際の問題は、基本ソフ トウェア・プロセス(プログラムのソース・ステートメント)の正しさの相対性 そのものの中に存在することを付け加えたい。 基本プロセスは、三次元で存在する。最初の2つは、プログラムのアルゴリズ ム空間の2つの次元であり、これは、流れ図を見ることによって理解できる。静 的なプログラム解析は、この二次元空間で行われる。第3の次元は、プログラム 実行プロセスにおける時間である。動的な解析は、空間と時間とにおいてなされ なければならない。 プログラムの静的な解析と動的な解析との違いは、古典力学と現代力学との違 いと同じくらい大きい。 「誰も、ある時刻において、でなければ場所を認識したことがなく、又は、あ る場所において、でなければある時刻を認識したことがない」(H.ミンコフス キー『空間と時間』)ように、プログラムのアルゴリズム空間内にそれ自体のハ ードコード化された位置を有するプログラムの内部の基本プロセスは、プログラ ムの制御がその位置に至ったとき及びその場合にのみ、意味を有するのであり、 その意味は、そのプロセス内の別の時刻では異なっている。 基本プロセスの意味における違いは、このプロセス内の別の時刻においては、 この基本プロセス(ステートメント)の実行の前後の実行履歴の潜在的な違いに よって、条件付けられる。 従来技術は、コンピュータ・ソフトウェアにおける論理的な誤りの箇所を自動 的に特定しプログラムの動的な解析を全体的に向上させるために必要な以下の主 な技術的なステップを欠いていた。すなわち、 I)その相対性の属性(attributes)を導入し自動的な論理解析を 実行可能にする、自動化プログラム解析に関する新たな理論と、 II)この新たな理論に基づく技術であって、目標プロセスの要素である「正し さ」(correctness)と「不確実性」(uncertainty)と に関する知識上で動作し、この不確実性を自動的に最小化するメカニズムを有し 、目標プロセスの要素の間で上述の知識を集積し伝搬することを可能にするプロ セスから構成され、よって、目標プロセス・モデルの「知能」(intelli gence)を自動的に増加させる技術と(ただし、以下の説明では、我々は、 この「知識」の語を、目標プロセス内での特定の場合における「正しさ」又は「 不確実性」という目標プロセスの要素の理解を記述するものとして用いる)、 III)上述の新たな理論に基づく技術であって、解析ツールが解析の適切な目 標 に関して、すなわち、適切なプログラム・ステートメントと適切なシステムの動 作(ふるまい、behavior)とに関して、適切な場所と時刻で自動的に開 始されることを可能にする、ユーザと目標ソフトウェアとの間の高レベルインタ ーフェースを可能にする技術と、を欠いていた。 自動解析は、コントロール・ブレークをどの位置に設定すべきかを理解しよう とする認識上の試みの上には、構築できない。 我々は、上述の技術的なステップは、将来のオペレーティング・システムの不 可欠な部分であると考える。コンパイラの静的な構文解析と類似して、このオペ レーティング・システムは、目標システムの動作を、論理的な誤りの位置をます ます確実なレベルで特定できる程度まで、動的に解析できる。 コンパイラ診断には、異なる程度の不確実性のアナログが存在する。すなわち 、コンパイラは、文字aの代わりに文字bがなければならないとはいわない。そ うではなく、特定のタイプの問題があるステートメント又はステートメント群の 特定の領域に存在すると、報告する。 コンパイラのこのような部分的に不確実な解析がなくでは、我々は、どのよう な相対的に複雑なコードの構文の誤りも扱うことができないだろう。 同じ自動化が、論理的誤りの解析の領域でも長く求められてきた。XPDマシ ンは、更にはるかに複雑で従来技術では自動化されていなかった領域、すなわち 、論理的誤りの位置とタイプとを特定する領域において、この種の自動化を提供 する。 以上で述べた技術的なステップは、プロセス・アルゴリズムを表す非常にジェ ネリックではあるが非常に厳密なモデルに基づいて構築されなければならなかっ た。このモデルは、任意の既存のソフトウェア・システムから取り出すことがで きた。 以下の説明では、XPDマシンの語を、次のプロセスの組み合わせとして理解 する。詳細は、後に更に詳細に述べる。すなわち、 a)伝統的なオブジェクト・コード実現(implementation)に おけるXPDモデルと目標プロセスとの「疑似パラレル」(pseudo pa rallel)な(すなわち、「遅延シーケンシャル」(delayed se quential)又は「遅延パラレル」な)同期化された実行、又は、XPD オブジェクト・コード実現における目標プロセスのオブジェクト・コードの要素 としてのXPDモデルの実行と、 b)システム入力及びシステム出力のプロセス同期化されたマップの構築と、 c)1)原因の知識、すなわち、目標プロセスの要素の実行のイベントに対す る有効な関係とその正しさ、を作成し、2)この知識を目標プロセスの要素の間 に伝搬し、3)目標プロセスに関する集積された知識を用いて、誤り位置の領域 又はシステムの予測の変化の結果として修正されなければならない領域を定義す る、XPD解析機関(analytical engine)を動作させること 、の組み合わせである。 XPDマシン技術の長所のエッセンスは、簡単には、次のように述べることが できる。 プログラムにおいて誤りの箇所を特定するためには、又は、一般的にそのプロ グラムを理解するためには、プログラマは、伝統的には、実質的な調査の作業を 行わなければならない。人的なエラーを引き起こす可能性がありしたがってマニ ュアルの解析に伴うエラーに起因する二次的な誤りを生じる潜在的な可能性を有 するのに加えて、このマニュアルのプログラム解析は、あまりに複雑すぎて実行 できないことが多い。 本発明では、この調査作業を行い、マニュアルの解析の大部分を自動化する。 ここでの解析は、正確さをもってなされ、目標となるプロセスの動作に関する知 識の集積に伴い、この正確さが増す。本発明の中核は、この知識を集積して用い ることである。本発明では、目標となるプロセスの内部のイベントとその効果と を調べる。 実質的な存在を有するものであるイベントが他のイベントによって生じる効果 であり原因まで追跡できる条件又は事件(occurrence)として理解さ れる場合には、本発明は、基本プロセスのイベントの効果、すなわち、目標プロ セスにおける原因・効果(cause−effect)の関係を調べることによ り動作するといえる。 目標プロセスを伝統的な方法で解析する、すなわち、前進しながら目標プロセ スをトレースする代わりに、本発明では、効果から逆に戻ることによって自動的 に解析を行う。 このアプローチは、人間の精神がなれているそのものである。すなわち、我々 は、我々を取り巻く効果を目にして、それらの効果の原因となっている内的なプ ロセスの理解を構築しようとする、すなわち、効果から原因に向かって逆向きに 戻ることによって原因・効果の理解を構築しようとする。 コンピュータ・プログラムが人間によって構築されているという事実は、我々 がそれを理解しなければならない方法、すなわち、基本ステップから単純に前に 進みながらトレースするのではなく効果から解析を開始するという方法を変更す べきではない。 目標プロセスの結果は目標プロセスの最終的な効果なのだから、これらの最終 的な効果をその原因までトレースできるということは、プログラム解析がプログ ラムの出力から始まる場所である元のインターフェースを可能にする。 本発明においては、予測される結果を生じる効果が、中間的な効果を正当化す る、又は、予測される結果を生じるイベントが、中間的なイベントを正当化する 。 これによって、そもそもがその定義も相対的ではある非最適な計算を可能にす るが、しかし、計算に対する基本的な原理に承認(効果承認)を与え、したがっ て、既存のプロセスに基づく前方方向へのプログラム開発に基本的な原理をもた らす。 XPDマシンは、XPD解析機関内に生じるプロセスを介して、背景にある目 標プログラム内の効果を調べる。 「解析機関」(analytical engine)の語は、およそ150 年前にチャールズ・バベッジ(Charles Babbage)によって作り 出され、彼が取り組んでいた機械式のコンピュータの最初の基本的概念を指すも のとされた。人的なコンピュータを機械式のコンピュータによって置き換えよう とする彼のアイデアは、人的なコンピュータによって生じるエラーについての彼 の強迫観念からきていた。 XPDマシンに関する本発明は、現代的なコンピュータに対する人的なプログ ラミングにおけるエラーを触媒として引き起こされたものである。 XPD解析機関は、目標プロセスの動作に関する経験を集積することによって 、何が正しい動作であったのか、何が間違った動作であったのか、どの動作が解 析すべきではなかったのか、どの動作が間違って解析されたのか、を学習する。 このプロセスは、人間の精神が連想(associations)や意識下の 行動様式(reflexes)を構築していく認知的な学習プロセスと比較でき るであろう。 この認知的な学習において、我々を正しい結果に導くステップが、我々の学習 プロセスにおいて特別の地位を達成する。これらのステップは、後に予測されな い結果が生じる場合でも、最も疑い得ないものである。解析によってこれらの既 に構築された行動様式又は連想を元に戻す(undo)ことを強制されるのなら ば、それは、通常は、幾分の痛みを伴うプロセスであり、我々に、最初に連想や 行動様式を構築した当初の結果を再び解析することを強制している。 XPD解析機関においては、この反学習(unlearning)は、「知識 を喪失すること」によって表され、システムの結果においてそれまでは正しいと 理解されていた誤動作が認識された場合に、生じる。 XPDマシンの学習プロセスは、目標プロセスの前方向の実行によって伝搬さ れ、正しいものとして受け入れられている(予測されている)システムの結果を 集積することによって付勢される。したがって、解析の結果は、人的なファクタ に依存し、しかし、人間の活動、したがって人的なエラーは、最終的な結果すな わち、可視的な結果と解析することに限定される。 この可撓性は、システム仕様の変更に対する異なる解析結果を許容し、また、 既存のプロセスに基づいてプログラム開発を前進させるためには、実際に、必要 である。XPD解析機関は、それまでには見逃されていた誤動作が見つかったり 、システムの予測(仕様)が変更された場合には、従前の解析の一部を元に戻す ことを許容する。 XPD解析機関の当初の特徴の1つは、プログラムの結果(効果)の集積を通 して、目標プロセスの時間が増加するにつれて可視的となるプログラム結果の計 算における、潜在的な誤りの位置に関する不確実性の領域を最小化することにあ る。 解析の精度の程度は、集積されたシステムの結果によって測定される上述のプ ロセス時間の座標系の中の、最初に認識された誤作動の位置、又は、仕様の変更 に依存する。 発明の概要 本発明の目的は、目標となるプロセスの中における誤りの位置又は要求される 修正の場所に関する不確実性を最小化する方法を提供することである、ここで、 誤りとは、誤作動(予期されない結果)の原因であり、コンパイラによっては発 見されず、修正は、新たな結果の予測に従わなければならない。 これは、目標プロセスの機能の認知的(cognitive)な理解に類似の プロセスを総合することによって達成される。 第1に、目標プロセスのモデルが、非常に厳密なしかし汎用的な規則による静 的な解析に基づいて構築され、その動的な解析の間の目標プロセスに関する知識 の更なる集積のための基礎を作成する。このモデルでは、すべての関係のある( relevant)プログラム・ステートメントは、二次元のXPDアルゴリズ ム空間の中にそれ自体の特定の位置を有する。 結果的な構成の厳密性により、連続的なビジョンを構築することを通じて目標 プロセスの任意の2つの要素の間のアクセス可能性(経路の存在)が容易に評価 できる。アクセス可能性は、潜在的な依存性を定める。ステートメント(b)が ステートメント(a)からアクセス可能である場合には、そのときに限り、(a )の正しさが(b)の動作に影響を与え得る。 たとえば、要素のアクセス可能性の自動的な評価の1つの重要な結果は、終了 不可能(un−terminable)なプロセス構成、すなわち、データに独 立のエンドレス・ループを確実に識別できることである。 目標プロセスのモデルを構築する際に、本発明は、目標プロセスのアルゴリズ ムの制御成分を抽出して、そのプロセスの制御構造を表す形式(アルゴリズムの XPDフレーム)を作る。アルゴリズムのXPDフレームは、任意のプロセスの 制御構造を表すのに必要十分な、厳密で単一定義の形式である。 第2に、特定の動的な情報がすべての関係のある基本プロセス(プログラム・ ステートメント)に対して集積されることを可能にするメカニズムが導入される 。この情報は、基本プロセスの機能の理解に関係し、目標プロセスのモデルのこ れに先立つ静的な解析の間に構築されたものに付属される。我々は、更に、この 特定の情報を、基本プロセス知識と呼ぶ。上述のメカニズムは、原因・効果の関 係と、プロセスの要素の正しさに関する相対的で時間に依存する測定についての 情報が構築されることを可能にする。 したがって、本発明の更なる目的は、本発明で定義されるプロセス空間とプロ セス時間(プロセス・アドレスと局所的時間)との座標系と、本発明で定義され るプロセスの正しさと不確実性との測度とにおいて、プロセスのステップを、正 しい又は不確実である、と定義するメカニズムを提供することである。上述の基 本プロセスの知識は、連続的に集積され、異なるプロセス要素の間で伝搬される 。目標プロセスの誤動作や予測されたのとは異なる結果が認識されるときには、 この知識が、目標プロセスにおいて必要とされる修正の位置を識別するために用 いられる。 本発明の別の目的は、プロセスの正しい機能の知識ベースを作成することによ って、目標プロセスの正しい要素を、目標プロセスのメンテナンスの間の改変か ら保護する手段を提供することである。 本発明の更に別の目的は、XPDマシンを介して、ユーザと目標プロセスに関 する集積された知識との間の高レベルのインターフェースのためのメカニズムを 導入することである。 本発明の更に別の目的は、その診断を容易にするために、目標プロセスの動作 のマルチメディアでの提示を与えることである。 本発明の更に別の目的は、目標プロセスのオブジェクト・コードの新たな形式 であるXPDオブジェクト・コードと、その実行方法とを導入することである。 XPDオブジェクト・コードは、静的及び動的なプログラム解析と、プログラム のメンテナンスとに、より適している。XPDオブジェクト・コードによれば、 プロセスを修正するために通常は行われなければならない目標プロセスのコード の伝統的な再コンパイルと再リンキングとを時として不要にする。 本発明のこれらの及びこれ以外の目的は、目標プロセスのソース・コードから モデルを構築するのに必要であり目標プロセスのアルゴリズムを表現している目 標プロセスの静的情報に対して特定のものを抽出し、目標プロセスのおける原因 ・結果関係の理解を構築するメカニズムを導入し、目標プロセスにおいて基本プ ロセスの時間依存的であり相対的が正しい・不確実な属性を構築するメカニズム を導入し、この目標プロセス実行の間に目標プロセスの要素の間の正しい・不確 実な知識を伝搬することによって目標プロセスのモデルの知能レベルを自動的に 増加させることによって、達成される。本発明は、また、以下の説明を参照する ことによって更に良く理解され得る他の特徴も備えている。 図面の簡単な説明 図1は、サンプルの目標プロセスの流れ図である。 図2は、図1のサンプルの目標プロセスのアルゴリズムのXPDフレームであ る。 図3は、複雑な論理条件がどのようにして2つ又はそれより多くの縮小(re duced)論理条件に縮小されるかを示す。 図4は、図1のサンプルの目標プロセスの縮小流れ図を表す。 図5(A)は、図1のサンプルの目標プロセスのXPDグラフであり、図5( B)は、図5(A)のXPDグラフの対応する要素に指定されたバイナリ・アド レスを表す。 図6は、IF−THEN−ELSE型の構成がXPDフレームやXPDグラフ においてどのように表されるかを示す。 図7は、XPDモデル、XPDリポジトリ、及びXPDソース・コードを構築 するステップを示す。 図8は、XPDマシンの動作の主な成分を示す。 図9は、終了アクセス・インジケータを定義し、別のサンプル・プロセスの流 れ図の例に関して連続的なビジョンを作ることによって目標プロセスの任意の2 つの要素の間のアクセス可能性を定義するメカニズムを示す。 図10は、プロセス・ターミナルの伝搬ビジョン・ポイント(PVP)を定義 するメカニズムを示す。 図11は、目標プロセス実現の間に潜在的に導入される誤動作の異なるソース を示す。 図12は、3つのタイプの目標プロセス誤動作を示す図である。 図13は、XPDマシンが、どのようにして目標プロセスの前方向への実行の 間に誤り位置の不確実性の領域を最小化するかを説明する図である。 図14は、どのように、イベント定義空間が構築されるかを示す。 図15は、どのように、正しいアルゴリズム空間が伝搬されるかを示す。 図16は、プロセス要素の正しさに関する知識が、どのように、特定のプロセ ス・アドレス(PA)に中で集積されているかを示す。 図17は、先祖(ancestor)イベントを定義するメカニズムを示す。 図18(A)は、XPDオブジェクト・コードを実行するプロセスを示し、図 18(B)は、XPDオブジェクト・コードの2つの成分を示し、図18(C) は、XPDモデルによって制御されつつあるXPDリポジトリを解釈するプロセ スを示す。 図19は、ACB(解析された計算ベース)構成の実現を示す。 図20は、図21(A)に提示されるサンプル・プロセスの、XPDグラフ( 図20A)と、XPDリポジトリ(図20B)である。 図21は、サンプル・プロセス(図21A)と、そのXソース(図21B)で ある。 好適実施例の説明 以下の説明では、次の順序で、本発明の主要なステップについて述べる。 1)目標プロセスのアルゴリズムのXPDフレーム構築 2)目標プロセスのXPDグラフと縮小流れ図との構築 3)目標プロセスにおける目標プロセスの正しさと不確実性とを、誤り又はシ ステムからの要求の変更に起因する修正箇所として評価する、XPDマシンの原 理の定義 4)目標プロセスのXPDマシン原理の定義、知識伝搬(知識帰納) 5)目標プロセスのXPDモデルの構築、解析計算ベース(ACB)の定義、 目標プロセスのXPDリポジトリの構築 6)Xソース・コードの構築、目標プロセスの動作履歴(behavior history)を把握する最小のオーバヘッド編成、増分システム出力プロセ ス同期式(ISOPS)マップによるユーザ・XPDマシン目標プロセス・イン ターフェースの構築、システム入力プロセス同期式(SIPS)マップ 7)目標プロセス、そのXPDマシン、XPDリポジトリ、及びXソース・コ ードの例 8)目標プロセス・モデルの疑似パラレル同期式実行、遅延シーケンシャル及 び遅延パラレル型のXPDモデルの実行 9)XPD解析機関の実行、目標プロセスにおける原因・効果関係の解析計算 ベースの構築及び伝搬、知識帰納 10)誤り位置又は修正箇所の領域を一定に減少する不確実性をもって局所化 するための、ISOPSマップを参照することによる、XPD解析機関の知識演 繹プロセスを付勢 11)XPDグラフとXPDリポジトリとの解釈 12)XPDオブジェクト・コードとその実行、XPDモデルの目標プロセス のオブジェクト・コードの一部としての実行、 13)XPDオブジェクト・コードの再コンパイル及び再リンケージ 14)テスト及び製造の全段階におけるXPDマシン・プロセスの解釈 15)結果志向型のプログラミング(ROP) 16)プログラム・ステトスコープの解釈 1)目標プロセスのアルゴリズムのXPDフレーム構築 以下の説明では、XPDモデルがどのようにしてXPDグラフから構築される かを示す。目標プロセスのXPDグラフの構成を先に述べて、次に、そのプロセ スのアルゴリズムのXPDフレームを構築する。 アルゴリズムのフレームを構築するステップを全体としてバイパスしてしまう こともできるが、このフレームとXPDグラフとが共有する幾つかの重要な属性 を示す便宜のために、このステップについて説明する。更に、アルゴリズムのX PDフレームは、常に、目標プロセス制御構造の非常にコンパクトで厳密な(単 一定義)表現として、用いることができる。 以下の説明は、複数の定義と公理(axioms)とを含む。これらは、XP Dマシンがその上で動作するオブジェクトや用語の幾つかは、これまでに定義さ れていないために、必要である。 次のものは、XPDフレーム、XPDグラフ、及びXPDモデルがその上で動 作するオブジェクトの集合(組、set)である。すなわち、 {[,A,X,L,D,E,W,N,=,R,*,C,+,S,/,!,(,), V,i}であり、ここで、 [は、プロセス・エントリである。 Aは、算術又は割り当てステートメントである。 Xは、グラフィクス・ライブラリ・サブルーチン又は関数以外の、関数又はサ ブルーチン呼び出しステートメントである。例として、CALL、PERFOR Mがある。 Lは、IFステートメントである。(1つの入力、2つの出力) Dは、ループ・ステートメントである。例として、DO、FOR、WHILE がある。 Eは、入力ステートメントである。例として、READがある。 Wは、出力ステートメント又はグラフィクス・ライブラリ・サブルーチン又は 関数である。例として、WRITE()、CALL MOVETO(x,y,x y)がある。ただし、{x,y}は、スクリーンの座標系である。 Nは、ヌル(空、null)ステートメントである。例として、CONTIN UEがある。 =は、STOPステートメントである。 Rは、RETURNステートメントである。 *は、GO TOステートメントである。 Cは、ループ・ターミナル・ステートメント、又は、仮定されている場合には 、その位置である。例として、CONTINUE、ENDDOがある。 +は、割り当てられたGO TOステートメントである。 Sは、ASSIGN(ALTER)ステートメントである。 /は、GO TOのエントリ、又は、その位置である。例として、何らかのG O TOによって参照されたラベルの位置又はパラグラフ・ネームがある。 !は、ENDIF、又は、仮定されている場合には、その位置である。 (は、LCフィールドのオープンである。 )は、LCフィールドのクローズである。 Vは、ELSEである。 iは、(と)と以外のXPDオブジェクトに対するそのオブジェクト・クラス 内のプロセス要素のインデックスであり、XPDオブジェクトである(と)とに 対するLCフィールドのレベルである。 以下の説明では、我々は、単一のモジュールであるコンピュータ・プログラム ・プロセスについて述べる。ただし、我々の結果は、複数のプログラムのシステ ムを表すプロセスにも容易に拡張できる。 このモジュールは、メイン・プログラム、又は、1つのエントリ・ポイントを 有する単一のサブプログラム(すなわち、サブルーチン、関数、又はパラグラフ )であると理解する。以下に述べる例では1つの終了(exit)を有するプロ グラムを提示するが、ここで説明する実現方法(implementation )は、複数の終了を有するモジュールにも同じように適用できる。複数の終了を 有するモジュールに対するXPDマシンの実現方法は、ここで説明する単一エン トリ・モジュールに対するXPDマシンの実現方法から容易に得られる。図2は 、図1の流れ図によって図解されたサンプルの目標プロセスのXPDフレームを 表す。 定義F1:縮小論理条件(Reduced Logic Condition )(LC)とは、そのブール(0又は1)解(Boolean solutio n)によってプロセスの将来の方向を決定する、1つの制御入力と2つの制御出 力とを有するプロセス要素である。 XPDオブジェクト集合では、LCは、L又はDのオブジェクトによって表さ れる。負の解を0解又はロー・ポテンシャルの解と呼び、正の解を1解又はハイ ・ポテンシャルの解と呼ぶ。 目標プロセスが2つよりも多くの出力を有する制御要素を含むときには、それ らの制御要素は、XPDフレーム及びXPDグラフにおいて、その表現の間に、 2つ又はそれより多くのLCに自動的に縮小される。図3を参照のこと。結果的 なLCの数は、制御出力から1を引いた数に等しいが、これは、各LCが制御出 力の数を1だけ増加させているからである。 定義F2:メイン・ブランチ(Main Branch)とは、すべての出会 った(met)論理条件がそのロー・ポテンシャルを通過したときに、メイン・ ブランチの原点からプロセス・ターミナルへの実行の方向でのプロセスの通過を 表すブランチである。 メイン・ブランチの原点には、2つの種類がある。すなわち、 1)エントリ・メイン・ブランチを開始するプロセス・エントリ(図1及び図 4において、STARTと表されている)と、 2)LCのハイ・ポテンシャル解である。 定義F3:プロセス・ターミナル(process terminal)とは 、XPDオブジェクト集合の次のオブジェクトである。すなわち、 GO TO:これは、XPDフレームの表現では、*と+とである。 ループ・ターミナル:これは、XPDフレームの表現では、Cである。 RETURN:これは、XPDフレームの表現では、Rである。 STOP:これは、XPDフレームの表現では、=である。 プロセス・ターミナルには、2つの種類がある。すなわち、 定義F4:出口ターミナル(exit terminal)とは、プロセスか らの出口を結果的に生じるターミナル{R,=}である。 定義F5:リワインド・ターミナル(rewind terminal)とは 、プロセスを、同じメイン・ブランチ、又は、現在のメイン・ブランチから左側 のXPDグラフにおいて定義されたメイン・ブランチにおいて既に定義されてい る要素に巻戻す(リワインドする)ターミナル{*,+,C}である。 したがって、メイン・ブランチの長さは、そのターミナルの位置に依存し、よ って、メイン・ブランチの定義の順序に依存する。 XPDフレーム及びXPDグラフにおいてメイン・ブランチを提示する順序は 、「次に最低のポテンシャル」(Next Lowest Potential )の原理によって説明される。 アルゴリズムを解析する(parse)「次に最低のポテンシャル」の順序と は、 ステップ1:STARTに位置する。 ステップ2:出会ったLCのロー・ポテンシャル解(0解)を通って、既に通 過したプロセス要素に至るまで、又は、EXITまで、プロセスの解析(par sing)を続ける。 ステップ3:そのロー・ポテンシャルを直前に通過したLCまで戻り、存在す る場合には、そのハイ・ポテンシャル解に位置する。すべてのLCがそのハイ・ ポテンシャル解を通って通過されている場合には、目標プロセスのアルゴリズム の解析は完了である。 ステップ1の各実行は、メイン・ブランチを構築し、これは、出口ターミナル 又はリワインド・ターミナルによって終了する。したがって、前向きに分岐(b ranch)しているこれらのGO TO構成は、XPDフレーム及びXPDグ ラフから除去される。 公理:nの縮小されたLCを有するプロセスは、(n+1)のターミナルと、 (n+1)のメイン・ブランチとを含み、各メイン・ブランチは、そのターミナ ルによって十分に識別される。 公理:(n+1)のメイン・ブランチの全体は、プロセスのすべての要素を表 すのに必要かつ十分である。 解説:LCのない、すなわち、条件制御のないプロセスには、ただ1つのブラ ンチ、すなわち、エントリ・メイン・ブランチだけしかない。各LCは、そのハ イ・ポテンシャルを通過する新たなメイン・ブランチを開くことによって、メイ ン・ブランチの数を1だけ増加させる。 各メイン・ブランチとそのターミナルとは、そのb座標(図5A)によって、 XPDグラフにおいては、同一視される。プロセス・アルゴリズムのフレームは 、次のブール代数表現に基づいて構築される。すなわち、 LA V !LB これは、「LであればAをせよ。そうでなければ(Lでなければ)Bをせよ。」 と読む。XPDフレームでは、我々は、カッコ(と)とを、サイクル{*,+, C}と出口{R,=}とをイネーブルする論理レベルとターミナルとの範囲を表 すものとして導入した。我々は、また、!Lを省略したが、これは、特定のLに 属するELSEのサインであるVの後には「Lでない」が続くのは明らかだから である。よって、われわれは、 (iLAVB)i という形式を得るが、ここでは、A及びBは、それぞれが、LCLのOサブフィ ールドと1サブフィールドとであり、iは、LCフィールドのレベルを表す。更 に定義を続ける。 定義F6:tパス(t−pass)とは、プロセス・エントリからプロセス・ ターミナルへの通過である。 公理:任意のプロセスには、(n+1)のtパスがある。ここで、nは、この プロセスにおけるLCの数である。それぞれのtパスは、そのターミナルによっ て、一意的に識別される(図5A)。 定義F7:LCのブランチとは、そのLCを通過し、そのLCに続くtパスの 一部である。 各LCは、1又は複数の0ブランチと、1又は複数の1ブランチとを有してい る。図1では、LCL1は、dとhで表される2つの1ブランチを有する。 定義F8:LCの0サブフィールドとは、そのLCの0ブランチ上に位置する すべてのプロセス要素の組み合わせである。 定義F9:LCの1サブフィールドとは、そのLCの1ブランチ上に位置する すべてのプロセス要素の組み合わせである。 定義F10:LCのフィールドとは、そのLCの0サブフィールドと1サブフ ィールドとの組み合わせである。 定義F11:LCフィールドのレベル(論理レベル)とは、そのLCを通過す るTパスにおける、そのLCの次数(オーダー)である。 たとえば、図1では、次の論理レベルが存在する。すなわち、L1は、論理レ ベル1を開く。L2及びL3は、論理レベル2を開く。D1は、論理レベル3を 開く。 図1では、メイン・ブランチは、a、b、c、d、eの線によって示されてい る。これらは、それぞれ図5Aではb座標である1、2、3、4、5に見られる ターミナルによって識別される。LCL1の0フィールドは、図1では、破線f によって示され、LCL1の1フィールドは、破線gによって示されている。 XPDフレームは、メイン・ブランチを、対応するレベルで提示されるLCと 共に、特別の順序で表すことによって構築される。図2を参照すると、XPDフ レームは、複数のレベルのカッコを含む代数的な表現の形式で構築されている。 すなわち、 (..(..(..)..)..(..)..) 1 2 3 3 2 2 2 1 である。 代数的表現の規則は、外側(より低いレベル)のカッコは、内側(より高いレ ベル)のカッコが閉じる前には閉じることができない、というものである。 XPDフレームでは、カッコは、論理レベルを表す。同じ規則が適用される。 すなわち、より低い(外側の)レベルの論理フィールドは、より高い(内側の) レベルの論理フィールドが閉じる前には閉じることができない。 定義F12:LCのフィールドが開かれる、とは、そのフィールドをフレーム において表現し始めるときである。 定義F13:LCのフィールドが閉じられる、とは、それがフレームにおいて 完全に表現されているときである。 定義F14:LCのアクティブ・フィールドとは、LCの最も高いまだ開いて いるフィールドである。 定義F15:プロセス・セグメントとは、プロセス・エントリ、プロセス・タ ーミナル、及びLCの間に位置するメイン・ブランチの一部である。 プロセス・ターミナルとLCとが、プロセス・セグメントを終了させ、その終 了させるセグメントに属する。プロセス・セグメントのターミナルでありながら 、各LCは、同時に、2つの他のセグメントを有する。すなわち、(その0解を 通る)LCの負のセグメントと、(その1解を通る)LCの正のセグメントとで ある。 セグメントは、2つの属性、すなわち、1)論理レベルと、2)バイナリ・ア ドレス(後に説明する)とを有している。 定義F16:プロセス・セグメントの論理レベルとは、そのセグメントが属す るLCの論理レベルに等しい。 定義F17:エントリ・セグメントとは、そのプロセス・エントリによって所 有されるプロセス・セグメントである。 エントリ・セグメントの論理レベルは、0である。(2n+1)のプロセス・ セグメントがあり、ここで、nは、プロセスにおけるLCの数である。すなわち 、各LCに対して2つのセグメントと、1つのエントリ・セグメントとがある。 たとえば、図1では、目標プロセスは、4つのLCと9つのプロセス・セグメン トとを含む。 目標プロセスのXPDフレームとXPDグラフとに対するプロセス・セグメン トのラベル付けは、XPDフレーム又はXPDグラフを構築する順序でなされる 。 図1に提示されているサンプルの目標プロセスでは、次のようになる。 セグメント XPDオブジェクト集合によって表されたプロセス要素 1: A1/1 A2 L1 2: /2 A3 L2 3: *1 4: A4 X1 D1 5: A5 C1 6: A6 W1 *2 7: W2 E1 L3 8: A7 = 9: A8 *1 図2は、図1の流れ図によって表されたプロセスのXPDフレームである。先 に定義された、次に最も低いポテンシャルのオーダーに従って、我々は、エント リ・メイン・ブランチから、アルゴリズムのフレームを構築し始める。 {*,+,C,R.=}のオブジェクトの中の任意のものによって終了された 際には、そのロー・ポテンシャル解(NO)を通過した直前のLCに戻り、その LCのハイ・ポテンシャル解(YES)に属するメイン・ブランチを通過し始め る。このようにして、我々は、結果的に、プロセスのすべての(n+1)のメイ ン・ブランチを表す。ここで、nは、このプロセスの中のLCの数である。 図6は、XPDフレームとXPDグラフにおける、IF−THEN−ELSE 構成の提示を示している。L1(P3)の1フィールドは、0フィールドである L1(P2、P4)が閉じられた(すなわち、完全に表された)後でだけ表され る。 目標プロセスのアルゴリズムを抽出して、「次に最も低いポテンシャル」の規 則にによって構築された単一定義の汎用形式であるアルゴリズムのXPDフレー ムにする方法を次に述べる。 ステップ1:0をアクティブな論理レベルに割り当てる。プロセス・エントリ に上におく。 ステップ2:メイン・ブランチを通過する。それぞれの通過した実行可能な要 素に、1だけ増加した対応するインデックスを有するXPDのオブジェクト集合 から成る名前が割り当てられる。たとえば、A1、A2、L1、A3、L2、* 1は、エントリ・メイン・ブランチを表す。ステートメントが、次に、割り当て られた名前によって、XPDプロセス・リポジトリ(図7及び図8)に記憶され る。LCに現在の通過されたメイン・ブランチにおいて出会った場合には、その ロー・ポテンシャル解(NO)を通過する。LCが次の論理フィールドを開き、 アクティブな論理レベルを1だけ増加させる。すべての通過されたLCは、フレ ームにおいては、対応するインデックスを有するサインL又はDが続く開かれた 論理フィールドのレベルを表す整数を伴う開くカッコによって表される。すなわ ち、(iLj又は(iDjである。 ステップ3:プロセス・ターミナルに出会ったときには、セグメントは終了す る。ターミナルがリワインド・ターミナル{(*,+}である場合には、エント リが既に存在しないのならば、エントリ/iが、1だけ増加したインデックス( i)を伴う制御リターンの位置に挿入される。リワインド・ターミナルに、エン トリ(i)のインデックスが割り当てられる。 ステップ4:アクティブな論理レベルを検査する。IF(もし)アクティブな 論理レベルが0であれば、XPDフレームの構成は終了する。すなわち、STO Pである。ELSE(そうでなければ)、アクティブな論理レベルのサブフィー ルドは閉じたものとしてアナウンスされる。ENDIFとなる。 ステップ5:閉じたサブフィールドを調査する。IF(もし)閉じたサブフィ ールドが0サブフィールドである場合には、サインV(ELSE)がフレームに 置かれる。解析(パーシング)が、そのLCのメイン・ブランチを構築するため に対応するLCのハイ・ポテンシャル(1解)から再開される。そのレベルの1 サブフィールドが開いているとアナウンスされる。ステップ2へ、GO TOと なる。ELSE(そうでなければ、すなわち、閉じたサブフィールドが1サブフ ィールドであったならば)、アクティブな論理フィールドが閉じたものとしてア ナウンスするが、その理由は、その0サブフィールドと1サブフィールドとの両 方共に閉じているからである。論理フィールドを閉じることは、閉じられた論理 フィールドのレベルを指定する整数と共に閉じるカッコによってフレームにおい て、記述される。たとえば、)iである。 アクティブな論理レベルは1だけ減少する。ちょうど閉じた論理フィールドで ある(i....)iは、対応するLCによって終了されたセグメントに対する ターミナルと考えられている。LCのフィールドが閉じられたときには、対応す るセグメントは、終了したとアナウンスされる。ステップ5にGO TOとなる 。ENDIFである。 この前の例は、XPDフレーム構成(図2)では、より高い論理レベルのLC のフィールドは、より低い論理レベルのLCのフィールドの中に存在していたこ とを示している。任意のプロセスにおいて、最大で、レベルNの論理フィールド は、最大で、F個があり得る。ここで、Fは、2の(N−1)乗である。 2)ターゲット・プロセスのXPDグラフと縮小流れ図との構築 次に、ターゲット・プロセス(図1)のXPDグラフ(図5A)と縮小流れ図 (図4)との構築を説明する。 定義G1:縮小(reduced)流れ図(図4)とは、流れ図の形式でのX PDグラフの表現である。 このグラフでは、XPDグラフと同じ原理によって、同じ座標軸であるk及び bの上に構築されている。XPDグラフを構築するための規則を説明する次に示 すプロセスは、縮小流れ図の構築にも応用される。 この流れ図が「縮小」と称されるのは、制御の方向におけるすべての可能な変 化が、右側に1に縮小されているからである。すなわち、LCのハイ・ポテンシ ャル解である。ロー・ポテンシャル解は、制御が落ちる(falling)のを 継続させることによって、制御の方向を変更しない。ジャンプは、後ろ向き(上 向き及び左向き)にのみ許容され、{ターミナル・そのリワインド・エントリ} という基準の対によって表現される。例をあげれば、図5Aにおける{*1 / 1}又は{* /2}又は{C1 D1}である。 定義G2:LCの負の状態(0状態)とは、評価される場合に、LCがその0 解を結果として生じる状態である。 LCの状態は、その評価に関係する変数の状態によって定義される。 定義G3:LCの正の状態(1状態)とは、評価される場合に、LCがその1 解を結果として生じる状態である。 定義G4:バイナリ・アドレス(BA)とは、そのプロセス要素に至るtパス におけるLCの解である1と0との組み合わせである。ここで、プロセス・エン トリには、1のバイナリ・アドレスが割り当てられる。 同じセグメントに属するプロセス要素のBAは、同じである。LCの0セグメ ントのBAは、それに2を乗じることによりLCのバイナリ・アドレスから計算 される(すなわち、右側に0をつければよい)。LCの1セグメントのBAは、 それに2を乗じ1を加えることによりLCのバイナリ・アドレスから計算される (すなわち、右側に1をつければよい)。図4での例をあげれば、L3のBAは 11であり、A7のBAは110であり、A8のBAは111である。 XPDグラフは、2つの方向にのみ構築される。ここでの実現方法では、XP Dグラフは、垂直方向には下向きに、水平方向には右向きに作られている。 メイン・ブランチは、垂直方向に下向きに方向付けられ、トラックが道に沿っ て位置するLCの中の1つの正の状態によって変更されプロセスがそれによって 移動するトラックを表している。 すべてのトラックは、そのb座標に沿って構築され、トラックは決して交差し ない。 LCは、そのハイ・ポテンシャル解に沿って、制御を、そのLCの正の状態に 付随するb座標を有し現在のトラックから右側に位置する他のトラックに切り換 えるポテンシャルを有する。この切り換えは、XPDグラフでは、右方向の水平 線によって表される。 XPDグラフは、XPDフレームから、又は、目標プロセスを解析することに よって、のどちらかにより同じ原理によって構築される。このグラフは、K及び Bの2つの座標上に構築される、これらの座標は、(1,1)から(MK,NB )まで増大する。MKは、最大のKであり、NBは最大のBである。(MK,N B)は、また、メイン・ブランチの数でもある。XPDフレームから出発するこ との便利な点は、メイン・ブランチの集合が既にそこではVのサインによって分 離されているフレームの部分として定義されていることである。メイン・ブラン チは、既に、正しい順序でXPDフレームにおいて提示されている。 次に、目標プロセスのアルゴリズムを、双方向に終了している(bi−dir ected terminated)XPDグラフに「次に最も低いポテンシャ ルの規則」によって、抽出する方法を説明する。図5Aを参照のこと。 ステップ1:XPDグラフは、(1,1)という(k,b)座標を与えられて いるプロセス・エントリから開始する。プロセス・エントリには、バイナリ・ア ドレス1が割り当てられている。エントリ・メイン・ブランチが開始される。 ステップ2:メイン・ブランチの各要素を通過することは、XPDグラフ上で は、k座標の増加と一定のb座標とによって表される。各要素には、それが属す るセグメントのBAが割り当てられている。XPDグラフがXPDフレームから 作られるのでなければ、次の(a)及び(b)が行われなければならない。すな わち、(a)プロセス要素には、XPDオブジェクト集合の対応するメンバーと 1だけ増加したインデックスとから成る名前が割り当てられる。(b)ステート メントが割り当てられてた名前でプロセス・リポジトリに記録される(図7)。 ステップ3:LCは、メイン・ブランチを通過しているのに出会ったら、その 0解を通過する。 ステップ4:メイン・ブランチの構成は、プロセス・ターミナルによって停止 される。もし(IF)すべてのLCが既にその1解を通過していたら、その場合 には(THEN)、XPDグラフが構築される。おわり(STOP)。そうでな ければ(ELSE)、現在のtパスをプロセス実行の方向に対して、その0解を 通過したLCに出会うまで再びトレースせよ。XPDグラフ座標におけるそのL Cのメイン・ブランチを開始し(next_k,next_b),ここで、ne xt_k=(LCのk)+1であり、next_bは、次に利用可能なトラック (座標b)である。ステップ2に進む(GO TO step2)。終了(EN DIF)。 2つのXPDグラフの次元NBは、まさに、プログラムの複雑性の測度(co mplexity measures)の1つとして受け入れられたものである 。McCabeの理論である「複雑性の測度」は、IEEE Transact ions on Software Engineering,Vol.SE− 2,No.4,Dec.1976,pp.308−320において公刊されてい る。 「サイクロマティック(cyclomatic)な複雑性」は、McCabe によって、線形独立な経路の最大数として定義され、単一のエントリ及び出口に 対しては、フレームによって、V(G)=e−n+2が定義される。ここで、V (G)はサイクロマティックな複雑性であり、eはエッジの数であり、nはノー ドの数(エントリ・ノード+出口ノード+ブランチ・ノード)である。われわれ は、このフレームを、サイクロマティックな複雑性のMcCabeのフレームと 称する。 エッジは我々のセグメントであり、エッジの数は、e=2q+1であり、ここ で、qはLCの数であり、すなわち、プロセス・セグメントの我々の数である。 ブランチ・ノードは、我々のLCであり、ブランチ・ノードの数はqである。 ここで、qはLCの数である。すると、サイクロマティックな複雑性のMcCa beのフレームによると、単一のエントリと単一の出口ノードは、 e=(2q+1) n=1+1+q=(q+2) V(G)=(2q+1)−(q+2)+2=q+1 よって、qをLCの数として、V(G)=q+1である。 このように、McCabeによって定義されたサイクロマティックな複雑性の 数は、我々のLCの数に1を加えたものであり、メイン・ブランチの数である我 々のNBに等しい。 これまでのフレームは、米国特許第4853851号(1989年)に記載さ れている。線形独立の経路の数に等しいサイクロマティック数は、プログラムの 流れ図の最も幅の広い箇所でカウントされた経路の数である。サイクロマティッ ク数の計算に基づくこのアプローチは、McCabeによっては、まだ、説明さ れていない。 XPDアルゴリズム空間(MK)の第2の次元は、同じように、アルゴリズム の複雑性を記述するのに用いられ得る。MKは、プロセス・エントリからターミ ナルへの最も長い道を表し、したがって、最も長いtパスにおける基本プロセス の数を表す。次元を伴う矩形の空間[MK,NB]は、目標プロセスのアルゴリ ズムの複雑性をよく示しているように見える。我々は、この空間を、目標プロセ スのアルゴリズム空間と呼ぶ。たとえば、図1からの例のアルゴリズム空間は、 [14×5]である。 図5Aは、次にあげるXPDグラフの有用な特性を示す。 1.すべての要素は、2つの座標(k,b)によって一意的にアドレス指定す ることができる。 2.グラフは、2つだけの方向に構築される。ここでの実現方法の例では、下 向き及び右向きである。下降は、LCのハイ・ポテンシャル解によって右側にシ フトされることによってのみ、中断され得る。 3.出口ターミナル(STOP又はRETURN)でないプロセス・ターミナ ルは、プロセスをリワインド(元に戻す)ことができる。このリワインドは、後 ろ向き、すなわち、上方向及び左方向にだけ許される。この理由は、前方向への ジャンプは、メイン・ブランチの定義により、XPDフレームとXPDグラフと の構成の間は除去されるからである。 4.すべてのセグメントには、目標プロセスにおいてそのセグメントの論理的 な位置を一意的に識別するバイナリ・アドレスが割り当てられている。 5.XPDグラフは、プロセス要素の間のアクセス可能性の容易な判断を可能 にする。 定義G5:要素s2は要素s1からアクセス可能であるとは、s1からs2へ の経路が存在する場合である。すなわち、何らかの入力データの組み合わせにつ いて、s2がs1の実行の後にいくらか時間がたって実行され得る場合に、s2 は、s1からアクセス可能である。 2つのプロセス要素の間のアクセス可能性の存在は、1つの要素の正しさが別 のプロセス要素のの結果に効果を有することの必要条件であり、すなわち、アク セス可能性は、2つのプロセス要素の間の原因・結果の関係のための必要条件で ある。 最近では、プログラムの依存性(従属性、dependency)に関するい くつかの定義が、プログラムの内部での効果を調べるために提案されている。2 つの基本的なタイプのプログラム依存性は、「制御依存性」と「データ・フロー 依存性」とである。プログラム依存性は、ソフトウェアのテスト、デバッギング 、及びメンテナンスなどの重要な目的のために用いられる。最近まで、プログラ ム依存性のほとんどの提案された使用は、その使用の実現方法の困難さの観点か らみても、インフォーマルに正当化されているだけである。 A.PodgurskiとL.A.Clarkeによる「プログラム依存性の フォーマルなモデルとソフトウェア・テスト、デバッギング、及びメンテナンス へのその適用」IEEE Transactions of Software Engineering.16,9,Sep.,1990,pp.965−9 79では、著者たちは、あるステートメントが別のステートメントの実行行動( そして、したがって、結果)に潜在的に影響する必要条件である概念として、「 意味論的依存性(semantic dependence)」の用語を提供し ている。しかし、この業績は、制御及びデータ・フロー依存性の異なる一般化は プログラムの誤りを自動的に識別するのに十分な情報ではなく、その理由は、そ の一般化は、プログラムの誤りを識別するのにどんな意味でも十分でない「意味 論的依存性」の存在を識別するのに十分ではないからである、ということを証明 している。 本発明で提示される要素のアクセス可能性の自動的な判断のための方法は、目 標プロセスの任意の2つの要素の間の意味論的な依存性の存在のための必要条件 を評価するための実際的な方法としての意味論的な依存性に関して定義され得る 。 換言すれば、提示されている方法は、 1.s2の誤作動の原因であり得るステートメントs1と、 2.s1の修正によって影響されるステートメントs2と、 に対するポテンシャルを実際に評価する。 プロセス要素の間のアクセス可能性を判断できることによって、「確実な非終 端(終了)性(definite non−terminability)」を 有するデータ独立なエンドレス・ループの存在に関する問題もまた、解かれる。 我々は、次に、図9の例に関して、XPDグラフのバイナリ・アドレス算術を用 いることにより、いかに容易に、SiとSjとの間のアクセス可能性と、データ 独立なエンドレス・ループを作成するプロセスの部分との存在を定義できるかを 示す。 プログラムが終了(ターミネート)するかどうかの問題は解決不可能であるこ とが証明されていることが一般に受け入れられている。我々は、このプロセスの 終了可能性、すなわち、終了する能力の問題を、データ独立なエンドレス・ルー プと、データ従属(依存)のエンドレス・ループとの2つのカテゴリに分割する 。 データ独立なエンドレス・ループは、出口ターミナルへのアクセスを有しない プロセス要素から構成される。 データ従属のエンドレス・ループは、それに入ると、出口ターミナルへの制御 パスの不存在以外の理由で、制御が決して出口(STOP又はRETURN)に 到達しない構成を有している。この場合の理由は次のいずれかである。すなわち 、a)特定の制御パス上で、その制御パスを潜在的に変更するプログラム変数の 操作(manipulation)の不存在、又は、b)ロー・ポテンシャル状 態とハイ・ポテンシャル状態との間で状態を変更することから、LCの値を取っ てしまう方向へのこれらのプログラム変数の変更、のいずれかの理由による。 aとbとのいずれの場合でも、制御は、エンドレス・ループに陥り、同じシー ケンスの同じターミナルを、出口ターミナルに到達することができないままに、 通過する。 定義G6:*bnは、nに等しいb座標を有するターミナルを指す。この例と しては、図10では、*b3は、b=3におけるGO TOターミナルを指し、 *b5は、b=5における出口ターミナルを指す。 定義G7:MBnは、nに等しいb座標の上に構築されたメイン・ブランチを 指す。この例としては、図9のMB3は、座標b=3上に構築されたメイン・ブ ランチを指す。 データ従属のエンドレス・ループの例をあげる。L2とL3とによって調べら れている値を再定義できる/1と*1との間のパス上の要素がない場合には、タ ーミナル*bは、L2とL3とが最初にそのロー・ポテンシャル解によって解消 されると直ちに、データ従属のエンドレス・ループを生じる。この理由は、L2 とL3との状態は、目標プロセスの前方向の実行の間は決して変化しないからで ある。 データ独立なエンドレス・ループの例をあげる。データ独立なエンドレス・ル ープ構成は、図9に、メイン・ブランチMB2、MB3、MB4によって示され ている。L3が正には解かれない場合には、プロセスは、これらのブランチの中 にどのようなデータ操作ステートメントが符号化されている場合でも、無限ルー プの中に入る。 データ独立なエンドレス・ループ構成は、プロセスの非終了性(終了不可能性 、non−terminability)に対するポテンシャルを示しているが 、必ずしも誤りのある構成ではない。その理由は、入力データがLCを無限ルー プの状態におくものでは決してないことも有り得るからである。 図9のエントリ/qは、どのターミナルにも対応せず、L2とL3とが/1か ら*1への経路上でデータ従属ではない場合でも、プロセス制御を直接にL2の 前に戻すリワインド・ターミナル*b1を有するL2の負のサブフィールドにお けるL3の位置が必ずしも誤りではないという事実の例として示されているに過 ぎない。これは、L3がエントリ/qを通る制御を受け取ったとしても、制御を エントリ/1にリターンすることの結果としてL2が負に解かれエンドレス・ル ープを生成することには必ずしもならないからである。 データ独立なエンドレス・ループは、他方の側からは、プロセス構成における 確実な誤りである。 データ独立なエンドレス・ループの検出は、リワインド・ターミナルと出口タ ーミナルとの間のアクセス可能性を評価することによってなされる。同じプロセ スによれば、XPDグラフの任意の2つの要素(たとえば、図9のSiとSj) の間のアクセス可能性の評価が可能になる。 XPDグラフによって、その要素の間のアクセス可能性の、次の3つのポテン シャルによって判断されるものとしての説明が可能になる。すなわち、メイン・ ブランチ内部での自由落下(フリーフォール)ポテンシャルと、LCのシフト・ ポテンシャルと、ターミナルのリワインド・ポテンシャルと、の3つである。 自由落下ポテンシャルは、あるプロセス要素が別の要素の後でアクティブにな る際に、シーケンシャルな手順の性質によって決定される。 定義G8:LCのシフト・ポテンシャルとは、LCの正の解の結果として、b 座標を増加させるLCのポテンシャルである。 例としては、図5AのLCでは、L2、D1、D3は、1のシフト・ポテンシ ャルを有し、L1は、3のシフト・ポテンシャルを有する。 定義G9:ターミナルのリワインド・ポテンシャルとは、BAを減少させるタ ーミナルのポテンシャルである。 BAの値は次のように決定される。bbbがビット・シーケンスであれば、b b0>bbb、bbb1>bbb0、bbb1>bbb00である。すなわち、 比較するために、BAは、左側がジャスティファイされ、対応するビット位置が 、1>0>_(ただし、_は空の位置)である最初の不一致まで左から右に比較 される。ここで、左側のビット位置がより上位にある。図5における例としては 、10>1であるからBA(L2)>BA(L1)であり、11>10であるか らBA(W2)>BA(A3)であり、11>1010であるからBA(W2) >BA(A5)である。 定義G10:セグメント・アドレス(SA)とは、{BA,k}のカップル( 対)である。ただしここで、BAは、このセグメントのバイナリ・アドレスであ り、kは、このセグメントにおけるk座標である。 セグメント・アドレスは比較することができる。SA{BA,k}を比較する 際には、BAがより上位にある。すなわち、(11,7)>(10,7)であり 、(11,7)>(11,6)である。図9での例をあげると、/3のセグメン ト・アドレスは、{10010,rk3}である。 定義G11:要素のビジョン(視野、vision)を定義する。要素s2が 要素s1のビジョン内にあるとは、SA(s2)がSA(s1)のディセンデン ト(子孫)である場合に、s2がs1から見られ、s1がs2を見ることである 。 定義G12:SA(s2)がSA(s1)のディセンデント(子孫)であると は、s2のBAがs1のBAから右側で2進数を連結(concatenate )することによって構築される、又は、BA(s1)がBA(s2)に等しく、 かつ、k(s2)がk(s1)よりも大きいことである。 tパスの一部であるs1からs2への経路が存在するばあいには、s2はs1 のビジョン内にある。tパスは、通過ターミナルをもっていないことを思い出し てほしい。 例をあげると、図4では、A6は、A3のビジョンの中にある。これは、10 は、1011において左側がジャスティファイされているからである。A6はA 3から見られているし、A3はA6を見ている。 例をあげると、101は、左側がジャスティファイされた1011上にマップ され得る。、したがって、セグメント1011内の任意の要素である{A6,W 1,*b3}は、セグメント101の任意の要素は、制御101の任意の要素で ある{A4,X1,D1}のビジョンの範囲内にある。 例をあげると、X1は、A4のビジョンの範囲内にある。これは、これらのB Aが共に、101であり、X1のkがA4のkよりも大きいからである。 定義G13:リワインド・ターミナルのビジョンとは、リワインド・エントリ のビジョンである。出口ターミナルのビジョンは空である。 定義G14:s2がs1からアクセス可能であるとは、s2がs1の「アクセ ス・フィールド」内に存在することである。 定義G15:プロセス要素の「アクセス・フィールド」とは、そのプロセス要 素が連続的に所有するすべてのビジョンの組み合わせである。ここで、連続的と は、ビジョンがターミナル・ビジョンによって伝搬する意味である。 よって、プロセス要素のアクセス・フィールドとは、その要素のビジョンと、 それが見るターミナルのビジョンと、これらのターミナルから見られるターミナ ルのビジョンと、当の和である。 アクセス・フィールドの更に正確な定義は、以下で述べるが、定義G22で与 えるプロセス・ターミナルの「伝搬ビジョン・ポイント」(PVP)の定義を通 じて提供される。 図9は、XPDグラフの各ターミナルに対して構築される5つの属性を提示す る。あるターミナルの属性は、ターミナルのバイナリ・アドレス(BA)と、タ ーミナルのリワインド・バイナリ・アドレス(RBA)と、ターミナルのrkと 、伝搬ビジョン・ポイント(PVP)と、出口アクセス・インジケータ(EAI )と、である。 定義G16:リワインド・バイナリ・アドレス(RBA)とは、リワインド・ ターミナル・エントリのバイナリ・アドレスである。出口ターミナルのRBAは 、0に等しい。rkは、リワインド・ターミナル・エントリのk座標である。( 出口ターミナルのrkは、0に等しい。 定義G17:出口アクセス・インジケータ(EAI)とは、閉じたターミナル に対しては0に設定され、開いたターミナルに対しては1に設定されるインジケ ータである。 定義G18:開いたターミナルとは、出口ターミナル、又は、出口ターミナル の1つへのアクセスを有するリワインド・ターミナルである。 定義G19:閉じたターミナルとは、出口ターミナルのどれにもアクセスをも たないリワインド・ターミナルである。 定義G20:閉じた領域とは、閉じたターミナルによって定義される隣接する メイン・ブランチの組み合わせである。 プロセスの制御は、閉じた領域の内部にいったん入ると、脱出することはでき ない。すなわち、プロセスは、終了しない。図9での例をあげると、{*b2, *b3,*b4}は、閉じた領域を定義する。 定義G21:プロセス・ターミナルの伝搬ビジョン・ポイント(PVP)の位 置は、図10に記載されているものである。 図10は、ターミナルのビジョン伝搬の原理を示しており、2つ又はそれより も多くのプロセス・ターミナルの伝搬ビジョン・ポイントを設定している。この 図においては、確立されたビジョンが破線で示され、ターミナルからそのリワイ ンド・エントリまでのパス実線で示されている。 図10Aを参照すると、上述の定義から、ターミナルのビジョンは、そのリワ インド・エントリのビジョンである。ターミナル*nのリワインド・エントリ/ nが別のターミナル*iを見ることができ、*iのリワインド・エントリ/iが リワインド・エントリ/nを見ることができる場合には、*nのビジョンが*i のビジョンによって伝搬され*iのビジョンは両方のターミナル*i、*nの伝 搬ビジョン・ポイントになるという。 あるターミナルの伝搬ビジョン・ポイントは、特定のリワインド・エントリの セグメント・アドレスによって表される/ ターミナルのビジョンが他のターミナルのビジョンによって伝搬されない場合 には、そのターミナルの伝搬ビジョン・ポイントはそれ自身のビジョン、すなわ ち、そのエントリのビジョンである。 ターミナル・ビジョンの伝搬の同じメカニズムが複数のターミナルの伝搬され たビジョンと別のターミナルのビジョンとの間でも有効である。 図10Aでは、ターミナル*kのリワインド・エントリである/kは、PVP /iを有するターミナル*nを見ることができる。したがって、*kのPVPは 、/iに伝搬される。たとえば、図9では、*b1のPVPは/1であり、*b 2、*b3、*b4のPVPは/2であり、*b5のPVPは0すなわち空であ り、*b6のPVPは/2であり、*b7のPVPは/7である。 定義G22:プロセス要素のアクセス・フィールドとは、それ自身のビジョン とこの要素の内部に位置するすべてのターミナルの伝搬されたビジョンとの組み 合わせである。 図9を参照すると、たとえば、要素Siのアクセス・フィールドは、エントリ /1のビジョンであるが、その理由は、それが、Siのビジョンと、Siのビジ ョ ンの中にある*b1のPVPと、*b2のPVPと、*b3のPVPと、*b4 のPVPとの組み合わせだからである。 *b1のPVPが、偶然、Siのビジョンと、(*b2、*b3、*b4)の PVPである/2のビジョンとを有することがある。 たとえば、MB2に属しk座標を有する(すなわち、rk2)任意の要素Se のアクセス・フィールドは、その要素のビジョンであるが、これは、それが、S eのビジョンの内部にある*b2、*b3、*b4のPVPである/2のビジョ ンを有するからである。 たとえば、要素L5のアクセス・フィールドは、/2のビジョンであるが、こ の理由は、それが、L5のビジョンの中にある*b3及び*b4のPVPであり 、L5のビジョンは/2のビジョンによって所有され、カウントされないからで ある。 あるリワインド・エントリのビジョンの中のすべてのターミナルがそのエント リをPVPとして求めると、結果は、閉じた領域(データ独立なエンドレス・ル ープ)になる。 たとえば、*b2、*b3、*b4が/2をそのPVPであることを求めると 、そのビジョンの中には何もターミナルがないことになる。これは、閉じた領域 、すなわち、データ独立なエンドレス・ループを定義する。 閉じたターミナル及び閉じた領域、すなわち、データ独立なエンドレス・ルー プを表す構成を見つけるためには、我々は、XPDグラフの各ターミナルに対し て出口アクセス・インジケータ(EAI)を構築する。 出口アクセス・インジケータ(EAI)の構築について述べる。図9を参照す ると、各ターミナルのTBA、RBA、rkを、XPDグラフの構成が終了した 後で知ることができる。 当初は、PVPの値は、ターミナルのリワインド・エントリ、すなわち、その ターミナルのrk及びRBAから構築される。 すべてのリワインド・ターミナルのEAIには、当初は、0(閉じている)が 満たされており、すべての出口ターミナルのEAIには1(開いている)が満た されている。 b=1からb=NBへと移動しながら、ターミナルのPVPをBAとすべての 他のターミナルのPVPとに対して、現在調べているターミナルのPVPのPV Pを伝搬し(増加させ)、それがもしまだ閉じている場合には、可能であれば、 そのターミナルを開く。我々は、ターミナル*biのPVPをPVP*biと称 することにし、また、*biのEAIをEAI*biと称することにする。図9 の例を参照のこと。 I)ターミナルのPVPは、当初は、そのリワインド・エントリのSAに設定 される。すなわち、 PVP*b1のBAは、10に設定される。 PVP*b2のBAは、1001に設定される。 PVP*b3のBAは、10010に設定される。 PVP*b4のBAは、10011に設定される。 PVP*b5のBAは、0に設定されるが、これは、*b5が出口ターミナル だからである。 PVP*b6のBAは、10011に設定される。 PVP*b7のBAは、10に設定される。 II)PVPの伝搬及びEAIの設定 (A)*b1からnがメイン・ブランチの数であるNBである*bnへのオー ダーでターミナルを通過し、各ターミナルを、XPDグラフの他のすべてのター ミナルとの関係で、a)先に説明した規則(G21)によってターミナルPVP を伝搬させ、b)そのEAIを、次に述べる規則によって1に設定することによ ってそのターミナルを開くことを目的にして、調べる。 定義G23:閉じたターミナルのPVPが任意の開いたターミナルを見ること ができる場合には、調べられたターミナルは、そのEAIを1に設定することに よって開いているとアナウンスされる。 1)PVP*b1{10,rk1}は、*b2、*b3、*b4、*b5を見 るが、これらのターミナルPVPのどれもがPVP*b1を見ることはできない 。すなわち、 PVP*b1は変更されない。 PVP*b1{10,rk1}は、開いた*b(1010)を見る。 *b1を開くには、EAI*b1を1に設定する。 2)PVP*b2{1001,rk2}は、100110、100111であ る*b3、*b4を見るが、10010、10011であるこれらのターミナル PVPのどれもがPVP*b2を見ることはできない。すなわち、 PVP*b2は変更されない。 PVP*b2{1001,rk2}は、その時点では*b1、*b5であるす なわち1000、1010であるどの開いたも見ない。 EAI*b2は0に設定される。 3)PVP*b3{10010,rk3}は、*b2(10010)を見るし 、PVP*b2{1001,rk2}は、{10010,rk3}であるPVP *b3を見る。 PVP*b3を、VP*b2{1001,rk2}に設定する。 伝搬されたPVP*b3は、まだ、どの開いたターミナルも見ない。 EAI*b3は、0に設定される。 4)PVP*b4{10011,rk4}は、*b3(100110)を見る し、PVP*b3{1001,rk3}は、{10011,rk4}であるPV P*b4を見ることができる。 PVP*b4を、{1001,rk2}に設定する。 伝搬されたPVP*b4は、まだ、どの開いたターミナルも見ない。 EAI*b4は、0に設定される。 5)PVP*b5は変更されないが、これは、出口ターミナルだからである。 6)PVP*b6{10011,rk6}は、*b3と*b4とを見るし、そ の現在のPVPである{1001,rk2}は、PVP*b6を見る。 PVP*b6を、{1001,rk2}に設定する。 伝搬されたPVP*b6は、まだ、どの開いたターミナルも見ない。 EAI*b6は、0に設定される。 7)PVP*b7{10,rk7}は、*b1から*b6までのターミナルを 見ることができるが、それらはどれもPVP*b7を見ることはできない。 PVP*b7は変更されない。 PVP*b7{10,rk7}は、開いたターミナル(1000及び1010 )を見ることができる。 *b7を開くには、EAI*b7を1に設定する。 図10Bを参照すると、*nのビジョンによって伝搬されるターミナル*1は 、*nのPVPが最終的に設定される前に調べられる。この理由は、*nのPV Pが、次に、他方のターミナルのビジョンによって更新されるからである。 したがって、PVPとEAIとのすべての有り得る更新が行われることを確実 にするため唯一の方法は、*b1から*bnの順ですべてのターミナルを調べる ステップ(A)を反復することである。最後のパスの中で更新が全くなされてい ない場合には、PVP及びEAIの更新のプロセスは終了する。 最悪の場合には、ターミナルを通過する要求されるパス、すなわち、ステップ (A)の実行の数は、メイン・ブランチNBの数と等しい。この理由は、それぞ れのパスは、最終的に、少なくとも1つのターミナルのPVPとEAIとを設定 する。ここでの例では、すべての更新は、1つのパスにおいて行われ、*b1か ら*b7への第2のパスは、PVP及びEAIを変更しない。 結果として、我々は、ターミナル*b2、*b3、*b4、*b6のEAIは 0であり、これらのターミナルは閉じていることが分かる。 ターミナル*b2、*b3、*b4は、閉じた領域(データ独立なエンドレス ・ループ)を構成する。ターミナル*b6もまた、閉じていて、そのリワインド ・エントリは、上述の閉じた領域[*b2−*b4]の中にある。 破線(a)は、エントリ/1のビジョン・フィールド{10,rk1}を表す 。このエントリは、*b1のPVPである。これは次のことを意味する。すなわ ち、メイン・ブランチb=1の任意の要素は、{10,rk1}のビジョンの内 部の任意の要素にアクセスできるということである。 (Si)のアクセス・フィールドは、破線(a)によって表される。 破線(b)は、エントリ/2のビジョン・フィールド{1001,rk2}を 表す。このエントリは、*b2、*b3、*b4、*b6のPVPである。これ は、次のことを意味する。すなわち、メイン・ブランチMB2、MB3、MB4 の任意の要素は、{1001,rk2}のビジョンの内部の任意の要素にアクセ スできるということである。 ここでの定義によれば、あるプロセス要素のアクセス・フィールドは、それが 連続的に所有するすべてのビジョンの組み合わせである。 したがって、Sjのアクセス・フィールドは、破線(c)と破線(d)とによ って表されるフィールドの組み合わせであり、破線(c)は、Sjのビジョンで あり、破線(d)はSjから見られる*b6のビジョンである。 図9では、(Si)は(Sj)にアクセス可能であり、(Sj)は(Si)に アクセス可能ではないことがわかる。 プロセス要素s1からプロセス要素s2へのアクセス可能性を確立するには、 2つのステップがある。 1.SA(s2)がSA(s1)のデセンダント(子孫)であるならば(これ は、バイナリ・アドレスを比較することによって確立され、バイナリ・アドレス が等しい場合にはk座標を比較することによる)、s2は、s1からアクセス可 能である。 2.ステップ1が失敗した場合には、SA(s2)が任意のターミナルのPV Pの子孫であるならば、s2はs1からアクセス可能である。 図9の例では、すべてのターミナルについて構築されている属性(BA、RB A、PVP)を調べることにより、以下のことを判断できる。すなわち、 a)101は100から見えないので、SiはSjを見ることはできない。し かし、SiはSjにアクセス可能である。この理由は、Siから見えるターミナ ルの1つである*b1が、101が10の子孫であることにより、そのPVP{ 10,rk1}を介してSjを見ることができるからである。 b)100は101の子孫ではないので、SjはSiを見ることはできない。 Sjから見えるターミナルは、BAが1010及び1011を有するものである 。ターミナル1010は、出口ターミナルであるRBA又はPVPを有していな い。ターミナル1011は、100をやはり見ることのできないPVP{100 1,rk1}を有する。したがって、SjはSiにアクセス可能ではない。 3)誤り又はシステムへの要求の変更に起因する修正箇所として、目標プロセ スにおける「正しさ」を評価し、「不確実性」の箇所を特定するXPDマシンの 原理を定義する。 図11は、任意のコンピュータ・ソフトウェア・プロセスに適用される原理を 表している。ここでは、我々は、その原点から、3つのクラスのプロセス・エラ ーを見ることができる。この3つのクラスは、すべての可能なプロセス誤りを含 む。 第1のクラス(a)は、プロセス設計の段階で入り込む誤りである。そのオリ ジンは、プロセス仕様の誤解にあり、又は、予測された入力から予測された出力 を生じなければならないステップの設計の間に入り込んだ誤りにある。これらは 、プロセス・アルゴリズムの中にある誤りである。 第2のクラス(c)は、設計の実現化の際に入り込んだ誤りである。これらの 誤りは、設計されたアルゴリズムをコンパイラのプログラム言語によって理解可 能な形式にコード化する間に入り込む誤りである。 これらは、論理的なコード化の誤りである。結果的にはコンパイラによって位 置を特定される構文(シンタックス)の誤りは、ここではカウントされていない 。というのは、XPDマシンは、コンパイラによってチェックされた後で、コー ドに存在する論理的な誤りのアドレス指定をするからである。 目標プロセスの実行の間には、また、そのテストと製造との間には、無効であ るが予測されておらずしたがって考慮されておらずプロセスのアルゴリズムに捕 捉されていなかった入力の組み合わせが存在し得る。このクラスの誤りは、入力 にあるのであり、目標プロセスの外部のものであるということができる。これら が入力誤り(i)である。 図11の目的は、すべてのこれらの誤りが実現された(コード化された)目標 プロセスの中に存在し、ある条件で、これらの誤りは、プロセスの予測される出 力における誤動作(f)として明白になることを示すことである。 以下の定義は、この点で重要である。 定義P1:(s)は、基本プロセス(プログラム・ステートメント)を示すも のとする。 定義P2:要素のプロセス・アドレス(PA)である{k,b}とは、縮小流 れ図の内部のこの要素の位置であり、これは、このプロセスのXPDグラフの内 部でも同じである。図5A及び図4を参照すると、PAは、2つの座標k及びb によって定義される。このプロセスの内部の各ステートメントは、{k,b}に よって測定される(計量を与えられる)それ自身のPAを有する。 定義P3:局所(ローカル)時間{p}は、プロセス実行の内部のステートメ ントの現在の発生ないし存在の整数値である。すなわち、p=1,2,・・・で ある。 XPDマシンは、物理的な時間と共には動かない。本発明では、時間の定義は 、(s)の機能が、制御がその(s)を通過する場合に限りプロセスに影響し、 一時的にアクティブになることも考慮している。したがって、我々は、(s)の 実行の各イベントにそれ自身の時間パラメータを与える。局所時間は、プロセス の呼び出し(invocation)からカウントを開始する。 定義P4:プロセス・イベント{k,b,p}は、(s)実行のイベントであ る。 これは、XPDマシンでは、3つのパラメータ{k,b,p}によって与えら れる。ここで、{k,b}は場所(プロセス・アドレス)を識別し、{p}は局 所時間を識別する。 定義P5:プロセス時間は、プロセス・イベント{k,b,p}によって表さ れる。 これによって、解析は、特定のプロセス要素の実行に必要であるハードウェア やオペレーティング・システムに従属する物理的な時間から独立になる。 プロセスの全体が「場所」と「時間」との組み合わせ、すなわち、プロセス・ アドレス{k,b}と局所時間{p}とによって計量され得るという観点から見 れば、各基本要素(s)は、それ自身の時間(p)座標の中に住んでいるといえ る。 たとえば、図5A及び図4におけるステートメントA5が3回目に実行された プロセス時間を参照したいとすれば、{12,2,3}のイベントとして参照す ることになる。 プロセスの出力イベントは、第1に、プロセスが構築された理由であり、通常 は、これらの出力イベントが正しくない場合にのみ、プロセス自体が故障(誤動 作)であるという。 コンピュータ・プロセスは、複数の出力をもち得るのであり、たとえば、シス テムのターミナルに1つの出力があり、異なるファイルに別の出力が有り得る。 XPD解析機関は、後に詳細に述べるように、ISOPSマップを用いて自動的 に付勢される。 プロセス時間は、特定の出力において、それに向けられた出力イベントのシー ケンスによってのみ提示される。たとえば、{ki,bi,pi}と、{kj, bj,pj,}と、{kl,bl,pl,}と、である。 出力からプロセスを眺めると、これらのプロセス・イベントは出力結果である ri、rj、rlによって表されていることが分かる。ここで、rjのプロセス 時間は、riの後であり、rlの前である。 図12は、プロセス時間(t)において出力イベント(r)を生じる際の可能 な3つタイプの故障(誤動作)を示している。 公理1:任意の出力に対して、3つのそして常に3つのタイプのプロセス誤動 作がある。すなわち、 (f1)出力イベントが生じていない特定のプロセス時間で予測される。 (f2)出力イベントが生じる特定のプロセス時間で予測されない。 (f3)出力イベントが正しくない値をもって生じる特定のプロセス時間で予測 される。 XPDマシンのインターフェースは、これらの3つのタイプのプロセス誤動作 をアドレス指定するコマンドを含み、したがって、XPDマシンは、任意のプロ セス誤動作をアドレス指定できる。 図13は、抽象的なレベルで、どのようにXPDマシンが時間の経過と共に、 プロセスに関する知識を集積するかに関する原理を図解している。知識のこれら の集積は、図7、図8、図14、図15、図16、図17を参照して詳細に説明 される。 図13を参照すると、次の定義が必要である。 定義P6:「正しいプロセス・アドレス」(CPA)は、次のように定義され る。プロセス・アドレスが正しいとは、正しいイベントとして実行された、すな わち、正しい場所と時間とにおいて正しい結果を生じるプロセス要素を含む場合 をいう。 定義P7:「不確実なプロセス・アドレス」(UPA)は、次のように定義さ れる。プロセス・アドレスが不確実であるとは、正しいイベントにおいてまだ実 行されていないプロセス要素を含む場合をいう。 プロセス・アドレスを正しいとして定義する場合には、その内容(コンテンツ )が特定のイベントにおいて正しいと定義する。たとえば、ステートメントA= B+Cは、そのプロセスの特定の場所と時間とにおいてのみ、正しい。 プロセス・アドレスの間の局所時間の分布は、プロセス実行の間に動的になさ れ、絶対的に次の2つのファクタによって決定されることを理解すべきである。 すなわち、 (1)ハード・コード化されたプロセス制御構造及び要素の内容と、 (2)変化する入力値の組み合わせと、である。 したがって、不変のプロセス構造とプロセス要素の内容とを条件として、局所 時間をプロセスにおいて定義するのは、入力値である。我々は、正しいプロセス 要素をすべての時間に亘って正しいものと強制はしない。 これが、「正しさの相対性」が役割を演じる場所である。換言すれば、(s) は、場所及び時間(プロセス時間)と、予測される入力と、予測される出力と、 に対して、ただ相対的に、正しく有り得るのである。この相対性こそが、プログ ラムの正しさを証明する方法が不存在である理由である。我々の考えでは、誤り 位置を特定するプロセスの自動化問題への唯一の解答は、位置の不確実性を一定 に最小化することにある。 定義P8:イベントの正しさを定義する。出力イベントは、正しい、すなわち 、予測された結果を生じているときに正しいと定義される。 我々は、その正しい出力イベントを生じさせるのに寄与するイベントのつなが り(チェーン)に参加する場合には、出力イベントの他に、プロセス・イベント {k,b,p}が正しいと定義する。すなわち、出力イベントとは他のイベント は、正しい出力イベントによって正しいとされる。 イベントは、複数の出力イベントによって正しいとされる場合もある。たとえ ば、e1、e2、e3、e4、e5、e6、e7がプロセス・イベントの何かの シーケンスを表すとする。ここで、e7は正しい出力イベントであり、e1とe 3とは、出力イベントであり、e1、e2、e3、e4、e6はe7の値を生じ るのに関係しているとする。この場合には、e5を除いて、e1からe7のイベ ントは、正しいという。 イベントe5は、その計算の連鎖にe5が参加している他の何らかの正しい出 力イベントによって、正しいと定義され得る。しかし、それまでは、正しさは不 確実である。 プロセス要素に関するこの定義は、以下のことからの連想によって簡単に理解 し得る。コンピュータ・ボードがそれに付随するコード化されたプロセスを有し ており、そのボード上の各集積回路には、プログラム・ステートメントのような コード化された基本プロセスが付随している。この集積回路に欠陥がなく正しい スロットに配置されており、この集積回路が以前にテストされた入力信号の組み 合わせに関して正しい結果を生じるのに参加していたと仮定すると、この集積回 路は、将来にも、同じ入力の組み合わせに基づいて同じ正しい結果を生じること に参加するであろう。この集積回路は、したがって、正しい入力の組み合わせに 基づいて、コンピュータ・ボード上の正しい場所で、すなわち、正しい場所と時 間とにおいて、正しい結果を生じさせるポテンシャル(潜在性)のために、正し いと定義される。 公理2:プロセス機能の正しさは、その最適な実現方法(implement ation)とは独立である。 公理3:正しいと定義されたプロセスの最適化は、XPDマシンによって定義 されるその正しさを破らない。 この簡単な証明は、均等な最適化は、機能を結果的に生じさせるプロセスを変 更するとは考えられないという事実にある。 定義P9:アルゴリズム空間とは、プロセス・アドレス{ki,bi}との組 み合わせから成る空間である。 図5と図4とを参照すると、プロセス構成が不変であるという条件では、アル ゴリズム空間は一定であり、目標プロセスのXPDグラフの2つの次元であるM K及びNBによって、制限されることに留意することが重要である。 我々のサンプル・プロセスのXPDグラフと縮小流れ図を表す図5A及び図4 においては、次元(MK,NB)は、(14,5)である。 定義P10:正しいアルゴリズム空間とは、現時点でCPAとして定義されて いるPAの組み合わせから成る空間である。 定義P11:不確実なアルゴリズム空間とは、現時点でUPAとして定義され ているPAの組み合わせから成る空間である。 ここで、現時点で定義されている、というのは、XPDマシンが、イベント及 びPAの正しさをアナウンスもデナウンスのする両方の能力を有しているからで ある。あらかじめ構築される知識の部分的な緩やかさ(partial loo sing)は、誤動作が既に正しいとして受け入れられたプロセス出力において 認識される際には、不可避である。 定義P12:イベント(e)のイベント定義空間は、先祖(アンセスタ)イベ ントである(e)のPAから成る。 定義P13:先祖(アンセスタ)イベントと、子孫(デセンダント)を定義す る。イベントe1がイベントe2の先祖である、又はe2がe1の子孫であると は、e1がe2を生じるのに参加しており、それが、e2の値を生じるのに参加 した(値先祖イベント)か、又は、e2に至る過程で条件的な制御イベントに対 してパラメータを生じるのに参加した(制御先祖イベント)か、のいずれかによ る場合である。 図14を参照すると、e(a)は、そのブランチにおいてe(a)の下に示さ れているイベントの子孫である。e(d)は、e(i)、e(j)、e(k)、 e(l)、e(m)と、e(j)の先祖であるイベントとの子孫である。e(b )は、e(f)及びe(g)の直接の子孫である。e(f)及びe(g)は、e (b)の直接の先祖である。 図13を参照すると、この図の目的は、抽象的に、プロセスの不確実性が時間 経過と共にいかにして最小化されるかと、誤りの位置が時間経過と共にいかに局 所化できるかを単に示すものである。この図は、XPDマシンの全体的な理解を 助ける。XPDマシンに関する更に詳細な説明を、以下で行う。 この図には、4つのオブジェクトが表されている。左から右に、1)入力空間 であり、これは、入力パラメータのすべての可能な組み合わせである。すなわち 、プロセスが4つの入力パラメータを用いているとすれば、そのプロセスに対す る入力空間は4次元空間である。2)不確実なアルゴリズム空間。3)正しいア ルゴリズム空間。4)予測される出力空間であり、これは、検査されている出力 での予測される出力結果の組み合わせである。 t0、t1、t2、t3は、異なるプロセス時間を表し、ここでt0は、プロ セスの開始時点にある。t1、t2、t3において出力結果がまだ何も生じてい なければ、プロセス出力は連続的に集積される。 第1の誤動作がプロセス時間t3において認識されたと仮定する。この図は、 XPDマシンによる不確実性最小化方法が適用されれば、このプロセス時間t3 における誤動作の原因である誤りの位置に付随する不確実性は、プロセス時間t 2において生じた誤動作の場合よりも小さいことを示している。 目標プロセスの実行では、入力空間はじっらいの入力によって満たされ、出力 空間は実際の出力によって満たされている。 出力結果を集積することによって、以下で更に説明する方法によって構築され たXPDマシンは、正しいアルゴリズム空間を拡張し、不確実なアルゴリズム空 間を縮小させる。この2つの和が、目標プロセスがコード化される際に定義され 目標プロセスが不変である間は同じままであるに止まるアルゴリズム空間である からである。 以下のことが、XPDマシンによって解析されている目標プロセスの前方向へ の実行の間は、有効であることが宣言できる。 a)不確実なアルゴリズム空間は、正しいアルゴリズム空間の増加と共に、一 定に減少する。 b)任意のプロセス・イベントに対するイベント定義空間は、限定されている 。すなわち、この限定は、プロセスのアルゴリズム空間の全体である。したがっ て、イベント定義空間の連続的にますます少ない部分は、目標プロセスが前方向 に実行されて行く間に、不確実空間内に残ることになる。 図13を参照すると、d(e2)がプロセス時間t2における予測されない出 力結果(e2)のイベント定義空間であり、d(e3)がプロセス時間t3にお ける予測されない出力結果(e3)のイベント定義空間である場合には、プロセ ス時間t2及びt3における誤り位置の不確実性の(不確実である)領域は、斜 線によって陰の付けられたd(e2)及びd(e3)の部分によって表される。 誤り位置不確実性の領域は、プロセス時間t3でのほうが、プロセス時間t2 における対応する領域よりも小さい。 イベント定義空間は目標プロセスの前向きの実行に伴い潜在的に成長し、XP Dマシンは、誤り位置不確実性の一定の最小化を可能にする。 XPDマシンによる解析の結果は、正しいプロセス・アドレスに関する我々の 定義、すなわち、時間に関係し、出力結果の予測に関係する定義に関係する。 誤り位置の位置を特定する又は要求される修正箇所を特定するXPDマシンの 原理を説明する。 出力結果の誤動作の原因となる誤り、又は、システムへの新たな要求に起因す る修正箇所は、不確実なアルゴリズム空間の領域内に存在する出力結果イベント 定義空間の一部において位置が特定される。 ここでは、誤り位置が複数のUPAに限定されるという場合には、許容される 修正だけが、上述のUPAの中に存在する。そうでなければ、新たなイベント定 義空間が、アルゴリズム空間を拡張することによってすなわち新たなPAを作成 することによって、構築されなければならない。したがって、ここでのプロセス 不確実性の定義は、目標プロセスの前方向の構成、すなわち、自動化された前方 向へのプログラム開発に基礎を与える。すなわち、XPDマシンを用いれば、既 存のプロセスの上での構築の領域を、プロセス・メンテナンス及び前方向へのプ ログラム開発の間に正しく動作しているものをやり直したり破壊したりすること なく、自動的に局所化することが可能になる。 たとえば、出力イベントw(k,b,p)を得るのに、12のプロセス・アド レスにおいて生じた50のイベントが必要であったと仮定する。これらの中の4 5のイベントは、正しいことが分かっている10のプロセス・アドレスで生じた とする。すると、w(k,b,p)の生成に関係して、2つの不確実なプロセス ・ アドレスにおいて生じている5のイベントを有していることになる。 w(k,b,p)が正しい(予測された)のならば、これらの5つのイベント はXPDマシンによって正しい(承認済み)として設定され、2つのステートメ ントは、正しい基本プロセスの状態として更新され、それらのプロセス・アドレ スは、CPAの状態に更新される。 w(k,b,p)が正しくない(予測されていない)結果である場合には、誤 り位置の不確実性の領域はこれらの2つのPAとなる。すなわち、予測された結 果が、これらの2つのステートメントを修正か、又はw(k,b,p)に対する 新たな定義空間の構築かのどちらかによって達成される。 「知識伝搬」ないし「知識帰納」という目標プロセスは、それを実行すること によって結果的に適正アルゴリズム空間(Correct Algorithm Space)が拡張す るプロセスである。 XPDオブジェクト集合の、A、L、D、E、X、*、+、C、!、/、R、 =、S、及びWという夫々の要素の間の関係は、あるW要素の実行という事象が 「承認される」ことによって、一連の複数の二次的プロセスから成る二次的プロ セス・チェーンを起動させることができるような関係にしてある。それら複数の 二次的プロセスによって、その「承認された」W事象の発生に関与したXPDグ ラフ要素の実行という事象が「承認」される。 定義K1;事象の「承認」 これは、XPDエンジンがある事象の「正しさ」を検証するプロセスであり、 ここでいう事象の正しさとは、P8によって定義されるものである。 定義K2:「制御事象」 これは、XPDグラフ及び縮小フローチャートに従ってプロセスの方向をフォ ールダウンから変更するための事象であり、その変更を絶対的に行う事象(「無 条件制御事象」)と、変更できる可能性を与える事象(「条件付制御事象」)と がある。 定義K3:「無条件制御事象」 これは、リワインド・ターミナルないしイグジット・ターミナル(*、+、C 、R、=)の実行という事象である。 定義K4:「条件付制御事象」 これは、L要素の実行という事象、または、D要素のループ脱出条件の評価の 実行という事象である。 条件付制御事象の結果がポジティブであれば、XPDグラフ及び縮小フローチ ャートに従って、右方への制御シフトが行われことになる。条件制御事象の結果 がネガティブであれば、XPDグラフ及び縮小フローチャートに従って、フォー ルダウンへの制御が行えるようになる。 定義K5:「データ操作事象」 これは、XPDオプジェクト集合の要素のうちの、A要素またはE要素の実行 という事象、または、D要素の計算部分の実行という事象である。 定義K6:「初期データ操作事象」 これは、次のいずれかの事象である。データ初期化におけるE事象ないしA事 象、または、ループ・インデクス初期化におけるD事象。 定義K7:「二次的データ操作事象」 これは、初期データ操作事象以外のデータ操作事象である。 XPDマシンは、ACB(解析計算ベース:Analyzed Calculation Base)の 構築を通して、いかなる事象が「正しい」プロセス実行を構成するかという主題 についての知識を蓄積できるようにするものである。 ACBの基礎を成す基本原理は、「正しい」実行事象についての知識を保存せ ねばならないということである。 「正しさ」とは、入力事象が「正しい」ものである場合に、位置、タイム、及 び値に関して「正しい」事象を発生させることのできる潜在的能力のことを意味 している。従って、解析計算ベースは、「正しい」実行をもたらす潜在的能力を 保存できるようにするものである。 定義K8;基本的プロセスについての基本的「知識」 これは、基本的プロセスの実行という事象のうちの1つを我々が「承認」した ときに獲得される知識である。 従って、基本プロセスについての「知識」を蓄積することによって、基本的プ ロセスの様々な実行事象における「正しさ」またはその不確実性についての情報 が蓄積される。 従って、基本的プロセスについての基本的「知識」は、次の構成要素を含んで いる。 a.内容の正しさについての知識。 b.ある実行事象が「正しい」事象を構成した場合、または構成しなかった 場合の、プロセス・タイム(プロセス位置及びローカル・タイム)についての知 識。 定義K9:「基本的知識の伝搬」即ち「基本的知識の帰納」 我々が、a)内容と、 b)承認事象のプロセス・タイムと、 を知っているという事実によって、我々は、この事象の「基本的知識」を様々な プロセス・アドレスへ伝搬させることができ、それには「知識伝搬のターミナル 事象」に到達するまで、「アンセスタ」事象の位置決定及び解析が自動的に逆方 向に進められて行くようにすればよい。 定義K10:「知識伝搬のターミナル」事象(KPターミナル) これは、次の2種類の事象のうちのいずれかである。 1)その事象のアンセスタ事象が目標プロセスの中に存在していない事象、 即ち、初期データ操作事象。 2)既に承認されている承認済事象。 既に承認されている承認済事象は、知識伝搬プロセスを安定化して、目標プロ セスの順方向実行の際にアンセスタ事象の蓄積によって知識伝搬プロセスが次第 に複雑化して行くのを防止する。「知識伝搬」プロセスが、ある承認済事象に到 達したならば、その時点で即座に、その承認済事象のアンセスタ事象の全てが既 に承認されているということを確認することができる。 目標プロセスの中の「不確実性」を評価することについての以下の説明では、 そこに説明するのは「知識帰納」プロセスの逆プロセスである「知識推論」プロ セスであり、そこでは「知識伝搬」ターミナルと呼ばれたものがそのまま「不確 実性」ターミナルになる。 図14を参照されたい;図示例には、2つのW事象 e(a) と e(n) とが存在し ており、図にはそれらW事象が、それらW事象の幾つかのアンセスタ事象と共に 示されている。W事象が承認されるのは、この図14に→で示したプロセス実行 方向においてである。それら2つのW事象の各々に対応した事象定義空間の一部 分だけを図示してある。 ここでは、初期データ操作事象である「KPターミナル」事象を*eで表し、 承認済事象である「KPターミナル」を#*eで表している。 図示例では、W事象 e(a) の値は3つのパラメータから算出されており、それ ら3つのパラメータの値は、夫々事象 e(b)、e(c)、及びe(d) によって発生され ている。 更に事象 e(b) の債は、2つのパラメータから算出されており、それら2つの パラメータの値は、事象 e(f) と e(g) とによって発生されている。 事象 e(f) にはアンセスタ事象が存在せず、なぜならば、この事象 e(f) は初 期データ操作事象であり、即ち、KPターミナルだからである。 事象 e(g) は既に承認されている承認済事象であり、従ってこれもKPターミ ナルである。 我々は、KPターミナルのアンセスタ事象の位置特定を行わない。なぜならば、 KPターミナルのアンセスタ事象は、事象 e(f) の場合のように存在していない か、或いは事象 e(g) の場合のように既に承認されているかの、いずれかだから である。「帰納終了」原理はこれに基づいている。 プロセス実行の向は、W事象 e(a) からW事象 e(n) への方向であるため、事象 e(i) は、後に実行されるプロセスであるW事象 e(n) から基本的知識を伝搬す るプロセスにおいては、そのKPターミナルになる。なぜならば、事象 e(i) 及 びそのアンセスタ事象は、事象 e(a) からの知識伝搬の実行中に既に承認されて いるからである。 知識伝搬におけるルール: ある1つの事象を承認するプロセスは、次の2つの場合を除いて、その事象の直 前のアンセスタ事象を承認するという二次的プロセスを発生する。 a)その事象の直前のアンセスタ事象が既に承認されている。 b)その事象の直前のアンセスタ事象が存在していない(その事象が初期デ ータ操作事象である場合)。 従って、基本的知識の伝搬、即ち「知識帰納」は、チェーン・リアクションと なり、このチェーン・リアクションの拡大が、知識伝搬ターミナルによって制御 される。 図17の具体例を参照されたい:プロセス・タイム(k0,b0,p0)における事象 (e0)は、(y) の値を計算するための(s0)の実行において最初に承認された承 認済事象であり、なぜならばこのステートメント(s0)のPAは、そのステータ スがUPAに成っているからである。そのためこの(s0)のPAは、CPAへ格 上げされる。 直前のアンセスタ事象が幾つか存在しており、それらアンセスタ事象は、(y) の値の計算に関係したパラメータ x1、x2、x3 の夫々を計算する事象である。こ こでは、(k0,b0,t0)の事象の直前に x1 の値と x2 の値とがプロセス・タイム (k1,b1,p1)と(k2,b2,p2)とに発生されたものとする。またここでは、それら 事象は既に承認されているものとし、従って我々はそれら事象をKPターミナル として取扱い、それら事象のアンセスタ事象については調べないものとする。 またここでは(k0,b0,t0)の直前に x3 を計算するという事象が(k3,b3,p3) において発生しており、この事象が未承認であるものとする。CPAというステ ータスは、単にこのPA実行事象以外の何らかの事象が、既に承認されていると いうことを意味しているに過ぎない。この後我々は、この事象の直前の複数のア ンセスタ事象を調べ、それらアンセスタ事象は、プロセス・タイム(k3,b3,p3) の直前に実行された x3 の複数のパラメータの夫々を計算している事象であり、 以下同様に更にそのアンセスタ事象を調べて行くようにする。 あるW事象が承認されたことによって起動されるこの知識伝搬のプロセスは、 目標プロセスの実行方向とは逆方向に実行されて行く。 定義K11:事象の「直接的(直前)オーナー」: e2 によって el が承認された場合に、 e2 が el を所有する(e2 が el の オーナーである)という。 図14において、 e(i) は e(d) に所有されているのであり、 e(o) に所有さ れてはいない。 定義K12:事象の「Wオーナー」: 承認済事象(e) には、その各々に対応したWオーナーが存在しており、Wオー ナーとは、その事象(e) からW事象系列を下って行った末端に存在する事象であ り、その事象(e) を承認した基本的知識伝搬のチェーンの発生源である。 いずれの事象も、その事象に対応したWオーナー事象が2つ以上存在すること はあり得ず、その事象に対応した直接的(直前)オーナー事象が2つ以上存在す ることもあり得ない。ただし、ある事象のWオーナー事象が、同時にその事象の 直接オーナーであるということはあり得る。 図14において、 e(i) のWオーナーは e(a) であって e(n) ではない。W事 象 e(a) は、 e(b)、e(f)、e(d)、e(i)、e(k)、e(m)、e(l) のいずれにとっても Wオーナーである。 図15に示すように、ある1つの事象(e) が承認されたならば、その承認され た事象のPAのステータスが調べられ、もしそのステータスがUPA(不確実な プロセス・アドレス: Uncertain Process Addrcss)であったならば、そのステ ータスはCPA(正しいプロセス・アドレス: Correct Process Address)へと 格上げされる。プロセス・タイムが{kW,bW,pW}である事象(e) のWオーナー事 象は、そのCPAの、PAステータスの格上げを担当する属性となる。 図16は、様々に異なったプロセス・タイム t1、t2、t3、t4、t5 における、 同一のプロセス・アドレス(k,b) を示した図である。プロセス・タイム t1、t2 、t3、t4、t5 は、(k,b) の要素とは異なった、別の何らかの要素の実行を基準 としたものである。 プロセス・タイム t1 においてPA(k,b) を見るならば、そのPA(k,b) が状 態(k,b,0) にあることが見て取れる。この状態は、(k,b)を実行するという事 象が未だ一度も発生していないことを表している。 プロセス・タイム t2 においては、PA(k,b) が状態(k,b,2) になっているこ とが見て取れる。この状態は、(k,b)を実行するという事象が既に2回発生し たことを表している。それら2図の実行事象のいずれも、未だ承認されていない 。 PA(k,b) のステータスはUPAになっている。 プロセス・タイム t3 においては、PA(k,b) が状態(k,b,3) になっているこ とが見て取れる。これは、このときまでに、(k,b) を実行するという事象が既に 3回(即ち、(k,b,1) 、(k,b,2) 、及び(k,b,3) の3回)発生したということに 他ならず、それらのうち事象(k,b,2) が承認されている。(k,b)のステータス はUPAからCPAへ格上げされており、またWオーナー属性が付与されており 、これは(k,b,2) のWオーナーであることを表している。 これ以外の(k,b) 実行事象が次々と承認されて行く間も、Wオーナー属性は変 化しておらず、(k,b,2) のWオーナーのままである。 CPAのWオーナー属性の働きによって、出力結果の承認状態に変化が発生し ているときにも、目標プロセスについての知識が、常に最新のものであり続ける ことが可能になっている。 一旦は承認された承認済W事象のうちの1つが非承認とされたならば、その目 標プロセスについての知識は、その目標プロセスのプロセス・タイム中における その非承認とされたWオーナー事象の位置によって決定されるレベルにまで格下 げされる。XPDマシンのこのプロセスを我々は「知識喪失」プロセスと呼んで いる。 目標プロセスのXPDモデルの構築 図7を参照されたい:XPDモデルはXPDグラフに基づいて構築され、その 構造は3次元を基本とする。3次元を基本とするというのは、その3つの次元を 基本として更にその他の次元を追加し得るということであり、また、3次元のう ちの第3次元はXPDグラフの2つの次元に基づいて構築される。 この第3次元はプロセス・アドレスの属性を包含した構造を表すものである。 様々な種類の属性が、様々なプロセス・アドレス(PA)に対して、即ち、様々 な{k,b}座標に対して付与され、また、付与される属性の種類は、そのプロ セス・アドレスに格納されている基本的プロセスの種類{A、L、D、W、E、 *、/、等々}に応じたものとなる。 実行可能ステートメントに対応したXPDモデルの各要素は、3つの属性を包 含しており、それら属性は夫々、 a)目標プロセスの中の対応するステートメントのレコード番号、 b)XPDリポジトリの中の対応するステートメントのレコード番号、 c)Xソース・コードの中の対応するステートメントのレコード番号、 への参照を表している。 これによって、目標プロセスと、その目標プロセスのXPDモデル、XPDリ ポジトリ、及びXソース・コードとの間の参照が確立されている。 XPDモデルには、実行可能ステートメントの各々に対応した、ローカル・タ イム属性が保持されている。 XPDモデルには、XPDグラフの要素の夫々に対応した、バイナリ・アドレ ス(BA)属性も装備されている。 全てのプロセス・ターミナルに対応した、リターン・バイナリ・アドレス(R BA)属性も装備されている。 リワインド・ターミナル(*)、(C)または(+)に対応したPAは、それら リワインド・ターミナルのリワインドID(ID/)属性を処理する。 IDは、プロセス・アドレスの{k,b}形式の表示に代わる代替表示として 利用される。各々の対表示{k,b}は、このIDの1つの整数値によって表さ れ、その整数値はXPDグラフ空間におけるそのPAの次数であり、このXPD グラフ空間を(k=1,b=1)から(k=MK,b=NB)へ通過して行くと きにkパラメータを最初にインクリメントするときの次数である。 ID=(b−1)*MK+kであり、ここでMKは、XPDグラフにおけるk の最大値である。 従って図5(A)において、PA(9,1)のグラフ要素*1ではID=9で あり、またPA(9,2)のグラフ要素A4ではID=23であり、なぜならば MK=14だからである。 次に、先ず、{*|C|+|R|=}のうちのいずれかのプロセス・ターミナ ルに対応したXPDモデルの第3次元を構成する構造の、実施態様の具体例を示 し、それに続いて、{A|L|D|E|W|X}のうちのいずれかの目的プロセ スの実行可能要索に対応し制御ステートメント{S}を変更する構造の実施態様 の具体例を示す。 それら構造のサイズ、及びそれらの構成要素のサイズは、実施態様がどのよう なものであるかに応じて異なるが、それら具体例には、xPDマシンを実施する 上で必要な構成要素だけを示した。 イグジット・ターミナル{R,=}は、リワインド・ターミナルに装備されてい る属性のうち、次の属性を備えていない:{ind,ID/,Repos.r.#}。 ind は、XPDフレーム及びXPDグラフの中の対応するプロセス要素のインデ クスである。 図5(A)に示したPA(14,3)に対応したXPD要素の具体例: ローカル・タイム属性は目標プロセスの実行時に記入される。 プロセス要素A、L、D、Eを包含しているPAは、「ACBポインタ」属性を 備えており、ここでACBとは、解析計算ベースのことである。 更に加えて、L要素及びD要素は、LまたはDの結果がポジティブであった場 合(ハイ・ポテンシャル・ソリューション)のb座標のインクリメント量を表す 値を規定する属性を有する: PAのACB−ptr属性は、現在プロセス要素の「承認された」実行事象の ヒストリについての情報を包含している対応するACB構造を指し示すポインタ である。 内部メモリ構造または外部メモリ構造の集合体であって、それらメモリ構造の 各々が、目標プロセスの夫々に異なった要素に対応していると共に、その要素の 挙動のその時点における「承認済」または「未承認」という形の既知のステータ スを構成している情報を包含しているものを、本発明では、目標プロセスの解析 計算ベース(ACB)と呼んでいる。 ACB構造の各々は、目標プロセスの実行可能PAの1つずつに対応したもの であり、内部変数構造の形態で実現することもでき、また、ファイルの形態で実 現することもできる。 唯一のルールは、ACB構造のどの構成要素も、日標プロセスの複数の要素の うちのそのACB構造に対応している1つの要素の実行事象を表しているという ことである。その事象のローカル・タイムは、ACB構造中における位置によっ て表される。 ACB構造の要素の値は、「オン」と「オフ」という2つの状態のうちの1つ にセットすることができ、ここで「オン」は承認済事象に対応し、「オフ」は未 承認事象(即ち、不確実な事象)に対応するものである。 図19を参照されたい: 本実施態様では、ACB−ptrがバイナリ・ファイルを指し示すようにして あり、このバイナリ・ファイルは2つの部分に分けられている。第1の部分は制 御領域である。この制御領域は2種類の情報を保持しており、2種類の情報とは ネクスト・パラメータ・ワード(NPW)と、不確実性ディスプレースメント・ ワード(UDW)とである。第2の部分は情報領域を含んでおり、この領域は、 複数の「知識状態」ビットを保持している。幾つもの要素実行事象によってこの ACB−ptrが作り上げられており、それら要素実行事象の各々が、情報領域 の中の1つのビットで表されており、そのビットが「知識状態」ビットである。 そのバイナリ・ファイルの情報領域の始点に対するそのビットの相対位置が、そ の事象のローカル・タイムに対応しており、またそのビットは、その事象の「正 しさ」のステータスについての「知識」の現在状態に応じて「オン」または「オ フ」にセットされている。 様々なファイル圧縮技法を利用することができる。本実施態様では、UDWに は、その状態が「0」の最初のビットの相対ディスプレースメントを保持させて ある。要素実行事象の承認が1つもなされていないときには、それに対応してU DWは「0」になっており、また、情報領域の先頭のビットは、最初の要素実行 事象に対応しており、情報領域の圧縮は行われていない。 これより後のある時点に至ったときに、UDWが例えば「2000」にセット されたとするならば、それは、情報領域の先頭のビット位量が、ローカル・タイ ム「2001」に対応していることを表すものであり、また、それに先行して実 行された2000回の要索実行事象の全てが承認されたことを表すものである。 そのため、上述のACBポインタに対応しているバイナリ・ファイルが、ビット 位置2000個分の左方シフトによって圧縮される。このようにしているのは、 最初の2000個までのビット位置が「1」で占められるべきビットであること が分かっているからである。 UDWの値は、現在目標プロセス要素を解析しているXPDマシンの「知識帰 納」プロセスまたは「知識喪失」プロセスの実行中に、いずれの方向へも変化さ せることができる。これは、対応したACB構造の情報領域の中で、ビットのシ フトを行うことによって達成することができる。 例えば、D1のACBの情報領域の、第1番ビット位置と第4番ビット位置と が、「知識帰納」プロセスの実行中にそれらのステータスが「オン」に変化させ たならば、そのD1のUDWが10進数の「7」にセットされ、その情報領域の ビットが、ビット位置7個分左方へシフトされる。 入力ステートメント{E}のパラメータと、コール・ステートメント{X}の パラメータとは、それらのパラメータの各々が、そのパラメータに専用の1つず つのACB構造で表される。 対応するモデル要素のACB−ptrは、先頭のパラメータに対応したACB 構造を指し示している。そのACB構造のネクスト・パラメータ・ワード(NP W)は、それ続く次のパラメータ(もし存在していれば)に対応したACB構造 を指し示しており、以下同様である。続く次のパラメータが存在していない場合 には、そのNPWは空になる。 5つの実行可能要素{A1、A2、D1、E1、X1}を包含しており、その うちのE1が、2つの入力パラメータを持ち、またX1が、3つのコール・パラ メータを持っている目標プロセスでは、そのACB構造が、例えば図19に示し たような形を取る。 目標プロセスのXPDリポジトリの構築: 図7を参照されたい:目標プロセスのXPDリポジトリは、XPDグラフと同 時に構築される(ただし、XPDフレームを構築するステップが実施される場合 には、XPDフレームと同時に構築されることもある)。実行可能ステートメン ト(XPDオブジェクト集合の、A、L,D、E,X、及びS要素)に対応した メイン・ブランチの各要素は、XPDリポジトリのファイルに格納される。 XPDリポジトリに包含されるコードの量は、それに対応した目標プロセスの ソース・コードより少ない。その理由は、XPDリポジトリは、プロセス制御ス テートメントを包含しないからであり、プロセス制御ステートメントは、それに よってプロセスのステートメントを理解するためのものであって、データの操作 や有効性の検証には関与しておらず、従ってXPDリポジトリは、無条件分岐、 停止、リターン、then、else、endif、等々を包含しない。 またそれと共に、前述の「ネクスト・ローウェスト・ポテンシャル原理」によ って目標プロセスからアルゴリズムが抽出されているならば、その制御構造は、 XPDグラフ及びその基礎の上に構築されたXPDモデル(図7)の構造の中に 保存される。 従ってXPDリポジトリには、プロセス制御の定義を除いてその他全てのプロ セス要素が包含され、プロセス制御の定義はXPDモデルの中に保存される。 例1:目標プロセスのステートメントが次のものである場合には: if(d<10)go to label リポジトリには次のものが包含される; if(d<10) 例2:目標プロセスのステートメントが次のものである場合には: if(a.gt.b)then c = d else e = f(g) endif return リポジトリには次のものが包含される: if(a.gt.b) c = d e = f(g) XPDリポジトリの各ステートメントは、XPDモデルの中の対応するプロセ ス・アドレス{k,b}の属性の中で参照される。例えば、そのリポジトリが、 RRDS(相対レコード・データ集合:Relative Record Data Set)として維持 されている場合には、対応した参照属性が、そのリポジトリの中の対応したステ ートメントのレコード番号を包含していなければならない。これについては、上 述の「目標プロセスのXPDモデルの構築」のパラグラフの中の、リポジトリの レコード番号(Repos.r.#)の説明を参照されたい。 6.Xソース・コードの構築; 目標プロセス実行履歴を入手するための最小オーバーヘッド命令 インクリメンタル・システム出力プロセス同期(ISOPS)マップによるユ ーザーXPDマシン目標プロセス・インターフェースの構築; システム入力プロセス同期(SIPS)マップの構築; Xソース・コードの構築 伝統的オブジェクト・コードから実行されている目標プロセスをXPDマシン により分析(解析)するために、プログラムの目標システムの各目標プロセス( 主プログラム、サブルーチンあるいは関数)のXPDモデルおよびXPD格納部 (レポジトリ)からXソース・コードを構築する。 Xソース・コードを生成する目的は、目標プロセスと、目標プロセスの挙動( 行動)の知識を蓄積するXPDマシン・プロセスとの間の同期の計測化にある。 計測化された同期信号を除いて、Xソース・コードは、このXソース・コードが 「デッド・コード」即ち到達不能コードは含まない点と、第2の目標ソース・コ ードがXPDモデル・ルールによって構成されなかった、即ち例えば余計なGO TOを持たなかったならば元のソース・コードに従って潜在的に再構成される 点とで、元の目標プロセスのソース・コードとは潜在的に異なる。 図7および図8について Xソース・コード発生器(図7の17)により2つのオブジェクト、即ちXP Dモデル(図7の8)とXPDレポジトリ(図7の10)から生成されるXソー ス・コードは、更に、XPDインターフェースへ送られる同期信号(4)を介し てXPDモデルを「動作」させ、このインターフェースが更に信号(6)を介し てコマンド(7)を介してXPDモデルを「動作」させる分析エンジン(解析機 関)を付勢する。 Xソース・コードがXPDモデルとXPDレポジトリから構築され、これらは 更に目標プロセスのソースから構築されるので、目標プロセスとXPDモデルと Xソース・コードとの間には1対1の機能的相等性が存在する。 Xソース・コードの生成のためには、下記のことが行われる。即ち、 −Xソースに対する各実行可能ステートメントの内容がXPDレポジトリ(図 7の10)から得られ、 −制御ステートメントがXPDモデル(図7の8)から構成され、 −目標モデル同期信号が計測化される(図20と図21における事例参照) 目標プロセスとXPD分析エンジン間の同期インターフェースの構築は、以下 の論題で定義される「遅延逐次」モデル同期の事例について説明する。 同期信号は、ここではXPDインターフェース(XPDI)(11)へ3つの パラメータ(k、b、m)を送る「呼出し」ステートメント(図8の4)により 生成される。但し、(k、b)はプロセスのアドレスを定義する対であり、(m )は目標プロセスのモデルを定義する、即ち、どの目標プロセスがその時実行中 であるかを定義する。 3つのプロセス(k、b、m)の代わりに、2つのパラメータ、即ち(IDT 、m)によってインターフェースを実現することもできる。但し、IDTは要素 のプロセス・アドレスの代替的表示であり、先に述べた式によって対応する終端 (ターミナル)の座標(k、b)から計算される。 IDT=(b−I)*MK+k;(ID式) 但し、MKは目標プロセスのモデルの最大k座標である。 目標プロセス実行履歴を入手する最小オーバーヘッド命令 終端同期呼出しは、プロセス終端(定義F3)を表わす各ステートメントの前 に加えられる。 図4からの事例:ものとするとモデルによりプログラムのシステム内で識別さ れるプロセスに対するXソースを構築しつつあるものとすると、m=2は、分岐 b=1の終端からGO TO終端を表わす時、 call XPD(9、1、2) go to ‘LABEL a’ また、分岐b=5の終端から call XPD(10、5、2) go to ‘LABEL a’ ‘LABEL a’の構文は、異なるプログラミング言語では異なる。プログ ラム実行履歴を記録するこの方法は、次に説明するように、最小オーバーヘッド (最小計装)を表わす。 XPDIは、PAがXPDIにより終端として識別される呼出しを受取る時、 このPAを(m)と共にシステム実行履歴ファイル(図8の3)に記録する。 図8において、XPDインターフェース(XPDI)モジュールがIDTを対 (k、b)で先に述べた「ID式」により変換する。 モデルにおける座標(k、b)を見出すことにより、XPDIモジュールがど の終端が同期信号を送ったかを識別する。 実行されたプロセス終端のシーケンスは、1つの目標プロセスの所与のモデル に対する目標プロセスの挙動履歴を再現するために充分かつ必要な(最小オーバ ーヘッド)情報である。 説明:当該モデル内には、STARTと特定の終端(ターミナル)の間、ある いは前の終端と次の終端とのリワインドIDのエントリ間には1パスが存在する のみである。このリワインドID(ID/)は、モデルが構築される時、XPD モデルの各終端の属性として格納されている。 XPDIは、次に実行される目標についての情報を受取る時、目標プロセス内 でその時実行されるパスの部分、即ち前に実行された終端のリワインドID(即 ち、プロセスに入ってからその時実行される終端が最初のものであれば、STA RT)からその時の終端までを再トレースするように分析エンジンに指令する。 PAを介する各パスは、その実行事象を表わし、その局所時間属性(p)を1だ け増分する。 例えば、図4のXPDグラフから構築されたXソース・コードの実行中に下記 の信号がXPDIにより受取られたものと仮定しよう。即ち、45、9、55。 これらは、次のPAのIDTである。即ち、{14,3}、{9,1}、{1 0,4}。これは、目標プロセスが下記の経路により実行されたことを示す。即 ち、 A1 A2 L1(−)A3 L2(+)A4 X1(+)A6 W1 A3 L2(−) A2 L1(+)W2 E1 L3(−)A7ストップ しばしばDO、FOR、WHILEなどにおける場合のように同じ終端の反復 を表わすため、負の数を使用する。例えば、27 −5 42は、DOサイクル から出る前に、DOループD1が負の決定(主体を通る時)を6回した(IDT =27の終端に達した)ことを意味する。 前の事例では、プロセス挙動履歴の29事象を表わすのに3つの同期信号42 、9、52を用いた。プロセス履歴を表わす他の選択は、下記のいずれかである 。即ち、 −当該事例では29信号を生成しなければならないあるデバッグ・パッケージ で行われるように、各実行要素の後に同期信号を送るか、あるいは −パスしたLCからなる対{L1,0}{L2,1}{D1,1}{L2,0 }{L1,1}{L3,0}、即ち12信号をその解と共に記録する。 実行されたプロセス終端のシーケンスを記録することによるプロセス実行履歴 の記録が目標プロセスのダイナミックスについての必要かつ充分な情報であるこ とを示したばかりである。これは、同期信号の数と、伝統的なオブジェクト・コ ード処理を用いて目標プロセスのダイナミックスを捕捉するために必要な計装挿 入数の双方における最小オーバーヘッドを実現する。更に示すように、この計装 は、XPDオブジェクト・コードを用いる時には必要ではない。 インクリメンタル・システム出力プロセス同期(ISOPS)マップによるユー ザ−XPDマシン−目標プロセス・インターフェースの構築 以下は、ユーザと、XPDマシンを介する目標プロセスとの間のインターフェ ースについて記述する。このインターフェースは、本発明が確信する如く、目標 ソフトウエアの分析のためあり得る最も高レベルのインターフェースである。X PDマシン分析は、システム出力の照合によって付勢される。 我々がプログラムを書く理由が、システム出力の結果である。プログラムを修 正しあるいは決定することを欲する理由がシステム出力結果である。現在あるプ ロセスを理解しようとするかあるいは新たなプロセスの構築を試みる時に記憶を 念頭に置くのは現在あるかまだ無いかの如何を問わずシステム出力結果である。 システムの結果を受入れるか、受入れないか、あるいはこれを照合するか、プロ セスの分析またはプロセス構成に対する外ならぬ「理由」として成り立つもので ある。 ここで堤案した手法は、XPD分析エンジンに対して、この「理由」が分析を 活性化する方法として通信する、従ってこれ以上の中間ステップを排除すること を許容する。更に述べる方法は、ユーザとXPD分析エンジンとの間にインター フェースを構築すること、即ち、人間による認知分析を活性化するために直感的 に行われるように照合点としてシステムの結果を用いることを許容する。 インクリメンタル・システム出力プロセス同期マップ(ISOPSマップ)は 、出力信号とこれら信号を生じたプロセス事象との間の照合の具である。 以下は、ISOPSマップのサンプル・フォーマットである。これは、5つの タイプのエントリ{1,2,3,4,5}からなっている。 エントリ1:{k,b,p,m}プロセス・パラメータを介するW事象を定義 する エントリ2:システム出力スクリーン上のその時の出力信号の初めの位置{s l,sc}(スクリーン行、スクリーン欄)を定義する。 エントリ3:システム出力スクリーン上の矩形ブロック{I1,c1,I2, c2}上の矩形ブロック、即ちW事象の実行により変更されるスクリーン領域を 含む最も小さな矩形ブロックを定義する。 エントリ4:整数情報、即ち、変更されたイメージ情報を含むファイル(エン トリ5の組合わせファイル)の初めからの対応するエントリ5の変位を含む。 エントリ5:エントリ3の領域と対応するシステム出力スクリーン・バッファの 実際部分を含む。 エントリ5がスクリーン・バッファの変更領域および唯一つの変更可能サイズの 記録のイメージであるため、これを別のファイル−インクリメンタル・イメージ ・モニターに保持する(図8のIIMファイル)。エントリ1、エントリ2、エ ントリ3およびエントリ4に対応する他の4つのISOPSマップ・パラメータ は、 ISOPSマップ・パラメータ・ファイル(図8のISOPSパラメータ)に保 持される。ISOPSパラメータ・ファイルおよびIIMファイルの組合わせは 、システム結果の履歴(図8の2)と(図7の2)を表わす。 ISOPSマップのサンプル・フォーマット: 以下は、ISOPSマップの構築に用いた値について述べる。即ち、 エントリ1:W−事象{k,b,p,m}を記述し下記の如く得られる。即ち 、{k,b,m}は目標プロセスによりXPDI(図8の11)へ送られる同期 パラメータ(図8の4)であり、XPDIは、前記{k,b}プロセスのアドレ スと対応するプロセス要素構造のその時の時間属性として{m}に対応するモデ ル(8)から{p}を得る。この時間属性は、以降の節で述べるように、分析エ ンジン(9)によってカレントに保持される。 エントリ2:各システム出力信号の初めのスクリーン(行および欄){sl, sc}位置で、下記の如く得られる。{sl,sc}エントリは、外ならぬ最初 のW−事象エントリに対して等しい{1,1}。XPDIがW−事象により送ら れる同期信号を受取る時、XPDIはその時、即ち実際にはこのW−事象の実行 後にスクリーン位置を得る。このスクリーン位置は、次のW−事象に対する{s l,sc}エントリとして用いられるように保持される。 エントリ3:スクリーン上に描写できる最も小さな矩形であり、前のW−事象 の処理時間から変更されたスクリーン領域を含む。この矩形は、前のW−事象後 の処理時間にセーブされる前のスクリーン・イメージ(図8の15)と、その時 のシステム出力スクリーン・バッファ(図8の5)との比較によってインクリメ ンタル・イメージ抽出/解釈プログラム(図8の12)により定義される。 エントリ4:IIMファイルにおけるインクリメンタル・イメージ・モニター のその時のエントリの相対的バイト位置であり、この位置はインクリメンタル・ イメージ抽出/解釈プログラム(IIE/C)(図8の12)によって知られる 。IIE/Cは、IIMファイルに対する各エントリのバイト長さが判るので、 その時の位置を知る。 エントリ5:エントリ3の矩形と対応するシステム出力バッファの一部である IIMファイルに対するその時のエントリである。 システム入力プロセス同期(SIPS)マップの構築 SIPSマップは、分析のためのアクセスを行い、あるいは特定の処理時間にお いて行われるシステムに対する特定の入力を再現すること可能にするために構築 される。SIPSマップは、SYSIN履歴ファイル(図8の1)および(図7 の1)に保持される。各システム入力事象毎に、エントリがSYSIN履歴ファ イルに対して行われる。このエントリは2つのレコードからなる。1つは実際の 入力ストリングであり、他方はその時の入力ストリングと対応する処理時間{k ,b,p}とモデル{m}を記述するパラメータ{k,b,p,m}の組である 。 XPDインターフェース・モジュール(図8の11)は、同期パラメータ{i de,m}(図8の4)とシステム入力バッファ(m)(図8の19)からのS YSIN履歴ファイルに対するエントリを生成する。{k,b}はIDの式によ り{ide}から計算される。パラメータ{p}はXPDモデル無いのその時の 処理時間からXPDIにより得られる。 図21は、終端(図20のE1)からの入力前に計測化される{ide,m} 同期呼出しCALL XPDI(21,2)の一例を有する。システム入力が目 標プログラムから判ると直ちに、これは計測化された次のステートメント“WR ITE(M,002)CH”によりバッファ・ファイル(m)(図7の19)に 記録され、更に後でXPDIモジュールによりSYSIN履歴ファイルへ再記録 される。システム入力を記録する計測化ステートメントは、「READ」から「 WRITE」へのI/O動作をカバーすることにより構築され、これはモニター ・ファイル{m}へ送られる。 7.目標プロセス、そのXPDモデル、XPDリポジトリおよびXソース・コー ドの事例 図20、図21および図7を参照。 図21Aはサンプル・サブルーチンである。図20aはそのXPDグラフで、 これはXPDモデル(図7の8)が構築される基礎である。図20Bは、図7の 先に述べたプロセス18によりサンプル・サブルーチンから取出されるXPDリ ポジトリ(図7の10)である。図21BはXソース発生器(図7の17)によ り図21AサンプルのXPDグラフおよびXPDリポジトリから構築されるXソ ース・コードである。XソースはXPDインターフェース・モジュール(図7の 11)に対する呼出しを含み、この呼出しは、各プロセス終端(定義F3)前に 計測化される。 CALL XPDI(6,2) CALL XPDI(14,2) CALL XPDI(24,2) CALL XPDI(31,2) CALL XPDI(35,2) 各システム入力信号前(終端からのEi):CALL XPDI(21,2) 各システム出力信号後(Wi): CALL XPDI(20,2) 但し、6,14,24,31および25は、終端C2*1,C1,=およびこれ と対応してRのidtであり、20はW1のidwであり、21はE1のide であり、2は本例では2に等しくなったモデルIDmである。 モデルID,mは、そのモデルおよびリポジトリの図7のプロセス18による 抽出中の各目標プロセス(主手順、関数またはサブルーチン)に対する1−増分 度で割当てられる整数である。 先に述べた{idt,m}および{idw,m}および{ide,m}は、図 8における同期パラメータ4である。 図20Aでは、リワインド終端エントリ/1(1010)のBAが値において 対応するリワインド・エントリ*1(1001)のBAより大きいことが判る。 このことは、依然として、先に定義した、即ちより下位の2進アドレスをもつプ ロセス・セグメントで既に表わされるプロセス要素へ制御を戻すリワインド終端 の原理に矛盾するものではないが、これはその場合の制御が下位の2進アドレス を持つDOループ(要素D1)のエントリへ実際に戻されつつあるためである。 しかし、プログラミング言語内のDOループの実現ルールに従えば、この制御の 戻しは更に制御をD1へ戻すDO終端(要素C1)を通過する中間ステップを介 して行われなければならない。 目標プロセス・モデルの「疑似並列」実行:「遅延逐次」と「遅延並列」XP Dモデルの実行; 目標プロセスのXPDモデルの実行によって、目標プロセスの実行経路に従って そのXPDグラフを追跡するプロセスを理解する。 XPDモデルの遅延逐次実行; 「XPDモデルの遅延逐次実行」は、CPU、即ち2つのタスク間で切換わる1 つまたは幾つかのCPUによって実現されつつあり、この場合1つのタスクは目 標プロセスの「実行セグメント」であり、他のタスクは、XPDオブジェクトS ETの以降の要素、即ち、プロセス・エントリ、システム入力点(同期{ide ,m}および「プロセスの終端」(同期{idt,m}))間に置かれる目標プ ロセスの一部として定義される「実行セグメント」を持つXPD分析エンジンに よる前記プロセスのXPDモデルにおける最初のタスクのモデル化である。 XPDモデルの遅延並列実行 「XPDモデルの遅延並列実行」は1つ以上のCPUにより実現されつつあり、 この場合目標プロセスの「実行セグメント」のタスクと、XPD分析エンジンに より前に実行された「実行セグメント」のモデル化のタスクとは並列に行われる 。 XPDモデルの「疑似並列」実行の方法は共に、プロセス終端{idt,m} とシステム入力{ide,m}からの同期信号によって実現されるが、最初の場 合は、XPD分析エンジン・プロセスの実現はCALLステートメントの形態で 行われ、この場合目標プロセスはXPDIモジュールから制御の返還を待ち、2 番目の場合は、並列プロセスは同期信号によって得られる。前記同期信号{id e,m}および{idt,m}は、XPDモデルをして目標プロセスにより「更 新」させるように設計される。同期信号{idw,m}は、目標プロセスおよび XPDモデル内の処理時間によりISOPSマップを「更新」させるように設計 される。 先に述べたようにプロセス終端からの信号が最小オーバーヘッド計測化を表わ すので、これら信号もまた目標プロセスによりモデルを更新するよう保持するた めに最小オーバーヘッド同期信号を表わす。システム入力の点における同期は、 「オペレータ思考時間」中に目標プロセスをなんらかの方法で割込まれるので便 利である。 9 XPD分析エンジンの実行 目標プロセス内の原因−効果関係の分析計算基 礎の構築および伝播;知識帰納; 図8を参照する。以降のプロセスは、XPDI(11)が、形態{id,m} または{k,b,m}(図8の4)において実現される同期信号を受取る時に生 じる。形態{id,m}における実現を仮定する。XPDIは、先に述べた「I D式」によりモデルmのMKの値を知って、対応するモデル{m}の{k,b} における{id}を変換する。 b=(id−1)/mk+1 k=id−(b−1)*mk プロセス・アドレス{k,b}は、プロセスの終端(定義F3)を指示すると 、 {id}は{idt}となり、あるいはシステム出力信号(W)を指示すると、 {id}は{idw}となり、あるいは終端(E)からの入力を指示すると、i dは{ide}となり、さもなければ、他の可能性が存在する。即ち、 XPDIが{idt}同期パラメータを受取ったならば、この{idt}はシ ステム実行履歴ファイル(図8の3)へ書込まれる。 同期信号が{ide,m}または{idt,m}であるならば、XPDIはX PD分析エンジンを始動して下記のプロセスが生じる。即ち、 −XPD分析エンジンが前の同期信号{k,b}の点から、あるいはプロセス 実行履歴の記録のための最小オーバーヘッド計測計装を論議した時前に述べたよ うに、その時の同期信号の{k,b}の入力点からモデルを再トレースする。 −XPDモデルの各要素の通過中、その局所時間属性{p}が1だけ増分され 、これによりカレントに保持される。 −システム出力である(Wi)要素が満たされると、XPD分析エンジンが「 知識帰納」連鎖のサイクルを解する(請求の範囲第9項)(定義K10:「知識 伝搬終端」事象(KP終端)および図14参照。これにおいては、(Wi)が1 つ以上の出力パラメータを持つならば、各サイクルがシステム出力パラメータに より創成される) 知識伝搬終端は、「知識帰納」処理を安定化し、この処理はさもなければ長引 き、目標プロセスの前向き実行でのより長い2次プロセス連鎖となる。正しいア ルゴリズム・スペースは潜在的に伝搬され、PAのW−オーナ事象が知識帰納プ ロセスによって確立される(定義K12、「事象のW−オーナ」および図14、 図15、図16、図17、および先に述べた「知識伝搬ルール」を参照)。 実行事象の状態が「知識帰納プロセス」によって「不確実」から「適正な」へ 改善される毎に、対応するACB規約における対応ビットが0から1へ向上され 、これによりACBの知識を増大する。(ACBの定義および図19参照) {ide,m}同期信号の間、XPDIが{k,b,p,m}レコードをSI PSマップ(図8の1)へ移し、ここで{p}はその時同じ同期信号により更新 され、{k,b}が前に述べた「ID式」によって{ide}から得られる。 図21のステートメントCALL XPDI(21,2)を参照する。{k, b,p,m}エントリが{5,3,p,2}を探す。ここで、{p}はXPDI がXPDモデルから得ることになるその時更新される局所時間属性である。下記 のステートメント、即ち、WRITE(M,002)CHが、モニター・ファイ ル(ユニットM)(図7の19)に実際の入力レコードを入れる。これは、次の 同期信号中にXPDIによって一時的モニター・ファイル(M)から同期パラメ ータ{k,b,p,m}の次のシステム入力履歴ファイルへ複写されることにな る。 同期信号がシステム出力要素{idw,m}から到来するならば、XPDIが ISOPSマップの更新のため先に述べたプロセスを開始し、次に制御を目標プ ロセスヘ戻す。ISOPSマップの{k,b,p,m}パラメータを生成する間 、XPDIがXPD戻すの対応するWi要素から局所時間パラメータ{p}を用 いてこれを1だけ増分するが、これは{idw,m}信号がXPD分析エンジン のモデル同期プロセスを実行しないからである。 10 常に低減する不確実さによる修正のための偽の位置または場所の領域を局 在化するために、ISOPSマップを照合することによりXPD分析エンジンの 「知識演繹」プロセスを活性化 システム出力からのプログラムのシステム内の事象を絶対的にアドレス指定す る能力が4つの座標{k,b,p,m}により確保される。プログラム・ソース ・コードを参照することなくシステム出力からのシステム内の事象−プログラム ・ユーザまたはプログラマから見える何かをアクセスして分析することができる ことは、分析ツールのユーザと目標プロセスとの間の本発明のインターフェース に対してオリジナルを表わす。 「知識の演繹」:図13参照。不確実性アルゴリズム・スペースは、先に述べ たXPD分析エンジンの「知識の演繹」によって一貫して最小化される。「知識 の演繹」プロセスは下記の如く実現される。 XPDマシンのユーザは、インクリメンタ・イメージ抽出/解釈プログラムに よってシステム結果履歴から反復されるシステム出力を調べる。カーソル、マウ スその他のポインティング・デバイスをシステムの結果に置くことにより、IS OPSマップの{k,b,p,m}パラメータが付勢される。 参照されたシステム出力結果がXPDマシンに対して「予期されない」、従っ て正しくないとして定義されるならば、XPD分析エンジンが、ここでは「知識 演繹終端」と呼ばれる「知識伝搬終端」まで、目標プロセス実行と反対方向に事 象をトレースする「知識帰納」の同じルールに従う「知識演繹」プロセスを始動 することになる。唯一つの相違は、問題の出力事象の「事象定義スペース」の一 部である「不確実性アルゴリズム・スペース」を回復するプロセス中では、知識 の増加がACB規約で行われないことである。この不確実性アルゴリズム・スペ ースは、「知識演繹終端」に対する連鎖におけるUPAアドレスの組合わせであ る。図13において、プロセス時間t3におけるd(e3)事象定義スペース内 の//スペースによって記号的に表わされる。図13で判るように、事象定義ス ペースの不確実部分は、目標プロセスの定常アルゴリズム・スペースおよび常に 増加する適正アルゴリズム・スペースによって常に最小化される。 CPAのW−オーナ属性は、出力結果の受入れにおける変動中も目標プロセス の知識を更新状態に保持させる。 先に受入れられたW−事象の1つが受入れられない時、目標プロセスの知識は 、目標プロセス時間における受入れられないW−オーナ事象の位置によって決定 されるレベルまで落とされる。このプロセスを「知識を低減する」XPDマシン と呼ぶ。図13において、知識の喪失は下記のシナリオ内で理解することができ る。即ち、 1.目標プロセスは処理時間(t3)まで実行され、これが適正アルゴリズム ・スペース(CPAは、同図では文字÷によって表わされる)を処理時間(t3 )で示されるレベルまで高める。 2.後で、失敗(即ち、結果の修正を必要とする)は、処理時間(t2)で結 果に関して確立される。知識レベル(適正アルゴリズム・スペース)は、処理時 間(t2)で示されるレベルまで落とされる。これは、W−オーナ事象が処理時 間(t2)後に生じたPAに対するCPAからUPAまでの状態の喪失により行 われる。 「知識の喪失」能力は、個々の予測に関し、あるいは個人の変更される予測に 関し、あるいは変更されたシステム仕様に関する失敗の定義に従って、XPDマ シン・プロセスを柔軟かつ現実的なものにする。 11 XPDグラフおよびXPDリポジトリの解釈 図20を参照する。目標プロセスの制御は常に、目標プロセスのXPDモデル が構築される2次元ベースであるXPDグラフによって完全に表わされる。目標 プロセスは、そのXPDグラフ(図18C)をトレースすることによりXPDモ デルを実行中XPDリポジトリのステートメントを解釈することによって実行さ れる。このような実現では、図7に示された伝統的なオブジェクト・コードの実 現の以下の要素は必要でない。即ち、 −Xソース発生器 −Xソース・コード −コンパイルおよびリンク −X−オブジェクト・コード 図18Cを参照する。言語インタープリタ(23)が、XPDモデルの実行( 構文解析)中にXPDリポジトリ・ステートメントを解釈する。インタープリタ からの信号(24)が次の3つの値の1つであるコードを返す。即ち、 (a)論理ステートメントではない(LでもDでもない)XPDリポジトリ・ ステートメントが実行され、 (b)論理ステートメント(LかD)であるXPDリポジトリ・ステートメン トが否定的に実行され、 (c)論理ステートメント(LかD)であるXPDリポジトリが肯定的に実行 される。 XPDドライバが、XPDモデルの構文解析(実行)中に返されるコードに従 う動作を生じる。 図20および図21参照。XPDドライバは、XPDモデルの実行中に、XP DIモジュール{idt,m}、{ide,m}および{idw,m}に対して 同期信号を生じる。XPDIモジュールは更に、疑似並列XPDモデル実行中に 行われたと同じ方法でXPD分析エンジンを付勢する。相違は、疑似並列XPD モデル実行中は、「実行セグメント」の後にXPDモデルにおけると同じセグメ ントの再トレーシングのプロセスが続くことである。対照的に、XPDドライバ による目標プロセスの実行中は、目標プロセスの実行とそのXPDモデルの実行 は実際には同じプロセスにより実現される。 図20Aにおいて、異なるプロセス時間に下記の信号を{id,m}フォーマ ットで生成することができる。即ち、 CALL XPDI(6,2) CALL XPDI(14,2) CALL XPDI(20,2) CALL XPDI(21,2) CALL XPDI(24,2) CALL XPDI(31,2) CALL XPDI(35,2) または、{k,b,m}フォーマットで同じもの CALL XPDI(6,1,2) CALL XPDI(6,2,2) CALL XPDI(4,3,2) CALL XPDI(5,3,2) CALL XPDI(8,3,2) CALL XPDI(7,4,2) CALL XPDI(3,5,2) 解釈されたプロセスの場合と同様に、再コンパイルまたは再リンキングが要求 されないため、目標プロセスに対する修正がこの方法により更に容易に行われる 。更に、目標プロセスのロジックおよびに対するプロセスの実行可能な要素に対 する修正は、本例では個々に行うことができ、これもまた修正タスクを簡単にす る。 12 XPDオブジェクト・コードおよびその実行; 目標プロセスのオブジェクト・コードの一部としてのXPDモデルの実行 図18Aを参照する。XPDオブジェクト・コードは下記の2つの要素からな る。即ち、 1.XPDモデル内でXPDグラフにより表わされる制御要素、および 2.マシン・コードのXPDリポジトリ・ステートメントに変換されることに より表わされる実行可能な要素 前記構成においては、XPDグラフおよびXPDリポジトリを解釈する場合に おけるように、図7に示された伝統的なオブジェクト・コード構成の下記の要素 は必要とされない。即ち、 −Xソース発生器 −コンパイルおよびリンク −Xオブジェクト・コード XPDオブジェクト・コードの実行は、下記の2つのプロセスからなる。即ち 、 1.XPDドライバ(20)がXPDモデルを実行する、即ち、XPDグラフ をトレースする 2.制御命令を含まないXPDリポジトリのマシン・コード・ステートメント に予め変換されるマシン・コード部分が、XPDドライバによる実行のため提供 されるプロセス(23)により実行される。 XPDリポジトリ・ステートメントの解釈の場合のように、XPDドライバが コードの部分実行の結果として信号を受取り、信号が論理ステートメント(XP Dオブジェクト・セットのLまたはD要素)からくる時適切な方向を取る。 XPDドライバは、XPDモデルの実行中、XPDIモジュール{idt,m }、{ide,m}および{idw,m}に対する同期信号を生じる。XPDモ ジュールは、更に、疑似並列XPDモデルの実行中に行われのと同じ方法でXP D分析エンジンを付勢する。 相違点は、疑似並列XPDモデルの実行においては、「実行セグメント」の後 にXPDモデルにおけると同じセグメントの再トレースが続くことにある。対照 的に、XPDドライバによる目標プロセスの実行中は、目標プロセスの実行およ びそのXPDモデルの実行は、実際に同じプロセスによって実現される。 図20Aにおいて、下記の信号を異なるプロセス時間で{id,m}フォーマ ットで生成することができる。即ち、 CALL XPDI(6,2) CALL XPDI(14,2) CALL XPDI(20,2) CALL XPDI(21,2) CALL XPDI(24,2) CALL XPDI(31,2) CALL XPDI(35,2) または、{k,b,m}フォーマットにおける同じもの CALL XPDI(61,2) CALL XPDI(6,2,2) CALL XPDI(4,3,2) CALL XPDI(5,3,2) CALL XPDI(8,3,2) CALL XPDI(7,4,2) CALL XPDI(3,5,2) 図18B参照 実行可能要素アドレス(ECA)属性が、XPDモデルの各実行可能要素PA に加えられる。ECAは、変換されたXPDリポジトリ・ステートメントと対応 するマシン・コードの部分のXPDオブジェクト・コード(図18Aの22)の 実行可能要素ファイル内の変位である。各部分の後には、ステートメント区切り バイト(SSB)が続く。XPDドライバ(図18の20)が、XPDモデルか らのECAの値(図18Aの8)を読出し、マシン・コードの対応部分を読出し 、これをXPDオブジェクト・コードの実行可能要素を実行するモジュール(図 18Aの23)による実行のため送る。 システム入力の監視のための異なる方法の1つとして、下記のものが実現され る。即ち、図18のモジュール21がシステム端末からの入力をXPDオブジェ クト・コードの実行可能要素に変換する時、入力の動作をモニター・バッファ・ ファイル(M)(図18の19)における出力へシステム端末から反転する次の ステートメントを加える。 例えば、図21Bから: READ(*,002)CHの後には WRITE(M,002)CHが続く XPDドライバは、実行プロセス(23)へ送られるべき次のコード部分を選 択しながらシステム入力の制御監視のためにこの第2のステートメントを付勢あ るいは消勢する選択を有する。 13 XPDオブジェクト・コードの再コンパイルおよび再リンキング 図18Aおよび図18Bを参照 2つの要素、即ち制御要素と実行可能要素からなるXPDオブジェクト・コー ド・アーキテクチャが、目標プロセスの更に容易な修正を許容する。変更が単に 制御における時は、制御要素が変更される。この変更が実行可能要素の修正にお ける時は、新たなエントリが実行可能要素ファイルに作られ、制御要素における ECA基準が更新される。 ECAを介して制御要素と実行可能要素との間リンクの解は実行時間に行われ る。従って、コンパイル、再コンパイルあるいは解釈は、XPDオブジェクト・ コードの実行可能要素の新たに生成されるか修正されるステートメントにのみ必 要とされる。 XPDオブジェクト・コードの制御要素は、新たに生成されたXPDリポジト リ要素に対応するXPDグラフ要素に対する挿入、削除あるいは修正により再構 成することができる。 ある状況においては、制御構造のみが再構成される必要がある時、XPDオブ ジェクト・コードに対する修正を、実行可能要素に対する変更なしに、単にXP Dグラフ内の要素の順序を再構成することによって行うことができる。 XPDオブジェクト・コードに対する修正は、ある状況では、制御要素を消勢 して実行可能要素の対応要素をバイパスすることによって行うことができる。 制御および実行可能XPDオブジェクト・コード要素間のリンクの解が実行時 間に実現される時、XPDオブジェクト・コードにより実現される2つ以上の目 標プロセスのグループのリンキングあるいは再リンキングは、XPDオブジェク ト・コードの制御要素のみのリンキングによって行われるべきである。 XPDマシンはその高レベルのインターフェースを介してどんな基本プロセス 、即ち、システムの結果への照合によるステートメントおよびXPD分析エンジ ンの結果的な分析も指定することができるので、伝統的な再コンパイルのための コンパイラあるいは再リンキングのためのリンカの使用によらずに目標プロセス ・コードに対する自動的な修正の方法がある。制御要素は、順序の再構成、ある いはこれらの条件的あるいは無条件的な付勢または消勢の要求によりシステム出 力事象をユーザが指示することにより指令されるXPDグラフ内の要素の挿入、 削除または再構成によって自動的に修正することができる。この条件は、「知識 演繹」法により行われるっりょうに、現在のシステム出力結果に対する指示し、 その後これらを事象の履歴を再トレースするXPD分析エンジンにより分析する 同じ方法によってこれら結果を分析する同じ方法により現在のシステム出力結果 から得ることができる。 これは、結果指向プログラミングの前向き開発のための非常に高水準言語であ る結果指向プログラミング(ROP)の堤案される方法に対する基礎である。実 際に、本方法の水準は、分析しかつ再使用する更に多くの事象が存在するので、 目標プロセスの前向き開発と共に成長する。 呼出されたプロセスに対する外部照合が実行時に解かれてプロセスが一緒に予 めリンクされることがなければ、DLL(ダイナミック・リンク・ライブラリ) は、XPDモデルおよびXPDリポジトリが構築される唯一つのプロセスからな り、従って、 (a)新たなXPDリポジトリ・ステートメントが付加されるならば、その時 のプロセス実行可能E構成要素に対して既に存在するものから選択され、あるい は実行可能構成要素中に見出すことができなければ、制御要素の対応する要素に より付勢される時に解釈され、 (b)XPDオブジェクト・コードの制御要素が先に述べたXPDグラフの修 正方法によってXPDマシンにょり自動的に編集される時には、 プロセスの修正に対して再コンパイルあるいは再リンキングは要求されることが ない。 14 全てのテストおよび生産段階におけるXPDマシン・プロセスの実現 下記の方法のいずれかにより実現されるテストまたは生産の段階におけるXP Dマシンの使用を提案する。即ち、 XPDマシン・プロセスは、XPDマシン・プロセスが下記のプロセスの組合 わせである目標コンピュータ・プロセスの実行と共に実行される。即ち、 −伝統的なオブジェクト・コード構成内のXPDモデルの目標プロセス実行に 対して「並列な疑似」、あるいは −XPDオブジェクト・コード構成内の目標プロセス・オブジェクト・コード の構成要素としてのXPDモデルの実行 −目標プロセス要素間の当該知識を「知識伝搬端末」まで伝搬することにより 、システム出力事象により付勢される「基本的知識帰納」 −目標プロセスのXPDモデル内の不確実性領域を定義する「知識演繹」プロ セス 15 結果指向プログラミング(ROP) 結果指向プログラミング(ROP)法は、超高レベル・インターフェースを介 する前に生成されたプロセスを修正または構築を可能にし、下記のプロセス・ソ ース・コードとの相互作用は許容しない。即ち、 −ユーザ・インターフェースがSYSOUT事象の照合能力により現在あるシ ステム結果の参照に制限されること −照合されたSYSOUT事象の事象定義スペースを再使用するXPDマシン ・プロセスにより追加または修正が自動的に行われること 16 プログラム聴診器の実現 伝統的なビデオ(グラフ)分析と組合わされた音響分析が、プログラムまたは プログラムのシステムのより優れた動的理解を可能にする。目標プロセスの実行 は、プロセス・アルゴリズムにより定義される「音楽」として見る(聴く)こと ができ、入力データの組合わせの関数である。 プログラムの理解の認知プロセスの間、「動作するコンピュータ」のタスクと 当面する。これは、定義によれば動的プロセスである。一方、グラフ(画像)は 定義によれば静的オブジェクトである。動的プロセスのグラフと音の表現間の相 違は、気分転換音楽の2つの方法を比較することにより−1つは楽譜(図形的表 現)を読み、他は音楽を実際に演奏することによって理解することができる。 優れた音楽家が楽譜を読むとき、この音楽を実際に聴くのである。楽譜の図形 的表現は次に、例えそれが楽譜を見ているエキスパートのみに聴こえる場合でも 、音によって増幅される。 目標プロセスのグラフの静的性質は、グラフの構成要素を介する制御の流れを 示すことにより変更することができる。これは、制御を受取る要素を強調するこ とにより、またこれによりグラフ内の最後のハイライト位置を動かすことによっ て実現することができる。プロセスとの音響的同期は、それ自体はプロセスの診 断機構としてそのままであり、またこれはビデオ効果診断と組合わせることもで きる。 プログラム分析中の音響効果は下記の如く得ることができる。即ち、 1.次の記録された端末アドレス{k,b}をプログラムのXPDモデルに付 加することによる並列的プログラムまたはポスト・ライフ(死後)・プログラム のエミュレーションの間、プログラムのアルゴリズムのXPD−グラフについて のプログラム実行をトレースすることができる。 2.プログラム実行プロセスのビデオ・トレーシングは、トレース中その時ア クティブであるXPDグラフの要素を強調するだけで行われることになる。 3.音響効果は、音響周波数を生成してそれをスピーカへ送ることを許容する ハードウエア内部機能を呼出すことにより付加される。ヘッドフォンは、先に述 べた方法によりシステムを分析する時コンピュータに対する更に適切な付加とな ろうが、他のプログラマには役立たない。 周波数は、2つのパラメータ、即ち(k,b)の関数として計算することがで き、ここで{k}における1つの増分が周波数を1つの離散ステップだけ増分し 、 {b}の1つの増分が周波数をより大きなステップだけ、例えば1オクターブだ け増分する。従って、逆分岐は周波数を減分することになる。 XPD−GRAPHの個別の1要素のトレーシングと対応するビープの期間は 、これが人間の耳に認識されるように設定することができる。 このような音響的実行のエミュレーション効果は、当該プロセスのハード・コ ード化構造と入力データの組合わせに応じて、プログラム実行の各プロセスがそ れ自体の「音楽」を持つ如きものである。多数の反復ループをエミュレートする 場合は、全ての反復をトレースする必要性を排除するためこのようなループを表 示するようにコード信号を設定することができる。 音響的分析の効果は、医者が患者の心拍を聴くようにユーザがプログラムの挙 動を聴くことができる如きものである。 1.特定の出力結果が長期にわたり観察されない時は、この分析は次のことを 聞き取るように付勢することができる。即ち、−システムが不動作である −プログラムがループ状態 −入力を待機中である (最後に実行された要素が入力ステートメントであった時、特殊な音響を生成す ることができる) 2.プログラムのアルゴリズムの最もストレスの大きな場所は、最も一般的な 周波数として聴くことができ、従って容易に識別することができる。 3.異なる入力データの組合わせを持つプログラム挙動における相違は聴くこ とができる。 4.特殊な音響が子供の機能に対する呼出しを表示し得、特殊音響がこの呼出 しからの返信を示すことができる。音響的分析は、もともとこれらの信号にのみ 限定され得、機能的に研究の範囲内にあるならば、任意に1つの特定機能内のプ ロセス実行を示すように拡張することができる。 5.音響的分析は、プロセス・エミュレーション(生存あるいは死後)におい て記録することができ、次に順方向と逆方向の両方向で実際のモード・エミュレ ーションなしに再生することができる。 6.これは、システム結果の再生と同期して再生することができ、これにより これら結果の達成のため必要な処理の強さの付加を生じることができる。 7.これら異なる入力状況に対する計算の強さを分析するために、同じプロセ スに対する異なる入力データの組合わせのために記録し再生することができる。 プログラムの失敗の可能性は、含まれる基本的プロセス数の関数であるとすれ ば、この分析は選択において新たな仕様へのシステム展開におけるより簡単な( 入力−プロセス−出力)組合わせを助けることになる。
【手続補正書】特許法第184条の8 【提出日】1994年12月9日 【補正内容】 明細書の請求の範囲を、次の通りに補正する。 『1.制御及び非制御成分を有する目標プロセス内に含まれる誤りの位置を決 定する知識帰納解析方法であって、前記解析が行われるメイン・メモリを有する コンピュータに対してオブジェクト・プログラムを発生する方法において、 第1に、前記ソース・プロセスを解析して、前記ソース・プロセスの前記制御 成分を有するモデルを発生するステップと、 第2に、前記ソース・プロセスを解析して、前記ソース・プロセスの前記非制 御成分を有するリポジトリを発生するステップと、 前記目標プロセスについての基本知識を記録する間に前記モデルと前記リポジ トリとを実行し、前記基本知識が前記目標プロセスの内部のプロセス要素の実行 の正しさを指示するようにする、ステップと、 を含むことを特徴とする方法。 2.請求項1記載の方法において、 前記目標プロセスについての基本知識を記録する間に前記モデルと前記リポジ トリとを実行し、前記基本知識が前記目標プロセスの内部のプロセス要素の実行 の不確実性を指示するようにするステップを更に含むことを特徴とする方法。 3.請求項2記載の方法において、前記基本知識は解析された計算ベースの中 に記録され、前記解析された計算ベースは、複数の解析された計算ワードを含み 、1つの解析された計算ワードは前記目標プロセスのステートメントの中の各パ ラメータに対するものであり、各解析された計算ワードは制御領域と情報領域と を含み、前記情報領域は異なる時点における目標ソフトウェアのプロセスのステ ートメント・パラメータのイベントの効果の正しさに関する知識を示す一連のイ ンジケータを含み、前記制御領域はイベントの効果の正しさに関する知識を有し ない前記情報領域において表された第1のイベント・インジケータを定義する値 を含むことを特徴とする方法。 4.請求項1記載の方法において、前記第1の解析ステップは、2つの直交す る軸を有し双方向の終端されたeXグラフを生じ、一方の軸は論理条件のゼロ・ ポテンシャルを表し、他方の軸は論理条件の1ポテンシャルを表し、前記2つの 軸の座標対で記録された要素はその要素を一意的に識別するバイナリ・アドレス によって表されることを特徴とする方法。 5.請求項1記載の方法において、 前記目標プロセスの要素の間の潜在的な依存性を識別するステップであって、 前記潜在的な依存性は前記目標プロセスの要素が前記目標プロセスの別の要素か らアクセス可能であるかどうかを確認することによって決定される、ステップを 更に含むことを特徴とする方法。 6.請求項5記載の方法において、 前記目標プロセス内に含まれるデータ独立なエンドレス・テープを識別するス テップを更に含むことを特徴とする方法。 7.請求項3記載の方法において、 目標ソフトウェア・プロセスのイベントの効果の正しさに関する記録された基 本知識を、知識伝搬ターミナルに至るアンセスタに伝搬するステップを更に含む ことを特徴とする方法。 8.請求項1記載の方法において、 前記モデルの実行の間に複数の音声トーンを発生するステップであって、前記 複数のトーンの中の1つのトーンはあるプロセス要素の実行の間に発生され、前 記複数のトーンの中の別のトーンは別のプロセス要素の実行の間に発生され、そ れによって、前記モデルが各個別のプロセス要素を介して実行される際にトーン の連続的な出力を生じるようにするステップを更に含むことを特徴とする方法。 10.請求項1記載の方法において、前記モデルの実行は、前記目標プロセス の実行と共にシーケンシャルに行われることを特徴とする方法。 11.請求項1記載の方法において、前記モデルの実行は、前記目標プロセス の実行とパラレルに行われることを特徴とする方法。 12.請求項5記載の方法において、 前記要素のバイナリ・アドレスを比較することによってプロセス要素のビジョ ンを識別するステップを更に含み、ある要素の前記バイナリ・アドレスは、前記 目標プロセスの論理解を表す2進数から構成されることを特徴とする方法。 13.プロセッサとメモリと入力/出力とを有し、目標ソフトウェア・プロセ スを解析する知識帰納装置において、 前記目標ソフトウェア・プロセスの制御成分を有し、前記知識帰納装置の前記 メモリに含まれるモデルと、 前記目標ソフトウェア・プロセスの非制御成分を有し、前記知識帰納装置の前 記メモリに含まれるリポジトリと、 前記知識帰納装置のメモリの中に含まれる解析機関と、 前記知識帰納装置のメモリの中に含まれるシステムの実行履歴と、 システム入力プロセス同期化マップを有し、前記知識帰納装置の前記メモリに 含まれるシステム入力履歴と、 増加システム出力プロセス・マップを有し、前記知識帰納装置の前記メモリに 含まれるシステム結果履歴と、 前記知識帰納装置の前記メモリの中に含まれ、前記目標プロセスを前記解析機 関とインターフェースし、メモリの中に前記システム実行履歴と前記システム入 力履歴と前記システム結果履歴とを構成するexインターフェースと、 前記知識帰納装置の前記メモリの中に含まれる増加画像エクストラクタ/コン ストラクタであって、以前のスクリーン画像を現在のスクリーン画像と比較し、 前記以前の画像と異なる前記現在の画像の部分を抽出(エクストラクト)し、そ のように抽出された該画像部分を、複数のプロセス同期化パラメータを用いて、 前記システムの結果履歴の中に配置する、増加画像エクストラクタ/コンストラ クタと、 前記知識帰納装置の前記メモリの中に含まれた解析計算ベースであって、複数 の解析計算ワードを含み、前記目標プロセスのステートメント内の各パラメータ に対して1つの解析計算ワードがあり、各解析計算ワードは制御領域と情報領域 とを含み、前記情報領域は異なる時刻において目標ソフトウェア・プロセスのス テートメント・パラメータのイベントの効果の正しさに関する知識を示す一連の インジケータを含み、前記制御領域はイベントの効果の正しさに関する知識を有 さない前記情報領域において表される第1のイベント・インジケータを定義する 値を含む、解析計算ベースと、を含み、 前記目標ソフトウェア・プロセスは、複数の同期信号を、前記システム実行履 歴とシステム入力履歴とシステム結果履歴とを構築するexインターフェースに 送り、前記解析機関を開始させ、該解析機関は、リポジトリを調べる間に前記モ デルを実行し、前記解析計算ベースを構成する知識機能プロセスを開始させるこ とを特徴とする知識帰納装置。 14.プロセッサとメモリと入力/出力とを有し、目標ソフトウェア・プロセ スを解析する知識帰納装置において、 前記目標ソフトウェア・プロセスの制御成分を有し、前記知識帰納装置の前記 メモリに含まれるモデルと、 前記目標ソフトウェア・プロセスの非制御成分を有し、前記知識帰納装置の前 記メモリに含まれるリポジトリと、 前記知識帰納装置のメモリの中に含まれる解析機関と、 前記知識帰納装置のメモリの中に含まれるシステムの実行履歴と、 システム入力プロセス同期化マップを有し、前記知識帰納装置の前記メモリに 含まれるシステム入力履歴と、 増加システム出力プロセス・マップを有し、前記知識帰納装置の前記メモリに 含まれるシステム結果履歴と、 前記知識帰納装置の前記メモリの中に含まれ、前記目標プロセスを前記解析機 関とインターフェースし、メモリの中に前記システム実行履歴と前記システム入 力履歴と前記システム結果履歴とを構成するexインターフェースと、 前記知識帰納装置の前記メモリの中に含まれる言語インタープリタと、 前記知識帰納装置の前記メモリの中に含まれるドライバと、 前記知識帰納装置の前記メモリの中に含まれる増加画像エクストラクタ/コン ストラクタであって、以前のスクリーン画像を現在のスクリーン画像と比較し、 前記以前の画像と異なる前記現在の画像の部分を抽出(エクストラクト)し、そ のように抽出された該画像部分を、複数のプロセス同期化パラメータを用いて、 前記システムの結果履歴の中に配置する、増加画像エクストラクタ/コンストラ クタと、 前記知識帰納装置の前記メモリの中に含まれた解析計算ベースであって、複数 の解析計算ワードを含み、前記目標プロセスのステートメント内の各パラメータ に対して1つの解析計算ワードがあり、各解析計算ワードは制御領域と情報領域 とを含み、前記情報領域は異なる時刻において目標ソフトウェア・プロセスのス テートメント・パラメータのイベントの効果の正しさに関する知識を示す一連の インジケータを含み、前記制御領域はイベントの効果の正しさに関する知識を有 さない前記情報領域において表される第1のイベント・インジケータを定義する 値を含む、解析計算ベースと、を含み、 前記ドライバは、前記モデルを実行し、前記リポジトリから対応する成分を抽 出し、前記成分を前記成分が解釈される前記言語インタープリタに与え、前記ド ライバは、複数の同期信号を前記exインターフェースに更に送り、前記exイ ンターフェースは、前記システム実行履歴とシステム入力履歴とシステム結果履 歴とを構築し、リポジトリを調べる前記解析機関を開始させ、前記解析計算ベー スを構成する知識機能プロセスを開始させることを特徴とする知識帰納装置。 15.プロセッサとメモリと入力/出力とを有し、目標ソフトウェア・プロセ スを解析する知識帰納装置において、 前記目標ソフトウェア・プロセスの制御成分を有し、前記知識帰納装置の前記 メモリに含まれるモデルと、 前記目標ソフトウェア・プロセスの非制御成分を有し、前記知識帰納装置の前 記メモリに含まれるリポジトリと、 前記知識帰納装置のメモリの中に含まれる解析機関と、 前記知識帰納装置のメモリの中に含まれるシステムの実行履歴と、 システム入力プロセス同期化マップを有し、前記知識帰納装置の前記メモリに 含まれるシステム入力履歴と、 増加システム出力プロセス・マップを有し、前記知識帰納装置の前記メモリに 含まれるシステム結果履歴と、 前記知識帰納装置の前記メモリの中に含まれ、前記目標プロセスを前記解析機 関とインターフェースし、メモリの中に前記システム実行履歴と前記システム入 力履歴と前記システム結果履歴とを構成するexインターフェースと、 前記知識帰納装置の前記メモリの中に含まれるドライバと、 前記知識帰納装置の前記メモリの中に含まれるexオブジェクト・コードと、 前記知識帰納装置の前記メモリの中に含まれる増加画像エクストラクタ/コン ストラクタであって、以前のスクリーン画像を現在のスクリーン画像と比較し、 前記以前の画像と異なる前記現在の画像の部分を抽出(エクストラクト)し、そ のように抽出された該画像部分を、複数のプロセス同期化パラメータを用いて、 前記システムの結果履歴の中に配置する、増加画像エクストラクタ/コンストラ クタと、 前記知識帰納装置の前記メモリの中に含まれた解析計算ベースであって、複数 の解析計算ワードを含み、前記目標プロセスのステートメント内の各パラメータ に対して1つの解析計算ワードがあり、各解析計算ワードは制御領域と情報領域 とを含み、前記情報領域は異なる時刻において目標ソフトウェア・プロセスのス テートメント・パラメータのイベントの効果の正しさに関する知識を示す一連の インジケータを含み、前記制御領域はイベントの効果の正しさに関する知識を有 さない前記情報領域において表される第1のイベント・インジケータを定義する 値を含む、解析計算ベースと、を含み、 前記exオブジェクト・コードは、目標プロセスのマシン・コードに翻訳され たリポジトリ・ステートメントを表し、前記ドライバは、前記モデルを実行し、 前記exオブジェクト・コードの対応する成分を抽出し、そのように抽出された 成分をコンピュータのオペレーティング・システムに実行のために与えることを 特徴とする知識帰納装置。』
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,GE,HU,JP,KG,KP,KR,KZ,LK ,LU,LV,MD,MG,MN,MW,NL,NO, NZ,PL,PT,RO,RU,SD,SE,SI,S K,TJ,TT,UA,US,UZ,VN (54)【発明の名称】 より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コー ドの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との 自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方 法 【要約の続き】 定義される「プロセス空間」と「プロセス時間」とによ る座標系における個々の要素の正しさ及び不確実性の相 対的で時間に独立な測定とを、構築する。本発明は、X PDマシンの「知識帰納」及び「知識演繹」プロセス と、ユーザと目標プロセスに関する集積された知識との 間の非常に高レベルのインターフェースに対するメカニ ズムとを導入する。また、その診断のための別の媒体と して、目標プロセスの行動の音声的な提供も行われる。 本明細書で提供された「XPDオブジェクト・コード」 は、その目標プロセスのメンテナンスだけでなく、静的 及び動的に、その目標プロセスの解析するのに適してい る。これによれば、修正のための目標プロセスの再コン パイルと再リンケージとが短縮され、時には除去され る。

Claims (1)

  1. 【特許請求の範囲】 1.目標プロセスのアルゴリズムを、「次に最も低いポテンシャル」の規則に よって又は代替的に「次に最も高いポテンシャル」の規則によって構築された単 一定義の汎用形式であるアルゴリズムのXPDフレームの中に抽出する方法にお いて、 プロセス要素のアルゴリズム・ポテンシャルは、そのバイナリ・アドレス(B A)によって判断され、該バイナリ・アドレスは、バイナリ0とバイナリ1との 組み合わせであり、また、その要素を通過するtパスの入力部分における「縮小 論理条件」(縮小LC)の解であり、 tパスは、「プロセス・ターミナル」へのプロセス・エントリからのパスであ り、 LCの負の解(NO解)には「ロー・ポテンシャル」又は「0ポテンシャル」 が割り当てられてられ、LCの正の解(YES解)には「ハイ・ポテンシャル」 又は「1ポテンシャル」が割り当てられてられており、 目標プロセスから「メイン・ブランチ」を抽出するステップと、 2よりも多くの出力を有する論理条件(LC)を、2だけの論理出力を有する 2又はそれよりも多くの縮小LCに縮小するステップと、 メイン・ブランチを構築するプロセスにおいて、前向きのGO TOを除去す るステップと、 「プロセス・ターミナル」を、ターゲット・プロセスを終了する「出口ターミ ナル」と、より低いバイナリ・アドレスと共にプロセス・セグメントにおいて既 に表されているプロセス要素に制御を戻す「リワインド・ターミナル」として、 識別するステップと、 プロセス・セグメントを識別するステップと、 2つの異なるバイナリ・アドレスの間の関係を数量化するステップと、 を含むことを特徴とする方法。 2.目標プロセスのアルゴリズムを「双方向に終了した」XPDグラフに抽出 する請求項1記載の方法において、 XPDグラフは、2だけの方向に構築され、その第1の方向はLCの0ポテン シャルによって定義され、別の方向はLCの1ポテンシャルによって定義され、 XPDグラフの各要素には、その要素の「プロセス・ポテンシャル」を記述す る「バイナリ・アドレス」(BA)が割り当てられることを特徴とする方法。 3.目標プロセスのXPDグラフの要素の間のアクセス可能性を識別すること を介して、目標プロセス要素の間の「潜在的(ポテンシャル)な依存性」を識別 する方法において、 (a)論理条件のフィールドを識別するステップと、 (b)XPDグラフの「セグメント」の論理レベルを識別するステップと、 (c)プロセス要素のアルゴリズム・アドレス(AA)とプロセス・アドレス (PA)とを識別するステップと、 (d)プロセスのアルゴリズム空間を識別するステップと、 (e)プロセス要素の「ビジョン」とプロセス・ターミナルの「共通のビジョ ン」とを識別することを介して、プロセス要素のアクセス・フィールドを識別す るステップと、 (f)プロセス・ターミナルの共通ビジョンを伝搬する方法と、 を含むことを特徴とする方法。 4.請求項3の方法において、プロセス要素のアクセス可能性を識別するステ ップは、各プロセス・ターミナルに対する出口アクセス・インジケータを識別す ることによってデータ独立なエンドレス・ループを識別するのに用いられ、 出口アクセス・インジケータは、ターミナルの共通ビジョンを伝搬するプロセ スの間にオフからオン状態へ潜在的に伝搬されることを特徴とする方法。 5.請求項2のプロセスを実行する間に目標プロセスのXPDリポジトリを構 築する方法において、XPDリポジトリはターゲット・プロセスの表現であって 、この表現は、プロセス制御命令を全く含まず、XPDリポジトリの各実行可能 なステートメントには、XPDグラフの対応する要素への参照が割り当てられる ことを特徴とする方法。 6.属性をXPDグラフ要素に割り当てることによってXPDモデルを構築す る方法において、ターゲット・プロセスの実行可能なステートメントに対応する 要素には、「局所時間(ローカル・タイム)」の動的に更新された属性と、「解 析された計算ベース」(ACB)の属性とが割り当てられており、 「局所時間」は、目標プロセスにおけるプロセス要素の現在の発生(curr ent occurrence)を表す整数であり、 「ACB」は、対応するプロセス・イベントに関する正しさと不確実性につい ての知識の状態に対応する0と1とのバイナリ構造であり、イベントの正しさに 関する知識の状態は、アルゴリズム空間における局所時間とプロセス・アドレス とに相対的であり、知識の状態は、XPDマシン・プロセスによる変化を被るこ とを特徴とする方法。 7.リエンジニアリングされXPDインターフェース・モジュールへのインタ ーフェースが実現されている元の目標プロセスの機能に関するビジョンにおいて 同等であるターゲット・プロセスのXソース・コードを構築する方法において、 (a)目標プロセスのターミナルにおいて、同期化信号を、目標プロセスの行 動履歴を記録するための最小のオーバヘッド実現(instrumentati on)として実現するステップと、 (b)目標プロセスのシステム出力要素において同期化信号を実現し、増加シ ステム出力プロセス同期化(ISOP)マップを構築する手段によって、ユーザ と目標プロセスの機能を理解するXPDマシンのプロセスとの間に非常に高レベ ルのインターフェースを構築するステップと、 (c)目標プロセスのシステム入力要素において同期化信号を実現し、システ ム入力プロセス同期化(SIPS)マップを構築するステップと、 を含むことを特徴とする方法。 8.目標プロセスの基本知識を、基本プロセスすなわち目標プロセス内の実行 ステートメントを、その実行の特定のイベントにおいてすなわち前記目標プロセ スにおける場所と時間とであるプロセス時間において正しい又は不確実であると 識別することによって、構成する方法。 9.目標プロセスにおける実行可能なステートメントである基本プロセスを、 その実行の特定のイベントにおいて、すなわち、目標プロセスの中の位置と時間 である「プロセス時間」において、正しい又は不確実であると識別することによ っ て、目標プロセスの基本知識を帰納する方法において、 (a)プロセス・イベントとプロセス時間とを識別するステップと、 (b)システム出力プロセスイベントによって「知識伝搬」プロセスを付勢す るステップと、 (c)システム出力イベントを、将来のシステム出力結果確認の間に又は新た なシステム要求に起因して「予測されていない」又は「不確実」と定義されない 限り、又は定義されるまでは、「正しい」と識別するステップと、 (d)特定のプロセス時間にたいして、「正しいプロセス・アドレス(CPA )」と「不確実なプロセス・アドレス(UPA)」とを識別するステップと、 (e)「アンセスタ」(ancestor)イベントを、現在のイベントの値 である「値アンセスタ・イベント」に寄与する、又は、現在のイベントに至るL Cの値である「制御アンセスタ・イベント」に寄与するイベントとして、識別す るステップと、を含み、 (f)イベントを承認するプロセスはその直前のアンセスタを、その直前のア ンセスタが(1)既に承認されていない、又は(1)不存在でない場合に、更に ある場合には、イベントが「知識伝搬ターミナル・イベント」を表す(1)及び (2)を有するデータ操作イベントである場合に、承認する二次的なプロセスを 発生し、 (g)「知識伝搬ターミナル」を現在のプロセスへの入力であるイベントとし て、又は、その基本知識の状態がこの請求項において先に定義された知識帰納プ ロセスによって「正しい」と現時点で定義されているイベントとして、識別する ステップと、 を含むことを特徴とする方法。 10.伝統的なオブジェクト・コードによって実現された目標プロセスに対し て「疑似パラレル」であるXPDモデルを、「遅延シーケンシャル」な又は「遅 延パラレル」のどちらかのXPDモデル実行モデルとして実行する方法において 、 XPDモデルの実行は、目標プロセスの実行経路に従って、XPDグラフをト レースするプロセスであり、 「XPDモデルの遅延したシーケンシャルな実行」は、2つのタスクの間で切 り換わる複数のCPUの中の1つであるCPUによって実現され、一方のタスク は、目標プロセスの実行セグメントであり、他方のタスクは、XPD解析機関に よるそのプロセスのXPDモデル上で第1のタスクをモデル化することであり、 このXPD解析機関は、XPDオブジェクト集合であるプロセス・エントリと システム入力(同期化{ide,m})とプロセス・ターミナル(同期化{id t,m})との要素の間に位置する目標プロセスの一部として定義され、 「XPDモデルの遅延したシーケンシャルな実行」は、複数のCPUによって 実現され、目標プロセスの実行セグメントのタスクとXPD解析機関による前に 実行された実行セグメントのモデル化のタスクとは、パラレルに行われることを 特徴とする方法。 11.XPDオブジェクト・コードの実行によって目標プロセスを実行する方 法において、 請求項7に記載されたXソース・コードを生じてコンパイルするステップは除 去され、 XPDオブジェクト・コードは、(1)どのプロセス制御コマンドも含まない マシン・コードXPDリポジトリ・ステートメントに翻訳される実行可能な成分 と、(2)目標プロセスのXPDグラフである制御成分との2つの成分の組み合 わせであり、 XPDオブジェクト・コードのどの実行可能な成分ステートメントが次に実行 されるべきかという判断は、XPDオブジェクト・コードの制御成分であるXP Dグラフを解析(parse)する間にXPDドライバによって確立され、この プロセスは、実際には、目標プロセスのXPDモデルを実行し、よって、請求項 10に記載されているXPDモデルの疑似パラレルな実行の必要性を除去するこ とを特徴とする方法。 12.XPDグラフとXPDリポジトリとを解釈することによって、請求項7 記載のXソース・コードを生じコンパイルするステップを除去する方法において 、 目標プロセスは、どのプロセス制御ステートメントも含まないプロセスのXP Dリポジトリから一度にステートメントを、言語インタープリタによって、解釈 することによって実行され、 どのリポジトリ・ステートメントが次に実行されるべきかという判断は、目標 プロセスのXPDグラフを解析(parse)する間にXPDドライバによって なされ、このプロセスは、実際には、目標プロセスのXPDモデルを実行し、よ って、請求項10に記載されているXPDモデルの疑似パラレルな実行の必要性 を除去することを特徴とする方法。 13.XPDモデルの実行の間にXPD解析機関によって付勢され、請求項1 0の伝統的なオブジェクト・コード実現において疑似パラレルな実行によって実 行され、又は、請求項12のXPDグラフ及びXPDリポジトリを又はXPDオ ブジェクト・コードの一部として解釈することによって、プロセスを知識帰納す る方法において、 知識帰納プロセスは、XPD解析機関がシステム出力に向けられたW要素を通 過する際に開始され、 請求項9に記載された原理による知識を伝搬するXPD解析機関は、W出力信 号の各パラメータにおいて開始されることを特徴とする方法。 14.システム出力イベントへの参照を介して、一定に減少する不確実性をも って、知識演繹プロセスを付勢する方法において、 増加システム出力プロセス同期化マップであるISOPSマップから再生され たシステム出力上で、カーソル、マウス又はそれ以外のポインティング・デバイ スの位置を介して対応するシステム出力イベントを識別するステップと、 許容された修正のための場所は、対応するシステム出力のイベント定義空間の 一部により決定され、この空間は、UPAの状態を有するプロセス・アドレス( PA)上に構築され、参照されたシステム出力イベントに対応するプロセス時間 における不確実なプロセス・アドレスであり、 イベント定義空間は、対応するシステム出力イベントへのアンセスタのプロセ ス・アドレスの組み合わせであり、 任意の方向への知識演繹プロセスは、請求項9記載の知識伝搬ターミナルと同 じ定義を有する知識演繹ターミナルによって終了されることを特徴とする方法。 15.請求項10、請求項11、又は請求項12に記載され、その試験又は生 産の任意の段階におけるコンピュータ・プロセスに応用されるXPDモデルの実 行方法において、XPDマシン・プロセスは、目標となるコンピュータ・プロセ スの実行と共に実行され、 請求項10記載の伝統的なオブジェクト・コード実現において、XPDモデル の目標プロセス実行に疑似パラレルなプロセス、又は、 請求項11記載のXPDオブジェクト・コードの制御成分としての、及び、X PDドライバによる目標プロセス実行の一部としてのXPDモデルの実行、又は 、 XPDドライバによってXPDモデルとXPDリポジトリとを解釈するプロセ スの間にXPDモデルを実行すること、 請求項9記載の知識伝搬ターミナルまでの目標プロセス要素の間でこの知識を 伝搬することによって、システム出力イベントにより付勢される「基本知識帰納 」と、 請求項14記載の目標プロセスのXPDモデルにおいて不確実性の領域を定義 する「知識演繹」プロセスと、 を特徴とする方法。 16.XPDオブジェクト・コードの1又は2の成分における限定された修正 によるXPDオブジェクト・コードにより実現される目標プロセスへの修正の方 法において、 XPDオブジェクト・コードの実行可能な成分の新たに作成された又は修正さ れたステートメントだけをコンパイルし、再コンパイルし、又は解釈するステッ プと、 新たに作成されたXPDリポジトリ要素に対応するXPDグラフ要素への挿入 、削除、又は修正によって潜在的に再び配列されたXPDオブジェクト・コード の制御要素と、 XPDグラフにおける要素の順序を単に再び配列することによって、すなわち 、XPDオブジェクト・コードの制御要素を再び配列することによって、実行可 能な成分へのどのような変更もなく、XPDオブジェクト・コードへの修正がな さ れ、 制御成分要素を消勢することによって、したがって、実行可能な成分の対応す る要素をバイパスすることによって、ある状況においてXPDオブジェクト・コ ードへの修正がなされることを特徴とする方法。 17.XPDオブジェクト・コードの制御成分だけのリンケージによってXP Dオブジェクト・コードによって実現された2またはそれより多くの目標プロセ スのグループをリンク又は再リンクする方法において、制御及び実行可能なXP Dオブジェクト・コード成分の間のリンクの解消は実行時間(run time )に実現されることを特徴とする方法。 18.XPDオブジェクト・コードによって表される目標プロセスへの修正を 実現する方法において、再リンケージは行われず、再コンパイルのステップはX PD解析機関により行われるXPDオブジェクト・コードの自動的な修正によっ て除去され、 呼び出されたプロセスへの外部的な参照は、実行時間に解消され、予めリンク されたプロセスはなく、よって、DLLは、それに対してXPDモデルとXPD リポジトリとが構築されたただ1つのプロセスから成り、 新たなXPDリポジトリ・ステートメントが付加されるべき場合には、それは 、現在のプロセスの実行可能な成分要素にたいして既に存在するものから選択さ れ、実行可能な成分において見つからない場合には、制御成分の対応する要素に よって付勢される際に解釈され、 XPDオブジェクト・コードの制御成分は、XPD解析機関によって自動的に 編集されることを特徴とする方法。 19.非常に高レベルのインターフェースを介して、また、プロセスのソース ・コードへのマニュアルでの相互作用なく、先に作成されたプロセスを修正する 、又は、その上への構築を可能にする結果指向プログラミング(ROP)の方法 において、 ユーザ・インターフェースは、請求項14記載の方法によるSYSOUTイベ ントへの参照能力により既存のシステムの結果への参照に限定されており、 付加又は修正は、参照されたSYSOUTイベントのイベント定義を再び使用 するXPDマシン・プロセスによって自動的になされることを特徴とする方法。 20.目標プロセスの音声的な解析を可能にする「プログラム・ステトスコー プ」を実現する方法において、 そのXPDグラフのアルゴリズム空間におけるXPDグラフの各要素の位置で あって、この位置は、その要素の{k,b}座標によって定義され、それ自体の 音声周波数を割り当たられ、この周波数は、k座標の増加に伴って徐々に増加し 、b座標の増加に伴ってたとえば、1オクターブだけの大きなステップで増加す る、位置と、 目標プロセスの実際の実行行動に対応する音声信号は、XPDモデルの疑似パ ラレルな実行によるXPDグラフのトレースの間、又は、XPDドライバによる XPDオブジェクト・コードの実行の間に、発生され、 たとえばX要素だけすなわちCALLステートメント要素であるXPDのオブ ジェクト・コードの潜在的に選択されただけの要素は、音声信号を生じるように 設定され、したがって、CALLレベルだけに基づいて、又は、I/Oレベルだ けに基づいて、又はその他の音声的な解析を可能にし、 音声信号のベース周波数に異なる高周波を加えることによって異なるトーン品 質の音声信号を発生させ、各タイプにそれ自体のトーン品質が割り当てられてい るXPDオブジェクト・コードにおいてアクティブな要素のタイプを区別する方 法と、 内部的なスピーカ又はヘッドフォンなどの外部的な音声デバイスを、プログラ ム・ステトスコープ方法による目標プロセスの解析の間に用いるステップと、 を含むことを特徴とする方法。
JP6525644A 1993-05-10 1994-05-10 より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法 Pending JPH09502034A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5920893A 1993-05-10 1993-05-10
US059,208 1993-05-10
PCT/US1994/005182 WO1994027213A2 (en) 1993-05-10 1994-05-10 Method for minimizing uncertainty in computer software processes allowing for automatic identification of faults locations and locations for modifications due to new system requirements with introduction of an alternative form of the target process object code allowing for less recompilation and re-linkage processing

Publications (1)

Publication Number Publication Date
JPH09502034A true JPH09502034A (ja) 1997-02-25

Family

ID=22021495

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6525644A Pending JPH09502034A (ja) 1993-05-10 1994-05-10 より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法

Country Status (10)

Country Link
US (1) US5522036A (ja)
EP (1) EP0699320B1 (ja)
JP (1) JPH09502034A (ja)
CN (1) CN1125990A (ja)
AT (1) ATE245836T1 (ja)
AU (1) AU682869B2 (ja)
CA (1) CA2162020C (ja)
DE (1) DE69432974T2 (ja)
SG (1) SG63616A1 (ja)
WO (1) WO1994027213A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009540464A (ja) * 2006-06-13 2009-11-19 マイクロソフト コーポレーション 反復的な静的および動的ソフトウェア分析

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822592A (en) * 1994-06-28 1998-10-13 Us West Technologies, Inc. Method and system for determining source code location
US5699507A (en) * 1995-01-17 1997-12-16 Lucent Technologies Inc. Method of identifying similarities in code segments
US5606699A (en) * 1995-04-28 1997-02-25 International Business Machines Corporation Storing and querying execution information for object-oriented programs
US5748878A (en) * 1995-09-11 1998-05-05 Applied Microsystems, Inc. Method and apparatus for analyzing software executed in embedded systems
US6088452A (en) * 1996-03-07 2000-07-11 Northern Telecom Limited Encoding technique for software and hardware
US5950009A (en) * 1997-03-10 1999-09-07 International Business Machines Coporation Method and apparatus for profile-based reordering of program portions in a computer program
US6029004A (en) * 1997-03-17 2000-02-22 International Business Machines Corporation Method and apparatus for modular reordering of portions of a computer program based on profile data
US5926622A (en) * 1997-03-18 1999-07-20 Lucent Technologies Inc. Efficient regression verification
US5960198A (en) * 1997-03-19 1999-09-28 International Business Machines Corporation Software profiler with runtime control to enable and disable instrumented executable
US6026234A (en) * 1997-03-19 2000-02-15 International Business Machines Corporation Method and apparatus for profiling indirect procedure calls in a computer program
US5911073A (en) * 1997-12-23 1999-06-08 Hewlett-Packard Company Method and apparatus for dynamic process monitoring through an ancillary control code system
US6189141B1 (en) 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6148437A (en) * 1998-05-04 2000-11-14 Hewlett-Packard Company System and method for jump-evaluated trace designation
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6415396B1 (en) * 1999-03-26 2002-07-02 Lucent Technologies Inc. Automatic generation and maintenance of regression test cases from requirements
US6769073B1 (en) * 1999-04-06 2004-07-27 Benjamin V. Shapiro Method and apparatus for building an operating environment capable of degree of software fault tolerance
US6651244B1 (en) * 1999-07-26 2003-11-18 Cisco Technology, Inc. System and method for determining program complexity
US6973417B1 (en) 1999-11-05 2005-12-06 Metrowerks Corporation Method and system for simulating execution of a target program in a simulated target system
US6718485B1 (en) * 1999-11-16 2004-04-06 Parasoft Corporation Software emulating hardware for analyzing memory references of a computer program
JP2001249828A (ja) * 1999-12-28 2001-09-14 Toshiba Lsi System Support Kk 情報処理装置、不具合解析プログラムを格納したコンピュータ読み取り可能な記憶媒体、不具合解析方法、及びアプリケーションプログラム開発支援システム
US6785848B1 (en) * 2000-05-15 2004-08-31 Microsoft Corporation Method and system for categorizing failures of a program module
US6665824B1 (en) * 2000-05-15 2003-12-16 Microsoft Corporation System and method for handling a failure reporting conversation
US6948127B1 (en) * 2001-12-10 2005-09-20 Cisco Technology, Inc. Interface for compressed video data analysis
US7096339B2 (en) * 2003-03-01 2006-08-22 International Business Machines Corporation System and method for detecting memory management programming errors
US20050108562A1 (en) * 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7322027B2 (en) * 2003-06-27 2008-01-22 Microsoft Corporation Detecting termination and providing information related to termination of a computer system process
CN101694643B (zh) * 2003-09-30 2012-10-10 明导公司 使用一个或多个自动机的系统验证
US7296256B2 (en) * 2003-10-20 2007-11-13 International Business Machines Corporation Method and apparatus for automatic modeling building using inference for IT systems
US7581211B2 (en) * 2004-07-14 2009-08-25 International Business Machines Corporation Method and apparatus for on demand debugging, tracing, and logging of applications
US7962497B2 (en) * 2005-02-18 2011-06-14 Microsoft Corporation Relationship modeling
US8312415B2 (en) * 2007-04-17 2012-11-13 Microsoft Corporation Using code analysis for requirements management
US20080306986A1 (en) * 2007-06-08 2008-12-11 Accenture Global Services Gmbh Migration of Legacy Applications
US20080307397A1 (en) * 2007-06-08 2008-12-11 Bill Angell Program Analysis by Partial Emulation
US8219975B2 (en) * 2007-10-26 2012-07-10 Microsoft Corporation Real-time analysis of performance data of a video game
RU2458386C1 (ru) * 2011-04-07 2012-08-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ определения ошибочного использования памяти
US9015831B2 (en) * 2012-08-08 2015-04-21 Synopsys, Inc Method and apparatus for static taint analysis of computer program code
US20140130015A1 (en) 2012-11-06 2014-05-08 International Business Machines Corporation Hybrid Program Analysis
JP6070847B2 (ja) * 2013-08-09 2017-02-01 富士通株式会社 検証方法、検証装置および検証プログラム
WO2017200942A1 (en) * 2016-05-15 2017-11-23 John Steven Systems and methods for model-based analysis of software
CN107832209A (zh) * 2017-10-26 2018-03-23 北京邮电大学 一种基于混合检测结果的Android应用行为分析方法
US11599407B2 (en) * 2018-09-27 2023-03-07 Siemens Healthcare Diagnostics Inc. Method for deterministically reporting cause and effect in software systems

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720778A (en) * 1985-01-31 1988-01-19 Hewlett Packard Company Software debugging analyzer
DE3577760D1 (de) * 1985-12-30 1990-06-21 Ibm Deutschland Verfahren und einrichtung zur analyse von steuerprogrammen.
JPS62166444A (ja) * 1986-01-20 1987-07-22 Mitsubishi Electric Corp プログラムデバツグ装置
JPH02118852A (ja) * 1988-10-28 1990-05-07 Nec Eng Ltd 高級言語のデバッグの簡易化方式
US5297150A (en) * 1992-06-17 1994-03-22 International Business Machines Corporation Rule-based method for testing of programming segments

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009540464A (ja) * 2006-06-13 2009-11-19 マイクロソフト コーポレーション 反復的な静的および動的ソフトウェア分析

Also Published As

Publication number Publication date
DE69432974T2 (de) 2004-05-27
CA2162020A1 (en) 1994-11-24
DE69432974D1 (de) 2003-08-28
CN1125990A (zh) 1996-07-03
ATE245836T1 (de) 2003-08-15
EP0699320B1 (en) 2003-07-23
US5522036A (en) 1996-05-28
EP0699320A1 (en) 1996-03-06
WO1994027213A2 (en) 1994-11-24
EP0699320A4 (en) 1997-02-12
WO1994027213A3 (en) 1995-01-05
AU6829894A (en) 1994-12-12
AU682869B2 (en) 1997-10-23
SG63616A1 (en) 1999-03-30
CA2162020C (en) 2000-08-01

Similar Documents

Publication Publication Date Title
JPH09502034A (ja) より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法
Uchitel et al. Synthesis of behavioral models from scenarios
Tobin-Hochstadt et al. Migratory typing: Ten years later
Mussa et al. A survey of model-driven testing techniques
CN112133146A (zh) 一种算法练习代码执行可视化系统
Gruhn et al. A heuristic method for detecting problems in business process models
Baker et al. Detect, fix, and verify TensorFlow API misuses
Ortin et al. Design patterns for teaching type checking in a compiler construction course
Zeller The future of programming environments: Integration, synergy, and assistance
Calzolai et al. TAPAs: A tool for the analysis of process algebras
Khwaja et al. A property based specification formalism classification
CN114610322A (zh) 一种基于DevSecOps平台的软件处理方法与系统
Kratchanov Syntax and semantics for cinnamon programming
Westrup et al. Using the go programming language in practice
Ribeiro et al. A formal framework for the development of concurrent object-based systems
Eslamimehr The survey of model based testing and industrial tools
JP2882876B2 (ja) プログラム試験方法
Morell et al. Unit analysis and testing
Davis Embedding ACL2 models in end-user applications
Ooghe et al. An online C programming tutor
Schenk Development of a Java Debugger Framework Based on the Espresso VM and Its Compilation to JavaScript/Author Felix Schenk, BSc
Iman A Quantitative and Qualitative Empirical Evaluation of a Test Refactoring Tool
Steingartner et al. Enhancing Semantics Learning: A Dynamic Environment for Abstract Language Implementation Education
Oliveira Marum et al. Following the Writer’s Path to the Dynamically Coalescing Reactive Chains Design Pattern
Green Ьhe University of Reading Department of Computer Science

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041026

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050426

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050823