特許第6045986号(P6045986)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士電機株式会社の特許一覧 ▶ 富士電機機器制御株式会社の特許一覧

特許6045986ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
<>
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000002
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000003
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000004
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000005
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000006
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000007
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000008
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000009
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000010
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000011
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000012
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000013
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000014
  • 特許6045986-ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6045986
(24)【登録日】2016年11月25日
(45)【発行日】2016年12月14日
(54)【発明の名称】ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
(51)【国際特許分類】
   G06F 11/36 20060101AFI20161206BHJP
【FI】
   G06F9/06 620R
【請求項の数】5
【全頁数】19
(21)【出願番号】特願2013-135568(P2013-135568)
(22)【出願日】2013年6月27日
(65)【公開番号】特開2015-11476(P2015-11476A)
(43)【公開日】2015年1月19日
【審査請求日】2016年5月16日
(73)【特許権者】
【識別番号】000005234
【氏名又は名称】富士電機株式会社
(73)【特許権者】
【識別番号】508296738
【氏名又は名称】富士電機機器制御株式会社
(74)【代理人】
【識別番号】100089118
【弁理士】
【氏名又は名称】酒井 宏明
(72)【発明者】
【氏名】佐藤 芳信
【審査官】 坂庭 剛史
(56)【参考文献】
【文献】 特開2012−145987(JP,A)
【文献】 特開2011−165041(JP,A)
【文献】 特開2013−109652(JP,A)
【文献】 特開2008−071314(JP,A)
【文献】 特開2000−330775(JP,A)
【文献】 特開平05−150975(JP,A)
【文献】 特開2010−286892(JP,A)
【文献】 滝沢聡毅、徳田寛和,パワーエレクトロニクス装置設計の高度化技術,富士時報,日本,富士電機ホールディングス株式会社,2007年 3月10日,第80巻,第2号(通巻843号),pp.108-109,ISSN 0367-3332
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 9/44
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
組込み対象の機器に組込んで該機器が備えるCPUを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置において、
前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを機械語に変換するコンパイル部と、
前記コンパイル部が変換した機械語に含まれる命令数を抽出することによって前記CPUが前記プログラムを実行する際の処理時間を算出する処理時間算出部と、
前記CPUが前記プログラムの実行に要する処理時間の制約を与える制約処理時間を設定するCPU設定部と、
前記処理時間算出部が算出した処理時間と前記CPU設定部が設定した制約処理時間とを比較することによって前記プログラムを前記CPUに実行させることの可否を判定する判定部と、
情報の入力を受け付ける入力部と、
前記判定部が前記プログラムを前記CPUに実行させることができないと判定した場合において、前記入力部が前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割指示の入力を受け付けたとき、前記プログラムの処理を前記複数のタスクに分割する分割部と、
前記制約処理時間および前記判定部が判定した結果を表示する表示部と、
を備え
前記表示部は、
前記判定部による判定結果が否である場合において、前記分割部が処理を行ったとき、前記分割部が分割した結果として前記複数のタスクを識別可能に表示することを特徴とするソフトウェア開発支援装置。
【請求項2】
前記CPU設定部は、
前記CPUの動作クロック数をさらに設定し、
前記処理時間算出部は、
抽出したすべての前記命令数から総実行クロック数を算出し、該総実行クロック数と前記CPU設定部が設定した動作クロック数とをもとに前記処理時間を算出することを特徴とする請求項に記載のソフトウェア開発支援装置。
【請求項3】
前記表示部は、
複数のプログラム要素を用いて前記ソフトウェアの仕様を記述するブロック図を表示するとともに、各プログラム要素に対応づけて前記処理時間算出部の算出結果を表示し、
記複数のプログラム要素の各々が、前記複数のタスクのいずれに含まれるかを識別可能に表示することを特徴とする請求項1または2に記載のソフトウェア開発支援装置。
【請求項4】
組込み対象の機器に組込んで該機器が備えるCPUを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置が行うソフトウェア開発支援方法において、
前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、
前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記CPUが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、
前記処理時間算出ステップで算出した処理時間と前記CPUが前記プログラムの実行に要する処理時間の制約を与える制約処理時間とを比較することによって前記プログラムを前記CPUに実行させることの可否を判定する判定ステップと、
前記制約処理時間および前記判定ステップで判定した結果を表示する判定結果表示ステップと、
前記判定ステップで前記プログラムを前記CPUに実行させることができないと判定した場合において、前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割指示の入力を受け付けたとき、前記プログラムの処理を前記複数のタスクに分割する分割ステップと、
前記判定ステップの判定結果が否である場合において、前記分割ステップが処理を行ったとき、前記分割ステップが分割した結果として前記複数のタスクを識別可能に表示する分割結果表示ステップと、
を備えたことを特徴とするソフトウェア開発支援方法。
【請求項5】
組込み対象の機器に組込んで該機器が備えるCPUを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置に、
前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、
前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記CPUが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、
前記処理時間算出ステップで算出した処理時間と前記CPUが前記プログラムの実行に要する処理時間の制約を与える制約処理時間とを比較することによって前記プログラムを前記CPUに実行させることの可否を判定する判定ステップと、
前記制約処理時間および前記判定ステップで判定した結果を表示する判定結果表示ステップと、
前記判定ステップで前記プログラムを前記CPUに実行させることができないと判定した場合において、前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割指示の入力を受け付けたとき、前記プログラムの処理を前記複数のタスクに分割する分割ステップと、
前記判定ステップの判定結果が否である場合において、前記分割ステップが処理を行ったとき、前記分割ステップが分割した結果として前記複数のタスクを識別可能に表示する分割結果表示ステップと、
を実行させることを特徴とするソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モータの駆動を制御するインバータ等の産業用機器に組込んで使用するソフトウェアの開発を支援するソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラムに関する。
【背景技術】
【0002】
従来、モータの駆動を制御するインバータ等の産業用機器に組込んで使用するソフトウェアを開発するための技術として、複数のプログラム要素を用いて開発対象のソフトウェアの仕様を記述するブロック図をもとに、そのソフトウェアを構成するプログラムのソースコードを所定の計算機言語で自動生成する技術が知られている(例えば、特許文献1を参照)。
【0003】
組込み対象の機器が備えるCPU(Central Processing Unit)は、リアルタイム性が求められるものの、昨今のパーソナルコンピュータが備えるCPUのように高性能のものではなく、交換も容易ではない。このため、組込み対象の機器が備えるCPUに対しては、該CPUと接続するROM(Read Only Memory)やRAM(Random Access Memory)等のメモリ容量および該CPUの処理時間に対して制約を設けるのが一般的である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−285480号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したCPUの制約のうち、メモリ容量に関する制約を満たすか否かについては、コンパイラがソースコードをコンパイルしてオブジェクトファイルを生成する際に容易に判定することができる。これに対して、処理時間に関する制約を満たすか否かについては、判定を行う際にプログラムを実行するCPUの処理能力等の情報が必要であり、コンパイラ側で判定することができない。
【0006】
そこで、プログラムを実行するCPUの処理時間を算出することも考えられる。CPUの処理時間を算出するには、そのCPUを備えた組込み対象の機器を実際に動作させる必要がある。しかしながら、この場合には、算出対象のプログラムがCPUの処理時間に対する制約を満たさない状況下で組込み対象の機器を動作させてしまう可能性があり、その機器を不適切な動作状態に陥らせてしまうおそれがあった。
【0007】
本発明は、上記に鑑みてなされたものであって、組込み対象の機器へ組込むソフトウェアを開発する際に、その機器を不適切な動作状態に陥らせることなく開発を行うことを可能にするソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するために、本発明に係るソフトウェア開発支援装置は、組込み対象の機器に組込んで該機器が備えるCPUを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置において、前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを機械語に変換するコンパイル部と、前記コンパイル部が変換した機械語に含まれる命令数を抽出することによって前記CPUが前記プログラムを実行する際の処理時間を算出する処理時間算出部と、前記処理時間算出部が算出した処理時間に基づいて前記プログラムを前記CPUに実行させることの可否を判定する判定部と、を備えたことを特徴とする。
【0009】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記CPUが前記プログラムの実行に要する処理時間の制約を与える制約処理時間を設定するCPU設定部をさらに備え、前記判定部は、前記処理時間算出部が算出した処理時間と前記CPU設定部が設定した制約処理時間とを比較することによって前記プログラムを前記CPUに実行させることの可否を判定することを特徴とする。
【0010】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記CPU設定部は、
前記CPUの動作クロック数をさらに設定し、前記処理時間算出部は、抽出したすべての前記命令数から総実行クロック数を算出し、該総実行クロック数と前記CPU設定部が設定した動作クロック数とをもとに前記処理時間を算出することを特徴とする。
【0011】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記判定部が前記プログラムを前記CPUに実行させることができないと判定した場合、前記プログラムの処理を前記制約処理時間内でそれぞれ実行可能な複数のタスクに分割する分割部をさらに備えたことを特徴とする。
【0012】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記判定部が判定した結果および前記分割部が分割した結果を表示する表示部をさらに備えたことを特徴とする。
【0013】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記表示部は、複数のプログラム要素を用いて前記ソフトウェアの仕様を記述するブロック図を表示するとともに、前記ブロック図において、前記複数のプログラム要素の各々が、前記複数のタスクのいずれに含まれるかを識別可能に表示することを特徴とする。
【0014】
本発明に係るソフトウェア開発支援装置は、上記発明において、前記判定部が判定した結果を表示する表示部をさらに備えたことを特徴とする。
【0015】
本発明に係るソフトウェア開発支援方法は、組込み対象の機器に組込んで該機器が備えるCPUを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置が行うソフトウェア開発支援方法において、前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記CPUが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、前記処理時間算出ステップで算出した処理時間に基づいて前記プログラムを前記CPUに実行させることの可否を判定する判定ステップと、を備えたことを特徴とする。
【0016】
本発明に係るソフトウェア開発支援プログラムは、組込み対象の機器に組込んで該機器が備えるCPUを動作させるソフトウェアの開発を支援するソフトウェア開発支援装置に、前記ソフトウェアを構成するプログラムのソースコードであって所定の計算機言語で記述されたソースコードを記憶する記憶部から該ソースコードを読み出して機械語に変換するコンパイルステップと、前記コンパイルステップで変換した機械語に含まれる命令数を抽出することによって前記CPUが前記プログラムを実行する際の処理時間を算出する処理時間算出ステップと、前記処理時間算出ステップで算出した処理時間に基づいて前記プログラムを前記CPUに実行させることの可否を判定する判定ステップと、を実行させることを特徴とする。
【発明の効果】
【0017】
本発明によれば、組込み対象の機器が備えるCPUがプログラムを実行する際の処理時間に基づいてそのプログラムをCPUに実行させることの可否を判定するため、組込み対象の機器へ組込むソフトウェアを開発する際に、その機器を不適切な動作状態に陥らせることなく開発を行うことが可能となる。
【図面の簡単な説明】
【0018】
図1図1は、本発明の一実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。
図2図2は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部が表示する表示画面の構成例を示す図である。
図3図3は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部におけるCPU設定ボタンのプルダウンメニューの表示例を示す図である。
図4図4は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部におけるコンパイルボタンのプルダウンメニューの表示例を示す図である。
図5図5は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部における処理時間確認ボタンのプルダウンメニューの表示例を示す図である。
図6図6は、本発明の一実施の形態に係るソフトウェア開発支援装置を用いて行うソフトウェア開発処理の概要を示すフローチャートである。
図7図7は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部におけるブロック図の表示例を模式的に示す図である。
図8図8は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部が判定結果を表示する表示画面の例(第1例)を示す図である。
図9図9は、本発明の一実施の形態に係るソフトウェア開発支援装置の表示部が判定結果を表示する表示画面の例(第2例)を示す図である。
図10図10は、本発明の一実施の形態に係るソフトウェア開発支援装置において、分割部がタスクを分割した後に表示部が表示する表示画面の例を示す図である。
図11図11は、本発明の一実施の形態に係るソフトウェア開発支援装置において、分割部がタスクを分割した場合にソースコード生成部が生成したタスク管理ソースコードの例を示す図である。
図12図12は、本発明の一実施の形態に係るソフトウェア開発支援装置において、処理時間が制約条件を満たす場合にソースコード生成部が生成したタスク管理ソースコードの例を示す図である。
図13図13は、本実施の形態の一変形例に係るソフトウェア開発支援装置の分割部がタスクを分割した後に表示部が表示する表示画面の例を示す図である。
図14図14は、本発明の別な実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。
【発明を実施するための形態】
【0019】
以下、添付図面を参照して、本発明を実施するための形態(以下、「実施の形態」という)を説明する。
【0020】
図1は、本発明の一実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。同図に示すソフトウェア開発支援装置1は、モータの駆動を制御するインバータ等の産業用機器に組込んで使用するソフトウェアの開発を支援する装置である。ソフトウェア開発支援装置1は、当該装置の動作を統括して制御する制御部2と、各種情報を記憶する記憶部3と、キーボード、マウス、タッチパネル等のインタフェースを用いて構成され、各種情報の入力を受け付ける入力部4と、液晶または有機EL(Electro Luminescence)等からなる表示パネルを有し、各種情報を表示出力する表示部5と、を備える。
【0021】
制御部2は、入力部4から入力される情報に基づいて記憶部3が記憶するプログラム要素を基本構成要素として開発対象のソフトウェアの仕様を記述するブロック図を作成するブロック図作成部21と、ブロック図作成部21が作成したブロック図にしたがってプログラムのソースコードを生成するソースコード生成部22と、ソフトウェアを組込む対象の機器が備えるCPU(以下、ターゲットCPUという)を設定するCPU設定部23と、ソースコード生成部22が生成したソースコードを機械語に変換することによってオブジェクトファイルを生成するコンパイル部24と、コンパイル部24が生成したオブジェクトファイルをもとにターゲットCPUが定周期で処理を行うのに必要な処理時間を算出する処理時間算出部25と、処理時間算出部25が算出した処理時間がそのターゲットCPUで実行可能な処理時間であるか否かを判定する判定部26と、判定部26が判定した結果、処理時間がターゲットCPUで実行可能な処理時間でない場合、ターゲットCPUの制約条件を満足するようにプログラムにおけるタスクの分割を行う分割部27と、を有する。
【0022】
ブロック図作成部21は、例えばエディタ等のソフトウェアである。ユーザは、表示部5が表示する画面を見ながら、入力部4によってプログラム要素を選択し、選択した複数のプログラム要素間の接続情報を設定入力することにより、ブロック図作成部21に対してブロック図の作成を指示する。ブロック図作成部21は、作成したブロック図を記憶部3(後述するブロック図記憶部32)に格納する。
【0023】
ソースコード生成部22は、ブロック図作成部21が作成したブロック図にしたがって、例えばC言語等の所定の計算機言語によるソースコードを生成し、記憶部3(後述するソースコード記憶部33)に格納する。また、ソースコード生成部22は、プログラムに含まれるタスクを管理するタスク管理関数のソースコード(以下、タスク管理ソースコードという)を生成し、ソースコード記憶部33に格納する。
【0024】
CPU設定部23は、ターゲットCPUの種別に加えて、ターゲットCPUのクロック数および処理時間の制限値を制約条件として設定したCPU情報を記憶部3(後述するCPU情報記憶部34)に格納する。
【0025】
処理時間算出部25は、コンパイル部24が生成したオブジェクトファイルから機械語の命令数を抽出し、この命令数に応じた実行クロック数をもとに総実行クロック数を算出する。その後、処理時間算出部25は、算出した総実行クロック数とCPU設定部23が設定したクロック数とを用いて処理時間を算出し、算出結果を記憶部3(後述する処理時間情報記憶部36)に格納する。
【0026】
判定部26は、処理時間算出部25が算出した処理時間とCPU設定部23が設定した処理時間の制約を与える制約処理時間とを比較することにより、その処理時間でターゲットCPUがプログラムを実行可能であるか否かを判定する。
【0027】
分割部27は、判定部26が判定した結果、処理時間が制約処理時間よりも大きい場合、プログラムの処理を定周期で実行する複数のタスクに分割し、分割したソースコードの情報を記憶部3(後述する分割情報記憶部37)に格納する。
【0028】
以下、分割部27が行う分割処理の例を具体的に説明する。
分割部27は、ソースコードに対応するブロック図を構成するプログラム要素のうち最後段(または最前段)のプログラム要素を基準として、ターゲットCPUの制約処理時間を超えるまで接続線によって接続されたプログラム要素をたどっていき、処理時間を積算する。これにより、制約処理時間を超える前までのプログラム要素が1つのタスクとして分割されることとなる。分割部27は、ここで説明した処理を、すべてのプログラム要素の処理時間が積算されるまで実行する。
このように、分割部27は、プログラム要素の処理順を考慮したタスクの分割を行うため、各タスクの処理時間が制約処理時間を超えないようにすることができるとともに、論理的な破綻を生じさせない態様でタスクを分割することができる。
【0029】
なお、分割部27が分割処理を行う際に、基準とするプログラム要素に対して直前(または直後)のプログラム要素が複数存在する場合には、いずれか1つの処理時間を積算してもよいし、すべての処理時間を積算してもよい。また、タスクの分割の仕方が複数通り存在する場合、分割部27は、分割数が少ない方を優先して選択するようにしてもよいし、タスク別の処理時間を母集団としたときの標準偏差が小さい分割の仕方を優先して選択するようにしてもよい。
【0030】
以上の機能構成を有する制御部2は、CPU等を用いて実現され、ソフトウェア開発支援装置1の各構成部位とバスラインを介して接続されている。制御部2は、記憶部3が記憶、格納する各種情報を記憶部3から読み出すことにより、本実施の形態に係るソフトウェア開発支援方法に関連した演算処理を実行する。
【0031】
次に、記憶部3の機能構成を説明する。記憶部3は、プログラム要素を記憶するプログラム要素記憶部31と、ブロック図作成部21が作成したブロック図を記憶するブロック図記憶部32と、ソースコード生成部22が生成したソースコードおよびタスク管理ソースコードを記憶するソースコード記憶部33と、CPU設定部23が設定したターゲットCPUに関する情報を記憶するCPU情報記憶部34と、コンパイル部24が生成したオブジェクトファイルを記憶するオブジェクトファイル記憶部35と、処理時間算出部25が算出した処理時間に関する情報を記憶する処理時間情報記憶部36と、分割部27がプログラムを分割した結果を含む分割情報を記憶する分割情報記憶部37と、を有する。
【0032】
記憶部3は、本実施の形態に係るソフトウェア開発支援プログラムや所定のOS(Operating System)を起動するプログラム等が予め記憶されたROM、および各処理の演算パラメータやデータ等を記憶するRAM等を用いて実現される。上述した各種プログラムは、通信ネットワークを介してダウンロードすることによって取得することも可能である。ここでいう通信ネットワークは、例えばLAN(Local Area Network)、WAN(Wide Area Network)、公衆回線網等によって実現されるものであり、有線、無線を問わない。
【0033】
次に、表示部5の機能構成を説明する。図2は、表示部5が表示する表示画面の構成例を示す図である。同図に示す表示画面100には、ユーザが入力部4を介して選択可能なメニューボタンとして、ブロック図の各種ファイル操作を入力するためのファイルボタン101、ブロック図を構成するプログラム要素の選択を行うプログラム要素選択ボタン102、プログラム要素間の接続を設定する接続ボタン103、ブロック図に基づくソースコードの作成を指示するソースコード生成ボタン104、ターゲットCPUの設定を行うCPU設定ボタン105、ソースコードのコンパイルを指示するコンパイルボタン106、および処理時間の確認および確認結果に応じた処理を行う処理時間確認ボタン107が表示される。
【0034】
ユーザは、入力部4が有するマウスを用いて所望の操作に対応するボタンの表示位置にマウスポインタを位置合わせした後、マウスボタンをクリックすることによってソフトウェア開発支援装置1に実行させる動作を選択入力する。以下、マウスポインタを位置合わせした後にマウスボタンをクリックする操作を、単にクリックするという。
【0035】
図3は、CPU設定ボタン105のプルダウンメニューの表示例を示す図である。CPU設定ボタン105がクリックされると、プルダウンメニューとして「CPU選択」、「CPUクロック数」および「CPU制約処理時間」が表示される。このうち、「CPU選択」がクリックされると、さらに下層のプルダウンメニューとして、選択可能なターゲットCPUの種類を表示する(図示せず)。これに対して、「CPUクロック数」にはクロック数を入力するためのボックスが表示され、「CPU制約処理時間」には処理時間を入力するためのボックスが表示される。ユーザは、入力部4によって所望のクロック数および制約処理時間を対応するボックスに入力する。CPU設定ボタン105を用いて設定された情報は、CPU設定部23がCPU情報記憶部34に格納する。
【0036】
図4は、コンパイルボタン106のプルダウンメニューの表示例を示す図である。コンパイルボタン106がクリックされると、プルダウンメニューとして「コンパイル実行」、「コンパイル結果確認」および「コンパイル設定」が表示される。
【0037】
図5は、処理時間確認ボタン107のプルダウンメニューの表示例を示す図である。処理時間確認ボタン107がクリックされると、プルダウンメニューとして「処理時間確認」、「タスク分割実行」、「タスク管理ソースコード生成」および「タスク管理ソースコード保存」が表示される。
【0038】
以上の機能構成を有するソフトウェア開発支援装置1は、1つのコンピュータを用いて実現してもよいし、複数のコンピュータを用いて実現してもよい。後者の場合には、通信ネットワークを介してデータの送受信を行いながら、互いに連携して処理を行うようにすることも可能である。なお、ここでいうコンピュータは、汎用のパーソナルコンピュータやサーバ等によって構成することができる。また、通信ネットワークを介した複数のコンピュータからなるクライアント・サーバシステムによってソフトウェア開発支援装置1を構成する場合には、入力部4および表示部5の機能をクライアント端末に具備させる一方、制御部2および記憶部3の機能を一または複数のサーバに具備させるような構成としてもよい。
【0039】
次に、ソフトウェア開発支援装置1を用いて行うソフトウェア開発処理について説明する。図6は、ソフトウェア開発支援装置1を用いて行うソフトウェア開発処理の概要を示すフローチャートである。まず、ブロック図作成部21は、ユーザによる入力部4を介したプログラム要素および接続線の入力に基づいてブロック図を作成し、作成したブロック図をブロック図記憶部32に格納する(ステップS1)。ユーザは、図2に示す表示画面100に表示されたプログラム要素選択ボタン102を用いてプログラム要素を選択し、接続ボタン103を用いてプログラム要素間を接続する接続線を選択する。
【0040】
図7は、表示部5におけるブロック図の表示例を模式的に示す図である。同図に示す表示画面200に表示されるブロック図201は、6つのプログラム要素211〜216と、プログラム要素間の接続関係を示す5本の接続線221〜225とを備える。各プログラム要素には、機能名と識別用のIDが表示されている。例えば、プログラム要素211は、機能名がAであり、IDがF001である。また、各接続線には、識別用のIDが表示されている。例えば、接続線221のIDはW001である。なお、各プログラム要素のボックスの中に、機能を具体的に表現する図を付加してもよい。
【0041】
ブロック図201のより具体的な構成を説明する。ブロック図201は、接続線221〜225の矢印の向きからも明らかなように、表示画面200の左から右へ処理が進んでいくことを示している。ブロック図201の最前段には2つのプログラム要素211および214が設けられている一方、ブロック図201の最後段にはプログラム要素216が設けられている。ブロック図201には、プログラム要素211→プログラム要素212→プログラム要素213→プログラム要素216という処理の流れと、プログラム要素214→プログラム要素215→プログラム要素216という処理の流れが存在する。
【0042】
プログラム要素211は、自身を起点として伸びる接続線221を介してプログラム要素212(機能名:B、ID:F002)に接続する。
プログラム要素212は、自身を起点として伸びる接続線222(ID:W002)を介してプログラム要素213(機能名:C、ID:F003)に接続する。
プログラム要素213は、自身を起点として伸びる接続線223(ID:W003)を介してプログラム要素216(機能名:F、ID:F006)に接続する。
プログラム要素214(機能名:D、ID:F004)は、自身を起点として伸びる接続線224(ID:W004)を介してプログラム要素215(機能名:E、ID:F005)に接続する。
プログラム要素215は、自身を起点として伸びる接続線225(ID:W005)を介してプログラム要素216に接続する。
【0043】
ステップS1の後、ソースコード生成部22は、ユーザによる入力部4を介したソースコード生成指示信号の入力に応じて、ブロック図作成部21が作成したブロック図に対応するソースコードを生成し、ソースコード記憶部33へ格納する(ステップS2)。このソースコードは、上述したように、C言語等の計算機言語によって生成される。
【0044】
続いて、CPU設定部23は、ユーザによる入力部4を介した入力に応じて、ターゲットCPUの設定入力を行う(ステップS3)。ユーザは、CPU設定ボタン105をクリックしてプルダウンメニューを表示した後(図3を参照)、ターゲットCPUの種類を選択するとともに、入力部4によってクロック数や制約処理時間を入力する。
【0045】
この後、コンパイル部24は、ユーザによる入力部4を介したコンパイル指示信号の入力に応じて、ソースコード記憶部33からソースコードを読み出し、読み出したソースコードを機械語に変換してオブジェクトファイルを生成する(ステップS4)。このコンパイル処理をソフトウェア開発支援装置1に実行させる際、ユーザは、コンパイルボタン106をクリックしてプルダウンメニューを表示した後、「コンパイル実行」をクリックする(図4を参照)。なお、ユーザがコンパイルの結果を確認する場合には、図4に示すプルダウンメニューのうち「コンパイル結果確認」をクリックすればよい。また、ユーザがコンパイルの設定を確認したり変更したりする場合には、図4に示すプルダウンメニューのうち「コンパイル設定」をクリックして設定画面を表示させて設定を行えばよい。
【0046】
続いて、処理時間算出部25は、ユーザによる入力部4を介した処理時間算出指示信号の入力に応じて、生成したオブジェクトファイルの処理時間を算出し、算出結果を処理時間情報記憶部36に格納する(ステップS5)。具体的には、処理時間算出部25は、オブジェクトファイルから機械語の命令数を抽出し、この命令数に応じた総実行クロック数を算出した後、この総実行クロック数とCPU情報記憶部34が記憶するクロック数とを用いて処理時間を算出する。この処理を処理時間算出部25に実行させる際、ユーザは、処理時間確認ボタン107をクリックしてプルダウンメニューを表示した後(図5を参照)、「処理時間確認」メニューをクリックする。
【0047】
続いて、判定部26は、処理時間算出部25が算出した処理時間とCPU情報記憶部34が記憶する制約処理時間とを比較することにより、処理時間が制約条件を満たすか否かを判定する(ステップS6)。具体的には、判定部26は、処理時間が制約処理時間よりも小さい場合、処理時間が制約条件を満たすと判定する一方、処理時間が制約処理時間以上である場合、処理時間が制約条件を満たさないと判定する。
【0048】
その後、表示部5は、判定部26の判定結果を表示する(ステップS7)。図8は、表示部5が判定結果を表示する表示画面の例(第1例)を示す図である。同図に示す表示画面300において、ブロック図201には、プログラム要素211〜216における命令数と処理時間の算出結果表示ボックス231〜236がそれぞれ対応付けて表示される。
【0049】
具体的には、プログラム要素211に対応する算出結果表示ボックス231には、算出結果として、命令数200、処理時間100μsが表示されている。
プログラム要素212に対応する算出結果表示ボックス232には、命令数160、処理時間80μsが表示されている。
プログラム要素213に対応する算出結果表示ボックス233には、命令数80、処理時間40μsが表示されている。
プログラム要素214に対応する算出結果表示ボックス234には、命令数120、処理時間60μsが表示されている。
プログラム要素215に対応する算出結果表示ボックス235には、命令数100、処理時間50μsが表示されている。
プログラム要素216に対応する算出結果表示ボックス236には、命令数200、処理時間100μsが表示されている。
【0050】
また、表示画面300の下方には、処理時間解析結果を表す処理時間解析結果テーブル301、およびターゲットCPUの制約条件に関連した情報を表す制約情報302が表示されている。
処理時間解析結果テーブル301は、タスクごとのプログラム要素、プログラム要素に対応した命令数および処理時間、タスクごとの合計の処理時間(タスクID別処理時間)を示す。処理時間解析結果テーブル301では、1つのタスク(タスクID:1)に6つのプログラム要素211〜216が含まれ、タスクID別処理時間430μsが表示されている。また、プログラム要素211〜216の命令数の合計860も表示されている。
制約情報302は、制約処理時間(500μs)、タスク分割数(1)、および判定結果(OK)を有する。このうち、判定結果は、判定部26がタスクID別処理時間(430μs)と制約処理時間(500μs)との比較に基づいて判定した結果である。すなわち、表示画面300に示す場合、タスクID別処理時間が制約処理時間よりも小さいため、判定部26は処理時間としてのタスクID別処理時間がターゲットCPUで実行可能な処理時間であると判定する。
【0051】
なお、表示部5における表示内容が表示画面100から表示画面300に遷移する途中の中間状態として、ステップS5で処理時間算出部25が算出した結果を示す算出結果表示ボックス231〜236を表示する一方、処理時間解析結果テーブル301および制約情報302は表示しない状態の表示画面を表示部5が表示するようにしてもよい。
【0052】
図9は、表示部5が判定結果を表示する表示画面の例(第2例)を示す図である。同図に示す表示画面400は、制約情報401の表示内容が、上述した表示画面300(図8を参照)と異なっている。表示画面400では、制約情報401に含まれる制約処理時間が200μsとなっており、タスクID別処理時間(430μs)が制約処理時間よりも大きい。この場合、判定部26は、タスクID別処理時間がターゲットCPUで実行不可能であると判定するため、制約情報401に含まれる判定結果が「NG」と表示されている。
【0053】
判定部26による判定の結果、ターゲットCPUの処理時間が制約条件を満たさない場合(ステップS8:No)、分割部27は、ユーザによる入力部4を介した分割指示の入力に応じて、プログラムのタスクを分割し、分割結果を分割情報記憶部37に格納する(ステップS9)。この処理を分割部27に実行させる際、ユーザは、処理時間確認ボタン107をクリックしてプルダウンメニューを表示した後(図5を参照)、「タスク分割実行」メニューをクリックする。
【0054】
この後、表示部5は、分割部27の分割結果を表示する(ステップS10)。図10は、分割部27がタスクを分割した後に表示部5が表示する表示画面の例を示す図である。同図に示す表示画面410は、表示部5が図9に示す表示画面400を表示している状態で分割部27が分割処理を行った後の表示例を示している。
図10において、処理時間解析結果テーブル411は、6つのプログラム要素211〜216を3つのタスク(タスクID:1〜3)に分割したことを示している。具体的には、処理時間解析結果テーブル411は、プログラム要素211、212を1つのタスク(タスクID:1)とし、プログラム要素213、214を別のタスク(タスクID:2)とし、プログラム要素215、216をさらに別のタスク(タスクID:3)として、プログラムを3つのタスクに分割したことを示している。
また、処理時間解析結果テーブル411は、タスクIDが2であるタスクを他の2つのタスクと異なる態様(網掛け)で表示している。このため、処理時間解析結果テーブル411を見たユーザは、タスクの分割の仕方を明確に把握することができる。
【0055】
図10に示す場合、プログラムのタスクを3つに分割することで、タスクID別処理時間は、タスクID=1のタスクが180μs、タスクID=2のタスクが100μs、タスクID=3のタスクが150μsとなり、すべてのタスクにおいてタスクID別処理時間が制約処理時間(200μs)よりも小さくなっている。このため、制約情報412では、判定結果が「OK」と表示されている。
【0056】
なお、本実施の形態では、分割部27がタスクを分割した際に処理時間の判定も合わせて行うこととしているが、分割部27がタスクを分割した結果を用いて、判定部26が再度ターゲットCPUにおけるプログラム実行の可否を判定するようにしてもよい。
【0057】
以上説明したステップS10に続くステップS11において、ソースコード生成部22は、ユーザによる入力部4を介したタスク管理ソースコードの生成指示に応じて、タスク管理ソースコードを生成し、生成したタスク管理ソースコードをソースコード記憶部33に格納する(ステップS11)。このステップS11の後、ソフトウェア開発支援装置1は、一連の処理を終了する。
【0058】
ステップS11の処理を具体的に説明する。ソースコード生成部22は、ステップS10でタスクが分割された場合には、分割されたタスクごとに処理が行われるように、分割されたタスクを管理するタスク管理関数のソースコードを生成する。この処理をソースコード生成部22に実行させる際、ユーザは、処理時間確認ボタン107をクリックしてプルダウンメニューを表示した後(図5を参照)、「タスク管理ソースコード生成」メニューをクリックする。その後、ソースコード生成部22が生成したタスク管理ソースコードの内容をユーザが確認し、問題がなければ、処理時間確認ボタン107のプルダウンメニューに表示される「タスク管理ソースコード保存」をクリックすることにより、そのタスク管理ソースコードをソースコード記憶部33に格納する。なお、ステップS11において、ソースコード生成部22がタスク管理ソースコードを生成した後、生成したタスク管理ソースコードを、ユーザからの指示を待たずに自動的にソースコード記憶部33に格納するようにしてもよい。
【0059】
図11は、分割部27がタスクを分割した場合にソースコード生成部22が生成したタスク管理ソースコードの例を示す図である。同図に示すタスク管理ソースコード500はC言語を用いて記述されている。具体的には、タスク管理ソースコード500は、switch文により、1つ目のタスク(case 0)をプログラム要素211(ID:F001)、212(ID:F002)から構成してタスクIDを1とし、2つ目のタスク(case 1)をプログラム要素213(ID:F003)、214(ID:F004)から構成してタスクIDを2とし、3つ目のタスク(case 2)をプログラム要素215(ID:F005)、216(ID:F006)から構成してタスクIDを3とすることを記述している。
【0060】
ここで、ステップS8において、判定部26が判定した結果、処理時間が制約条件を満たす場合(ステップS8:Yes)を説明する。この場合、ソフトウェア開発支援装置1は、ステップS11(タスク管理ソースコード生成処理)へ移行する。図12は、判定部26が判定した結果、処理時間が制約条件を満たす場合に、ステップS11においてソースコード生成部22が生成するタスク管理ソースコードの例を示す図である。同図に示すタスク管理ソースコード600は、6つのプログラム要素211〜216(ID:F001〜F006)によって1つのタスクを構成している。
【0061】
なお、分割部27がタスクを分割した場合には、組込み対象の機器へソフトウェアを組込む際に、ソースコードをタスクごとに実行形式に変換して組込みを行うこととなる。
【0062】
以上説明した本発明の一実施の形態によれば、ターゲットCPUがプログラムを実行する際の処理時間を算出し、この処理時間に基づいてソフトウェアを構成するプログラムをターゲットCPUに実行させることの可否を判定するため、プログラムがターゲットCPUにおける処理時間の制約を満たさない場合にはターゲットCPUを動作させないで済む。したがって、組込み対象の機器へ組込むソフトウェアを開発する際に、その機器を不適切な動作状態に陥らせることなく開発を行うことが可能となる。
【0063】
また、本実施の形態によれば、1つのプログラムをターゲットCPUに実行させることができないと判定した場合には、そのプログラムの処理を各々が制約処理時間内で処理可能な複数のタスクに分割するため、ターゲットCPUを確実に制約処理時間内で動作させることが可能なソフトウェアを開発することができる。
【0064】
また、本実施の形態によれば、プログラムをターゲットCPUに実行させることの可否を判定した後に判定結果を表示部で表示するため、ユーザは判定結果を明確に把握することができる。
【0065】
図13は、本実施の形態の一変形例として、分割部27がタスクを分割した後に表示部5が表示する表示画面の例(第2例)を示す図である。同図に示す表示画面700では、ブロック図701において、分割されたタスクごとのプログラム要素の組合せが明示されている。具体的には、タスクID=1のタスクを構成するプログラム要素211、212を閉領域T1が包囲し、タスクID=2のタスクを構成するプログラム要素213、214を閉領域T2が包囲し、タスクID=3のタスクを構成するプログラム要素215、216を閉領域T3が包囲した態様で表示している。ここで、3つの閉領域T1〜T3は、互いに交わりを有しない閉領域である。このようにブロック図701でタスクの分割の仕方を明示することにより、ユーザはタスクの分割について一段と容易にかつ直感的に認識することができる。
【0066】
なお、閉領域で包囲することによってタスクごとのプログラム要素の組合せを明示する代わりに、タスクごとにプログラム要素のボックスの線の色を変えてもよいし、タスクごとにプログラム要素のボックスを異なる色で塗りつぶしてもよい。
【0067】
ここまで、本発明を実施するための形態を説明してきたが、本発明は、上述した一実施の形態によってのみ限定されるべきものではない。
図14は、本発明の別な実施の形態に係るソフトウェア開発支援装置の機能構成を示すブロック図である。同図に示すソフトウェア開発支援装置11は、制御部12において分割部を有しないことと、記憶部13において分割情報記憶部を有しないことを除いて、ソフトウェア開発支援装置1と同様の機能構成を有する。ソフトウェア開発支援装置11は、判定部26が、処理時間算出部25によって算出された処理時間が制約条件を満たすか否かを判定し、表示部5がその判定結果(OK/NG)を表示する機能を有している。このようなソフトウェア開発支援装置11によれば、ユーザは、開発対象のオブジェクトファイルが制約条件を満足するか否かを容易に認識することが可能となる。
【0068】
なお、本発明において、ソフトウェア開発支援装置が入力部および/または表示部を備えていなくてもよい。この場合には、ソフトウェア開発支援装置に対して外部の入力装置および/または表示装置を接続することによって上述した一実施の形態と同様の機能を実現すればよい。
【0069】
また、本発明において、例えばブロック図を作成する前の段階で、ターゲットCPUの設定を行うようにしてもよい。この場合には、ブロック図の作成を行う際に、制約条件を満たさないブロック図を作成できないようにすることが可能となる。したがって、ユーザは、制約条件を確認しながらブロック図の作成を行うことができる。
【0070】
また、本発明において、作成済みのブロック図を別のターゲットCPUに対して適用することも可能である。この場合、CPU設定部23が新たに設定したターゲットCPUの情報に基づいて、判定部26が新たなターゲットCPUにおけるプログラムの実行可否を判定するようにすればよい。
【0071】
また、本発明において適用可能な計算機言語はC言語に限られるわけではなく、PLC(Programmable Logic Controller)に適用されるラダー言語、構造化言語(ST言語)、UML(Unified Modelling Language)、BASIC、アセンブリ言語等でもよい。
【0072】
また、本発明に係るソフトウェア開発支援プログラムを、ハードディスク、フラッシュメモリ、CD−ROM、DVD−ROM、フレキシブルディスク等のコンピュータ読み取り可能な記録媒体に記録して、広く流通させることも可能である。本発明に係るソフトウェア開発支援プログラムの上述した記録媒体への書き込みは、その記録媒体を製品として出荷する際に行ってもよいし、通信ネットワークを介したダウンロードにより行ってもよい。
【0073】
なお、本明細書において参照したフローチャートにおけるステップの前後関係はあくまでも一例に過ぎず、本発明の主旨を逸脱せず、かつ論理的に矛盾のない範囲で変更することが可能である。
【0074】
このように、本発明は、ここでは記載していない様々な実施の形態等を含みうるものであり、特許請求の範囲により特定される技術的思想を逸脱しない範囲内において種々の設計変更等を施すことが可能である。
【符号の説明】
【0075】
1、11 ソフトウェア開発支援装置
2、12 制御部
3、13 記憶部
4 入力部
5 表示部
21 ブロック図作成部
22 ソースコード生成部
23 CPU設定部
24 コンパイル部
25 処理時間算出部
26 判定部
27 分割部
31 プログラム要素記憶部
32 ブロック図記憶部
33 ソースコード記憶部
34 CPU情報記憶部
35 オブジェクトファイル記憶部
36 処理時間情報記憶部
37 分割情報記憶部
100、200、300、400、410、700 表示画面
101 ファイルボタン
102 プログラム要素選択ボタン
103 接続ボタン
104 ソースコード生成ボタン
105 CPU設定ボタン
106 コンパイルボタン
107 処理時間確認ボタン
201、701 ブロック図
211、212、213、214、215、216 プログラム要素
221、222、223、224、225 接続線
231、232、233、234、235、236 算出結果表示ボックス
301、411 処理時間解析結果テーブル
302、401、412 制約情報
500、600 タスク管理ソースコード
T1、T2、T3 閉領域
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14