(57)【要約】      （修正有）【課題】ブロック線図を作り直すことなく、所望の演算順序へ変更可能として開発者の労力軽減を図る。【解決手段】組み込みソフトウェア開発支援システムの演算順序自動設定装置１０が実装する開始ブロック取得機能部１１は、各ブロック線図の入力を示すブロックをすべて取得する。座標取得機能部１２は、前記取得した各ブロックの座標情報を取得する。座標比較機能部１３は、前記取得した各座標情報を比較し、比較の結果と事前設定のルールとに基づき演算順序設定リストに入力側のブロックを追加する。演算順序設定ブロック取得機能部１４は、演算順序設定リストの先頭から一つのブロックを取り出す。演算順序追加機能部１５は、前記取出したブロックを演算順序リストに追加する。出力ブロック追加機能部１６は、前記取出したブロックの出力側のブロックを演算順序設定リストに追加する。【選択図】図１
2017041157.tif 000002
【特許請求の範囲】
【請求項１】
ブロック間を結線して演算順序を表現したブロック線図に基づきプログラムを作成し、作成されたプログラムをコンパイルして実機に組み込むソフトウェアとする組み込みソフトウェア開発支援システムであって、
前記各ブロック線図の入力を示すブロックをすべて取得する開始ブロック取得機能部と、
前記開始ブロック取得機能部の取得した各ブロックの座標情報を取得する座標取得機能部と、
前記座標取得機能部の取得した各座標情報を比較し、該比較の結果と事前設定のルールとに基づき演算順序設定リストに入力側のブロックを追加する座標比較機能部と、
前記演算順序設定リストの先頭から一つのブロックを取り出す演算順序設定ブロック取得機能部と、
前記演算ブロック設定取得機能部の取出したブロックを演算順序リストに追加する演算順序追加機能部と、
前記取出したブロックの出力側のブロックを演算順序設定リストに追加する出力ブロック追加機能部と、
を備えることを特徴とする組み込みソフトウェア開発支援システム。
【請求項２】
前記ルールとして、前記座標情報の順に演算順序設定リストに追加することが定められている
ことを特徴とする請求項１記載の組み込みソフトウェア開発支援システム。
【請求項３】
ブロック間を結線して演算順序を表現したブロック線図に基づきプログラムを作成し、作成されたプログラムをコンパイルして実機に組み込むソフトウェアとする組み込みソフトウェア開発支援システムの実行する方法であって、
前記各ブロック線図の入力を示すブロックをすべて取得する開始ブロック取得ステップと、
前記開始ブロック取得ステップで取得した各ブロックの座標情報を取得する座標取得ステップと、
前記座標取得ステップで取得した各座標情報を比較し、該比較の結果と事前設定のルールとに基づき演算順序設定リストに入力側のブロックを追加する座標比較ステップと、
前記演算順序設定リストの先頭から一つのブロックを取り出す演算順序設定ブロック取得ステップと、
前記演算ブロック設定取得ステップで取出したブロックを演算順序リストに追加する演算順序追加ステップと、
前記取出したブロックの出力側のブロックを演算順序設定リストに追加する出力ブロック追加ステップと、
を有することを特徴とする組み込みソフトウェア開発支援方法。
【請求項４】
前記座標比較ステップにおいて、
前記ルールとして、前記座標情報の順に演算順序設定リストに追加することが定められている
ことを特徴とする請求項３記載の組み込みソフトウェア開発支援方法。
【請求項５】
請求項１または２のいずれか１項に記載の組み込みソフトウェア開発支援システムとして、コンピュータを機能させることを特徴とする組み込みソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、産業機器や家電製品などに内蔵されるシステムで動作する組み込みソフトウェアの開発を支援するシステム、方法並びにプログラムであって、特に組み込みソフトウェアにおけるブロック間の演算順序を自動設定する技術に関する
【背景技術】
【０００２】
周知のように組み込みソフトウェアの開発では、演算に関する設計図としてブロック線図（ブロック図ともいう。）を作成する。例えば開発対象の組み込み機器が加算と乗算とを実行する場合、入力から出力まで加算や乗算を表すブロックを配置し、ブロック間を線で結んで演算順序を表現する。
【０００３】
ここで作成したブロック線図を元にプログラムを作成し、作成されたプログラムを専用のコンパイラを使用してコンパイル化し、実機に組み込んで動作を試験する。例えば特許文献１の組み込みソフトウェア開発支援システムなどによりプログラムが作成されている。
【０００４】
この特許文献１の組み込みソフトウェア開発支援システムは、複数のブロックで構成されるブロック線図の各ブロックの演算順序を設定する装置として、演算順序自動設定装置と演算順序手動設定装置とを備え、該両装置で設定した演算順序にしたがってソースコード作成とコンパイルによりプログラムを生成し、演算シミュレーション装置で動作試験を行っている。
【０００５】
図３に基づき特許文献１の演算順序自動設定を説明する。図３（ａ）は、単線のブロック線図を示している。この場合には入力側から出力側に向かってブロックが探索され、入力ブロック（ｉ１）から出力ブロック（ｏ１）への一方向（矢印Ｆ方向）に演算順序が自動設定される。
【０００６】
また、図３（ｂ）は、分岐のあるブロック線図を示している。この場合には出力側の優先順位が高いブロックが先に演算される。図中の数字は、前記優先順位の数値を示し、数値の小さいブロックの優先順位が高いことを示している。したがって、演算ブロックＡが先に演算されて出力され、その後に演算ブロックＢが演算されて出力される。
【０００７】
さらに図３（ｃ）は、多入力のブロック線図を示している。この場合にも入力の優先順位が高いブロックが先に演算される。したがって、演算ブロックＢが先に演算されて演算ブロックＣに入力され、その後に演算ブロックＡが演算されて演算ブロックＣに入力される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−６６８４７
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１の組み込みソフトウェア開発支援システムによれば、ブロック線図の示す演算処理が前の演算結果を使用しない場合、即ちデータ間につながりのない別々の演算を行う場合には、演算順序はブロックを配置した順番に依存する。
【００１０】
したがって、既に配置されたブロックの位置を入れ替えた場合でも、予め決定された演算順序は変更されない。図４に基づき説明すれば、図４（ａ）に示す演算ブロックＡの演算処理結果は、演算ブロックＢの演算処理には利用されず、それぞれの演算処理にはデータにつながりはなく、別々の演算といえる。
【００１１】
この場合、図４（ｂ）に示すように、「入力ブロック（ｉ１）から演算ブロックＡを介して出力ブロック（ｏ１）で出力される」一連の演算処理と、「入力ブロック（ｉ２）から演算ブロックＢを介して出力ブロック（ｏ２）で出力される」一連の演算処理ブロックとを上下の位置関係を入れ替えても、最初のブロック配置時に決められた演算順序は不変である。
【００１２】
その結果、開発者は、既に決定された演算順序を所望の演算順序に変更する場合にブロック線図を作り直さなければならなかった。これでは効率的でなく、開発者の労力負担が増加するおそれがある。
【００１３】
本発明は、このような従来の問題を解決するためになされ、各ブロック線図がデータ間につながりのない別々の演算処理を行う場合に改めて作成し直すことなく、所望の演算順序へ変更可能とすることで開発者の労力軽減を図ることを解決課題としている。
【課題を解決するための手段】
【００１４】
本発明の組み込みソフトウェア開発支援システムは、各ブロック線図の入力を示すブロックをすべて取得する開始ブロック取得機能部と、前記開始ブロック取得機能部の取得した各ブロックの座標情報を取得する座標取得機能部と、前記座標取得機能部の取得した各座標情報を比較し、該比較の結果と事前設定のルールとに基づき演算順序設定リストに入力側のブロックを追加する座標比較機能部と、前記演算順序設定リストの先頭から一つのブロックを取り出す演算順序設定ブロック取得機能部と、前記演算ブロック設定取得機能部の取出したブロックを演算順序リストに追加する演算順序追加機能部と、前記取出したブロックの出力側のブロックを演算順序設定リストに追加する出力ブロック追加機能部と、を備える。
【００１５】
本発明の組み込みソフトウェア開発支援方法は、各ブロック線図の入力を示すブロックをすべて取得する開始ブロック取得ステップと、前記開始ブロック取得ステップで取得した各ブロックの座標情報を取得する座標取得ステップと、前記座標取得ステップで取得した各座標情報を比較し、該比較の結果と事前設定のルールとに基づき演算順序設定リストに入力側のブロックを追加する座標比較ステップと、前記演算順序設定リストの先頭から一つのブロックを取り出す演算順序設定ブロック取得ステップと、前記演算ブロック設定取得ステップで取出したブロックを演算順序リストに追加する演算順序追加ステップと、前記取出したブロックの出力側のブロックを演算順序設定リストに追加する出力ブロック追加ステップと、を有する。
【００１６】
前記ルールとしては、前記座標情報の順に演算順序設定リストに追加することを定めることができる。なお、本発明は、前記ソフトウェア開発支援システムとしてコンピュータを機能させるプログラムであってもよい。
【発明の効果】
【００１７】
本発明によれば、各ブロック線図がデータ間につながりのない別々の演算処理を行う場合に改めて作成し直すことなく、所望の演算順序に変更することができ、この点で開発者の労力軽減に貢献できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る組み込みソフトウェア開発支援システムの自動演算設定装置の主要機能部を示す構成図。
【図２】（ａ）はブロック線図の位置変更前の演算順序算出を示す説明図、（ｂ）は（ａ）のブロック線図の位置変更後の演算順序算出を示す説明図。
【図３】（ａ）は特許文献１における単線のブロック線図の演算順序を示す説明図、（ｂ）は同分岐がある場合の演算順序を示す説明図、（ｃ）は同多入力の場合の演算順序を示す説明図。
【図４】（ａ）は二つのブロック線図でデータ間につながりのない別々の演算を行う場合を示す図。（ｂ）は（ａ）の各ブロック線図の上下を入れ替えた状態を示す図。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態に係る組み込みソフトウェア開発支援システムを説明する。このソフトウェア開発支援システムは、複数のブロックで構成されるブロック線図（ブロック図）の各ブロックの演算順序を設定する装置として、図１に示すように、算順序自動設定装置１０と演算順序手動設定装置１８とを備える。
【００２０】
この両装置１０，１８により演算順序が設定され、該設定された演算順序に従ってプログラム生成装置１９にてソースコード生成とコンパイルとによりプログラムが生成され、演算シミュレーション装置２０で動作試験を行う。
【００２１】
なお、前記各装置１８〜２０は、特許文献１と同じなため、説明を省略する。ここでは演算順序自動設定装置１０を中心に前記ソフトウェア開発支援システムを説明する。
【００２２】
≪構成例≫
図１に基づき前記演算順序自動設定装置１０の構成例を説明する。この演算順序自動設定装置１０は、入力ブロックの座標情報を基準に演算順序を決定する機能が追加されている点で特許文献１と相違する。
【００２３】
具体的には前記演算順序設定装置１０は、コンピュータにより構成され、コンピュータの通常のハードウェアリソース（例えばＣＰＵ，ＲＡＭやＲＯＭなどの主記憶装置，ＳＳＤ，ＨＤＤなどの補助記憶装置）を備える。
【００２４】
このハードウェアリソースとソフトウェアリソース（ＯＳ，アプリケーションなど）の協働の結果、前記演算順序自動設定装置１０は、開始ブロック取得機能部１１，座標取得機能部１２，座標比較機能部１３，演算順序設定ブロック取得機能部１４，演算順序追加機能部１５，出力ブロック追加機能部１６，優先ブロック追加機能部１７，演算順序設定リストＤＢ２１，演算順序リストＤＢ２２を実装する。
【００２５】
この各機能部１１〜１７および各ＤＢ２１，２２のそれぞれは、同一コンピュータに実装してもよく、複数のコンピュータに分散して実装してもよく、前記各装置１８〜２０と同じコンピュータに実装してもよく、異なるコンピュータに実装してもよい。なお、各ＤＢ２１，２２は前記記憶装置に構築され、演算順序設定リストと演算順序リストとを保持している。
【００２６】
開始ブロック取得機能部１１は、各ブロック線図に示す一連の演算処理の開始を示すブロックを取得する。例えば各ブロック線図に表された入力ブロックを取得する。
【００２７】
座標取得機能部１２は、開始ブロック取得機能部１１で取得された各ブロックの座標情報（例えば座標位置）を取得する。すなわち、ブロック線図においては、入力ブロック，演算ブロック，出力ブロック、各分岐点などのそれぞれに座標情報が設定され、該設定されたブロックの座標情報を取得するものとする。
【００２８】
座標比較機能部１３は、座標取得機能部１２の取得した各座標情報を比較し、矢印Ｈに示すように、比較結果と事前設定のルールとに基づき前記ＤＢ２１の演算順序設定リストに追加（記述）する。ここでは前記ルールの一例として座標位置の順、即ち座標位置が上のブロックが先となるように入力側のブロックを追加することが設定されている。
【００２９】
演算順序設定ブロック取得機能部１４は、矢印Ｉに示すように、前記ＤＢ２１の演算順序設定リストの先頭から一つのブロックを取り出す。ここで取り出されたブロックは、矢印Ｊに示すように、演算順序追加機能部１５により前記ＤＢ２２の演算順序リストに追加される。これにより前記ＤＢ２２の演算順序リストには、演算順序設定のために演算順序設定リストの先頭から取り出されたブロックが順次に格納される。
【００３０】
出力ブロック追加機能部１５は、前記取り出されたブロックの出力側のブロックを、矢印Ｋに示すように、前記ＤＢ２１の演算順序設定リストに追加する。これにより前記ＤＢ２１の演算順序設定リストには、座標情報が上のものが先頭となるように入力側および出力側のブロックが格納される。
【００３１】
なお、優先ブロック追加機能部１７は、入力ブロックに結線されたブロックが複数存在する場合や、ブロックの出力側に接続されるブロックが複数存在する場合などに特許文献１と同じ処理を実行する。
【００３２】
≪実施例≫
図２に基づき前記演算順序自動設定装置１０を用いた実施例を説明する。ここでは開発者により図２（ａ）のブロック線図（α），（β）が作成された場合の演算順序設定を説明する。
【００３３】
このブロック線図（α）は、「入力ブロック（ｉ１）から演算ブロックＡを介して出力ブロック（ｏ１）で出力される」単線接続に関する。また、ブロック線図（β）は、「入力ブロック（ｉ２）から演算ブロックＢを介して出力ブロック（ｏ２）で出力される」単線接続に関する。作成されたブロック線図（α），（β）は、図示省略のデータベースに格納される。
【００３４】
（１）実施例１
実施例１では、ブロック線図（α），（β）に対する基本的な演算順序自動設定の処理を説明する。まず、開発者の操作などで処理が開始されると、開始ブロック取得機能部１１は、前記データベースからブロック線図（α），（β）を取得し、さらにブロック線図（α），（β）からすべての入力ブロック、即ち入力ブロック（ｉ１）と入力ブロック（ｉ２）とを取得する。ここで取得された両入力ブロック（ｉ１），（ｉ２）は、前記記憶装置などに一時記憶される。
【００３５】
つぎに座標取得機能部１２により両入力ブロック（ｉ１），（ｉ２）の座標位置が取得され、その後に取得された両座標位置が比較される。この場合に入力ブロック（ｉ１）は、入力ブロック（ｉ２）よりも座標位置が上であり、前記ＤＢ２１の演算順序設定リストへの追加順序（記述順位）が先となる。
【００３６】
したがって、図２（ａ）の矢印Ｈにおいて、入力ブロック（ｉ１）が先頭となるように入力側のブロックが追加される。このとき入力ブロック（ｉ１）に接続された演算ブロックＡが、入力ブロック（ｉ２）に接続された演算ブロックＢよりも先に追加される。
【００３７】
そして、演算順序設定ブロック取得機能部１４により前記ＤＢ２１の演算順序設定リストの先頭から順にブロックが取り出される。ここで取り出されたブロックは、演算順序追加機能部１５により前記ＤＢ２２の演算順序リストに順次追加される。
【００３８】
このとき入力側のブロックについては、矢印Ｉにおいて前記ＤＢ２１の演算順序設定リストから「演算ブロックＡ→演算ブロックＢ」の順で取り出され、矢印Ｊにおいて前記ＤＢ２２の演算順序リストに「演算ブロックＡ→演算ブロックＢ」の順で追加される。
【００３９】
また、演算順序設定ブロック取得機能部１４により取出された前記ブロックの出力側のブロックは、出力ブロック追加機能部１６により前記ＤＢ２２の演算順序リスト設定リストに追加される。
【００４０】
これにより演算ブロックＡが演算順序「１」となり、演算ブロックＢが演算順序「２」となり、その後に優先ブロック追加機能部１７などで出力側の演算順序が決められる。なお、前記ＤＢ２１の演算順序設定リストが空になると演算順序自動設定の処理を終了する。
【００４１】
（２）実施例２
実施例２では、ブロック線図（α）の位置とブロック線図（β）の位置とを上下入れ替えた場合における演算順序の再設定を説明する。このときブロック線図（α），（β）は、データ間につながりのない別々の演算を行うため、特許文献１によれば演算順序はブロックを配置した順番に依存する。
【００４２】
これに対して前記演算順序自動設定装置１０によれば、上下入れ替えの配置変更を考慮した演算順序の自動再設定が実行される。すなわち、実施例１の自動設定された演算順序は「演算ブロックＡ→演算ブロックＢ」であるものの、何らかの理由により開発者が演算ブロックＢよりも演算ブロックＡを先に演算するように再設定したい場合がある。
【００４３】
この場合に開発者は、ブロック線図（α），（β）をディスプレイに表示させてブロック線図（β）を選択し、さらにブロック線図（α）の上に移動させる。この開発者の操作に応じて前記演算順序自動設定装置１０が、演算順序の自動再設定処理を実行する。
【００４４】
図２（ｂ）に基づき詳細を説明すれば、座標取得機能部１２により入力ブロック（ｉ１），（ｉ２）の座標位置が再取得される。ここではブロック線図（α），（β）の位置の上下が入れ替えられたため、入力ブロック（ｉ２）の座標位置は、入力ブロック（ｉ１）よりも上となり、矢印Ｐに示すように、前記ＤＢ２１の演算順序設定リストが書き換えられる。
【００４５】
すなわち、入力ブロック（ｉ２）の演算順序設定リストへの記述順位が先なため、図２（ｂ）の矢印Ｈにおいて入力ブロック（ｉ２）が先頭なるように演算順序設定リストが更新され、それぞれの入力側のブロックが記述される。
【００４６】
また、演算順序設定ブロック取得機能部１４により前記ＤＢ２１の演算順序設定リストの先頭から順にブロックが取り出され、取り出されたブロックが演算順序追加機能部１５により前記ＤＢ２２の演算順序リストに順次記述されて更新される。
【００４７】
このとき入力側のブロックについては、矢印Ｉにおいて前記ＤＢ２１の演算順序設定リストから「演算ブロックＢ→演算ブロックＡ」の順で取り出され、矢印Ｊにおいて前記ＤＢ２２の演算順序リストに「演算ブロックＢ→演算ブロックＡ」の順で記述される。
【００４８】
また、演算順序設定ブロック取得機能部１４により取出された前記ブロックの出力側のブロックは、出力ブロック追加機能部１６により前記ＤＢ２１の演算順序リスト設定リストに記述される。
【００４９】
これにより演算ブロックＢが演算順序「１」となり、演算ブロックＡが演算順序「２」に変更され、その後に優先ブロック追加機能部１７などで出力側の演算順序が決められる。なお、実施例１と同じく前記ＤＢ２１の演算順序設定リストが空になると演算順序自動再設定の処理を終了する。
【００５０】
このように前記演算順序自動設定装置１０を備えた前記ソフトウェア開発支援システムによれば、入力ブロックの座標位置を基準に演算順序が決定されるため、矢印Ｆ２に示す入力ブロックから出力ブロックへの方向だけではなく、矢印Ｆ１に示すブロック線図の移動位置に応じた演算順序を設定することが可能となる。
【００５１】
これにより既に作成したブロック線図の配置を変更するだけで自在に演算順序を変更することができる。特に各ブロック線図がデータ間につながりのない別々の演算処理を行う場合であっても改めて作成し直すことなく、開発者の所望の演算順序に自動的に再設定できる。この点で効率性が向上し、開発者の労力が軽減される。
【００５２】
また、作成済みのブロック線図の演算順序を自在に変更可能なため、ブロック線図の作成順序は演算順序決定の際の決定的要因とはならず、この点でも開発者の負担を軽減できる。
【００５３】
なお、本発明は、上記実施形態に限定されるものではなく、各請求項に記載された範囲内で変形して実施することができる。例えば本発明は、前記各部１１〜１７，２１，２２としてコンピュータを機能させる組み込みソフトウェア開発支援プログラムとすることもできる。
【００５４】
このプログラムによれば、前記実施例１，２の処理内容をコンピュータに実行させることができる。このプログラムは、例えばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記録媒体に記録して配布でき、またネットワーク経由で配布することもできる。
【符号の説明】
【００５５】
１０…演算順序自動設定装置
１１…開始ブロック取得機能部
１２…座標取得機能部
１３…座標比較機能部
１４…演算順序設定ブロック取得機能部
１５…演算順序追加機能部
１６…出力ブロック追加機能部
１７…優先ブロック追加機能部
１８…演算順序手動設定装置
１９…プログラム生成装置
２０…演算シミュレーション装置
２１…演算順序設定リストＤＢ
２２…演算順序リストＤＢ
【図１】
2017041157.tif 000003
【図２】
2017041157.tif 000004
【図３】
2017041157.tif 000005
【図４】
2017041157.tif 000006