(57)【要約】【課題】プログラムの開発効率および品質を向上させる。【解決手段】状態記述機能１２ａからプログラムの状態が記述され、ループ制御遷移記述機能１２ｂから２状態間の１状態遷移であり、イベントへの反応が指定回数以下でリンク元の状態を自己遷移し、指定回数を超えるとリンク先の状態への遷移を示すループ制御遷移が記述され、通常遷移記述機能１２ｃから、ループ制御遷移以外の状態遷移を示す通常遷移が記述され、状態遷移図作成手段１２から、状態、ループ制御遷移および通常遷移から状態遷移図１１ａが作成される。そして、ソースコード生成手段１３から、ループ制御遷移から、実行時のイベントが検知され、イベントの発生回数が指定回数以下で現在の状態が維持され、指定回数を超えるとループ制御遷移に従って状態が更新される処理を示すループ制御コードとループ制御遷移以外の振る舞いを実現する通常処理コードとから成るソースコード３が生成される。【選択図】図１
2008084262.tif 000002
【特許請求の範囲】
【請求項１】
状態遷移図からソースコードを生成するプログラム自動生成装置において、
プログラムの状態を記述する状態記述機能と、２つの前記状態をリンクする１つの状態遷移であって、イベントに反応して、前記イベントがユーザの指定回数以下の間はリンク元の前記状態を自己遷移し、前記指定回数を超えるとリンク先の前記状態に遷移する、ことを示すループ制御遷移を記述するループ制御遷移記述機能と、前記ループ制御遷移で表される遷移以外の前記状態遷移を示す通常遷移を記述する通常遷移記述機能と、を有しており、ユーザの操作入力に従って、前記状態、前記ループ制御遷移および前記通常遷移で構成される前記状態遷移図を作成する状態遷移図作成手段と、
前記状態遷移図作成手段が作成した前記状態遷移図を保持する状態遷移図記憶手段と、
ユーザから生成指示が入力されると、前記状態遷移図記憶手段が保持する前記状態遷移図に記述された前記ループ制御遷移から、実行時に発生する前記イベントを検知し、前記イベントの発生回数を保持し、前記イベントが前記指定回数以下の場合は現在の前記状態を維持し、前記指定回数を超えた場合は前記ループ制御遷移に従って前記状態を更新する、処理を記述したループ制御コードを生成すると共に、前記状態遷移図に記述された前記ループ制御遷移以外の振る舞いを実現する通常処理コードを生成し、前記ループ制御コードと前記通常処理コードとから成る前記ソースコードを生成する、ソースコード生成手段と、
を有することを特徴とするプログラム自動生成装置。
【請求項２】
前記状態遷移図作成手段の前記ループ制御遷移記述機能は、ユーザが指定した前記指定回数を、前記ループ制御遷移のリンク元の前記状態の属性として設定し、
前記ソースコード生成手段は、前記ループ制御遷移のリンク元の前記状態に設定された前記指定回数に基づいて前記ループ制御遷移を生成する、
ことを特徴とする請求項１記載のプログラム自動生成装置。
【請求項３】
前記状態遷移図作成手段の前記ループ制御遷移記述機能は、ユーザが指定した前記指定回数を、前記ループ制御遷移の属性として設定し、
前記ソースコード生成手段は、前記ループ制御遷移に設定された前記指定回数に基づいて前記ループ制御遷移を生成する、
ことを特徴とする請求項１記載のプログラム自動生成装置。
【請求項４】
状態遷移図からソースコードを生成するプログラム自動生成方法において、
状態記述機能が、プログラムの状態を記述し、ループ制御遷移記述機能が、２つの前記状態をリンクする１つの状態遷移であって、イベントに反応して、前記イベントがユーザの指定回数以下の間はリンク元の前記状態を自己遷移し、前記指定回数を超えるとリンク先の前記状態に遷移する、ことを示すループ制御遷移を記述し、通常遷移記述機能が、前記ループ制御遷移で表される遷移以外の前記状態遷移を示す通常遷移を記述し、状態遷移図作成手段が、前記状態記述機能、前記ループ制御遷移記述機能および前記通常遷移記述機能を有しており、ユーザの操作入力に従って、前記状態、前記ループ制御遷移および前記通常遷移で構成される前記状態遷移図を作成し、
状態遷移図記憶手段が、前記状態遷移図作成手段が作成した前記状態遷移図を保持し、
ソースコード生成手段が、ユーザから生成指示が入力されると、前記状態遷移図記憶手段が保持する前記状態遷移図に記述された前記ループ制御遷移から、実行時に発生する前記イベントを検知し、前記イベントの発生回数を保持し、前記イベントが前記指定回数以下の場合は現在の前記状態を維持し、前記指定回数を超えた場合は前記ループ制御遷移に従って前記状態を更新する、処理を記述したループ制御コードを生成すると共に、前記状態遷移図に記述された前記ループ制御遷移以外の振る舞いを実現する通常処理コードを生成し、前記ループ制御コードと前記通常処理コードとから成る前記ソースコードを生成する、
ことを特徴とするプログラム自動生成方法。
【請求項５】
状態遷移図からソースコードを生成するプログラム自動生成プログラムにおいて、
コンピュータを、
プログラムの状態を記述する状態記述機能と、２つの前記状態をリンクする１つの状態遷移であって、イベントに反応して、前記イベントがユーザの指定回数以下の間はリンク元の前記状態を自己遷移し、前記指定回数を超えるとリンク先の前記状態に遷移する、ことを示すループ制御遷移を記述するループ制御遷移記述機能と、前記ループ制御遷移で表される遷移以外の前記状態遷移を示す通常遷移を記述する通常遷移記述機能と、を有しており、ユーザの操作入力に従って、前記状態、前記ループ制御遷移および前記通常遷移で構成される前記状態遷移図を作成する状態遷移図作成手段、
前記状態遷移図作成手段が作成した前記状態遷移図を保持する状態遷移図記憶手段、
ユーザから生成指示が入力されると、前記状態遷移図記憶手段が保持する前記状態遷移図に記述された前記ループ制御遷移から、実行時に発生する前記イベントを検知し、前記イベントの発生回数を保持し、前記イベントが前記指定回数以下の場合は現在の前記状態を維持し、前記指定回数を超えた場合は前記ループ制御遷移に従って前記状態を更新する、処理を記述したループ制御コードを生成すると共に、前記状態遷移図に記述された前記ループ制御遷移以外の振る舞いを実現する通常処理コードを生成し、前記ループ制御コードと前記通常処理コードとから成る前記ソースコードを生成する、ソースコード生成手段、
として機能させることを特徴とするプログラム自動生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム自動生成装置、プログラム自動生成方法およびプログラム自動生成プログラムに関し、特に、カウントアップによって、状態が別の状態へ遷移する動作を有するプログラムのプログラム自動生成装置、プログラム自動生成方法およびプログラム自動生成プログラムに関する。
【背景技術】
【０００２】
従来、プログラムの開発においては、アセンブラやＣ言語などのプログラミング言語を用いて電子計算機のプログラムを製作する場合には、テキストエディタなどのテキストに直接記述する手段が用いられてきた。
【０００３】
一方、プログラムの規模がある程度の規模に達すると、テキストのみでは可読性に乏しく、プログラムの設計のみならず、検査・管理・保守などに多大な労力を要することとなる。
【０００４】
そこで、このような問題を解決し、効率よくソフトウェアを設計するために各種技術が開発されている。例えば、ＨＣＰ（Hierarchical and ComPacts description）チャートと呼ばれる木構造の図式プログラムの記述方法（例えば、特許文献１参照。）やＰＡＤ（Problem Analysis Diagram）と呼ばれる図式プログラムの記述方法（例えば、特許文献２参照。）などが挙げられる。また、制御系システムのソフトウェア開発においては、ソフトウェアの使用を、複数の状態とその状態間との遷移から成る状態遷移図をベースとして記述し、記述された状態遷移図からプログラムを自動的に生成する方法が開発されて（特許文献３参照。）、状態遷移図を用いたプログラムの記述方法は、ＵＭＬ（Unified Modeling Language）の状態マシン図としても定義されている。
【０００５】
なお、この状態遷移図について以下に概要を説明する。
図１２は、従来の状態遷移図の記述例である。
図１２を用いて、状態遷移図の概要について、以下に説明する。
【０００６】
状態遷移図は、状態を表すノードと、状態間の遷移を表す矢印線とから構成されている。また、それぞれの状態遷移に対して、その遷移が生起する条件を示す遷移条件が付加されることがある。
【０００７】
具体的には、以下の通りである。すなわち、状態遷移図９００は、状態１９１０から状態２９２０への遷移９１１、状態２９２０から状態１９１０への遷移９２１および開始状態９４０から状態１９１０への遷移９４１の状態遷移について示されており、“複数の状態”、“遷移”、“イベント”、“ガード条件”および“アクション”の５つの要素を有している。なお、図１２中の、例えば、“ｅｖｅｎｔＸ［ｃｏｎｄＡ］／ａｃｔＡ”は“イベント名［ガード条件名］／アクション名”を表しており、以下同様に表すこととする。
【０００８】
以下に、状態遷移図９００の状態の遷移の概要について説明する。
まず、開始状態９４０から状態１９１０への遷移９４１を発生させる。
次に、状態１９１０において、ｅｖｅｎｔＸ９１２が発生し、ガード条件のｃｏｎｄＡ９１３に適合した場合、ａｃｔＡ９１４が行われ、状態１９１０から状態２９２０への遷移９１１が発生する。なお、ｃｏｎｄＡ９１３に適合しない場合、すなわち¬ｃｏｎｄＡ９１３ｂに適合する場合、ａｃｔＡ９１４が行われ、状態１９１０には、自己遷移９１１ｂが発生し、状態１９１０にとどまる。
【０００９】
また、状態２９２０において、ｅｖｅｎｔＹ９２２が発生し、ガード条件のｃｏｎｄＢ９２３に適合する場合、ａｃｔＢ９２４が行われ、状態２９２０から状態１９１０への遷移９２１が発生する。
【００１０】
以上のように、状態遷移図９００では、イベントが発生し、条件の適合状況に応じて、状態の遷移が発生する。
次に、別の状態遷移図の概要について、以下に説明する。
【００１１】
図１３は、従来の状態遷移図の別の記述例である。
状態遷移図９００ａは、状態１９１０から状態２９２０への遷移９１１、状態２９２０から状態１９１０への遷移９２１、開始状態９４０ａから状態１９１０への遷移９４１ａおよび状態１９１０から状態３９３０への遷移９１１ａの状態遷移について示されており、“複数の状態”、“遷移”、“イベント”、“ガード条件”、“アクション”および“カウントクリア”の６つの要素を有している。
【００１２】
このような、状態遷移図９００ａでは、図１２の状態遷移図９００に、状態１９１０ａから状態３９３０への遷移９１１ａが新たに加えられている。また、状態１９１０から状態２９２０、または状態３９３０へ遷移する際、カウントの値がクリアされて遷移するようにしたために、カウントクリア（ｃｏｕｎｔ＝０）９１５，９１５ａが新たに追加されている。
【００１３】
以下に、状態遷移図９００ａの状態の遷移の概要について説明する。
まず、図１２と同様に、開始状態９４０ａから状態１９１０への遷移９４１ａを発生させる。
【００１４】
次に、状態１９１０において、ｅｖｅｎｔＸ９１２を発生させ、ガード条件のｃｏｎｄＡ９１３に適合する場合、ａｃｔＡ９１４が行われ、状態１９１０から状態２９２０への遷移９１１が発生する。そして、この遷移の時、カウントが値を有する場合、カウントクリア（ｃｏｕｎｔ＝０）９１５により、カウントの値がクリアされて、状態１９１０から状態２９２０への状態遷移が発生する。
【００１５】
一方、ｃｏｎｄＡ９１３が成立せず、カウント回数の上限値、例えば図１３では“５”、よりもカウントが小さい（¬ｃｏｎｄＡ∧ｃｏｕｎｔ＜５９１３ｂ）場合、状態１９１０には、自己への遷移９１１ｂが発生する。そして、¬ｃｏｎｄＡが複数回連続して生じると、カウントの値の数が１ずつ増加する（ｃｏｕｎｔ＋１９１４ｂ）。
【００１６】
さらに、¬ｃｏｎｄＡが５回続いて、そして、６回目が生じると（ｃｏｕｎｔ≧５）、状態１９１０から状態３９３０への遷移９１１ａが発生する。そして、この時、カウントが値を有するので、カウントクリア（ｃｏｕｎｔ＝０）９１５ａにより、カウントの値がクリアされて、状態１９１０から状態３９３０への状態遷移が発生する。なお、このように状態１９１０にとどまっている回数が上限値を超えた場合に遷移が発生する動作を、以下、“ループ制御遷移動作”と呼ぶ。
【００１７】
次に、状態２９２０において、ｅｖｅｎｔＹ９２２を発生させ、ガード条件のｃｏｎｄＢ９２３に適合する場合、ａｃｔＢ９２４が行われ、状態２９２０から状態１９１０への遷移９２１が発生する。
【００１８】
以上のように、状態遷移図９００ａでは、イベントが発生し、条件の適応に応じて、状態の遷移が発生する。
【特許文献１】特開平２−２３５１４４号公報
【特許文献２】特公平６−４０３０２号公報
【特許文献３】特開平７−７８０７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかし、状態遷移図を用いたプログラムの記述方法には以下のような問題点があった。
ループ制御遷移動作を記述するためには、数多くの要素を記述する必要がある。すなわち、プログラム自動生成装置として考えた場合、“状態”、“イベント”、“ガード条件”、“アクション”、“カウントクリア”および“カウント数の上限値”などの要素を全て記述する必要がある。もし、このような要素のうちで１つでも記述されない場合、プログラムの自動生成が正しく行われず、生成されたプログラムは正しく動作しないという問題がある。
【００２０】
また、このループ制御遷移動作を有するプログラムは、特に、産業用機器装置などへの組み込み用のソフトウェアとして導入されている。そして、組み込み用のソフトウェアの動作を、状態遷移図の利用により記述する場合に、ループ制御遷移動作は、タイムアウトエラーの検出および一定期間のウェイトなどを実現するために定周期イベントと共に用いられることが多く、出現頻度が高い必須の動作である。このため、ソフトウェアの開発効率の面や品質向上に向けて、出現頻度が高い動作を実現させるために、数多くの要素を要するループ制御遷移動作を正しく記述する必要がある。
【００２１】
本発明はこのような点に鑑みてなされたものであり、プログラム開発の開発効率および品質を向上することができるプログラム自動生成装置、プログラム自動生成方法およびプログラム自動生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２２】
本発明では上記課題を解決するために、状態遷移図からソースコードを生成するプログラム自動生成装置において、プログラムの状態を記述する状態記述機能と、２つの前記状態をリンクする１つの状態遷移であって、イベントに反応して、前記イベントがユーザの指定回数以下の間はリンク元の前記状態を自己遷移し、前記指定回数を超えるとリンク先の前記状態に遷移する、ことを示すループ制御遷移を記述するループ制御遷移記述機能と、前記ループ制御遷移で表される遷移以外の前記状態遷移を示す通常遷移を記述する通常遷移記述機能と、を有しており、ユーザの操作入力に従って、前記状態、前記ループ制御遷移および前記通常遷移で構成される前記状態遷移図を作成する状態遷移図作成手段と、前記状態遷移図作成手段が作成した前記状態遷移図を保持する状態遷移図記憶手段と、ユーザから生成指示が入力されると、前記状態遷移図記憶手段が保持する前記状態遷移図に記述された前記ループ制御遷移から、実行時に発生する前記イベントを検知し、前記イベントの発生回数を保持し、前記イベントが前記指定回数以下の場合は現在の前記状態を維持し、前記指定回数を超えた場合は前記ループ制御遷移に従って前記状態を更新する、処理を記述したループ制御コードを生成すると共に、前記状態遷移図に記述された前記ループ制御遷移以外の振る舞いを実現する通常処理コードを生成し、前記ループ制御コードと前記通常処理コードとから成る前記ソースコードを生成する、ソースコード生成手段と、を有することを特徴とするプログラム自動生成装置が提供される。
【００２３】
このようなプログラム自動生成装置によれば、状態記述機能により、プログラムの状態が記述され、ループ制御遷移記述機能により、２状態間の１つの状態遷移であって、反応されたイベントが指定回数以下の間はリンク元の状態を自己遷移し、指定回数を超えるとリンク先の状態に遷移することを示すループ制御遷移が記述され、通常遷移記述機能により、ループ制御遷移以外の状態遷移を示す通常遷移が記述され、状態遷移図作成手段により、状態、ループ制御遷移および通常遷移から状態遷移図が作成される。そして、ソースコード生成手段により、ループ制御遷移から、実行時のイベントが検知され、イベントの発生回数が指定回数以下の際は現在の状態が維持され、指定回数を超えるとループ制御遷移に従って状態が更新される処理を示すループ制御コードとループ制御遷移以外の振る舞いを実現する通常処理コードとから成るソースコードが生成される。
【００２４】
また、上記課題を解決するために、状態遷移図からソースコードを生成するプログラム自動生成方法において、状態記述機能が、プログラムの状態を記述し、ループ制御遷移記述機能が、２つの前記状態をリンクする１つの状態遷移であって、イベントに反応して、前記イベントがユーザの指定回数以下の間はリンク元の前記状態を自己遷移し、前記指定回数を超えるとリンク先の前記状態に遷移する、ことを示すループ制御遷移を記述し、通常遷移記述機能が、前記ループ制御遷移で表される遷移以外の前記状態遷移を示す通常遷移を記述し、状態遷移図作成手段が、前記状態記述機能、前記ループ制御遷移記述機能および前記通常遷移記述機能を有しており、ユーザの操作入力に従って、前記状態、前記ループ制御遷移および前記通常遷移で構成される前記状態遷移図を作成し、状態遷移図記憶手段が、前記状態遷移図作成手段が作成した前記状態遷移図を保持し、ソースコード生成手段が、ユーザから生成指示が入力されると、前記状態遷移図記憶手段が保持する前記状態遷移図に記述された前記ループ制御遷移から、実行時に発生する前記イベントを検知し、前記イベントの発生回数を保持し、前記イベントが前記指定回数以下の場合は現在の前記状態を維持し、前記指定回数を超えた場合は前記ループ制御遷移に従って前記状態を更新する、処理を記述したループ制御コードを生成すると共に、前記状態遷移図に記述された前記ループ制御遷移以外の振る舞いを実現する通常処理コードを生成し、前記ループ制御コードと前記通常処理コードとから成る前記ソースコードを生成する、ことを特徴とするプログラム自動生成方法が提供される。
【００２５】
このようなプログラム自動生成方法によれば、状態記述機能により、プログラムの状態が記述され、ループ制御遷移記述機能により、２つの状態をリンクする１つの状態遷移であって、イベントに反応して、イベントがユーザの指定回数以下の間はリンク元の状態を自己遷移し、指定回数を超えるとリンク先の状態に遷移する、ことを示すループ制御遷移が記述され、通常遷移記述機能により、ループ制御遷移で表される遷移以外の状態遷移を示す通常遷移が記述され、状態遷移図作成手段により、状態記述機能、ループ制御遷移記述機能および通常遷移記述機能が有され、ユーザの操作入力に従って、状態、ループ制御遷移および通常遷移で構成される状態遷移図が作成され、状態遷移図記憶手段により、状態遷移図作成手段が作成した状態遷移図が保持され、ソースコード生成手段により、ユーザから生成指示が入力されると、状態遷移図記憶手段が保持する状態遷移図に記述されたループ制御遷移から、実行時に発生するイベントが検知され、イベントの発生回数が保持され、イベントが指定回数以下の場合は現在の状態が維持され、指定回数を超えた場合はループ制御遷移に従って状態が更新される、処理が記述されたループ制御コードが生成されると共に、状態遷移図に記述されたループ制御遷移以外の振る舞いを実現する通常処理コードが生成され、ループ制御コードと通常処理コードとから成るソースコードが生成される。
【００２６】
また、上記課題を解決するために、状態遷移図からソースコードを生成するプログラム自動生成プログラムにおいて、コンピュータを、プログラムの状態を記述する状態記述機能と、２つの前記状態をリンクする１つの状態遷移であって、イベントに反応して、前記イベントがユーザの指定回数以下の間はリンク元の前記状態を自己遷移し、前記指定回数を超えるとリンク先の前記状態に遷移する、ことを示すループ制御遷移を記述するループ制御遷移記述機能と、前記ループ制御遷移で表される遷移以外の前記状態遷移を示す通常遷移を記述する通常遷移記述機能と、を有しており、ユーザの操作入力に従って、前記状態、前記ループ制御遷移および前記通常遷移で構成される前記状態遷移図を作成する状態遷移図作成手段、前記状態遷移図作成手段が作成した前記状態遷移図を保持する状態遷移図記憶手段、ユーザから生成指示が入力されると、前記状態遷移図記憶手段が保持する前記状態遷移図に記述された前記ループ制御遷移から、実行時に発生する前記イベントを検知し、前記イベントの発生回数を保持し、前記イベントが前記指定回数以下の場合は現在の前記状態を維持し、前記指定回数を超えた場合は前記ループ制御遷移に従って前記状態を更新する、処理を記述したループ制御コードを生成すると共に、前記状態遷移図に記述された前記ループ制御遷移以外の振る舞いを実現する通常処理コードを生成し、前記ループ制御コードと前記通常処理コードとから成る前記ソースコードを生成する、ソースコード生成手段、として機能させることを特徴とするプログラム自動生成プログラムが提供される。
【００２７】
このようなプログラム自動生成プログラムを実行するコンピュータによれば、状態記述機能により、プログラムの状態が記述され、ループ制御遷移記述機能により、２状態間の１つの状態遷移であって、反応されたイベントが指定回数以下の間はリンク元の状態を自己遷移し、指定回数を超えるとリンク先の状態に遷移することを示すループ制御遷移が記述され、通常遷移記述機能により、ループ制御遷移以外の状態遷移を示す通常遷移が記述され、状態遷移図作成手段により、状態、ループ制御遷移および通常遷移から状態遷移図が作成される。そして、ソースコード生成手段により、ループ制御遷移から、実行時のイベントが検知され、イベントの発生回数が指定回数以下の際は現在の状態が維持され、指定回数を超えるとループ制御遷移に従って状態が更新される処理を示すループ制御コードとループ制御遷移以外の振る舞いを実現する通常処理コードとから成るソースコードが生成される。
【発明の効果】
【００２８】
本発明では、２つの状態をリンクする１つの状態遷移であって、イベントに反応して、イベントがユーザの指定回数以下の間はリンク元の状態を自己遷移し、指定回数を超えるとリンク先の状態に遷移する、ことを示すループ制御遷移が記述される。次に、ループ制御遷移で表される遷移以外の状態遷移を示す通常遷移が記述される。そして、ユーザの操作入力に従って、状態、ループ制御遷移および通常遷移で構成される状態遷移図が作成される。そして、ソースコード生成手段により、状態遷移図に記述されたループ制御遷移から、実行時に発生するイベントを検知し、イベントの発生回数を保持し、イベントが指定回数以下の場合は現在の状態を維持し、処理を記述したループ制御コードを生成すると共に、状態遷移図に記述されたループ制御遷移以外の振る舞いを実現する通常処理コードを生成し、ループ制御コードと通常処理コードとから成るソースコードが生成されるようにした。これにより、状態遷移図を用いたプログラムの開発の開発効率および品質を向上させることができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、発明の概要について説明し、続いて、本発明の実施の形態について説明する。
図１は、実施の形態の概要図である。
【００３０】
図１に示されるプログラム自動生成装置１０は、状態遷移図とそれぞれの状態遷移についての遷移条件の詳細な記述とから、プログラムを自動的に生成するものである。プログラム自動生成装置１０では、入力装置２を介して、状態遷移図作成手段１２が用いられて、状態遷移図１１ａが作成されて、作成された状態遷移図１１ａから、ソースコード３が生成されるものである。
【００３１】
プログラム自動生成装置１０は、状態遷移図記憶手段１１と状態遷移図作成手段１２とソースコード生成手段１３とを有する。
状態遷移図記憶手段１１は、状態遷移図作成手段１２により作成される状態遷移図１１ａが格納される。なお、状態遷移図１１ａは、既に説明したとおり、状態を表すノードと、状態間の遷移を表す矢印線とから構成されている。また、それぞれの状態遷移に対して、その遷移が生起する条件を示す遷移条件が付加されることがある。ただし、図１中の状態遷移図１１ａには、それぞれの遷移条件の詳細について記述していない。
【００３２】
状態遷移図作成手段１２は、状態記述機能１２ａとループ制御遷移記述機能１２ｂと通常遷移記述機能１２ｃとを有する。
状態記述機能１２ａでは、ユーザが入力装置２を介して、プログラムの状態を表すノードが記述される。
【００３３】
ループ制御遷移記述機能１２ｂでは、ユーザが入力装置２を介して、状態記述機能１２ａにて記述されたうち、２つの状態のノード間において、イベントに反応して、このイベントがユーザの指定回数以下の間はリンク元の状態を自己遷移する。一方、この指定回数を超えた場合には、リンク先の状態へと遷移する。ループ制御遷移記述機能１２ｂでは、これらを示すループ制御遷移を記述する。
【００３４】
通常遷移記述機能１２ｃでは、ユーザが入力装置２を介して、ループ制御遷移で表される遷移以外の状態遷移が記述される。
そして、状態遷移図作成手段１２では、これらを有すると共に、ユーザが入力装置２を介して、状態記述機能１２ａとループ制御遷移記述機能１２ｂと通常遷移記述機能１２ｃとよる“状態”、“ループ制御遷移”、“通常遷移”で構成される状態遷移図１１ａが作成される。
【００３５】
従来、ループ制御遷移動作などを有する状態遷移図において、ループ制御遷移動作などは、多くの要素から構成されていた。以上のように、状態遷移図作成手段１２によって作成されるループ制御遷移動作などを有する状態遷移図は、ループ制御遷移動作などを構成する要素が簡略化されて、状態遷移図１１ａが作成される。そして、状態遷移図１１ａは状態遷移図記憶手段１１に格納される。
【００３６】
ソースコード生成手段１３では、状態遷移図記憶手段１１に格納されている状態遷移図１１ａから、従来技術と同様にして、プログラムの自動生成が行われて、ソースコード３が生成される。
【００３７】
以上のように、プログラム自動生成装置１０において、入力装置２を介して、状態遷移図作成手段１２によって、簡略化されたループ制御遷移動作などを有する状態遷移図１１ａが記述される。そして、ソースコード生成手段１３によって、状態遷移図１１ａから従来技術と同様にして、プログラムが自動生成されて、ソースコード３が生成される。
【００３８】
この結果から、ユーザは、多数の要素から構成されるループ制御遷移動作などを有する状態遷移図を記述する際に、それらの要素を簡略化して、状態遷移図を作成することができる。このため、状態遷移図を容易に記述することができ、状態遷移図の記述の際、要素などの入力ミスを防止することもできる。そして、ソースコード生成手段１３によって、状態遷移図から、ソースコードを生成することができる。したがって、このようなプログラムの自動生成装置によって、状態遷移図を用いたプログラムの開発の開発効率および品質を向上させることができる。
【００３９】
以下に、本発明を利用した実施の形態について、図面を参照にして説明する。
本実施の形態は、１つのプログラム自動生成装置により構成される。ユーザはプログラム自動生成装置を用いて、状態遷移図を記述することができる。そして、記述された状態遷移図からプログラムのソースコードを生成することができる。
【００４０】
図２は、プログラム自動生成装置のハードウェア構造を示す図である。プログラム自動生成装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disc Drive）１０３、グラフィック処理装置１０４および入力インタフェース１０５が接続されている。
【００４１】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳプログラムやアプリケーションプログラムが格納される。
【００４２】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号を、バス１０６を介してＣＰＵ１０１に送信する。
【００４３】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、プログラム自動生成装置１００のモジュール構成について説明する。
【００４４】
図３は、プログラム自動生成装置の機能を示すブロック図である。
プログラム自動生成装置１００は、状態遷移図記憶部１１０、ソースコード記憶部１２０、状態遷移図作成部１３０およびソースコード生成部１４０を有する。
【００４５】
状態遷移図記憶部１１０は、状態遷移図作成部１３０によって作成される状態遷移図を格納する。
ソースコード記憶部１２０は、ソースコード生成部１４０によって状態遷移図からプログラムの自動生成が行われて生成されたソースコードを格納する。
【００４６】
状態遷移図作成部１３０は、状態記述部１３１、ループ制御遷移記述部１３２および通常遷移記述部１３３により構成される。なお、これらは、モニタ２１を介して、キーボード２２およびマウス２３を通じて、ユーザからの入力を受け付けることができる。
【００４７】
状態記述部１３１では、ユーザがモニタ２１を介して、キーボード２２およびマウス２３を通じて、プログラムの状態を表すノードが記述される。
ループ制御遷移記述部１３２では、状態記述部１３１にて記述されたうち、２つの状態のノード間において、イベントに反応して、このイベントがユーザの指定回数以下の間はリンク元の状態を自己遷移する。一方、この指定回数を超えた場合には、リンク先の状態へと遷移する。ループ制御遷移記述部１３２では、これらを示すループ制御遷移を記述する。従来、ループ制御遷移動作などを有する状態遷移図において、ループ制御遷移動作などは、自己遷移やカウント操作など、多数の要素により構成される。このため、ループ制御遷移動作を記述するには、これらの全ての要素の記述が必要であった。しかし、ループ制御遷移記述部１３２では、従来のように、全ての要素の記述を必要とせず、要素を簡略化してループ制御遷移動作を記述することができる。
【００４８】
通常遷移記述部１３３では、ユーザがモニタ２１を介して、キーボード２２およびマウス２３を通じて、ループ制御遷移で表される遷移以外の状態遷移が記述される。
そして、状態遷移図作成部１３０では、状態記述部１３１、ループ制御遷移記述部１３２および通常遷移記述部１３３を有すると共に、これらによって記述された、“状態遷移”、“ループ制御遷移”および“通常遷移”で構成される状態遷移図が作成される。そして、状態遷移図作成部１３０において作成された状態遷移図は、状態遷移図記憶部１１０に格納される。
【００４９】
ソースコード生成部１４０では、状態遷移図からソースコードを生成する。その生成方法の例を以下に挙げると、まず、状態遷移図記憶部１１０に格納された状態遷移図から簡略化された要素が解析される。そして、解析結果が追加されることによって、状態遷移図記憶部１１０に格納された状態遷移図が変換される。変換された状態遷移図から、ソースコードが自動生成される。そして、生成されたソースコードは、ソースコード記憶部１２０に格納される。
【００５０】
以上のようにして、プログラム自動生成装置１００において、状態遷移図作成部１３０より、簡略化されたループ制御遷移動作などを有する状態遷移図が作成される。そして、ソースコード生成部１４０により、簡略化された要素が解析されて、解析結果が追加されることによって、状態遷移図記憶部１１０に格納されている状態遷移図が変換され、変換された状態遷移図から、ソースコードが生成される。そして、生成されたソースコードは、ソースコード記憶部１２０に格納される。
【００５１】
次に、このようなプログラム自動生成装置１００を用いて、具体的に状態遷移図を示して、プログラムの自動生成について説明する。
図４は、ループ制御遷移動作の要素を有する状態を示した図である。
【００５２】
第１の例として、カウント回数の上限値の要素を有する状態を用いて記述された状態遷移図の場合について説明する。
図４では、図１３の状態１９１０が有する要素に加えて、カウント回数の上限値（カウントアップ：５２１０ｃ）の要素およびループ制御遷移２１１ａの動作の要素を有している。
【００５３】
そして、状態遷移図作成部１３０によって状態２１０を用いて記述された状態遷移図を示したものが図５である。
図５は、第１の例の状態遷移図である。
【００５４】
状態遷移図２００は、状態１２１０から状態２２２０への遷移２１１、状態２２２０から状態１２１０への遷移２２１、開始状態２４０ａから状態１２１０への遷移２４１ａおよび状態１２１０から状態３２３０への遷移２１１ａの状態遷移について示されており、“複数の状態”、“遷移”、“イベント”、“ガード条件”および“アクション”の５つの要素を有している。
【００５５】
以下に、状態遷移図２００の状態の遷移の概要について説明する。
まず、開始状態２４０ａから状態１２１０への遷移２４１ａを発生させる。
次に、状態１２１０において、ｅｖｅｎｔＸ２１２が発生し、ガード条件のｃｏｎｄＡ２１３に適合する場合、ａｃｔＡ２１４が行われ、状態１２１０から状態２２２０への遷移２１１が発生する。そして、この時、カウントが値を有する場合、カウントの値がクリアされて、状態１２１０から状態２２２０への状態遷移が発生する。
【００５６】
一方、ｃｏｎｄＡ２１３が適合しない場合は、カウント回数の上限値であるカウントアップ：５２１０ｃよりもカウントが小さい場合、状態１２１０には、自己遷移が発生する。そして、自己遷移が連続して生じるごとに、カウントの値の数が１ずつ増加する。
【００５７】
さらに、自己遷移が５回を超えて、６回目が生じると、状態１２１１から状態３２３０への遷移２１１ａが発生する。そして、この時、カウントの値がクリアされて、状態１２１０から状態３２３０への状態遷移が発生する。
【００５８】
次に、状態２２２０において、ｅｖｅｎｔＹ２２２を発生し、ガード条件のｃｏｎｄＢ２２３に適する場合、ａｃｔＢ２２４が行われ、状態２２２０から状態１２１０への遷移２２１が発生する。
【００５９】
そして、この状態遷移図２００からソースコード生成部１４０によってソースコードを生成する処理について以下に説明する。
状態遷移図からソースコードを自動生成する方法の１つの例として、プログラム自動生成装置１００によって作成された簡略化されたループ制御遷移動作などを有する状態遷移図から、簡略化された要素が解析されて、解析結果を追加することによって作成された状態遷移図を変換させて、変換された状態遷移図から、プログラムの自動生成によるソースコードの生成方法がある。以下に、状態遷移図の変換処理および変換された状態遷移図からプログラムの自動生成処理について図５の状態遷移図２００を例に挙げて順に説明する。
【００６０】
まず、状態遷移図２００から、簡略化された要素が解析され、解析結果を状態遷移図２００に追加することによって状態遷移図２００を変換する処理について図６のフローチャートを用いて以下に説明する。
【００６１】
図６は、状態遷移図の解析および解析された要素の追加による変換の処理手順を示すフローチャートである。状態遷移図作成部１３０によって作成された状態遷移図２００から、ソースコード生成部１４０によって、状態遷移図記憶部１１０に格納された状態遷移図２００から簡略化の要素を解析して、解析結果を追加することによって、状態遷移図記憶部１１０に格納された状態遷移図２００を変換させる処理について、図４を用いて説明する。
【００６２】
［ステップＳ１１］ソースコード生成部１４０は、状態遷移図記憶部１１０から状態遷移図２００を受け取る。そして、受け取った状態遷移図２００から解析される要素に対応するソースファイル記憶領域を確保する。
【００６３】
［ステップＳ１２］ソースコード生成部１４０は、状態遷移図記憶部１１０から状態遷移図２００を受け取ると、状態遷移図２００に記述されたループ制御遷移動作を有する状態について、例えば図５では状態１について、以下のステップＳ１３からステップＳ１８までの処理を繰り返す。
【００６４】
［ステップＳ１３］ソースコード生成部１４０は、状態遷移図記憶部１１０から受け取った状態遷移図２００から、ループ制御遷移動作が生じるイベント（ｅｖｅｎｔＸ２１２）を取得する。
【００６５】
［ステップＳ１４］ソースコード生成部１４０は、状態遷移図記憶部１１０から受け取った状態遷移図２００から、ステップＳ１３にて取得したイベント（ｅｖｅｎｔＸ２１２）の全ての条件（ｃｏｎｄＡ２１３）を取得する。
【００６６】
［ステップＳ１５］ソースコード生成部１４０は、状態遷移図記憶部１１０から受け取った状態遷移図２００から、ループ制御遷移動作が生じるカウント回数の上限値（カウントアップ：５２１０ｃ）を取得する。
【００６７】
［ステップＳ１６］ソースコード生成部１４０は、ステップＳ１３、ステップＳ１４、ステップＳ１５により取得した要素を用いて、状態遷移図記憶部１１０から受け取った状態遷移図２００のループ制御遷移に関して、イベント（“ｅｖｅｎｔＸ”）、条件（“¬ｃｏｎｄＡ∧ｃｏｕｎｔ≧５”）、アクションなどを追加する。
【００６８】
［ステップＳ１７］ソースコード生成部１４０は、ステップＳ１３、ステップＳ１４、ステップＳ１５により取得した要素を用いて、選択した状態１２１０に対して、イベント（“ｅｖｅｎｔＸ”）、条件（“¬ｃｏｎｄＡ∧ｃｏｕｎｔ＜５”）、アクション（“ｃｏｕｎｔ＋１”）などから構成される自己遷移を追加する。
【００６９】
［ステップＳ１８］ソースコード生成部１４０は、選択した状態から他の状態への遷移に対し、アクションとして、カウントクリア（“ｃｏｕｎｔ＝０”）を追加する。
［ステップＳ１９］ソースコード生成部１４０は、ステップＳ１１で確保したコード記憶領域にある解析された簡略化された要素を追加することによって、状態遷移図記憶部１１０から状態遷移図２００を変換させる。そして、変換された状態遷移図２００をファイルに出力し、ソースコード記憶部１２０に記憶して、状態遷移図２００の変換処理を終了する。
【００７０】
引き続き、ソースコード生成部１４０では、以上のように変換された状態遷移図２００に対して、以下の従来技術と同様の処理を行う。
すなわち、状態遷移図記憶部１１０が保持する状態遷移図に記述されたループ制御遷移から、実行時に発生するイベントを検知し、このイベントの発生回数を保持して、イベントが指定回数以下の場合には現在の状態を維持し、指定回数を超えた場合は、ループ制御遷移に従ってこの状態を変更する処理を記述したループ制御コードを生成する。これに伴って、この状態遷移図に記述されたループ制御遷移以外の振る舞いを実現する通常処理コードを生成する。よって、このようにして生成されたループ制御コードと通常処理コードとから成るソースコードを生成する。
【００７１】
このようにして、ソースコード生成部１４０によって生成されたソースコードは、ソースコード記憶部１２０に保持される。
図７は、プログラムの自動生成によって生成されたソースファイルの例である。
【００７２】
図６のフローチャートに示した処理によって、変換された状態遷移図からプログラムの自動生成を行うとソースファイル１２１が自動的に生成される。
条件分岐文１２１ａは、プログラムの現在の状態に応じて以後の処理の内容を変えるためのコードである。現在の状態が、状態遷移図に記述された状態“ＳＴＡＴＥ１”、“ＳＴＡＴＥ２”、“ＳＴＡＴＥ３”のいずれかであるか判断される。
【００７３】
条件分岐文１２１ｂは、状態“ＳＴＡＴＥ１”において、イベントである“ｅｖｅｎｔＸ”が発生するか否かが判断される。
条件分岐文１２１ｃは、“ｅｖｅｎｔＸ”が発生した場合、条件である“ｃｏｎｄＡ”に適合するか否かが判断される。そして、適合する場合、アクションである“ａｃｔＡ（）”が生じて、状態“ＳＴＡＴＥ１”から状態“ＳＴＡＴＥ２”へ遷移する。なお、遷移するときに、カウントが値を有する場合は、カウントクリア（“ｃｏｕｎｔ＝０”）となって遷移する。
【００７４】
条件分岐文１２１ｄは、“ｃｏｎｄＡ”に適合せず、且つ、“ｃｏｕｎｔＡ”がカウント回数の上限値（例えば、図５であれば“５”）よりも小さいか否か（“¬ｃｏｎｄＡ∧ｃｏｕｎｔＡ＜５”）が判断される。ここの条件が真である場合は、自己遷移を表しており、状態“ＳＴＡＴＥ１”から状態“ＳＴＡＴＥ１”へ自己遷移して、カウントに“１”が加えられる（“ｃｏｕｎｔ＋＋”）。
【００７５】
条件分岐文１２１ｅは、“ｃｏｎｄＡ”に適合せず、且つ、“ｃｏｕｎｔＡ”がカウント回数の上限値（例えば、図５であれば“５”）以上か否か（“¬ｃｏｎｄＡ∧ｃｏｕｎｔＡ≧５”）が判断される。ここの条件が真である場合は、ループ制御遷移を表しており、状態“ＳＴＡＴＥ１”から状態“ＳＴＡＴＥ３”へ遷移する。なお、遷移するときには、カウントクリア（“ｃｏｕｎｔ＝０”）となる。
【００７６】
条件分岐文１２１ｆは、状態“ＳＴＡＴＥ２”において、イベントである“ｅｖｅｎｔＹ”が発生するか否かが判断される。
条件分岐文１２１ｇは、“ｅｖｅｎｔＹ”が発生した場合、条件である“ｃｏｎｄＢ”に適合するか否かが判断される。そして、適合する場合、アクションである“ａｃｔＢ（）”が生じて、状態“ＳＴＡＴＥ２”から状態“ＳＴＡＴＥ１”へ遷移する。なお、遷移するときには、カウントが値を有する場合は、カウントクリア（“ｃｏｕｎｔ＝０”）となって遷移する。
【００７７】
なお、ソースファイル１２１では、状態遷移の直前に実行される処理を記述すべき箇所にアクション名のみが記載されているが、予め別の手段で処理内容を示すコードを入力しておくことで、そのコードがアクション名の位置に埋め込まれるようにすることができる。また、生成後にユーザがソースコードを編集するようにしてもよい。
【００７８】
以上により、ユーザは、従来、多数の要素から構成されるループ制御遷移動作などを有する状態遷移図を記述する際に、それらの要素を簡略化して、状態遷移図を作成することができる。このため、状態遷移図を容易に記述することができて、また、要素などの入力ミスを防止することができる。そして、ソースコード生成部１４０によって、状態遷移図から簡略化された要素などが自動的に解析される。そして、解析されて得た要素を、状態遷移図に追加することによって、全ての要素により構成された状態遷移図へ変換される。そして、変換された状態遷移図からソースコードが生成される。したがって、このようなプログラムの自動生成装置によって、状態遷移図を用いたプログラムの開発の開発効率および品質を向上させることができる。
【００７９】
このようなプログラム自動生成装置１００による、プログラム化される状態遷移図について、以下に他の状態遷移図の例を挙げて説明する。
第２の例として、状態遷移にカウント回数の上限値の要素が記述された状態遷移図の場合について説明する。
【００８０】
図８は、状態遷移にループ制御遷移動作の要素を有する状態を示した図である。
図８では、図１３の状態１９１０が有する要素に加えて、カウント回数の上限値（カウントアップ：５３１０ｃ）の要素およびループ制御遷移３１１ａの動作の要素を有している。
【００８１】
そして、状態遷移図作成部１３０によって状態３１０を用いて記述された状態遷移図を示したものが図９である。
図９は、第２の例の状態遷移図である。
【００８２】
状態遷移図３００は、状態１３１０から状態２３２０への遷移３３１、状態２３２０から状態１３１０への遷移３２１、開始状態３４０ａから状態１３１０への遷移３４１ａおよび状態１３１０から状態３３３０への遷移３１１ａの状態遷移について示されており、“複数の状態”、“遷移”、“イベント”、“ガード条件”および“アクション”の５つの要素を有している。
【００８３】
以下に、状態遷移図３００の状態の遷移の概要について説明する。
まず、開始状態３４０ａから状態１３１０への遷移３４１ａを発生させる。
次に、状態１３１０において、ｅｖｅｎｔＸ３１２が発生し、ガード条件のｃｏｎｄＡ３１３に適合する場合、ａｃｔＡ３１４が行われ、状態１３１０から状態２３２０への遷移３３１が発生する。そして、この時、カウントが値を有する場合、カウントの値がクリアされて、状態１３１０から状態２３２０への状態遷移が発生する。
【００８４】
一方、ｃｏｎｄＡ３１３が適合しない場合は、カウント回数の上限値であるカウントアップ：５３１０ｃよりもカウントが小さい場合、状態１３１０には、自己遷移が発生する。そして、自己遷移が連続して生じるごとに、カウントの値の数が１ずつ増加する。
【００８５】
さらに、自己遷移が５回を超えて、６回目が生じると、状態１３１０から状態３３３０への遷移３１１ａが発生する。そして、この時、カウントの値がクリアされて、状態１３１０から状態３３３０への状態遷移が発生する。
【００８６】
次に、状態２３２０において、ｅｖｅｎｔＹ３２２を発生し、ガード条件のｃｏｎｄＢ３２３に適する場合、ａｃｔＢ３２４が行われ、状態２３２０から状態１３１０への遷移３２１が発生する。
【００８７】
そして、この状態遷移図３００からソースコード生成部１４０によってソースコードを生成する処理方法は、第１の例と同様にして、まず、状態遷移図３００から、簡略化された要素が解析され、解析結果を追加することによって、状態遷移図３００を変換させる。そして、変換された状態遷移図３００から、従来技術と同様にして、プログラムの自動生成を行って、ソースコードを生成することができる。
【００８８】
次に、第３の例として、状態遷移にカウント回数の上限値の要素が記述された状態遷移図の場合について説明する。
図１０は、状態遷移にループ制御遷移動作の要素を有する状態を示した別の図である。
【００８９】
図１０では、図１３の状態１９１０が有する要素に加えて、カウント回数の上限値（カウントアップ：：［５］４１０ｃ）の要素およびループ制御遷移４１１ａの動作の要素を有している。
【００９０】
そして、状態遷移図作成部１３０によって状態４１０を用いて記述された状態遷移図を示したものが図１１である。
図１１は、第３の例の状態遷移図である。
【００９１】
状態遷移図４００は、状態１４１０から状態２４２０への遷移４３１、状態２４２０から状態１４１０への遷移４２１、開始状態４４０ａから状態１４１０への遷移４４１ａおよび状態１４１０から状態３４３０への遷移４１１ａの状態遷移について示されており、“複数の状態”、“遷移”、“イベント”、“ガード条件”および“アクション”の５つの要素を有している。
【００９２】
以下に、状態遷移図４００の状態の遷移の概要について説明する。
まず、開始状態４４０ａから状態１４１０への遷移４４１ａを発生させる。
次に、状態１４１０において、ｅｖｅｎｔＸ４１２が発生し、ガード条件のｃｏｎｄＡ４１３に適合する場合、ａｃｔＡ４１４が行われ、状態１４１０から状態２４２０への遷移４３１が発生する。そして、この時、カウントが値を有する場合、カウントの値がクリアされて、状態１４１０から状態２４２０への状態遷移が発生する。
【００９３】
一方、ｃｏｎｄＡ４１３が適合しない場合は、カウント回数の上限値であるカウントアップ：：［５］４１０ｃよりもカウントが小さい場合、状態１４１０には、自己遷移が発生する。そして、自己遷移が連続して生じるごとに、カウントの値の数が１ずつ増加する。
【００９４】
さらに、自己遷移が５回を超えて、６回目が生じると、状態１４１０から状態３４３０への遷移４１１ａが発生する。そして、この時、カウントの値がクリアされて、状態１４１０から状態３４３０への状態遷移が発生する。
【００９５】
次に、状態２４２０において、ｅｖｅｎｔＹ４２２を発生し、ガード条件のｃｏｎｄＢ４２３に適する場合、ａｃｔＢ４２４が行われ、状態２４２０から状態１４１０への遷移４２１が発生する。
【００９６】
そして、この状態遷移図４００からソースコード生成部１４０によってソースコードを生成する処理方法は、第１，２の例と同様にして、まず、状態遷移図４００から、簡略化された要素が解析され、解析結果を追加することによって、状態遷移図４００を変換させる。そして、変換された状態遷移図４００から、従来技術と同様に、プログラムの自動生成を行って、ソースコードを生成することができる。
【００９７】
なお、本実施の形態ではＣ言語で記述されたソースコードを生成したが、本実施の形態に係るプログラム自動生成装置は、様々なプログラミング言語への応用が可能である。生成されるソースコードの記述は汎用的な内容であり、様々な分野のソフトウェア開発に適用することができる。
【００９８】
以上、本発明のプログラム自動生成装置、プログラム自動生成方法およびプログラム自動生成プログラムを、図示の実施の形態について基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また本発明に、他の任意の構成物や工程が付加されてもよい。
【００９９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、プログラム自動生成装置１００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどが挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどが挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）などが挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）などが挙げられる。
【０１００】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１０１】
プログラム自動生成装置を実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記録装置に格納する。そして、コンピュータは、自己の記録装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【０１０２】
【図１】実施の形態の概要図である。
【図２】プログラム自動生成装置のハードウェア構造を示す図である。
【図３】プログラム自動生成装置の機能を示すブロック図である。
【図４】ループ制御遷移動作の要素を有する状態を示した図である。
【図５】第１の例の状態遷移図である。
【図６】状態遷移図の解析および解析された要素の追加による変換の処理手順を示すフローチャートである。
【図７】プログラムの自動生成によって生成されたソースファイルの例である。
【図８】状態遷移にループ制御遷移動作の要素を有する状態を示した図である。
【図９】第２の例の状態遷移図である。
【図１０】状態遷移にループ制御遷移動作の要素を有する状態を示した別の図である。
【図１１】第３の例の状態遷移図である。
【図１２】従来の状態遷移図の記述例である。
【図１３】従来の状態遷移図の別の記述例である。
【符号の説明】
【０１０３】
２  入力装置
３  ソースコード
１０  プログラム自動生成装置
１１  状態遷移図記憶手段
１１ａ  状態遷移図
１２  状態遷移図作成手段
１２ａ  状態記述機能
１２ｂ  ループ制御遷移記述機能
１２ｃ  通常遷移記述機能
１３  ソースコード生成手段
【図１】
2008084262.tif 000003
【図２】
2008084262.tif 000004
【図３】
2008084262.tif 000005
【図４】
2008084262.tif 000006
【図５】
2008084262.tif 000007
【図６】
2008084262.tif 000008
【図７】
2008084262.tif 000009
【図８】
2008084262.tif 000010
【図９】
2008084262.tif 000011
【図１０】
2008084262.tif 000012
【図１１】
2008084262.tif 000013
【図１２】
2008084262.tif 000014
【図１３】
2008084262.tif 000015