(57)【要約】【課題】効率よく、柔軟にソースコードを自動的に生成する。【解決手段】データフロー図生成手段１２によって、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックが結合され、結合された機能ブロックがフレームで包囲されて構成されたデータフロー図１１ａが生成され、ソースコード生成手段１３によって、生成されたデータフロー図１１ａから、開始要素から通常要素を、優先順位情報に従って、結合情報に沿いながら終端要素にいたるまでを追跡すると同時に、機能ブロックに対応するコードを生成して実行可能なソースコード３が生成されるようになる。【選択図】図１
2008171305.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを自動的に生成するプログラム開発支援装置において、
外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、前記機能ブロック間の結合を示す結合情報と、フレームによって包囲された前記機能ブロックに対応するコードの生成の優先順位を示す優先順位情報とを備えるデータフロー図を記憶するデータフロー図記憶手段と、
ユーザによる操作入力を受け付け、前記機能ブロックが結合され、前記機能ブロックが前記フレームに包囲されて構成される前記データフロー図を生成し、前記データフロー図を前記データフロー図記憶手段に記憶させるデータフロー図生成手段と、
前記データフロー図記憶手段が記憶する前記データフロー図を用いて、前記開始要素から前記通常要素を、前記優先順位情報に従って、前記結合情報に沿いながら前記終端要素にいたるまでを追跡すると同時に、前記機能ブロックに対応する前記コードを生成して実行可能なソースコードを生成するソースコード生成手段と、
を有することを特徴とするプログラム開発支援装置。
【請求項２】
前記ソースコード生成手段は、前記データフロー図を用いて、前記機能ブロックから信号が出力される出力点と前記機能ブロックに信号が入力される入力点とに一意な識別子を付加する手段と、前記出力点と結合する前記入力点が前記フレーム内にある場合、前記出力点の前記識別子に前記フレームが示す前記優先順位情報を付加する手段と、前記出力点の前記識別子を格納した出力点リストを作成する手段と、すべての前記入力点に対し、前記入力点を有する前記機能ブロックに対応するコードの生成が可能か否かを示すフラグを付加する手段と、前記出力点リストから、前記優先順位情報に従って選択した前記出力点と結合する前記入力点を有する前記機能ブロックを特定するとともに、前記入力点に付加された前記フラグの属性を変更する手段と、特定した前記機能ブロックの前記入力点に付加されたすべての前記属性が変更されている場合は、前記機能ブロックに対応するコードを生成する手段と、を有することを特徴とする請求項１記載のプログラム開発支援装置。
【請求項３】
前記ソースコード生成手段は、前記出力点と結合する前記入力点が前記フレーム内にある場合、前記出力点の前記識別子に前記フレームが示す前記優先順位情報を付加する手段の後に、前記出力点が前記入力点を包囲する前記フレームと別の前記フレームに包囲されてあって、前記出力点が前記入力点と結合し、前記出力点を包囲する別の前記フレーム内に他の前記機能ブロックがある場合、他の前記機能ブロックは前記出力点を包囲する別の前記フレーム外にあるものとして、前記出力点の前記識別子に前記優先順位情報を付加し直す手段をさらに有することを特徴とする請求項２記載のプログラム開発支援装置。
【請求項４】
前記出力点の優先順位は、前記優先順位情報が付加されていないほうが、付加されているよりも高いことを特徴とする請求項２記載のプログラム開発支援装置。
【請求項５】
前記出力点の優先順位は、前記優先順位情報が付加されているほうが、付加されていないよりも高いことを特徴とする請求項２記載のプログラム開発支援装置。
【請求項６】
プログラムを自動的に生成するプログラム開発支援方法において、
データフロー図記憶手段が、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、前記機能ブロック間の結合を示す結合情報と、フレームによって包囲された前記機能ブロックに対応するコードの生成の優先順位を示す優先順位情報とを備えるデータフロー図を記憶するステップと、
データフロー図生成手段が、ユーザによる操作入力を受け付け、前記機能ブロックが結合され、前記機能ブロックが前記フレームに包囲されて構成される前記データフロー図を生成し、前記データフロー図を前記データフロー図記憶手段に記憶させるステップと、
ソースコード生成手段が、前記データフロー図記憶手段が記憶する前記データフロー図を用いて、前記開始要素から前記通常要素を、前記優先順位情報に従って、前記結合情報に沿いながら前記終端要素にいたるまでを追跡すると同時に、前記機能ブロックに対応する前記コードを生成して実行可能なソースコードを生成するステップと、
を有することを特徴とするプログラム開発支援方法。
【請求項７】
前記ソースコード生成手段は、前記データフロー図を用いて、前記機能ブロックから信号が出力される出力点と前記機能ブロックに信号が入力される入力点とに一意な識別子を付加するステップと、前記出力点と結合する前記入力点が前記フレーム内にある場合、前記出力点の前記識別子に前記フレームが示す前記優先順位情報を付加するステップと、前記出力点の前記識別子を格納した出力点リストを作成するステップと、すべての前記入力点に対し、前記入力点を有する前記機能ブロックに対応するコードの生成が可能か否かを示すフラグを付加するステップと、前記出力点リストから、前記優先順位情報に従って選択した前記出力点と結合する前記入力点を有する前記機能ブロックを特定するとともに、前記入力点に付加された前記フラグの属性を変更するステップと、特定した前記機能ブロックの前記入力点に付加されたすべての前記属性が変更されている場合は、前記機能ブロックに対応するコードを生成するステップと、を有することを特徴とする請求項６記載のプログラム開発支援方法。
【請求項８】
前記ソースコード生成手段は、前記出力点と結合する前記入力点が前記フレーム内にある場合、前記出力点の識別子に前記フレームが示す前記優先順位情報を付加するステップの後に、前記出力点が前記入力点を包囲する前記フレームと別の前記フレームに包囲されてあって、前記出力点が前記入力点と結合し、前記出力点を包囲する別の前記フレーム内に他の前記機能ブロックがある場合、他の前記機能ブロックは前記出力点を包囲する別の前記フレーム外にあるものとして、前記出力点の前記識別子に前記優先順位情報を付加し直すステップをさらに有することを特徴とする請求項７記載のプログラム開発支援方法。
【請求項９】
出力点の優先順位は、前記優先順位情報が付加されていないほうが、付加されているよりも高いことを特徴とする請求項７記載のプログラム開発支援方法。
【請求項１０】
出力点の優先順位は、前記優先順位情報が付加されているほうが、付加されていないよりも高いことを特徴とする請求項７記載のプログラム開発支援方法。
【請求項１１】
プログラムを自動的に生成するプログラム開発支援プログラムにおいて、
コンピュータを、
外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、前記機能ブロック間の結合を示す結合情報と、フレームによって包囲された前記機能ブロックに対応するコードの生成の優先順位を示す優先順位情報とを備えるデータフロー図を記憶するデータフロー図記憶手段、
ユーザによる操作入力を受け付け、前記機能ブロックが結合され、前記機能ブロックが前記フレームに包囲されて構成される前記データフロー図を生成し、前記データフロー図を前記データフロー図記憶手段に記憶させるデータフロー図生成手段、
前記データフロー図記憶手段が記憶する前記データフロー図を用いて、前記開始要素から前記通常要素を、前記優先順位情報に従って、前記結合情報に沿いながら前記終端要素にいたるまでを追跡すると同時に、前記機能ブロックに対応する前記コードを生成して実行可能なソースコードを生成するソースコード生成手段、
として機能させることを特徴とするプログラム開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムに関し、特にプログラムを自動的に生成するプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムに関する。
【背景技術】
【０００２】
プログラムの記述を合理化するために、プログラムの仕様をテキストに代えて、データ処理を示す機能ブロックによる処理の流れを表すデータフロー図を用いて記述し、そして、データフロー図からソースコードを自動的に生成することにより、プログラムの開発を容易に行う方法が利用されている。この方法によれば、開発者により指定された機能ブロックの順序に応じ、ソースコードが順次生成されるため、比較的単純なアルゴリズムによりソースコードを生成することができる。
【０００３】
ところが、この方法では、機能ブロックごとに順序を指定する必要があるため、開発者の作業が煩雑で、順序の指定ミスが生じる可能性もある。また、順序指定の完了後に指定ミスが発覚すると、変更を要する機能ブロック以降のすべての機能ブロックにて変更が必要となり、大きな作業量が発生してしまう。
【０００４】
このような問題に対処すべく、機能ブロック間を結合する結合情報に沿って、開始要素の機能ブロックから終端要素の機能ブロックまでを順次追跡すると同時に、ソースコードを自動的に生成するアルゴリズムなど（例えば、特許文献１参照。）が提案され、開発者の作業量を軽減して、効率よくソースコードを生成することができた。
【特許文献１】特開２００６−２８５４８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１のようにソースコードの生成順序を自動的に決定する方法では、組み込み分野において、ハードウェアのレジスタを直接操作する場合に、アクセスの順序やタイミングの規定などを適宜変更するために、ソースコードの実行順序の明示および指定が行えるようにして、より柔軟にソースコードの生成順序を決定する必要がある。
【０００６】
本発明はこのような点に鑑みてなされたものであり、効率よく、柔軟にソースコードを自動的に生成することができるプログラム開発支援装置、プログラム開発支援方法およびプログラム開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明では上記課題を解決するために、プログラムを自動的に生成するプログラム開発支援装置において、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、前記機能ブロック間の結合を示す結合情報と、フレームによって包囲された前記機能ブロックに対応するコードの生成の優先順位を示す優先順位情報とを備えるデータフロー図を記憶するデータフロー図記憶手段と、ユーザによる操作入力を受け付け、前記機能ブロックが結合され、前記機能ブロックが前記フレームに包囲されて構成される前記データフロー図を生成し、前記データフロー図を前記データフロー図記憶手段に記憶させるデータフロー図生成手段と、前記データフロー図記憶手段が記憶する前記データフロー図を用いて、前記開始要素から前記通常要素を、前記優先順位情報に従って、前記結合情報に沿いながら前記終端要素にいたるまでを追跡すると同時に、前記機能ブロックに対応する前記コードを生成して実行可能なソースコードを生成するソースコード生成手段と、を有することを特徴とするプログラム開発支援装置が提供される。
【０００８】
このような装置によれば、データフロー図生成手段によって、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックが結合され、結合された機能ブロックがフレームで包囲されて構成されたデータフロー図が生成され、ソースコード生成手段によって、生成されたデータフロー図から、開始要素から通常要素を、優先順位情報に従って、結合情報に沿いながら終端要素にいたるまでを追跡すると同時に、機能ブロックに対応するコードを生成して実行可能なソースコードが生成されるようになる。
【０００９】
また、上記課題を解決するために、プログラムを自動的に生成するプログラム開発支援方法において、データフロー図記憶手段が、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、前記機能ブロック間の結合を示す結合情報と、フレームによって包囲された前記機能ブロックに対応するコードの生成の優先順位を示す優先順位情報とを備えるデータフロー図を記憶するステップと、データフロー図生成手段が、ユーザによる操作入力を受け付け、前記機能ブロックが結合され、前記機能ブロックが前記フレームに包囲されて構成される前記データフロー図を生成し、前記データフロー図を前記データフロー図記憶手段に記憶させるステップと、ソースコード生成手段が、前記データフロー図記憶手段が記憶する前記データフロー図を用いて、前記開始要素から前記通常要素を、前記優先順位情報に従って、前記結合情報に沿いながら前記終端要素にいたるまでを追跡すると同時に、前記機能ブロックに対応する前記コードを生成して実行可能なソースコードを生成するステップと、を有することを特徴とするプログラム開発支援方法が提供される。
【００１０】
このような方法によれば、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックが結合され、結合された機能ブロックがフレームで包囲されて構成されたデータフロー図が生成され、生成されたデータフロー図から、開始要素から通常要素を、優先順位情報に従って、結合情報に沿いながら終端要素にいたるまでを追跡すると同時に、機能ブロックに対応するコードを生成して実行可能なソースコードが生成されるようになる。
【００１１】
また、上記課題を解決するために、プログラムを自動的に生成するプログラム開発支援プログラムにおいて、コンピュータを、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、前記機能ブロック間の結合を示す結合情報と、フレームによって包囲された前記機能ブロックに対応するコードの生成の優先順位を示す優先順位情報とを備えるデータフロー図を記憶するデータフロー図記憶手段、ユーザによる操作入力を受け付け、前記機能ブロックが結合され、前記機能ブロックが前記フレームに包囲されて構成される前記データフロー図を生成し、前記データフロー図を前記データフロー図記憶手段に記憶させるデータフロー図生成手段、前記データフロー図記憶手段が記憶する前記データフロー図を用いて、前記開始要素から前記通常要素を、前記優先順位情報に従って、前記結合情報に沿いながら前記終端要素にいたるまでを追跡すると同時に、前記機能ブロックに対応する前記コードを生成して実行可能なソースコードを生成するソースコード生成手段、として機能させることを特徴とするプログラム開発支援プログラムが提供される。
【００１２】
このようなプログラムによれば、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックが結合され、結合された機能ブロックがフレームで包囲されて構成されたデータフロー図が生成され、生成されたデータフロー図から、開始要素から通常要素を、優先順位情報に従って、結合情報に沿いながら終端要素にいたるまでを追跡すると同時に、機能ブロックに対応するコードを生成して実行可能なソースコードが生成されるようになる。
【発明の効果】
【００１３】
本発明では、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックを結合して、結合した機能ブロックがフレームで包囲して構成されるデータフロー図を生成し、生成したデータフロー図から、開始要素から通常要素を、優先順位情報に従って、結合情報に沿いながら終端要素にいたるまでを追跡すると同時に、機能ブロックに対応するコードを生成して実行可能なソースコードを生成するようにした。これにより、ソースコードを生成する作業量が低減し、短時間で効率的に、品質が向上した組み込み分野向けのソースコードを柔軟に生成することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。但し、本発明の技術的範囲はこれらの実施の形態に限定されない。
まず、本発明における概要について説明し、その後に本発明の実施の形態について説明する。
【００１５】
図１は、実施の形態に適用される発明の概要図である。
図１に示されるプログラム開発支援装置１０は、データフロー図から、プログラムのソースコードを自動的に生成するものである。
【００１６】
プログラム開発支援装置１０は、データフロー図記憶手段１１と、データフロー図生成手段１２と、ソースコード生成手段１３とを有する。
データフロー図記憶手段１１は、データフロー図１１ａが記憶されている。データフロー図１１ａは、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、機能ブロック間の結合を示す結合情報と、機能ブロックに対応するコードの生成処理の優先順位を付けるために、枠（以下、「フレーム」を呼ぶ。）によって機能ブロックを包囲して優先順位を示す優先順位情報とを備えている。
【００１７】
データフロー図生成手段１２は、開発者による操作入力を入力装置２から受け付け、機能ブロックが結合され、機能ブロックがフレームに包囲されて構成されるデータフロー図１１ａを生成し、データフロー図１１ａをデータフロー図記憶手段１１に記憶させる。
【００１８】
ソースコード生成手段１３は、データフロー図記憶手段１１が記憶するデータフロー図１１ａを用いて、開始要素から通常要素を、優先順位情報に従って、結合情報に沿いながら終端要素にいたるまでを追跡すると同時に、機能ブロックに対応するコードの生成を行って実行可能なソースコード３を生成する。
【００１９】
このように構成されるプログラム開発支援装置１０により、機能ブロックによって構成されるデータフロー図にて、フレームによって機能ブロックを包囲してコードの生成順序の優先順位をつけることによって、データフロー図からソースコードへ生成する作業量が低減し、短時間で効率的に、品質が向上した組み込み分野向けのソースコードを柔軟に生成することができるようになる。
【００２０】
次に、本発明の実施の形態について以下に説明する。
図２は、プログラム開発支援装置のハードウェア構成を示す図である。
プログラム開発支援装置１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、グラフィック処理装置１０４および入力インタフェース１０５が接続されている。
【００２１】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳプログラムやアプリケーションプログラムが格納される。
【００２２】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号を、バス１０６を介してＣＰＵ１０１に送信する。
【００２３】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
次に、プログラム開発支援装置１００のモジュール構成について説明する。
【００２４】
図３は、プログラム開発支援装置の機能を示すブロック図である。
プログラム開発支援装置１００は、データフロー図記憶部１１０、ソースファイル記憶部１２０、データフロー図作成部１３０およびソースコード生成部１４０により構成される。なお、データフロー図作成部１３０は、キーボード２２およびマウス２３を通じて開発者からの入力を受け付けることができる。また、データフロー図作成部１３０およびソースコード生成部１４０は、モニタ２１の画面に処理結果を表示することができる。
【００２５】
データフロー図記憶部１１０は、外部入力データを示す開始要素、データ処理を示す通常要素および外部出力データを示す終端要素を含む機能ブロックと、機能ブロック間の結合を示す結合情報と、機能ブロックに処理の優先順位を付けるために、フレームによって機能ブロックを包囲して優先順位が示された優先順位情報とを備えるデータフロー図を記憶する。
【００２６】
ソースファイル記憶部１２０は、データフロー図から生成されたソースコードが記述されたソースファイルを格納する。
データフロー図作成部１３０は、開発者の操作入力を受け付け、機能ブロックが結合され、機能ブロックがフレームに包囲されて構成されるデータフロー図を作成する。そして、データフロー図作成部１３０は作成したデータフロー図をデータフロー図記憶部１１０に格納する。
【００２７】
ソースコード生成部１４０は、識別子付加機能１４１と、優先順位付加機能１４２と、出力点リスト生成機能１４３と、フラグ表示機能１４４と、出力点選択機能１４５と、フラグ属性変更機能１４６と、コード生成機能１４７とを備えており、データフロー図記憶部１１０が記憶するデータフロー図からソースコードを生成し、生成したソースコードをソースファイル記憶部１２０へ格納する。
【００２８】
識別子付加機能１４１は、データフロー図を構成する機能ブロックから信号が出力される出力点と機能ブロックに信号が入力される入力点とに一意な識別子を付加する。なお、識別子として、番号やアルファベットなどを用いることができる。
【００２９】
優先順位付加機能１４２は、特定した機能ブロックの出力点と結合する別の機能ブロックの入力点がフレーム内にある場合、特定した機能ブロックの出力点に付加された識別子に、別の機能ブロックの入力点を包囲するフレームが示す優先順位情報を付加する。なお、別の機能ブロックの入力点がフレーム内にある場合とは、特定した機能ブロックの出力点と別の機能ブロックの入力点とを包囲するフレームが同一または異なる場合、または、入力点のみがフレームに包囲されている場合を意味する。さらに、開発者の操作入力によって、優先順位付加機能１４２は、特定した機能ブロックの出力点がフレーム内にあって、特定した機能ブロックの出力点がこのフレーム外の別の機能ブロックの入力点と結合するとともに、出力点を包囲するフレーム内に特定した機能ブロックと別の機能ブロックがある場合、別の機能ブロックは特定した機能ブロックを包囲するフレームの外にあるものと見なして、改めてすべての出力点の識別子に優先順位情報を付加し直す。
【００３０】
出力点リスト生成機能１４３は、機能ブロックの出力点の識別子を格納した出力点リストを生成する。
フラグ表示機能１４４は、機能ブロックに対応するコードの生成が可能か否かを示すフラグを、すべての機能ブロックの入力点に付加する。
【００３１】
出力点選択機能１４５は、出力点リストから優先順位情報に従って出力点を１つ選択する。さらに出力点選択機能１４５は、選択した出力点を出力点リストから削除して、選択した出力点と結合する入力点を有する機能ブロックを特定する。
【００３２】
フラグ属性変更機能１４６は、選択した出力点と機能ブロックの入力点との結合を確認すると、入力点に付加したフラグの属性を変更する。
コード生成機能１４７は、特定した機能ブロックに付加されたフラグ属性のすべてが変更されている場合、機能ブロックに対応するコードを生成する。
【００３３】
次に、このようなプログラム開発支援装置により行われる処理について、フローチャートを利用して説明する。
図４は、プログラム開発支援装置の処理手順を示すフローチャートである。
【００３４】
［ステップＳ１１］初期化設定として、識別子付加機能１４１は識別番号を、データフロー図を構成する機能ブロックの出力点および入力点に、優先順位付加機能１４２は優先順位情報を出力点に、そして、フラグ表示機能１４４は属性を入力点にそれぞれ付加し、出力点リスト生成機能１４３は出力点を格納した出力点リストを作成する。なお、この初期化設定については後に詳細を説明する。
【００３５】
［ステップＳ１２］出力点選択機能１４５は、出力点リストに格納された識別番号から、優先順位に従って、出力点を１つ選択する。そして、出力点選択機能１４５は、選択した出力点を出力点リストから削除するとともに、選択した出力点と結合する入力点を有する機能ブロックを特定する。なお、識別番号には優先順位情報が付加されているものと付加されていないものがある。このため、特定した機能ブロックに対応するコードの生成を行う際、どちらを優先するかは生成したいソースコードの設計に応じて、開発者の操作入力により決定される。
【００３６】
［ステップＳ１３］フラグ属性変更機能１４６は、特定した入力点を有する機能ブロックに付加されたフラグの属性から、特定した機能ブロックに対応するコードが生成可能であることを示す属性へと変更する。
【００３７】
［ステップＳ１４］コード生成機能１４７は、特定した機能ブロックのすべてのフラグの属性が生成可能であるように変更されているか否かを判断する。生成不可能である場合はステップＳ１２へ進められ、生成可能である場合はステップＳ１５へ進められる。
【００３８】
［ステップＳ１５］コード生成機能１４７は、特定した機能ブロックに対応するコードを生成する。
［ステップＳ１６］出力点リスト生成機能１４３は、コード生成機能１４７によってコード生成が行われた機能ブロックのすべての出力点を読み込み、出力点リストに格納する。
【００３９】
［ステップＳ１７］出力点選択機能１４５は、出力点リストにて、特定した出力点以外に出力点が残っている場合はステップＳ１２へ進められ、出力点が残っていない場合はコード生成が終了する。
【００４０】
なお、プログラム開発支援装置１００により行われるステップＳ１１の初期化処理について、以下にフローチャートを利用してさらに説明する。
図５は、プログラム開発支援装置の初期化設定処理手順を示すフローチャートである。
【００４１】
［ステップＳ１１ａ］識別子付加機能１４１は、データフロー図を構成する機能ブロックの出力点および入力点のすべてに識別番号を付加する。
［ステップＳ１１ｂ］出力点リスト生成機能１４３は、識別番号が付加された出力点を検出する。
【００４２】
［ステップＳ１１ｃ］出力点リスト生成機能１４３は、検出した出力点と結合する入力点を特定する。
［ステップＳ１１ｄ］優先順位付加機能１４２は、機能ブロックの出力点と結合する別の機能ブロックの入力点がフレーム内にある場合、出力点に付加された識別番号に、入力点を包囲するフレームが示す優先順位情報を付加する。なお、入力点がフレーム内にある場合とは、出力点と入力点とを包囲するフレームが同一または異なる場合、または、入力点のみがフレームに包囲されている場合を意味する。
【００４３】
［ステップＳ１１ｅ］出力点リスト生成機能１４３は、すべての開始要素の出力点をリスト化し出力点リストを生成する。
［ステップＳ１１ｆ］フラグ表示機能１４４は、機能ブロックに対応するコードの生成が可能か否かを示すフラグを、検出したすべての入力点に作成する。
【００４４】
以上、初期化設定を行った後に、図４のステップＳ１２の処理を始める。
このように、プログラム開発支援装置１００が、図４，５の処理手順を経ることによりデータフロー図からソースコードを自動的に生成することができる。
【００４５】
実際に、プログラム開発支援装置によるデータフロー図からソースコードへの自動生成について、具体的なデータフロー図を挙げて説明する。なお、以下では、機能ブロック内に記述されたアルファベットは、機能ブロックに対応するコードを示すものとする。
【００４６】
（実施例１）
図６は、実施例１のデータフロー図である。
データフロー図１５０は、開始要素１５１，１５２、通常要素１６１，１６２，１６３，１６４、終端要素１５３の機能ブロックが結合しており、開始要素１５２および通常要素１６１、開始要素１５１および通常要素１６２、通常要素１６３，１６４および終端要素１５３がフレーム１５４，１５５，１５６にそれぞれ包囲されて、フレーム１５４，１５５，１５６に優先順位情報として、それぞれ“１”，“２”，“３”の優先順位が付加されている。
【００４７】
このようなデータフロー図１５０からソースコードの生成について以下に説明する。
図７，９は、実施例１における識別番号、優先順位情報およびフラグが付加されたデータフロー図、図８，１１は、実施例１において生成された出力点リスト、図１０は、実施例１において生成されたソースコードである。
【００４８】
まず、識別子付加機能１４１は、データフロー図１５０の各機能ブロックの出力点および入力点に識別番号を付加する。
優先順位付加機能１４２は、機能ブロックの出力点と結合する別の機能ブロックの入力点がフレーム内にある場合、出力点に付加された識別番号に、入力点を包囲するフレームが示す優先順位情報を付加する。図７のデータフロー図１５０では、例えば、通常要素１６１の出力点１１は、通常要素１６３の入力点１２と結合している。このとき、入力点１２は、優先順位“３”が付加されたフレーム１５６内にあるため、出力点１１に“［３］”を付加する。
【００４９】
出力点リスト生成機能１４３は、開始要素の出力点を選択して、選択した出力点をリスト化し、出力点リストを生成する。図７のデータフロー図１５０では、２つの開始要素１５１，１５２があるため、図８に示すように、開始要素の識別番号により出力点リスト１４３ａを作成する。
【００５０】
フラグ表示機能１４４は、機能ブロックに対応するコードの生成が可能か否かを示すフラグを、検出した入力点に付加する。図７のデータフロー図１５０では、機能ブロックの入力点に、コード生成が不可能であることを示すフラグとして黒丸“●”を付加している。
【００５１】
以上により初期化設定が終了する。
そして、出力点選択機能１４５は、出力点リストに格納された識別番号から、優先順位に従って出力点を１つ選択する。そして、出力点リスト生成機能１４３は、選択した出力点を出力点リストから削除し、選択した出力点と結合する入力点を有する機能ブロックを特定する。例えば、図８の出力点リスト１４３ａでは、優先順位が高い開始要素１５２の出力点９［１］が選択され、出力点リスト１４３ａから削除される。そして、データフロー図１５０にて、出力点９［１］と結合する入力点１０を有する通常要素１６１が特定される。
【００５２】
フラグ属性変更機能１４６は、特定した入力点を有する機能ブロックに付加されたフラグの属性を変更する。図９のデータフロー図１５０に示すように、特定した通常要素１６１に付加されたフラグの属性を、コード生成が可能であることを示すフラグとして白丸“○”に変更する。
【００５３】
コード生成機能１４７は、コード生成を行うために、特定した機能ブロックのフラグの属性が生成可能になっているか否かを判断する。図９のデータフロー図１５０の通常要素１６１では、入力点１０に付加されたフラグの属性が白丸となり、特定した通常要素１６１に付加されたすべての入力点のフラグが白丸であるために、コードの生成が可能となる。
【００５４】
コード生成機能１４７は、特定した機能ブロックのコードを生成する。データフロー図１５０の通常要素１６１のコードを生成すると、図１０に示すように、特定した通常要素１６１のコードを生成して、ソースコード１４６ａに、通常要素１６１に対応するコード“ａ（）”が生成される。
【００５５】
出力点リスト生成機能１４３は、コード生成機能１４７によってコード生成が行われた機能ブロックのすべての出力点を読み込み、出力点リストに格納する。データフロー図１５０では、通常要素１６１のコード生成が行われたので、図１１に示すように、通常要素１６１の出力点１１［３］が新たに出力点リスト１４３ａに格納される。
【００５６】
出力点選択機能１４５は、出力点リストに、特定した出力点以外に出力点が残っている場合は、再度、優先順位に従って出力点を選択する。また、出力点が残っていない場合はコード生成が終了する。
【００５７】
以上のような処理を行うごとに１つの機能ブロックに対応するコードが生成される。
引き続き、データフロー図１５０を例に挙げて、出力点リストの優先順位に従って、通常要素１６１，１６２に対応するコードを順に生成した後に、通常要素１６３を生成する場合について説明する。
【００５８】
図１２は、実施例１における識別番号と、優先順位情報と、フラグとが付加された別のデータフロー図、ソースコードおよび出力点リストである。
通常要素１６２のコード生成を行った後、出力点リストには、出力点３［３］が格納されている。
【００５９】
出力点選択機能１４５は、出力点リストから出力点３［３］を選択する。そして、出力点リスト生成機能１４３は、選択した出力点３［３］を出力点リストから削除し、選択した出力点３［３］と結合する入力点４を有する通常要素１６３を特定する。
【００６０】
フラグ属性変更機能１４６は、図１２（Ａ）に示すように、特定した通常要素１６３の入力点４に付加されたフラグの属性を黒丸から白丸に変更する。
コード生成機能１４７は、通常要素１６３のフラグの属性が生成可能になっているか否かを判断する。コード生成機能１４７は通常要素１６３の入力点４，１２に付加されたフラグがすべて白丸であり、コードの生成が可能であることを確認する。
【００６１】
コード生成機能１４７は、通常要素１６３のコードを生成する。データフロー図１５０の通常要素１６３のコードを生成すると、図１２（Ｂ）に示すように、特定した通常要素１６３のコードを生成して、ソースコード１４６ａには、通常要素１６１に対応するコード“ａ（）”および通常要素１６２に対応するコード“ｂ（）”に加えて、通常要素１６３に対応するコード“ｃ（）”が生成される。
【００６２】
出力点リスト生成機能１４３は、コード生成機能１４７によってコード生成が行われた通常要素１６３の出力点５［３］を読み込み、図１２（Ｃ）に示すように、出力点リスト１４３ａに格納する。
【００６３】
再び、出力点５［３］を格納した出力点リスト１４３ａによって、同様の処理により、通常要素１６４に対応するコード“ｄ（）”の生成も行うことができる。
以上の処理を繰り返すことによって、データフロー図１５０からソースコードを、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”の順に生成することができる。
【００６４】
（実施例２）
図１３は、実施例２のデータフロー図である。
データフロー図２００は、開始要素２０１，２０２、通常要素２１１，２１２，２１３，２１４、終端要素２０３，２０４の機能ブロックが結合しており、開始要素２０１，通常要素２１１，２１２および終端要素２０３、開始要素２０２、通常要素２１３，２１４および終端要素２０４がフレーム２０５，２０６にそれぞれ包囲されて、フレーム２０５，２０６に優先順位情報として、それぞれ“１”，“２”の優先順位が付加されている。
【００６５】
このデータフロー図２００から実施例１と同様にしてソースコードを生成すると、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”の順序でソースコードが生成される。
以下に、実施例２のデータフロー図の場合に対して、フレームが無い場合のデータフロー図からソースコードの生成について比較する。
【００６６】
図１４は、従来のデータフロー図の例である。
データフロー図２００ａは、データフロー図２００において、フレーム２０５，２０６が無い従来のデータフロー図である。
【００６７】
データフロー図２００ａは、開始要素２０１ａ，２０２ａ、通常要素２１１ａ，２１２ａ，２１３ａ，２１４ａ、終端要素２０３ａ，２０４ａの機能ブロックから、開始要素２０１ａ、通常要素２１１ａ，２１２ａ、終端要素２０３ａ、および、開始要素２０２ａ、通常要素２１３ａ，２１４ａ、終端要素２０４ａが結合している。
【００６８】
このデータフロー図２００ａからソースコードを生成すると、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”または“ｃ（）”，“ｄ（）”，“ａ（）”，“ｂ（）”のいずれかの順序でソースコードが生成される。
【００６９】
このように、データフロー図の機能ブロックをフレームによって包囲して優先順位をつけることによって、コード生成の順序を簡単に制御することができる。
（実施例３）
実施例１，２では、データフロー図を構成するすべての機能ブロックがいずれかのフレームに必ず包囲されている場合を例にして説明した。一方、実施例３では、すべての機能ブロックがフレームに包囲されていない場合を例にして説明する。なお、実施例３では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応したコードの生成処理を、優先順位が付加された識別番号よりも優先することにする。
【００７０】
図１５は、実施例３のデータフロー図である。
データフロー図２５０は、開始要素２５１，２５２，２５３、通常要素２６１，２６２，２６３，２６４，２６５、終端要素２５４の機能ブロックが結合しており、開始要素２５２および通常要素２６２，２６３、開始要素２５３および通常要素２６４，２６５がフレーム２５５，２５６にそれぞれ包囲されて、フレーム２５５，２５６に優先順位情報として、それぞれ“１”，“２”の優先順位が付加されている。
【００７１】
このデータフロー図２５０に対して、初期化設定を行う。
図１６は、実施例３における識別番号と、優先順位情報と、フラグとが付加されたデータフロー図および出力点リストである。
【００７２】
データフロー図２５０において、図１６（Ａ）に示すように、識別子付加機能１４１は、出力点および入力点に識別番号を付加する。さらに、優先順位付加機能１４２は、出力点の識別番号に優先順位を付加する。そして、図１６（Ｂ）に示すように、出力点リスト生成機能１４３は、開始要素の出力点を選択して出力点リスト１４３ｂに格納する。フラグ表示機能１４４は、入力点にフラグを付加して、初期化設定が終了する。
【００７３】
データフロー図２５０では、優先順位が付加されていない識別番号の出力点の機能ブロックに対応するコードの生成処理を優先するために、出力点選択機能１４５は、出力点リスト１４３ｂから、開始要素２５１の出力点１３を選択および削除して、出力点１３と結合する入力点１４を有する通常要素２６１を特定する。
【００７４】
フラグ属性変更機能１４６は、入力点１４に付加されたフラグを白丸に変更する。
コード生成機能１４７は、通常要素２６１に対応するコード“ａ（）”を生成する。
出力点リスト生成機能１４３は、通常要素２６１の出力点１５［１］を出力点リスト１４３ｂに格納する。
【００７５】
以上のようにして、最初に出力点１３を選択して、出力点１３と結合する入力点１４を有する通常要素２６１に対応するコードが生成される。以下は同様の処理を繰り返し行うことによって、データフロー図２５０から“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”の順序でソースコードを生成することができる。
【００７６】
（実施例４）
実施例４は、実施例３と同様にすべての機能ブロックがフレームに包囲されていない場合を例にして説明する。
【００７７】
図１７は、実施例４のデータフロー図である。
データフロー図３００は、開始要素３０１、通常要素３１１，３１２，３１３，３１４，３１５，３１６、終端要素３０２，３０３の機能ブロックが結合しており、通常要素３１５および終端要素３０３、通常要素３１６および終端要素３０４がフレーム３０５，３０６にそれぞれ包囲されて、フレーム３０５，３０６に優先順位情報として、それぞれ“１”，“２”の優先順位が付加されている。なお、実施例４では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応したコードの生成処理を、優先順位が付加された識別番号よりも優先することにする。
【００７８】
データフロー図３００でも、既述の処理方法を繰り返し行うことによって、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”，“ｆ（）”の順序でソースコードを生成することができる。
【００７９】
（実施例５）
実施例５は、実施例３と同様にすべての機能ブロックがフレームに包囲されていない場合を例にして説明する。
【００８０】
図１８は、実施例５のデータフロー図である。
データフロー図３５０は、開始要素３５１，３５２、通常要素３６１，３６２，３６３，３６４，３６５，３６６，３６７，３６８、終端要素３５３，３５４の機能ブロックが結合しており、通常要素３６３，３６５，３６７がフレーム３５５，３５６，３５７にそれぞれ包囲されて、フレーム３５５，３５６，３５７に優先順位情報として、それぞれ“１”，“２”，“３”の優先順位が付加されている。なお、実施例５では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応したコードの生成処理を、優先順位が付加された識別番号よりも優先することにする。
【００８１】
データフロー図３５０でも、既述の処理方法を繰り返し行うことによって、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”，“ｆ（）”，“ｇ（）”，“ｈ（）”の順序でソースコードを生成することができる。
【００８２】
（実施例６）
実施例６は、実施例３と同様にすべての機能ブロックがフレームに包囲されておらず、フレーム内の機能ブロックにフレーム外からの入力を受ける場合を例にして説明する。
【００８３】
図１９は、実施例６のデータフロー図である。
データフロー図４００は、開始要素４０１、通常要素４１１，４１２，４１３，４１４，４１５，４１６、終端要素４０２の機能ブロックが結合しており、通常要素４１２，４１４，４１５、通常要素４１３がフレーム４０３，４０４にそれぞれ包囲されて、フレーム４０３，４０４に優先順位情報として、それぞれ“１”，“２”の優先順位が付加されている。なお、実施例６では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応したコードの生成処理は、優先順位が付加された識別番号よりも優先することにする。
【００８４】
データフロー図４００でも、既述の処理方法を繰り返し行うことによって、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”，“ｆ（）”の順序でソースコードを生成することができる。
【００８５】
（実施例７）
実施例７は、実施例３と同様にすべての機能ブロックがフレームに包囲されていない場合を例にして説明する。
【００８６】
図２０は、実施例７のデータフロー図である。
データフロー図４５０は、開始要素４５１，４５２、通常要素４６１，４６２，４６３，４６７，４６５，４６６、終端要素４５３の機能ブロックが結合しており、開始要素４５１および通常要素４６１、通常要素４６３、開始要素４５２および通常要素４６７がフレーム４５５，４５６，４５７にそれぞれ包囲されて、フレーム４５５，４５６，４５７に優先順位情報として、それぞれ“１”，“２”，“３”の優先順位が付加されている。なお、実施例７では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応したコードの生成処理を、優先順位が付加された識別番号よりも優先することにする。
【００８７】
データフロー図４５０でも、既述の処理方法を繰り返し行うことによって、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｅ（）”，“ｄ（）”，“ｆ（）”の順序でソースコードを生成することができる。
【００８８】
（実施例８）
実施例８は、実施例３と同様にすべての機能ブロックがフレームに包囲されていない場合を例にして説明する。
【００８９】
図２１は、実施例８のデータフロー図である。
データフロー図５００は、開始要素５０１，５０２、通常要素５１１，５１２，５１３，５１４，５１５、終端要素５０３の機能ブロックが結合しており、開始要素５０１および通常要素５１１、開始要素５０２および通常要素５１２がフレーム５０４，５０５にそれぞれ包囲されて、フレーム５０４，５０５に優先順位情報として、それぞれ“１”，“２”の優先順位が付加されている。なお、実施例８では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応したコードの生成処理は、優先順位が付加された識別番号よりも優先することにする。
【００９０】
データフロー図５００でも、既述の処理方法を繰り返し行うことによって、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”の順序でソースコードを生成することができる。
【００９１】
（実施例９）
実施例９は、フレーム内の機能ブロックに対応するコードの生成処理が、一旦フレーム外に出て、再びフレーム内に入る場合を例に挙げて説明する。
【００９２】
図２２は、実施例９のデータフロー図である。
データフロー図５５０は、開始要素５５１、通常要素５６１，５６２，５６３，５６４，５６５，５６６、終端要素５５２，５５３の機能ブロックが結合しており、通常要素５６２，５６５がフレーム５５４に包囲されて、フレーム５５４に優先順位情報として“１”の優先順位が付加されている。なお、実施例９では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応したコードの生成処理を、優先順位が付加された識別番号よりも優先することにする。
【００９３】
まず、初期化設定を行って、通常要素５６１に対応するコード“ａ（）”を生成した後の処理について以下に説明する。
図２３，２４，２５は、実施例９における識別番号と、優先順位情報と、フラグとが付加されたデータフロー図、ソースコードおよび出力点リストである。
【００９４】
図２３は、通常要素５６１に対応するコード“ａ（）”を加えてソースコード１４６ｃを生成し、出力点リスト１４３ｃに通常要素５６１の出力点３［１］を格納した状態のデータフロー図５５０を示している。
【００９５】
この後、出力点選択機能１４５は、出力点３［１］を選択して、出力点３［１］と結合する入力点４を有する通常要素５６２が特定される。
フラグ属性変更機能１４６は、特定した通常要素５６２に付加されたフラグの属性を、コード生成が可能であることを示すフラグとして白丸に変更する。
【００９６】
コード生成機能１４７は、通常要素５６２では、図２４（Ａ）に示すように、入力点４に付加されたフラグの属性が白丸となり、特定した通常要素５６２に付加されたすべての入力点のフラグが白丸であるために、コードの生成が可能となる。
【００９７】
コード生成機能１４７は、図２４（Ｂ）に示すように、通常要素５６２のコード“ｂ（）”をさらにソースコード１４６ｃに生成する。
出力点リスト生成機能１４３によって、コード生成機能１４７によってコード生成が行われた機能ブロックのすべての出力点を読み込み、図２４（Ｃ）に示すように、通常要素５６２の出力点５が出力点リスト１４３ｃに格納される。
【００９８】
引き続き、出力点選択機能１４５は、出力点５を選択して、出力点５と結合する入力点６を有する通常要素５６３が特定される。
フラグ属性変更機能１４６は、特定した通常要素５６３に付加されたフラグの属性を、コード生成が可能であることを示すフラグとして白丸に変更する。
【００９９】
コード生成機能１４７は、通常要素５６３では、図２５（Ａ）に示すように、入力点６に付加されたフラグの属性が白丸となり、特定した通常要素５６３に付加されたすべての入力点のフラグが白丸であるために、コードの生成が可能となる。
【０１００】
コード生成機能１４７は、図２５（Ｂ）に示すように、通常要素５６３に対応するコード“ｃ（）”をさらにソースコード１４６ｃに生成する。
出力点リスト生成機能１４３によって、コード生成機能１４７によってコード生成が行われた通常要素５６３の出力点７，８［１］を読み込み、図２５（Ｃ）に示すように、通常要素５６３の出力点７，８［１］が出力点リスト１４３ｃに格納される。
【０１０１】
引き続き、出力点選択機能１４５が、出力点リスト１４３ｃから優先順位が高い出力点７を選択し、既述の処理手順を繰り返し行うと、データフロー図５５０から、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”，“ｆ（）”の順序に従ってソースコードが生成される。
【０１０２】
このような処理方法では、フレーム内の出力点を有する機能ブロックがフレーム外の入力点の機能ブロックと結合する場合、フレーム内の他の機能ブロックに対応するコード生成を一旦保留して、生成処理を続けるようにした。
【０１０３】
一方、この場合に、フレーム内の他の機能ブロックを、特定した出力点を有する機能ブロックを包囲するフレームの外にあるものとして処理を行うことを考える。
図２６は、プログラム開発支援装置の処理手順を示す別のフローチャートである。
【０１０４】
図２６のフローチャートは、図４において、ステップＳ１５以降に、ステップＳ１５ａとステップＳ１５ｂとの処理をさらに加えたものである。
これらの処理工程を加えた［ステップＳ１５］以降について以下に説明する。なお、図２６において、その他の処理および処理番号は図４と同様とするために、各処理についての説明は省略する。
【０１０５】
［ステップＳ１５ａ］優先順位付加機能１４２は、特定した機能ブロックと、特定した機能ブロックの他の機能ブロックがフレームに包囲されてあって、特定した機能ブロックの出力点がフレーム外の別の機能ブロックの入力点と結合しているか否かを判断する。これが真のときはステップＳ１５ｂへ進められ、偽のときはステップＳ１６へ進められる。
【０１０６】
［ステップＳ１５ｂ］優先順位付加機能１４２は、特定した機能ブロックと同じフレーム内の他の機能ブロックは、特定した機能ブロックを包囲するフレーム外にあるものとして、出力点の識別番号に、改めて優先順位情報を付加し直す。
【０１０７】
そして、［ステップＳ１６］へと処理が続く。
このように、図２６のフローチャートでは、特定した出力点を有する機能ブロックを包囲するフレームに他の機能ブロックがあって、特定した機能ブロックの出力点が、フレーム外の入力点と結合する場合に、特定した機能ブロックを包囲するフレーム内の処理を終了させて、他の機能ブロックを特定した機能ブロックを包囲するフレームの外にあるものとして処理させている。
【０１０８】
以下に図２６のフローチャートを用いたソースコードの生成について説明する。なお、ソースコード生成の説明は、通常要素４６１に対応するコード“ａ（）”を生成（図２３）した後から説明する。
【０１０９】
図２７，２８は、実施例９における識別番号と、優先順位情報と、フラグとが付加された別のデータフロー図、別のソースコードおよび別の出力点リストである。
出力点選択機能１４５は、出力点３［１］を選択して、出力点３［１］と結合する入力点４を有する通常要素５６２が特定される。
【０１１０】
フラグ属性変更機能１４６は、特定した通常要素５６２に付加されたフラグの属性を、コード生成が可能であることを示すフラグとして白丸に変更する。
コード生成機能１４７は、通常要素５６２では、入力点４に付加されたフラグの属性が白丸となり、特定した通常要素５６２に付加されたすべての入力点のフラグが白丸であるために、コードの生成が可能であることを確認する。
【０１１１】
コード生成機能１４７は、図２７（Ｂ）に示すように、通常要素５６２のコード“ｂ（）”をさらにソースコード１４６ｂに生成する。
優先順位付加機能１４２によって、フレーム５５４に包囲された通常要素５６２の出力点５は、フレーム５５４外の通常要素５６３の入力点６と結合しており、フレーム５５４内には、通常要素５６２の他に通常要素５６５があるため、図２７（Ａ）に示すように、通常要素５６５をフレーム５５４の外にあるものとして、優先順位情報を付加し直すと、通常要素５６３の出力点８［１］が出力点８となる。
【０１１２】
出力点リスト生成機能１４３によって、コード生成機能１４７によってコード生成が行われた機能ブロックのすべての出力点を読み込み、図２７（Ｃ）に示すように、通常要素５６２の出力点５が出力点リスト１４３ｃに格納される。
【０１１３】
引き続き、出力点選択機能１４５は、出力点５を選択して、出力点５と結合する入力点６を有する通常要素５６３が特定される。
フラグ属性変更機能１４６は、特定した通常要素５６３に付加されたフラグの属性を、コード生成が可能であることを示すフラグとして白丸に変更する。
【０１１４】
コード生成機能１４７は、通常要素５６３では、入力点６に付加されたフラグの属性が白丸となり、特定した通常要素５６３に付加されたすべての入力点のフラグが白丸であるために、コードの生成が可能であることを確認する。
【０１１５】
コード生成機能１４７は、図２８（Ｂ）に示すように、通常要素５６３のコード“ｃ（）”をさらにソースコード１４６ｃに生成する。
出力点リスト生成機能１４３によって、コード生成機能１４７によってコード生成が行われた通常要素５６３の出力点７，８を読み込み、図２８（Ｃ）に示すように、通常要素５６３の出力点７，８が出力点リスト１４３ｃに格納される。
【０１１６】
そして、出力点選択機能１４５が、出力点リスト１４３ｃから優先順位が等しい出力点７，８のいずれかを選択することができ、フローチャートに沿った処理を行うと、データフロー図５５０から、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”，“ｆ（）”、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｅ（）”，“ｄ（）”，“ｆ（）”、または、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｅ（）”，“ｆ（）”，“ｄ（）”のいずれかの順序によってソースコードが生成される。
【０１１７】
以上のように、特に、フレーム内の機能ブロックに対応するコードの生成処理が、一旦フレーム外に出て、再びフレーム内に入るようなデータフロー図からソースコードを生成する場合には、フレーム内の機能ブロックに対応するコードの生成処理を一旦、保留または終了させる方法がある。なお、一旦保留させる方法の方が、厳密に生成処理の優先順位を決定することができる。いずれかの方法を利用するかは生成したいソースコードの設計に応じて、開発者の操作入力により決定される。
【０１１８】
（実施例１０）
これまでの実施例では、優先順位が付加されていない識別番号の出力点を有する機能ブロックに対応するコードの生成を、付加された識別番号よりも優先する場合を例にして説明したが、実施例１０では、優先順位が付加された識別番号の出力点を有する機能ブロックに対応するコードの生成を優先する場合とする。
【０１１９】
図２９は、実施例１０のデータフロー図である。
データフロー図６００は、開始要素６０１，６０２，６０３、通常要素６１１，６１２，６１３，６１４，６１５、終端要素６０４の機能ブロックが結合しており、開始要素６０１および通常要素６１１、開始要素６０２および通常要素６１２，６１３がフレーム６０５，６０６にそれぞれ包囲されて、フレーム６０５，６０６に優先順位情報として、それぞれ“１”，“２”の優先順位が付加されている。
【０１２０】
図３０は、実施例１０における識別番号、優先順位情報と、フラグとが付加されたデータフロー図および出力点リストである。
データフロー図６００において、図３０（Ａ）に示すように、識別子付加機能１４１は、出力点および入力点に識別番号を付加する。さらに、優先順位付加機能１４２は、出力点の識別番号に優先順位を付加する。そして、図３０（Ｂ）に示すように、出力点リスト生成機能１４３は、開始要素の出力点を選択して出力点リスト１４３ｄに格納する。フラグ表示機能１４４は、入力点にフラグを付加して、初期化設定が終了する。
【０１２１】
次に、出力点選択機能１４５は、出力点リストに格納された識別番号から、優先順位に従って出力点を１つ選択する。但し、実施例１０では、優先順位が付加された識別番号のコード生成を、付加されていないよりも優先するために、出力点リスト１４３ｄから出力点９［１］を選択して、以下、優先順位を間違わずに既述の処理方法を繰り返し行うことによって、データフロー図６００から、“ａ（）”，“ｂ（）”，“ｃ（）”，“ｄ（）”，“ｅ（）”の順序でソースコードを生成することができる。
【０１２２】
以上のように、機能ブロックによって構成されるデータフロー図にて、フレームによって機能ブロックを包囲して、コードの生成順序の優先順位をつけることによって、データフロー図からソースコードへ生成する作業量が低減し、短時間で効率的に、品質が向上した組み込み分野向けのソースコードを柔軟に生成することができるようになる。
【０１２３】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、プログラム開発支援装置１００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどが挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどが挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などが挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）などが挙げられる。
【０１２４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２５】
プログラム開発支援プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【図面の簡単な説明】
【０１２６】
【図１】実施の形態に適用される発明の概要図である。
【図２】プログラム開発支援装置のハードウェア構成を示す図である。
【図３】プログラム開発支援装置の機能を示すブロック図である。
【図４】プログラム開発支援装置の処理手順を示すフローチャートである。
【図５】プログラム開発支援装置の初期化設定処理手順を示すフローチャートである。
【図６】実施例１のデータフロー図である。
【図７】実施例１における識別番号、優先順位情報およびフラグが付加されたデータフロー図（その１）である。
【図８】実施例１において生成された出力点リスト（その１）である。
【図９】実施例１における識別番号、優先順位情報およびフラグが付加されたデータフロー図（その２）である。
【図１０】実施例１において生成されたソースコードである。
【図１１】実施例１において生成された出力点リスト（その２）である。
【図１２】実施例１における識別番号と、優先順位情報と、フラグとが付加された別のデータフロー図、ソースコードおよび出力点リストである。
【図１３】実施例２のデータフロー図である。
【図１４】従来のデータフロー図の例である。
【図１５】実施例３のデータフロー図である。
【図１６】実施例３における識別番号と、優先順位情報と、フラグとが付加されたデータフロー図および出力点リストである。
【図１７】実施例４のデータフロー図である。
【図１８】実施例５のデータフロー図である。
【図１９】実施例６のデータフロー図である。
【図２０】実施例７のデータフロー図である。
【図２１】実施例８のデータフロー図である。
【図２２】実施例９のデータフロー図である。
【図２３】実施例９における識別番号と、優先順位情報と、フラグとが付加されたデータフロー図、ソースコードおよび出力点リスト（その１）である。
【図２４】実施例９における識別番号と、優先順位情報と、フラグとが付加されたデータフロー図、ソースコードおよび出力点リスト（その２）である。
【図２５】実施例９における識別番号と、優先順位情報と、フラグとが付加されたデータフロー図、ソースコードおよび出力点リスト（その３）である。
【図２６】プログラム開発支援装置の処理手順を示す別のフローチャートである。
【図２７】実施例９における識別番号と、優先順位情報と、フラグとが付加された別のデータフロー図、別のソースコードおよび別の出力点リスト（その１）である。
【図２８】実施例９における識別番号と、優先順位情報と、フラグとが付加された別のデータフロー図、別のソースコードおよび別の出力点リスト（その２）である。
【図２９】実施例１０のデータフロー図である。
【図３０】実施例１０における識別番号、優先順位情報と、フラグとが付加されたデータフロー図および出力点リストである。
【符号の説明】
【０１２７】
２  入力装置
３  ソースコード
１０  プログラム開発支援装置
１１  データフロー図記憶手段
１１ａ  データフロー図
１２  データフロー図生成手段
１３  ソースコード生成手段
【図１】
2008171305.tif 000003
【図２】
2008171305.tif 000004
【図３】
2008171305.tif 000005
【図４】
2008171305.tif 000006
【図５】
2008171305.tif 000007
【図６】
2008171305.tif 000008
【図７】
2008171305.tif 000009
【図８】
2008171305.tif 000010
【図９】
2008171305.tif 000011
【図１０】
2008171305.tif 000012
【図１１】
2008171305.tif 000013
【図１２】
2008171305.tif 000014
【図１３】
2008171305.tif 000015
【図１４】
2008171305.tif 000016
【図１５】
2008171305.tif 000017
【図１６】
2008171305.tif 000018
【図１７】
2008171305.tif 000019
【図１８】
2008171305.tif 000020
【図１９】
2008171305.tif 000021
【図２０】
2008171305.tif 000022
【図２１】
2008171305.tif 000023
【図２２】
2008171305.tif 000024
【図２３】
2008171305.tif 000025
【図２４】
2008171305.tif 000026
【図２５】
2008171305.tif 000027
【図２６】
2008171305.tif 000028
【図２７】
2008171305.tif 000029
【図２８】
2008171305.tif 000030
【図２９】
2008171305.tif 000031
【図３０】
2008171305.tif 000032