JP2004021308A - プログラム作成支援装置、プログラム作成支援プログラム及び記録媒体 - Google Patents
プログラム作成支援装置、プログラム作成支援プログラム及び記録媒体 Download PDFInfo
- Publication number
- JP2004021308A JP2004021308A JP2002171508A JP2002171508A JP2004021308A JP 2004021308 A JP2004021308 A JP 2004021308A JP 2002171508 A JP2002171508 A JP 2002171508A JP 2002171508 A JP2002171508 A JP 2002171508A JP 2004021308 A JP2004021308 A JP 2004021308A
- Authority
- JP
- Japan
- Prior art keywords
- program
- unit
- execution order
- function
- order
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
【課題】単位プログラムの実行順序が誤って設定されることを防止する。
【解決手段】このプログラム作成支援装置10は、複数の関数(単位プログラム)A〜Fとこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込み、適正な実行順序に修正したプログラム(メインルーチン)を出力する処理を行う。具体的には、各関数について、その関数の処理の中に当該関数以外の他の関数にて算出される変数を参照して行う処理が含まれているか否かを調査して、変数を参照する関数が、その変数を算出する関数より後で実行される実行順序を求める。例えば、関数Bに含まれる代入式「b=f(d)」で参照される変数「d」は、関数Dで算出される変数であるため、関数Bが関数Dより後で実行されるように実行順序を修正する。これにより、複数の関数が適正な実行順序で実行されるようにプログラムを修正することができる。
【選択図】 図2
【解決手段】このプログラム作成支援装置10は、複数の関数(単位プログラム)A〜Fとこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込み、適正な実行順序に修正したプログラム(メインルーチン)を出力する処理を行う。具体的には、各関数について、その関数の処理の中に当該関数以外の他の関数にて算出される変数を参照して行う処理が含まれているか否かを調査して、変数を参照する関数が、その変数を算出する関数より後で実行される実行順序を求める。例えば、関数Bに含まれる代入式「b=f(d)」で参照される変数「d」は、関数Dで算出される変数であるため、関数Bが関数Dより後で実行されるように実行順序を修正する。これにより、複数の関数が適正な実行順序で実行されるようにプログラムを修正することができる。
【選択図】 図2
Description
【0001】
【発明の属する技術分野】
本発明は、複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を容易にするための技術に関するものである。
【0002】
【従来の技術】
従来より、例えば、自動車のエンジンを制御する電子制御装置においては、マイクロコンピュータ(以下、マイコンという)が、記憶しているプログラムに従いエンジン制御のための処理を行うようになっている。例えば、180°CA毎に実行するプログラムにて、吸気管圧変化量を演算する処理や、この吸気管圧変化量に基づき加減速時燃料補正量を演算する処理等を行う。尚、「CA」とはクランク軸の回転角度(クランクアングル)を示しており、180°CAとは、クランク軸の180°分の回転角度を意味する。
【0003】
また一般に、こうしたプログラムは、処理内容毎の単位プログラム(C言語では、関数と呼ばれる)に分けられている。前述した例で言えば、吸気管圧変化量を演算する単位プログラム、加減速時燃料補正量を演算する単位プログラム、…という具合である。そして、各単位プログラムは、あるルーチンにて予め設定されている順序で実行されるようになっており、この例のように、加減速時燃料補正量が吸気管圧変化量に基づいて演算されるような場合には、加減速時燃料補正量を演算する単位プログラムが吸気管圧変化量を演算する単位プログラムよりも後で実行されるような順序に設定される。
【0004】
【発明が解決しようとする課題】
ここで、単位プログラムの実行順序を設定するのはプログラマーであり、プログラマーが誤った実行順序を設定してしまうことも起こり得る。そして、例えば、加減速時燃料補正量を演算する単位プログラムが、吸気管圧変化量を演算する単位プログラムよりも前に実行されるような順序に設定されると、加減速時燃料補正量が、180°CA前に演算された吸気管圧変化量に基づいて演算されることとなり、燃料補正の遅れによる加速の応答遅れを招いてしまう。
【0005】
本発明は、こうした問題に鑑みなされたものであり、単位プログラムの実行順序が誤って設定されることを防止することを目的としている。
【0006】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項1に記載のプログラム作成支援装置は、複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を支援するためのものである。そして、本装置では、検査手段が、各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査し、検査手段により他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると判断された単位プログラムが、その算出値を算出する単位プログラムより後で実行される複数の単位プログラムの実行順序を、順序算出手段が求める。
【0007】
このような請求項1のプログラム作成支援装置によれば、複数の単位プログラムの適正な実行順序を確実に求めることができる。そのため、こうして求められた実行順序に基づきプログラマーがプログラムの作成や修正を行うようにすれば、誤った実行順序が設定されてしまうことを防ぐことができ、その結果、複数の単位処理が正しい順序で行われるようにすることができる。
【0008】
ところで、順序算出手段は、複数の単位プログラムの適正な実行順序を、例えば請求項2に記載の如く、下記(a1)〜(a3)の手順で求めるように構成することができる。
(a1):複数の単位プログラムについて任意の実行順序を定める。
【0009】
(a2):複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
【0010】
(a3):複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記(a2)の手順を繰り返す。
このように構成すれば、適正な実行順序を簡単且つ確実に求めることができる。
【0011】
次に、請求項3に記載のプログラム作成支援装置は、作成手段を備えており、この作成手段が、複数の単位プログラムを順序算出手段により求められた実行順序で実行するプログラムを作成する。このプログラム作成支援装置によれば、順序算出手段により求められた適正な実行順序に基づくプログラムの作成や修正をわざわざプログラマーが行う必要が無くなるため、プログラマーの負担を軽減することができる。
【0012】
一方、請求項4に記載のプログラム作成支援プログラムは、複数の単位処理を所定の順序で行うプログラムの作成を支援するためのプログラム作成支援装置として、コンピュータを機能させるためのものである。そして特に、本プログラム作成支援プログラムは、各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査する検査手段と、検査手段により他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると判断された単位プログラムが、その算出値を算出する単位プログラムより後で実行される複数の単位プログラムの実行順序を求める順序算出手段として、コンピュータを機能させることを特徴としている。そのため、このプログラム作成支援プログラムによれば、上記請求項1の装置について述べた効果と同様の効果を得ることができる。
【0013】
また、請求項5に記載のプログラム作成支援プログラムは、順序算出手段が、下記(b1)〜(b3)の手順で実行順序を求めることを特徴としている。
(b1):複数の単位プログラムについて任意の実行順序を定める。
(b2):複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
【0014】
(b3):複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記(b2)の手順を繰り返す。
このような請求項5のプログラム作成支援プログラムによれば、上記請求項2の装置について述べた効果と同様の効果を得ることができる。
【0015】
また更に、請求項6に記載のプログラム作成支援プログラムは、コンピュータを、複数の単位プログラムを順序算出手段により求められた実行順序で実行するプログラムを作成する作成手段としても機能させることを特徴としている。そのため、このプログラム作成支援プログラムによれば、上記請求項3の装置について述べた効果と同様の効果を得ることができる。
【0016】
尚、請求項4〜6のプログラム作成支援プログラムは、請求項7に記載のように、コンピュータ読み取り可能な記録媒体に記録されていてもよく、このような記録媒体によれば、所望のコンピュータを、請求項1〜3に記載のプログラム作成支援装置として機能させることができる。
【0017】
【発明の実施の形態】
以下、本発明が適用された実施形態について、図面を用いて説明する。
まず図1は、実施形態のプログラム作成支援装置のハードウェア構成としてのパーソナルコンピュータ(以下、パソコンという)2の外観図である。尚、パソコン2は、図示しないが、外部からの入力操作を受け付けるためのキーボードやマウス等を備えている。
【0018】
このパソコン2には、記録媒体(例えば、CD−ROM,CD−R,フロッピー(登録商標)ディスク等)4に予め記録されていたプログラム作成支援プログラムが内部のハードディスクにインストールされており、本パソコン2は、そのプログラム作成支援プログラムを実行することにより、後述する図2のプログラム作成支援装置10として機能する。
【0019】
そして、このパソコン2からなる本実施形態のプログラム作成支援装置10(換言すれば、プログラム作成支援装置として機能するパソコン2)は、プログラマーによって作成されたC言語のソースプログラムが記録された記録媒体(例えば、フロッピー(登録商標)ディスク,CD−R等)6からそのソースプログラムを読み込み、このプログラムを構成する複数の関数(単位プログラムに相当)の実行順序が誤って設定されている場合に、その順序を適正な実行順序に修正する処理を行う。
【0020】
尚、本プログラム作成支援装置10が処理対象とするソースプログラムとしては、例えば、自動車のエンジンを制御する電子制御装置のマイコンが実行するエンジン制御用プログラムが挙げられる。こうしたエンジン制御用プログラムは、関連性の高い処理毎に関数に分けられており、それら複数の関数がメインルーチンで設定された実行順序に従い実行されるようになっているが、プログラマーにより誤った実行順序が設定された場合には、エンジン制御のための処理が適正な順序で行われなくなるからである。
【0021】
次に、本実施形態のプログラム作成支援装置10の動作内容について説明する。
まず図2は、プログラム作成支援装置10の機能を表すブロック図である。
図2に示すように、プログラム作成支援装置10は、複数の関数(図2では、関数A〜F)とこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込み、その実行順序を適正な実行順序に修正したプログラム(メインルーチン)を出力する処理を行う。具体的には、入出力テーブル作成処理と、実行順序更新処理と、実行順序更新後プログラム作成処理とを行う。以下、各処理について説明する。
【0022】
まず、入出力テーブル作成処理について、図3のフローチャートを用いて説明する。
この入出力テーブル作成処理が開始されると、まずS100にて、処理対象となるソースプログラムをテキスト形式で参照し、このプログラムを構成する関数を一つ選択する。ここで、このS100の処理は、後述するS180の判定処理により、ソースプログラムを構成する全ての関数が選択されるまで繰り返し行われるようになっており、本処理では、各関数を、メインルーチンで定められている関数の実行順序と同一の順序で選択するようになっている。尚、関数を選択する順序がメインルーチンで定められている関数の実行順序と異なっていたとしても、最終的に得られる実行順序は同一である。
【0023】
続いて、S110では、現在選択している関数(即ち、S100にて選択した関数)についての情報を格納するための入出力テーブルを作成する。ここで作成する入出力テーブルは、図4に示すように、その関数の実行順序を格納するための実行順序格納領域と、その関数の中で行われる処理にて算出される変数(以下、算出変数という)を格納するための算出変数格納領域と、その関数の中で行われる処理にて参照される変数(以下、参照変数という)を格納するための参照変数格納領域とからなるものである。
【0024】
続いて、S120では、現在選択している関数に仮の実行順序を付与し、その実行順序をS110にて作成した入出力テーブルの実行順序格納領域に格納する。具体的には、最初に選択した関数の実行順序を「1」、次に選択した関数の実行順序を「2」、…というように、関数を選択した順に実行順序を付与する。このため、ソースプログラムのメインルーチンで設定されている実行順序と同じ実行順序が各関数に付与されることとなる。尚、前述したように、本入出力テーブル作成処理で関数に付与される実行順序がどのような順序であっても、最終的に得られる実行順序は同一である。
【0025】
続いて、S130では、現在選択している関数のプログラムを一行読み込む。続いて、S140では、S130にて読み込んだ行が代入式であるか否かを判定する。尚、ここで判定する代入式とは、例えば「a=f(k)」のように、ある参照変数(この例ではk)を、ある演算式(この例ではf(x)という関数)に当てはめて求めた演算結果を、ある算出変数(この例ではa)に代入する、といった式のことである。
【0026】
このS140で、読み込んだ行が代入式であると判定した場合には、S150へ移行し、この代入式の左辺の算出変数(例えば、代入式が「a=f(c)」の場合には「a」)を、S110にて作成した入出力テーブルの算出変数格納領域に格納する。そして更に、S160へ移行し、この代入式の右辺式中の参照変数(例えば、代入式が「a=f(k)」の場合には「k」)を、S110にて作成した入出力テーブルの参照変数格納領域に格納して、S170へ移行する。
【0027】
一方、S140で、読み込んだ行が代入式ではないと判定した場合には、そのままS170へ移行する。
S170では、現在選択している関数に、未だ読み込んでいない行が存在するか否かを判定する。
【0028】
そして、S170で、未だ読み込んでいない行が存在すると判定した場合には、S130へ戻り、その読み込んでいない行を一行読み込み、前述した処理(S140〜S160)を繰り返す。
一方、S170で、未だ読み込んでいない行が存在しないと判定した場合には、S180へ移行し、ソースプログラムを構成する関数の中に未だ選択されていない関数が存在するか否かを判定する。
【0029】
このS180で、未だ選択されていない関数が存在すると判定した場合には、S100へ戻り、その選択されていない関数を一つ選択し、前述した処理(S110〜S170)を繰り返す。
一方、S180で、未だ選択されていない関数が存在しないと判定した場合には、本入出力テーブル作成処理を終了する。
【0030】
以上のように、この入出力テーブル作成処理では、ソースプログラムを構成する全関数のそれぞれについて、その関数の実行順序とその関数に含まれる代入式の算出変数及び参照変数とを格納した図4の如き入出力テーブルを作成するようになっている。
【0031】
次に、実行順序更新処理について、図5のフローチャートを用いて説明する。尚、本実行順序更新処理は、前述した入出力テーブル作成処理の終了後に行われる。
この実行順序更新処理が開始されると、まずS200にて、実行順序が最も小さい関数を選択する。具体的には、各関数についての入出力テーブル(図4)を参照し、実行順序格納領域に格納されている実行順序が最も小さいものを選択する。
【0032】
続いて、S210では、現在選択している関数(即ち、S200にて選択した関数)についての入出力テーブルの参照変数格納領域に格納されている参照変数が、他の関数についての入出力テーブルの算出変数格納領域に存在するか否かを判定する。つまり、現在選択している関数の参照変数を算出変数とする関数が存在するか否かを判定するようになっている。
【0033】
そして、S210で、現在選択している関数の参照変数を算出変数とする関数が存在すると判定した場合には、S220へ移行し、その参照変数を算出変数とする関数(以下、参照変数算出関数という)の実行順序が、現在選択している関数の実行順序より小さいか否か(即ち、前であるか否か)を判定する。つまり、参照変数算出関数の実行順序が現在選択している関数の実行順序よりも小さい場合には、実行順序として適正であるが、逆の場合には、現在選択している関数で変数を参照して行う処理が、その変数を算出する参照変数算出関数より前に実行されることとなり、実行順序として適正ではないため、何れであるかを判定するのである。尚、参照変数算出関数が複数存在する場合には、そのうちの最も実行順序が大きい関数のみを対象とする。
【0034】
このS220で、参照変数算出関数の実行順序が現在選択している関数の実行順序より小さくない(即ち、大きいと)判定した場合には、S230へ移行する。そして、まず参照変数算出関数の実行順序より大きい実行順序の関数について、各関数の実行順序を、その実行順序に1を加算した値に更新する処理を行う。続いて、S240へ移行し、現在選択している関数の実行順序を、参照変数算出関数の実行順序に1を加算した値に更新し、S200へ戻る。つまり、S230,S240では、現在選択している関数の実行順序が参照変数算出関数の実行順序の直後となるように、各関数の実行順序を更新する処理を行うようになっている。
【0035】
一方、S220で、参照変数算出関数の実行順序が現在選択している関数の実行順序より小さいと判定した場合には、S250へ移行する。
また、S210で、現在選択している関数の参照変数を算出変数とする関数が存在しないと判定した場合にも、S250へ移行する。
【0036】
S250では、現在選択している関数の次に実行順序の小さい関数が存在するか否かを判定する。
そして、S250で、関数が存在すると判定した場合には、S260へ移行し、その関数を選択した後、S210へ移行し、前述した処理(S210〜S250)を繰り返す。
【0037】
一方、S250で、関数が存在しないと判定した場合には、本実行順序更新処理を終了する。
以上のように、この実行順序更新処理では、各関数の実行順序を、ある変数を参照する関数がその変数を算出する関数より後で実行される実行順序に修正する処理を行うようになっている。
【0038】
次に、実行順序更新後プログラム作成処理について、図6のフローチャートを用いて説明する。尚、本実行順序更新後プログラム作成処理は、前述した実行順序更新処理の終了後に行われる。
この実行順序更新後プログラム作成処理が開始されると、まずS300にて、ソースプログラムのメインルーチンを読み込む。
【0039】
続いて、S310では、前述した実行順序更新処理で修正した後の各関数の実行順序を、各関数についての入出力テーブルから読み込む。
そして、S320では、S310にて読み込んだ修正後の各関数の実行順序に従い、各関数が実行順序の小さいものから順に実行されるように、メインルーチンに記述されている関数の順序を入れ替える。
【0040】
最後に、S330では、S320にて関数の順序を入れ替えたメインルーチンを出力して、本実行順序更新後プログラム作成処理を終了する。
以上のように、この実行順序更新後プログラム作成処理では、ソースプログラムを構成する各関数が、実行順序更新処理で修正された適正な実行順序で実行される実行順序修正後のメインルーチンを、自動的に作成して出力するようになっている。
【0041】
次に、本プログラム作成支援装置10の作用について、図2に例示する関数A〜Fとこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込んだ場合を例に挙げて具体的に説明する。尚、以下の説明において、各関数に含まれる代入式は、図2に示したもののみとする。
【0042】
まず、この例の場合においては、読み込まれたソースプログラムのメインルーチン(実行順序修正前のメインルーチン)で定められている関数A〜Fの実行順序が、A→B→C→D→E→Fであるため、図3の入出力テーブル作成処理では、最初に関数Aが選択されて(S100)、この関数Aについての入出力テーブルが作成されると共に(S110)、仮の実行順序「1」が付与される(S120)。そして、関数Aに含まれる代入式「a=f(k)」の算出変数「a」,参照変数「k」が、作成された入出力テーブルの算出変数格納領域,参照変数格納領域に、それぞれ格納される(S130〜S170)。
【0043】
こうして関数Aについての処理が終了すると(S170:NO)、次に、関数Bが選択されて(S180:YES,S100)、関数Aの場合と同様に、この関数Bについての入出力テーブルが作成されると共に(S110)、仮の実行順序「2」が付与される(S120)。そして、関数Bに含まれる代入式「b=f(d)」の算出変数「b」,参照変数「d」が、作成された入出力テーブルの算出変数格納領域,参照変数格納領域に、それぞれ格納される(S130〜S170)。
【0044】
以後、このような処理が、残りの関数C〜Fの各々についても順に行われ、その結果、全ての関数A〜Fについて入出力テーブルが作成される。
そして、図3の入出力テーブル作成処理により、全ての関数A〜Fについて入出力テーブルが作成されると、図5の実行順序更新処理により、関数A〜Fの実行順序が図7のような経緯で修正されていくこととなる。
【0045】
即ち、まず、この例の場合において、図5の実行順序更新処理が開始された時点では、図7の1段目に示すように、関数A〜Fの各実行順序が「1,2,3,4,5,6」となっているため、図5のS200では、実行順序が最も小さい関数として、関数Aが選択される。
【0046】
そして、この関数Aについての入出力テーブルの参照変数格納領域に格納されている参照変数「k」が、他の関数についての入出力テーブルの算出変数格納領域に存在するか否かが判定される(S210)。
ここで、この場合、関数Aの参照変数「k」は、他の関数の算出変数として存在しないため(S210:NO)、関数Aについてのチェックは終了され、次に実行順序の小さい関数である関数Bが選択される(S250:YES,S260)。
【0047】
そして、関数Aの場合と同様に、この関数Bの参照変数「d」が、他の関数の算出変数として存在するか否かが判定されるが(S210)、この場合、関数Bの参照変数「d」は関数Dの算出変数として存在するため(S210:YES)、続いて、この関数Dの実行順序が関数Bの実行順序より小さいか否かが判定される(S220)。
【0048】
ここで、関数Dの実行順序「4」は関数Bの実行順序「2」よりも大きい(後である)ため(S220:NO)、この時点で関数Dよりも実行順序の大きい関数である関数E,Fの実行順序「5,6」が、S230の処理により、それぞれ1加算されて「6,7」に変更され、更に、S240の処理により、関数Bの実行順序が、関数Dの実行順序「4」に1を加算した「5」に変更される。
【0049】
これにより、図7の2段目に示すように、関数A〜Fの各実行順序が「1,5,3,4,6,7」と更新される。
このようにS230及びS240の処理で実行順序が更新されると、次に、図5のS200にて、改めて実行順序の最も小さい関数が選択される。
【0050】
ここで、この時点でも、実行順序が最も小さいのは関数Aであり、前述したように、関数Aの参照変数「k」は、他の関数の算出変数として存在しないため(S210:NO)、S250及びS260の処理により、次に実行順序の小さい関数が選択されるが、この場合には、次に実行順序の小さい関数として、関数Cが選択されることとなる。
【0051】
そして、この関数Cの参照変数「f」が、他の関数の算出変数として存在するか否かが判定されるが(S210)、この場合、関数Cの参照変数「f」は関数Fの算出変数として存在するため(S210:YES)、続いて、この関数Fの実行順序が関数Cの実行順序より小さいか否かが判定される(S220)。
【0052】
ここで、この時点において、関数Fの実行順序「7」は関数Cの実行順序「3」よりも大きいため(S220:NO)、S240の処理により、関数Cの実行順序が、関数Fの実行順序「7」に1を加算した「8」に変更される。
これにより、図7の3段目に示すように、関数A〜Fの各実行順序が「1,5,8,4,6,7」と更新される。尚、この場合にS230の処理が行われないのは、関数Fよりも実行順序の大きい関数が存在しないからである。
【0053】
そして、このような処理が繰り返されることで、最終的に、関数A〜Fの各実行順序が、図7の最終段に示す如く「1,13,10,12,11,9」と修正されることとなる。
最後に、このようにして修正された実行順序で各関数を実行するメインルーチンが、図6の処理により作成されて出力される(S300〜S330)。これにより、関数の実行順序が「A,B,C,D,E,F」→「A,F,C,E,D,B」と修正される。
【0054】
尚、本実施形態のプログラム作成支援装置10では、図5におけるS210の処理が、検査手段に相当し、図3におけるS120の処理と、図5におけるS200,S220〜S260の処理とが、順序算出手段に相当し、図6におけるS300〜S330の処理が、作成手段に相当している。
【0055】
このような本実施形態のプログラム作成支援装置10によれば、他の関数で算出される変数を参照する関数がその変数を算出する関数より前で実行されるような誤った実行順序が設定されたプログラムを、各関数が適正な順序で実行されるように確実に修正することができる。そのため、誤った実行順序が設定されたプログラムにより正しい順序で処理が行われないといったことを防ぐことができる。
【0056】
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
例えば、上記実施形態のプログラム作成支援装置10では、関数の適正な実行順序を求め、その実行順序となるようにプログラムを修正して出力するようになっているが、これに限ったものではない。例えば、関数の適正な実行順序を求め、その実行順序をプログラマーに単に報知(画面表示等)するだけの構成であっても、報知された適正な実行順序に基づきプログラマーがプログラムの作成や修正を行うことができる。
【0057】
また、ソースプログラムとして関数のみを読み込み、これらを適正な順序で実行するメインルーチンを新たに作成する構成であってもよい。例えば、この場合には、以下のように構成すれば良い。
即ち、前述した入出力テーブル作成処理(図3)におけるS100で、各関数を、メインルーチンで定められている実行順序ではなく、単に関数を読み込んだ順序で選択するようにする。また、前述した実行順序更新後プログラム作成処理(図6)においては、まず、S300のメインルーチンを読み込む処理が不要となる。そして、S320では、修正後の各関数の実行順序に従い、メインルーチンに記述されている関数の順序を入れ替えるのではなく、新たにメインルーチンを作成するようにし、更に、S330では、S320にて新たに作成したメインルーチンを出力するようにする。
【0058】
そして、この構成によれば、プログラマーがメインルーチンを作成する必要が無くなる分、その負担を軽減することができる。
【図面の簡単な説明】
【図1】実施形態のプログラム作成支援装置の外観図である。
【図2】実施形態のプログラム作成支援装置の機能を表すブロック図である。
【図3】入出力テーブル作成処理のフローチャートである。
【図4】入出力テーブルを説明するための説明図である。
【図5】実行順序更新処理のフローチャートである。
【図6】実行順序更新後プログラム作成処理のフローチャートである。
【図7】実行順序の修正処理を説明するための説明図である。
【符号の説明】
2…パソコン、4,6…記録媒体、10…プログラム作成支援装置
【発明の属する技術分野】
本発明は、複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を容易にするための技術に関するものである。
【0002】
【従来の技術】
従来より、例えば、自動車のエンジンを制御する電子制御装置においては、マイクロコンピュータ(以下、マイコンという)が、記憶しているプログラムに従いエンジン制御のための処理を行うようになっている。例えば、180°CA毎に実行するプログラムにて、吸気管圧変化量を演算する処理や、この吸気管圧変化量に基づき加減速時燃料補正量を演算する処理等を行う。尚、「CA」とはクランク軸の回転角度(クランクアングル)を示しており、180°CAとは、クランク軸の180°分の回転角度を意味する。
【0003】
また一般に、こうしたプログラムは、処理内容毎の単位プログラム(C言語では、関数と呼ばれる)に分けられている。前述した例で言えば、吸気管圧変化量を演算する単位プログラム、加減速時燃料補正量を演算する単位プログラム、…という具合である。そして、各単位プログラムは、あるルーチンにて予め設定されている順序で実行されるようになっており、この例のように、加減速時燃料補正量が吸気管圧変化量に基づいて演算されるような場合には、加減速時燃料補正量を演算する単位プログラムが吸気管圧変化量を演算する単位プログラムよりも後で実行されるような順序に設定される。
【0004】
【発明が解決しようとする課題】
ここで、単位プログラムの実行順序を設定するのはプログラマーであり、プログラマーが誤った実行順序を設定してしまうことも起こり得る。そして、例えば、加減速時燃料補正量を演算する単位プログラムが、吸気管圧変化量を演算する単位プログラムよりも前に実行されるような順序に設定されると、加減速時燃料補正量が、180°CA前に演算された吸気管圧変化量に基づいて演算されることとなり、燃料補正の遅れによる加速の応答遅れを招いてしまう。
【0005】
本発明は、こうした問題に鑑みなされたものであり、単位プログラムの実行順序が誤って設定されることを防止することを目的としている。
【0006】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項1に記載のプログラム作成支援装置は、複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を支援するためのものである。そして、本装置では、検査手段が、各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査し、検査手段により他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると判断された単位プログラムが、その算出値を算出する単位プログラムより後で実行される複数の単位プログラムの実行順序を、順序算出手段が求める。
【0007】
このような請求項1のプログラム作成支援装置によれば、複数の単位プログラムの適正な実行順序を確実に求めることができる。そのため、こうして求められた実行順序に基づきプログラマーがプログラムの作成や修正を行うようにすれば、誤った実行順序が設定されてしまうことを防ぐことができ、その結果、複数の単位処理が正しい順序で行われるようにすることができる。
【0008】
ところで、順序算出手段は、複数の単位プログラムの適正な実行順序を、例えば請求項2に記載の如く、下記(a1)〜(a3)の手順で求めるように構成することができる。
(a1):複数の単位プログラムについて任意の実行順序を定める。
【0009】
(a2):複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
【0010】
(a3):複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記(a2)の手順を繰り返す。
このように構成すれば、適正な実行順序を簡単且つ確実に求めることができる。
【0011】
次に、請求項3に記載のプログラム作成支援装置は、作成手段を備えており、この作成手段が、複数の単位プログラムを順序算出手段により求められた実行順序で実行するプログラムを作成する。このプログラム作成支援装置によれば、順序算出手段により求められた適正な実行順序に基づくプログラムの作成や修正をわざわざプログラマーが行う必要が無くなるため、プログラマーの負担を軽減することができる。
【0012】
一方、請求項4に記載のプログラム作成支援プログラムは、複数の単位処理を所定の順序で行うプログラムの作成を支援するためのプログラム作成支援装置として、コンピュータを機能させるためのものである。そして特に、本プログラム作成支援プログラムは、各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査する検査手段と、検査手段により他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると判断された単位プログラムが、その算出値を算出する単位プログラムより後で実行される複数の単位プログラムの実行順序を求める順序算出手段として、コンピュータを機能させることを特徴としている。そのため、このプログラム作成支援プログラムによれば、上記請求項1の装置について述べた効果と同様の効果を得ることができる。
【0013】
また、請求項5に記載のプログラム作成支援プログラムは、順序算出手段が、下記(b1)〜(b3)の手順で実行順序を求めることを特徴としている。
(b1):複数の単位プログラムについて任意の実行順序を定める。
(b2):複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
【0014】
(b3):複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記(b2)の手順を繰り返す。
このような請求項5のプログラム作成支援プログラムによれば、上記請求項2の装置について述べた効果と同様の効果を得ることができる。
【0015】
また更に、請求項6に記載のプログラム作成支援プログラムは、コンピュータを、複数の単位プログラムを順序算出手段により求められた実行順序で実行するプログラムを作成する作成手段としても機能させることを特徴としている。そのため、このプログラム作成支援プログラムによれば、上記請求項3の装置について述べた効果と同様の効果を得ることができる。
【0016】
尚、請求項4〜6のプログラム作成支援プログラムは、請求項7に記載のように、コンピュータ読み取り可能な記録媒体に記録されていてもよく、このような記録媒体によれば、所望のコンピュータを、請求項1〜3に記載のプログラム作成支援装置として機能させることができる。
【0017】
【発明の実施の形態】
以下、本発明が適用された実施形態について、図面を用いて説明する。
まず図1は、実施形態のプログラム作成支援装置のハードウェア構成としてのパーソナルコンピュータ(以下、パソコンという)2の外観図である。尚、パソコン2は、図示しないが、外部からの入力操作を受け付けるためのキーボードやマウス等を備えている。
【0018】
このパソコン2には、記録媒体(例えば、CD−ROM,CD−R,フロッピー(登録商標)ディスク等)4に予め記録されていたプログラム作成支援プログラムが内部のハードディスクにインストールされており、本パソコン2は、そのプログラム作成支援プログラムを実行することにより、後述する図2のプログラム作成支援装置10として機能する。
【0019】
そして、このパソコン2からなる本実施形態のプログラム作成支援装置10(換言すれば、プログラム作成支援装置として機能するパソコン2)は、プログラマーによって作成されたC言語のソースプログラムが記録された記録媒体(例えば、フロッピー(登録商標)ディスク,CD−R等)6からそのソースプログラムを読み込み、このプログラムを構成する複数の関数(単位プログラムに相当)の実行順序が誤って設定されている場合に、その順序を適正な実行順序に修正する処理を行う。
【0020】
尚、本プログラム作成支援装置10が処理対象とするソースプログラムとしては、例えば、自動車のエンジンを制御する電子制御装置のマイコンが実行するエンジン制御用プログラムが挙げられる。こうしたエンジン制御用プログラムは、関連性の高い処理毎に関数に分けられており、それら複数の関数がメインルーチンで設定された実行順序に従い実行されるようになっているが、プログラマーにより誤った実行順序が設定された場合には、エンジン制御のための処理が適正な順序で行われなくなるからである。
【0021】
次に、本実施形態のプログラム作成支援装置10の動作内容について説明する。
まず図2は、プログラム作成支援装置10の機能を表すブロック図である。
図2に示すように、プログラム作成支援装置10は、複数の関数(図2では、関数A〜F)とこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込み、その実行順序を適正な実行順序に修正したプログラム(メインルーチン)を出力する処理を行う。具体的には、入出力テーブル作成処理と、実行順序更新処理と、実行順序更新後プログラム作成処理とを行う。以下、各処理について説明する。
【0022】
まず、入出力テーブル作成処理について、図3のフローチャートを用いて説明する。
この入出力テーブル作成処理が開始されると、まずS100にて、処理対象となるソースプログラムをテキスト形式で参照し、このプログラムを構成する関数を一つ選択する。ここで、このS100の処理は、後述するS180の判定処理により、ソースプログラムを構成する全ての関数が選択されるまで繰り返し行われるようになっており、本処理では、各関数を、メインルーチンで定められている関数の実行順序と同一の順序で選択するようになっている。尚、関数を選択する順序がメインルーチンで定められている関数の実行順序と異なっていたとしても、最終的に得られる実行順序は同一である。
【0023】
続いて、S110では、現在選択している関数(即ち、S100にて選択した関数)についての情報を格納するための入出力テーブルを作成する。ここで作成する入出力テーブルは、図4に示すように、その関数の実行順序を格納するための実行順序格納領域と、その関数の中で行われる処理にて算出される変数(以下、算出変数という)を格納するための算出変数格納領域と、その関数の中で行われる処理にて参照される変数(以下、参照変数という)を格納するための参照変数格納領域とからなるものである。
【0024】
続いて、S120では、現在選択している関数に仮の実行順序を付与し、その実行順序をS110にて作成した入出力テーブルの実行順序格納領域に格納する。具体的には、最初に選択した関数の実行順序を「1」、次に選択した関数の実行順序を「2」、…というように、関数を選択した順に実行順序を付与する。このため、ソースプログラムのメインルーチンで設定されている実行順序と同じ実行順序が各関数に付与されることとなる。尚、前述したように、本入出力テーブル作成処理で関数に付与される実行順序がどのような順序であっても、最終的に得られる実行順序は同一である。
【0025】
続いて、S130では、現在選択している関数のプログラムを一行読み込む。続いて、S140では、S130にて読み込んだ行が代入式であるか否かを判定する。尚、ここで判定する代入式とは、例えば「a=f(k)」のように、ある参照変数(この例ではk)を、ある演算式(この例ではf(x)という関数)に当てはめて求めた演算結果を、ある算出変数(この例ではa)に代入する、といった式のことである。
【0026】
このS140で、読み込んだ行が代入式であると判定した場合には、S150へ移行し、この代入式の左辺の算出変数(例えば、代入式が「a=f(c)」の場合には「a」)を、S110にて作成した入出力テーブルの算出変数格納領域に格納する。そして更に、S160へ移行し、この代入式の右辺式中の参照変数(例えば、代入式が「a=f(k)」の場合には「k」)を、S110にて作成した入出力テーブルの参照変数格納領域に格納して、S170へ移行する。
【0027】
一方、S140で、読み込んだ行が代入式ではないと判定した場合には、そのままS170へ移行する。
S170では、現在選択している関数に、未だ読み込んでいない行が存在するか否かを判定する。
【0028】
そして、S170で、未だ読み込んでいない行が存在すると判定した場合には、S130へ戻り、その読み込んでいない行を一行読み込み、前述した処理(S140〜S160)を繰り返す。
一方、S170で、未だ読み込んでいない行が存在しないと判定した場合には、S180へ移行し、ソースプログラムを構成する関数の中に未だ選択されていない関数が存在するか否かを判定する。
【0029】
このS180で、未だ選択されていない関数が存在すると判定した場合には、S100へ戻り、その選択されていない関数を一つ選択し、前述した処理(S110〜S170)を繰り返す。
一方、S180で、未だ選択されていない関数が存在しないと判定した場合には、本入出力テーブル作成処理を終了する。
【0030】
以上のように、この入出力テーブル作成処理では、ソースプログラムを構成する全関数のそれぞれについて、その関数の実行順序とその関数に含まれる代入式の算出変数及び参照変数とを格納した図4の如き入出力テーブルを作成するようになっている。
【0031】
次に、実行順序更新処理について、図5のフローチャートを用いて説明する。尚、本実行順序更新処理は、前述した入出力テーブル作成処理の終了後に行われる。
この実行順序更新処理が開始されると、まずS200にて、実行順序が最も小さい関数を選択する。具体的には、各関数についての入出力テーブル(図4)を参照し、実行順序格納領域に格納されている実行順序が最も小さいものを選択する。
【0032】
続いて、S210では、現在選択している関数(即ち、S200にて選択した関数)についての入出力テーブルの参照変数格納領域に格納されている参照変数が、他の関数についての入出力テーブルの算出変数格納領域に存在するか否かを判定する。つまり、現在選択している関数の参照変数を算出変数とする関数が存在するか否かを判定するようになっている。
【0033】
そして、S210で、現在選択している関数の参照変数を算出変数とする関数が存在すると判定した場合には、S220へ移行し、その参照変数を算出変数とする関数(以下、参照変数算出関数という)の実行順序が、現在選択している関数の実行順序より小さいか否か(即ち、前であるか否か)を判定する。つまり、参照変数算出関数の実行順序が現在選択している関数の実行順序よりも小さい場合には、実行順序として適正であるが、逆の場合には、現在選択している関数で変数を参照して行う処理が、その変数を算出する参照変数算出関数より前に実行されることとなり、実行順序として適正ではないため、何れであるかを判定するのである。尚、参照変数算出関数が複数存在する場合には、そのうちの最も実行順序が大きい関数のみを対象とする。
【0034】
このS220で、参照変数算出関数の実行順序が現在選択している関数の実行順序より小さくない(即ち、大きいと)判定した場合には、S230へ移行する。そして、まず参照変数算出関数の実行順序より大きい実行順序の関数について、各関数の実行順序を、その実行順序に1を加算した値に更新する処理を行う。続いて、S240へ移行し、現在選択している関数の実行順序を、参照変数算出関数の実行順序に1を加算した値に更新し、S200へ戻る。つまり、S230,S240では、現在選択している関数の実行順序が参照変数算出関数の実行順序の直後となるように、各関数の実行順序を更新する処理を行うようになっている。
【0035】
一方、S220で、参照変数算出関数の実行順序が現在選択している関数の実行順序より小さいと判定した場合には、S250へ移行する。
また、S210で、現在選択している関数の参照変数を算出変数とする関数が存在しないと判定した場合にも、S250へ移行する。
【0036】
S250では、現在選択している関数の次に実行順序の小さい関数が存在するか否かを判定する。
そして、S250で、関数が存在すると判定した場合には、S260へ移行し、その関数を選択した後、S210へ移行し、前述した処理(S210〜S250)を繰り返す。
【0037】
一方、S250で、関数が存在しないと判定した場合には、本実行順序更新処理を終了する。
以上のように、この実行順序更新処理では、各関数の実行順序を、ある変数を参照する関数がその変数を算出する関数より後で実行される実行順序に修正する処理を行うようになっている。
【0038】
次に、実行順序更新後プログラム作成処理について、図6のフローチャートを用いて説明する。尚、本実行順序更新後プログラム作成処理は、前述した実行順序更新処理の終了後に行われる。
この実行順序更新後プログラム作成処理が開始されると、まずS300にて、ソースプログラムのメインルーチンを読み込む。
【0039】
続いて、S310では、前述した実行順序更新処理で修正した後の各関数の実行順序を、各関数についての入出力テーブルから読み込む。
そして、S320では、S310にて読み込んだ修正後の各関数の実行順序に従い、各関数が実行順序の小さいものから順に実行されるように、メインルーチンに記述されている関数の順序を入れ替える。
【0040】
最後に、S330では、S320にて関数の順序を入れ替えたメインルーチンを出力して、本実行順序更新後プログラム作成処理を終了する。
以上のように、この実行順序更新後プログラム作成処理では、ソースプログラムを構成する各関数が、実行順序更新処理で修正された適正な実行順序で実行される実行順序修正後のメインルーチンを、自動的に作成して出力するようになっている。
【0041】
次に、本プログラム作成支援装置10の作用について、図2に例示する関数A〜Fとこれらの実行順序を定めるメインルーチンとからなるソースプログラムを読み込んだ場合を例に挙げて具体的に説明する。尚、以下の説明において、各関数に含まれる代入式は、図2に示したもののみとする。
【0042】
まず、この例の場合においては、読み込まれたソースプログラムのメインルーチン(実行順序修正前のメインルーチン)で定められている関数A〜Fの実行順序が、A→B→C→D→E→Fであるため、図3の入出力テーブル作成処理では、最初に関数Aが選択されて(S100)、この関数Aについての入出力テーブルが作成されると共に(S110)、仮の実行順序「1」が付与される(S120)。そして、関数Aに含まれる代入式「a=f(k)」の算出変数「a」,参照変数「k」が、作成された入出力テーブルの算出変数格納領域,参照変数格納領域に、それぞれ格納される(S130〜S170)。
【0043】
こうして関数Aについての処理が終了すると(S170:NO)、次に、関数Bが選択されて(S180:YES,S100)、関数Aの場合と同様に、この関数Bについての入出力テーブルが作成されると共に(S110)、仮の実行順序「2」が付与される(S120)。そして、関数Bに含まれる代入式「b=f(d)」の算出変数「b」,参照変数「d」が、作成された入出力テーブルの算出変数格納領域,参照変数格納領域に、それぞれ格納される(S130〜S170)。
【0044】
以後、このような処理が、残りの関数C〜Fの各々についても順に行われ、その結果、全ての関数A〜Fについて入出力テーブルが作成される。
そして、図3の入出力テーブル作成処理により、全ての関数A〜Fについて入出力テーブルが作成されると、図5の実行順序更新処理により、関数A〜Fの実行順序が図7のような経緯で修正されていくこととなる。
【0045】
即ち、まず、この例の場合において、図5の実行順序更新処理が開始された時点では、図7の1段目に示すように、関数A〜Fの各実行順序が「1,2,3,4,5,6」となっているため、図5のS200では、実行順序が最も小さい関数として、関数Aが選択される。
【0046】
そして、この関数Aについての入出力テーブルの参照変数格納領域に格納されている参照変数「k」が、他の関数についての入出力テーブルの算出変数格納領域に存在するか否かが判定される(S210)。
ここで、この場合、関数Aの参照変数「k」は、他の関数の算出変数として存在しないため(S210:NO)、関数Aについてのチェックは終了され、次に実行順序の小さい関数である関数Bが選択される(S250:YES,S260)。
【0047】
そして、関数Aの場合と同様に、この関数Bの参照変数「d」が、他の関数の算出変数として存在するか否かが判定されるが(S210)、この場合、関数Bの参照変数「d」は関数Dの算出変数として存在するため(S210:YES)、続いて、この関数Dの実行順序が関数Bの実行順序より小さいか否かが判定される(S220)。
【0048】
ここで、関数Dの実行順序「4」は関数Bの実行順序「2」よりも大きい(後である)ため(S220:NO)、この時点で関数Dよりも実行順序の大きい関数である関数E,Fの実行順序「5,6」が、S230の処理により、それぞれ1加算されて「6,7」に変更され、更に、S240の処理により、関数Bの実行順序が、関数Dの実行順序「4」に1を加算した「5」に変更される。
【0049】
これにより、図7の2段目に示すように、関数A〜Fの各実行順序が「1,5,3,4,6,7」と更新される。
このようにS230及びS240の処理で実行順序が更新されると、次に、図5のS200にて、改めて実行順序の最も小さい関数が選択される。
【0050】
ここで、この時点でも、実行順序が最も小さいのは関数Aであり、前述したように、関数Aの参照変数「k」は、他の関数の算出変数として存在しないため(S210:NO)、S250及びS260の処理により、次に実行順序の小さい関数が選択されるが、この場合には、次に実行順序の小さい関数として、関数Cが選択されることとなる。
【0051】
そして、この関数Cの参照変数「f」が、他の関数の算出変数として存在するか否かが判定されるが(S210)、この場合、関数Cの参照変数「f」は関数Fの算出変数として存在するため(S210:YES)、続いて、この関数Fの実行順序が関数Cの実行順序より小さいか否かが判定される(S220)。
【0052】
ここで、この時点において、関数Fの実行順序「7」は関数Cの実行順序「3」よりも大きいため(S220:NO)、S240の処理により、関数Cの実行順序が、関数Fの実行順序「7」に1を加算した「8」に変更される。
これにより、図7の3段目に示すように、関数A〜Fの各実行順序が「1,5,8,4,6,7」と更新される。尚、この場合にS230の処理が行われないのは、関数Fよりも実行順序の大きい関数が存在しないからである。
【0053】
そして、このような処理が繰り返されることで、最終的に、関数A〜Fの各実行順序が、図7の最終段に示す如く「1,13,10,12,11,9」と修正されることとなる。
最後に、このようにして修正された実行順序で各関数を実行するメインルーチンが、図6の処理により作成されて出力される(S300〜S330)。これにより、関数の実行順序が「A,B,C,D,E,F」→「A,F,C,E,D,B」と修正される。
【0054】
尚、本実施形態のプログラム作成支援装置10では、図5におけるS210の処理が、検査手段に相当し、図3におけるS120の処理と、図5におけるS200,S220〜S260の処理とが、順序算出手段に相当し、図6におけるS300〜S330の処理が、作成手段に相当している。
【0055】
このような本実施形態のプログラム作成支援装置10によれば、他の関数で算出される変数を参照する関数がその変数を算出する関数より前で実行されるような誤った実行順序が設定されたプログラムを、各関数が適正な順序で実行されるように確実に修正することができる。そのため、誤った実行順序が設定されたプログラムにより正しい順序で処理が行われないといったことを防ぐことができる。
【0056】
以上、本発明の一実施形態について説明したが、本発明は、種々の形態を採り得ることは言うまでもない。
例えば、上記実施形態のプログラム作成支援装置10では、関数の適正な実行順序を求め、その実行順序となるようにプログラムを修正して出力するようになっているが、これに限ったものではない。例えば、関数の適正な実行順序を求め、その実行順序をプログラマーに単に報知(画面表示等)するだけの構成であっても、報知された適正な実行順序に基づきプログラマーがプログラムの作成や修正を行うことができる。
【0057】
また、ソースプログラムとして関数のみを読み込み、これらを適正な順序で実行するメインルーチンを新たに作成する構成であってもよい。例えば、この場合には、以下のように構成すれば良い。
即ち、前述した入出力テーブル作成処理(図3)におけるS100で、各関数を、メインルーチンで定められている実行順序ではなく、単に関数を読み込んだ順序で選択するようにする。また、前述した実行順序更新後プログラム作成処理(図6)においては、まず、S300のメインルーチンを読み込む処理が不要となる。そして、S320では、修正後の各関数の実行順序に従い、メインルーチンに記述されている関数の順序を入れ替えるのではなく、新たにメインルーチンを作成するようにし、更に、S330では、S320にて新たに作成したメインルーチンを出力するようにする。
【0058】
そして、この構成によれば、プログラマーがメインルーチンを作成する必要が無くなる分、その負担を軽減することができる。
【図面の簡単な説明】
【図1】実施形態のプログラム作成支援装置の外観図である。
【図2】実施形態のプログラム作成支援装置の機能を表すブロック図である。
【図3】入出力テーブル作成処理のフローチャートである。
【図4】入出力テーブルを説明するための説明図である。
【図5】実行順序更新処理のフローチャートである。
【図6】実行順序更新後プログラム作成処理のフローチャートである。
【図7】実行順序の修正処理を説明するための説明図である。
【符号の説明】
2…パソコン、4,6…記録媒体、10…プログラム作成支援装置
Claims (7)
- 複数の単位処理を所定の順序でコンピュータに行わせるプログラムの作成を支援するためのプログラム作成支援装置であって、
前記各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査する検査手段と、
前記検査手段により前記算出値を参照して行う処理が含まれていると判断された単位プログラムが、該算出値を算出する単位プログラムより後で実行される前記複数の単位プログラムの実行順序を求める順序算出手段と、
を備えたことを特徴とするプログラム作成支援装置。 - 請求項1に記載のプログラム作成支援装置において、
前記順序算出手段が、下記(a1)〜(a3)の手順で前記実行順序を求めることを特徴とするプログラム作成支援装置。
(a1):前記複数の単位プログラムについて任意の実行順序を定める。
(a2):前記複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると前記検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
(a3):前記複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記(a2)の手順を繰り返す。 - 請求項1又は請求項2に記載のプログラム作成支援装置において、
前記複数の単位プログラムを前記順序算出手段により求められた実行順序で実行するプログラムを作成する作成手段を備えたこと、
を特徴とするプログラム作成支援装置。 - 複数の単位処理を所定の順序で行うプログラムの作成を支援するためのプログラム作成支援装置として、コンピュータを機能させるためのプログラム作成支援プログラムであって、
前記各単位処理のプログラムである単位プログラムのそれぞれについて、その単位プログラムの処理の中に当該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれているか否かを検査する検査手段と、
前記検査手段により前記算出値を参照して行う処理が含まれていると判断された単位プログラムが、該算出値を算出する単位プログラムより後で実行される前記複数の単位プログラムの実行順序を求める順序算出手段として、
コンピュータを機能させることを特徴とするプログラム作成支援プログラム。 - 請求項4に記載のプログラム作成支援プログラムにおいて、
前記順序算出手段が、下記(b1)〜(b3)の手順で前記実行順序を求めることを特徴とするプログラム作成支援プログラム。
(b1):前記複数の単位プログラムについて任意の実行順序を定める。
(b2):前記複数の単位プログラムのうちの一つを選択する。そして、その選択した単位プログラムに該単位プログラム以外の他の単位プログラムにて算出される算出値を参照して行う処理が含まれていると前記検査手段により判断されており、且つ、該選択した単位プログラムの実行順序が該他の単位プログラムの実行順序より前である場合には、該選択した単位プログラムの実行順序を、該他の単位プログラムの実行順序より後となるように修正する。
(b3):前記複数の単位プログラムの全てについて、各単位プログラムの実行順序が、当該単位プログラムにて参照する算出値を算出する他の単位プログラムの実行順序より後となるまで、上記(b2)の手順を繰り返す。 - 請求項4又は請求項5に記載のプログラム作成支援プログラムにおいて、
コンピュータを、前記複数の単位プログラムを前記順序算出手段により求められた実行順序で実行するプログラムを作成する作成手段としても機能させること、
を特徴とするプログラム作成支援プログラム。 - 請求項4ないし請求項6の何れか1項に記載のプログラム作成支援プログラムが記録されたコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002171508A JP2004021308A (ja) | 2002-06-12 | 2002-06-12 | プログラム作成支援装置、プログラム作成支援プログラム及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002171508A JP2004021308A (ja) | 2002-06-12 | 2002-06-12 | プログラム作成支援装置、プログラム作成支援プログラム及び記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004021308A true JP2004021308A (ja) | 2004-01-22 |
Family
ID=31171353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002171508A Pending JP2004021308A (ja) | 2002-06-12 | 2002-06-12 | プログラム作成支援装置、プログラム作成支援プログラム及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004021308A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008033682A (ja) * | 2006-07-28 | 2008-02-14 | Canon Inc | 文書作成支援装置及び文書作成支援方法 |
JP2009187478A (ja) * | 2008-02-08 | 2009-08-20 | Sanyo Electric Co Ltd | 情報処理装置、情報処理方法およびプロセッサ |
-
2002
- 2002-06-12 JP JP2002171508A patent/JP2004021308A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008033682A (ja) * | 2006-07-28 | 2008-02-14 | Canon Inc | 文書作成支援装置及び文書作成支援方法 |
JP2009187478A (ja) * | 2008-02-08 | 2009-08-20 | Sanyo Electric Co Ltd | 情報処理装置、情報処理方法およびプロセッサ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112860473B (zh) | 程序运行错误时定位源代码的方法、装置及计算设备 | |
US20080177527A1 (en) | Simulation system, simulation method and simulation program | |
JP2005078243A (ja) | マイコンリソース消費見積もりプログラム、マイコンリソース消費見積もり装置、およびプログラム生成方法 | |
JP2004021308A (ja) | プログラム作成支援装置、プログラム作成支援プログラム及び記録媒体 | |
JP2009104252A (ja) | デバッグ支援装置およびデバッグ支援方法 | |
EP3570172A1 (en) | Test case selection device and test case selection program | |
JP2008102831A (ja) | 情報提供装置、プログラム及び情報提供方法 | |
JP2009048259A (ja) | プログラム変換方法及び変換用プログラム | |
JP4952317B2 (ja) | 退避データ判別方法、退避データ判別プログラムおよび退避データ判別装置 | |
JP5021584B2 (ja) | マイコンシミュレータ、そのシミュレーション方法、プログラム、及びコンピュータ読み取り可能な媒体 | |
JP2008243107A (ja) | 設計支援装置 | |
JP2020190896A (ja) | 情報処理装置、情報処理プログラム及び制御方法 | |
JP2008009869A (ja) | プログラムコード生成装置 | |
JP2004038635A (ja) | プログラミング方法 | |
JP2002222099A (ja) | プログラム開発支援装置、記録媒体、及びプログラム | |
CN117289965A (zh) | 一种拓展指令更新方法、装置、电子设备和存储介质 | |
JP2004213183A (ja) | 制御用プログラムの作成支援プログラム、作成支援方法及び作成支援装置 | |
JP6807721B2 (ja) | 状態遷移編集装置および状態遷移編集プログラム | |
JPH11282722A (ja) | プログラム検証方法 | |
JP2021057061A (ja) | 状態遷移編集装置および状態遷移編集プログラム | |
CN117742447A (zh) | 时钟自适应调整方法及控制器 | |
JPH04242439A (ja) | 情報処理装置の試験命令組み立て方法 | |
JP2002328704A (ja) | 開発支援システム及びプログラム | |
JP2007164436A (ja) | エンジン性能の予測解析システム、予測解析方法及び予測解析プログラム | |
JP2004227488A (ja) | 電子装置 |