(57)【特許請求の範囲】
【請求項１】
プログラムの処理単位を表すシンボルおよび各シンボル間の接続関係が図形式で記述された図形式プログラムであって、前記各シンボルには属性情報として入出力の接続先や他のシンボルの呼び出し情報を含む属性情報が付されている図形式プログラムから実行可能な形式のプログラムを自動生成するプログラム自動生成装置において、
前記シンボルの属性情報を用いて図形式プログラムの評価項目を演算する評価手順および該評価項目に関連付けた閾値を含む規約データを保存する規約記憶部と、
図形式プログラムを入力するプログラム入力手段と、
前記規約記憶部に保存されている規約データの中から一または二以上の評価手順を選択し、選択した評価手順に基づいて前記入力した図形式プログラムの評価項目を演算し、この演算結果と該評価項目に関連付けられた閾値とを比較して合格か不合格かを判定し、この判定結果を表示装置へ出力するプログラム検査手段と、
前記図形式プログラムについて、不具合有無の実績データを入力する実績データ入力手段と、
前記実績データをもとに、前記閾値を更新する閾値演算手段と、
を備えたことを特徴とするプログラム自動生成装置。
【請求項２】
前記評価手順の一つは、シンボルの前記属性情報をもとに各シンボルから呼び出される他のシンボルの数を計数して合計値を演算する処理であって、前記プログラム検査手段は、当該処理を実行した結果、すべてのシンボルについて前記合計値が閾値以下のときは合格、その他の場合は不合格と判定することを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項３】
前記評価手順の一つは、シンボルの前記属性情報をもとに各シンボルの入力のデータ数を計数して合計値を演算する処理であって、前記プログラム検査手段は、当該処理を実行した結果、すべてのシンボルについて前記合計値が閾値以下のときは合格、その他の場合は不合格と判定することを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項４】
前記評価手順の一つは、シンボルの前記属性情報をもとに各シンボルの出力のデータ数を計数して合計値を演算する処理であって、前記プログラム検査手段は、当該処理を実行した結果、すべてのシンボルについて前記合計値が閾値以下のときは合格、その他の場合は不合格と判定することを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項５】
前記図形式プログラムの変換要求があったときに、前記プログラム検査手段を起動し、前記判定結果が合格のときのみ、該図形式プログラムから実行可能な形式のプログラムを生成するプログラム変換手段を備えたことを特徴とする請求項１乃至４のいずれか一項に記載のプログラム自動生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図形で記述されたプログラム（以下、「図形式プログラム」という。）からコンピュータが実行可能なコードあるいは汎用のコンパイラを用いて当該コードに翻訳することのできるプログラム（以下、「中間プログラム」という。）を自動生成するプログラム自動生成装置に係り、特に図形式プログラムの段階でその品質の良否を判定することのできるプログラム自動生成装置に関する。
【背景技術】
【０００２】
従来から、プログラム開発の合理化、プログラムの品質向上や納期短縮、あるいは、高度なスキルを要求しない開発を目的として、図形によるプログラム記述に関する提案がなされている。（例えば、特許文献１〜５を参照のこと。）
【０００３】
一般に、図形式プログラムを作成して、コンピュータ実行可能なプログラムに変換する方法は、プログラム設計のより早い段階で生成する作業成果物（図形式プログラム）がそのまま下流工程の成果物（コードないし中間プログラム）に変換されるため、作業の効率化を図ることができる。
【０００４】
しかしながら、一旦下流工程で不具合が発見されると、上流工程の作業へ後戻りする必要が生ずる。このため、上流工程での不具合検出に関する提案も行われている。例えば、特許文献８では、上流工程の成果物である機能仕様書等で品質評価を行う技術が開示されている。また、特許文献９では、設計者に着目し、設計情報に設計者の情報を持たせることにより、設計情報の品質評価を行う技術が開示されている。
【０００５】
これに対して、プログラム自体の品質を検証する手法としては、一般に行われているように、プログラムを実行してその実行結果を評価する方法のほかに、プログラムの構造を評価することにより、検証する方法も提案されている。例えば、特許文献７には、ループなどの構造を評価することによりプログラムを評価する技術が記載されている。また、特許文献６には、変数データの操作構造に着目して評価を行う技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１４１５５号公報
【特許文献２】特開平２−２３５１４４号公報
【特許文献３】特表２００４−５０６９６２号公報
【特許文献４】特開２００３−１９６０８８号公報
【特許文献５】特開平７-４４３５８号公報
【特許文献６】特開平５-１２７８８４号公報
【特許文献７】特開平５-２５０１５４号公報
【特許文献８】特開平５-３１３８８０号公報
【特許文献９】特開平７-２３９７７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献６，７の技術を適用してプログラムの構造を評価することによりプログラムの検証を行おうとすると、一旦、上流工程の成果物である図形式プログラムを下流工程の作業成果物（たとえば、Ｃ言語のプログラムや、アセンブリ言語のプログラムなど）に変換し、これに対して評価を行う必要がある。このため、下流工程の成果物で不適合が発見された場合、再度、上流工程の図形式プログラムに戻り、修正を行う必要があり、効率的ではない。
【０００８】
本発明は、上述のかかる事情に鑑みてなされたものであり、従来よりも効率的に図形式プログラムの品質の良否判定をすることができるプログラム自動生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明に係るプログラム自動生成装置は、プログラムの処理単位を表すシンボルおよび各シンボル間の接続関係が図形式で記述された図形式プログラムであって、各シンボルには属性情報として入出力の接続先や他のシンボルの呼び出し情報を含む属性情報が付されている図形式プログラムから実行可能な形式のプログラムを自動生成するプログラム自動生成装置において、シンボルの属性情報を用いて図形式プログラムの評価項目を演算する評価手順および該評価項目に関連付けた閾値を含む規約データを保存する規約記憶部と、図形式プログラムを入力するプログラム入力手段と、規約記憶部に保存されている規約データの中から一または二以上の評価手順を選択し、選択した評価手順に基づいて入力した図形式プログラムの評価項目を演算し、この演算結果と該評価項目に関連付けられた閾値とを比較して合格か不合格かを判定し、この判定結果を表示装置へ出力するプログラム検査手段と、を備えたことを特徴とする。
【００１０】
本発明では、図形（シンボル）の属性情報をもとにある評価項目を演算する評価手順とその評価項目ごとに予め定められた閾値によって図形式プログラムを評価するための規約データを作成し、この規約データをあらかじめ保存しておく。そして、この規約データを用いて、評価手順を実行することにより、図形式プログラムが合格か不合格かを判定する。
【００１１】
本発明に係るプログラム自動生成装置は、さらに、図形式プログラムの変換要求があったときに、プログラム検査手段を起動し、判定結果が合格のときのみ、該図形式プログラムから実行可能な形式のプログラムを生成するプログラム変換手段を備えたことを特徴とする。
【００１２】
本発明では、図形式プログラムの変換要求があったときに、直ちにプログラムを変換するのではなく、まず図形式プログラムが規約を満足するか否かを判定し、規約を満足しているときのみ図形式プログラムの変換を実行する。なお、規約を満足していない場合は、表示装置へ規約を満足していないことを示すアラームを出力し、設計者の確認入力により図形式プログラムの変換を実行するようにしても良い。
【００１３】
好ましくは、評価手順として次の処理を実行するのが良い。
（１）シンボルの属性情報をもとに各シンボルから呼び出される他のシンボルの数を計数して合計値を演算する処理
（２）シンボルの属性情報をもとに各シンボルの入力のデータ数を計数して合計値を演算する処理
（３）シンボルの属性情報をもとに各シンボルの出力のデータ数を計数して合計値を演算する処理
そして、プログラム検査手段は、上記（１）〜（３）のいずれかの処理を実行した結果すべてのシンボルについて計数の合計値がそれぞれの評価手順ごとに関連付けられた閾値以下のときは合格、いずれか一つのシンボルでも計数の合計値が該評価手順に関連付けられた閾値を超えるときは不合格と判定する。
【００１４】
なお、上記（１）〜（３）の処理はそれぞれ単独で実行しても良いし、任意に組み合わせて実行しても良い。
【００１５】
好ましくは、プログラム変換手段によって図形式プログラムを変換後の不具合の有無の実績データを入力し、上記の評価項目（各シンボルの入力データ数、出力データ数、呼び出される他のシンボル数）に関連付けて不具合有無の件数をそれぞれ累積し、これをもとに規約データの閾値を更新するようにすると良い。
【発明の効果】
【００１６】
本発明によれば、上流工程である図形式プログラムの段階で、図形式プログラムに用いられているシンボルの属性情報を用いて、図形式プログラムの品質を効率的に評価することができるので、プログラム変換後の下流工程での不具合の検出による後戻り作業を減少させることができる。これにより、品質の高いプログラムを迅速に開発することが可能になる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態によるプログラム自動生成装置１の装置構成図である。
【図２】本発明の第１の実施の形態によるプログラム自動生成装置１の機能ブロック図である。
【図３】図形式プログラムの一例の説明図である。
【図４】図３の図形式プログラムがプログラム記憶部１０５に保存されている状態でのデータ例である。
【図５】図２の規約記憶部１０６のデータ構成図である。
【図６】図２のプログラム検査手段１０２の呼び出し数による検査処理の手順を示すフローチャートである。
【図７】図６の処理で不合格と判定される図形式プログラムの例である。
【図８】図２のプログラム検査手段１０２の入力数による検査処理の手順を示すフローチャートである。
【図９】図８の処理で用いられる入力数管理テーブルの構成図である。
【図１０】図８の処理で不合格と判定される図形式プログラムの例である。
【図１１】図２のプログラム検査手段１０２の出力数による検査処理の手順を示すフローチャートである。
【図１２】図１１の処理で用いられる入力数管理テーブルの構成図である。
【図１３】図１１の処理で不合格と判定される図形式プログラムの例である。
【図１４】プログラム検査手段１０２の他の実施例による頁ごとの入力数および出力数による検査処理の手順を示すフローチャートである。
【図１５】従来のプログラム作業手順のフローチャートである。
【図１６】本発明によるプログラム自動生成装置を用いたときのプログラム作業手順のフローチャートである。
【図１７】本発明の第２の本実施の形態によるプログラム自動生成装置１の機能ブロック図である。
【図１８】図１７の実績データ記憶部１０８のデータ構成図である。
【図１９】図１７の閾値演算手段１１０で用いられる閾値算定の演算式である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態を説明する。図１は、本実施の形態によるプログラム自動生成装置１の装置構成図である。この図に示すように、プログラム自動生成装置１は、データを入力する入力装置４０、種々の演算処理を実行する演算装置１０、演算装置１０のプログラム実行等に用いられる主記憶装置２０、データやプログラムを保存する補助記憶装置３０、および、演算結果を表示するディスプレイ装置５０から構成されている。
【００１９】
図２は、本発明の第１の実施の形態によるプログラム自動生成装置１の機能ブロック図である。この図において、プログラム自動生成装置１は、端末１００から図形式プログラムを入力してプログラム記憶部１０５に図形式データとして保存するプログラム入力手段１０１、プログラム記憶部１０５に保存されている図形式プログラムのデータが規約に適合しているか否かを判定し、検査結果を表示部１０４へ出力するプログラム検査手段１０２、および、プログラム記憶部１０５に記憶されている図形式プログラムのデータから生成プログラム１０７を生成するプログラム変換手段１０３を有している。なお、端末１００は、入力装置４０とディスプレイ装置５０を備えており、表示部１０４は端末１００と共有してもよい。
【００２０】
プログラム入力手段１０１、プログラム検査手段１０２、プログラム変換手段１０３は、演算装置１０で実行される機能である。また、規約記憶部１０６、プログラム記憶部１０５、および生成プログラム１０７は補助記憶装置３０に保存されるが、それぞれのデータは、必要により主記憶装置２０に転送され演算処理に利用される。
【００２１】
次に、上記の構成を有するプログラム自動生成装置１の動作を説明する。
プログラム開発者は、プログラム入力手段１０１によって端末１００上に表示されるユーザインタフェース画面を通して図形式プログラムを入力する。入力された図形式プログラムはプログラム記憶部１０５にデータ化されて保存される。次に、プログラム検査手段１０２は、規約記憶部１０６に記憶されている規約データを用いて、プログラム記憶部１０５に保存されている図形式プログラムを評価し、合格、不合格等の検査結果を表示部１０４に出力する。
【００２２】
プログラム開発者は、表示部１０４に表示される検査結果を確認して、不合格の項目があれば、端末１００を介して修正する。この作業を、不合格の項目がなくなるまで継続する。全ての項目が合格になると、端末１００からプログラム変換手段１０３を起動して、プログラム記憶部１０５に記憶されている図形式プログラムを生成プログラム１０７に変換する。
【００２３】
生成プログラム１０７とは、例えば、Ｃ言語で記述されたプログラムのように、汎用のコンパイラによって実行可能な形式に変換可能なプログラムであっても良いし、直接実行可能なアセンブリ言語のプログラムやロードモジュールであってもよい。
【００２４】
図３は、プログラム開発者が端末１００を介して入力する図形式プログラムの一例を表示したものである。図３において、図形式プログラムは、属性の付された処理単位２ａ，２ｂのシンボルを接続することによって表現される。図３中、大きなボックス状のシンボルで表示されている処理単位２ａは、論理的下位階層にさらに複数の処理単位を有する上位の処理単位であり、小さなボックス状のシンボルで表示されている処理単位２ｂは、演算子などのプリミティブな機能の処理単位であることを表している。各ボックス中央の記号「Ａ」「Ｂ」「Ｃ」「Ｄ」は、処理単位の識別情報（ＩＤ）を示す。各ボックスの下には処理単位の種別、機能、パラメータなどの属性情報が表示されている。また、処理単位間は、接続線で結ばれ、各接続線には接続ＩＤ「ａ」「ｂ」「ｃ」が表示されている。
【００２５】
また、処理単位２ａには、別画面ないし別頁でさらに詳細な処理単位２ａまたは処理単位２ｂで構成されていることを示す属性情報が付されている。図３の例で言えば、属性情報の一行目に「kind:Limit,p10」と表示されているが、これは、画面頁p10に論理的下位層の回路が存在することを意味している。図形式プログラムは、端末１００の画面上では図３に示すように各シンボルの接続で示されるが、プログラム記憶部１０５には、図４で示すようなデータ形式で保存されている。図４の例では、接続単位である接続ＩＤごとに入力側シンボル、出力側シンボルの順でそれぞれのＩＤが関連付けられて保存されている。また、各接続単位の下に各シンボルの属性情報が保存されている。
【００２６】
＜プログラム検査処理＞
図形式プログラムの検査のために、予め規約記憶部１０６に規約データを保存しておく。図５に規約データの構成を示す。規約データは、評価項目と各評価項目に対応する閾値を記憶する規約管理テーブルと、各評価項目の評価手順を実行するプログラムから構成される。
【００２７】
プログラム検査手段１０２が実行する検査の一例としては、例えば、呼び出し数で評価する方法がある。これは、項目処理単位２ａの中に含まれる下位階層の処理単位２ａまたは処理単位２ｂの呼び出し数を計数し、その計数値が予め定めた閾値を超えているときに、不合格と判定するものである。なお、呼び出し数は、上位の処理単位にリンク付けされている下位の処理単位のシンボル数を計数することによって算出する。
【００２８】
図６は、プログラム検査手段１０２が、この呼び出し数を計数して、合格、不合格を判定する手順を示すフローチャートである。
次に図６の呼び出し数検査処理の手順を説明する。
【００２９】
設計者は端末１００を介して評価項目Ｎｏ．３（呼び出し数）の実行要求を入力する。これにより、プログラム検査手段１０２は、規約記憶部１０６の規約管理テーブルを参照して、評価項目Ｎｏ．３に関連付けられた評価手順実行プログラム３をロードして起動する。なお、起動のタイミングはこれに限らず、例えばプログラム変換手段１０３の起動時にプログラム変換処理の前に起動されるようにしても良い。
【００３０】
評価手順実行プログラム３は起動されると、まず、カウンタを初期化する（Ｓ１０１）。次に評価手順実行プログラム３は、全ての処理単位について、そのシンボルに付随する属性情報から、その処理単位がさらに論理的下位階層にある処理単位を呼び出しているか否かを判定する（Ｓ１０３）。図４の例ではシンボルの属性情報の一行目に論理的下位層の接続先のカラム（図４に示す「,p10」の欄）を有している場合は、呼び出し有りとして判定する。論理的下位階層の処理単位を呼び出すものであった場合に評価手順実行プログラム３は、カウンタをインクリメントする（Ｓ１０４）。全ての処理単位について処理が終わった後に（Ｓ１０２ａ，Ｓ１０２ｂ）、評価手順実行プログラム３は、カウンタ値が閾値以上であるか判定し（Ｓ１０５）、閾値以上であったときに不合格と判定し（Ｓ１０７）、そうでなかったときに合格と判定する（Ｓ１０６）。
【００３１】
上記の検査処理によって不合格と判定される図形式プログラムの例を図７に示す。規約管理テーブルの評価項目Ｎｏ．３（呼び出し数）の閾値は２５である。一方、図７では論理的下位階層を有する処理単位２ａの数の合計は３０であり、閾値を超えるためプログラム検査手段１０２は不合格と判定する。
【００３２】
また、他の検査例としては、入力数で評価する方法がある。これは、処理単位の記述の先頭にある外部からのデータ入力の端子の数を計数し、その数が閾値を超えたときに、不合格と判定するものである。このデータ入力の処理単位は、実行可能な形式のプログラムに変換されたときに、変換後の言語がＣ言語であったときには、関数の引数や、グローバル変数による値渡しなどに変換される。
【００３３】
次に、図８を用いて図形式プログラムの入力数を検査する手順を説明する。
プログラム検査手段１０２は、入力数を検査するための評価手順実行プログラム１を起動すると、まず、図９に示す入力数管理テーブルをクリアする（Ｓ３０１）。ここで入力数管理テーブルは、主記憶装置２０または補助記憶装置３０上に一時的に作成されるテーブルであり、シンボル名とそのシンボルＩＤとそのシンボルＩＤの入力数を関連付けて保存するようになっている。ステップＳ３０１の処理では、初期状態として、このシンボルＩＤと入力数ともに全て削除する。
【００３４】
そしてプログラム検査手段１０２は、プログラム記憶部１０５に保存されている検査対象の図形式プログラムのデータにアクセスして、その全ての接続について以下の処理を繰り返す（Ｓ３０２ａ，Ｓ３０２ｂ）。まずプログラム検査手段１０２は、各接続ＩＤの入力位置のシンボルＩＤを抽出する（Ｓ３０３）。図４の例では、接続ＩＤからコンマで区切られた２つ先のカラムが入力位置のシンボルＩＤになっているので、この位置のシンボルＩＤを抽出する。
【００３５】
次にプログラム検査手段１０２は、抽出したシンボルＩＤが入力数管理テーブルに存在するか否かを判定し（Ｓ３０４）、存在する場合は、そのシンボルＩＤの入力数をインクリメントする（Ｓ３０５）。抽出したシンボルが入力数管理テーブルに存在しない場合、プログラム検査手段１０２は、入力数管理テーブルに抽出したシンボルＩＤを登録して、その入力数を１にセットする（Ｓ３０６）。
【００３６】
全ての接続ＩＤについて、ステップＳ３０３〜ステップＳ３０６の処理を繰り返した後、プログラム検査手段１０２は入力数管理テーブルに入力数が閾値以上のシンボルＩＤが存在するか否かを判定し（Ｓ３０７）、存在する場合は不合格（Ｓ３０８）、存在しない場合は合格（Ｓ３０９）と判定する。
【００３７】
入力数について不合格と判定される例を図１０に示す。この図は、データ入力の端子を多く持ちすぎているために不合格となる例である。例えば閾値が５の場合、図１０の処理単位２ａは１１個の入力端子が記述されているため不合格になる。
【００３８】
さらに、他の検査例としては、出力数で評価する方法がある。これは、処理単位の記述の末端にある外部へのデータ出力の端子の数を計数し、その数が閾値を超えたときに、不合格と判定するものである。このデータ出力の処理単位は、実行可能な形式のプログラムに変換されたときに、変換後の言語がＣ言語であったときには、関数の戻り値であったり、グローバル変数による値渡しなどに変換される。
【００３９】
次に、図１１を用いて図形式プログラムの出力数を検査する手順を説明する。
プログラム検査手段１０２は、出力数を検査するための評価手順実行プログラム２を起動すると、図１２に示す出力数管理テーブルをクリアする（Ｓ４０１）。ここで出力数管理テーブルは、入力数管理テーブルと同様に主記憶装置２０または補助記憶装置３０上に一時的に作成されるテーブルであり、シンボル名とそのシンボルＩＤとそのシンボルＩＤの出力数を関連付けて保存するようになっている。ステップＳ３０１の処理では、初期状態として、このシンボルＩＤと出力数ともに全て削除する。
【００４０】
そしてプログラム検査手段１０２は、プログラム記憶部１０５に保存されている検査対象の図形式プログラムのデータにアクセスして、その全ての接続について以下の処理を繰り返す（Ｓ４０２ａ，Ｓ４０２ｂ）。まずプログラム検査手段１０２は、各接続ＩＤの出力位置のシンボルＩＤを抽出する（Ｓ４０３）。図４の例では、接続ＩＤからコンマで区切られた次のカラムが出力位置のシンボルＩＤになっているので、この位置のシンボルＩＤを抽出する。
【００４１】
次にプログラム検査手段１０２は、抽出したシンボルＩＤが出力数管理テーブルに存在するか否かを判定し（Ｓ４０４）、存在する場合は、そのシンボルＩＤの出力数をインクリメントする（Ｓ４０５）。抽出したシンボルが出力数管理テーブルに存在しない場合、プログラム検査手段１０２は、出力数管理テーブルに抽出したシンボルＩＤを登録して、その出力数を１にセットする（Ｓ４０６）。
【００４２】
全ての接続ＩＤについて、ステップＳ４０３〜ステップＳ４０６の処理を繰り返した後、プログラム検査手段１０２は出力数管理テーブルに出力数が閾値以上のシンボルＩＤが存在するか否かを判定し（Ｓ４０７）、存在する場合は不合格（Ｓ４０８）、存在しない場合は合格（Ｓ４０９）と判定する。
【００４３】
出力数について不合格と判定される例を図１３に示す。この図は、データ出力の端子を多く持ちすぎているために不合格となる例である。例えば、閾値が５の場合、この図１３の処理単位２ａは１１個の出力端子が記述されているため、不合格になる。
【００４４】
（他の実施例）
上記の図８、図１１の手順では、図形式プログラムの接続関係（図４のａ，ｂ，ｃ）に着目して、シンボルの入力数または出力数を算出し、この入力数、出力数によって合格、不合格を判定したが、入力端子であることを表す「Kind:In」、出力端子であることを表す「Kind:Out」の属性情報に着目して、頁単位で入力される図形式プログラムの頁ごとの入力数、出力数によって合格、不合格を判定するようにしても良い。
図１４に、この属性情報によって図形式プログラムの品質を評価するプログラム検査手段１０２の処理手順を示す。
【００４５】
本実施例によるプログラム検査手段１０２は、頁ごとに外部からの入力の数をカウントする入力数カウンタ、外部への出力の数をカウントする出力数カウンタを備える。
【００４６】
プログラム検査手段１０２は、端末１００を介して入力される起動要求によって起動すると、全ての頁の図形式プログラムに対して順に次の処理を実行する。プログラム検査手段１０２は、まず、その頁の入力数カウンタと、出力数カウンタをリセットして、変数ｉを初期値１にセットする（Ｓ５０２〜Ｓ５０４）。そして、プログラム検査手段１０２は、当該頁の図形式プログラムのｉ行目のデータを抽出して（Ｓ５０５）、抽出したデータ中に属性情報「Kind:In」が含まれているか否かを判定する（Ｓ５０６）。
【００４７】
プログラム検査手段１０２は、この判定の結果、「Kind:In」が含まれている場合は、その頁の入力数カウンタをインクリメントする（Ｓ５０７）。一方、ステップＳ５０６で、抽出したデータ中に属性情報「Kind:In」が含まれていない場合は、プログラム検査手段１０２は、抽出したデータ中に属性情報「Kind:Out」が含まれているか否かを判定する（Ｓ５０８）。プログラム検査手段１０２は、この判定の結果、「Kind:Out」が含まれている場合は、その頁の出力数カウンタをインクリメントする（Ｓ５０９）。
【００４８】
その後、プログラム検査手段１０２は、変数ｉが最終行に達したか否かを判定し（Ｓ５１０）、最終行に達していなければ、変数ｉの数値をインクリメントして（Ｓ５１１）、ステップＳ５０５に移行し、以降の処理を繰り返す。
【００４９】
ステップＳ５１０で最終行に達していた場合は、プログラム検査手段１０２は、次の頁の図形式プログラムについても同様の処理を繰り返し（Ｓ５０２〜Ｓ５１１）、全ての頁の図形式プログラムに対してこの処理を完了すると（Ｓ５０１ａ，Ｓ５０１ｂ）、各頁の入力数カウンタについてカウント値が予め定めた閾値以上の入力数カウンタが存在するか否かを判定し（Ｓ５１２）、存在する場合は不合格（Ｓ５１３）と判定する。
【００５０】
ステップＳ５１２の判定の結果、カウント値が予め定めた閾値以上の入力数カウンタが存在しない場合は、プログラム検査手段１０２は、次に、各頁の出力数カウンタについてカウント値が予め定めた閾値以上の出力数カウンタが存在するか否かを判定し（Ｓ５１４）、存在する場合は不合格（Ｓ５１５）と判定し、存在しない場合は合格（Ｓ５１６）と判定する。
【００５１】
以上は、評価手順実行プログラム１、評価手順実行プログラム２を個別に実行する代わりに上記の手順によって入力数と出力数を一括して検査するようにしたものである。勿論、入力数による検査、出力数による検査のそれぞれに分けて、個別に検査をすることも可能である。
【００５２】
また、頁ごとに個別に合格／不合格の判定を行っても良い。なお、上述した説明は、頁内で処理が完結することを前提にし、意味としては頁内に記述する内容であるが、図形式プログラムを記述する上でプログラムが複数頁に亘って記述された場合であっても、頁と同様な１単位として扱って判定を行っても良い。
【００５３】
本実施例によるプログラム検査手段１０２の処理によれば、特に呼び出される関数が図面単位で記述されているときに有効である。したがって、本実施例による処理を図８、図１１のシンボル単位の処理と共に実行するようにしても良い。
【００５４】
以上説明したように、本実施の形態によれば、図形式プログラムの段階でプログラムの品質の確認をすることができる。このため、従来は図１５のように、コード生成処理（Ｓ１２）後に検査（Ｓ１３）をして合格か不合格かを判定していた作業手順を、図１６のように、コード生成処理（Ｓ１２）の前で検査（Ｓ１３）を実行して不合格の場合は修正する作業手順にできる。これにより、効率的にプログラムを開発することができる。
【００５５】
次に第２の実施の形態を説明する。
本実施の形態は、各シンボルの入力のデータ数など評価項目ごとに不具合の有無の実績を記録していき、実績値基づいて閾値を更新するものである。
【００５６】
図１７は本実施の形態によるプログラム自動生成装置の機能ブロック図である。図２との主な違いは、生成したプログラムに関して、その後の不具合の有無の実績データを入力して実績データ記憶部１０８に保存する実績データ入力手段１０９と、保存されている実績データを用いて評価項目に対応する閾値を演算する閾値演算手段１１０を設けたことである。
【００５７】
なお、本実施の形態では、プログラム検査手段１０２の検査結果は、端末１００に表示するようにしているが、第１の実施の形態のように他の表示装置に表示させるようにしても良い。
図２と同一要素には同一符号を付して説明を省略する。
【００５８】
以下、本実施の形態によるプログラム自動生成装置の動作を第１の実施の形態との違いを中心に説明する。
【００５９】
＜プログラム検査処理＞
本実施の形態によるプログラム検査手段１０２の動作は、基本的に第１の実施の形態と同様であるが、本実施の形態では、プログラム検査手段１０２による図形式プログラムの評価の結果、不合格と判定された場合でもプログラム変換手段１０３による図形式プログラムの変換処理を禁止するのではなく、端末１００からの起動によって、プログラム変換処理を行うことができるものとする。
【００６０】
＜実績データ入力処理＞
設計者や試験者等のユーザは、実績データ入力手段１０９を介して、図形式プログラム単位でフィールドでの一定期間内の不具合の発生の有無を記録する。不具合発生の有無の実績データは、端末１００から入力され、実績データ入力手段１０９によって実績データ記憶部１０８に保存される。
【００６１】
図１８は、実績データ記憶部１０８のデータ構成例である。評価項目ごとに不合格とする閾値の初期値、評価項目に関する図形式プログラムの実際値、この値ごとの不具合有りまたは不具合無しの累積値が関連付けられて保存されている。
【００６２】
たとえば、図１８の例では、評価項目ＮＯ．１のシンボルの入力数による評価の場合、閾値の初期値として「５」が記憶されている。これは、図形式プログラム中シンボルの入力数が５以上になるようなシンボルが存在する場合は、不合格とするという意味である。そして、その図形式プログラムのシンボルの入力値の最大値が実際は「６」であり、フィールドでの動作確認試験等の結果、不具合が発生した場合は、実際値「６」の不具合有りの数値を１加算する。一定期間の間で不具合が発見されないときは、実際値「６」の不具合無しの数値を１加算する。
他の評価項目についても同様に実績データによって、不具合の有無の累積値を更新する。
【００６３】
＜閾値演算処理＞
実績データ入力手段は、実績データの入力が完了すると、閾値演算手段１１０を起動する。閾値演算手段１１０は起動されると、図１９に示した演算式によって閾値を算出する。
【００６４】
したがって、実績が無い場合は、初期値が閾値となり、閾値演算手段１１０は、規約記憶部１０６の閾値をこの値に更新する。
【００６５】
例えば、図１８を例に説明すると、評価項目Ｎｏ．１の初期値が、「５」、シンボルの入力数の最大値が「５」のときの不具合有り件数が「３」、不具合無し件数が「０」、シンボルの入力数の最大値が「６」のときの不具合有り件数が「５」、不具合無し件数が「６」であり、これ以外に入力数の最大値が存在しないと仮定し、不具合有りの重み付けを「１」、不具合無しの重み付けを「０」とすると、（１）式より、
閾値＝｛５＋１×（５×３＋６×５）＋０×（５×０＋６×６）｝／１５  ＝  ３．３
となる。
以降、プログラム検査手段１０２は、この新しい閾値を用いて合格、不合格の判定を行う。
【００６６】
以上、本実施の形態によれば、第１の実施の形態の効果に加え、実績データによって閾値を更新するので、精度の高い検査が可能になる。また、設計部門や設計者の能力によって、作成した図形式プログラムの品質が異なる場合があるので、部門や設計者ごとに実績データを保存・管理するようにして、このデータによって閾値を求めるようにすれば、さらに精度良く品質管理が出来るようになる。
【００６７】
なお、上記の説明において、プログラム検査手段は、評価手順の実行の結果、合格、不合格の判定結果を出力するようにしたが、プログラム検査手段の出力はこれに限らず、例えば判定結果が不合格の場合に、不合格の評価項目と閾値に並べて検査をした図形式プログラムの実際の値を表示するようにしても良いし、閾値と実際の値の乖離度や、不合格のシンボルを図形式プログラム上で識別表示させるようにしても良い。
【００６８】
また、不具合が発生時に、その図形式プログラム上で、評価項目ごとに最大値を有するシンボルから順に小さい値のシンボルを識別表示していき、設計者は識別表示された順にプログラム設計上の誤りの有無を確認することによって、効率的な改修作業が可能になる。
【００６９】
本発明は、上述の実施の形態に限定されること無く、その要旨を逸脱しない範囲で種々変形して実施することができる。また、上記の各実施の形態で説明した各手段やデータベースの構成等は、実施形態を跨って任意に組合せ可能であることは明白である。
【符号の説明】
【００７０】
１      プログラム自動生成装置
１０    演算装置
２０    主記憶装置
３０    補助記憶装置
４０    入力装置
５０    ディスプレイ装置
１００    端末
１０１    プログラム入力手段
１０２    プログラム検査手段
１０３    プログラム変換手段
１０４    表示部
１０５    プログラム記憶部
１０６    規約記憶部
１０７    生成プログラム
１０８    実績データ記憶部
１０９    実績データ入力手段
１１０    閾値演算手段
【図１】
0005573287.tif 000002
【図２】
0005573287.tif 000003
【図３】
0005573287.tif 000004
【図４】
0005573287.tif 000005
【図５】
0005573287.tif 000006
【図６】
0005573287.tif 000007
【図７】
0005573287.tif 000008
【図８】
0005573287.tif 000009
【図９】
0005573287.tif 000010
【図１０】
0005573287.tif 000011
【図１１】
0005573287.tif 000012
【図１２】
0005573287.tif 000013
【図１３】
0005573287.tif 000014
【図１４】
0005573287.tif 000015
【図１５】
0005573287.tif 000016
【図１６】
0005573287.tif 000017
【図１７】
0005573287.tif 000018
【図１８】
0005573287.tif 000019
【図１９】
0005573287.tif 000020