(57)【特許請求の範囲】
【請求項１】
組込み対象の機器に組込んで該機器が備えるＣＰＵを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置において、
前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを機械語に変換するコンパイル部と、
前記コンパイル部が変換した機械語に含まれる命令数を抽出することによって前記ＣＰＵが前記プログラムを実行する際の処理時間を算出する処理時間算出部と、
前記ＣＰＵが前記プログラムの実行に要する処理時間の制約を与える制約処理時間を設定するＣＰＵ設定部と、
前記処理時間算出部が算出した処理時間と前記ＣＰＵ設定部が設定した制約処理時間とを比較することによって前記プログラムを前記ＣＰＵに実行させることの可否を判定する判定部と、
情報の入力を受け付ける入力部と、
前記判定部が前記プログラムを前記ＣＰＵに実行させることができないと判定した場合において、前記入力部が前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割指示の入力を受け付けたとき、前記プログラムの処理を前記複数のタスクに分割する分割部と、
前記制約処理時間および前記判定部が判定した結果を表示する表示部と、
を備え、
前記表示部は、
前記判定部による判定結果が否である場合において、前記分割部が処理を行ったとき、前記分割部が分割した結果として前記複数のタスクを識別可能に表示することを特徴とするソフトウェア開発支援装置。
【請求項２】
前記ＣＰＵ設定部は、
前記ＣＰＵの動作クロック数をさらに設定し、
前記処理時間算出部は、
抽出したすべての前記命令数から総実行クロック数を算出し、該総実行クロック数と前記ＣＰＵ設定部が設定した動作クロック数とをもとに前記処理時間を算出することを特徴とする請求項１に記載のソフトウェア開発支援装置。
【請求項３】
前記表示部は、
複数のプログラム要素を用いて前記ソフトウェアの仕様を記述するブロック図を表示するとともに、各プログラム要素に対応づけて前記処理時間算出部の算出結果を表示し、
前記複数のプログラム要素の各々が、前記複数のタスクのいずれに含まれるかを識別可能に表示することを特徴とする請求項１または２に記載のソフトウェア開発支援装置。
【請求項４】
組込み対象の機器に組込んで該機器が備えるＣＰＵを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置が行うソフトウェア開発支援方法において、
前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、
前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記ＣＰＵが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、
前記処理時間算出ステップで算出した処理時間と前記ＣＰＵが前記プログラムの実行に要する処理時間の制約を与える制約処理時間とを比較することによって前記プログラムを前記ＣＰＵに実行させることの可否を判定する判定ステップと、
前記制約処理時間および前記判定ステップで判定した結果を表示する判定結果表示ステップと、
前記判定ステップで前記プログラムを前記ＣＰＵに実行させることができないと判定した場合において、前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割指示の入力を受け付けたとき、前記プログラムの処理を前記複数のタスクに分割する分割ステップと、
前記判定ステップの判定結果が否である場合において、前記分割ステップが処理を行ったとき、前記分割ステップが分割した結果として前記複数のタスクを識別可能に表示する分割結果表示ステップと、
を備えたことを特徴とするソフトウェア開発支援方法。
【請求項５】
組込み対象の機器に組込んで該機器が備えるＣＰＵを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置に、
前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、
前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記ＣＰＵが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、
前記処理時間算出ステップで算出した処理時間と前記ＣＰＵが前記プログラムの実行に要する処理時間の制約を与える制約処理時間とを比較することによって前記プログラムを前記ＣＰＵに実行させることの可否を判定する判定ステップと、
前記制約処理時間および前記判定ステップで判定した結果を表示する判定結果表示ステップと、
前記判定ステップで前記プログラムを前記ＣＰＵに実行させることができないと判定した場合において、前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割指示の入力を受け付けたとき、前記プログラムの処理を前記複数のタスクに分割する分割ステップと、
前記判定ステップの判定結果が否である場合において、前記分割ステップが処理を行ったとき、前記分割ステップが分割した結果として前記複数のタスクを識別可能に表示する分割結果表示ステップと、
を実行させることを特徴とするソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータの駆動を制御するインバータ等の産業用機器に組込んで使用するソフトウェアの開発を支援するソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラムに関する。
【背景技術】
【０００２】
従来、モータの駆動を制御するインバータ等の産業用機器に組込んで使用するソフトウェアを開発するための技術として、複数のプログラム要素を用いて開発対象のソフトウェアの仕様を記述するブロック図をもとに、そのソフトウェアを構成するプログラムのソースコードを所定の計算機言語で自動生成する技術が知られている（例えば、特許文献１を参照）。
【０００３】
組込み対象の機器が備えるＣＰＵ（Central  Processing  Unit）は、リアルタイム性が求められるものの、昨今のパーソナルコンピュータが備えるＣＰＵのように高性能のものではなく、交換も容易ではない。このため、組込み対象の機器が備えるＣＰＵに対しては、該ＣＰＵと接続するＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）等のメモリ容量および該ＣＰＵの処理時間に対して制約を設けるのが一般的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２８５４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したＣＰＵの制約のうち、メモリ容量に関する制約を満たすか否かについては、コンパイラがソースコードをコンパイルしてオブジェクトファイルを生成する際に容易に判定することができる。これに対して、処理時間に関する制約を満たすか否かについては、判定を行う際にプログラムを実行するＣＰＵの処理能力等の情報が必要であり、コンパイラ側で判定することができない。
【０００６】
そこで、プログラムを実行するＣＰＵの処理時間を算出することも考えられる。ＣＰＵの処理時間を算出するには、そのＣＰＵを備えた組込み対象の機器を実際に動作させる必要がある。しかしながら、この場合には、算出対象のプログラムがＣＰＵの処理時間に対する制約を満たさない状況下で組込み対象の機器を動作させてしまう可能性があり、その機器を不適切な動作状態に陥らせてしまうおそれがあった。
【０００７】
本発明は、上記に鑑みてなされたものであって、組込み対象の機器へ組込むソフトウェアを開発する際に、その機器を不適切な動作状態に陥らせることなく開発を行うことを可能にするソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明に係るソフトウェア開発支援装置は、組込み対象の機器に組込んで該機器が備えるＣＰＵを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置において、前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを機械語に変換するコンパイル部と、前記コンパイル部が変換した機械語に含まれる命令数を抽出することによって前記ＣＰＵが前記プログラムを実行する際の処理時間を算出する処理時間算出部と、前記処理時間算出部が算出した処理時間に基づいて前記プログラムを前記ＣＰＵに実行させることの可否を判定する判定部と、を備えたことを特徴とする。
【０００９】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記ＣＰＵが前記プログラムの実行に要する処理時間の制約を与える制約処理時間を設定するＣＰＵ設定部をさらに備え、前記判定部は、前記処理時間算出部が算出した処理時間と前記ＣＰＵ設定部が設定した制約処理時間とを比較することによって前記プログラムを前記ＣＰＵに実行させることの可否を判定することを特徴とする。
【００１０】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記ＣＰＵ設定部は、
前記ＣＰＵの動作クロック数をさらに設定し、前記処理時間算出部は、抽出したすべての前記命令数から総実行クロック数を算出し、該総実行クロック数と前記ＣＰＵ設定部が設定した動作クロック数とをもとに前記処理時間を算出することを特徴とする。
【００１１】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記判定部が前記プログラムを前記ＣＰＵに実行させることができないと判定した場合、前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割部をさらに備えたことを特徴とする。
【００１２】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記判定部が判定した結果および前記分割部が分割した結果を表示する表示部をさらに備えたことを特徴とする。
【００１３】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記表示部は、複数のプログラム要素を用いて前記ソフトウェアの仕様を記述するブロック図を表示するとともに、前記ブロック図において、前記複数のプログラム要素の各々が、前記複数のタスクのいずれに含まれるかを識別可能に表示することを特徴とする。
【００１４】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記判定部が判定した結果を表示する表示部をさらに備えたことを特徴とする。
【００１５】
本発明に係るソフトウェア開発支援方法は、組込み対象の機器に組込んで該機器が備えるＣＰＵを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置が行うソフトウェア開発支援方法において、前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記ＣＰＵが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、前記処理時間算出ステップで算出した処理時間に基づいて前記プログラムを前記ＣＰＵに実行させることの可否を判定する判定ステップと、を備えたことを特徴とする。
【００１６】
本発明に係るソフトウェア開発支援プログラムは、組込み対象の機器に組込んで該機器が備えるＣＰＵを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置に、前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記ＣＰＵが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、前記処理時間算出ステップで算出した処理時間に基づいて前記プログラムを前記ＣＰＵに実行させることの可否を判定する判定ステップと、を実行させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、組込み対象の機器が備えるＣＰＵがプログラムを実行する際の処理時間に基づいてそのプログラムをＣＰＵに実行させることの可否を判定するため、組込み対象の機器へ組込むソフトウェアを開発する際に、その機器を不適切な動作状態に陥らせることなく開発を行うことが可能となる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本発明の一実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。
【図２】図２は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部が表示する表示画面の構成例を示す図である。
【図３】図３は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部におけるＣＰＵ設定ボタンのプルダウンメニューの表示例を示す図である。
【図４】図４は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部におけるコンパイルボタンのプルダウンメニューの表示例を示す図である。
【図５】図５は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部における処理時間確認ボタンのプルダウンメニューの表示例を示す図である。
【図６】図６は、本発明の一実施の形態に係るソフトウェア開発支援装置を用いて行うソフトウェア開発処理の概要を示すフローチャートである。
【図７】図７は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部におけるブロック図の表示例を模式的に示す図である。
【図８】図８は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部が判定結果を表示する表示画面の例（第１例）を示す図である。
【図９】図９は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部が判定結果を表示する表示画面の例（第２例）を示す図である。
【図１０】図１０は、本発明の一実施の形態に係るソフトウェア開発支援装置において、分割部がタスクを分割した後に表示部が表示する表示画面の例を示す図である。
【図１１】図１１は、本発明の一実施の形態に係るソフトウェア開発支援装置において、分割部がタスクを分割した場合にソースコード生成部が生成したタスク管理ソースコードの例を示す図である。
【図１２】図１２は、本発明の一実施の形態に係るソフトウェア開発支援装置において、処理時間が制約条件を満たす場合にソースコード生成部が生成したタスク管理ソースコードの例を示す図である。
【図１３】図１３は、本実施の形態の一変形例に係るソフトウェア開発支援装置の分割部がタスクを分割した後に表示部が表示する表示画面の例を示す図である。
【図１４】図１４は、本発明の別な実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、添付図面を参照して、本発明を実施するための形態（以下、「実施の形態」という）を説明する。
【００２０】
図１は、本発明の一実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。同図に示すソフトウェア開発支援装置１は、モータの駆動を制御するインバータ等の産業用機器に組込んで使用するソフトウェアの開発を支援する装置である。ソフトウェア開発支援装置１は、当該装置の動作を統括して制御する制御部２と、各種情報を記憶する記憶部３と、キーボード、マウス、タッチパネル等のインタフェースを用いて構成され、各種情報の入力を受け付ける入力部４と、液晶または有機ＥＬ（Electro  Luminescence）等からなる表示パネルを有し、各種情報を表示出力する表示部５と、を備える。
【００２１】
制御部２は、入力部４から入力される情報に基づいて記憶部３が記憶するプログラム要素を基本構成要素として開発対象のソフトウェアの仕様を記述するブロック図を作成するブロック図作成部２１と、ブロック図作成部２１が作成したブロック図にしたがってプログラムのソースコードを生成するソースコード生成部２２と、ソフトウェアを組込む対象の機器が備えるＣＰＵ（以下、ターゲットＣＰＵという）を設定するＣＰＵ設定部２３と、ソースコード生成部２２が生成したソースコードを機械語に変換することによってオブジェクトファイルを生成するコンパイル部２４と、コンパイル部２４が生成したオブジェクトファイルをもとにターゲットＣＰＵが定周期で処理を行うのに必要な処理時間を算出する処理時間算出部２５と、処理時間算出部２５が算出した処理時間がそのターゲットＣＰＵで実行可能な処理時間であるか否かを判定する判定部２６と、判定部２６が判定した結果、処理時間がターゲットＣＰＵで実行可能な処理時間でない場合、ターゲットＣＰＵの制約条件を満足するようにプログラムにおけるタスクの分割を行う分割部２７と、を有する。
【００２２】
ブロック図作成部２１は、例えばエディタ等のソフトウェアである。ユーザは、表示部５が表示する画面を見ながら、入力部４によってプログラム要素を選択し、選択した複数のプログラム要素間の接続情報を設定入力することにより、ブロック図作成部２１に対してブロック図の作成を指示する。ブロック図作成部２１は、作成したブロック図を記憶部３（後述するブロック図記憶部３２）に格納する。
【００２３】
ソースコード生成部２２は、ブロック図作成部２１が作成したブロック図にしたがって、例えばＣ言語等の所定の計算機言語によるソースコードを生成し、記憶部３（後述するソースコード記憶部３３）に格納する。また、ソースコード生成部２２は、プログラムに含まれるタスクを管理するタスク管理関数のソースコード（以下、タスク管理ソースコードという）を生成し、ソースコード記憶部３３に格納する。
【００２４】
ＣＰＵ設定部２３は、ターゲットＣＰＵの種別に加えて、ターゲットＣＰＵのクロック数および処理時間の制限値を制約条件として設定したＣＰＵ情報を記憶部３（後述するＣＰＵ情報記憶部３４）に格納する。
【００２５】
処理時間算出部２５は、コンパイル部２４が生成したオブジェクトファイルから機械語の命令数を抽出し、この命令数に応じた実行クロック数をもとに総実行クロック数を算出する。その後、処理時間算出部２５は、算出した総実行クロック数とＣＰＵ設定部２３が設定したクロック数とを用いて処理時間を算出し、算出結果を記憶部３（後述する処理時間情報記憶部３６）に格納する。
【００２６】
判定部２６は、処理時間算出部２５が算出した処理時間とＣＰＵ設定部２３が設定した処理時間の制約を与える制約処理時間とを比較することにより、その処理時間でターゲットＣＰＵがプログラムを実行可能であるか否かを判定する。
【００２７】
分割部２７は、判定部２６が判定した結果、処理時間が制約処理時間よりも大きい場合、プログラムの処理を定周期で実行する複数のタスクに分割し、分割したソースコードの情報を記憶部３（後述する分割情報記憶部３７）に格納する。
【００２８】
以下、分割部２７が行う分割処理の例を具体的に説明する。
分割部２７は、ソースコードに対応するブロック図を構成するプログラム要素のうち最後段（または最前段）のプログラム要素を基準として、ターゲットＣＰＵの制約処理時間を超えるまで接続線によって接続されたプログラム要素をたどっていき、処理時間を積算する。これにより、制約処理時間を超える前までのプログラム要素が１つのタスクとして分割されることとなる。分割部２７は、ここで説明した処理を、すべてのプログラム要素の処理時間が積算されるまで実行する。
このように、分割部２７は、プログラム要素の処理順を考慮したタスクの分割を行うため、各タスクの処理時間が制約処理時間を超えないようにすることができるとともに、論理的な破綻を生じさせない態様でタスクを分割することができる。
【００２９】
なお、分割部２７が分割処理を行う際に、基準とするプログラム要素に対して直前（または直後）のプログラム要素が複数存在する場合には、いずれか１つの処理時間を積算してもよいし、すべての処理時間を積算してもよい。また、タスクの分割の仕方が複数通り存在する場合、分割部２７は、分割数が少ない方を優先して選択するようにしてもよいし、タスク別の処理時間を母集団としたときの標準偏差が小さい分割の仕方を優先して選択するようにしてもよい。
【００３０】
以上の機能構成を有する制御部２は、ＣＰＵ等を用いて実現され、ソフトウェア開発支援装置１の各構成部位とバスラインを介して接続されている。制御部２は、記憶部３が記憶、格納する各種情報を記憶部３から読み出すことにより、本実施の形態に係るソフトウェア開発支援方法に関連した演算処理を実行する。
【００３１】
次に、記憶部３の機能構成を説明する。記憶部３は、プログラム要素を記憶するプログラム要素記憶部３１と、ブロック図作成部２１が作成したブロック図を記憶するブロック図記憶部３２と、ソースコード生成部２２が生成したソースコードおよびタスク管理ソースコードを記憶するソースコード記憶部３３と、ＣＰＵ設定部２３が設定したターゲットＣＰＵに関する情報を記憶するＣＰＵ情報記憶部３４と、コンパイル部２４が生成したオブジェクトファイルを記憶するオブジェクトファイル記憶部３５と、処理時間算出部２５が算出した処理時間に関する情報を記憶する処理時間情報記憶部３６と、分割部２７がプログラムを分割した結果を含む分割情報を記憶する分割情報記憶部３７と、を有する。
【００３２】
記憶部３は、本実施の形態に係るソフトウェア開発支援プログラムや所定のＯＳ（Operating  System）を起動するプログラム等が予め記憶されたＲＯＭ、および各処理の演算パラメータやデータ等を記憶するＲＡＭ等を用いて実現される。上述した各種プログラムは、通信ネットワークを介してダウンロードすることによって取得することも可能である。ここでいう通信ネットワークは、例えばＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）、公衆回線網等によって実現されるものであり、有線、無線を問わない。
【００３３】
次に、表示部５の機能構成を説明する。図２は、表示部５が表示する表示画面の構成例を示す図である。同図に示す表示画面１００には、ユーザが入力部４を介して選択可能なメニューボタンとして、ブロック図の各種ファイル操作を入力するためのファイルボタン１０１、ブロック図を構成するプログラム要素の選択を行うプログラム要素選択ボタン１０２、プログラム要素間の接続を設定する接続ボタン１０３、ブロック図に基づくソースコードの作成を指示するソースコード生成ボタン１０４、ターゲットＣＰＵの設定を行うＣＰＵ設定ボタン１０５、ソースコードのコンパイルを指示するコンパイルボタン１０６、および処理時間の確認および確認結果に応じた処理を行う処理時間確認ボタン１０７が表示される。
【００３４】
ユーザは、入力部４が有するマウスを用いて所望の操作に対応するボタンの表示位置にマウスポインタを位置合わせした後、マウスボタンをクリックすることによってソフトウェア開発支援装置１に実行させる動作を選択入力する。以下、マウスポインタを位置合わせした後にマウスボタンをクリックする操作を、単にクリックするという。
【００３５】
図３は、ＣＰＵ設定ボタン１０５のプルダウンメニューの表示例を示す図である。ＣＰＵ設定ボタン１０５がクリックされると、プルダウンメニューとして「ＣＰＵ選択」、「ＣＰＵクロック数」および「ＣＰＵ制約処理時間」が表示される。このうち、「ＣＰＵ選択」がクリックされると、さらに下層のプルダウンメニューとして、選択可能なターゲットＣＰＵの種類を表示する（図示せず）。これに対して、「ＣＰＵクロック数」にはクロック数を入力するためのボックスが表示され、「ＣＰＵ制約処理時間」には処理時間を入力するためのボックスが表示される。ユーザは、入力部４によって所望のクロック数および制約処理時間を対応するボックスに入力する。ＣＰＵ設定ボタン１０５を用いて設定された情報は、ＣＰＵ設定部２３がＣＰＵ情報記憶部３４に格納する。
【００３６】
図４は、コンパイルボタン１０６のプルダウンメニューの表示例を示す図である。コンパイルボタン１０６がクリックされると、プルダウンメニューとして「コンパイル実行」、「コンパイル結果確認」および「コンパイル設定」が表示される。
【００３７】
図５は、処理時間確認ボタン１０７のプルダウンメニューの表示例を示す図である。処理時間確認ボタン１０７がクリックされると、プルダウンメニューとして「処理時間確認」、「タスク分割実行」、「タスク管理ソースコード生成」および「タスク管理ソースコード保存」が表示される。
【００３８】
以上の機能構成を有するソフトウェア開発支援装置１は、１つのコンピュータを用いて実現してもよいし、複数のコンピュータを用いて実現してもよい。後者の場合には、通信ネットワークを介してデータの送受信を行いながら、互いに連携して処理を行うようにすることも可能である。なお、ここでいうコンピュータは、汎用のパーソナルコンピュータやサーバ等によって構成することができる。また、通信ネットワークを介した複数のコンピュータからなるクライアント・サーバシステムによってソフトウェア開発支援装置１を構成する場合には、入力部４および表示部５の機能をクライアント端末に具備させる一方、制御部２および記憶部３の機能を一または複数のサーバに具備させるような構成としてもよい。
【００３９】
次に、ソフトウェア開発支援装置１を用いて行うソフトウェア開発処理について説明する。図６は、ソフトウェア開発支援装置１を用いて行うソフトウェア開発処理の概要を示すフローチャートである。まず、ブロック図作成部２１は、ユーザによる入力部４を介したプログラム要素および接続線の入力に基づいてブロック図を作成し、作成したブロック図をブロック図記憶部３２に格納する（ステップＳ１）。ユーザは、図２に示す表示画面１００に表示されたプログラム要素選択ボタン１０２を用いてプログラム要素を選択し、接続ボタン１０３を用いてプログラム要素間を接続する接続線を選択する。
【００４０】
図７は、表示部５におけるブロック図の表示例を模式的に示す図である。同図に示す表示画面２００に表示されるブロック図２０１は、６つのプログラム要素２１１〜２１６と、プログラム要素間の接続関係を示す５本の接続線２２１〜２２５とを備える。各プログラム要素には、機能名と識別用のＩＤが表示されている。例えば、プログラム要素２１１は、機能名がＡであり、ＩＤがＦ００１である。また、各接続線には、識別用のＩＤが表示されている。例えば、接続線２２１のＩＤはＷ００１である。なお、各プログラム要素のボックスの中に、機能を具体的に表現する図を付加してもよい。
【００４１】
ブロック図２０１のより具体的な構成を説明する。ブロック図２０１は、接続線２２１〜２２５の矢印の向きからも明らかなように、表示画面２００の左から右へ処理が進んでいくことを示している。ブロック図２０１の最前段には２つのプログラム要素２１１および２１４が設けられている一方、ブロック図２０１の最後段にはプログラム要素２１６が設けられている。ブロック図２０１には、プログラム要素２１１→プログラム要素２１２→プログラム要素２１３→プログラム要素２１６という処理の流れと、プログラム要素２１４→プログラム要素２１５→プログラム要素２１６という処理の流れが存在する。
【００４２】
プログラム要素２１１は、自身を起点として伸びる接続線２２１を介してプログラム要素２１２（機能名：Ｂ、ＩＤ：Ｆ００２）に接続する。
プログラム要素２１２は、自身を起点として伸びる接続線２２２（ＩＤ：Ｗ００２）を介してプログラム要素２１３（機能名：Ｃ、ＩＤ：Ｆ００３）に接続する。
プログラム要素２１３は、自身を起点として伸びる接続線２２３（ＩＤ：Ｗ００３）を介してプログラム要素２１６（機能名：Ｆ、ＩＤ：Ｆ００６）に接続する。
プログラム要素２１４（機能名：Ｄ、ＩＤ：Ｆ００４）は、自身を起点として伸びる接続線２２４（ＩＤ：Ｗ００４）を介してプログラム要素２１５（機能名：Ｅ、ＩＤ：Ｆ００５）に接続する。
プログラム要素２１５は、自身を起点として伸びる接続線２２５（ＩＤ：Ｗ００５）を介してプログラム要素２１６に接続する。
【００４３】
ステップＳ１の後、ソースコード生成部２２は、ユーザによる入力部４を介したソースコード生成指示信号の入力に応じて、ブロック図作成部２１が作成したブロック図に対応するソースコードを生成し、ソースコード記憶部３３へ格納する（ステップＳ２）。このソースコードは、上述したように、Ｃ言語等の計算機言語によって生成される。
【００４４】
続いて、ＣＰＵ設定部２３は、ユーザによる入力部４を介した入力に応じて、ターゲットＣＰＵの設定入力を行う（ステップＳ３）。ユーザは、ＣＰＵ設定ボタン１０５をクリックしてプルダウンメニューを表示した後（図３を参照）、ターゲットＣＰＵの種類を選択するとともに、入力部４によってクロック数や制約処理時間を入力する。
【００４５】
この後、コンパイル部２４は、ユーザによる入力部４を介したコンパイル指示信号の入力に応じて、ソースコード記憶部３３からソースコードを読み出し、読み出したソースコードを機械語に変換してオブジェクトファイルを生成する（ステップＳ４）。このコンパイル処理をソフトウェア開発支援装置１に実行させる際、ユーザは、コンパイルボタン１０６をクリックしてプルダウンメニューを表示した後、「コンパイル実行」をクリックする（図４を参照）。なお、ユーザがコンパイルの結果を確認する場合には、図４に示すプルダウンメニューのうち「コンパイル結果確認」をクリックすればよい。また、ユーザがコンパイルの設定を確認したり変更したりする場合には、図４に示すプルダウンメニューのうち「コンパイル設定」をクリックして設定画面を表示させて設定を行えばよい。
【００４６】
続いて、処理時間算出部２５は、ユーザによる入力部４を介した処理時間算出指示信号の入力に応じて、生成したオブジェクトファイルの処理時間を算出し、算出結果を処理時間情報記憶部３６に格納する（ステップＳ５）。具体的には、処理時間算出部２５は、オブジェクトファイルから機械語の命令数を抽出し、この命令数に応じた総実行クロック数を算出した後、この総実行クロック数とＣＰＵ情報記憶部３４が記憶するクロック数とを用いて処理時間を算出する。この処理を処理時間算出部２５に実行させる際、ユーザは、処理時間確認ボタン１０７をクリックしてプルダウンメニューを表示した後（図５を参照）、「処理時間確認」メニューをクリックする。
【００４７】
続いて、判定部２６は、処理時間算出部２５が算出した処理時間とＣＰＵ情報記憶部３４が記憶する制約処理時間とを比較することにより、処理時間が制約条件を満たすか否かを判定する（ステップＳ６）。具体的には、判定部２６は、処理時間が制約処理時間よりも小さい場合、処理時間が制約条件を満たすと判定する一方、処理時間が制約処理時間以上である場合、処理時間が制約条件を満たさないと判定する。
【００４８】
その後、表示部５は、判定部２６の判定結果を表示する（ステップＳ７）。図８は、表示部５が判定結果を表示する表示画面の例（第１例）を示す図である。同図に示す表示画面３００において、ブロック図２０１には、プログラム要素２１１〜２１６における命令数と処理時間の算出結果表示ボックス２３１〜２３６がそれぞれ対応付けて表示される。
【００４９】
具体的には、プログラム要素２１１に対応する算出結果表示ボックス２３１には、算出結果として、命令数２００、処理時間１００μｓが表示されている。
プログラム要素２１２に対応する算出結果表示ボックス２３２には、命令数１６０、処理時間８０μｓが表示されている。
プログラム要素２１３に対応する算出結果表示ボックス２３３には、命令数８０、処理時間４０μｓが表示されている。
プログラム要素２１４に対応する算出結果表示ボックス２３４には、命令数１２０、処理時間６０μｓが表示されている。
プログラム要素２１５に対応する算出結果表示ボックス２３５には、命令数１００、処理時間５０μｓが表示されている。
プログラム要素２１６に対応する算出結果表示ボックス２３６には、命令数２００、処理時間１００μｓが表示されている。
【００５０】
また、表示画面３００の下方には、処理時間解析結果を表す処理時間解析結果テーブル３０１、およびターゲットＣＰＵの制約条件に関連した情報を表す制約情報３０２が表示されている。
処理時間解析結果テーブル３０１は、タスクごとのプログラム要素、プログラム要素に対応した命令数および処理時間、タスクごとの合計の処理時間（タスクＩＤ別処理時間）を示す。処理時間解析結果テーブル３０１では、１つのタスク（タスクＩＤ：１）に６つのプログラム要素２１１〜２１６が含まれ、タスクＩＤ別処理時間４３０μｓが表示されている。また、プログラム要素２１１〜２１６の命令数の合計８６０も表示されている。
制約情報３０２は、制約処理時間（５００μｓ）、タスク分割数（１）、および判定結果（ＯＫ）を有する。このうち、判定結果は、判定部２６がタスクＩＤ別処理時間（４３０μｓ）と制約処理時間（５００μｓ）との比較に基づいて判定した結果である。すなわち、表示画面３００に示す場合、タスクＩＤ別処理時間が制約処理時間よりも小さいため、判定部２６は処理時間としてのタスクＩＤ別処理時間がターゲットＣＰＵで実行可能な処理時間であると判定する。
【００５１】
なお、表示部５における表示内容が表示画面１００から表示画面３００に遷移する途中の中間状態として、ステップＳ５で処理時間算出部２５が算出した結果を示す算出結果表示ボックス２３１〜２３６を表示する一方、処理時間解析結果テーブル３０１および制約情報３０２は表示しない状態の表示画面を表示部５が表示するようにしてもよい。
【００５２】
図９は、表示部５が判定結果を表示する表示画面の例（第２例）を示す図である。同図に示す表示画面４００は、制約情報４０１の表示内容が、上述した表示画面３００（図８を参照）と異なっている。表示画面４００では、制約情報４０１に含まれる制約処理時間が２００μｓとなっており、タスクＩＤ別処理時間（４３０μｓ）が制約処理時間よりも大きい。この場合、判定部２６は、タスクＩＤ別処理時間がターゲットＣＰＵで実行不可能であると判定するため、制約情報４０１に含まれる判定結果が「ＮＧ」と表示されている。
【００５３】
判定部２６による判定の結果、ターゲットＣＰＵの処理時間が制約条件を満たさない場合（ステップＳ８：Ｎｏ）、分割部２７は、ユーザによる入力部４を介した分割指示の入力に応じて、プログラムのタスクを分割し、分割結果を分割情報記憶部３７に格納する（ステップＳ９）。この処理を分割部２７に実行させる際、ユーザは、処理時間確認ボタン１０７をクリックしてプルダウンメニューを表示した後（図５を参照）、「タスク分割実行」メニューをクリックする。
【００５４】
この後、表示部５は、分割部２７の分割結果を表示する（ステップＳ１０）。図１０は、分割部２７がタスクを分割した後に表示部５が表示する表示画面の例を示す図である。同図に示す表示画面４１０は、表示部５が図９に示す表示画面４００を表示している状態で分割部２７が分割処理を行った後の表示例を示している。
図１０において、処理時間解析結果テーブル４１１は、６つのプログラム要素２１１〜２１６を３つのタスク（タスクＩＤ：１〜３）に分割したことを示している。具体的には、処理時間解析結果テーブル４１１は、プログラム要素２１１、２１２を１つのタスク（タスクＩＤ：１）とし、プログラム要素２１３、２１４を別のタスク（タスクＩＤ：２）とし、プログラム要素２１５、２１６をさらに別のタスク（タスクＩＤ：３）として、プログラムを３つのタスクに分割したことを示している。
また、処理時間解析結果テーブル４１１は、タスクＩＤが２であるタスクを他の２つのタスクと異なる態様（網掛け）で表示している。このため、処理時間解析結果テーブル４１１を見たユーザは、タスクの分割の仕方を明確に把握することができる。
【００５５】
図１０に示す場合、プログラムのタスクを３つに分割することで、タスクＩＤ別処理時間は、タスクＩＤ＝１のタスクが１８０μｓ、タスクＩＤ＝２のタスクが１００μｓ、タスクＩＤ＝３のタスクが１５０μｓとなり、すべてのタスクにおいてタスクＩＤ別処理時間が制約処理時間（２００μｓ）よりも小さくなっている。このため、制約情報４１２では、判定結果が「ＯＫ」と表示されている。
【００５６】
なお、本実施の形態では、分割部２７がタスクを分割した際に処理時間の判定も合わせて行うこととしているが、分割部２７がタスクを分割した結果を用いて、判定部２６が再度ターゲットＣＰＵにおけるプログラム実行の可否を判定するようにしてもよい。
【００５７】
以上説明したステップＳ１０に続くステップＳ１１において、ソースコード生成部２２は、ユーザによる入力部４を介したタスク管理ソースコードの生成指示に応じて、タスク管理ソースコードを生成し、生成したタスク管理ソースコードをソースコード記憶部３３に格納する（ステップＳ１１）。このステップＳ１１の後、ソフトウェア開発支援装置１は、一連の処理を終了する。
【００５８】
ステップＳ１１の処理を具体的に説明する。ソースコード生成部２２は、ステップＳ１０でタスクが分割された場合には、分割されたタスクごとに処理が行われるように、分割されたタスクを管理するタスク管理関数のソースコードを生成する。この処理をソースコード生成部２２に実行させる際、ユーザは、処理時間確認ボタン１０７をクリックしてプルダウンメニューを表示した後（図５を参照）、「タスク管理ソースコード生成」メニューをクリックする。その後、ソースコード生成部２２が生成したタスク管理ソースコードの内容をユーザが確認し、問題がなければ、処理時間確認ボタン１０７のプルダウンメニューに表示される「タスク管理ソースコード保存」をクリックすることにより、そのタスク管理ソースコードをソースコード記憶部３３に格納する。なお、ステップＳ１１において、ソースコード生成部２２がタスク管理ソースコードを生成した後、生成したタスク管理ソースコードを、ユーザからの指示を待たずに自動的にソースコード記憶部３３に格納するようにしてもよい。
【００５９】
図１１は、分割部２７がタスクを分割した場合にソースコード生成部２２が生成したタスク管理ソースコードの例を示す図である。同図に示すタスク管理ソースコード５００はＣ言語を用いて記述されている。具体的には、タスク管理ソースコード５００は、ｓｗｉｔｃｈ文により、１つ目のタスク（ｃａｓｅ  ０）をプログラム要素２１１（ＩＤ：Ｆ００１）、２１２（ＩＤ：Ｆ００２）から構成してタスクＩＤを１とし、２つ目のタスク（ｃａｓｅ  １）をプログラム要素２１３（ＩＤ：Ｆ００３）、２１４（ＩＤ：Ｆ００４）から構成してタスクＩＤを２とし、３つ目のタスク（ｃａｓｅ  ２）をプログラム要素２１５（ＩＤ：Ｆ００５）、２１６（ＩＤ：Ｆ００６）から構成してタスクＩＤを３とすることを記述している。
【００６０】
ここで、ステップＳ８において、判定部２６が判定した結果、処理時間が制約条件を満たす場合（ステップＳ８：Ｙｅｓ）を説明する。この場合、ソフトウェア開発支援装置１は、ステップＳ１１（タスク管理ソースコード生成処理）へ移行する。図１２は、判定部２６が判定した結果、処理時間が制約条件を満たす場合に、ステップＳ１１においてソースコード生成部２２が生成するタスク管理ソースコードの例を示す図である。同図に示すタスク管理ソースコード６００は、６つのプログラム要素２１１〜２１６（ＩＤ：Ｆ００１〜Ｆ００６）によって１つのタスクを構成している。
【００６１】
なお、分割部２７がタスクを分割した場合には、組込み対象の機器へソフトウェアを組込む際に、ソースコードをタスクごとに実行形式に変換して組込みを行うこととなる。
【００６２】
以上説明した本発明の一実施の形態によれば、ターゲットＣＰＵがプログラムを実行する際の処理時間を算出し、この処理時間に基づいてソフトウェアを構成するプログラムをターゲットＣＰＵに実行させることの可否を判定するため、プログラムがターゲットＣＰＵにおける処理時間の制約を満たさない場合にはターゲットＣＰＵを動作させないで済む。したがって、組込み対象の機器へ組込むソフトウェアを開発する際に、その機器を不適切な動作状態に陥らせることなく開発を行うことが可能となる。
【００６３】
また、本実施の形態によれば、１つのプログラムをターゲットＣＰＵに実行させることができないと判定した場合には、そのプログラムの処理を各々が制約処理時間内で処理可能な複数のタスクに分割するため、ターゲットＣＰＵを確実に制約処理時間内で動作させることが可能なソフトウェアを開発することができる。
【００６４】
また、本実施の形態によれば、プログラムをターゲットＣＰＵに実行させることの可否を判定した後に判定結果を表示部で表示するため、ユーザは判定結果を明確に把握することができる。
【００６５】
図１３は、本実施の形態の一変形例として、分割部２７がタスクを分割した後に表示部５が表示する表示画面の例（第２例）を示す図である。同図に示す表示画面７００では、ブロック図７０１において、分割されたタスクごとのプログラム要素の組合せが明示されている。具体的には、タスクＩＤ＝１のタスクを構成するプログラム要素２１１、２１２を閉領域Ｔ１が包囲し、タスクＩＤ＝２のタスクを構成するプログラム要素２１３、２１４を閉領域Ｔ２が包囲し、タスクＩＤ＝３のタスクを構成するプログラム要素２１５、２１６を閉領域Ｔ３が包囲した態様で表示している。ここで、３つの閉領域Ｔ１〜Ｔ３は、互いに交わりを有しない閉領域である。このようにブロック図７０１でタスクの分割の仕方を明示することにより、ユーザはタスクの分割について一段と容易にかつ直感的に認識することができる。
【００６６】
なお、閉領域で包囲することによってタスクごとのプログラム要素の組合せを明示する代わりに、タスクごとにプログラム要素のボックスの線の色を変えてもよいし、タスクごとにプログラム要素のボックスを異なる色で塗りつぶしてもよい。
【００６７】
ここまで、本発明を実施するための形態を説明してきたが、本発明は、上述した一実施の形態によってのみ限定されるべきものではない。
図１４は、本発明の別な実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。同図に示すソフトウェア開発支援装置１１は、制御部１２において分割部を有しないことと、記憶部１３において分割情報記憶部を有しないことを除いて、ソフトウェア開発支援装置１と同様の機能構成を有する。ソフトウェア開発支援装置１１は、判定部２６が、処理時間算出部２５によって算出された処理時間が制約条件を満たすか否かを判定し、表示部５がその判定結果（ＯＫ／ＮＧ）を表示する機能を有している。このようなソフトウェア開発支援装置１１によれば、ユーザは、開発対象のオブジェクトファイルが制約条件を満足するか否かを容易に認識することが可能となる。
【００６８】
なお、本発明において、ソフトウェア開発支援装置が入力部および／または表示部を備えていなくてもよい。この場合には、ソフトウェア開発支援装置に対して外部の入力装置および／または表示装置を接続することによって上述した一実施の形態と同様の機能を実現すればよい。
【００６９】
また、本発明において、例えばブロック図を作成する前の段階で、ターゲットＣＰＵの設定を行うようにしてもよい。この場合には、ブロック図の作成を行う際に、制約条件を満たさないブロック図を作成できないようにすることが可能となる。したがって、ユーザは、制約条件を確認しながらブロック図の作成を行うことができる。
【００７０】
また、本発明において、作成済みのブロック図を別のターゲットＣＰＵに対して適用することも可能である。この場合、ＣＰＵ設定部２３が新たに設定したターゲットＣＰＵの情報に基づいて、判定部２６が新たなターゲットＣＰＵにおけるプログラムの実行可否を判定するようにすればよい。
【００７１】
また、本発明において適用可能な計算機言語はＣ言語に限られるわけではなく、ＰＬＣ（Programmable  Logic  Controller）に適用されるラダー言語、構造化言語（ＳＴ言語）、ＵＭＬ（Unified  Modelling  Language）、ＢＡＳＩＣ、アセンブリ言語等でもよい。
【００７２】
また、本発明に係るソフトウェア開発支援プログラムを、ハードディスク、フラッシュメモリ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、フレキシブルディスク等のコンピュータ読み取り可能な記録媒体に記録して、広く流通させることも可能である。本発明に係るソフトウェア開発支援プログラムの上述した記録媒体への書き込みは、その記録媒体を製品として出荷する際に行ってもよいし、通信ネットワークを介したダウンロードにより行ってもよい。
【００７３】
なお、本明細書において参照したフローチャートにおけるステップの前後関係はあくまでも一例に過ぎず、本発明の主旨を逸脱せず、かつ論理的に矛盾のない範囲で変更することが可能である。
【００７４】
このように、本発明は、ここでは記載していない様々な実施の形態等を含みうるものであり、特許請求の範囲により特定される技術的思想を逸脱しない範囲内において種々の設計変更等を施すことが可能である。
【符号の説明】
【００７５】
１、１１  ソフトウェア開発支援装置
２、１２  制御部
３、１３  記憶部
４  入力部
５  表示部
２１  ブロック図作成部
２２  ソースコード生成部
２３  ＣＰＵ設定部
２４  コンパイル部
２５  処理時間算出部
２６  判定部
２７  分割部
３１  プログラム要素記憶部
３２  ブロック図記憶部
３３  ソースコード記憶部
３４  ＣＰＵ情報記憶部
３５  オブジェクトファイル記憶部
３６  処理時間情報記憶部
３７  分割情報記憶部
１００、２００、３００、４００、４１０、７００  表示画面
１０１  ファイルボタン
１０２  プログラム要素選択ボタン
１０３  接続ボタン
１０４  ソースコード生成ボタン
１０５  ＣＰＵ設定ボタン
１０６  コンパイルボタン
１０７  処理時間確認ボタン
２０１、７０１  ブロック図
２１１、２１２、２１３、２１４、２１５、２１６  プログラム要素
２２１、２２２、２２３、２２４、２２５  接続線
２３１、２３２、２３３、２３４、２３５、２３６  算出結果表示ボックス
３０１、４１１  処理時間解析結果テーブル
３０２、４０１、４１２  制約情報
５００、６００  タスク管理ソースコード
Ｔ１、Ｔ２、Ｔ３  閉領域
【図１】
0006045986.tif 000002
【図２】
0006045986.tif 000003
【図３】
0006045986.tif 000004
【図４】
0006045986.tif 000005
【図５】
0006045986.tif 000006
【図６】
0006045986.tif 000007
【図７】
0006045986.tif 000008
【図８】
0006045986.tif 000009
【図９】
0006045986.tif 000010
【図１０】
0006045986.tif 000011
【図１１】
0006045986.tif 000012
【図１２】
0006045986.tif 000013
【図１３】
0006045986.tif 000014
【図１４】
0006045986.tif 000015