(57)【特許請求の範囲】
【請求項１】
装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援システムであって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成手段と、
前記分岐階層リストに従って、当該リストの各部品が持つコード片を設定／出力し、このコード片をソースコードとして出力するソースコード出力手段と、を備え、
前記ソースコード出力手段は、
前記分岐階層リストの部品が持つコード片を設定するコード片設定手段と、前記分岐階層リストの部品が持つコード片を出力するコード片出力手段とを備え、
前記分岐階層リストに子があれば、前記コード片設定手段による子の部品が持つコード片の設定処理と、前記コード片出力手段による当該コード片の出力処理を、子の部品がなくなるまで繰り返し、子の部品がなくなった後は分岐階層リストの分岐から合流までの区間を持つものに閉じ括弧を付加する後処理を行ない、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とするソフトウェアの開発支援システム。
【請求項２】
装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援システムであって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成手段と、
前記分岐階層リストの部品が持つコード片を設定するコード片設定手段および前記分岐階層リストの部品が持つコード片を実行するコード片実行手段を備えた演算シミュレーション手段と、を備え、
前記演算シミュレーション手段は、
記分岐階層リストに子があれば、前記コード片設定手段による子の部品が持つコード片の設定処理と、前記コード片実行手段による当該コード片の実行処理を繰り返し、この繰り返しは、処理の流れの区間の始まりの部品（ガード）が自分の処理時に条件一致であれば、自分の子となる部品を処理することと、さらにその親の区間の開始部品（分岐）が自分の子となるガードの処理結果を受けて、対となる区間の始まり（ガード）を処理するかを判定することにより子または次の子を実行するか否かを制御し、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とするソフトウェアの開発支援システム。
【請求項３】
前記分岐階層リスト生成手段は、
処理の開始部品を取得する開始部品取得手段と、
各部品の結線状態を取得する結線取得手段と、
結線先の部品を取得する結線先部品取得手段と、
分岐から合流区間以降の区間を統合する分岐階層リスト最適化手段と、
を備えたことを特徴とする請求項１又は２に記載のソフトウェアの開発支援システム。
【請求項４】
装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援方法であって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成ステップと、
前記分岐階層リストに従って、当該リストの各部品が持つコード片を設定／出力し、このコード片をソースコードとして出力するソースコード出力ステップと、を備え、
前記ソースコード出力ステップは、
前記分岐階層リストの部品が持つコード片を設定するコード片設定ステップと、前記分岐階層リストの部品が持つコード片を出力するコード片出力ステップとを備え、
前記分岐階層リストに子があれば、前記コード片設定ステップによる子の部品が持つコード片の設定処理と、前記コード片出力ステップによる当該コード片の出力処理を、子の部品がなくなるまで繰り返し、子の部品がなくなった後は分岐階層リストの分岐から合流までの区間を持つものに閉じ括弧を付加する後処理を行ない、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とするソフトウェアの開発支援方法。
【請求項５】
装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援方法であって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成ステップと、
前記分岐階層リストの部品が持つコード片を設定するコード片設定ステップおよび前記分岐階層リストの部品が持つコード片を出力するコード片実行ステップを備えて演算シミュレーションを実行する演算シミュレーションステップと、を備え、
前記演算シミュレーションステップは、
前記分岐階層リストに子があれば、前記コード片設定ステップによる子の部品が持つコード片の設定処理と、前記コード片実行ステップによる当該コード片の実行処理を繰り返し、この繰り返しは、処理の流れの区間の始まりの部品（ガード）が自分の処理時に条件一致であれば、自分の子となる部品を処理することと、さらにその親の区間の開始部品（分岐）が自分の子となるガードの処理結果を受けて、対となる区間の始まり（ガード）を処理するかを判定することにより子または次の子を実行するか否かを制御し、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とするソフトウェアの開発支援方法。
【請求項６】
前記分岐階層リスト生成ステップは、
処理の開始部品を取得する開始部品取得ステップと、
各部品の結線状態を取得する結線取得ステップと、
結線先の部品を取得する結線先部品取得ステップと、
分岐から合流区間以降の区間を統合する分岐階層リスト最適化ステップと、
を備えたことを特徴とする請求項４又は５に記載のソフトウェアの開発支援方法。
【請求項７】
請求項４〜６のいずれか１項に記載のソフトウェアの開発支援方法における処理ステップをコンピュータで実行可能にしたことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援システムおよび支援方法に係り、特に特定の情報処理機能を実現するための設計図を元にしたソースコードの出力および演算シミュレーションの実行に関する。
【背景技術】
【０００２】
組込みソフトウェア開発では、最初の設計段階として、特定の情報処理機能を実現するための設計図（ブロック図、フローチャート、状態遷移図など）を作成する。このうち、ブロック図の要素は演算ブロックで表現され、また、フローチャートの要素は処理ブロックで表現され、状態遷移図の要素は状態ブロックで表現され、これらブロックが設計図上で線で結合されることで、ソフトウェアとして実現したい内容を表現する。
【０００３】
これらの設計図を元にしてコンピュータ処理できるソフトウェアを開発するには、ソフトウェア開発者が設計図から設計情報を読み取りながら、手作業でソースコードの出力などを行っている。
【０００４】
例えば、図１１に設計図（ブロック図）ＤＣ１で示すように、開発対象の組込み機器の演算機能が、値設定１（ＶＡＲ１）と値設定２（ＶＡＲ２）を加え、その加算結果ＶＡＲ４に値設定３（ＶＡＲ３）を掛けることで値設定４（ＶＡＲ５）を得る場合、入力から出力まで、加算や乗算を表す演算部品を配置し、各演算部品間を線で結んで演算順序を表現する。
【０００５】
このときの演算順序は、乗算部品がデータＶＡＲ４の入力を待つ必要があるため、乗算部品よりも加算部品の方が先になり、図１１中に示すように、加減算部品に次いで乗算部品を配置し、最後に出力ブロック（値設定４）を配置する。
【０００６】
ソフトウェア開発者は、決定された演算順序に従ってソースコード（プログラム）を出力し、さらに専用のコンパイラを使用してソースコードをコンパイルし、シミュレーションを行い、さらには実機に組み込んで動作試験を行う。
【０００７】
演算順序からのソースコード出力には、各演算部品が各演算特性を表すコード片（ブロックに対応する部分的なソースコード）をもち、このコード片に入力データを割付けることとする。例えば、加算の場合は、入力した２つのデータＶＡＲ１，ＶＡＲ２を足して１つのデータＶＡＲ４を出力するというコード片に、データＶＡＲ１，ＶＡＲ２などを割り付ける。
【０００８】
図１２は設計図が分岐を含むフローチャート（流れ図）である場合の演算順序とソースコードの例を示す。図１３は設計図が状態遷移図である場合の演算順序とソースコードの例を示す。
【０００９】
以上のように、ソフトウェア開発には、設計図から演算順序作成を経てソースコードの出力という手順で行われており、このうちソースコードの出力やシミュレーションの実行を支援する設計支援ツールも提案されている（例えば、非特許文献１、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】明電情報  通巻３２２号  ２００９  ＮＯ．１，ｐ１１、共通基礎技術
【非特許文献２】ＭＡＴＬＡＢ／Ｓｉｍｕｌｉｎｋ（ｈｔｔｐ：／／ｗｗｗ．ｃｙｂｅｒｎｅｔ．ｃｏ．ｊｐ／ｍａｔｌａｂ／ｐｒｏｄｕｃｔｓ／ｐｒｏｄｕｃｔ＿ｌｉｓｔｉｎｇ／ｓｉｍｕｌｉｎｋ／）
【発明の概要】
【発明が解決しようとする課題】
【００１１】
前記のように、組込みソフトウェア開発支援システムにおけるソースコードの出力と演算シミュレーションの実行は、処理の流れを表す情報に基づき実施することができ、さらには開発者の作業負担を軽減する支援ツールもあるが、以下の問題点がある。
【００１２】
（１）上記の処理の流れの表現（演算順序）は、実施する処理（部品）を順番に並べることにより表現される。この演算順序の表現方法についての問題点を説明する。
【００１３】
従来は、演算シミュレーションの実行またはソースコードの出力時に処理の流れを表す図を表示し、設計図と照らし合わして確認していたが、設計図として分岐をもつ流れ図の場合に分岐がどのように行われるのか開発者には直感的に分かりづらいものであった。
【００１４】
例えば図１４の左側に示す流れ図に対し、演算要素リストは同図の右側に示すように羅列されるが、このリストからだけでは分岐条件（ガード１，２）がわかりづらかった。また、分岐による処理の流れを特定してからでないとソースコードを出力することができない。これら問題は、以下の不都合を起こす。
【００１５】
・分岐がある場合、処理の流れを表す情報から容易に設計図をイメージできないため、開発及び保守が容易でない。例えば、図１５の右側に示すように、処理の流れを示す情報はフラットに並ぶ、どこが処理の流れの分岐で合流か一見してわからないため、処理の流れを表す情報の正当性を判断しにくい。
【００１６】
・分岐による処理の流れの順序を決める必要があるため、演算順序を決めるアルゴリズムが複雑になる。例えば、図１５の右側に示すように、分岐から合流までの処理区間を判断して演算順序を決定する必要がある。
【００１７】
（２）上記の演算順序に基づき実現されるソースコードの出力においての問題点を説明する。
【００１８】
・分岐がある場合、容易にソースコードをイメージできないため、開発及び保守が容易でない。例えば、図１６の中央に演算順序を、右側にソースコードを示すように、処理の流れを示す情報はフラットに並ぶため、どこが条件分岐の特性を持つ部品か一見してわからないため、ソースコードの出力の正当性を判断しにくい。
【００１９】
・処理の流れの区間を特定する必要があるため、ソースコード出力のアルゴリズムが複雑になる。例えば、図１６の右側に示すように、条件分岐の終わり（処理の流れの分岐している区間）を特定して閉じ括弧「｝」をつけることが必要となる。
【００２０】
（３）上記の演算順序に基づき実現される演算シミュレーションにおいての問題点を説明する。
【００２１】
・分岐がある場合、容易にシミュレーションの流れをイメージできないため、開発及び保守が容易でない。例えば、図１７の右側に演算順序を示すように、どこが処理の流れの分岐になって、どこに処理の流れが遷移するのか一見してわからないため、演算シミュレーションの正当性を判断しにくい。
【００２２】
・次の処理を条件により特定する必要があるため、演算シミュレーションのアルゴリズムが複雑になる。例えば、図１７の右側に演算順序を示すように、線（ガード１）の条件不成立時は次に線（ガード２）を実施する必要がある、また、処理２を実施後は合流を実施する必要があり、条件分岐の終わり（処理の流れの分岐している区間）を特定して次に行う部品を決定する必要がある。
【００２３】
本発明の目的は、設計図中の分岐による処理の流れの認識を容易にし、この処理の流れを基にしたソースコードの出力および演算シミュレーションの実行を確実、容易にしたソフトウェアの開発支援システム、支援方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００２４】
本発明は、前記の課題を解決するため、設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして表現、生成し、この分岐階層リストに従ってソースコードを出力、または演算シミュレーションを実行するようにしたもので、以下のシステム、方法およびプログラムを特徴とする。
【００２５】
（システムの発明）
（１）装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援システムであって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成手段と、
前記分岐階層リストに従って、当該リストの各部品が持つコード片を設定／出力し、このコード片をソースコードとして出力するソースコード出力手段と、を備え、
前記ソースコード出力手段は、
前記分岐階層リストの部品が持つコード片を設定するコード片設定手段と、前記分岐階層リストの部品が持つコード片を出力するコード片出力手段とを備え、
前記分岐階層リストに子があれば、前記コード片設定手段による子の部品が持つコード片の設定処理と、前記コード片出力手段による当該コード片の出力処理を、子の部品がなくなるまで繰り返し、子の部品がなくなった後は分岐階層リストの分岐から合流までの区間を持つものに閉じ括弧を付加する後処理を行ない、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とする。
【００２７】
（２）装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援システムであって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成手段と、
前記分岐階層リストの部品が持つコード片を設定するコード片設定手段および前記分岐階層リストの部品が持つコード片を実行するコード片実行手段を備えた演算シミュレーション手段と、を備え、
前記演算シミュレーション手段は、
記分岐階層リストに子があれば、前記コード片設定手段による子の部品が持つコード片の設定処理と、前記コード片実行手段による当該コード片の実行処理を繰り返し、この繰り返しは、処理の流れの区間の始まりの部品（ガード）が自分の処理時に条件一致であれば、自分の子となる部品を処理することと、さらにその親の区間の開始部品（分岐）が自分の子となるガードの処理結果を受けて、対となる区間の始まり（ガード）を処理するかを判定することにより子または次の子を実行するか否かを制御し、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とする。
【００２９】
（３）前記分岐階層リスト生成手段は、
処理の開始部品を取得する開始部品取得手段と、
各部品の結線状態を取得する結線取得手段と、
結線先の部品を取得する結線先部品取得手段と、
分岐から合流区間以降の区間を統合する分岐階層リスト最適化手段と、
を備えたことを特徴とする。
【００３０】
（方法の発明）
（４）装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援方法であって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成ステップと、
前記分岐階層リストに従って、当該リストの各部品が持つコード片を設定／出力し、このコード片をソースコードとして出力するソースコード出力ステップと、を備え、
前記ソースコード出力ステップは、
前記分岐階層リストの部品が持つコード片を設定するコード片設定ステップと、前記分岐階層リストの部品が持つコード片を出力するコード片出力ステップとを備え、
前記分岐階層リストに子があれば、前記コード片設定ステップによる子の部品が持つコード片の設定処理と、前記コード片出力ステップによる当該コード片の出力処理を、子の部品がなくなるまで繰り返し、子の部品がなくなった後は分岐階層リストの分岐から合流までの区間を持つものに閉じ括弧を付加する後処理を行ない、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とする。
【００３２】
（５）装置に組み込んで特定の情報処理機能を実現するためのソフトウェアの開発支援方法であって、
設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして生成する分岐階層リスト生成ステップと、
前記分岐階層リストの部品が持つコード片を設定するコード片設定ステップおよび前記分岐階層リストの部品が持つコード片を出力するコード片実行ステップを備えて演算シミュレーションを実行する演算シミュレーションステップと、を備え、
前記演算シミュレーションステップは、
前記分岐階層リストに子があれば、前記コード片設定ステップによる子の部品が持つコード片の設定処理と、前記コード片実行ステップによる当該コード片の実行処理を繰り返し、この繰り返しは、処理の流れの区間の始まりの部品（ガード）が自分の処理時に条件一致であれば、自分の子となる部品を処理することと、さらにその親の区間の開始部品（分岐）が自分の子となるガードの処理結果を受けて、対となる区間の始まり（ガード）を処理するかを判定することにより子または次の子を実行するか否かを制御し、これら処理を分岐階層リストの終わりまで再帰的に実行することを特徴とする。
【００３４】
（６）前記分岐階層リスト生成ステップは、
処理の開始部品を取得する開始部品取得ステップと、
各部品の結線状態を取得する結線取得ステップと、
結線先の部品を取得する結線先部品取得ステップと、
分岐から合流区間以降の区間を統合する分岐階層リスト最適化ステップと、
を備えたことを特徴とする。
【００３５】
（プログラムの発明）
（７）上記（４）〜（６）のいずれか１項に記載のソフトウェアの開発支援方法における処理ステップをコンピュータで実行可能にしたことを特徴とするプログラム。
【発明の効果】
【００３６】
以上のとおり、本発明によれば、設計図中の分岐による処理の流れを階層構造化した分岐階層リストとして表現、生成し、この分岐階層リストに従ってソースコードを出力、または演算シミュレーションを実行するようにしたため、設計図中の分岐による処理の流れの認識を容易にし、この処理の流れを基にしたソースコードの出力および演算シミュレーションの実行が確実、容易になる。
【００３７】
具体的には、以下の効果が得られる。
【００３８】
（１）処理の流れを表す情報（演算順序）を階層構造化した分岐階層リストによって表現するため、処理の流れを容易にイメージでき、ソフトウェアの開発保守が容易になる。
【００３９】
（２）階層構造化した分岐階層リストによって処理の流れを表現するため、処理の流れの区間が予め特定され、ソースコード出力のアルゴリズムが容易になる。
【００４０】
（３）階層構造化した分岐階層リストによって処理の流れを表現するため、処理の流れの区間が予め特定され、演算シミュレーションのアルゴリズムが容易になる。
【図面の簡単な説明】
【００４１】
【図１】本発明に係る開発支援システムの要部構成図（ソースコード出力）。
【図２】本発明に係る開発支援システムの要部構成図（演算シミュレーション実行）。
【図３】流れ図と分岐階層リストの構成図（実施形態）。
【図４】分岐階層リストの表現例（実施形態）。
【図５】分岐階層リスト画面例（実施形態）。
【図６】分岐階層リストによるソースコードの出力の例（実施形態）。
【図７】演算順序によるソースコードの生成例（従来）。
【図８】分岐階層リストによるソースコードの生成例（実施形態）。
【図９】分岐階層リストによる演算シミュレーションの実行の例（実施形態）
【図１０】演算順序または分岐階層リストから処理部品を特定する例。
【図１１】演算順序生成とソースコード出力および演算シミュレーションの例（従来）。
【図１２】流れ図と演算順序とソースコードの例。
【図１３】状態遷移図と演算順序とソースコードの例。
【図１４】流れ図と演算要素リストの例。
【図１５】流れ図と演算順序の流れ区間特定の例。
【図１６】流れ図と演算順序とソースコードの区間特定の例。
【図１７】流れ図と演算順序による演算シミュレーションの例。
【発明を実施するための形態】
【００４２】
（１）システム構成
図１は、本発明に係る開発支援システムの要部構成図であり、ソースコード出力を支援するための機能構成を示す。同様に、図２は、本発明に係る開発支援システムの要部構成図であり、演算シミュレーション実行を支援するための機能構成を示す。なお、装置に搭載する各機能は、コンピュータ資源とこれを利用して当該機能を実現するためのプログラムとして記載するソフトウェアで実現される。
【００４３】
図１に示すソースコード出力装置１００は、特定の情報処理機能を実現するために設計された設計図（ブロック図、フローチャート、状態遷移図など）を元にソースコードを生成して出力するための処理手段として、分岐階層リスト生成機能１０１、コード片設定機能１０２およびコード片出力機能１０３を備える。
【００４４】
同様に、図２に示す演算シミュレーション装置３００は、設計図（ブロック図、フローチャート、状態遷移図など）を元に生成するソースコードで演算シミュレーションを実行するための処理手段として、分岐階層リスト生成機能３０１、コード片設定機能３０２およびコード片実行機能３０３を備える。
【００４５】
上記の分岐階層リスト生成機能１０１、３０１による分岐階層リスト生成を支援する分岐階層リスト取得装置２００は、開始部品取得機能２０１，結線取得機能２０２，結線先部品取得機能２０３，分岐階層リスト最適化機能２０４および分岐階層リスト表示機能２０５を備え、設計図から分岐階層リストを生成、取得する。
【００４６】
（２）分岐階層リスト生成
図１における分岐階層リスト生成機能１０１は、設計図に従って作成されていた従来の演算順序（演算処理の流れを表す情報）に代えて、処理の流れを分岐で階層構造化した分岐階層リストとして表現、生成する。この分岐階層リストは、設計図に分岐処理が存在する場合に当該分岐処理の流れの区間（分岐の各枝から合流手前まで）を階層構造化したものである。
【００４７】
例えば、図３の左側に示す流れ図の分岐階層リストは同図の右側に示すように、処理１とそれに続く分岐はルートの子になるため階層を１つ下げて表示し、当該分岐に結合される１つの分岐線１は当該分岐の子になるため階層を１つ下げて表示し、処理２は分岐線１の子になるため階層を１つ下げて表示し、分岐線２は分岐線１と同じ分岐の子になるため同じ階層で表示し、処理３は分岐線２の子になるため階層を１つ下げて表示し、合流と処理４はルートの子になるため処理１，分岐と同じ階層で表示する。
【００４８】
分岐階層リスト生成機能１０１は、開発者が分岐階層リスト生成の実行を指令操作したときに起動され、プログラム作成対象となる設計図情報と、分岐階層リスト生成処理命令を分岐階層リスト取得装置２００に転送する。
【００４９】
分岐階層リスト取得装置２００による分岐階層リスト取得は、設計図から開始部品取得機能２０１により取得した開始部品に繋がる線を結線取得機能２０２により取得し、それが分岐線であれば、分岐階層リストの階層を下げて追加する。結線取得機能２０２により取得した線が分岐線でなければ、分岐階層リストの階層を下げずに追加する。
【００５０】
結線取得機能２０２により取得した線に対して結線先部品取得機能２０３により取得した結線先部品を、結線取得機能２０２により取得した線が分岐線であれば、分岐階層リストの階層を下げて追加する。結線取得機能２０２により取得した線が分岐線でなければ、分岐階層リストの階層を下げずに追加する。結線の終わりまで（一つ下流の線がなくなるまで）、結線取得機能２０２と結線先取得機能２０３を再帰的に繰り返し、分岐階層リストを生成する。
【００５１】
その後、分岐階層リスト最適化機能２０４により、図４の中央と右側に示すとおり、分岐している線同士に繋がる部品で共通している部品の階層を分岐している部品の階層まで上げる。
【００５２】
最後に分岐階層リスト表示機能２０５により分岐階層リスト画面（図５右側）を表示する。この分岐階層リスト表示は、例えばツリー表示の場合、分岐階層リストのルート要素をツリーのルートアイテムにする。ルート要素の子要素をルートアイテムの子アイテムにする。子要素にさらに子要素があれば子アイテムのさらに子アイテムにする。アイテム名は要素名を表示する（要素名以外でもよい）。
【００５３】
同様に、前記の図２における分岐階層リスト生成機能３０１は、設計図に従って作成されていた従来の演算順序（演算処理の流れを表す情報）に代えて、処理の流れを分岐で階層構造化した分岐階層リストを生成し、演算シミュレーションの実行を支援する。
【００５４】
したがって、本実施形態では、処理の流れを分岐で階層構造化した分岐階層リストを生成するため、処理の流れを表す情報（演算順序）を容易にイメージでき、開発保守が容易になる。
【００５５】
（３）ソースコードの出力
図６に例を示すように、処理の流れを分岐で階層構造化した分岐階層リストから、階層構造に従ったソースコード出力を行う。このための処理は、図１のコード片設定機能１０２とコード片出力機能１０３による以下の処理手順Ｓ１〜Ｓ５によってソースコード出力を得る。
【００５６】
（Ｓ１）コード片設定機能１０２により、分岐階層リストの部品が持つコード片を設定する。
【００５７】
（Ｓ２）コード片出力機能１０３により、分岐階層リストの部品が持つコード片を出力する。
【００５８】
（Ｓ３）分岐階層リストに子があれば、子の部品が持つコード片を設定し、当該コード片を出力するという処理Ｓ１，Ｓ２を子の部品がなくなるまで繰り返す。
【００５９】
（Ｓ４）子の部品がなくなった後は分岐階層リストの後処理をする。例えば、区間（分岐から合流まで）を持つもの（ガード等）であれば、閉じ括弧をつける。
【００６０】
（Ｓ５）上記のＳ１〜Ｓ４を分岐階層リストの終わりまで再帰的に実行する。
【００６１】
このような処理により、図６に例示する分岐階層リストは、処理２および処理３の区間は階層化され、その後処理では閉じ括弧「｝」を付加することができる。
【００６２】
したがって、階層構造化した分岐階層リストにより処理の流れの区間が予め特定されるため、ソースコード出力のアルゴリズムが容易になる。このことを以下に詳細に説明する。
【００６３】
従来の演算順序により処理の流れを示す場合、処理の流れの区間を表現していなかったため、ソースコード出力時に、設計図の分岐と合流の関係から処理の区間を特定し、区間の終わりの部品が対応する区間分の閉じ括弧「｝」をつける必要があった。閉じ括弧の付け方の例を図７に示し、分岐処理に際して、ガード１が開き括弧を付け、処理２が括弧を付けるか判定して閉じ括弧を付け、ガード２が開き括弧を付け、処理３が括弧を付けるか判定して閉じ括弧を付ける。
【００６４】
本実施形態では、処理の流れの区間（分岐の各枝から合流手前まで）を階層構造化することで表現しており、ソースコード出力時には設計情報全体を判定する必要がない。閉じ括弧の付け方の例を図８に示し、分岐処理に際して、処理の流れの区間の始まりの部品（ガード）が自分の処理時に開き括弧「｛」を、自分の子となる部品を処理後に閉じ括弧「｝」を付けるだけなので、ソースコード出力のアルゴリズムが容易になる。
【００６５】
（４）演算シミュレーションの実行
図９に例を示すように、処理の流れを分岐で階層構造化した分岐階層リストに従い演算シミュレーションを行う。このための処理は、図２のコード片設定機能３０２とコード片実行機能３０３による以下の処理手順Ｓ１〜Ｓ５によって演算シミュレーションを実行する。
【００６６】
（Ｓ１）コード片設定機能３０２により、分岐階層リストの部品が持つコード片を設定する。
【００６７】
（Ｓ２）コード片実行機能３０３により、分岐階層リストの部品が持つコード片を実行する。
【００６８】
（Ｓ３）分岐階層リストに子があれば、子の部品が持つコード片を設定し、当該コード片を実行するという処理Ｓ１，Ｓ２を繰り返す。このとき、部品が持つ特性により子または次の子を実行するか否かを制御する。
【００６９】
（Ｓ４）上記のＳ１〜Ｓ３を分岐階層リストの終わりまで再帰的に実行する。
【００７０】
したがって、階層構造化した分岐階層リストにより処理の流れの区間が予め特定されるため、演算シミュレーションのアルゴリズムが容易になる。このことを以下に詳細に説明する。
【００７１】
従来の演算順序により処理の流れを示す場合、処理の流れの区間を表現していなかったため、演算シミュレーション時に、設計図の分岐と合流の関係から処理の区間を特定し、次に処理する部品を特定する必要があった。演算順序から処理する部品を特定する例を図１０の右側に示し、線（ガード１）は条件不一致時に次に処理する部品を、処理２は次に処理する部品を特定する必要がある。
【００７２】
本実施形態では、処理の流れの区間（分岐の各枝から合流手前まで）を階層構造化することで表現しており、演算シミュレーション時には設計情報全体を判定する必要がない。部品の特定の例を図１０の中央側に示し、分岐処理に際して、処理の流れの区間の始まりの部品（ガード）が自分の処理時に条件一致であれば、自分の子となる部品を処理することと、さらにその親の区間の開始部品（分岐）が自分の子となるガードの処理結果を受けて、対となる区間の始まり（ガード）を処理するか判定するだけなので、演算シミュレーションのアルゴリズムが容易になる。
【００７３】
なお、本発明は、図１，２等に示した方法の一部又は全部の処理機能をプログラムとして構成してコンピュータに実行させることができる。
【符号の説明】
【００７４】
１００  ソースコード出力装置
２００  分岐階層リスト生成装置
３００  演算シミュレーション装置
１０１、３０１  分岐階層リスト生成機能
１０２、３０２  コード片設定機能
１０３  コード片出力機能
２０１  開始部品取得機能
２０２  結線取得機能
２０３  結線先部品取得機能
２０４  分岐階層リスト最適化機能
２０５  分岐階層リスト表示機能
３０３  コード片実行機能
【図１】
0005487789.tif 000002
【図２】
0005487789.tif 000003
【図３】
0005487789.tif 000004
【図４】
0005487789.tif 000005
【図５】
0005487789.tif 000006
【図６】
0005487789.tif 000007
【図７】
0005487789.tif 000008
【図８】
0005487789.tif 000009
【図９】
0005487789.tif 000010
【図１０】
0005487789.tif 000011
【図１１】
0005487789.tif 000012
【図１２】
0005487789.tif 000013
【図１３】
0005487789.tif 000014
【図１４】
0005487789.tif 000015
【図１５】
0005487789.tif 000016
【図１６】
0005487789.tif 000017
【図１７】
0005487789.tif 000018