(57)【要約】【課題】ユーザインターフェースを扱う機能と図形式のプログラムをテキスト形式のプログラムに変換する機能をそれぞれ独立して管理して、ユーザインターフェースを扱う機能に変更があった場合でも、必要に応じて変更前のプログラムを生成すること。【解決手段】論理素子シンボルに対応する機能または論理素子シンボル間の接続関係をプログラム生成処理の処理単位ごとに各処理単位の識別情報である項目を付して図形式データとして記憶装置に保存するユーザインターフェース手段４と、図形式データをもとに処理単位ごとにプログラムの生成処理を実行するコード生成手段５とを備え、ユーザインターフェース手段およびコード生成手段はそれぞれ独立して差し替え可能にする。【選択図】  図２
2011022682.tif 000002
【特許請求の範囲】
【請求項１】
論理素子シンボルと該論理素子シンボル間の接続関係によって表される図形情報に基づいてプログラムを生成するプログラム自動生成装置であって、
前記論理素子シンボルに対応する機能または前記論理素子シンボル間の接続関係をプログラム生成処理の処理単位ごとに各処理単位の識別情報である項目を付して図形式データとして記憶装置に保存するユーザインターフェース手段と、
前記図形式データをもとに前記処理単位ごとにプログラムの生成処理を実行するコード生成手段と、を備え、
前記ユーザインターフェース手段および前記コード生成手段はそれぞれ独立して差し替え可能であることを特徴とするプログラム自動生成装置。
【請求項２】
前記図形式データは、前記ユーザインターフェース手段の版数データを含み、
前記コード生成手段は、前記版数データを取得して前記図形式データを処理可能か否かを判定し、処理可能でないと判定した場合は異常処理を実行することを特徴とする請求項１に記載のプログラム自動生成装置。
【請求項３】
請求項１に記載のプログラム自動生成装置であって、
さらに、前記ユーザインターフェース手段と前記コード生成手段が正常に機能するように該両手段の版数データの組み合わせ情報を保存する版数管理テーブルを備え、
前記コード生成手段は、起動時に前記組み合わせ情報に基づいて、該ユーザインターフェース手段の版数データと該コード生成手段の版数データの組み合わせが正当か否かを判定し、正当であると判定された場合にのみ該ユーザインターフェース手段によって保存された前記図形式データをもとにプログラムの生成処理を実行することを特徴とするプログラム自動生成装置。
【請求項４】
請求項１に記載のプログラム自動生成装置であって、
さらに版数データの異なる複数のコード生成手段と、
前記複数のコード生成手段のうち起動すべきコード生成手段を特定するコード生成指定手段と、を備え、
前記ユーザインターフェース手段は、前記コード生成指定手段によって特定されたコード生成手段を起動することを特徴とするプログラム自動生成装置。
【請求項５】
請求項１に記載のプログラム自動生成装置であって、
さらに項目ごとにユーザインターフェース手段の版数データを特定する項目別版数管理テーブルを備え、
前記コード生成手段は、処理すべきか否かの基準となる版数データを起動時に取得し、  前記図形式データの項目ごとに前記項目別版数管理テーブルを参照して、前記項目の版数データと前記取得した版数データとに基づいて処理を実行すべきか否かを判定し、処理すべきであると判定された項目についてのみ所定の処理を実行することを特徴とするプログラム自動生成装置。
【請求項６】
前記コード生成手段は、処理を行った各項目の版数データのうち、最大の版数データを演算して生成したプログラムに関連付けて出力することを特徴とする請求項５に記載のプログラム自動生成装置。
【請求項７】
前記コード生成手段は、前記項目の版数データと前記入力した版数データとに基づいて処理を実行すべきか否かを判定した結果、処理すべきでないと判定した項目と、前記項目別版数管理テーブルで該項目に関連付けられた版数データとを記録しておき、プログラムの生成処理の終了後に、前記記録した内容を出力することを特徴とする請求項５または６に記載のプログラム自動生成装置。
【請求項８】
前記コード生成手段は、前記図形式データが前記ユーザインターフェース手段の版数データ変更その他の要因により拡張され、前記コード生成手段が処理不可能な項目を含む場合であっても処理可能な項目のみを実行してプログラムを生成することを特徴とする請求項１乃至７のいずれか一に記載のプログラム自動生成装置。
【請求項９】
前記ユーザインターフェース手段は、図形式データにアクセスするための前記記憶装置内の位置関係を表すルート情報を前記コード生成手段に渡し、
前記コード生成手段は、該ルート情報をもとに前記図形式データを取得し、該図形式データに基づいてプログラムを生成することを特徴とする請求項１乃至８のいずれか一に記載のプログラム自動生成装置。
【請求項１０】
前記コード生成手段は、ルート情報に基づいて前記ユーザインターフェース手段の実行プログラムから最も近い位置に存在するコード生成手段が起動されることを特徴請求項９に記載のプログラム自動生成装置。
【請求項１１】
コンピュータ装置を用いて、図形情報をもとにプログラムを生成するプログラム自動生成方法であって、
論理素子シンボルと該論理素子シンボル間の接続関係によって表される図形情報の入力を受け付ける段階と、
前記論理素子シンボルに対応する機能または論理素子シンボル間の接続関係をプログラム生成処理の処理単位ごとに各処理単位の識別情報である項目を付して図形式データを生成する段階と、
図形式データの項目ごとに版数データ付して前記コンピュータ装置の記憶装置に保存する段階と、
処理すべきか否かの基準となる版数データを入力し、処理対象の前記図形式データの項目ごとに前記記憶装置に保存されている該当する項目の版数データと比較して、処理すべきであると判定された項目についてのみプログラムの生成処理を行い、処理すべきであると判定されなかった項目は該項目に関連付けられた版数データを付して記録する段階と、
プログラムの生成処理の終了後に、前記記録した内容を出力する段階と、
を含むことを特徴とするプログラム自動生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図形によってプログラムを記述し、その図形情報をもとにコンピュータが実行あるいは翻訳可能なプログラムを自動生成するプログラム自動生成装置およびプログラム自動生成方法に関する。
【背景技術】
【０００２】
通常、プログラムの製作に際しては、Ｃ言語などの高級言語を利用して原始プログラムを記述し、コンパイラを用いてコンピュータが実行可能な形式に変換するという方法が採られている。近年、プログラムの品質や生産性向上のために、図形を用いて原始プログラムを記述し、これをコンピュータが直接実行可能な形式に変換したり、あるいは、Ｃ言語などの従来のプログラム開発環境を用いればコンピュータが実行可能な形式に変換できるような中間的な形式（多くはテキスト形式）に変換したりする技術が提案されている。この方法は、設計者が記述するプログラムを図形で表現するため、視認性が良く生産性が向上すると共に、プログラムの不具合が容易に発見できるようになるため品質の向上も期待できる。
【０００３】
従来の図形式のプログラミング技術の例として、特許文献１には、アセンブラのライブラリに対応した図形情報で記述される機能ブロック図によりプログラムを自動生成する技術が開示されている。特許文献２には、図形式で記述したプログラム（モデル）を演算周期ごとに分割し重複メモリを削除するプログラム自動生成装置の技術が開示されている。特許文献３には、定数データ領域を効率的に扱い組み込みマイコンで扱えるプログラムを自動生成するための技術が開示されている。特許文献４には、プログラム記憶手段、プログラム表示手段、プログラム配置手段、履歴テーブル作成手段、操作シミュレーション手段により構成される、プログラム自動生成装置の技術が、開示されている。特許文献５には、グラフィックシンボルを画面上でつなぎ合わせて制御ソフトウェアを設計するプログラム自動生成装置の技術が開示されている。特許文献６には、論理素子シンボルとその間の接続関係から自動的に実行順序を決定するプログラム自動生成装置の技術が開示されている。特許文献７には、属性情報が付記されて図示された制御プログラム仕様に基づいて制御用プログラムを自動生成する装置の技術が開示されている。特許文献８には、グラフィカル・オブジェクトの特性や関係を定義してグラフィカル・エディタによりプログラムの動作を記述するビジュアル・プログラミング方法の技術が開示されている。特許文献９には、絵情報により表現された、標準モジュールを組み合わせて作成される非標準モジュールにより制御用プログラムを記述するプログラム自動生成装置の技術が開示されている。
【０００４】
このような図形式プログラムからコンピュータが実行／翻訳可能なプログラムを生成するプログラム自動生成装置を構成するには、図形の入力・検索・管理などのユーザインターフェース（ＣＡＤインターフェース）を扱う機能と、図形式のプログラムをテキスト形式のプログラムに変換する機能が必要となる。
【０００５】
特許文献１１には、ＣＡＤインターフェース機能によって構造化プログラムを扱うための技術が開示されている。また、特許文献１２には、図形式のプログラムをテキスト形式のプログラムに変換する機能に関する技術が開示されている。従来は、例えば特許文献６の図１に記載されているように、これらの機能が一体として実装されていた。これは、プログラム自動生成装置のユーザインターフェース機能が改良されることに伴って、コード生成機能により生成されるコードも改良されることがあり得るからである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１２８３４５号公報
【特許文献２】特開２００６−２０１８４１号公報
【特許文献３】特開２００２−９１７６２号公報
【特許文献４】特開平７−２００２７７号公報
【特許文献５】特開平６−３０１５４８号公報
【特許文献６】特開平５−８８８６９号公報
【特許文献７】特開平５−２６５７３４号公報
【特許文献８】ＷＯ９８／４０８１７
【特許文献９】特開平２−２７７１２６号公報
【特許文献１０】特開昭６４−７６２７８号公報
【特許文献１１】特開２００７−１１５０７号公報
【特許文献１２】特開２００６−２８５４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特に組み込みの分野では、特許文献２で指摘されているように、実行タイミングが厳しいという事情がある。これは、特許文献７にも、ハードウェアの情報への言及があるとおり、組み込み分野では、ハードウェアと協調動作をするようにプログラムが製作される必要があることが一因となっている。
【０００８】
プログラム自動生成装置の更新によりユーザインターフェース等の機能が変更された場合、同時に図形式プログラムをもとに生成されるプログラムにも変更が生じると、実行タイミングが変化する可能性がある。このため、既存のプログラムの再利用を考えた場合、変新されたプログラム自動生成装置によって生成されたプログラムを使用するのが難しくなり、更新されたプログラム自動生成装置自体の使用が難しくなるという問題があった。
【０００９】
また、特許文献２や特許文献３で指摘されているように、メモリについても組み込みソフトでは余裕がない場合が多く、メモリの利用状況が変化した場合も、同様に互換性がないとみなされ、新しいプログラム自動生成装置の適用が難しくなるという問題もあった。
【００１０】
さらに、プログラム自動生成装置に図形式プログラムの記述からコンピュータが実行／翻訳可能なプログラムを自動生成するまでの一連の機能を一体として実装しようとすると、図形の入力などのユーザインターフェースを扱う機能と、図形式のプログラムをテキスト形式のプログラムに変換する機能のように、異なる性質のプログラムを同時に製作する必要があり、効率的に製作することができないという問題もあった。
【００１１】
本発明は、上述のかかる事情に鑑みてなされたものであり、ユーザインターフェースを扱う機能、および図形式のプログラムをテキスト形式のプログラムに変換する機能をそれぞれ独立して管理でき、ユーザインターフェースを扱う機能に変更があった場合でも、必要に応じて変更前のコードを生成することのできるプログラム自動生成装置およびプログラム自動生成方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係わるプログラム自動生成装置は、論理素子シンボルと該論理素子シンボル間の接続関係によって表される図形情報に基づいてプログラムを生成するプログラム自動生成装置であって、論理素子シンボルに対応する機能または論理素子シンボル間の接続関係をプログラム生成処理の処理単位ごとに各処理単位の識別情報である項目を付して図形式データ（２）として記憶装置（１２）に保存するユーザインターフェース手段（４）と、図形式データをもとに処理単位ごとにプログラムの生成処理を実行するコード生成手段（５）と、を備え、ユーザインターフェース手段およびコード生成手段はそれぞれ独立して差し替え可能であることを特徴とする。
【００１３】
本発明のユーザインターフェース手段は、コード生成手段に渡す図形式データをコード生成手段の処理単位ごとに作成するので、ユーザインターフェース手段とコード生成手段を別々に構成することが可能となり、これにより、コード生成手段のみを差し替えて動作させることができるようになる。
【００１４】
好ましくは、この図形式データは、ユーザインターフェース手段の版数（バージョン）データを含み、コード生成手段は、版数データを取得して図形式データを処理可能か否かを判定し、処理可能でないと判定した場合は異常処理を実行するようにすると良い。
【００１５】
これにより、コード生成手段は起動時にまず図形式データ中の版数データのみを検索すればよく、迅速に処理の可否の判定をすることができる。ここで、版数データとは、プログラム等の更新履歴を表すいわゆるバージョン情報のほか、更新によってデータ形式を識別できるデータを追加するなど実質的に版数として管理可能な情報も含む。
【００１６】
本発明によるプログラム自動生成装置は、さらに、ユーザインターフェース手段とコード生成手段が正常に機能するように該両手段の版数データの組み合わせ情報を保存する版数管理テーブル（８）を備え、コード生成手段は、起動時に組み合わせ情報に基づいて、該ユーザインターフェース手段の版数データと該コード生成手段の版数データの組み合わせが正当か否かを判定し、正当であると判定された場合にのみ該ユーザインターフェース手段によって保存された図形式データをもとにプログラムの生成処理を実行することを特徴とする。
【００１７】
本発明では、正常に機能する組み合わせとなるユーザインターフェース手段とコード生成手段の版数を管理するようにする一方、ユーザインターフェース手段は、自己の版数データをコード生成手段に渡すことによって、コード生成手段は正当な組み合わせか否かを正確に判定することができる。
【００１８】
なお、版数データの異なる複数のコード生成手段と、複数のコード生成手段のうち起動すべきコード生成手段を特定するコード生成指定手段とを設け、ユーザインターフェース手段は、コード生成指定手段によって特定されたコード生成手段を起動するようにしてもよい。
【００１９】
また、本発明に係わるプログラム自動生成装置は、さらに項目ごとにユーザインターフェース手段の版数データを特定する項目別版数管理テーブル（７）を備え、コード生成手段は、処理すべきか否かの基準となる版数データを起動時に取得し、図形式データの項目ごとに項目別版数管理テーブルを参照して、項目の版数データと取得した版数データとに基づいて処理を実行すべきか否かを判定し、処理すべきであると判定された項目についてのみ所定の処理を実行することを特徴とする。
【００２０】
本発明では、処理単位の項目ごとにその機能を追加・更新したときのユーザインターフェース手段の版数データを関連付けて管理して、コード生成手段は、起動時に入力した版数データを基準に処理すべきか否かを判定して処理すべき項目についてのみ生成処理を実行する。これにより、ユーザインターフェース手段の版数が更新されても、既存の組み込みシステムのプログラムと同じ版数のプログラムを生成することができる。
【００２１】
好ましくは、コード生成手段は、処理を行った各項目の版数データのうち、最大の版数データを演算して生成したプログラムに関連付けて出力するようにすると良い。これにより、その生成プログラムの版数の管理ができ、新たにプログラムを生成するような場合に、その版数を指定すれば同等の機能・性能を有するプログラムを生成することができる。また、版数データ指定をしないことによって最新の版数データでプログラムを生成することもできる。
【００２２】
本発明に係わるプログラム自動生成装置のコード生成手段は、項目の版数データと入力した版数データとに基づいて処理を実行すべきか否かを判定した結果、処理すべきでないと判定した項目と、項目別版数管理テーブルで該項目に関連付けられた版数データとを記録しておき、プログラムの生成処理の終了後に、記録した内容を出力することを特徴とする。
【００２３】
本発明では、処理されなかった項目を履歴として記録するので、生成されたプログラムをシステムに組み込む上で問題が無いかどうかを確認ができ、また、必ずしもユーザインターフェース手段のバージョンアップに合わせてコード生成手段をバージョンアップしなくても、既設のシステム対応のプログラムを生成することが可能となる。
【００２４】
好ましくは、コード生成手段は、図形式データがユーザインターフェース手段の版数データ変更その他の要因により拡張され、コード生成手段の処理不可能な項目を含む場合であっても、処理可能な項目のみを実行してプログラムを生成するようにするとよい。
【００２５】
コード生成手段の処理不可能な項目を含む場合に異常終了しないことによって、その版数にあったプログラムの生成が可能になる。
【００２６】
さらに、本発明に係わるプログラム自動生成装置のユーザインターフェース手段は、図形式データにアクセスするための記憶装置内の位置関係を表すルート情報をコード生成手段に渡し、コード生成手段は、該ルート情報をもとに図形式データを取得し、該図形式データに基づいてプログラムを生成することを特徴とする。
【００２７】
このルート情報によって確実にユーザインターフェース手段とコード生成手段の版数のマッチングをとることができる。なお、ルート情報に基づいてユーザインターフェース手段の実行プログラムからもっとも近い位置に存在するコード生成手段が起動されるようにしても良い。
【００２８】
本発明に係わるプログラム自動生成方法は、コンピュータ装置を用いて、図形情報をもとにプログラムを生成するプログラム自動生成方法であって、論理素子シンボルと該論理素子シンボル間の接続関係によって表される図形情報の入力を受け付ける段階と、論理素子シンボルに対応する機能または論理素子シンボル間の接続関係をプログラム生成処理の処理単位ごとに各処理単位の識別情報である項目を付して図形式データを生成する段階と、図形式データの項目ごとに版数データ付してコンピュータ装置の記憶装置に保存する段階と、処理すべきか否かの基準となる版数データを入力し、処理対象の図形式データの項目ごとに記憶装置に保存されている該当する項目の版数データと比較して、処理すべきであると判定された項目についてのみプログラムの生成処理を行い、処理すべきであると判定されなかった項目は該項目に関連付けられた版数データを付して記録する段階と、プログラムの生成処理の終了後に、記録した内容を出力する段階と、を含むことを特徴とする。
【００２９】
本発明では、図形式データをプログラムの処理単位ごとに版数データを付し、入力装置等を介して入力された版数データと比較して、この版数データに基づいて図形式データの項目ごとに処理をするかどうかを決定する。
【発明の効果】
【００３０】
本発明によれば、ユーザインターフェースを扱う機能と、コード生成機能を別々に構成することができるようになり、その結果、コード生成機能のみを差し替えて動作させることができるようになる。これにより、このような図形式プログラムのシステムの版数を更新し、ユーザインターフェースのみならず、コード生成機能により生成されるプログラムに変更が生じる場合にも、必要に応じてコード生成機能を旧版に差し替えて利用することが可能になる。
【００３１】
また、コードの互換性を維持するために、改良されたユーザインターフェースが利用できないという不具合が解消され、より効率的にこのような図形式プログラムのシステムを運用できるようになる。特に、組み込み分野において、プログラムの品質や開発時の生産性の向上を図ることができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態によるプログラム自動生成装置の装置構成図である。
【図２】本発明の第１の実施の形態によるプログラム自動生成装置の機能構成図である。
【図３】図１の補助記憶装置に記憶されるデータの構成例である。
【図４】図２の図形式データの例である。
【図５】本発明の第１の実施の形態によるユーザインターフェース手段４の版数を図形式データ２に記録するようにした例の説明図である。
【図６】コード生成手段５が図形式データについて処理可能な形式であるか否かを判定するときの処理手順を示すフローチャートである。
【図７】第１の実施の形態の一実施例によるプログラム自動生成装置の装置構成図である。
【図８】図７の版数管理テーブル８のデータ構成図である。
【図９】図７のユーザインターフェース手段４の版数データ管理処理手順を示すフローチャートである。
【図１０】図７のコード生成手段５の版数判定処理手順を示すフローチャートである。
【図１１】図４の他の実施例であり、データ形式の拡張の例である。
【図１２】複数のコード生成手段を識別するための機能の説明図である。
【図１３】図１２の他の実施例であり、複数のコード生成手段があるときに切り替えて使用する別の構成例である。
【図１４】図１のコード生成手段５による拡張されたタグのデータを無視する読み込み処理の手順を示すフローチャートである。
【図１５】他の実施例２による版数データ管理処理で用いられる各テーブルの説明図であり、図１５（ａ）はデータ形式の変更等があったか否かを判定するための判定テーブル２１のデータ構成例、図１５（ｂ）は判定テーブル２１の内容をもとに作成されたコード生成手段の更新要否を判定するためのインストーラ用判定テーブル２２のデータ構成例、図１５（ｃ）はインストーラ用判定テーブル２２に基づいてインストーラによって生成される版数管理テーブル８のデータ構成例である。
【図１６】他の実施例２による版数データ管理処理の手順を示すフローチャートである。
【図１７】他の実施例３による版数データ管理処理で用いられる各テーブルの説明図であり、図１７（ａ）はデータ形式の変更等があったか否かを判定するための判定テーブル２１のデータ構成例、図１７（ｂ）判定テーブル２１に基づいてインストーラによって生成される版数管理テーブル８のデータ構成例である。
【図１８】他の実施例３による版数データ管理処理の手順を示すフローチャートである。
【図１９】本発明の第２の実施の形態によるプログラム自動生成装置の機能構成図である。
【図２０】図１９の図形式データ２の構造の説明図である。
【図２１】図１９の項目別版数管理テーブル７のデータ構造図である。
【図２２】図１９のコード生成手段５の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００３３】
以下、本発明の実施の形態を説明する。図１は、本実施の形態によるプログラム自動生成装置１の装置構成図である。この図に示すように、プログラム自動生成装置１は、データを入力する入力装置１３、種々の演算処理を実行する演算装置１０、演算装置１０のプログラム実行等に用いられる主記憶装置１１、データやプログラムを保存する補助記憶装置１２、および、演算結果を表示するディスプレイ装置１４から構成されている。
【００３４】
図２は、本発明の第１の実施の形態によるプログラム自動生成装置１の機能構成図である。図１との関連において説明すると、ユーザインターフェース手段４とコード生成手段５は、実行ファイル形式で、プログラム自動生成装置１の補助記憶装置１２に記憶されており、動作時には、主記憶装置１１に読み込まれて、演算装置１０によって実行される。ユーザインターフェース手段４は、入力装置１３やディスプレイ装置１４を介して図形式プログラム６を対話的に入力し、入力された図形式プログラム６をもとに図形式データ２を作成する機能である。また、コード生成手段５は、この図形式データ２を読み込んで、組み込みシステム用の生成プログラム３を自動生成する機能である。なお、生成プログラムは、コンパイラ入力用の中間プログラムを含む概念である。
【００３５】
このユーザインターフェース手段４とコード生成手段５は演算装置１０の機能としてプログラムによって実現可能である。また、両手段４，５は、別々に補助記憶装置１２に実装されるので、それぞれを独立して差し替えることができる。
【００３６】
ユーザインターフェース手段４を介して作成される図形式データ２やコード生成手段５から出力される生成プログラム３は補助記憶装置１２に記憶される。
【００３７】
補助記憶装置１２は、例えばハードディスクにより構成することができる。図３は、補助記憶装置１２に記憶されるデータの構成例を示したものである。図３では階層ディレクトリ構造のファイルシステムが採用されており、ルートディレクトリの下位に実行ファイルを入れるサブディレクトリとデータファイルを入れるサブディレクトリが別々に設けられている。ユーザインターフェース手段４、および、コード生成手段５は、実行形式のファイルとして実行ファイルを入れるサブディレクトリに格納されている。また、図形式データ２と生成プログラム３は、ファイルとしてデータファイル保存用のサブディレクトリに格納されている。これらのファイルは、単一のファイルであっても良いが、規模が大きいときには、複数のファイル（ファイル群）で構成するようにしても良い。
【００３８】
次に、上記の構成を有するプログラム自動生成装置１の動作を説明する。
設計者は、ユーザインターフェース手段４により、図形式プログラム６をディスプレイ装置１４に表示させながら対話的に入力し、ユーザインターフェース手段４は、その入力されたデータを図形式データ２として保存する。
【００３９】
次に、設計者は、ユーザインターフェース手段４を操作して、コード生成手段５を起動する。このとき、ユーザインターフェース手段４は、同手段４が保存した図形式データ２を識別可能な情報をコード生成手段５に渡す。コード生成手段５はこの情報を取得し、これをもとに、図形式データ２を読み出し、生成プログラム３に変換する。補助記憶装置１２が例えば図３のように管理されているとき、「識別可能な情報」として、図形式データが格納されているファイルのファイル名やパスなど、ファイルを特定できる名称の文字列情報とすることができる。
【００４０】
図４は図形式プログラムの例であり、図４（Ａ）はディスプレイ装置１４に表示されたところを示したものである。また、図４（Ｂ）は、図４（Ａ）に対応する図形式プログラムを図形式データ２に格納する場合のデータの一例を表したものである。ここでは、ＸＭＬ形式のデータとしている。このＸＭＬ形式は、コード生成手段５が処理単位ごとにデータを記述するのに適している。
【００４１】
ところで、本システムのようにユーザインターフェース手段４とコード生成手段５を分離して実行させるようにすると、整合性が問題となる場合がある。そのため、本実施の形態では、ユーザインターフェース手段４の版数を識別データとして図形式データ２に記録するようにする。このときのデータの例を図５に示す。図４（Ｂ）と比べて、＜Ver val="5"＞ のデータが追加になっている。なお、図形式データ２に記録する識別データは、ユーザインターフェース手段４の版数ではなく、図形式データ２のデータ形式の版数でもあっても良い。この場合も、具体的なデータの形としては図５と同様となる。
【００４２】
このようにすれば、コード生成手段５は生成プログラム３を生成するにあたり、図５に示したような識別データを取得し、コード生成手段５が処理不可能な形式であると判定されたときに、異常処理を行うようにし、ユーザインターフェース手段４とコード生成手段５の不整合を防ぐことができる。
【００４３】
コード生成手段５が処理可能な形式であるか否かを判定するフローチャートの例を図６に示す。コード生成手段５には予め取り扱うことのできる版数の有効範囲が設定されており、コード生成手段５が版数データを読み出した後（Ｓ１０１）、版数データが有効範囲であるか否かを判定し（Ｓ１０２）、有効範囲でなかったときには、異常表示をして終了する（Ｓ１０４）。有効範囲であったときは、通常通り、図形式データ２を生成プログラム３に変換して終了する（Ｓ１０３）。
【００４４】
なお、版数データが有効範囲であるか否かを判定するためには、ユーザインターフェース手段４と整合する（すなわち、組み合わせて動作可能な）コード生成手段５の版数を如何に管理するかが重要になる。これについては、図形式データ２のうち実行可能な部分のみを読み取るようにコード生成手段５を構築することにより、以下の構成およびアルゴリズムによって、ユーザインターフェース手段４と整合するコード生成手段５の版数を効率的に管理することができる。
【００４５】
図７は、版数管理を行うための一実施例によるプログラム自動生成装置１の機能構成図である。図２の構成に対して、ユーザインターフェース手段４とコード生成手段５の版数の組み合わせを管理するための版数管理テーブル８を追加している。
【００４６】
図８は、版数管理テーブル８のデータ構成例である。ユーザインターフェース手段４の版数ごとに、データ形式の縮小あるいは変更の有無を表すデータ形式変更等フラグとコード生成手段の版数が関連付けられて保存されている。
【００４７】
次に、図９、図１０を用いて、版数データの管理処理の手順を説明する。
設計者は、ユーザインターフェース手段４のバージョンアップ作業後、その実行ファイルを補助記憶装置１２に登録する際に、バージョンアップの元となった一世代前の版数に対してデータ形式の縮小あるいは変更（以下、変更等という。）があったか否かを入力装置１３を介して入力する。ユーザインターフェース手段４は、その入力情報に基づいて、データ形式の変更等があった場合は（Ｓ４０１で「Ｙｅｓ」）、版数管理テーブル８のデータ形式変更等フラグを「１」に設定する（Ｓ４０２）。一方、データ形式の変更等が無かった場合は（Ｓ４０１で「Ｎｏ」）、版数管理テーブル８のデータ形式変更等フラグを「０」に設定すると共に、対応するコード生成手段５の版数として、一世代前のユーザインターフェース手段４の版数に対応しているコード生成手段５の版数をセットする（Ｓ４０３，Ｓ４０４）。
【００４８】
その後、設計者がコード生成手段５を起動すると、コード生成手段５は、ユーザインターフェース手段４が生成した図形式データ２の中から版数データを抽出する（Ｓ５０１）。この版数データは、上述したようにユーザインターフェース手段４の識別データとしての版数である。
【００４９】
次に、コード生成手段５は、版数管理テーブル８にアクセスして、当該テーブルに、ステップＳ５０１で抽出した版数に対応するコード生成手段の版数が登録されているか否かを判定し（Ｓ５０３）、登録されている場合は、そのコード生成手段の版数を抽出する（Ｓ５０４）。そして、コード生成手段５は、ステップＳ５０４で抽出した版数が自己の版数と一致しているか否かを判定して、一致している場合は、図形式データ２のプログラム生成処理を実行する（Ｓ５０６）。
【００５０】
一方、コード生成手段５は、ステップＳ５０３またはステップＳ５０５で「Ｎｏ」の場合は、注意メッセージを出力して終了する  （Ｓ５０７）。
【００５１】
設計者は、この注意メッセージによって、コード生成手段５をバージョンアップし、版数管理テーブル８のそのユーザインターフェース手段４の版数に関連付けて、バージョンアップしたコード生成手段５の版数を登録する。
【００５２】
以上の処理により、ユーザインターフェース手段４とコード生成手段５の正しい組み合わせを管理することができる。
【００５３】
図８のデータ例に基づいて具体的に説明すると、版数が［５］のユーザインターフェース手段４と整合している版数を有するコード生成手段５の版数は［３］となっている。いま、ユーザインターフェース手段４のデータ形式の変更等を伴わないバージョンアップが行われ、その版数が、［６］、［７］、［８］、となった場合、上記図９の処理によって、これらの版数のユーザインターフェース手段４と整合するコード生成手段５の版数は［３］となる。すなわち、版数［６］、［７］、［８］のユーザインターフェース手段４のバージョンアップの元となった版数［５］のユーザインターフェース手段４と整合するコード生成手段４の版数である［３］が対応付けられることになる。
【００５４】
また、データ形式の変更等のあった版数［９］のユーザインターフェース手段４は、設計者によってバージョンアップされたコード生成手段５の版数［４］がセットされる。このように、データ形式の変更等の有無を判定基準とした版数管理が可能となる。
【００５５】
次に、図形式データ２のうち実行可能な部分のみを読み取るようにコード生成手段５を構築する手法について説明する。
【００５６】
図１１は、データ形式を拡張した例を示したものである。元のデータは、図４に示したものであるが、図４（Ａ）から図１１（Ａ）に拡張されているのは、各ブロックの下に表示されているブロックのコメントである。これにともない、図形式データ２についても、図４（Ｂ）から図１１（Ｂ）に拡張されている。この例では、コメントは、<Blocks>というブロックに記録されるように拡張されている。
【００５７】
このときコード生成手段５は図１４の処理手順でコード生成処理を実行する。図１４において、コード生成手段５は起動されると、全ての下位ノードについて（Ｓ２０１ａ，Ｓ２０１ｂ）、所定のノード名（項目）が存在するか否かを判定する（Ｓ２０２）。次いでコード生成手段４は、ステップＳ２０２で所定のノード名（項目）が存在する場合と判定した場合、さらにそのすべての下位ノードについて（Ｓ２０３ａ，Ｓ２０３ｂ）、サブ項目であるノード名が存在するか否かを判定する（Ｓ２０４）。そしてコード生成手段４は、ステップＳ２０４でサブ項目であるノード名が存在すると判定した場合は、そのノードの属性、すなわち図形の論理素子シンボルに対応する機能や論理素子シンボル間の接続関係を読み込んで、これに基づいて組み込みシステムのプログラムを生成する（Ｓ２０５）。
【００５８】
いま、ユーザインターフェース手段４の版数が［４］に対応するデータ形式が、図４の形式であり、ユーザインターフェース手段４の版数［５］に対応するデータが、図１１の形式であったとした場合、図１４に示したような処理手順をとることにより、版数［４］に対応するコード生成手段５は、図１１（Ｂ）のデータが入力されたときにも、拡張されたタグのデータを無視することが可能となり、不整合なく処理をすることが可能となる。
【００５９】
ところで、データ形式の縮小・変更があるような場合でも、データ形式の版数を記録する方式では、対応が可能である。すなわち、ユーザインターフェース手段４の版数が、［５、６、７］と変更されたとしても、それぞれが扱うデータ形式が同じ場合には、データ形式の版数として例えば、版数［２］を記録するものとすると、コード生成手段５は、版数が［２］であればコード生成可能と判定できる。そして、ユーザインターフェース手段４の版数が［８］になったときに、データの追加または削除があって、互換性が取れなくなったとすると、データ形式の版数として、新たに、版数［３］を記録するようにすれば、不整合を防ぐことができる。
【００６０】
（ルート情報の管理）
図１２は、複数のコード生成手段５があるときに、それを識別するための機能を説明した例である。図１２（Ａ）に示した、実行ファイルのディレクトリには、コード生成Ａ、コード生成Ｂの２つの版数のコード生成手段５が格納されている。また、コード生成指定というファイル（コード生成指定手段）が追加されている。コード生成指定というファイルには図１２（Ｂ）に記載した内容が記述されている。この図１２（Ｂ）の記述により、実際に起動されるコード生成手段５はコード生成Ｂであることを指定している。ユーザインターフェース手段４は起動時にこのコード生成指定というファイルを読み出し、コード生成Ｂを選択する。
【００６１】
また、この方法は、コード生成手段５が別のディレクトリに格納されているときにも、使用することができる。その場合、図１２（Ｂ）のパスの記述は、ファイル名だけでなく、相対パス、もしくは、絶対パスでの記述とする。
【００６２】
以上、本実施の形態によれば、ユーザインターフェース手段４とコード生成手段５とを独立して起動可能にし、ユーザインターフェース手段４またはその出力である図形式データに版数を設定して、その版数に対応して動作をするようにしたので、ユーザインターフェース手段４とコード生成手段５を別々に管理することが可能となる。
【００６３】
（他の実施例１）
図１３は、複数のコード生成手段５があるときに、それを切り替えて使用する際の別の構成例である。この場合は、所定の位置に有る、所定の名称のファイルを選択するもので、この例では、実行ファイルのあるフォルダに格納されている「コード生成」で始まるファイルをコード生成手段５として起動するものである。図１３（Ａ）では、コード生成Ａが、図１３（Ｂ）では、コード生成Ｂが起動される。
【００６４】
この方法は、図１３の方法に比べて簡便であるが、同時にディレクトリに格納されているコード生成手段５を切り替えて利用することはできない。
【００６５】
また、コード生成手段５自身は同じファイル名としておき、同じファイル名で、内容（版数）が異なるものを差し替えて利用するような方法を取ることも可能である。
【００６６】
このように、コード生成手段５を実行するファイルを切り替える場合には、やはり不整合が生じる可能性がある。そのため、上述の図形式データに版数を記録し、確認する方法をとっても良いが、起動時に、呼び出し側のユーザインターフェース手段４がコード生成手段５の版数を取得して整合性を判定するか、ユーザインターフェース手段４から、コード生成手段５へ実行可能な版数を渡すことにより、コード生成側で整合性を確認する方法を取ることもできる。なお、そのときの処理フローは図６と同じものが適用可能である。
【００６７】
（他の実施例２）
次に、図９、図１０に示した版数データ管理処理の他の実施例として、インストーラによって版数データの管理処理を行う際の手順を図１５、図１６を用いて説明する。
【００６８】
ユーザインターフェース手段４のバージョンアップがあったときは、設計者は、まずデータ形式の変更等があったか否かを判定するための判定テーブル２１を更新する。設計者は一世代前の版数のユーザインターフェース手段４に対してデータ形式の変更等があった場合は入力装置１３を介して補助記憶装置１２に保存されている判定テーブル２１にアクセスして、バージョンアップ後の版数のデータ形式変更等フラグを「１」に設定し、データ形式の変更等が無かった場合はこのフラグを「０」に設定する。
【００６９】
図１５（ａ）に判定テーブル２１のデータ構成例を示す。ユーザインターフェース手段の版数［５］の欄のデータ形式変更等フラグ「１」に設定されているのは、一世代前の版数［４］に対してデータ形式の変更等があったからである。それ以外の版数については、それぞれ一世代前の版数に対してデータ形式の変更等が無く、データ形式変更等フラグ「０」が設定されている。
【００７０】
さらに、設計者は、この判定テーブル２１のデータに基づいて、コード生成手段の更新要否を判定するためのインストーラ用判定テーブル２２をあらかじめ作成する。このインストーラ用判定テーブル２２は、ユーザインターフェース手段４の一世代前の版数とバージョンアップ作業後の版数との間でデータ形式の変更等があったか否かを判定するためのものである。
【００７１】
インストーラ用判定テーブル２２のデータ構成例を図１５（ｂ）に示す。図１５（ｂ）データは図１５（ａ）のデータと関連しており、導入前のユーザインターフェース手段４の各版数から導入後のユーザインターフェース手段４の版数［６］へのバージョンアップの際のデータ形式変更等の有無に対応してデータ形式変更等フラグ「１」または「０」がセットされている。図１５（ａ）では、ユーザインターフェース手段４が版数［４］から［５］にバージョンアップしたときにデータ形式の変更等があったので、図１５（ｂ）では、必然的に［４］から［６］に対してもデータ形式の変更等があり、さらに導入前のユーザインターフェース手段４の版数が［４］より小さい版数から版数［６］へバージョンアップする場合も、データ形式の変更等があるのでこれらのデータ形式変更等フラグは「１」にセットされる。
【００７２】
一方、版数［５］から版数［６］へのバージョンアップは、データ形式の変更等を伴わないので、図１５（ｂ）において、最下欄のデータ形式変更等フラグは「０」にセットされる。なお、図１５（ｂ）おいて、「導入後のユーザインターフェース手段の版数」の列は、すべて同じ値になるので、テーブルごとのデータとして保持するようにしても良い。また、「データ形式変更等フラグ」の列では、最下欄から遡っていき、一度フラグが「１」になれば、それよりも古いデータは「１」になるのは自明であるため省略するようにしても良い。
【００７３】
上記のように判定テーブル２１とインストーラ用判定テーブル２２が準備され、インストーラが起動されると、バージョンアップされた版数［６］のユーザインターフェース手段４の実行ファイルが補助記憶装置１２に登録される（Ｓ６０１）。次に、インストーラは、版数管理テーブル８の末尾に今回登録したユーザインターフェース手段４の版数の行を追加する（Ｓ６０２）。
【００７４】
そして、インストーラは、インストーラ用判定テーブル２２を参照して、前回インストールしたユーザインターフェース手段４の版数と今回インストールしたユーザインターフェース手段の版数によって定まる行のデータ形式変更等フラグが「１」であるか否かを判定し、「１」の場合は（Ｓ６０３で「ＹＥＳ」）、版数管理テーブル８の追加行のデータ形式変更等フラグ欄に「１」を書き込む（Ｓ６０４）。次に、インストーラは、版数管理テーブル８の追加行の「コード生成手段の版数」欄に最新世代の版数をセットすると共に（Ｓ６０５）、その版数のコード生成手段５の実行ファイルを補助記憶装置１２に登録する（Ｓ６０６）。
【００７５】
一方、ステップＳ６０３でデータ形式変更等フラグが「０」の場合は（Ｓ６０３で「ＮＯ」）、版数管理テーブル８のデータ形式変更等フラグを「０」に設定すると共に（Ｓ６０７）、コード生成手段５の版数として、一世代前のユーザインターフェース手段４の版数に対応しているコード生成手段５の版数をセットする。
【００７６】
以上のバージョンアップ処理は、インストーラによって自動的に実行される。インストーラには、ユーザインターフェース手段４の最新版、コード生成手段５の最新版と共に、インストーラ用判定テーブル２２を含めておくようにする。
【００７７】
上記の処理で、ユーザインターフェース手段４の版数が［４］から［６］へバージョンアップされたときの版数管理テーブル８の例を図１５（ｃ）に示す。この例では、新たに追加された最下欄のユーザインターフェース手段の版数［６］の行のデータ形式変更等フラグが「１」にセットされている。これは、図１５（ｂ）の導入前のユーザインターフェース手段の版数［４］の行のデータ形式変更等フラグ「１」に対応している。また、版数管理テーブル８のコード゛生成手段の版数欄には最新の版数「３」がセットされている。
【００７８】
以上の如く、版数データの管理処理が実行される。本実施例によれば、インストール作業に連動して、効率的な版数管理が可能になる。
【００７９】
（他の実施例３）
次に、他の実施例２で説明した版数データ管理処理のさらに他の実施例を図１７、図１８を用いて説明する。本実施例は、図１５（ｂ）のインストーラ用判定テーブル２２による管理を省略したものである。
【００８０】
まず、上記の他の実施例２で説明したように、設計者は入力装置１３を介して、一世代前の版数とバージョンアップ作業後の版数をもとに判定テーブル２１のデータ形式変更等フラグを設定する。
【００８１】
そして、設計者によるインストーラの起動により、ユーザインターフェース手段４のバージョンアップ作業後（Ｓ７０１）、インストーラは、版数管理テーブル８の末尾に今回登録するユーザインターフェース手段４の版数の行を追加する（Ｓ７０２）。
【００８２】
次に、インストーラは、その版数管理テーブル８の情報に基づいて、既に導入されている一世代前のユーザインターフェース手段４の版数を抽出する。続いて、判定テーブル２１を参照して、図１７（ａ）に示すようにバージョンアップ作業後の版数から、当該抽出した版数へと判定テーブル２１の版数を遡って検索して、その間にデータ形式変更等フラグ「１」が存在するか否かを判定する（Ｓ７０３）。
【００８３】
その判定の結果、データ形式変更等フラグ「１」が存在する場合は（Ｓ７０３で「ＹＥＳ」）、版数管理テーブル８にアクセスして、今回登録したユーザインターフェース手段４の版数のデータ形式変更等フラグ欄に「１」を書き込む（Ｓ７０４）。次に、インストーラは、コード生成手段の版数として、最新世代の版数をセットすると共に（Ｓ７０５）、その版数のコード生成手段５の実行ファイルを補助記憶装置１２に登録する（Ｓ７０６）。
【００８４】
一方、ステップＳ７０３でデータ形式変更等フラグ「１」が存在しない場合は（Ｓ７０３で「ＮＯ」）、版数管理テーブル８のデータ形式変更等フラグを「０」に設定すると共に（Ｓ７０７）、コード生成手段の版数として、一世代前のユーザインターフェース手段４の版数に対応しているコード生成手段５の版数をセットする。
これによって、他の実施例２と同様に版数データの効率的な管理が可能となる。
【００８５】
次に本発明の第２の実施の形態を説明する。
本実施の形態は、図形式データの項目ごとに版数管理を行い、コード生成手段５によって、同手段１５あるいは入力装置１３等を介して指定された版数に対応した処理のみを実行させるようにしたものである。基本的な装置構成は図２と同様である。
【００８６】
図１９は、第２の実施の形態によるプログラム自動生成装置の機能構成図である。図１に対して、後述する項目別版数管理テーブル７が追加になっている。
【００８７】
また、本実施の形態による図形式データを図２０に示す。本例では<Connections>，<Blocks>などの項目ごとにデータが生成され、項目ごとに版数管理されている。図２１は本実施の形態による項目別版数管理テーブル７のデータ構成例である。項目ごとにその機能を追加・更新したときのユーザインターフェース手段４の版数が関連付けられて保存されている。例えば、ユーザインターフェース手段４の機能が追加になったとき、この項目別版数管理テーブル７に当該追加になった項目が存在するか否かを判定し、存在しない場合は、その項目とそのときのユーザインターフェース手段４の版数を関連付けて登録する。機能が更新になったときも同様に、既に登録になっている項目の版数をそのときのユーザインターフェース手段４の版数に設定変更する。
【００８８】
この項目別版数管理テーブル７の保存場所はコード生成手段５からアクセス可能であれば特に限定されない。コード生成手段５は、この項目を処理の単位としてプログラム生成処理を実行する。
【００８９】
以下、図２２に基づいて、コード生成手段５の動作を説明する。
まず、設計者は、入力装置１３を介して、どの版数の生成プログラムを作成するかを指定して、コード生成手段５の起動を行う。コード生成手段５は、入力装置からの起動要求によって起動されると、版数データを入力して（Ｓ３０１）、版数の指定の有無を判定する（Ｓ３０２）。そして、版数指定が無い場合は（Ｓ３０２で「ＮＯ」）、最新の版数で生成プログラムを生成するものとして、指定された版数として予め定められた所定の最大値（例えば、９９９）をセットする（Ｓ３０３）。
【００９０】
また、コード生成手段５は、版数変数として、版数の最低値（例えば、０）をセットする（Ｓ３０４）。そして、図形式データから最初の項目を入力して（Ｓ３０５）、項目別版数管理テーブル７を参照して入力した項目に関連付けられた版数を抽出する（Ｓ３０６）。
【００９１】
次に、コード生成手段５は、抽出された版数と指定された版数とを比較して（Ｓ３０７）、当該項目の登録があって（Ｓ３０８）、その項目について指定された版数が抽出された版数以上の場合は（Ｓ３０９）、その項目の処理を実行する（Ｓ３１０）。
【００９２】
続いて、コード生成手段５は、抽出された版数が版数変数よりも大きいか否かを判定して（Ｓ３１１）、大きい場合は（Ｓ３１１で「ＹＥＳ」）、抽出された版数を新たな版数変数としてセットする（Ｓ３１２）。
【００９３】
以上の処理の後、コード生成手段５は、図形式データから全ての項目を抽出済みか否かを判定し（Ｓ３１４）、「否」の場合は、次の項目を抽出して（Ｓ３１５）、再びステップＳ３０６以降の処理を繰り返す。なお、ステップＳ３０８またはステップＳ３０９で「ＮＯ」の場合は、通知テーブルにその処理項目と版数を記録する（Ｓ３１３）。
【００９４】
コード生成手段５は、全ての項目について抽出を完了した場合は（Ｓ３１４で「ＹＥＳ」）、最終的な生成プログラムと版数変数にセットされている版数とを関連付けて出力する（Ｓ３１６）。また、通知テーブルの内容を出力する（Ｓ３１７）。
【００９５】
上記の処理によれば、コード生成手段５は、図形式データの版数によらず、指定された版数で生成プログラム３を作成することができる。また、版数指定を行わないことによって最新版数でプログラムを生成する。これにより、同じ図形式データから、既設のシステムについては、その版数のプログラムが生成でき、新規に設置するシステムについては最新の版数のプログラムを生成することができる。
【００９６】
なお、上記の各実施の形態の説明において、ユーザインターフェース手段４やコード生成手段５のバージョンアップを行う設計者が、プログラム自動生成装置１を利用して図形式データを入力してプログラムを生成することを前提に説明したが、上記インストーラ用判定テーブル２２等を用いたインストーラを用意することによって、設計者以外のユーザがプログラム自動生成装置１を利用して、ユーザインターフェース手段４の版数とコード生成手段５の版数の適切な組み合わせによってプログラムを生成することができることは明白である。
【００９７】
本発明は上記の実施の形態に限定されずその要旨を逸脱しない範囲で、種々変形して実施をすることができる。例えば、コード生成手段５は、項目別管理テーブルで項目の版数を確認するのに替えて、ユーザインターフェース手段４が項目ごとに版数を付加して図形式データを生成し、この版数によって確認するようにしても良い。
【符号の説明】
【００９８】
１……プログラム自動生成装置
２……図形式データ
３……生成プログラム
４……ユーザインターフェース手段（機能）
５……コード生成手段（機能）
６……図形式プログラム
７……項目別版数管理テーブル
８……版数管理テーブル
１０……演算装置
１１……主記憶装置
１２……補助記憶装置
１３……入力装置
１４……ディスプレイ装置
２１……判定テーブル
２２……インストーラ用判定テーブル
【図１】
2011022682.tif 000003
【図２】
2011022682.tif 000004
【図３】
2011022682.tif 000005
【図４】
2011022682.tif 000006
【図５】
2011022682.tif 000007
【図６】
2011022682.tif 000008
【図７】
2011022682.tif 000009
【図８】
2011022682.tif 000010
【図９】
2011022682.tif 000011
【図１０】
2011022682.tif 000012
【図１１】
2011022682.tif 000013
【図１２】
2011022682.tif 000014
【図１３】
2011022682.tif 000015
【図１４】
2011022682.tif 000016
【図１５】
2011022682.tif 000017
【図１６】
2011022682.tif 000018
【図１７】
2011022682.tif 000019
【図１８】
2011022682.tif 000020
【図１９】
2011022682.tif 000021
【図２０】
2011022682.tif 000022
【図２１】
2011022682.tif 000023
【図２２】
2011022682.tif 000024