(57)【特許請求の範囲】
【請求項１】
プログラムを自動生成するプログラム開発支援装置において、
コンパイル単位を構成する呼び出し単位を示す呼び出し情報を、前記コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて、記憶する関数情報記憶手段と、
埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とが記述された、前記コンパイル単位を構成するデータフロー図を、記憶するデータフロー図記憶手段と、
ユーザによる操作入力を受け付け、前記関数情報記憶手段が記憶する前記呼び出し情報に対応する前記機能ブロックを引用して前記データフロー図を作成し、前記データフロー図を前記データフロー図記憶手段に格納するデータフロー図作成手段と、
前記関数情報記憶手段が記憶する前記呼び出し情報ごとに、前記参照情報が外部を示す場合は前記呼び出し情報を関数コードとして生成し、前記参照情報が内部を示す場合は、さらに、前記データフロー図の当該呼び出し情報を引用している全ての前記機能ブロックを参照して、少なくとも１つの前記引用情報が前記呼び出し形式を示すときは、前記呼び出し情報を前記関数コードとして生成し、全ての前記引用情報が前記埋め込み形式を示すときは前記関数コードを生成しないようにする関数コード生成手段と、
前記データフロー図記憶手段が記憶する前記データフロー図から、前記データ受け渡し関係に従って、前記機能ブロックが前記埋め込み形式の場合には引用する前記呼び出し情報に対応する処理を行う埋め込みコードを、前記呼び出し形式の場合には前記関数コードを呼び出すコードを順次生成して、主コードを生成する主コード生成手段と、
前記関数コードと前記主コードとを合成してソースコードを生成するソースコード合成手段と、
を有することを特徴とするプログラム開発支援装置。
【請求項２】
前記参照情報が外部を示し、前記呼び出し情報に対応する外部から参照可能な呼び出し単位が、他のコンパイル単位に含まれるデータフロー図であって、埋め込み形式を示す場合には、前記関数コード生成手段は、前記他のコンパイル単位に含まれるデータフロー図から、前記他のコンパイル単位に含まれるデータフロー図で示される処理を実現する前記関数コードを生成することを特徴とする請求項１記載のプログラム開発支援装置。
【請求項３】
前記データフロー図記憶手段には、複数の前記データフロー図が記憶されており、
前記関数コード生成手段は、前記呼び出し情報と同一の前記コンパイル単位に属する全ての前記データフロー図内の当該呼び出し情報を引用している全ての前記機能ブロックを参照して、前記関数コードを生成する、
ことを特徴とする請求項１または２に記載のプログラム開発支援装置。
【請求項４】
前記コンパイル単位の下に前記呼び出し単位を階層的な木形式で管理・表示させることを特徴とする請求項１記載のプログラム開発支援装置。
【請求項５】
前記コンパイル単位の直下の前記呼び出し単位の前記参照情報が外部を示し、前記呼び出し単位の直下の前記呼び出し単位の前記参照情報が内部を示す前記木形式で管理・表示させることを特徴とする請求項４記載のプログラム開発支援装置。
【請求項６】
プログラムを自動生成するプログラム開発支援方法において、
関数情報記憶手段が、コンパイル単位を構成する呼び出し単位を示す呼び出し情報を、前記コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて、記憶し、
データフロー図記憶手段が、埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とが記述された、前記コンパイル単位を構成するデータフロー図を記憶し、
データフロー図作成手段が、ユーザによる操作入力を受け付け、前記関数情報記憶手段が記憶する前記呼び出し情報に対応する前記機能ブロックを引用して前記データフロー図を作成し、前記データフロー図を前記データフロー図記憶手段に格納し、
関数コード生成手段が、前記関数情報記憶手段が記憶する前記呼び出し情報ごとに、前記参照情報が外部を示す場合は前記呼び出し情報を関数コードとして生成し、前記参照情報が内部を示す場合は、さらに、前記データフロー図の当該呼び出し情報を引用している全ての前記機能ブロックを参照して、少なくとも１つの前記引用情報が前記呼び出し形式を示すときは、前記呼び出し情報を前記関数コードとして生成し、全ての前記引用情報が前記埋め込み形式を示すときは前記関数コードを生成しないようにし、
主コード生成手段が、前記データフロー図記憶手段が記憶する前記データフロー図から、前記データ受け渡し関係に従って、前記機能ブロックが前記埋め込み形式の場合には引用する前記呼び出し情報に対応する処理を行う埋め込みコードを、前記呼び出し形式の場合には前記関数コードを呼び出すコードを順次生成して、主コードを生成し、
ソースコード合成手段が、前記関数コードと前記主コードとを合成してソースコードを生成する、
ことを特徴とするプログラム開発支援方法。
【請求項７】
プログラムを自動生成するプログラム開発支援プログラムにおいて、
コンピュータを、
コンパイル単位を構成する呼び出し単位を示す呼び出し情報を、前記コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて、記憶する関数情報記憶手段、
埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とが記述された、前記コンパイル単位を構成するデータフロー図を、記憶するデータフロー図記憶手段、
ユーザによる操作入力を受け付け、前記関数情報記憶手段が記憶する前記呼び出し情報に対応する前記機能ブロックを引用して前記データフロー図を作成し、前記データフロー図を前記データフロー図記憶手段に格納するデータフロー図作成手段、
前記関数情報記憶手段が記憶する前記呼び出し情報ごとに、前記参照情報が外部を示す場合は前記呼び出し情報を関数コードとして生成し、前記参照情報が内部を示す場合は、さらに、前記データフロー図の当該呼び出し情報を引用している全ての前記機能ブロックを参照して、少なくとも１つの前記引用情報が前記呼び出し形式を示すときは、前記呼び出し情報を前記関数コードとして生成し、全ての前記引用情報が前記埋め込み形式を示すときは前記関数コードを生成しないようにする関数コード生成手段、
前記データフロー図記憶手段が記憶する前記データフロー図から、前記データ受け渡し関係に従って、前記機能ブロックが前記埋め込み形式の場合には引用する前記呼び出し情報に対応する処理を行う埋め込みコードを、前記呼び出し形式の場合には前記関数コードを呼び出すコードを順次生成して、主コードを生成する主コード生成手段、
前記関数コードと前記主コードとを合成してソースコードを生成するソースコード合成手段、
として機能させることを特徴とするプログラム開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムに関し、プログラムを自動生成するプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムに関する。
【背景技術】
【０００２】
プログラムの開発には、テキストエディタなどのテキストによって、アセンブラやＣ言語などのソースコードを直接記述する方法が用いられていたが、このような方法によるプログラムの開発には、開発者に高度なスキルが求められて、多くの時間を必要とした。
【０００３】
これに対して、プログラムの記述を合理化して、プログラムの開発を容易に行えるようにするために、プログラムの記述方法をテキストに代えて、データ処理を示す機能ブロックによる処理の流れを表すデータフロー図からソースコードを生成する方法へおきかえられている（例えば、特許文献１参照。）。
【０００４】
ところが、特許文献１のデータフロー図から生成されるソースコードは、通常、関数呼び出し形式による画一的な構成となる。このため、データフロー図から生成されたソースコードを、特に、組み込み分野のような高い応答速度を求められる分野で動作させると、実行速度が遅くなるという問題があった。
【０００５】
そこで、あらかじめ開発者が開発するプログラムの呼び出し状況を考慮して、機能ブロックごとに呼び出し形式または埋め込み形式のいずれかを必要に応じて指定する方法が行われた（例えば、特許文献２参照。）。この方法によって、埋め込み形式が指定された特定の部分を高速化させることができ、プログラムの柔軟な開発を行うことができた。
【特許文献１】特開平５−８８８６９号公報
【特許文献２】特開２００６−３０１９８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献２によるプログラムの開発では、埋め込み形式のみが必要であっても、他のプログラムからその関数を利用したい場合に備え、再利用性を確保するために、別途、それに応じた関数呼び込み形式も必ず用意していた。
【０００７】
このため、ソースコードが冗長となってプログラムサイズが増大し、組み込み分野では、限られたハードウェア資源を余分に消費してしまうという問題点が顕著となる。
本発明はこのような点に鑑みてなされたものであり、再利用性が高く、冗長な処理を無くした効率的なプログラムを自動生成することができるプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では上記課題を解決するために、プログラムを自動生成するプログラム開発支援装置において、コンパイル単位を構成する呼び出し単位を示す呼び出し情報を、前記コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて、記憶する関数情報記憶手段と、埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とが記述された、前記コンパイル単位を構成するデータフロー図を、記憶するデータフロー図記憶手段と、ユーザによる操作入力を受け付け、前記関数情報記憶手段が記憶する前記呼び出し情報に対応する前記機能ブロックを引用して前記データフロー図を作成し、前記データフロー図を前記データフロー図記憶手段に格納するデータフロー図作成手段と、前記関数情報記憶手段が記憶する前記呼び出し情報ごとに、前記参照情報が外部を示す場合は前記呼び出し情報を関数コードとして生成し、前記参照情報が内部を示す場合は、さらに、前記データフロー図の当該呼び出し情報を引用している全ての前記機能ブロックを参照して、少なくとも１つの前記引用情報が前記呼び出し形式を示すときは、前記呼び出し情報を前記関数コードとして生成し、全ての前記引用情報が前記埋め込み形式を示すときは前記関数コードを生成しないようにする関数コード生成手段と、前記データフロー図記憶手段が記憶する前記データフロー図から、前記データ受け渡し関係に従って、前記機能ブロックが前記埋め込み形式の場合には引用する前記呼び出し情報に対応する処理を行う埋め込みコードを、前記呼び出し形式の場合には前記関数コードを呼び出すコードを順次生成して、主コードを生成する主コード生成手段と、前記関数コードと前記主コードとを合成してソースコードを生成するソースコード合成手段と、を有することを特徴とするプログラム開発支援装置が提供される。
【０００９】
このようなプログラム開発支援装置によれば、関数コード生成手段により、関数情報記憶手段が記憶する呼び出し情報ごとに、参照情報が外部を示す場合は呼び出し情報が関数コードとして生成され、参照情報が内部を示す場合は、さらに、データフロー図の呼び出し情報を引用している全ての機能ブロックが参照され、少なくとも１つの引用情報が呼び出し形式を示すときは、呼び出し情報を関数コードとして生成され、全ての引用情報が埋め込み形式を示すときは関数コードが生成されないようにして、主コード生成手段により、データフロー図記憶手段が記憶するデータフロー図から、データ受け渡し関係に従って、機能ブロックが埋め込み形式の場合には引用する呼び出し情報に対応する処理を行う埋め込みコードが、呼び出し形式の場合には関数コードを呼び出すコードが順次生成され、主コードが生成され、ソースコード合成手段により、関数コードと主コードとを合成してソースコードが生成されるようになる。
【００１０】
また、上記課題を解決するために、プログラムを自動生成するプログラム開発支援方法において、関数情報記憶手段が、コンパイル単位を構成する呼び出し単位を示す呼び出し情報を、前記コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて、記憶し、データフロー図記憶手段が、埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とが記述された、前記コンパイル単位を構成するデータフロー図を記憶し、データフロー図作成手段が、ユーザによる操作入力を受け付け、前記関数情報記憶手段が記憶する前記呼び出し情報に対応する前記機能ブロックを引用して前記データフロー図を作成し、前記データフロー図を前記データフロー図記憶手段に格納し、関数コード生成手段が、前記関数情報記憶手段が記憶する前記呼び出し情報ごとに、前記参照情報が外部を示す場合は前記呼び出し情報を関数コードとして生成し、前記参照情報が内部を示す場合は、さらに、前記データフロー図の当該呼び出し情報を引用している全ての前記機能ブロックを参照して、少なくとも１つの前記引用情報が前記呼び出し形式を示すときは、前記呼び出し情報を前記関数コードとして生成し、全ての前記引用情報が前記埋め込み形式を示すときは前記関数コードを生成しないようにし、主コード生成手段が、前記データフロー図記憶手段が記憶する前記データフロー図から、前記データ受け渡し関係に従って、前記機能ブロックが前記埋め込み形式の場合には引用する前記呼び出し情報に対応する処理を行う埋め込みコードを、前記呼び出し形式の場合には前記関数コードを呼び出すコードを順次生成して、主コードを生成し、ソースコード合成手段が、前記関数コードと前記主コードとを合成してソースコードを生成する、ことを特徴とするプログラム開発支援方法が提供される。
【００１１】
このようなプログラム開発支援方法によれば、関数コード生成手段により、関数情報記憶手段が記憶する呼び出し情報ごとに、参照情報が外部を示す場合は呼び出し情報が関数コードとして生成され、参照情報が内部を示す場合は、さらに、データフロー図の呼び出し情報を引用している全ての機能ブロックが参照され、少なくとも１つの引用情報が呼び出し形式を示すときは、呼び出し情報を関数コードとして生成され、全ての引用情報が埋め込み形式を示すときは関数コードが生成されないようにして、主コード生成手段により、データフロー図記憶手段が記憶するデータフロー図から、データ受け渡し関係に従って、機能ブロックが埋め込み形式の場合には引用する呼び出し情報に対応する処理を行う埋め込みコードが、呼び出し形式の場合には関数コードを呼び出すコードが順次生成され、主コードが生成され、ソースコード合成手段により、関数コードと主コードとを合成してソースコードが生成されるようになる。
【００１２】
また、このような課題を解決するために、プログラムを自動生成するプログラム開発支援プログラムにおいて、コンピュータを、コンパイル単位を構成する呼び出し単位を示す呼び出し情報を、前記コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて、記憶する関数情報記憶手段、埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、前記機能ブロック間のデータ受け渡し関係とが記述された、前記コンパイル単位を構成するデータフロー図を、記憶するデータフロー図記憶手段、ユーザによる操作入力を受け付け、前記関数情報記憶手段が記憶する前記呼び出し情報に対応する前記機能ブロックを引用して前記データフロー図を作成し、前記データフロー図を前記データフロー図記憶手段に格納するデータフロー図作成手段、前記関数情報記憶手段が記憶する前記呼び出し情報ごとに、前記参照情報が外部を示す場合は前記呼び出し情報を関数コードとして生成し、前記参照情報が内部を示す場合は、さらに、前記データフロー図の当該呼び出し情報を引用している全ての前記機能ブロックを参照して、少なくとも１つの前記引用情報が前記呼び出し形式を示すときは、前記呼び出し情報を前記関数コードとして生成し、全ての前記引用情報が前記埋め込み形式を示すときは前記関数コードを生成しないようにする関数コード生成手段、前記データフロー図記憶手段が記憶する前記データフロー図から、前記データ受け渡し関係に従って、前記機能ブロックが前記埋め込み形式の場合には引用する前記呼び出し情報に対応する処理を行う埋め込みコードを、前記呼び出し形式の場合には前記関数コードを呼び出すコードを順次生成して、主コードを生成する主コード生成手段、前記関数コードと前記主コードとを合成してソースコードを生成するソースコード合成手段、として機能させることを特徴とするプログラム開発支援プログラムが提供される。
【００１３】
このようなプログラム開発支援プログラムによれば、コンピュータが、関数情報記憶手段に、コンパイル単位を構成する呼び出し単位を示す呼び出し情報を、コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて、記憶され、データフロー図記憶手段に、埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、機能ブロック間のデータ受け渡し関係とが記述された、コンパイル単位を構成するデータフロー図が記憶され、データフロー図作成手段によって、ユーザによる操作入力を受け付け、関数情報記憶手段が記憶する呼び出し情報に対応する機能ブロックを引用してデータフロー図を作成し、データフロー図をデータフロー図記憶手段に格納され、関数コード生成手段によって、関数情報記憶手段が記憶する呼び出し情報ごとに、参照情報が外部を示す場合は呼び出し情報を関数コードとして生成させ、参照情報が内部を示す場合は、さらに、データフロー図の当該呼び出し情報を引用している全ての機能ブロックを参照して、少なくとも１つの引用情報が呼び出し形式を示すときは、呼び出し情報を関数コードとして生成し、全ての引用情報が埋め込み形式を示すときは関数コードを生成しないようにされ、主コード生成手段によって、データフロー図記憶手段が記憶するデータフロー図から、データ受け渡し関係に従って、機能ブロックが埋め込み形式の場合には引用する呼び出し情報に対応する処理を行う埋め込みコードを、呼び出し形式の場合には関数コードを呼び出すコードを順次生成して、主コードを生成され、ソースコード合成手段が、関数コードと主コードとを合成してソースコードを生成されるように機能するようになる。
【発明の効果】
【００１４】
本発明では、関数コード生成手段が、関数情報記憶手段が記憶する呼び出し情報ごとに、参照情報が外部を示す場合は呼び出し情報を関数コードとして生成して、参照情報が内部を示す場合は、さらに、データフロー図の呼び出し情報を引用している全ての機能ブロックを参照し、少なくとも１つの引用情報が呼び出し形式を示すときは、呼び出し情報を関数コードとして生成し、全ての引用情報が埋め込み形式を示すときは関数コードを生成しないようにして、主コード生成手段が、データフロー図記憶手段が記憶するデータフロー図から、データ受け渡し関係に従って、機能ブロックが埋め込み形式の場合には引用する呼び出し情報に対応する処理を行う埋め込みコードが、呼び出し形式の場合には関数コードを呼び出すコードを順次生成して、主コードを生成し、ソースコード合成手段が、関数コードと主コードとを合成してソースコードを生成するようになる。これにより、再利用性が高く、冗長な処理を無くした効率的なソースコードを容易に生成することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、本発明の概要について説明して、その後に、本発明の実施の形態の具体的な内容を説明する。
【００１６】
図１は、実施の形態に適用される発明の概念図である。
図１に示されるプログラム開発支援装置は、データフロー図から、関数情報を参照して、プログラムのソースコードを生成するものである。
【００１７】
プログラム開発支援装置１０は、関数情報記憶手段１１、データフロー図記憶手段１２、データフロー図作成手段１３およびソースコード生成手段１４を有する。
関数情報記憶手段１１には、例えば、Ｃ言語であれば、一般に拡張子“．ｃ”とされるファイル単位を示すコンパイル単位を構成する、Ｃ言語の関数やＦＯＲＴＲＡＮのサブルーチンのように、意味や内容がまとまっている作業を１つの手続きとした呼び出し単位を示す呼び出し情報が、コンパイル単位の内部または外部から参照可能であることを示す参照情報と対応づけられて記憶されている。
【００１８】
データフロー図記憶手段１２には、データフロー図１２ａが記憶されている。データフロー図１２ａは、埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を表す機能ブロックと、一定のまとまった機能ブロック間のデータ受け渡し関係とが記述されて、コンパイル単位を構成する。
【００１９】
データフロー図作成手段１３は、開発者の操作入力を受け付け、関数情報記憶手段１１が記憶する呼び出し情報に対応する機能ブロックを引用してデータフロー図を作成する。そして、データフロー図作成手段１３は、作成したデータフロー図をデータフロー図記憶手段１２に格納する。
【００２０】
ソースコード生成手段１４は、関数コード生成手段１４ａ、主コード生成手段１４ｂおよびソースコード合成手段１４ｃによって構成されている。
関数コード生成手段１４ａは、データフロー図記憶手段１２が記憶するデータフロー図から、関数情報記憶手段１１が記憶する呼び出し情報ごとに、参照情報が外部を示す場合は、呼び出し情報を関数コードとして生成する。そして、参照情報が内部を示す場合は、さらに、データフロー図の呼び出し情報を引用している全ての機能ブロックを参照して、少なくとも１つの引用情報が呼び出し形式を示すときは関数コードとして生成し、全ての引用情報が埋め込み形式を示すときは関数コードを生成しないようにする。
【００２１】
主コード生成手段１４ｂは、データフロー図記憶手段１２が記憶するデータフロー図から、データ受け渡し関係に従って、機能ブロックが埋め込み形式の場合には引用する呼び出し情報に対応する処理を行う埋め込みコードを、呼び出し形式の場合には関数コードを呼び出すコードを順次生成して、主コードを生成する。
【００２２】
ソースコード合成手段１４ｃは、関数コードと主コードとを合成することによって、ソースコード３を生成する。
このように構成されるプログラム開発支援装置１０により、開発者は、データフロー図１２ａから再利用性が高く、冗長な処理を無くした効率的で、高品質なソースコードを容易に生成することができる。
【００２３】
なお、データフロー図を構成する機能ブロックが呼び出し単位を参照しており、この参照されている呼び出し単位がさらにデータフロー図で表現されている場合、ソースコード生成手段１４は、全てのデータフロー図について、機能ブロックごとに引用情報が呼び出し形式であれば、呼び出し情報を関数コードとして呼び出すコードを生成し、埋め込み形式であれば、呼び出し情報を関数コードとして埋め込み、埋め込んだ関数コードにさらに引用情報があれば、呼び出し形式および埋め込み形式に応じて、同様の処理を繰り返し行って、仮コードを生成する。
【００２４】
そして、ソースコード生成手段１４は、このように生成した各仮コードに対して、全てのデータフロー図間の参照関係に基づき、選択した仮コードの参照情報が外部の場合、呼び出し情報を関数コードとして出力し、内部の場合、内部において参照されていると同時に呼び出し形式である呼び出し情報を関数コードとして出力することでソースコードを生成することができる。
【００２５】
次に、本発明の実施の形態について以下に説明する。
本実施の形態は、１つのプログラム開発支援装置１００で構成される。開発者はプログラム開発支援装置１００を用いて、データフロー図などを作成し、作成したデータフロー図などからプログラムのソースコードを生成することができる。なお、本実施の形態では、データフロー図を構成する機能ブロックが呼び出し単位を参照しており、この参照されている呼び出し単位をさらにデータフロー図で表現できる場合を例に挙げて説明する。
【００２６】
図２は、プログラム開発支援装置のハードウェア構成を示す図である。
プログラム開発支援装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、グラフィック処理装置１０４および入力インタフェース１０５が接続されている。
【００２７】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳプログラムやアプリケーションプログラムが格納される。
【００２８】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号を、バス１０６を介してＣＰＵ１０１に送信する。
【００２９】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、プログラム開発支援装置１００のモジュール構成について説明する。
【００３０】
図３は、プログラム開発支援装置の機能を示すブロック図である。
プログラム開発支援装置１００は、関数情報記憶部１１０、データフロー図記憶部１２０、ソースファイル記憶部１３０、データフロー図作成部１４０およびソースコード生成部１５０により構成される。なお、データフロー図作成部１４０は、キーボード２２およびマウス２３を通じて開発者からの入力を受け付けることができる。また、データフロー図作成部１４０およびソースコード生成部１５０は、モニタ２１の画面に処理結果を表示することができる。
【００３１】
関数情報記憶部１１０は、呼び出し情報（含む参照情報）ライブラリ１１０ａを有する。呼び出し情報（含む参照情報）ライブラリ１１０ａは、コンパイル単位を構成する呼び出し単位を示す呼び出し情報が、コンパイル単位の内部または外部から参照可能であることを示す参照情報が対応づけられて記憶されている。
【００３２】
データフロー図記憶部１２０は、埋め込み形式または呼び出し形式であることを示す引用情報が付加された、データ処理を示す機能ブロックと、機能ブロック間のデータ受け渡し関係とが記述されたデータフロー図を記憶する。
【００３３】
ソースファイル記憶部１３０は、データフロー図から生成されたソースコードが記述されたソースファイルを格納する。
データフロー図作成部１４０は、開発者の操作入力を受け付け、データフロー図を作成する。データフロー図は、関数情報記憶部１１０の呼び出し情報（含む参照情報）ライブラリ１１０ａが参照されて作成される。そして、データフロー図作成部１４０は、作成したデータフロー図を、データフロー図記憶部１２０に格納する。
【００３４】
ソースコード生成部１５０は、関数コード生成部１５０ａ、主コード生成部１５０ｂおよびソースコード合成部１５０ｃによって構成されており、開発者から生成開始の指示を受け取ると、データフロー図記憶部１２０が記憶するデータフロー図からソースコードの生成を開始して、生成されたソースコードをファイルに保存してソースファイル記憶部１３０に記憶させ、ソースコードの生成が完了した旨をモニタ２１に表示する。
【００３５】
関数コード生成部１５０ａは、関数情報記憶部１１０が記憶する呼び出し情報ごとに、参照情報が外部を示す場合は、呼び出し情報を関数コードとして生成する。また、参照情報が内部を示す場合は、さらに、データフロー図の当該呼び出し情報を引用している全ての機能ブロックを参照して、少なくとも１つの引用情報が呼び出し形式を示すときは関数コードとして生成し、全ての引用情報が埋め込み形式を示すときは関数コードを生成しないようにする。
【００３６】
主コード生成部１５０ｂは、データフロー図記憶部１２０が記憶するデータフロー図から、データ受け渡し関係に従って、機能ブロックが埋め込み形式の場合には引用する呼び出し情報に対応する処理を行う埋め込みコードを、呼び出し形式の場合には関数コードを呼び出すコードを順次生成して、主コードを生成する。
【００３７】
ソースコード合成部１５０ｃは、関数コード生成部１５０ａで生成された関数コードと主コード生成部１５０ｂで生成された主コードとを合成することによって、ソースコードを生成する。
【００３８】
このようにして生成されたソースファイルを、開発者は、コンパイルして、他のオブジェクトコードとリンクすることで、実行可能な形式のロードモジュールを作成できる。
図４は、ソースコードの生成に使用されるプログラム構造図の例である。
【００３９】
プログラム構造図ファイル１１１は、関数情報記憶部１１０の呼び出し情報（含む参照情報）ライブラリ１１０ａに格納されている。プログラム構造図ファイル１１１には、プロジェクトノード１１１ａ、コンパイル単位ノード１１１ｂ，１１１ｈおよび呼び出し単位ノード１１１ｃ，１１１ｄ，１１１ｅ，１１１ｆ，１１１ｇ，１１１ｉから成るプログラム構造図が記述されている。
【００４０】
プロジェクトノードは、プログラムの実行単位を表すノードである。プロジェクトノード以下のノードは、そのプログラムの構成要素を意味する。プロジェクトノードには、プログラムを識別するためのプロジェクト名が付加される。例えば、プロジェクトノード１１１ａのプロジェクト名は“インバータ制御”である。プロジェクトノードは、１つ以上のコンパイル単位ノードを子要素としてもつ。
【００４１】
コンパイル単位ノードは、１つのソースファイルに対応するノードである。例えば、図４のプロジェクトノード１１１ａに対応するプログラムをコンパイルすると、２つのコンパイル単位ノード１１１ｂ，１１１ｈが含まれるので、２つのＣ言語プログラムファイルが生成される。コンパイル単位ノードには、ソースファイルを識別するためのモジュール名が付加される。例えば、コンパイル単位ノード１１１ｂのモジュール名は“入力制御”である。コンパイル単位ノードは、１つ以上の呼び出し単位ノードを子要素としてもつ。
【００４２】
呼び出し単位ノードは、１つの関数に対応するノードである。親要素であるコンパイル単位ノードに対応するソースファイル中にその関数が記述されることを意味する。呼び出し単位ノードには、関数を識別するための関数名が付加される。例えば、呼び出し単位ノード１１１ｃの関数名は“電流制御”である。呼び出し単位ノードは、別の呼び出し単位ノードを子要素としてもつ場合がある。例えば、“直流電圧制御”の子要素の１つは、“電圧検出”である。これは、親要素に対応する関数が、処理の実行中に子要素に対応する関数を呼び出すことを意味する。なお、コンパイル単位ノード１１１ｂ，１１１ｈの直下に配置された呼び出し単位ノード１１１ｃ，１１１ｄ，１１１ｉは、コンパイル単位の外部からの参照の呼び出し単位として設定されている。例えば、コンパイル単位ノード１１１ｈの下位に属する呼び出しノード１１１ｉから、呼び出し単位ノード１１１ｃを呼び出すことができる。また、呼び出し単位ノード１１１ｄの直下に配置された呼び出し単位ノード１１１ｅ，１１１ｆ，１１１ｇは、コンパイル単位ノードの内部からの参照の呼び出し単位として設定されている。例えば、呼び出し単位ノード１１１ｃから、呼び出し単位ノード１１１ｆを呼び出すことができる。しかし、呼び出し単位ノード１１１ｉから呼び出し単位ノード１１１ｆを呼び出すことはできない。
【００４３】
上記のプログラム構造図ファイル１１１は、開発者の操作入力に基づいてデータフロー図作成部１４０によって作成される。このようなプログラム構造図ファイル１１１を用いることで、開発者は、プログラムの全体構成を容易に理解することができる。例えば、図４に示したプログラム構造図ファイル１１１は、プロジェクト“インバータ制御”がコンパイル単位“入力制御”とコンパイル単位“故障検出”とから構成され、コンパイル単位“入力制御”には、呼び出し単位“電流制御”と呼び出し単位“直流電圧制御”とが記述されることを意味する。
【００４４】
図５は、ソースコードの生成に使用されるデータフロー図の例である。記述の通り、データフロー図作成部１４０にて、開発者の操作入力を受け付けて、関数情報記憶部１１０を参照して、データフロー図が作成される。作成されたデータフロー図はデータフロー図ファイル１１２として、データフロー図記憶部１２０に記憶される。
【００４５】
データフロー図は、それぞれの関数で実行される処理の流れをデータの流れに着目して記述したものである。１つのデータフロー図は、プログラム構造図における１つの呼び出し単位ノードに対応する。図５に示したデータフロー図ファイル１１２は、図４に示したプログラム構造図ファイル１１１の呼び出し単位ノード１１１ｃに対応するデータフロー図であり、“電流制御”の処理を記述したものである。
【００４６】
データフロー図ファイル１１２には、開始ブロック１１２ａ，１１２ｄ、機能ブロック１１２ｂ，１１２ｃ，１１２ｅ，１１２ｆ，１１２ｇ，１１２ｈおよび終端ブロック１１２ｉが記述されている。そして、矢印線に沿って、これらブロック間のデータ入出力関係が記述されている。
【００４７】
開始ブロックは、処理の開始時に関数の外部から与えられる入力値もしくは設定値のような計算処理開始時に既に値が決まっている要素を意味する。１つのデータフロー図につき、１つ以上の開始ブロックが記述される。図５に示したデータフロー図ファイル１１２では、処理の開始時に２つの入力値（開始ブロック１１２ａおよび開始ブロック１１２ｄに対応する入力値）が与えられている。
【００４８】
機能ブロックは、一定のまとまったデータ処理を意味する。それぞれの機能ブロックでは、矢印線に沿って入力されるデータに基づいて、矢印線に沿って出力されるデータが計算される。例えば、機能ブロック１１２ｅでは、開始ブロック１１２ｄで与えられる入力値に基づいて、機能ブロック１１２ｆに対して出力するデータが計算される。また、機能ブロック１１２ｈでは、機能ブロック１１２ｃから出力されるデータと機能ブロック１１２ｇから出力されるデータとに基づいて、終端ブロック１１２ｉに対して出力するデータが計算される。データフロー図の中に、呼び出し単位を呼び出す２種類の機能ブロックが含まれている。すなわち、埋め込み形式と呼び出し形式の機能ブロックである。なお、データフロー図を作成するために、呼び出し情報（含む参照情報）ライブラリ１１０ａから呼び出し情報を参照する際、埋め込み形式の機能ブロック１１２ｂには、“［Ｉ］”の記号を表示し、呼び出し形式の機能ブロック１１２ｇには、“［Ｆ］”の記号を表示するようにしている。
【００４９】
終端ブロックは、処理の終了時に関数の外部へと出力される戻り値もしくは静的なメモリ領域のように計算処理終了時に値が確定して残っている要素を意味する。１つのデータフロー図につき、１つ以上の終端ブロックが記述される。図５に示したデータフロー図では、終端ブロック１１２ｉが出力したデータが最終的な戻り値として出力されている。
【００５０】
上記のデータフロー図は、開発者の操作入力に基づいてデータフロー図作成部１４０によって作成される。このようなデータフロー図を用いることで、開発者は、関数の内部において実行される処理の流れを容易に理解することができる。なお、機能ブロックが示す関数は自モジュールや他モジュールから供給されるような既存の関数であってもよい。
【００５１】
次に、データフロー図作成部１４０がモニタ２１に表示する入力画面および設定画面について説明する。
図６は、プログラム構造図およびデータフロー図の入力画面例を示す図である。入力画面２４は、描画領域２２ａ，２２ｂおよび選択ボタン２２ｃ，２２ｄ，２２ｅ，２２ｆ，２２ｇを有する。入力画面２４は、データフロー図作成部１４０によって表示される画面である。
【００５２】
描画領域２２ａは、プログラム構造図を記述するための描画領域である。プログラム開発を開始した時点では、１つのプロジェクトノードが描画領域２２ａに配置されている。ここで、開発者が選択ボタン２２ｃを押すと、新たなモジュールノードが描画領域２２ａに配置される。また、描画領域２２ａで１つのコンパイル単位ノードまたは呼び出し単位ノードが選択されている状態で選択ボタン２２ｄを押すと、選択されているノードの子要素として新たな呼び出し単位ノードが描画領域２２ａに配置される。このようにして、開発者はプログラム構造図を記述することができる。
【００５３】
描画領域２２ｂは、データフロー図を記述するための描画領域である。描画領域２２ａに配置された１つの呼び出し単位ノードが選択されると、選択された呼び出し単位ノードに対応するデータフロー図が描画領域２２ｂに表示される。ここで、開発者が選択ボタン２２ｅを押すと、新たな開始ブロックが描画領域２２ｂに配置される。同様に、開発者が選択ボタン２２ｆを押すと、新たな機能ブロックが描画領域２２ｂに配置される。開発者が選択ボタン２２ｇを押すと、新たな終端ブロックが描画領域２２ｂに配置される。このようにして、開発者はデータフロー図を記述することができる。
【００５４】
そして、描画領域２２ａに配置されたプロジェクトノードが選択されると、プロジェクトノードについての設定画面が表示される。
次に、プログラム構造図とデータフロー図とからソースコードを生成する処理について説明する。
【００５５】
図７は、ソースコード生成の処理手順を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］ソースコード生成部１５０は、データフロー図記憶部１２０から受け取ったデータフロー図ファイル１１２のうち、未選択のコンパイル単位を１つ選択する。
【００５６】
［ステップＳ１２］ソースコード生成部１５０は、ステップＳ１１で選択したコンパイル単位に配置された全ての呼び出し単位のデータフロー図について、機能ブロックごとに仮コードを生成する。仮コードを生成する際には、データフロー図を構成する機能ブロックに記された“［Ｆ］”または“［Ｉ］”も記述する。
【００５７】
［ステップＳ１３］ソースコード生成部１５０は、ステップＳ１２で生成した仮コードに埋め込み形式の呼び出し情報を関数コードとして、または呼び出し形式の呼び出し情報を関数コードとしての呼び出しコードなどを作成し具体化する。
【００５８】
［ステップＳ１４］ソースコード生成部１５０は、選択したコンパイル単位に配置された呼び出し単位に対応するデータフロー図間の参照関係を全てチェックする。
［ステップＳ１５］ソースコード生成部１５０は、ステップＳ１４でチェックしたデータフロー図間の参照関係を参照して、ステップＳ１３で生成した仮コードに、呼び出し形式の呼び出し情報を関数コードとして生成して、合成することによりソースコードを生成する。
【００５９】
［ステップＳ１６］ソースコード生成部１５０は、ステップＳ１５で生成したソースコードをファイル出力し、ソースファイル記憶部１３０に格納する。
［ステップＳ１７］ソースコード生成部１５０は、ステップＳ１１で未選択のコンパイル単位があるか判断する。未選択のコンパイル単位があれば、ステップＳ１１へ進められ、未選択のコンパイル単位が無ければ、ソースコードの生成が終了する。
【００６０】
なお、ソースコード生成の処理手順のステップＳ１３からステップＳ１５の詳細についてさらに以下に説明する。
図８は、仮コードを具体化する処理手順を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
【００６１】
［ステップＳ１３ａ］ソースコード生成部１５０は、生成した仮コードの具体化をスタートさせると、選択したコンパイル単位に配置された全ての呼び出し単位の処理手順のデータフロー図について、各機能ブロックの仮コードに引用情報である“［Ｉ］”または“［Ｆ］”の印を発見するごとに、以下のステップＳ１３ｂからステップＳ１３ｇまでの処理を繰り返す。
【００６２】
［ステップＳ１３ｂ］ソースコード生成部１５０は、引用情報が付加された仮コードを発見して、“［Ｆ］”が記述されている場合は、ステップＳ１３ｃへ進められ、“［Ｉ］”が記述されている場合は、ステップＳ１３ｄへ進められる。
【００６３】
［ステップＳ１３ｃ］ソースコード生成部１５０は、“［Ｆ］”が記述されている仮コードに対応する呼び出し情報を関数コードとして、その関数コードの呼び出しコードを作成する。
【００６４】
［ステップＳ１３ｄ］ソースコード生成部１５０は、“［Ｉ］”が記述されている仮コードに対応する呼び出し情報を関数コードとして埋め込む。
［ステップＳ１３ｅ］ソースコード生成部１５０は、“［Ｉ］”が記述されている仮コードに埋め込んだ呼び出し情報としての関数コード内に、さらに“［Ｆ］”または“［Ｉ］”の引用情報を有するか否かを判断する。引用情報を有する場合はステップＳ１３ｆへ進められ、有しない場合は仮コードの具体化の処理が一旦終了する。なお、ステップＳ１３ｅ以後、埋め込んだ呼び出し情報についての処理に移り、その処理が一通り終了すると、埋め込まれた元の呼び出し情報の処理に再帰的に戻ることとする。
【００６５】
［ステップＳ１３ｆ］ソースコード生成部１５０は、ステップＳ１３ｅにて、引用情報を有する呼び出し情報が既出であるか否か、すなわち、自身の呼び出し情報を参照しているか否かを判断する。既出である場合はステップＳ１３ｇへ進められ、既出でない場合はステップＳ１３ｂへ進められる。
【００６６】
［ステップＳ１３ｇ］ソースコード生成部１５０は、ステップＳ１３ｆで既出であると判断されると、エラーを出力する。
以上のようなステップＳ１３ａからステップＳ１３ｇによって、仮コードが、埋め込み形式の場合は呼び出し情報が関数コードとして埋め込まれ、呼び出し形式の場合は呼び出し情報が関数コードとされ、その関数コードの呼び出しコードが作成されることによって、仮コードの具体化の処理が行われる。
【００６７】
このようにして、仮コードが具体化されると、ソースコード生成部１５０は、選択したコンパイル単位に配置された呼び出し単位のデータフロー図間の参照関係についてチェック処理を行う（ステップＳ１４）。
【００６８】
チェック処理終了後、生成された主コードを用いてソースコードを生成する（ステップＳ１５）。
生成された主コードからソースコード生成の処理手順（ステップＳ１５）について、以下に説明する。
【００６９】
図９は、具体化した仮コードからソースコードの生成の処理手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
［ステップＳ１５ａ］ソースコード生成部１５０は、具体化した仮コードからソースコードの生成をスタートさせると、選択したコンパイル単位に配置する呼び出し単位に対応した具体化された仮コードについて以下のステップＳ１５ｂからステップＳ１５ｆまでの処理を繰り返す。
【００７０】
［ステップＳ１５ｂ］ソースコード生成部１５０は、仮コードを選択し、選択した仮コードの参照情報が外部か内部かを判断する。参照情報が外部のときは、ステップＳ１５ｃへ進められて、参照情報が内部のときは、ステップＳ１５ｄへ進められる。
【００７１】
［ステップＳ１５ｃ］ソースコード生成部１５０は、選択した仮コードの参照情報が外部である時、図８のステップＳ１３ｃにて作成した関数コードの呼び出しコードに対応する呼び出し形式の呼び出し情報を関数コードとして出力する。
【００７２】
［ステップＳ１５ｄ］ソースコード生成部１５０は、選択した仮コードの参照情報が内部であって、実際に内部において参照されているか否かを判断する。内部において参照されている場合は、ステップＳ１５ｅへ進められて、内部において参照されていない場合は、ステップＳ１５ｆへ進められる。
【００７３】
［ステップＳ１５ｅ］ソースコード生成部１５０は、選択した仮コードに、呼び出し形式を示す“［Ｆ］”が記述されてあるか否かを判断する。“［Ｆ］”がある場合、すなわち、呼び出し形式である場合は、ステップＳ１５ｃへ進められる。一方、“［Ｆ］”がない場合、すなわち、埋め込み形式である“［Ｉ］”が記述されている場合、ステップＳ１５ｆへ進められる。
【００７４】
［ステップＳ１５ｆ］ソースコード生成部１５０は、選択した仮コードは、既に図８のステップＳ１３ｄにて、呼び出し情報が埋め込まれているために、何も出力を行わない。
以上のようなステップＳ１５ａからステップＳ１５ｆによって、具体化された仮コードによって構成される主コードに対して、図８にて作成された参照する呼び出し情報の呼び出しコードに対応する呼び出し形式の呼び出し情報を出力し、合成することによって、生成された主コードからソースコードが生成される。そして、生成されたソースコードは、ファイルに出力される（ステップＳ１６）。
【００７５】
次に、以上のような処理によって生成されるソースコードについて説明する。本実施の形態で生成されるソースコードは、Ｃ９９（ISO/IEC 9899:1999）言語などのインライン関数形式をサポートするＣ言語で記述されたものである。
【００７６】
図１０は、生成されるソースコード例を示す図である。
なお、図１０は、図４のプログラム構造図ファイル１１１および図５のデータフロー図ファイル１１２に対応しているものとする。また、図１０は、関連する部分のみを表示したものであり、例えば、関数の戻り値などは省略して記載している。このため、このままコンパイルできるだけのプログラム全体は記載していない。
【００７７】
図１０に示す、本実施の形態によって生成されたソースコード１１３は、プログラム構造図ファイル１１１のコンパイル単位“入力制御”に対応したソースコード１１３である。したがって、図１０中の関数“ＣｕｒｒｅｎｔＣｏｎｔｒｏｌ（…）”は“電流制御”、関数“ＶｏｌｔａｇｅＲｅｇｕｌａｔｅ（…）”は“電圧調整器”、“ＤＣＶｏｌｔａｇｅＣｏｎｔｒｏｌ（…）”は“直流電圧制御”、“ＶｏｌｔａｇｅＤｅｔｅｃｔ”は“電圧検出”にそれぞれ対応したソースコードの生成結果である。なお、“電圧出力制御”については省略している。
【００７８】
以下に、データフロー図からソースファイルの生成について説明する。
まず、選択したコンパイル単位内の“電流制御”の仮コードを生成する。
生成した“電流制御”の仮コードに対して、“電流制御”に対応するデータフロー図にて参照情報として“［Ｆ］”が付加されている機能ブロックの関数“ＶｏｌｔａｇｅＲｅｇｕｌａｔｅ（…）”については、関数呼び出しコードを生成する。そして、参照情報として“［Ｉ］”が付加されている機能ブロックの関数“ＶｏｌｔａｇｅＤｅｔｅｃｔ”については、関数を仮コード内に埋め込む。
【００７９】
具体化した仮コードに対して、参照情報として“［Ｆ］”が付加された機能ブロックの“ＶｏｌｔａｇｅＲｅｇｕｌａｔｅ（…）”や“ＤＣＶｏｌｔａｇｅＣｏｎｔｒｏｌ（…）”の関数を出力することでソースコードの生成が完了する。
【００８０】
図１１は、生成されるソースコードの別の例を示す図である。
なお、図１０と同様に、図４のプログラム構造図ファイル１１１および図５のデータフロー図ファイル１１２に対応しているものとする。また、図１１は、関連する部分のみを表示したものであり、例えば、関数の戻り値などは省略して記載している。このため、このままコンパイルできるだけのプログラム全体は記載していない。
【００８１】
図１１に示す、本実施の形態によって生成されたソースコード１１４は、埋め込み形式の別の形式、例えば、Ｃ９９言語などのインライン関数の機能を利用した場合の例である。例えば、関数“ＶｏｌｔａｇｅＤｅｔｅｃｔ＿ｉｎｌｉｎｅ（…）”は、インライン関数形式を表している。
【００８２】
この形式は、見かけ上は、“［Ｆ］”と指定された場合と同様の形式であるが、コンパイルするときに、呼び出し箇所に埋め込み形式でコンパイルされるものである。したがって、通常の関数の可読性の高い記述のまま、呼び出しオーバーヘッドのない埋め込み形式と同等のものとすることができ、品質維持のための可読性と、組み込み向けに要求される高速性とを両立させることができる。
【００８３】
なお、比較のために、従来方法によって生成されたソースコードの例を以下に示す。
図１２は、従来方法によって生成されたソースコード例を示す図である。
図１２に示すように、従来方法によって生成されたソースコード１１５では、呼び出されることがない、関数“ＶｏｌｔａｇｅＤｅｔｅｃｔ（…）”が生成されていて冗長である。そして、このソースコードはコンパイラによっては、ダウンロードモジュールに含まれることになる。このため、リソースの限られた組み込み分野において、プログラムメモリを余分に消費する可能性がある。このため、従来方法によって生成されたソースコードは組み込み向けには適さない。
【００８４】
以上、このようなプログラム開発支援装置を用いることで、開発者は、ソースコードよりも理解容易なプログラム構造図とデータフロー図とを用いてプログラムの保守・管理ができるため、保守・管理の負担も大きく軽減される。特に、開発者は、設計モデルの修正も容易であり、既存の設計モデルを利用して他の演算装置向けのプログラムを開発することも容易である。
【００８５】
以上、本発明のプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００８６】
また、本発明は、前述した実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、プログラム開発支援装置１００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどが挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどが挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などが挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）などが挙げられる。
【００８７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８８】
プログラム開発支援プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【００８９】
【図１】実施の形態に適用される発明の概念図である。
【図２】プログラム開発支援装置のハードウェア構成を示す図である。
【図３】プログラム開発支援装置の機能を示すブロック図である。
【図４】ソースコードの生成に使用されるプログラム構造図の例である。
【図５】ソースコードの生成に使用されるデータフロー図の例である。
【図６】プログラム構造図およびデータフロー図の入力画面例を示す図である。
【図７】ソースコード生成の処理手順を示すフローチャートである。
【図８】仮コードを具体化する処理手順を示すフローチャートである。
【図９】具体化した仮コードからソースコードの生成の処理手順を示すフローチャートである。
【図１０】生成されるソースコード例を示す図である。
【図１１】生成されるソースコードの別の例を示す図である。
【図１２】従来方法によって生成されたソースコード例を示す図である。
【符号の説明】
【００９０】
３  ソースコード
１０  プログラム開発支援装置
１１  関数情報記憶手段
１２  データフロー図記憶手段
１２ａ  データフロー図
１３  データフロー図作成手段
１４  ソースコード生成手段
１４ａ  関数コード生成手段
１４ｂ  主コード生成手段
１４ｃ  ソースコード合成手段
【図１】
0005115160.tif 000002
【図２】
0005115160.tif 000003
【図３】
0005115160.tif 000004
【図４】
0005115160.tif 000005
【図５】
0005115160.tif 000006
【図６】
0005115160.tif 000007
【図７】
0005115160.tif 000008
【図８】
0005115160.tif 000009
【図９】
0005115160.tif 000010
【図１０】
0005115160.tif 000011
【図１１】
0005115160.tif 000012
【図１２】
0005115160.tif 000013