(57)【要約】【課題】従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換する方法、並びにそのためのプログラムを提供すること。【解決手段】本発明の方法は、従来法で記述された第１のプログラムから、前記第１のプログラムを普遍的にベクトル解析するためのアルゴリズムＡを構築し、前記アルゴリズムＡで解析される前記第１のプログラムの結果Ｒを得、前記Ｒから求められるＬｙｅｅ空間もしくは少なくともＬｙｅｅ空間の一部を得、前記得られたＬｙｅｅ空間もしくは少なくともその一部から、前記第１のプログラムについての完全系をシナリオ関数として生成する、ことを特徴とする。【選択図】図１
2020135404.tif 000002
【特許請求の範囲】
【請求項１】
従来法で記述された第１のプログラムから、前記第１のプログラムを普遍的にベクトル解析するためのアルゴリズムＡを構築し、
前記アルゴリズムＡで解析される前記第１のプログラムの結果Ｒを得、
前記Ｒから求められるＬｙｅｅ空間もしくは少なくともＬｙｅｅ空間の一部を得、
前記得られたＬｙｅｅ空間もしくは少なくともその一部から、前記第１のプログラムについての完全系をシナリオ関数として生成する、
ことを特徴とする、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換する方法。
【請求項２】
コンピュータを、
従来法で記述された第１のプログラムから、前記第１のプログラムを普遍的にベクトル解析するためのアルゴリズムＡを構築する手段と、
前記アルゴリズムＡで解析される前記第１のプログラムの結果Ｒを得る手段と、
前記Ｒから求められるＬｙｅｅ空間もしくは少なくともＬｙｅｅ空間の一部を得る手段と、
前記得られたＬｙｅｅ空間もしくは少なくともその一部から、前記第１のプログラムについての完全系をシナリオ関数として生成する手段と
として機能させることを特徴とする、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換する方法、並びにそのためのプログラムに関する。
【背景技術】
【０００２】
どれだけＯＳやパッケージが良く作られても、それだけでは利用者の要求を満たすことができない。ソフトにはユーザーが自前で開発しなければならない論理部分が必ず存在するからである。重要なことはその部分についてソフトの生産技術が適用されなければならないことである。即ち、生産技術とはソフトの短期開発、保守課題からの解放、上流仕様とプログラム仕様を連接する方法、プログラムの機能品質を保証する等の効果が発揮されるものでなければならない。
従来方法は要件機能を抽出してソフト化する機能分割法であるが、機能分割法から付加的なロジックが派生することは殆どの場で理解されていない。そして、この思考方法には基本的な欠陥があり、すべてのソフト課題はここから生じていると言っても過言でない。この問題を基本的に改善するにはこの思考方法に替わる新しい概念が必要である。
ソフトの生産保守性の非効率性はソフト構築の手段をソフトの特質を無視する機械機能的なパッケージ化に向かわせている。このソフト自体もまた非正解型であり、且つ、非生産的なままで開発並びに保守が行われているが、結果的に利用者の利用環境は次第に信頼性、可用性、適用性（ＲＡＳ）機能の局面で悪化の一途をたどっている。この時期必要なことは生産の為の基盤整備である。
この分野においては、生産技術の問題に手をつけずにいながら、即ち、プログラムの単位的な処理機能を品質的に管理する方法を持たず、上流だけで良質のソフトが決定できると主張するのである。異常と言わねばならない所以である。ソフトの生産方法は上流下流に分けて行われるような性質のものではなく、理論的に捉える所から始めなければならない。
本発明者は、このための理論を案出し、これをソフトウェアに応用したものを発明した。これをシナリオ関数と呼ぶ。シナリオ関数は将来に向けた新たな思考方法の基準を与えるものである。
したがって、本願に関連する背景技術は、本発明者によるもの以外には見当たらない。本願並びに特許文献１、２の背景に置かれる理論は、本願発明の基本となっている本発明者によるプログラムの同期構造に関する研究の成果が用いられているという理由で、特許文献１、２をここに掲げる。特許文献３は、今回出願の発明の背景となる理論は同じであるし、今回出願に係わるLYEE空間も主語系譜も登場する。しかし、今回出願の発明のLYEE空間や主語系譜の内容は特許文献３のそれらとは異なる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許５９９２０７９
【特許文献２】特許６０８６９７７
【特許文献３】特開２０１３−０５８１２７
【非特許文献】
【０００４】
【非特許文献１】根来文生著  コンピュータウィルスを無力化するプログラム革命。２０１４年１１月３日  日本地域社会研究所発行。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように、これまで、いわゆるソフトウェア産業といわれる世界においては、いわば無秩序、野放図に膨大なソフトウェア生産物が生産されてきた。これらは、本質的に、ソフトウェア生産生成されてきた。
これを解決するために、本発明者が発明したのがシナリオ関数と呼ばれるものである。ところで、これまでの、いわば無秩序、野放図に生成されてきた膨大なソフトウェア生産物、すなわち従来法により記述されたプログラムを、シナリオ関数に係るプログラムに片っ端から変換すれば、シナリオ関数の持つ完全性を獲得でき、その副産物として、バグゼロ、コンピュータウィルスを無効化する能力等、種々の効果を享受することが可能である。これによって、負の遺産として膨大に蓄積された、いわばバグ等を内蔵するソフトウェア生産物が一瞬にして正の生産物に生まれ変われることになる。
しかしながら、これまでは、従来法により記述されたプログラムをシナリオ関数に係るプログラムに変換するのに、人手によっていた。人手によるとなると、シナリオ関数を正確に学ぶ必要があることから、習熟するのに一定の時間・労力を必要とし、さらに、変換作業自体も膨大な時間・労力を要することになる。
そこで、本願は、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換する方法、並びにそのためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
かかる課題を解決するために、本願の一態様に係る、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換する方法は、従来法で記述された第１のプログラムから、前記第１のプログラムを普遍的にベクトル解析するためのアルゴリズムＡを構築し、前記アルゴリズムＡで解析される前記第１のプログラムの結果Ｒを得、前記Ｒから求められるＬｙｅｅ空間もしくは少なくともＬｙｅｅ空間の一部を得、前記得られたＬｙｅｅ空間もしくは少なくともその一部から、前記第１のプログラムについての完全系をシナリオ関数として生成することを特徴とする。
また、上記課題を解決するために、本願の別の態様に係る、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換するプログラムは、コンピュータを、従来法で記述された第１のプログラムから、前記第１のプログラムを普遍的にベクトル解析するためのアルゴリズムＡを構築する手段と、前記アルゴリズムＡで解析される前記第１のプログラムの結果Ｒを得る手段と、前記Ｒから求められるＬｙｅｅ空間もしくは少なくともＬｙｅｅ空間の一部を得る手段と、前記得られたＬｙｅｅ空間もしくは少なくともその一部から、前記第１のプログラムについての完全系をシナリオ関数として生成する手段と、として機能させることを特徴とする。
【０００７】
本明細書には本発明に特有な語が用いられている。その索引は段落番号００４２にあるので必要があれば参照されたい。
目次
１．プログラムテストの課題
２．プログラムで使用する名詞数の臨界数
【０００８】
１．プログラムテストの課題
自然法則を利用した物性的存在物であるコンピュータハードウェアと、プログラムが共生するシステムでは、共生機能をテスト用データを用いてプログラム検証が行われる。しかし、この半世紀に及ぶＩＴ分野のプログラム検証の結果、システムの完成度、プログラム保守作業の実情を見れば、このような検証方法ではプログラムに内在する課題（バグの起因）が完全に捉えられていないことは明かである。（「バグ」と「バグの起因」の定義については段落番号００１０参照。）そして、プログラム規模が大きくなるほど、この問題はソフト危機として深刻な問題に発展している。これは１９７０年代に始まる問題で、今日に至るも何も解法されていない状態にある。合わせて、ここ３０年近くは、この問題を直視できる関係者が育っていないことは、この分野の看過できない深刻な問題である。
【０００９】
２．プログラムで使用する名詞数の臨界数
プログラムとは、言い換えると、そのプログラムに属す全名詞（変数のことを本願では名詞と呼ぶ）、同全定数（「定値」と呼ぶ）、同全文字列（「定置」と呼ぶ）が総合的に織りなす脈絡（脈絡の意味については段落番号００１５参照。）を成立させることである。そのプログラムにおいて、全名詞数が或る値を超えるとその脈絡には曖昧さが生じる。これは、本発明人の４０年に及ぶプログラム構造の研究過程で捉えられた現象であるが、概略的にはプログラムで扱う名詞数が２００を超えると、ひとがプログラムの意図を律することが困難になるという現象である。これは観点を変えると、われわれの思考法の同期的限界を意味していた。同期とは、システム内の全ての名詞の値の関係が、矛盾のない依存関係（親子関係）になっている状態を言う。同期するプログラムを「正統なプログラム」という。正統なプログラムについては段落番号００１０参照。
【００１０】
本発明者の研究では、名詞のこの同期的限界数を「名詞数の臨界数」と称した。即ち、名詞の数が臨界数を超えるプログラムでは、正統なプログラムでない可能性があるということである。換言すれば、関係者達の誰もが自覚できないバグを生じさせる原因になっているという事である。このバグの起因はテストデータを用いて実行するプログラムテストでは発見できないのである。なぜならプログラムは実行できるし、結果の数値が想定外の突飛なものでない限り異常を感じないので発見する方法が無いのである。後述する「主語系譜」は、このバグの起因を捉えることが出来る様に作られた全名詞の同期脈絡構造の事である。
【００１１】
目次  段落番号
１．  プログラムテストの課題を解決するための本発明の概要  ００１０
２．  名詞数の臨界数    ００１３
３．  調和脈絡、超言語脈絡、主語系譜    ００１５
４．  ＬＹＥＥ空間    ００１９
４．１  LYEE空間の構成項目  ００２０
４．２  LYEE空間の作成方法    ００２１
４．３  LYEE空間の超言語座標の付与方法    ００２２
４．４  LYEE空間でバグの起因を捉える方法    ００２３
５．  主語系譜  ００２４
５．１  主語系譜の作成方法    ００２４
５．２  主語系譜においてバグの起因と実行エラーの発見法  ００２９
５．２．１  主語系譜からバグの起因を発見する方法  ００２９
５．２．２  バグの起因とそれが実行エラーかどうかの判定方法００３０
５．２．３  実行エラーとなるバグの起因とその発見方法  ００３２
５．３  従来はバグの定義は無かった    ００３６
６．  全脈絡に占める超言語脈絡の割合。保守によってプログラムはカオスとなる。００３７
７．本プログラムがテストデータを不要とするわけ  ００３８
８．特筆される本プログラムの特徴    ００３９
９．ＬＹＥＥ空間及び主語系譜が捉えるソースプログラムの欠陥とソースプログラムを紐付ける方法    ００４０
１０．バグの波及範囲    ００４１
１１．本明細書の語の索引    ００４２
【００１２】
１．  プログラムテストの課題を解決するための本発明の概要
完全性を持つプログラムを本研究では「正統なプログラム」と呼ぶ。正統なプログラムは「主語系譜」で観察することが出来る。
主語系譜とはプログラムに存在する全名詞、全定値、全定置を本研究でいう後述する「調和脈絡」、「超言語脈絡」と呼ぶ２種の規則で脈絡化したものである。
「完全性を持つプログラム」即ち「正統なプログラム」とは、主語系譜に於ける２種の規則による脈絡が、「バグの起因」を含まずに全て成立されている状態のプログラムのことである。
「バグの起因を含まないプログラム」とは、全名詞が同期している、即ち全名詞の値の関係が矛盾のない依存関係（親子関係）になっている状態であり、たとえば、名詞aの値が生成されるタイミングtにおいて関与する他の名詞bの値が有効・適切であるプログラムである。つまりタイミングtにおいては使われる名詞bの成立条件が既に変わっているのに、変わる前のタイミングt-nの成立条件下のbの値を使っているようなことが無いプログラムである。
【００１３】
ＬＹＥＥ空間は、テスト対象とするコンパイル済みプログラムのソースからコンピュータが構文解析して自動的に、またはそのプログラムの言語文法を修得済みのひとであれば導き出すことが出来る。ＬＹＥＥ空間ではプログラムソースの実相がＬＹＥＥ空間の構成項目に於いて捉えられる。そして、主語系譜ではＬＹＥＥ空間が捉えるプログラムソースの実相が、２種の規則（調和脈絡と超言語脈絡）で図式化され可視化されることにより、プログラムに属す名詞達の同期的様相が捉えられる。故に、プログラムソースが完全であれば、主語系譜の全脈絡はバグの起因を含まずに自ずと完結し、プログラムソースが完全でなければ、主語系譜を成立させる脈絡にはバグの起因となる名詞が現れる。これがバグを発症させる起因である。そして、この起因を基に主語系譜の脈絡を辿れば、この起因の影響を受ける名詞が判る。それら名詞がバグを発症させることになる。
因みにLYEE空間はシナリオ関数の研究過程で求められた。シナリオ関数については、特許文献１及び特許文献２を参照。それは命令処理の順序を人が決める必要が無く、且つ全名詞の値の同期を保証するプログラム手法である。
【００１４】
ＬＹＥＥ空間には、テストされるプログラムの記述言語の文法規則に従って、テストされるプログラムが構文解析によって図１−１乃至図１−４の表の項目に展開される。結果、ＬＹＥＥ空間では文法規則に反するプログラムが論理バグとして捉えられる。文法規則に反するとは、例えば、領域定義文が存在しない名詞が使われているソースである。
次に、このＬＹＥＥ空間を基に二つの規則（調和脈絡、超言語脈絡）で導かれる主語系譜では、プログラムに内在する上記論理バグ以外のバグの起因が捉えられる。
【００１５】
２．名詞数の臨界数
本研究によれば、プログラムに属す名詞（記憶領域の番地）の数が、われわれの統治能力の臨界数を超えると、われわれはそれら名詞を完全に統治するプログラムを作ることが困難になる。このことがプログラムに不完全性を生じさせる原因になっている。換言すれば、これがプログラムにバグを誘発させている真因である。
名詞の臨界数は、本発明者の４０年間余に及ぶプログラム構造論の研究期間の中で、継続的に行われた数百本に及ぶ様々な分野の従来プログラムの精密な分析調査で発見された現象である。因みに、ＬＹＥＥ空間及び主語系譜の構造理論は、この分析調査のツールとして用いられたものである。これらは、従来プログラムの未解決の３題問題、即ち、プログラムバグ問題、ウイルス問題、デッドロック問題の解法を自律的に成立させるプログラム構造（シナリオ関数）と共に、２００８年に確立されている。
【００１６】
名詞の臨界数はシステムの規模で様々に変わるが、目安として、名詞数が２００個を超えるとプログラム達に生じる不完全性の原因になる。その捉え方については後述の段落番号００２９乃至００３５参照。プログラムの完全性の理解がないまま、即ち、不完全なプログラムの全てのバグの起因を、これまでのテストデータを使用するテスト方法で抽出することは、原理的に成立はしない。故に、おぼろげに、従来プログラムに残存バグの起因が内在したまま稼働していることに気づく人がいるとしても、実際は棚上げされたままで完成とされている。これがＩＴ分野の嘆かわしい現実なのである。
【００１７】
３．調和脈絡、超言語脈絡、主語系譜
プログラムの脈絡には調和脈絡と超言語脈絡がある。調和脈絡とは、処理の流れ、即ち構文の処理の順序に沿って登場する個々の名詞、定値、定置文たちの関係である。例えば、ソースプログラムの中に下記の構文
if X>Y  
A=B+C
else
A=E+F
があったとする。この構文は、名詞X 及び名詞Yが係る条件下に置いて、真の場合に名詞A、B、Cの間に、また偽の場合に名詞A、E、Fの間に、特定の関係が成立していることを意味している。これを図示すると下図のようになる。これらの名詞達との関係を示す矢印線が脈絡である。条件文がない命令文の場合は単にその構文に含まれる名詞、定値、定置を含むブロックの前後に引かれる矢印線が脈絡となる。
脈絡図。
2020135404.tif 000003
この脈絡を構文の流れに沿って書き連ねた構造体が調和脈絡である。以下の図を参照されたい。この以下の図には条件偽が省略されている。
主語系譜図
2020135404.tif 000004
【００１８】
一方、超言語脈絡とは、同じ名詞の同期関係を捉える関係である。超言語脈絡とは同名の名詞を結んで関係付ける矢印線のことある。その名詞とは記憶領域の番地名を指している。記憶領域の番地名は領域定義文で定義されるので、超言語脈絡とは各名詞とその領域定義文を結んで関係付ける矢印線のことである。これを図示すると上図のようになる。太線が超言語脈絡である。上図には上記構文if X>Y  A=B+Cの直後に構文  D＝A＋Xが加えてある。
調和脈絡と超言語脈絡を合わせて主語系譜と言う。
主語系譜において調和脈絡と超言語脈絡及び構文を観察すると、
「各名詞がいつ、どこで、どのような名詞が係る条件下で、どのような名詞が係って、生成されたのか」
が一目で分かる。主語系譜によってプログラムの意味の可視化が出来るのである。
【００１９】
例えば、行番号１０３における名詞Dと関係のある名詞Aは、その超言語脈絡を辿りAの領域定義文を見ると、そこに調和脈絡の上で上流にある行番号１０２からの超言語脈絡が到達している。その超言語脈絡をたどると、行番号１０１において名詞Xと名詞Yが係っている条件下で、行番号１０２において名詞Bと名詞Cによって値が生成される名詞Aであることが分かる。つまりB 、C、Ｘ、Ｙが親でありＡが子である。このように主語系譜によって全ての名詞の親子の関係が明らかにされ、それら全ての名詞が連鎖して全体の系譜を形成する。そこでは全ての個々の名詞がどのような名詞が係って生成されるかが可視化できる。プログラムの可視化によって、各名詞（変数）が個々の成立要件に登場する名詞と合致し、且つ全ての名詞が正しい依存関係で連鎖して生成されているかどうかが分かるのである。
調和脈絡と超言語脈絡が完全に形成することが出来る状態を、「全名詞が同期している状態」という。完全でない脈絡がバグの起因であるが、それを捉える方法については、後述の５.２（主語系譜においてバグの起因と実行エラーの発見方法）（段落番号００２９）で述べる。
【００２０】
なお、調和脈絡と名付けた理由は、調和とはハーモニーであり全体と言う意味を持つので、名詞達の夫々の関係である脈絡の全てを含む全体の脈絡と言う含蓄である。一方、超言語脈絡と名付けた理由は、人間の思考方法は言語であるが、それは一筆書きのように常に一筋の論理を辿る。言語思考は構造的に以前の思考と常に照合しているわけではない。超言語脈絡とは、前記のように各名詞とその領域定義文の関係付けであるが、それは各名詞の出生を領域定義文を介して常に構造的に関係付けて照合していることである。だから言語（人の思考）を超えると言う含蓄で超言語脈絡と名付けた。
【００２１】
４．  ＬＹＥＥ空間  
LYEE空間とは、ソースコードの各構文を単一機能しかもたない単元文に分解し、夫々の単元文に、ソースコードの行番号又はその枝番号を付けてそれを座標とし、それら単元文毎に、次に実行される単元文の座標、単元文が条件文の場合は、真偽夫々の行き先にある単元文の座標、条件文を終了させる単元文の座標とその次に実行される単元文の座標、の諸座標を付し、更に単元文に含まれる名詞、定値、定置を抽出し、その名詞にはその領域定義文の座標を付し、これらを一覧表に展開したものである。詳細は下記４．１（ＬＹＥＥ空間の構成項目）参照。
LYEE空間には、更に別の項目を付加しても良い。例えば構文解析して各名詞を主語（値を生成される変数）と変数主語（主語でない変数）に区別しその欄を設けて表示しても良い。
【００２２】
４．１  LYEE空間の構成項目
図１−１乃至図１−４参照。そのソースプログラムは図１−５参照。
ＬＹＥＥ空間の項目は次の通りである。
（１）TCX。自然数で与えられる構文間の実行順位である。調和座標と総称される座標であり行番号又はその枝番号。
（２）プログラムの構文のソースコード
（３）ソースコード構文解析情報
１）ソースプログラムをその言語規則で構文解析して得られる単元化された構文の要素
２）構文の要素のTCX。構文が複数の単元文に分解される時は枝番号を付す。
(a）構文の要素が名詞の場合は、そのＴＣＸと記憶領域(領域定義文)の番地（TCX）
(b)構文の要素が定値の場合は、そのTCX
(c）構文の要素が定置（文字列）の場合は、そのTCX
３）構文の要素の種別。構文はその代表要素で文種化される。
文種には以下の１０種がある。注釈文、翻訳文、領域文（名詞文）、算術文、制御文、入力文、出力文、条件文、定値文、定置文（文字列文）がある。
（４）構文または構文要素の調和座標
調和座標はＴＣＸ、ＴＣＹ、ＴＣＺ１、ＴＣＺ２，ＴＣＺ３，ＴＣＺ４の６種で構成される。
１）ＴＣＸは構文に付与される。自然数で与えられる構文間の実行順位である。
２）ＴＣＹは当該構文の次に実行される構文のＴＣＸを指す。
３）ＴＣＺ１は当該構文が条件文なら、その条件文が真で実行されるＴＣＸを指す。
４）ＴＣＺ２は当該構文が条件文なら、その条件文が偽で実行されるＴＣＸを指す。
５）ＴＣＺ３は当該構文が条件文なら、その条件文の終了として実行される構文のＴＣＸを指す。
６）ＴＣＺ４は当該構文が条件文なら、その条件文の終了の構文の次に実行される構文のＴＣＸを指す。
因みに、上記の５）及び６）を設けるのは、どんな言語でもそのＬＹＥＥ空間と主語系譜を作成することができるようにするためである。
【００２３】
４．２  LYEE空間の作成方法
図１−１乃至図１−４参照。
ＬＹＥＥ空間は対象とするソースプログラムの構文を解析し、前記４．１（ＬＹＥＥ空間の構成項目）の各項目を抽出してＬＹＥＥ空間表を作成する。人が解析して抽出作成しても、自動的に行うアルゴリズムを用いて自動的に作成しても良い。
【００２４】
４．３  LYEE空間の超言語座標の付与方法
構文解析により求められる「構文を構成する要素」に付与されるTCXが超言語座標である。即ち、ＬＹＥＥ空間の項目「構文の要素のTCX欄」のことである。超言語座標は調和座標ＴＣＸの転用である。成立する超言語座標を以下に示す。即ち、
（１）領域定義文の名詞の超言語座標は、その領域定義文のＴＣＸである。
（２）領域定義文以外の名詞の超言語座標は、その名詞が属す構文のＴＣＸ及びその名詞の領域定義文のＴＣＸである。
（３）定値の超言語座標は、その定値が属す構文のＴＣＸである。
（４）定置の超言語座標は、その定置が属す構文のＴＣＸである。
（５）分岐先を示すラベルは、定置として扱われる。
【００２５】
５．  主語系譜
５．１  主語系譜の作成方法
前記３．（調和脈絡、超言語脈絡、主語系譜。段落番号００１５，００１６）及び図２−１、図２−２参照。
主語系譜とは、システムが統治する全名詞、全定値、全定置文（定置文とは領域を持たない文字列）の同期的成立関係を捉える脈絡図のことである。即ち、主語系譜では、先ず調和脈絡が、外部情報を取得する領域の名詞を始祖（終点）とし、プログラムの外部に送り出される情報を起点として、起点から終点までを結ぶ間に連鎖して位置する矢印線と名詞達で成立する。
調和脈絡の作成方法は、ＬＹＥＥ空間である図１−１乃至図１−４から各構文毎に含まれる名詞、定値、定置を夫々のブロックとし、そのブロックを各構文のTCX、TCY、TCZ1、TCZ２、TCZ３、TCZ４に従って矢印線で結ぶ。
次に、各名詞を超言語脈絡で結ぶ（段落番号００１６）。
主語系譜はこれらの二つの操作で求められる。これら二つの操作は人が行っても良いし、コンピュータで自動的に行っても良い。
【００２６】
上記の主語系譜は、実は主語系譜の原形である。主語系譜の最終形は、主語系譜における調和脈絡と超言語脈絡を合体させたものである。その方法は、調和脈絡に登場する名詞、定値、定置達を、同名の領域定義文の名詞を介さずに、親子間で直接結び付けるものである。即ち、前記の主語系譜の原形において、各構文に対応する単元文を構文解析して、その中に含まれる名詞を「値を生成される変数」である主語（子）と、主語の「値の生成に関与する変数」である変数主語（親）に区分けして、これらの個々の間に存在する親子関係を、始祖である全名詞、定値、定置から子孫の全名詞を含む家系図である名詞の全系譜を表示するものを主語系譜の最終形（以後単に主語系譜という）という。個々の親子関係は前記段落番号００１５に示した脈絡である。
【００２７】
なお、主語系譜の作成に当たって特に注意する点を述べる。主語系譜はソースプログラムに登場する名詞、定値、定置達の値が、相互にどのような依存関係にあるかを観察し分析することを目的に、プログラムを可視化したものである。従って登場するそれらのエレメントの値に影響のない命令や操作は主語系譜には入らない。例えば、入出力命令、ファイルの開閉命令、真偽の区別や指標（true、false）等の動作は上記のエレメントの値に影響しないので主語系譜には入れない。主語系譜は、プログラムの構造の可視化ではなく、あくまでプログラムに登場する名詞、定値、定置達のみに着目し、それらが起点から終点までどのように相互依存しているかを可視化するものである。
勿論、上記の入出力命令、ファイルの開閉命令、真偽の区別や指標（true、false）等の動作をそれらの動作命令を特別名詞化して主語系譜に含めることもできる。そうすればプログラム構造も可視化することが出来る。しかしプログラムに登場する名詞以外の、要件とは関係のないそれらの特別名詞が相当数加わるので主語系譜は複雑にはなる。
【００２８】
主語系譜の作成方法を下記に例を以て示す。図２−３「ソースプログラム例の主語系譜」参照。
段落番号００１５に記載した下記の構文の脈絡（脈絡については同段落番号参照）は下記の図になる。名詞にはその値が生成される座標を記す。Ａ以外の名詞の座標は省略する。
101  if X>Y  
102  A=B+C
103  else
104  A=E+F
105  P=S+T
106  end-if
2020135404.tif 000005
若し脈絡Ａに条件文が無ければ、脈絡Ａは下記のようになる。
2020135404.tif 000006
名詞の値を生成するために係る名詞、定値、定置は「親」であり、値を生成される名詞は「子」である。条件文に含まれる名詞、定値、定置も親である。
全ての名詞、定値、定置について、上記の脈絡の親子関係を連鎖すれば、起点である外部出力名詞から終点（始祖）である名詞、定値、定置までの系譜を表す主語系譜が出来る。
【００２９】
図１−１乃至図１−４及び図１−５に示したソースプログラムの例についての主語系譜を図２−３に示す。起点には入力線は無い。入力線がない名詞は、numとfp2である。但しfp2はプログラムでは出力しない。fp2は主語系譜上で他の名詞の値に影響を与えないことが分かる。
下記の定置は出力されるだけで他の名詞に影響を与えない文字列なので基本的には主語系譜には登場しない。登場させても良いが孤立して存在しているだけで系譜はない。 
“Start.￥n”
“Usage: SampleC infilename outfilename￥n”
勿論上記段落番号００２６に記した通り、主語系譜に入出力命令等を特別名詞化して入れても良い。その主語系譜を自動作成ツールを用いて出力した図を図２−４に示す。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態を示す図である。
【図１Ａ】本発明の一実施形態を示す図である。
【図２】本発明の一実施形態を示す図である。
【図３】本発明の一実施形態を示す図である。
【図４】本発明の一実施形態を示す図である。
【図５】本発明の一実施形態を示す図である。
【図６】本発明の一実施形態を示す図である。
【図７Ａ】本発明の一実施形態を示す図である。
【図７Ｂ】本発明の一実施形態を示す図である。
【図７Ｃ】本発明の一実施形態を示す図である。
【図７Ｄ】本発明の一実施形態を示す図である。
【図７Ｅ】本発明の一実施形態を示す図である。
【図８】本発明の一実施形態を示す図である。
【図９Ａ】本発明の一実施形態を示す図である。
【図９Ｂ】本発明の一実施形態を示す図である。
【図９Ｃ】本発明の一実施形態を示す図である。
【図１０−１】ソースプログラム例のＬＹＥＥ空間  その１ＬＹＥＥ空間はソースプログラムの全構文を含む表であるので縦に非常に長い。特許の図面様式のサイズに制限があり、1ページに記載できる行数に限りがあるので、制限範囲に入るように構文を図１−１（その1）から図１−４（その４）まで4つの表に分割して表示した。各表の項目欄は共通であるが各表毎に表示した。
【図１０−２】ソースプログラム例のＬＹＥＥ空間  その２
【図１０−３】ソースプログラム例のＬＹＥＥ空間  その３
【図１０−４】ソースプログラム例のＬＹＥＥ空間  その４
【図１０−５】ソースプログラムの例
【図１１】ＬＹＥＥ空間から求められる主語系譜の原形の例  上部特許の図面様式のサイズに制限があり、その制限に合わせて本主語系譜図を縮小すると文字が読みにくくなるので、本主語系譜図を上下に２分割した。つながるべき線同志には同じ符号を付した。
【図１２】ＬＹＥＥ空間から求められる主語系譜の原形の例  下部
【図１３】ソースプログラム例の主語系譜
【図１４】ソースプログラム例で命令文等を特別名詞化した主語系譜
【図１５】バグの起因を含むが実行エラーとならないプログラムの主語系譜
【図１６】バグの起因を含み実行エラーとなるプログラムの主語系譜
【発明を実施するための形態】
【００３１】
図１は、従来法によるプログラムを本願発明の一実施形態に係るシナリオ関数に変換する方法・アルゴリズムを示すものである。ここにおいては、数字で指標される対象はそれぞれ次のものを示す。
１０：従来プログラムＰ
２０：Ｐを普遍的にベクトル解析するためのアルゴリズムＡ。すなわち、ＡはＰが見落としている１個以上の命令を捉える。
３０：Ａで解析されるＰの結果Ｒ
４０：Ｒから求められるＬＹＥＥ空間（部分）
５０：ＬＹＥＥ空間（部分）から求められるＰの解
６０：ＲからＰの完全系（シナリオ関数）が自動生成される。なお、「Ｐの完全系（シナリオ関数）」とは、バグレス、テストレス、ウイルスの無力化等を成立させるプログラムのこと。
【００３２】
上記を補足するに、ウイルス・プログラムとは完全系プログラム（必要十分条件が充足されているプログラム）に反するプログラム（十分条件が充足されていないプログラム）のことである（Ｐの本質性はウイルスである。）。この意味で従来プログラムには本質的にウイルス性が具備されており、シナリオ関数だけが非ウイルス・プログラムの条件を具備している。シナリオ関数（ＳＦ）とウイルス（ＶＰ）が融合（∪）すれば，ＶＰはＳＦにより消滅される。
【００３３】
本発明は、次のものとして規定できる。
従来法で記述された第１のプログラムから、前記第１のプログラムを普遍的にベクトル解析するためのアルゴリズムＡを構築し、
前記アルゴリズムＡで解析される前記第１のプログラムの結果Ｒを得、
前記Ｒから求められるＬｙｅｅ空間もしくは少なくともＬｙｅｅ空間の一部を得、
前記得られたＬｙｅｅ空間もしくは少なくともその一部から、前記第１のプログラムについての完全系をシナリオ関数として生成する、
ことを特徴とする、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換する方法。
【００３４】
コンピュータを、
従来法で記述された第１のプログラムから、前記第１のプログラムを普遍的にベクトル解析するためのアルゴリズムＡを構築する手段と、
前記アルゴリズムＡで解析される前記第１のプログラムの結果Ｒを得る手段と、
前記Ｒから求められるＬｙｅｅ空間もしくは少なくともＬｙｅｅ空間の一部を得る手段と、
前記得られたＬｙｅｅ空間もしくは少なくともその一部から、前記第１のプログラムについての完全系をシナリオ関数として生成する手段と
として機能させることを特徴とする、従来法により記述されたプログラムをシナリオ関数に係るプログラムに自動変換するプログラム。
【００３５】
図１Ａは、シナリオ関数の主語系譜をＬＹＥＥ空間から自動生成する為のアルゴリズムを示す図である。
解説２．主語の文脈とは主語を成立させる変数主語、定値のことである。
解説３．主語とその文脈の関係は文脈側から主語に向かう矢線で示される。但し、ＳＧでは矢線の向きは逆（外延的）になる。
解説４．出力主語、入力主語、変数主語、定値はＳＧの構成要素である。例えば、代入文に係る条件文の変数主語、定値は代入文の変数主語と共に代入文の主語の文脈要素である。
解説５．出力主語はＳＧの起点である。
解説６．入力主語、定値はＳＧの終点である。
図１Ａ，図２〜図６、図７Ａ〜図７Ｅ、図８、図９Ａ〜図９Ｃは、本願の一実施形態を説明するための図である。
【産業上の利用可能性】
【００３６】
本発明によれば、従来法で作成されたプログラムについて、シナリオ関数への自動変換がなされるので、国や産業上の利用可能性は計り知れないものがある。
【図１】
2020135404.tif 000007
【図１Ａ】
2020135404.tif 000008
【図２】
2020135404.tif 000009
【図３】
2020135404.tif 000010
【図４】
2020135404.tif 000011
【図５】
2020135404.tif 000012
【図６】
2020135404.tif 000013
【図７Ａ】
2020135404.tif 000014
【図７Ｂ】
2020135404.tif 000015
【図７Ｃ】
2020135404.tif 000016
【図７Ｄ】
2020135404.tif 000017
【図７Ｅ】
2020135404.tif 000018
【図８】
2020135404.tif 000019
【図９Ａ】
2020135404.tif 000020
【図９Ｂ】
2020135404.tif 000021
【図９Ｃ】
2020135404.tif 000022
【図１０−１】
2020135404.tif 000023
【図１０−２】
2020135404.tif 000024
【図１０−３】
2020135404.tif 000025
【図１０−４】
2020135404.tif 000026
【図１０−５】
2020135404.tif 000027
【図１１】
2020135404.tif 000028
【図１２】
2020135404.tif 000029
【図１３】
2020135404.tif 000030
【図１４】
2020135404.tif 000031
【図１５】
2020135404.tif 000032
【図１６】
2020135404.tif 000033