【文献】
滝沢聡毅、徳田寛和,パワーエレクトロニクス装置設計の高度化技術,富士時報,日本,富士電機ホールディングス株式会社,2007年 3月10日,第80巻,第2号(通巻843号),pp.108-109,ISSN 0367-3332
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【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】
このように、本発明は、ここでは記載していない様々な実施の形態等を含みうるものであり、特許請求の範囲により特定される技術的思想を逸脱しない範囲内において種々の設計変更等を施すことが可能である。