(57)【要約】【課題】プログラム改善課題の難解さは其の全実行様相を一度に把握できない事に原因がある。この課題を解決する為にはプログラムの全実行様相を一度に把握し、其の実体を直視する事が先決である。これ迄、其の全実行様相を自動的に求める方法はなかったので、其の作成者も含め誰も正確に認識出来ていないのが実情である。故に、現状では欠陥のないプログラムを作り出す事は不可能である。またプログラム言語変換においても同様の理由で困難である。【解決の手段】本願はプログラムの全実行様相をＬＹＥＥ空間と主語系譜を用いて自動的に一度に把握して固定化する。其れによりプログラムの本当の実行実体を見届ける事が出来る。其れに基ずく認識によってプログラムの改善技法を正しく導くことが出来る。また、主語系譜により要件の骨格が一望することが出来るので要件診断の精度と効率を飛躍的に高めることが出来る。更にまたＬＹＥＥ空間を用いてプログラム言語変換が完全に自動化することが出来る。【選択図】図１
2010073203.tif 000002
【特許請求の範囲】
【請求項１】
１．対象プログラムから本願発明のＬＹＥＥ空間を自動生成するステップと、
２．ＬＹＥＥ空間から本願発明の脈絡を自動抽出するステップと、
３．脈絡から本願発明の主語系譜を自動生成するステップと、
４．主語系譜から主語系譜が定める各種の主語を自動探索するステップと、
５．自動探索される主語を含む部分主語系譜を主語系譜から自動抽出するステップと、
６．上記４、５の情報を対象プログラムに自動的に紐付けるステップと、
７．主語系譜から時間変数を自動生成するステップと、
８．時間障害の原因を自動抽出し其の情報を対象プログラムに自動的に紐付けるステップと、
９．任意の主語を起点または終点とする部分主語系譜を任意の段階まで自動抽出し其の情報を対象プログラムに自動的に紐付けるステップと、
１０．対象プログラムから本願発明の脈絡を調和部品としてリスト化するステップと、
１１．対象プログラムを新調和部品で自動的に置換し、新ＬＹＥＥ空間を自動生成するステップと、
１２．新ＬＹＥＥ空間から新プログラムを自動編集するステップと、
の少なくとも一つの方法を具備するコンピュータプログラムの診断方法または言語変換方法
【請求項２】
請求項１の少なくとも一つ以上を用いた電算機プログラム。
【発明の詳細な説明】
【技術分野】    本発明は、コンピュータプログラムの診断方法および自動的な言語変換方法に関するもので、コンピュータソフトウェアに関する。
【発明の概要】
【発明が解決しようとする課題】
【０００１】１．従来のプログラム改善技法
プログラム改善技法とはプログラムの命令列を改善する為の方法である。この観点に立てば、例えば、コンパイラ、デバッガ、テスト、プログラム診断、プログラム言語変換、プログラム作業標準施策等はいずれも其の一環である。プログラム改善技法としての命令列是非の問題は、其のプログラムの実行様相の観点から判断される課題である。故に其の為には対象プログラムの全実行様相が事前に準備される事が不可欠になる。しかし、従来では其れが不可能な為に実際は実行テストを介して行われる。其の場合でも、全実行様相が不明の為に十分な改善作業が行われたかどうかは不明である。其の残されている課題が起因となり、実行障害を発症させる可能性も当然ありえる。これは深刻な問題である。
全実行様相が不明のままで其の様な事態が生じない様にさせるには、テスト作業自体が著しく過重化される。そして、不条理な非能率作業に追い込まれる。この状況は改善されなければならない緊急課題である。【０００２】２．本願による改善
本願の発明によりプログラムの全実行様相が主語系譜として自動生成される。其れを用いる事により、プログラムの全体観に立脚したプログラム改善が実施出来る。要約すれば、プログラムの品質を高める事が出来る。そして、プログラムの全実行様相を捉える方法では必然的にプログラムの本質的な情報が捉えられるので、其の情報はプログラム改善のさまざまな局面で利用する事が出来る。少なくとも以下のプログラム改善の局面で貢献する。
プログラムの障害診断法、
プログラム言語変換法、
要件とプログラムの妥当性診断法、
プログラムの完成度診断法、
テスト作業戦略の立案の基礎情報、
保守支援情報、
部品化と其の自動合成法
コンパイラ並びにテスト支援ＴＯＯＬ（例えばデバッガ）の方式設計の基礎情報、
作業標準化の基礎情報
【課題を解決する手段】
【０００３】１．本願発明の概要
本願発明のＬＹＥＥ空間、脈絡、領域座標、主語系譜により、プログラム診断を意味的診断に進化させる事が出来る。同じく、ＬＹＥＥ空間、脈絡、領域座標により、プログラム言語変換を部品置換の方式に進化させる事が出来る。
本願発明の外観を図１で示す。本発明の有り様を把握する上で必要な要点を図１のブロック番号に従って説明する。
１のプログラムは本願の発明が対象とするプログラムで、１本でも複数本でも後述する領域座標が閉域的に自動付与出来れば（出来る）適用上の障害にはならない。対象プログラムの言語種別も本願発明の適用上の障害にはならない。
２は対象プログラムからＬＹＥＥ空間が自動生成される事を示す。ＬＹＥＥ空間は本願の発明で、対象プログラムの改善処理、例えば、部品化、診断、言語変換等の方法を自動化する為に其の対象プログラムを本願発明による尺度の組で再定義される構造体である。
対象プログラムから自動的にこの構造体に再定義する事が出来る。この構造体を用いる事により、対象プログラムを処理する為のプログラムが普遍的な方法で決定する事が出来る。
３はＬＹＥＥ空間から対象プログラムの構成単位となる脈絡が自動抽出される事を示す。脈絡はプログラムの調和部品として定義される本願の発明である。調和部品とは機械部品の様に其れを貼り合わせればプログラムになる部品で、部品間に糊代部分を不要とする概念の部品である。脈絡の発明により、対象プログラムの部品化、其の自動合成法が普遍的に可能になる。換言すれば、ＬＹＥＥ空間は脈絡を取り出す為の事前準備である。本願のプログラム言語変換、プログラム診断はこの脈絡により実現出来る。
４の主語系譜とは脈絡の連鎖で、対象プログラムから脈絡を自動抽出し、其れを主語座標で連結すれば求められる。主語座標は本願による発明で、これにより対象プログラムの全実行様相が捉えられる。プログラム改善を実施する上で、本願の発明のＬＹＥＥ空間、領域座標、脈絡、主語系譜は欠く事の出来ないものである。
５は主語系譜に出現する特徴的な主語（表示上では回帰主語、迂回主語が示されている）を自動的に探索する方法が成立する事を示す。其の主語が発見されれば、其の対象プログラムには実行障害が可能的に発症する可能性がある。
６は其の可能性をより深く追跡する為に、其の主語が属す部分主語系譜が自動的に抽出される事を示す。
７は其の部分主語系譜から実行障害の起因、原因、其の仕組が自動的に抽出出来る事を示す。そして、其の情報が対象プログラムに自動的に紐付けられる事を示す。其の情報に基づき対象プログラムの改善を実施する事が出来る。
５．６．７は対象プログラムから直接求められる情報ではない。主語系譜により齎される情報である。
８は主語系譜により実行時の処理時間変数が自動的に導出される事を示す。
９は時間障害を生じさせる原因が自動的に求められる事を示す。この情報も７により自動的に対象プログラムに紐付けられる。其の情報に基づき対象プログラムの時間障害の改善を実施する事が出来る。
１０は対象プログラムの全脈絡の情報が部品表として自動的生成される事を示す。
１１は其の部品を例えば異なる言語の部品に置き換える作業を示す。これは人の意思によるものなので手作業で行われなければならない。
１２は１１による新たな部品は２のＬＹＥＥ空間を１３が示す新ＬＹＥＥ空間に自動的に置換する事を示す。
１４は１３の新ＬＹＥＥ空間から１５で示す新プログラムが自動生成出来る事を示す。
３、４、７、１２、１４は本発明の領域座標により、それぞれのステップの為の処理プログラムを単純化する事が出来る。
【０００４】２．本願発明によるＬＹＥＥ空間の説明
ＬＹＥＥ空間は対象プログラムの公理空間である。其の公理的尺度を以下に示す。即ち、
１）単一化された構文
２）構文種別、
３）領域（構文座標、主語座標、名詞座標）
４）ベクトル種別
対象プログラム事例と其のＬＹＥＥ空間を図９、図１０で示す。
【０００５】  ＬＹＥＥ空間の尺度を以下に説明する。文中［０００：］で示される叙述は当該項目の詳細説明に関するものである。
（１）構文の構成要素
通常、構文は以下の項目により構成される。即ち、
予約語、演算子、領域名、定値名、ラベル名、終了記号
（２）構文種別
通常、構文種別は以下の様に仕分される。即ち、
注釈文、領域文、翻訳文、関数文、定値文、制御文、条件文、呼出文、入力文、出力文
【０００６】（３）領域座標
本座標は本願による発明で、プログラムに属す全領域を同期化する役割を果たす。
領域座標は本願による発明で、Ｘ、Ｙ、Ｚ１、Ｚ２、Ｚ３、Ｚ４の６軸種で構成される。
０００：全領域が座標で定義出来れば其れにより同期化される。
０００：Ｘ座標には添え字（＋ｉ、は自然数）が生じる場合がある。
Ａ．構文の座標は領域座標により律される。即ち、
１）Ｘ：構文αの行番号は構文αのＸに記される。
２）Ｙ：構文αの次に無条件で移る構文βのＸは構文αのＹに記される。
３）Ｚ１：構文αの真条件で移る構文γのＸは構文αのＺ１に記される。
４）Ｚ２：構文αの偽条件で移る構文δのＸは構文αのＺ２に記される。
５）Ｚ３：構文αの範囲の終わりを示す構文πのＸは構文αのＺ３に記される。
６）Ｚ４：構文αから次に移る構文λがあれば、其の構文のＸは構文αのＺ４に記される。
Ｂ．主語座標
０００：主語とは構文で実体化される領域で、主語座標とは其の領域の座標で、其の構文のＸ座標の事である。
Ｃ．名詞座標
０００：名詞とは領域定義文で定義される領域で、名詞座標とは其の領域の座標で、其の構文のＸ座標の事である。
０００：領域は名詞座標と主語座標で律される。
【０００７】（４）構文の種別と座標型の関係
０００：注釈文の座標はＸ、Ｙ
０００：領域文の座標はＸ、Ｙ
０００：翻訳文の座標はＸ、Ｙ
０００：関数文の座標はＸ、Ｙ
０００：定値文の座標はＸ、Ｙ
０００：制御文の座標はＸ、Ｚ１
０００：条件文の座標はＸ、Ｚ１、Ｚ２、Ｚ３、Ｚ４
０００：呼出文の座標はＸ、Ｚ１、Ｚ２、Ｚ４
０００：入力文の座標はＸ、Ｙ
０００：出力文の座標はＸ、Ｙ
【０００８】（５）ベクトル
ベクトルは本願による発明で構文の意味を捉える変数の役割を果たす。
（６）ベクトル種別
０００：ベクトルの種別は６種に大別される。即ち、
１）Ｌ４
２）Ｌ３
３）Ｌ２
４）Ｉ２
５）Ｏ４
６）ＮＬ
０００：ＮＬはベクトル化されない構文を指す。
０００：注釈文はＮＬである。
０００：領域文はＮＬである。
０００：翻訳文はＮＬである。
０００：呼出文はＮＬである。
０００：制御文はＮＬである。
０００：関数文はＬ４である。
０００：定値文はＬ２である。
０００：条件文はＬ３である。
０００：入力文はＩ２である。
０００：出力文はＯ４である。
（７）ベクトル識別子
０００：Ｌ４の識別子は関数文の主語である。
０００：Ｌ２の識別子は定値文の主語である。
０００：Ｌ３の識別子は連結されるＬ４、Ｌ２、Ｉ２、Ｏ４の主語である。
０００：Ｉ２の識別子は入力論理体の名称である。
０００：Ｏ４の識別子は出力論理体の名称である。
０００：ＮＬの識別子は構文そのものである。
【０００９】（８）構文種別、座標型、ベクトル種別の関係
構文、座標型、ベクトル種別、例を示す。
０００：本願ではＹ座標を有する構文をＹ型、Ｚ座標を有する構文をＺ型構文と記す。
１）注釈文；Ｙ型、ＮＬ      ：＊
２）領域文；Ｙ型、ＮＬ      ：Ａ（２）
３）翻訳文；Ｙ型、ＮＬ      ：ＥＮＤ−ＩＦ
４）関数文；Ｙ型、Ｌ４      ：Ａ＝Ｂ＋Ｃ
５）定値文；Ｙ型、Ｌ２      ：Ａ＝５
６）制御文；Ｚ型、ＮＬ      ：ＧＯＴＯ
７）条件文；Ｚ型、Ｌ３      ：ＩＦ
８）呼出文；Ｚ４、ＮＬ      ：ＣＡＬＬ
９）入力文；Ｙ型、Ｉ２      ：ＲＥＡＤ
１０）出力文；Ｙ型、Ｏ４      ：ＷＲＩＴＥ
【００１０】（９）ＬＹＥＥ空間をプログラムから自動生成する為のパラメ−タを示す。即ち、
１）構文種別、２）構文解析情報、３）Ｙ型構文種別、４）Ｚ型構文種別、５）ベクトル種別
上記パラメ−タはプログラム言語ごとに必要である。予め言語ごとに決めておく。このパラメータによって言語によらず原始プログラムから脈絡の抽出と主語系譜の生成が可能となる。
【００１１】３．本願発明による脈絡の説明
脈絡はプログラムの調和部品である。
０００：プログラムの脈絡の意味は領域の関数化である。
０００：プログラムの脈絡は調和分割されたプログラムの意味を表す。即ち、プログラムの単元である。
０００：脈絡の動的様相は機能である。
０００：脈絡は機能の最小単位である。
０００：脈絡の識別子を脈絡鍵と記す事もある。
０００：注釈文、領域定義文、制御文、コンパイラ指示文は脈絡の対象から除かれる。
０００：脈絡では実体化される領域は主語である。
０００：脈絡では主語の実体化に係わる領域は名詞と記される。
０００：名詞は名詞座標で律される。
０００：主語は主語座標と名詞座標で律される。
０００：脈絡は主語と名詞で決定される。
０００：脈絡は唯一の識別子を有する。
０００：呼出文の呼び出し先名は脈絡では主語の名詞として位置付けられる。
０００：条件文の領域は脈絡では全て名詞として位置付けられる。
０００：脈絡はプログラムの部品化、部品自動合成法を成立させる要素である。
【００１２】（１）脈絡の定義
脈絡の概念図を図２で示す。
Ｓｉ、ｊ＝Ｍ（∪ｋＮｇ、ｒ）
１）Ｓｉ、ｊは主語（ｉは主語Ｓの主語座標、ｊは主語Ｓの名詞座標）
２）Ｍは脈絡の型
３）∪ｋＮｇ、ｒは主語Ｓはｋ個の名詞Ｎで成立する事を示す。ｇはＮの主語座標、ｒはＮの名詞座標。Ｎｇ、ｒと表される事に於いてＮは実質的主語である。
（２）脈絡の形式
脈絡の形式は以下８形式である。記号∩はベクトルの連結を示す。
１）Ｌ４
２）Ｌ２
３）Ｉ２
４）Ｏ４
５）Ｌ３∩Ｌ４
６）Ｌ３∩Ｌ２
７）Ｌ３∩Ｏ４
８）Ｌ３∩Ｉ２
【００１３】（３）脈絡の型Ｌ３∩Ｌ４の脈絡と其の識別子の例
例：［ＩＦ  Ｅ＝Ｄ真（Ａ＝Ｂ＋Ｃ）ＥＮＤ−ＩＦ．ＩＦ  Ｅ＝Ｄ偽（Ｈ＝Ｍ＋Ｏ）．］
上例には二つの脈絡（座標は省略）が成立する。即ち、
１）Ａ＝Ｍ（Ｂ、Ｃ、Ｅ、Ｄ）
２）Ｈ＝Ｍ（Ｍ、Ｏ、Ｅ、Ｄ）
主語Ａの名詞はＢ、Ｃ、Ｅ、Ｄ
主語Ｈの名詞はＤ、Ｅ、Ｍ、Ｏ、Ｍは脈絡の型
０００：脈絡は主語座標で連鎖される。脈絡の名詞Ｂは主語Ｂと連鎖される。
０００：脈絡の連鎖は主語座標が成立する限り続けられる。
０００：脈絡の連鎖は終点主語、定値主語に遭遇して停止する。
０００：脈絡の連鎖の起点は出力主語である。
０００：二つの脈絡（Ａ、Ｈ）の意味を以下に示す。
１）脈絡Ａの意味：ＩＦ  Ｅ＝Ｄ、真ならＡ＝Ｂ＋Ｃ
２）脈絡Ｈの意味：ＩＦ  Ｅ＝Ｄ、偽ならＨ＝Ｍ＋Ｏ
０００：二つの脈絡（Ａ、Ｈ）の識別子（鍵）の一般形を以下に示す。
１）脈絡鍵Ａ：｜ＩＦ｜Ｅ＝Ｄ｜真｜Ａ＝｜Ｂ＋Ｃ｜ＥＮＤ−ＩＦ｜．｜
２）脈絡鍵Ｈ：｜ＩＦ｜Ｅ＝Ｄ｜偽｜Ｈ＝｜Ｍ＋Ｏ｜、｜
０００：二つの脈絡（Ａ、Ｈ）の識別子の特殊解が求める脈絡の識別子である。
１）脈絡Ａの識別子：｜ＩＦ｜＝｜真｜＝｜ＥＮＤ−ＩＦ｜．｜
２）脈絡Ｈの識別子：｜ＩＦ｜＝｜偽｜＝｜．｜
【００１４】４．本願発明による主語系譜の説明
主語系譜により対象プログラムの全領域の実行様相が表される。
０００：主語系譜はＬＹＥＥ空間で捉えるプログラムの意味の様相である。
０００：主語系譜は例えばグラフで可視化する事が出来る。
０００：主語系譜は脈絡の連鎖である。
０００：脈絡の連鎖は主語座標で行われる。
０００：以下の図で説明する。
脈絡の連鎖規則の概念を図３で示す。
図７ではプログラム例と其の主語系譜の部分抜粋を示す。
図８では図７の主語系譜の脈絡を示す
事例プログラム（図９）のグラフ化された主語系譜を図１２で示す。
図１１はＬＹＥＥ空間（図１０）から抽出される脈絡表である。
【００１５】（１）主語と名詞
主語系譜の為に必要な領域概念を示す。
０００：領域定義文で定義される領域は名詞である。
０００：入力文で実体化される領域は主語系譜の終点主語である。
０００：関数文で実体化される領域は主語である。
０００：定値文の領域は主語系譜の終点主語である。定値主語と記す。
０００：出力文で実体化される領域は主語系譜の起点主語である。
０００：終点主語には脈絡は成立しない。
０００：定値主語には脈絡は成立しない。
０００：終点主語、定値主語以外の主語には脈絡は成立する。
０００：脈絡の主語と名詞は主語から名詞への作用線で結ばれる。
０００：主語に出力線が成立しなければ、其の主語を特に［浮島主語］と記す。
０００：脈絡の連鎖の向きは起点主語から終点主語方向（過去方向）である。
０００：条件文に属す領域は脈絡主語の名詞である。
０００：条件文に主語が存在すれば、其の主語は脈絡主語の名詞である。
０００：条件文に属す主語を特に条件主語と記す事がある。
０００：条件文に属す名詞を条件名詞と記す事がある。
０００：異なる脈絡主語が同じ条件文を用いれば、其の条件文の名詞は異なる其の脈絡主語共通の名詞である。
０００：脈絡主語Ａの名詞が過去方向の隣接する脈絡主語を飛び越える脈絡主語Ｂであれば、脈絡主語Ａは［迂回主語］と記される。其の出力線を迂回経路と記す。
０００：脈絡主語Ａの名詞が終点主語（又は定値主語）の場合、其の経路は迂回経路ではない。主語Ａは迂回主語でもない。
０００：脈絡主語Ａの名詞が未来方向の脈絡主語Ｃであれば、脈絡主語Ａは［回帰主語］と記される。其の出力線を回帰経路と記す。
０００：脈絡の名詞が全て同じになる脈絡が主語系譜上重複して存在すれば、其の脈絡主語は［重複主語］と記される。
０００：脈絡主語が同じ、其の名詞が１個でも異なる脈絡が主語系譜上重複して存在すれば、其の脈絡主語は［多重主語］と記される。
０００：脈絡主語への入力作用線の本数が過多になる其の脈絡主語は［集約主語］と記される。
０００：出力作用線が過多になる脈絡主語（名詞が過多になる脈絡）は［拡散主語］と記される。
０００：過多の基準は７個以上である。
０００：主語系譜の中で、出力作用線と入力作用線数の合計数が最大になる脈絡主語は［核主語］と記される。
０００：脈絡主語が成立する迄の終点主語（又は定値主語）からの作用線の合計は其の脈絡主語が成立する「時間変数」である。
０００：脈絡主語を構成する名詞が主語として成立する迄の作用線の合計数で相違すれば其の相違数は其の脈絡主語が成立する迄の時間的「待機変数」である。
０００：待機変数が著しく偏差すれば、其の脈絡主語は［待機主語］と記される。
０００：ＬＹＥＥ空間又はプログラムでは識別可能な主語は以下の５種である。
出力主語（起点主語）、主語（含む条件主語）、名詞（含む条件名詞）、入力主語（終点主語）、定値主語
０００：主語系譜には１２種の主語が出現する。即ち、
終点主語、定値主語、浮島主語、起点主語、迂回主語、回帰主語、重複主語、多重主語、集約主語、拡散主語、核主語、待機主語、
０００：主語系譜の経路模様を決定付ける主語がある。
１）重複主語：主語数を冗長的に増加し、経路数を増加させる因子。
２）多重主語：主語数を複雑的に増加し、経路数を増加させる因子。
３）集約主語：主語数を集約的に軽減し、経路数を軽減させる因子。
４）拡散主語：主語数を拡散的に増加し、経路数を増加させる因子。
５）核主語  ：主語数を論理的に軽減し、経路数を増加させる因子。
０００：主語系譜の構造は主語数と経路数で決定される。
０００：主語数と経路数が少なければ最適構造に近づく。
０００：主語系譜の構造が最適であれば、其のプログラムの構造も最適である。
０００：要件を決定付ける主語がある。
１）終点主語：入力項目
２）定値主語：設定定数項目
３）起点主語：出力項目
０００：浮島主語はプログラムの誤り虫である。
０００：実行時条件を曖昧にする主語がある。
１）迂回主語：実行条件の叙述欠落の要因。迂回先の名詞の実行条件が叙述されていないのでそれが迂回主語の実行条件と合致しない時実行障害を起こす。
２）回帰主語：実行条件の叙述不定の要因。回帰先の名詞は回帰主語に関わる未来であるのでその値は未定または不適であり原則として実行障害を起こす。
０００：待機主語は処理時間障害の因子となる主語である。
【００１６】（２）脈絡と主語系譜
図４では主語系譜の概念を示す。
図５は図４の主語系譜を成立させる脈絡を概念的に示す。
図４を以下に説明する。
０００：図４の（１）は起点主語、
０００：（１０）（１１）（１２）（１３）（１４）（１５）（１６）は終点主語、又は定値主語、
０００：起点主語（１）は（２）（３）を名詞とする脈絡である。
０００：（２）は（４）（５）を名詞とする脈絡の主語
０００：（８）は（２）（１０）（１１）を名詞とする脈絡の主語
０００：（８）は（４）を主語とする脈絡の名詞
０００：（８）を主語とする脈絡は（２）を名詞とする事で回帰主語である。
０００：（８）と（２）を結ぶ経路は回帰経路である。
０００：（３）を主語とする脈絡は（７）を名詞とする事で迂回主語である。
０００：（３）と（７）を結ぶ経路は迂回経路である。
０００：もし、（３）と（４）を結ぶ経路が必要なのに生成出来なかったとすれば、即ち、この経路が成立しなければ、この主語系譜は曖昧になる。（３）の不正実行様相を発症させる理由となる。
０００：明らかな様に主語系譜は起点主語と終点主語（含む定値主語）で閉域化されている。即ち、全体である。
【００１７】（３）部分主語系譜
０００：構文の主語座標の軌跡は、プログラム上終了命令（例：ＥＸＩＴ）に到達する。これは主語座標が閉じる関係である。
０００：複数のプログラムの主語座標を閉じる関係にすれば、其れは１個のプログラムと見なす事が出来る。
０００：複数のプログラムを閉じる関係にすれば１個の主語系譜に帰着する。
０００：図４の主語系譜の部分主語系譜の概念を図６で示す。１個の主語系譜に成立する部分主語系譜を示す。
１）指定する主語を終点とする部分主語系譜
２）指定する主語を成立させる部分主語系譜
３）指定する出力主語を成立させる部分主語系譜
４）終点名詞と出力主語の部分主語系譜
【００１８】５．本願発明によるプログラム診断の説明
本願によるプログラム診断方式は主語系譜を用いて行われ、従来の構文診断の域を越える意味的診断である。
５．１  原理
０００：プログラムの正当性の基準はプログラムの実行様相により決まる。
０００：プログラム診断とは実行様相を最適にする命令列を求める事である。
０００：故に、プログラム診断にはプログラムの実行様相を知る事が先決である。
０００：主語系譜はプログラムの全実行様相である。
０００：主語系譜はプログラムから自動的に生成する事が出来る。
０００：主語系譜による診断は主語の特性により自動的に行う事が出来る。
０００：プログラムから起因、原因を読み取る事は実質的に不可能である。
０００：主語系譜によるプログラム診断の結果は起因、原因、仕組で表される。
０００：起因は不正実行様相が発症する箇所である。
０００：原因は発症原因である。
０００：仕組は発症と発症原因の関係である。
０００：主語系譜で自動的に発見出来る診断結果は主語の領域座標によりプログラムに自動的に紐付ける事が出来る。
０００：主語系譜の最適構造は主語当たりの経路数が平均化される事である。
０００：核主語、拡散主語は経路数を増大させる。
０００：集約主語は経路数を減少化させる。
０００：最適な主語系譜の構造はプログラムの最適構造と相関する。
【００１９】５．２  診断様相
主語系譜で診断可能な意味的様相を示す。即ち、
１）論理障害：冗長性、複雑性、曖昧性（値域揺動）、不定性（論理破壊）
２）時間障害
３）誤り虫
０００：四則演算子の誤り問題は本診断様相から除外される。
０００：Ｉ／Ｏ方式の方式問題は本診断様相から除外される。
（１）冗長性
０００：主語系譜に冗長様相を発生させる原因は重複主語、拡散主語である。
０００：主語系譜から重複主語、拡散主語の個数を求めれば、其のプログラムの冗長様相の発生箇所数が解る。
（２）複雑性
０００：主語系譜に複雑様相を発生させる原因は多重主語である。
０００：主語系譜から多重主語の個数を求めれば、其のプログラムの複雑様相の発生箇所数が解る。
（３）曖昧性（期待する値が得られない可能性がある）
０００：実行時に決まる条件文列に曖昧性が発症すれば出力結果が揺動する。
０００：曖昧性の見つけ方を以下に示す。
１）迂回経路で結ばれる迂回主語の名詞を主語とする脈絡に属す条件文と、其の迂回主語の脈絡に属す条件文は両立しなければならず相反してはならない。もし、両立しなければ、其の迂回主語を名詞とする脈絡の主語はデ−タ容量外のデ−タを処理し、其の結果、其の主語には期待外の値域揺動が生じる。
２）回帰主語があれば、その主語は未定の名詞によって決められた不正値であるので、其の回帰主語を名詞とする脈絡の主語はデ−タ容量外のデ−タを処理し、其の結果、其の主語には想定外の値域揺動が生じる。
（４）不定性（論理破壊の可能性がある）
０００：実行時に決まる条件文列に不定性が発症すれば論理破壊が発症する。
０００：不定性の見つけ方を以下に示す。
迂回経路で結ばれる迂回主語の名詞が回帰主語を兼ねる場合、迂回主語の脈絡の条件文、回帰主語の脈絡の条件文、そして、回帰主語を名詞とする脈絡の条件文は相互に矛盾してはならない。もし、矛盾していれば其の回帰主語を名詞とする脈絡の主語はデ−タ容量外のデ−タを処理し、其の結果、其の主語には論理破壊を生じさせる値域揺動が生じる。
（５）時間障害
０００：主語系譜の経路の総数は其のプログラムの処理時間容量の媒介変数を表す。
１）Ｓｉ、ｊに属すｋ個の名詞Ｎｇ、ｒ
２）Ｔ（Ｎｇ、ｒ）：Ｎｇ、ｒの時間変数
３）時間変数とは終点主語（含む定値主語）からＮｇ、ｒ迄の経路数
４）Ｓｉの時間変数：Ｔ（Ｓｉ、ｊ）＝ΣｋＴ（Ｎｇ、ｒ）
０００：経路の総数に電算機の単位処理時間を乗じれば、処理時間の単位である。
０００：ｋ個のＮｇ、ｒの時間変数に大きな相違が生じればＳｉ、ｊは待機主語である。
（６）誤り虫
浮島主語は誤り虫である。
（７）要件の妥当性の診断
主語系譜によりある主語の成立に関わる全ての主語或いは名詞の連鎖関係と、また当該主語が成立に関わっている全ての主語の連鎖関係が、当該主語から上流または下流に任意に指定する段階の部分主語系譜を抽出して表示する。これを人が検査することにより、要件の妥当性を診断することが出来る。
【００２０】６．本願発明によるプログラム言語変換の説明
本願によるプログラム言語変換方式は、ＬＹＥＥ空間、脈絡、領域座標を用いて行われる部品交換方式である。
６．１  変換方式
０００：プログラム言語変換はプログラム構成部品の置換である。
０００：脈絡は論理部品である。
０００：脈絡の識別子（鍵）は唯一的である。
０００：脈絡の置換はＬＹＥＥ空間上で行われる。
０００：現脈絡並びに其の識別子は現ＬＹＥＥ空間から自動的に求められる。
０００：現脈絡の新脈絡への変換は手作業で行われる。
０００：脈絡の構造は脈絡関数として決定されている。
０００：新脈絡による新ＬＹＥＥ空間の生成は変換制御関数で自動的に行われる。
０００：新プログラムの生成は新ＬＹＥＥ空間から専用プログラムで自動的に行われる。
０００：現定義体部品は事前に手作業により新定義体部品に置き換えられる。
０００：定義体部品の識別子は脈絡と同様唯一的に決定される必要がある。
０００：定義体部品の取り扱いは脈絡と同じである。
０００：脈絡、定義体の識別子数は言語種別を問わず概算３００個程度と想定される。
０００：本変換技法を成立させる主たる構成プログラムを示す。
１）現プログラムを正規化するプログラム
２）正規化されたプログラムからＬＹＥＥ空間を自動生成するプログラム
３）ＬＹＥＥ空間から脈絡を自動抽出するプログラム
４）現ＬＹＥＥ空間から新ＬＹＥＥ空間を自動生成するプログラム。変換制御関数と記す。
５）新ＬＹＥＥ空間から新プログラムを編集するプログラム
０００：本変換技法は以下の使途にも適用出来る。
１）プログラムクリ−ニング
２）コンパイラ改善対応
０００：本変換技法により生成される新プログラムの妥当性検証は、論理部品の妥当性性検証の範囲で済ませる事が出来る。
【００２１】６．２  変換制御関数
０００：変換制御関数は１個である。
０００：変換制御関数は、現ＬＹＥＥ空間上の脈絡の識別子に応じて変換関数を選び起動させる。変換関数は部品置換を行う。
【００２２】６．３  脈絡関数
０００：脈絡関数は脈絡の識別子数必要である。
０００：脈絡関数は普遍的である。
０００：脈絡関数は手作業で決定される。
０００：脈絡関数で取り扱われる内容を示す。
１）プログラム構文変換
２）領域変換
３）座標処理
４）変換関数制御用信号
【００２３】６．４  定義体部品の項目
画面、制御ＴＢＬ、定数ＴＢＬ、ＩＯレコ−ド、複写句、ＪＣＬ、組込関数、外部関数、等
【００２４】６．５  本技法の為の事前調査の項目
０００：変換前プログラムと変換後プログラムの以下の項目の変換関係を決定する事が重要である。
１）変換関数の総数を決定する作業
２）外部補助プログラムの内容
３）コンパイラ組込関数
４）マクロプログラム
５）複製句
６）ＡＭ
７）ＤＣ
８）ＤＢ
９）ＤＢテ−ブル
１０）ＪＣＬ
１１）ファイル
１２）画面
１３）再定義命令（実行時に決定される命令）
１４）領域分析（単独、構造型、固定長、可変長（定義領域侵犯型、非侵犯型））
【発明の効果】
【００２５】  従来、われわれが認識出来るプログラム実体は流れ図的な命令列のレベルである。しかし、本当のプログラムの実体は其れではなく其の実行様相にほかならない。従来では其の実行様相を捉える方法がなかった。これは電算機ソフト分野の決定的な見落としである。
故に、其の基で、実施されているプログラムの改善技法は目的地が不明のまま出港する航海の様に試行錯誤的に実施するしか方法がない。其の事がプログラム課題を増長し、作業能率を劣化させる主因である。
本願発明による主語系譜は、プログラム改善作業の羅針盤と位置付けられるもので、単にプログラム課題を明確にし、改善作業を能率化するに止まらず、プログラムの有り様に関するわれわれの認識を根本から改めさせる役割を担う事が出来る。即ち、プログラムの全実行様相はプログラムの命令列の様相とは想像外の隔たりがある。プログラムのソースコードとは桁違いの広がりを持った世界である。其れを本願により表であれグラフであれ可視的に望む任意の範囲で知る事が出来れば、われわれのプログラムに関する認識は、これ迄の経験や理屈を越える事になる。其の効果はプログラム改善技法を飛躍させる発展に繋がる。
更に、要件の妥当性診断においても、主語系譜により任意のデータ項目の成立に関わる全てのデータ項目の連鎖関係と、また当該データ項目が生成に関係する全てのデータ項目の連鎖関係が全実行様相として一望できる。これは正に要件の骨格であり、それが一望できることにより、要件診断の上で効率を飛躍的に高め、要件の骨格の間違いを極小化することができる。例えば社会的インフラのシステムダウンなどの原因が要件設定問題であることが多かったが、この主語系譜による診断で未然に防げる可能性が高い。
更に本願発明によるＬＹＥＥ空間を使って、従来非常に困難であったプログラム言語変換の完全自動化を行うことが出来る。
【図面の簡単な説明】
【００２６】
【図１】本発明の外観
【図２】脈絡の概念図、
【図３】脈絡の連鎖規則
【図４】主語系譜の概念図
【図５】図４で連鎖されている脈絡（９個）
【図６】部分主語系譜の概念
【図７】主語系譜の概念的事例
【図８】図７の主語系譜の脈絡
【図９】参考プログラム
【図１０】参考プログラムのＬＹＥＥ空間
【図１１】参考プログラムの脈絡表
【図１２】グラフ化された主語系譜
【発明を実施する為の形態】
【００２７】  本願は、対象ソースコードの記憶装置、および、記憶装置からソースコードを読込むプログラム、読込んだソースコードから情報を摘出してＬＹＥＥ空間を生成するプログラム、ＬＹＥＥ空間から主語系譜を作成するプログラム、全体或いは任意の主語或いは名詞を起点とする部分主語系譜を取出しそれらから診断情報を導出し表示するプログラム、更にＬＹＥＥ空間の情報と脈絡鍵の変換規則の情報から自動的に言語変換して変換後の言語のソースコードを表示するプログラム、等のプログラムを具備する。
【図１】
2010073203.tif 000003
【図２】
2010073203.tif 000004
【図３】
2010073203.tif 000005
【図４】
2010073203.tif 000006
【図５】
2010073203.tif 000007
【図６】
2010073203.tif 000008
【図７】
2010073203.tif 000009
【図８】
2010073203.tif 000010
【図９−１】
2010073203.tif 000011
【図９−２】
2010073203.tif 000012
【図９−３】
2010073203.tif 000013
【図１０−１】
2010073203.tif 000014
【図１０−２】
2010073203.tif 000015
【図１１−１】
2010073203.tif 000016
【図１１−２】
2010073203.tif 000017
【図１２】
2010073203.tif 000018
【手続補正書】
【提出日】平成21年11月26日(2009.11.26)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
【図１】本発明の外観
【図２】脈絡の概念図、
【図３】脈絡の連鎖規則
【図４】主語系譜の概念図
【図５】図４で連鎖されている脈絡（９個）
【図６】部分主語系譜の概念
【図７】主語系譜の概念的事例
【図８】図７の主語系譜の脈絡
【図９−１】参考プログラム  その１
【図９−２】参考プログラム  その２
【図９−３】参考プログラム  その３
【図１０−１】参考プログラムのＬＹＥＥ空間  その１
【図１０−２】参考プログラムのＬＹＥＥ空間  その２
【図１１−１】参考プログラムの脈絡表  その１
【図１１−２】参考プログラムの脈絡表  その２
【図１２】グラフ化された主語系譜