(57)【特許請求の範囲】
【請求項１】
一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、
一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、
前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、
前記入力装置が前記指示を受け付けた際には、前記記録装置内の前記一連のソースプログラムのそれぞれについて、その更新時からの経過時間が、大きさの異なる多数の判定用期間の何れに属するかを、判別させ、
前記一連のソースプログラムのそれぞれに対し、それ自身の経過時間の属する判定用期間に対応したレベルの最適化オプションを、設定させ、
前記一連のソースプログラムに個々に設定された前記最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、
前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させる
ことを特徴とするソフトウエア開発ツールプログラム。
【請求項２】
前記コンピュータに対し、
前記入力装置が前記指示を受け付ける前において、さらに、
前記判定用期間に対応する最適化のレベルを任意に変更するための入力を前記入力装置において受付させ、
前記入力装置が前記入力を受け付けた場合には、その変更に合わせて、前記判定用期間と前記最適化のレベルとの対応付けを、変更させる
ことを特徴とする請求の範囲第１項記載のソフトウエア開発ツールプログラム。
【請求項３】
一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、
一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、
前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、
前記入力装置が前記指示を受け付けた際には、前記記録装置内の前記一連のソースプログラムが、その内部を所定の大きさに区分する各ブロックの実行回数についての情報をプロファイル情報として有しているか否かを、判定させ、
前記一連のソースプログラムが前記プロファイル情報を有していた場合にのみ、前記一連のソースプログラムのそれぞれについて、各ブロックの実行回数の総和を実行コストとして算出させ、
前記一連のソースプログラムのそれぞれの実行コストの総和に対する前記ソースプログラムの実行コストの割合を、前記各ソースプログラムの実行頻度として算出させ、
算出した前記各ソースプログラムの実行頻度が、大きさの異なる多数の判定用割合範囲の何れに属するかを、判別させ、
前記一連のソースプログラムのそれぞれに対し、それ自身の実行頻度の属する判定用割合範囲に対応したレベルの最適化オプションを、設定させ、
前記一連のソースプログラムに個々に設定された最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、
前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させる
ことを特徴とするソフトウエア開発ツールプログラム。
【請求項４】
前記コンピュータに対し、
前記入力装置が前記指示を受け付ける前において、さらに、
前記判定用割合範囲に対応する最適化のレベルを任意に変更するための入力を前記入力装置において受付させ、
前記入力装置が前記入力を受け付けた場合には、その変更に合わせて、前記判定用割合範囲と前記最適化のレベルとの対応付けを、変更させる
ことを特徴とする請求の範囲第３項記載のソフトウエア開発ツールプログラム。
【請求項５】
一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、
一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、
前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、
前記入力装置が前記指示を受け付けた際には、第１モードと第２モードの何れかに設定されているかを、判別させ、
第１モードに設定されていた場合には、前記記録装置内の前記一連のソースプログラムのそれぞれについて、その更新時からの経過時間が、大きさの異なる多数の判定用期間の何れに属するかを、判別させ、
前記一連のソースプログラムのそれぞれに対し、それ自身の経過時間の属する判定用期間に対応したレベルの最適化オプションを、設定させ、
第２モードに設定されていた場合には、前記記録装置内の前記一連のソースプログラムが、その内部を所定の大きさに区分する各ブロックの実行回数についての情報をプロファイル情報として有しているか否かを、判定させ、
前記一連のソースプログラムが前記プロファイル情報を有している場合にのみ、前記一連のソースプログラムのそれぞれについて、各ブロックの実行回数の総和を実行コストとして算出させ、
前記一連のソースプログラムの各々の実行コストの総和に対する前記ソースプログラムの個々の実行コストの割合を、各ソースプログラムの実行頻度として算出させ、
算出した前記各ソースプログラムの実行頻度が、大きさの異なる多数の判定用割合範囲の何れに属するかを、判別させ、
前記一連のソースプログラムのそれぞれに対し、その実行頻度の属する判定用割合範囲に対応したレベルの最適化オプションを、設定させ、
前記第１モード又は前記第２モードにおいて前記一連のソースプログラムに個々に設定された最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、
前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させる
ことをことを特徴とするソフトウエア開発ツールプログラム。
【請求項６】
前記コンピュータに対し、
前記入力装置が前記指示を受け付ける前において、さらに、
前記モードを任意に選択するための入力を前記入力装置において受け付けさせ、
前記入力装置が前記入力を受け付けた場合には、その選択に合わせて、前記第１モードと前記第２モードの何れか一方を設定させる
ことを特徴とする請求の範囲第５項記載のソフトウエア開発ツールプログラム。
【請求項７】
一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、
一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、
前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、
前記入力装置が前記指示を受け付けた際には、前記記録装置内の前記一連のソースプログラムのそれぞれについて、その更新時からの経過時間が、大きさの異なる多数の判定用期間の何れに属するかを、判別させ、
前記一連のソースプログラムが、その内部を所定の大きさに区分する各ブロックの実行回数についての情報をプロファイル情報として有しているか否かを、判定させ、
前記一連のソースプログラムが前記プロファイル情報を有している場合にのみ、前記一連のソースプログラムのそれぞれについて、各ブロックの実行回数の総和を実行コストとして算出させ、
前記一連のソースプログラムの各々の実行コストの総和に対する前記ソースプログラムの個々の実行コストの割合を、各ソースプログラムの実行頻度として算出させ、
算出した前記各ソースプログラムの実行頻度が、大きさの異なる多数の判定用割合範囲の何れに属するかを、判別させ、
前記一連のソースプログラムのうち、判定用割合範囲の中で最大の判定用割合範囲に前記実行頻度が属しているソースプログラムに対しては、その判定用割合範囲に対応したレベルの最適化オプションを設定させるとともに、前記実行頻度が最大の判定用割合範囲に属していないソースプログラムに対しては、前記経過時間の属する判定用期間に対応したレベルの最適化オプションを設定させ、
前記一連のソースプログラムに個々に設定された最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、
前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させる
ことを特徴とするソフトウエア開発ツールプログラム。
【請求項８】
一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、
一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、
前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、
前記入力装置が前記指示を受け付けた際に、前記記録装置内の前記一連のソースプログラムのそれぞれについて、その更新時からの経過時間が、大きさの異なる多数の判定用期間の何れに属するかを、判別させ、
前記一連のソースプログラムが、その内部を所定の大きさに区分する各ブロックの実行回数についての情報をプロファイル情報として有しているか否かを、判定させ、
前記一連のソースプログラムが前記プロファイル情報を有している場合にのみ、前記一連のソースプログラムのそれぞれについて、各ブロックの実行回数の総和を実行コストとして算出させ、
前記一連のソースプログラムの各々の実行コストの総和に対する前記ソースプログラムの個々の実行コストの割合を、各ソースプログラムの実行頻度として算出させ、
算出した前記各ソースプログラムの実行頻度が、大きさの異なる多数の判定用割合範囲の何れに属するかを、判別させ、
前記一連のソースプログラムのうち、判定用期間の中で最大の判定用期間に前記経過時間が属しているソースプログラムに対しては、その判定用期間に対応したレベルの最適化オプションを設定させるとともに、前記経過時間が最大の判定用期間に属していないソースプログラムに対しては、前記実行頻度の属する判定用割合範囲に対応したレベルの最適化オプションを設定させ、
前記一連のソースプログラムに個々に設定された最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、
前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させる
ことを特徴とするソフトウエア開発ツールプログラム。
【請求項９】
前記コンピュータに対し、
前記指示を受け付けさせる際に、さらに、
前記ソースプログラム中の関数を呼び出す関数を内部に有するソースプログラムに対してデバッグオプションを付加するか否かの指定が何れに設定されているかを、判別させ、
前記ソースプログラム中の関数を呼び出す関数を内部に有するソースプログラムに対してデバッグオプションを付加する指定であった際には、前記各オブジェクトプログラムのコンパイルを行わせる前に、さらに、前記各ソースプログラムのうち、ソースプログラム中の関数を呼び出す関数を内部に有するソースプログラムを、抽出させ、
抽出された各ソースプログラムに対し、デバッグオプションを追加設定させることを特徴とする請求の範囲第１乃至８項の何れかに記載のソフトウエア開発ツールプログラム。
【請求項１０】
前記コンピュータに対し、
ソースプログラム中の関数を呼び出す関数を内部に有するソースプログラムを抽出させた後、さらに、抽出されたソースプログラム中の関数を呼び出す関数を内部に有するソースプログラムを新たに抽出させ、
新たに抽出されたソースプログラムのうち、デバッグオプションが設定されていないソースプログラムに対し、デバッグオプションを追加設定させる
ことを特徴とする請求の範囲第９項記載のソフトウエア開発ツールプログラム。
【請求項１１】
前記コンピュータに対し、
前記一連のソースプログラムのうち、他のソースプログラム中の関数を呼び出す関数を内部に有することによって他のソースプログラムと互いに連鎖しているソースプログラムの全てに対し、デバックオプションを追加設定させる
ことを特徴とする請求の範囲第１０項記載のソフトウエア開発ツールプログラム。
【請求項１２】
前記コンピュータに対し、
前記入力装置が前記指示を受け付ける前において、さらに、
前記最適化キャンセルオプション及びデバッグオプションを付加する指定が設定されているか否かを、判別させ、
前記最適化キャンセルオプション及びデバッグオプションを付加する指定が設定されていた際には、前記一連のソースプログラムをコンパイルさせる前に、最適化オプションが設定されているソースプログラムについては、その最適化オプションを最適化キャンセルオプションに変更させるとともに、全てのソースプログラムに対してデバッグオプションを追加設定させる
ことを特徴とする請求の範囲第１乃至１１項の何れかに記載のソフトウエア開発ツールプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ソースプログラムから実行可能形式プログラムファイルを作成するために用いられる装置としてコンピュータを機能させるソフトウエア開発ツールプログラムに、関する。
【背景技術】
【０００２】  周知のように、ソフトウエア開発においては、開発者がエディタを用いて作成したソースプログラムから実行可能形式プログラムファイル（以下「実行モジュール」という）を作成するためのソフトウエア開発ツールが、用いられている。このソフトウエア開発ツールは、ソースプログラムをオブジェクトプログラムに翻訳するためのコンパイラや、オブジェクトプログラムを連結することによって実行モジュールを生成するリンカを、備えている。【０００３】  通常、コンパイラに対しては、ソースプログラム中の無駄な分岐を削除するなどの最適化処理の実行や、ソースプログラムをデバッグ処理するための実行モジュールの作成を、コンパイル実行コマンドのオプションとして指定することができる。そして、上述したソフトウエア開発ツールに対しては、実行モジュールを作成するたびにコンパイルオプションをいちいち指定しなくて済むように、任意のコンパイルオプションを設定しておくことができる。【０００４】  ところで、ソフトウエア開発においては、実行モジュールの実行試験とソースプログラムの修正とが頻繁に繰り返されるので、修正されたソースプログラムから実行モジュールを作成する作業に時間が掛かってしまうと、ソフトウエアの開発期間を増大させる原因となる。このため、実行モジュールの作成に掛かる時間を短縮する技術が、開発者によって求められている。なお、このようなソフトウエア開発ツールに関連する従来技術として、例えば特許文献１及び特許文献２に記載されたものが、存在する。【０００５】
【特許文献１】日本特開平０６−２１４８０３号公報
【特許文献２】日本特開平０８−０８７４１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】  上述したソフトウエア開発ルーツにおいては、ソースプログラムに設定されるコンパイルオプションがコンパイル時にソースプログラムの状態に応じて最適なものに変更されれば、実行試験を完遂しうる最低限の能力が実行モジュールに付与されつつ、その実行モジュールの作成時間が幾らか短縮される。そのソースプログラムの状態とは、具体的には、ソースプログラムの更新状況，ソースプログラムの全体に占める重要度，及び、そのソースプログラムが不具合を生じさせるとその不具合が他のソースプログラムに連鎖してしまう可能性などである。しかしながら、このようなソースプログラムの状態に応じてコンパイルオプションの設定を動的に変更するようなソフトウエア開発ツールは、今まで存在していなかった。【０００７】  なお、このようなソフトウエア開発ツールでは、実行モジュールを作成するたびにコンパイルオプションの設定を手作業にて変更することもできなくはない。しかしそうすると、実行モジュールの作成に掛かる時間は幾らか短縮されはするものの、一つの実行モジュールを作成するためのソースプログラムは通常数百個や数千個もあるので、それらソースプログラムの一つ一つに対してコンパイルオプションの設定を変更することは、実質的に不可能である。【０００８】  本発明は、上述したような従来の事情に鑑みてなされたものであり、その課題は、開発者がコンパイルオプションの設定を頻繁に変えない場合であっても、実行モジュールの作成時間と実行試験における実行性能とをバランスさせるようにコンパイルオプションを動的に変更することができ、その結果として、ソフトウエア開発を効率的に遂行することを可能にする装置としてコンピュータを機能させるソフトウエア開発ツールプログラムを、提供することにある。
【課題を解決するための手段】
【０００９】  上記の課題を解決するために構成された本発明の第１の態様によるソフトウエア開発ツールプログラムは、一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、前記入力装置が前記指示を受け付けた際には、前記記録装置内の前記一連のソースプログラムのそれぞれについての更新時からの経過時間が、大きさの異なる多数の判定用期間の何れに属するかを、判別させ、前記一連のソースプログラムのそれぞれに対し、それ自身の経過時間の属する判定用期間に対応したレベルの最適化オプションを、設定させ、前記一連のソースプログラムに個々に設定された前記最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させることを、特徴としている。【００１０】  このように構成されると、一連のソースプログラムについてのコンパイルの実行の指示が入力装置に入力された場合、頻繁に修正されて更新されているソースプログラムには、最適化レベルの低い最適化オプションが設定され、逆に、頻繁に更新されていないソースプログラムには、最適化レベルの高い最適化オプションが設定される。このように、ソースプログラムの更新状況に応じて、ソースプログラムに設定される最適化オプションの最適化レベルが上下することにより、頻繁に修正されて更新されているソースプログラムは、実行モジュールの作成速度を高めるような最適化レベルにて簡略にコンパイルされ、逆に、頻繁に更新されていないソースプログラムは、実行試験における実行モジュールの実行性能を高めるような最適化レベルにて精密にコンパイルされる。従って、開発者は、ソースプログラムの状態をいちいち確認しながらコンパイルオプションの設定を変更するような作業を行わなくとも、実行モジュールの作成時間と実行試験における実行性能とをバランスさせるようにして、コンパイルオプションを動的に各ソースプログラムに設定できる。その結果として、開発者は、ソフトウエア開発を効率的に遂行することが可能となる。【００１１】  また、上記の課題を解決するために構成された本発明の第２の態様によるソフトウエア開発ツールプログラムは、一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、前記入力装置が前記指示を受け付けた際には、前記記録装置内の前記一連のソースプログラムのそれぞれについて、その内部を所定の大きさに区分する各ブロックの実行回数についての情報をプロファイル情報として有しているか否かを、判定させ、前記一連のソースプログラムが前記プロファイル情報を有していた場合にのみ、前記一連のソースプログラムのそれぞれについて、各ブロックの実行回数の総和を実行コストとして算出させ、前記一連のソースプログラムのそれぞれの実行コストの総和に対する前記ソースプログラムの実行コストの割合を、前記各ソースプログラムの実行頻度として算出させ、算出した前記各ソースプログラムの実行頻度が、大きさの異なる多数の判定用割合範囲の何れに属するかを、判別させ、前記一連のソースプログラムのそれぞれに対し、それ自身の実行頻度の属する判定用割合範囲に対応したレベルの最適化オプションを、設定させ、前記一連のソースプログラムに個々に設定された最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させることを、特徴としている。【００１２】  このように構成されると、一連のソースプログラムについてのコンパイルの実行の指示が入力装置に入力された場合、一連のソースプログラムの中で実行回数の多いソースプログラムには、最適化レベルの高い最適化オプションが設定され、一連のソースプログラムの中で実行回数の少ないソースプログラムには、最適化レベルの低い最適化オプションが設定される。このように、ソースプログラムの全体に占める重要度に応じて、ソースプログラムに設定される最適化オプションの最適化レベルが上下することにより、実行頻度が高くて重要度の高いソースプログラムは、実行試験における実行モジュールの実行性能を高めるような最適化レベルにて精密にコンパイルされ、実行頻度が低くて重要度の低いソースプログラムは、実行モジュールの作成速度を高めるような最適化レベルにて簡略にコンパイルされる。従って、開発者は、ソースプログラムの状態をいちいち確認しながらコンパイルオプションの設定を変更するような作業を行わなくとも、実行モジュールの作成時間と実行試験における実行性能とをバランスさせるようにして、コンパイルオプションを動的に各ソースプログラムに設定できる。その結果として、ソフトウエア開発を効率的に遂行することが可能となる。【００１３】  また、上記の課題を解決するために構成された本発明の第３の態様によるソフトウエア開発ツールプログラムは、一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、前記入力装置が前記指示を受け付けた際には、前記記録装置内の前記一連のソースプログラムのそれぞれについて、その更新時からの経過時間が、大きさの異なる多数の判定用期間の何れに属するかを、判別させ、前記一連のソースプログラムが、その内部を所定の大き��に区分する各ブロックの実行回数についての情報をプロファイル情報として有しているか否かを、判定させ、前記一連のソースプログラムが前記プロファイル情報を有している場合にのみ、前記一連のソースプログラムのそれぞれについて、各ブロックの実行回数の総和を実行コストとして算出させ、前記一連のソースプログラムの各々の実行コストの総和に対する前記ソースプログラムの個々の実行コストの割合を、各ソースプログラムの実行頻度として算出させ、算出した前記各ソースプログラムの実行頻度が、大きさの異なる多数の判定用割合範囲の何れに属するかを、判別させ、前記一連のソースプログラムのうち、判定用割合範囲の中で最大の判定用割合範囲に前記実行頻度が属しているソースプログラムに対しては、その判定用割合範囲に対応したレベルの最適化オプションを設定させるとともに、前記実行頻度が最大の判定用割合範囲に属していないソースプログラムに対しては、前記経過時間の属する判定用期間に対応したレベルの最適化オプションを設定させ、前記一連のソースプログラムに個々に設定された最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させることを、特徴としている。【００１４】  このように構成されると、一連のソースプログラムについてのコンパイルの実行の指示が入力装置に入力された場合、一連のソースプログラムの中で重要度が最大レベルにあるソースプログラムには、最適化レベルの高い最適化オプションが設定され、重要度が最大レベルにないソースプログラムには、その更新状況に応じた最適化レベルの最適化オプションが設定される。このように、ソースプログラムの重要度と更新状況とに応じて、ソースプログラムに設定される最適化オプションの最適化レベルが上下することにより、重要度が最大レベルにあるソースプログラムは、実行試験における実行モジュールの実行性能を高めるような最適化レベルにて精密にコンパイルされ、重要度が最大レベルにないソースプログラムは、頻繁に更新されているものほど低い最適化レベルにて簡略にコンパイルされる。従って、開発者は、ソースプログラムの状態をいちいち確認しながらコンパイルオプションの設定を変更するような作業を行わなくても、実行モジュールの作成時間と実行試験における実行性能とをバランスさせるようにして、コンパイルオプションを動的に各ソースプログラムに設定できる。その結果として、ソフトウエア開発を効率的に遂行することが可能となる。【００１５】  また、上記の課題を解決するために構成された本発明の第４の態様によるソフトウエア開発ツールプログラムは、一つ又は多数のソースプログラムをコンパイルすることにより得られるオブジェクトプログラムに基づいて実行モジュールを生成するためのソフトウエア開発ツールプログラムであって、一つの実行モジュールを作成するために用いられる一連のソースプログラムが格納される記録装置と入力装置とに繋がれるコンピュータに対し、前記一連のソースプログラムについてのコンパイルの実行の指示を前記入力装置において受け付けさせ、前記入力装置が前記指示を受け付けた際に���前記記録装置内の前記一連のソースプログラムのそれぞれについて、その更新時からの経過時間が、大きさの異なる多数の判定用期間の何れに属するかを、判別させ、前記一連のソースプログラムが、その内部を所定の大きさに区分する各ブロックの実行回数についての情報をプロファイル情報として有しているか否かを、判定させ、前記一連のソースプログラムが前記プロファイル情報を有している場合にのみ、前記一連のソースプログラムのそれぞれについて、各ブロックの実行回数の総和を実行コストとして算出させ、前記一連のソースプログラムの各々の実行コストの総和に対する前記ソースプログラムの個々の実行コストの割合を、各ソースプログラムの実行頻度として算出させ、算出した前記各ソースプログラムの実行頻度が、大きさの異なる多数の判定用割合範囲の何れに属するかを、判別させ、前記一連のソースプログラムのうち、判定用期間の中で最大の判定用期間に前記経過時間が属しているソースプログラムに対しては、その判定用期間に対応したレベルの最適化オプションを設定させるとともに、前記経過時間が最大の判定用期間に属していないソースプログラムに対しては、前記実行頻度の属する判定用割合範囲に対応したレベルの最適化オプションを設定させ、前記一連のソースプログラムに個々に設定された最適化オプションが示す最適化レベルにて、前記各ソースプログラムのコンパイルを行わせ、前記コンパイルにより得られた各オブジェクトプログラムを前記記録装置に記録させることを、特徴としている。【００１６】  このように構成されると、一連のソースプログラムについてのコンパイルの実行の指示が入力装置に入力された場合、更新時からの経過時間が最小レベルにあるソースプログラムには、最適化レベルの低い最適化オプションが設定され、更新時からの経過時間が最小レベルにないソースプログラムには、その重要度に応じた最適化レベルの最適化オプションが設定される。このように、ソースプログラムの更新状況と重要度とに応じて、ソースプログラムに設定される最適化オプションの最適化レベルが上下することにより、更新時からの経過時間が最小レベルにあるソースプログラムは、実行モジュールの作成速度を高めるような最適化レベルにて簡略にコンパイルされ、更新時からの経過時間が最小レベルにないソースプログラムは、重要度が高いものほど高い最適化レベルにて精密にコンパイルされる。従って、開発者は、ソースプログラムの状態をいちいち確認しながらコンパイルオプションの設定を変更するような作業を行わなくても、実行モジュールの作成時間と実行試験における実行性能とをバランスさせるようにして、コンパイルオプションを動的に各ソースプログラムに設定できる。その結果として、ソフトウエア開発を効率的に遂行することが可能となる。【００１７】  なお、本発明の第１乃至第４の態様によるソフトウエア開発ツールプログラムは、コンピュータに対し、一連のソースプログラムについてのコンパイルの実行の指示が入力装置に入力された場合に、最適化キャンセルオプション及びデバッグオプションを付加する指定が設定されているか否かを、判別させるものであってもよい。このような場合において、コンパイル実行の指示を入力装置において受け付けた際にこのような指定が設定されていたときには、最適化オプションが設定されているソースプログラムについては、その最適化オプションが最適化キャンセルオプションに変更されるとともに、全てのソースプログラムに対してデバッグオプションが追加設定される。従って、開発者は、そのソースプログラムが不具合を生じさせるとその不具合が他のソースプログラムに連鎖してしまう可能性を排除するための作業、すなわち、ソースプログラムの状態をいちいち確認しながらコンパイルオプションの設定を変更するような作業を、行わなくても済むようになる。その結果として、ソフトウエア開発を効率的に遂行することが可能となる。
【発明の効果】
【００１８】  以上に説明したように、本発明によれば、開発者がコンパイルオプションの設定を頻繁に変えない場合であっても、実行モジュールの実行性能と作成時間とをバランスさせるようにコンパイルオプションを動的に変更することができ、その結果として、ソフトウエア開発を効率的に遂行することが可能となる。
【発明を実施するための最良の形態】
【００１９】  以下、図面に基づいて、本発明を実施するための形態を説明する。【００２０】  第１図は、本発明を実施するための形態であるソフトウエア開発ツールプログラムを実行するためのコンピュータ１０の概略的な構成図である。第１図に示されるように、このコンピュータ１０は、ＣＰＵ［Central Processing Unit］１０ａ，ＲＡＭ［Random Access Memory］１０ｂ，表示装置１０ｃ，入力装置１０ｄ，ＦＤＤ［Flexible Disk Drive］１０ｅ，ＣＤＤ［Compact Disk Drive］１０ｆ，及び、ＨＤＤ［Hard Disk Drive］１０ｇを、備えており、これらハードウエア１０ａ〜１０ｇは、バスＢを介して互いに繋がれている。【００２１】  ＣＰＵ１０ａは、このコンピュータ１０全体を制御する中央処理装置である。ＲＡＭ１０ｂは、ＣＰＵ１０ａが各種プログラムを実行するに際しての作業領域が展開される主記憶装置である。【００２２】  表示装置１０ｃは、ＣＰＵ１０ａによって生成された画像データに基づいて画像を表示するための装置であり、具体的にはブラウン管ディスプレイや液晶ディスプレイである。入力装置１０ｄは、操作者からの入力を受け付けるための装置であり、具体的にはキーボードやマウスやタッチスクリーンである。【００２３】  ＦＤＤ１０ｅ及びＣＤＤ１０ｆは、コンピュータ可読媒体であるフレキシブルディスクＦＤやコンパクトディスクＣＤからデータやプログラムを読み出したりこれらディスクＦＤ，ＣＤに書き込んだりするための装置である。なお、ＦＤＤ１０ｅ及びＣＤＤ１０ｆによって各ディスクＦＤ，ＣＤから読み出されたデータやプログラムは、ＨＤＤ１０ｇにインストールされる。【００２４】  ＨＤＤ１０ｇは、コンピュータ１０に内蔵され、或いは外付けされる記憶装置であり、ＣＰＵ１０ａによってＲＡＭ１０ｂ上に読み出されて実行される各種プログラムを格納している。このＨＤＤ１０ｇが格納しているプログラムには、ハードウエアとソフトウエアとを統合的に管理するためのオペレーションシステムプログラム１１の他、編集プログラム１２，ソースプログラム１３，及び、ソフトウエア開発ツールプログラム１４が、含まれている。【００２５】  編集プログラム１２は、テキスト編集やテキストデータ生成及び更新などのテキストエディタとしての機能をコンピュータ１０上に実現させるためのプログラムである。なお、この編集プログラム１２に従ってＣＰＵ１０ａが行う処理は一般的であるので、その説明については省略する。【００２６】  ソースプログラム１３は、プログラミング言語にて記述されたテキストデータであり、ＨＤＤ１０ｇに多数記録されている。これらソースプログラム１３は、コンピュータ１０の操作者によって操作された上記テキストエディタにより作成されたものであっても良いし、フレキシブルディスクＦＤやコンパクトディスクＣＤからＨＤＤ１０ｇにインストールされたものであっても良い。【００２７】  なお、以下では、便宜上、ＨＤＤ１０ｇ内の一連のソースプログラム１３が、一つの実行可能形式プログラムファイル（以下「実行モジュール」という）を生成するためのプログラム群として作成されたものとして、説明するが、実際には、多数組のソースプログラム１３ｇがＨＤＤ１０ｇに格納されていても良い。【００２８】  ソ��トウエア開発ツールプログラム１４は、ソフトウエアの開発作業を遂行するためのツールとしての機能をコンピュータ１０上に実現させるためのプログラム群である。【００２９】  このソフトウエア開発ツールプログラム１４には、ソースプログラムをマシン語にコンパイルすることによってオブジェクトプログラムを生成するためのコンパイルモジュールプログラム（コンパイラ）１４ａや、多数のオブジェクトプログラムを結合することによって一つの実行モジュールを生成するためのリンキングモジュールプログラム（リンカ）１４ｂが、含まれている。【００３０】  また、コンパイラ１４ａには、ソースプログラムのマシン語へのコンパイル時にプログラム内の不要な分岐の削除や演算順序の入れ替え等の最適化を行うための最適化モジュールプログラム（オプティマイザ）や、プログラムの内容をチェックしてバグ（誤り）を除去するためのデバッグモジュールプログラム（デバッガ）が、含まれている。【００３１】  ところで、コンパイラ１４ａは、コンパイル実行コマンドを受け付けることによって、処理対象のソースプログラムに対してコンパイルを実行するように、構成されているが、さらに、このコンパイル実行コマンドとともに、幾つかあるコンパイルの種類を指定するための情報を受け付けるようにも、構成されている。その情報は、コンパイルオプションと称されており、このコンパイルオプションには、コンパイルと同時にオプティマイザに最適化を行わせる最適化オプションや、その最適化が行われないようにするための最適化キャンセルオプションや、コンパイルと同時にデバッガに対してデバッグを行わせるデバッグオプションが、含まれている。【００３２】  また、オプティマイザが行う最適化には、その高度（高くなるほど翻訳時間が掛かる）に応じた幾つかのレベルが、用意されており、最適化オプションは、このレベルの数だけ存在している。従って、ユーザは、何れかの最適オプションを選択してコンパイル実行コマンドに付加することにより、コンパイラ１４ａに対し、最適化のレベルを指定することができる。【００３３】  そして、ソフトウエア開発ツールプログラム１４によりコンピュータ１０上に実現されるソフトウエア開発ツールは、初期値としての或いは任意のコンパイルオプションが設定されるように、構成されており、実行モジュールを生成する際には、その時点で設定されているコンパイルオプションを用いてソースプログラムをコンパイラ１４ａにコンパイルさせる。【００３４】  このように構成されるソフトウエア開発ツールプログラム１４は、本発明に係る機能として、さらに、コンパイル時に用いられるコンパイルオプションの設定を、ソースプログラムの状態に応じて動的に変化させる。この本発明に係る機能については、第２図，及び、第８乃至第１１図のフローチャートを用いて後述する。【００３５】  なお、このソフトウエア開発ツールプログラム１４は、フレキシブルディスクＦＤやコンパクトディスクＣＤからＨＤＤ１０ｇにインストールされたものであっても良い。【００３６】  以下、以上のように構成されるコンピュータ１０において実行される処理について説明する。【００３７】  このコンピュータ１０では、入力装置１��ｄが操作者によって操作されることにより、ソフトウエア開発ツールプログラム１４がＣＰＵ１０ａに読み込まれると、ソフトウエア開発ツールとしての機能を実現させるための処理が開始される。これにより、コンピュータ１０上にソフトウエア開発ツールが実現される。【００３８】  このソフトウエア開発ツールは、本発明に係る機能以外の機能を有しているが、その機能には、実行モジュールを作成するときの基となる一連のソースプログラム１３のファイル名を事前に登録するための機能が、含まれている。以下では、一連のソースプログラム１３のファイル名が事前にこのソフトウエア開発ツールに登録されているとして、説明する。【００３９】  また、ソフトウエア開発ツールの有する機能には、一連のソースプログラム１３をコンパイルする際に各々に設定されねばならないとして規定された必須のコンパイルオプションについての情報を事前に登録するための機能も、含まれている。【００４０】  さらに、ソフトウエア開発ツールの有する機能には、一連のソースプログラム１３についてプロファイル情報が取得されていた場合にそれらプロファイル情報も保持しておく機能も、含まれている。【００４１】  なお、プロファイル情報については、本出願人が先に開示した“コンパイラ装置”の出願公開公報（日本特開平０８−０８７４１７号）において説明されているので、ここでは詳しく説明しないが、その概略は以下の通りである。【００４２】  すなわち、プロファイル情報は、一つの実行モジュールを生成するための各ソースプログラム１３の内部を幾つかのブロックに区分した場合において、その実行モジュールの実行試験を行った際に、各ブロックの実行回数を計数して得られる情報である。従って、各ソースプログラム１３が初めてコンパイルされるプログラムである場合には、それらのプロファイル情報は存在しない。既に実行モジュールが生成された場合に、それらソースプログラム１３にプロファイル情報が付加されていることがある。【００４３】  コンピュータ１０の操作者は、入力装置１０ｄを操作することによって、ソフトウエア開発ツールの有する各機能を利用し、その結果、一連のソースプログラム１３に基づいて実行モジュールを作成する必要が生じた場合には、実行モジュール作成用のプログラムを起動させるための操作を行う。【００４４】  そして、この操作を受けて、コンピュータ１０のＣＰＵ１０ａが当該プログラムをＨＤＤ１４から読み込むと、この実行モジュール作成の機能を実現するための処理が開始される。第２図は、この処理の内容を説明するためのフローチャートである。【００４５】  この処理の開始後、最初のステップＳ１０１では、ＣＰＵ１０ａは、表示装置１０ｃにメニュー画面を表示させる。【００４６】  第３図は、このメニュー画面の画面例を示す。第３図に示されるメニュー画面２１には、クリッカブルな三つのボタン２１ａ〜２１ｃが、示されている。一つ目のボタン２１ａは、一連のソースプログラム１３のそれぞれに自動に設定されるコンパイルオプションをコンパイル時に動的に変更させるか否かの設定を操作者が変更する際にクリックされる“設定”ボタンである。二つ目のボタン２１ｂは、一連のソースプログラム１３��ら実行モジュールを作成する際に操作者によってクリックされる“実行”ボタンである。三つ目のボタン２１ｃは、この実行モジュール作成の機能を停止する際に操作者によってクリックされる“キャンセル”ボタンである。【００４７】  このようなメニュー画面２１を表示装置１０ｃに表示させた後、ＣＰＵ１０ａは、メニュー画面２１上のクリッカブルボタン２１ａ〜２１ｃのうちの何れか一つがクリックされるまで、待機する。そして、クリッカブルボタン２１ａ〜２１ｃのうちの何れか一つがクリックされると、ＣＰＵ１０ａは、ステップＳ１０２へ処理を進める。【００４８】  ステップＳ１０２では、ＣＰＵ１０ａは、メニュー画面２１上のどのボタン２１ａ〜２１ｃがクリックされたかを、判別する。そして、クリックされたボタンが“設定”ボタン２１ａであった場合には、ＣＰＵ１０ａは、ステップＳ１０３へ処理を進める。【００４９】  ステップＳ１０３では、ＣＰＵ１０ａは、表示装置１０ｃにコンパイルオプション制御画面を表示させる。【００５０】  第４図は、このコンパイルオプション制御画面の画面例を示す。第４図に示されるコンパイルオプション制御画面２２には、二つのラジオボタン２２ａ，２２ｂが示されている。一つ目のラジオボタン２２ａは、ソースプログラム１３のコンパイル時に用いられるコンパイルオプションのうち、最適化オプションの設定を動的に変化させたい場合に操作者によってクリックされる“最適化動的指定”ボタンである。二つ目のラジオボタン２２ｂは、コンパイル時に用いられるコンパイルオプションを設定されているまま固定させたい場合に操作者によってクリックされる“固定指定”ボタンである。【００５１】  また、第４図のコンパイルオプション制御画面２２には、“最適化動的指定”ボタン２２ａが選択されているときにのみ有効に機能する四つのラジオボタン２２ｃ〜２２ｆが、示されている。一つ目のラジオボタン２２ｃは、ソースプログラム１３の更新時から現在時刻までの経過時間を更新経過度としたとき、この更新経過度に応じて最適化のレベルが動的に変化されるように指定するための“更新経過度順”ボタンである。二つ目のラジオボタン２２ｄは、一連のソースプログラム１３の実行コスト（後述）の総和に対する一つのソースプログラム１３の実行コストの割合を実行頻度としたとき、この実行頻度に応じて最適化のレベルが動的に変化されるように指定するための“実行頻度順”ボタンである。三つ目のラジオボタン２２ｅは、実行頻度としての割合が所定の上限割合よりも高い場合以外は更新経過度に応じて最適化のレベルが動的に変化されるように指定するための“更新経過度優先”ボタンである。四つ目のラジオボタン２２ｆは、更新経過度としての経過時間が所定の下限時間よりも小さい場合以外は実行頻度に応じて最適化のレベルが動的に変化されるように指定するための“実行頻度優先”ボタンである。【００５２】  また、第４図のコンパイルオプション制御画面２２には、ソースプログラム１３のコンパイル時に用いられるコンパイルオプションのうち、デバッグオプションの設定を動的に変化させたい場合に操作者によってクリックされる“デバッグ動的指定”チェックボックス２２ｇが、示されてい��。なお、この“デバッグ動的指定”チェックボックス２２ｇは、“最適化動的指定”ボタン２２ａが選択されているときにのみ有効に機能する。【００５３】  また、第４図のコンパイルオプション制御画面２２には、“デバッグ動的指定”チェックボックス２２ｇにチェックマークが入力されているときにのみ有効に機能する二つのチェックボックス２２ｈ，２２ｉが、示されている。一つ目のチェックボックス２２ｈは、ソースプログラム１３のコンパイル時に用いられる最適化オプションを最適化キャンセルオプションに変更させると同時にデバッグオプションを付加させるように指定するための“詳細デバッグ”チェックボックスである。二つ目のチェックボックス２２ｉは、処理対象となるソースプログラム１３中の関数を呼び出す関数を内部に含んでいるソースプログラム１３に対して設定されている最適化オプションを最適化キャンセルオプションに変更させると同時にデバッグオプションを付加させるように指定するための“呼出関数デバッグ”チェックボックスである。【００５４】  なお、後述するように、この“呼出関数デバッグ”チェックボックス２２ｉがチェックされると、処理対象となるソースプログラム１３中の関数を呼び出す関数を内部に含むソースプログラム１３について、デバッグオプションが設定されるだけでなく、その呼び出し元のソースプログラム１３中の関数を呼び出す関数を内部に含むソースプログラム１３、さらには、その呼び出し元のソースプログラム１３中の関数を呼び出す関数を内部に含むソースプログラム１３、…のように、順次連鎖するソースプログラム１３の全てについて、デバッグオプションが設定される。【００５５】  また、第４図のコンパイルオプション制御画面２２には、クリッカブルな三つのボタン２２ｊ〜２２ｌが、示されている。一つ目のボタン２２ｊは、更新経過度の判定用条件と最適化のレベルとの対応関係を変更する際に操作者によってクリックされる“更新経過度設定”ボタンである。二つ目のボタン２２ｋは、実行頻度の判定用条件と最適化のレベルとの対応関係を変更する際に操作者によってクリックされる“実行頻度設定”ボタンである。三つ目のボタン２２ｌは、“最適化動的指定”ボタン２２ａが選択されると有効に機能する四つのラジオボタン２２ｃ〜２２ｆのうち、“最適化動的指定”ボタン２２ａのクリック時に選択された状態になるラジオボタンを指定するための“初期値設定”ボタンである。【００５６】  さらに、第４図のコンパイルオプション制御画面２２には、各ラジオボタン２２ａ〜２２ｆ及び各クリッカブルボタン２２ｊ〜２２ｌ，並びに、チェックボックス２２ｇ〜２２ｉへの入力操作が終了した際に操作者によってクリックされる“ＯＫ”ボタン２２ｍが、示されている。【００５７】  このようなコンパイルオプション制御画面２２を表示装置１０ｃに表示させた後、ＣＰＵ１０ａは、ステップＳ１０４へ処理を進める。【００５８】  ステップＳ１０４では、ＣＰＵ１０ａは、事前に登録されている一連のソースプログラム１３についてのプロファイル情報が保持されているか否かを、判別する。そして、ＣＰＵ１０ａは、一連のソースプログラム１３についてのプロファイル情報が存在していた場合��は、ステップＳ１０６へ処理を進め、一連のソースプログラム１３についてのプロファイル情報が存在していなかった場合には、ステップＳ１０５へ処理を進める。【００５９】  ステップＳ１０５では、ＣＰＵ１０ａは、マスク処理を実行する。具体的には、ＣＰＵ１０ａは、第４図に示されるコンパイルオプション制御画面２２における三つのラジオボタン２２ｄ〜２２ｆが選択できないようにその機能を停止させる処理を、実行する。このようなマスク処理の実行後、ＣＰＵ１０ａは、ステップＳ１０６へ処理を進める。【００６０】  ステップＳ１０６では、ＣＰＵ１０ａは、コンパイルオプション制御画面２２上のクリッカブルボタン２２ｊ〜２２ｍのうちの何れか一つがクリックされるまで、待機する。なお、ＣＰＵ１０ａが待機している間、コンパイルオプション制御画面２２上の各ラジオボタン２２ａ〜２２ｆ及びチェックボックス２２ｇ〜２２ｉへの入力操作がなされても良い。但し、ステップＳ５の処理を経ている場合には、ラジオボタン２２ｄ〜２２ｆへの入力は不可能である。【００６１】  そして、クリッカブルボタン２２ｊ〜２２ｍのうちの何れか一つがクリックされると、ＣＰＵ１０ａは、何れのボタンがクリックされたかを、判別する。そして、クリックされたボタンが詳細設定ボタンであった場合、すなわち、“更新経過度設定”ボタン２２ｊ，“実行頻度設定”ボタン２２ｋ，及び、“初期値設定”ボタン２２ｌの何れかであった場合には、ＣＰＵ１０ａは、ステップＳ１０７へ処理を進める。【００６２】  ステップＳ１０７では、ＣＰＵ１０ａは、クリックされたボタンに応じた詳細設定入力画面を表示装置１０ｃに表示させる。具体的には、ＣＰＵ１０ａは、クリックされたボタンが“更新経過度設定”ボタン２２ｊであった場合には、第５図に示されるような更新経過度設定入力画面２３を表示装置１０ｃに表示させ、クリックされたボタンが“実行頻度設定”ボタン２２ｋであった場合には、第６図に示されるような実行頻度設定入力画面２４を表示させ、クリックされたボタンが“初期値設定”ボタン２２ｌであった場合には、第７図に示されるような初期値設定入力画面２５を表示装置１０ｃに表示させる。【００６３】  なお、第５図に示される更新経過度設定入力画面２３には、更新経過度の判定用条件を幾つか任意に指定するための三つのテキストボックス２３ａが、示されている。また、この更新経過度設定入力画面２３には、それら判定用条件にて示される範囲内の更新経過度に対して任意の最適化オプションを指定するための三つのテキストボックス２３ｂが、示されている。また、この更新経過度設定入力画面２３には、判定用条件にて示される範囲外の更新経過度に対して任意の最適化オプションを指定するための一つのテキストボックス２３ｃが、示されている。さらに、この更新経過度設定入力画面２３には、各テキストボックス２３ａ〜２３ｃに入力が済んだ後に操作者によってクリックされる“ＯＫ”ボタン２３ｄが、示されている。【００６４】  第６図に示される実行頻度設定入力画面２４には、実行頻度の判定用条件を幾つか任意に指定するための三つのテキストボックス２４ａが、示されている。また、この実行頻度設定入力画面２４には、それ��判定用条件にて示される範囲内の実行頻度に対して任意の最適化オプションを指定するための三つのテキストボックス２４ｂが、示されている。また、この実行頻度設定入力画面２４には、判定用条件にて示される範囲外の実行頻度に対して任意の最適化オプションを指定するための一つのテキストボックス２４ｃが、示されている。さらに、この実行頻度設定入力画面２４には、各テキストボックス２４ａ〜２４ｃに入力が済んだ後に操作者によってクリックされる“ＯＫボタン”２４ｄが、示されている。【００６５】  第７図に示される初期値設定入力画面２５には、四つのラジオボタン２５ａが、示されている。これら四つのラジオボタン２５ａは、コンパイルオプション制御画面２２上の“最適化動的指定”ボタン２２ａのクリック時において選択された状態になるラジオボタンをラジオボタン２２ｃ〜２２ｆの中の何れのボタンにするかを指定するためのボタンである。また、この初期設定入力画面２５には、何れかのラジオボタン２５ａの選択が済んだ後に操作者によってクリックされる“ＯＫ”ボタン２５ｂが、示されている。【００６６】  ＣＰＵ１０ａは、これら第５乃至７図に示されるような画面のうち、クリックされたボタンに応じた画面を詳細設定入力画面として表示装置１０ｃに表示させた後、ステップＳ１０８へ処理を進める。【００６７】  ステップＳ１０８では、ＣＰＵ１０ａは、表示中の詳細設定入力画面上にある“ＯＫ”ボタンがクリックされるまで、待機する。なお、ＣＰＵ１０ａが待機している間、表示中の詳細設定入力画面上のテキストボックス（更新最新度設定入力画面２３若しくは実行頻度設定入力画面２４の場合）又はラジオボタン（初期値設定入力画面２５の場合）への入力操作がなされても良い。そして、ＣＰＵ１０ａは、“ＯＫ”ボタンがクリックされた場合には、ステップＳ１０９へ処理を進める。【００６８】  ステップＳ１０９では、ＣＰＵ１０ａは、“ＯＫ”ボタンがクリックされた時点で詳細設定入力画面に入力されていた事項にて、更新経過度の判定用条件，実行頻度の判定用条件，又は、初期値の設定事項を更新する。その後、ＣＰＵ１０ａは、ステップＳ１０３へ処理を戻し、コンパイルオプション制御画面２２を表示装置１０ｃに表示させる。【００６９】  一方、ステップＳ１０６において、コンパイルオプション制御画面２２上においてクリックされたボタンが“ＯＫ”ボタン２２ｍであった場合には、ＣＰＵ１０ａは、ステップＳ１１０へ処理を進める。【００７０】  ステップＳ１１０では、ＣＰＵ１０ａは、“ＯＫ”ボタン２２ｍがクリックされた時点でコンパイルオプション制御画面２２に入力されていた事項にて、最適化オプションの動的な変更方法及び／又はデバッグオプションの動的な変更方法についての設定事項を、更新する。その後、ＣＰＵ１０ａは、ステップＳ１０１へ処理を戻し、メニュー画面２１を表示装置１０ｃに表示させる。【００７１】  また、ステップＳ１０２において、メニュー画面２１上においてクリックされたボタンが“実行”ボタン２１ｂであった場合には、ＣＰＵ１０ａは、ステップＳ１１１へ処理を進める。【００７２】  ステップＳ１１１では、ＣＰＵ１０ａは、実行モジュール生成サブルーチンをＨ���Ｄ１０ｇから読み込み、実行モジュール生成処理の実行を開始する。第８乃至１０図は、この実行モジュール生成処理の内容を説明するためのフローチャートである。【００７３】  実行モジュール生成処理の開始後、最初のステップＳ２０１では、ＣＰＵ１０ａは、初期化処理を実行する。具体的には、ＣＰＵ１０ａは、変数ＤＢを何も代入されていないNULLの状態に設定するとともに、連鎖フラグ，デバッグフラグ，及び、詳細デバッグフラグを何れもFALSEに切り替える。【００７４】  次のステップＳ２０２では、ＣＰＵ１０ａは、“デバッグオプションを指定する”設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“デバッグ動的指定”チェックボックス２２ｇにチェックマークが入力されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、“デバッグオプションを指定する”設定でなかった場合には、ステップＳ２０６へ処理を進め、“デバッグオプションを指定する”設定であった場合には、ステップＳ２０３へ処理を進める。【００７５】  ステップＳ２０３では、ＣＰＵ１０ａは、デバッグフラグをTRUEに切り替えて、ステップＳ２０４へ処理を進める。【００７６】  ステップＳ２０４では、ＣＰＵ１０ａは、“詳細デバッグを実行する”設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“詳細デバッグ”チェックボックス２２ｈにチェックマークが入力されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、“詳細デバッグを実行する”設定でなかった場合には、ステップＳ２０６へ処理を進め、“詳細デバッグを実行する”設定であった場合には、ステップＳ２０５へ処理を進める。【００７７】  ステップＳ２０５では、ＣＰＵ１０ａは、詳細デバッグフラグをTRUEに切り替えて、ステップＳ２０６へ処理を進める。【００７８】  ステップＳ２０６では、ＣＰＵ１０ａは、事前に登録されている全てのソースプログラム１３のそれぞれに対し、個別に規定されている必須のコンパイルオプションを設定する。具体的には、ＣＰＵ１０ａは、ＲＡＭ１０ｂ内に、各ソースプログラム１３のワークテーブルを作成するとともに、各ワークテーブル内に、対応するソースプログラム１３のファイル名と、設定した必須コンパイルオプションとを記録する。その後、ＣＰＵ１０ａは、第１の処理ループＬ１を実行する。【００７９】  第１の処理ループＬ１では、ＣＰＵ１０ａは、事前に登録されている一連のソースプログラム１３を順に処理対象として特定することにより、それらソースプログラム１３のそれぞれに対し、ステップＳ２５１を繰り返し実行する。【００８０】  ステップＳ２５１では、ＣＰＵ１０ａは、コンパイルオプション決定サブルーチンをＨＤＤ１０ｇから読み込み、コンパイルオプション決定処理の実行を開始する。第１１乃至１４図は、このコンパイルオプション決定処理の内容を説明するためのフローチャートである。【００８１】  コンパイルオプション決定処理の開始後、最初のステップＳ３０１では、ＣＰＵ１０ａは、連鎖フラグTRUEであるか否かを、判別する。そして、ＣＰＵ１０ａは、連鎖フラグがTRUEであった場合には、ステップＳ３２８へ処理を進め、連鎖フラグがFALSEであった場合には、ステップＳ３０２へ処理を進める。【００８２】  ステップＳ３０２では、ＣＰＵ１０ａは、“コンパイルオプションを変更しない”設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“固定指定”ボタン２２ｂが選択されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、“コンパイルオプションを変更しない”設定であった場合には、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了し、“コンパイルオプションを変更しない”設定でなかった場合には、ステップＳ３０３へ処理を進める。【００８３】  ステップＳ３０３では、ＣＰＵ１０ａは、変数Ａ及び変数Ｂを何も代入されていないNULLの状態に設定して、ステップＳ３０４へ処理を進める。【００８４】  ステップＳ３０４では、ＣＰＵ１０ａは、更新経過度を使用する設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“更新経過度順”ボタン２２ｃ，“更新経過度優先”ボタン２２ｅ，又は“実行頻度優先”ボタン２２ｆが選択されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、更新経過度を使用する設定でなかった場合には、ステップＳ３０８へ処理を進め、更新経過度を使用する設定であった場合には、ステップＳ３０５へ処理を進める。【００８５】  ステップＳ３０５では、ＣＰＵ１０ａは、処理対象ソースプログラム１３の更新日時を取得するとともにこの時点の現在時刻を取得し、処理対象ソースプログラム１３の更新時からの経過時間を更新経過度として算出する。【００８６】  次のステップＳ３０６では、ＣＰＵ１０ａは、ステップＳ３０５において算出した更新経過度に対応するレベルの最適化オプションを、決定する。すなわち、ＣＰＵ１０ａは、第５図の更新経過度設定入力画面２３において設定された幾つかの判定用条件のうち、更新経過度としての経過時間が含まれる判定用条件で一番小さいものを検索することにより、検出された期間条件に対応するレベルの最適化オプションを、更新経過度に対応する最適化オプションとして決定する。【００８７】  次のステップＳ３０７では、ＣＰＵ１０ａは、ステップＳ３０６において決定した最適化オプションを変数Ａに代入し、ステップＳ３０８へ処理を進める。【００８８】  ステップＳ３０８では、ＣＰＵ１０ａは、実行頻度を使用する設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“実行頻度順”ボタン２２ｄ，“更新経過度優先”ボタン２２ｅ，又は“実行頻度優先”ボタン２２ｆが選択されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、実行頻度を使用する設定でなかった場合には、ステップＳ３１３へ処理を進め、実行頻度を使用する設定であった場合には、ステップＳ３０９へ処理を進める。【００８９】  ステップＳ３０９では、ＣＰＵ１０ａは、事前に登録されている一連のソースプログラム１３についてのプロファイル情報が存在しているか否かを、判別する。そして、ＣＰＵ１０ａは、一連のソー��プログラム１３についてのプロファイル情報が存在していなかった場合には、ステップＳ３１３へ処理を進め、一連のソースプログラム１３についてのプロファイル情報が存在していた場合には、ステップＳ３１０へ処理を進める。【００９０】  ステップＳ３１０では、ＣＰＵ１０ａは、処理対象ソースプログラム１３の実行頻度を、算出する。具体的には、ＣＰＵ１０ａは、まず、事前に登録されている全てのソースプログラム１３のプロファイル情報に基づいて、それらソースプログラム１３のそれぞれについて全ブロックの実行回数の総和を計数することにより、各ソースプログラム１３の実行コストを取得する。続いて、ＣＰＵ１０ａは、それらソースプログラム１３全体の実行コストの総和を算出し、最後に、処理対象ソースプログラム１３の実行コストを全ソースプログラム１３の実行コストの総和にて除算する。ＣＰＵ１０ａは、除算の結果得られた割合を、処理対象ソースプログラム１３の実行頻度として取得する。【００９１】  次のステップＳ３１１では、ＣＰＵ１０ａは、ステップＳ３１０において算出した実行頻度に対応するレベルの最適化オプションを、決定する。すなわち、ＣＰＵ１０ａは、第６図の実行頻度設定入力画面２４において設定された幾つかの判定用条件のうち、実行頻度としての割合が含まれる判定用条件で一番高いものを検索することにより、検出された判定用条件に対応するレベルの最適化オプションを、実行頻度に対応する最適化オプションとして決定する。【００９２】  次のステップＳ３１２では、ＣＰＵ１０ａは、ステップＳ３１１において決定した最適化オプションを変数Ｂに代入し、ステップＳ３１３へ処理を進める。【００９３】  ステップＳ３１３では、ＣＰＵ１０ａは、更新経過度に従う設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“更新経過度順”ボタン２２ｃが選択されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、更新経過度に従う設定であった場合には、ステップＳ３１４へ処理を進める。【００９４】  ステップＳ３１４では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルに、変数Ａに代入されている最適化オプションを追加する。【００９５】  次のステップＳ３１５では、ＣＰＵ１０ａは、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションであるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第５図の更新経過度設定入力画面２３を用いて設定された多数の判定用条件のうち、最も少ない時間の判定用条件を更新経過度が満足しているか否かを、判別する。そして、ＣＰＵ１０ａは、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションであった場合には、ステップＳ３２８へ処理を進め、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションでなかった場合には、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了する。【００９６】  一方、ステップＳ３１３において、更新経過度に従う設定でなかった場合には、ＣＰＵ１０ａは、ステップＳ３１６へ処理を進める。【００９７】  ス���ップＳ３１６では、ＣＰＵ１０ａは、実行頻度に従う設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“実行頻度順”ボタン２２ｄが選択されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、実行頻度に従う設定であった場合には、ステップＳ３１７へ処理を進める。【００９８】  ステップＳ３１７では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルに、変数Ｂに代入されている最適化オプションを追加する。【００９９】  次のステップＳ３１８では、ＣＰＵ１０ａは、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションであるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第６図の実行頻度設定入力画面２４を用いて設定された多数の判定用条件のうち、最も高い割合の判定用条件を実行頻度が満足しているか否かを、判別する。そして、ＣＰＵ１０ａは、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションであった場合には、ステップＳ３２８へ処理を進め、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションでなかった場合には、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了する。【０１００】  一方、ステップＳ３１６において、実行頻度に従う設定でなかった場合には、ＣＰＵ１０ａは、ステップＳ３１９へ処理を進める。【０１０１】  ステップＳ３１９では、ＣＰＵ１０ａは、“更新経過度を優先する”設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“更新経過度優先”ボタン２２ｅが選択されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、“更新経過度を優先する”設定であった場合には、ステップＳ３２０へ処理を進める。【０１０２】  ステップＳ３２０では、ＣＰＵ１０ａは、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションであるか否かを、判別する。そして、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションであった場合には、ＣＰＵ１０ａは、ステップＳ３２１へ処理を進める。【０１０３】  ステップＳ３２１では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルに、変数Ｂに代入されている最適化オプションを追加して、ステップＳ３２８へ処理を進める。【０１０４】  一方、ステップＳ３２０において、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションでなかった場合には、ＣＰＵ１０ａは、ステップＳ３２２へ処理を進める。【０１０５】  ステップＳ３２２では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルに、変数Ｂに代入されている最適化オプションを追加して、ステップＳ３２３へ処理を進める。【０１０６】  ステップＳ３２３では、ＣＰＵ１０ａは、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションであるか否かを、判別する。そして、ＣＰＵ１０ａは、変数Ａに代入されている最適化オプション���最上レベルの最適化オプションであった場合には、ステップＳ３２８へ処理を進め、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションでなかった場合には、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了する。【０１０７】  また、ステップＳ３１９において、“更新経過度を優先する”設定でなかった場合には、ＣＰＵ１０ａは、“実行頻度を優先する”設定であるとして、ステップＳ３２４へ処理を進める。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“更新経過度優先”ボタン２２ｅが選択されたときの設定であるとして、ステップＳ３２４へ処理を進める。【０１０８】  ステップＳ３２４では、ＣＰＵ１０ａは、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションであるか否かを、判別する。そして、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションであった場合には、ＣＰＵ１０ａは、ステップＳ３２５へ処理を進める。【０１０９】  ステップＳ３２５では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルに、変数Ａに代入されている最適化オプションを追加して、ステップＳ３２８へ処理を進める。【０１１０】  一方、ステップＳ３２４において、変数Ａに代入されている最適化オプションが最上レベルの最適化オプションでなかった場合には、ＣＰＵ１０ａは、ステップＳ３２６へ処理を進める。【０１１１】  ステップＳ３２６では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルに、変数Ｂに代入されている最適化オプションを追加して、ステップＳ３２７へ処理を進める。【０１１２】  ステップＳ３２７では、ＣＰＵ１０ａは、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションであるか否かを、判別する。そして、ＣＰＵ１０ａは、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションでなかった場合には、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了し、変数Ｂに代入されている最適化オプションが最上レベルの最適化オプションであった場合には、ステップＳ３２８へ処理を進める。【０１１３】  ステップＳ３２８では、ＣＰＵ１０ａは、デバッグフラグがTRUEであるか否かを、判別する。そして、ＣＰＵ１０ａは、デバッグフラグがFALSEであった場合には、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了し、デバッグフラグがTRUEであった場合には、ステップＳ３２９へ処理を進める。【０１１４】  ステップＳ３２９では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルに、デバッグオプションを追加して、ステップＳ３３０へ処理を進める。【０１１５】  ステップＳ３３０では、ＣＰＵ１０ａは、“呼出関数を持つソースプログラムへのデバッグオプションを付加する”設定であるか否かを、判別する。すなわち、ＣＰＵ１０ａは、第４図のコンパイルオプション制御画面２２における“呼出関数デバッグ”チェックボックス２２ｉにチェックマークが入力されたときの設定であるか否かを、判別する。そして、ＣＰＵ１０ａは、“呼出関数を持つソースプログラムへのデバッグオプションを付加する”設定でなかった場合には、ステップＳ３３２へ処理を進め、“呼出関数を持つソースプログラムへのデバッグオプションを付加する”設定であった場合には、ステップＳ３３１へ処理を進める。【０１１６】  ステップＳ３３１では、ＣＰＵ１０ａは、処理対象ソースプログラム１３のファイル名を変数ＤＢに追加的に代入し、ステップＳ３３２へ処理を進める。【０１１７】  ステップＳ３３２では、ＣＰＵ１０ａは、詳細デバッグフラグがTRUEであるか否かを、判別する。そして、ＣＰＵ１０ａは、詳細デバッグフラグがFALSEであった場合には、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了し、詳細デバッグフラグがTRUEであった場合には、ステップＳ３３３へ処理を進める。【０１１８】  ステップＳ３３３では、ＣＰＵ１０ａは、処理対象ソースプログラム１３に設定されている最適化オプションを最適化キャンセルオプションに変更する。具体的には、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルの中の最適化オプションを、最適化キャンセルオプションに上書き更新する。その後、ＣＰＵ１０ａは、この処理対象ソースプログラムについてのコンパイルオプション決定処理を終了する。【０１１９】  ＣＰＵ１０ａは、第８図の第１の処理ループＬ１において、上述したようなコンパイルオプション決定処理を、事前に登録された一連のソースプログラム１３の各々に対し、繰り返し実行することにより、登録されている全てのソースプログラム１３のそれぞれに対してコンパイルオプションを設定する。そして、ＣＰＵ１０ａは、この第１の処理ループＬ１から脱した後、第８図のステップＳ２０７へ処理を進める。【０１２０】  ステップＳ２０７では、ＣＰＵ１０ａは、変数ＤＢが何も代入されていないNULLの状態であるか否かを、判別する。そして、ＣＰＵ１０ａは、変数ＤＢがＮＵＬＬの状態であった場合には、第３の処理ループＬ３へ処理を進め、変数ＤＢがNULLの状態でなかった場合には、ステップＳ２０８へ処理を進める。【０１２１】  ステップＳ２０８では、ＣＰＵ１０ａは、連鎖フラグ，デバッグフラグ，及び、詳細デバッグフラグを、何れもTRUEに切り替えて、ステップＳ２０９へ処理を進める。【０１２２】  ステップＳ２０９では、ＣＰＵ１０ａは、変数ＤＢに代入されているファイル名のソースプログラム１３中の関数を呼び出す関数を内部に持つソースプログラム１３のファイル名を、抽出する。具体的には、ＣＰＵ１０ａは、その呼出関数を検索条件として、各ソースプログラム１３内を検索することにより、呼出関数が検出されたソースプログラムのファイル名を特定する。【０１２３】  次のステップＳ２１０では、ＣＰＵ１０ａは、ＲＡＭ１０ｂ内のワークテーブルを参照して、ステップＳ２０９において抽出したソースプログラム１３のファイル名うち、既にデバッグオプションが設定されているソースプログラム１３のファイル名を変数ＤＢから取り除く。【０１２４】  次のステップＳ２１１では、ＣＰＵ１０ａは、変数ＤＢが何も��入されていないNULLの状態であるか否かを、判別する。そして、ＣＰＵ１０ａは、変数ＤＢがNULLの状態でなかった場合には、ステップＳ２１２へ処理を進める。【０１２５】  ステップＳ２１２では、ＣＰＵ１０ａは、変数ＤＢに代入されているファイル名を読み出してＲＡＭ１０ｂ内に一時的に記録し、変数ＤＢを何も代入されていないNULLの状態に設定する。【０１２６】  このステップＳ２１２の実行後、ＣＰＵ１０ａは、ＲＡＭ１０ｂ内にファイル名が一時的に記録された各ソースプログラム１３について、第２の処理ループＬ２を実行する。【０１２７】  この第２の処理ループＬ２では、ＣＰＵ１０ａは、一時的に記録された各ソースプログラム１３を順に処理対象として特定することにより、それらソースプログラム１３のそれぞれに対し、ステップＳ２６１を繰り返し実行する。【０１２８】  ステップＳ２６１では、ＣＰＵ１０ａは、コンパイルオプション決定サブルーチンをＨＤＤ１０ｇから読み込み、コンパイルオプション決定処理の実行を開始する。なお、このコンパイルオプション決定処理の内容については、既に上述したので、ここでは詳しく説明しないが、その概要としては、以下の通りである。【０１２９】  コンパイルオプション決定処理の開始後、ＣＰＵ１０ａは、連鎖フラグがTRUEであると判別して、第１１図のステップＳ３０１から第１４図のステップＳ３２８へ処理を進める。続いて、ＣＰＵ１０ａは、Ｓ３２９において、処理対象ソースプログラム１３用のワークテーブルにデバッグオプションを追加し、Ｓ３３１において、その処理対象ソースプログラム１３のファイル名を変数ＤＢに追加代入し、Ｓ３３３において、その処理対象ソースプログラム１３のワークテーブルに記録されている最適化オプションを最適化キャンセルオプションに変更する。【０１３０】  ＣＰＵ１０ａは、第９図の第２の処理ループＬ２において、上述したようなコンパイルオプション決定処理を、ＲＡＭ１０ｂ内にファイル名が一時記録されたソースプログラム１３のそれぞれに対し、繰り返し実行することにより、それら全てのソースプログラム１３に対してデバッグオプションを設定する。そして、ＣＰＵ１０ａは、この第２の処理ループＬ２から脱した後、ステップＳ２０８へ処理を戻す。【０１３１】  なお、このステップＳ２０８〜Ｓ２１２及び第２の処理ループＬ２を含む処理ループが、１回目に実行される際には、事前に登録された一連のソースプログラム１３中の関数を呼び出す関数を内部に含むソースプログラム１３が、その１回目の当該処理ループについての処理対象として抽出される。また、その１回目の当該処理ループの実行後に変数ＤＢがNULLの状態でなかった場合には、２回目の当該処理ループが実行されるが、その際には、１回目において処理対象として抽出されたソースプログラム１３中の関数を呼び出す関数を内部に含むソースプログラム１３が、その２回目の当該処理ループの処理対象として抽出される。さらに、その２回目の当該処理ループの実行後に変数ＤＢがNULLの状態でなかった場合には、さらに３回目の当該処理ループが実行されるが、その際には、２回目において処理対象として抽出されたされたソースプログラム１３中の関数を呼び出す関数を内部に含むソースプログラム１３が、その３回目の当該処理ループの処理対象として抽出される。【０１３２】  このように、このステップＳ２０８〜Ｓ２１２及び第２の処理ループＬ２を含む処理ループが繰り返し実行されることにより、順次連鎖するソースプログラム１３に対してデバッグオプションが設定される。そして、何回目かの当該処理ループを実行したときに、処理対象とした全てのソースプログラム１３に既にデバッグオプションが設定されていた場合には、変数ＤＢがNULLの状態のままとなり、その連鎖が収束する。【０１３３】  ＣＰＵ１０ａは、何回目かの当該処理ループの実行後において第２の処理ループＬ２を実行する前に、変数ＤＢがNULLの状態となった場合には、ステップＳ２１１から処理を分岐して、第３の処理ループＬ３へ処理を進める。【０１３４】  第３の処理ループＬ３では、ＣＰＵ１０ａは、一連のソースプログラム１３を順に処理対象として特定することにより、それらソースプログラム１３のそれぞれに対し、ステップＳ２７１を繰り返し実行する。【０１３５】  ステップ２７１では、ＣＰＵ１０ａは、処理対象ソースプログラム１３用としてＲＡＭ１０ｂ内に用意されているワークテーブルから、全てのコンパイルオプションを読み出す。続いて、ＣＰＵ１０ａは、コンパイラ１４ａを起動し、このコンパイラ１４ａに対し、読み出したコンパイルオプションにてコンパイルを行わせ、このコンパイルにより生成されるオブジェクトプログラムをＨＤＤ１０ｇに記録する。【０１３６】  ＣＰＵ１０ａは、第３の処理ループＬ３において、上述したようなコンパイルを、一連のソースプログラム１３のそれぞれに対し、繰り返し実行することにより、全てのソースプログラム１３についてコンパイルを実行する。そして、ＣＰＵ１０ａは、この第３の処理ループＬ３から脱した後、ステップＳ２１３へ処理を進める。【０１３７】  ステップＳ２１３では、ＣＰＵ１０ａは、リンカ１４ｂを起動し、このリンカ１４ｂに対し、第３の処理ループＬ３において生成された全てのオブジェクトプログラムを結合させ、この結合により生成される実行モジュールをＨＤＤ１０ｇに記録する。その後、ＣＰＵ１０ａは、実行モジュール生成処理を終了し、第２図のステップＳ１０１へ処理を進め、メニュー画面２１を表示装置１０ｃに表示させる。【０１３８】  また、ステップＳ１０２において、メニュー画面２１上においてクリックされたボタンが“キャンセル”ボタン２１ｃであった場合には、ＣＰＵ１０ａは、第２図のメインルーチンを終了する。【０１３９】  上述したような処理が行われるので、本実施形態のコンピュータ１０は、以下に説明するように作用する。【０１４０】  まず、ソフトウエア開発者は、コンピュータ１０の入力装置１０ｄを操作することによって、編集プログラム１２を立ち上げ、テキストエディタの機能をコンピュータ１０上に実現させる。そして、開発者は、このテキストエディタを用いてソースプログラム１３を編集し、ＨＤＤ１０ｇにソースプログラム１３を記録する。【０１４１】  次に、ソフトウエア開発者は、コンピュータ１０の入力装置１０ｄを操作することによって、ソフトウエア開発ツールプログラム１４を立ち上げ、ソフトウエア開発ツールをコ��ピュータ１０上に実現させる。そして、開発者は、作成したソースプログラム１３から実行モジュールを作成する際、実行モジュール作成用のプログラムを起動させるための操作を行う。すると、コンピュータ１０の表示装置１０ｃには、メニュー画面２１が表示される（Ｓ１０１）。【０１４２】  このとき、ソフトウエア開発者は、実行ボタン２１ｂをクリックすることにより（Ｓ１０２；実行ボタン）、一連のソースプログラム１３から実行モジュールを作成することができる（Ｓ１１１）。このとき、第４図のコンパイルオプション制御画面２２における固定指定ボタン２２ｂが選択されたときの設定となっていた場合、実行モジュール作成時のコンパイルにおいては、従来と同様に、事前に規定された必須のコンパイルオプションが、各ソースプログラムに対して使用される。【０１４３】  これに対し、ソフトウエア開発者は、メニュー画面２１の表示中、実行ボタン２１ｂをクリックする前に、設定ボタン２１ａをクリックし（Ｓ１０２；設定ボタン）、第４図のコンパイルオプション制御画面２２における“最適化動的指定”ボタン２２ａ及び“更新経過度順”ボタン２２ｃを選択して“ＯＫ”ボタン２２ｍをクリックしておくと（Ｓ１０３，Ｓ１０６，Ｓ１１０）、コンパイル時には、ソースプログラム１３に使用される最適化オプションが、その更新経過度に応じて適正な最適化オプションに動的に変更される（Ｌ１，Ｓ２５１，Ｓ３０４〜Ｓ３０７，Ｓ３１３〜Ｓ３１５）。これにより、ソフトウエア開発者は、頻繁に修正されて更新されているソースプログラム１３を、実行モジュールの作成速度を高めるような最適化レベルにて簡略にコンパイルし、逆に、頻繁に更新されていないソースプログラム１３を、実行試験における実行モジュールの実効性能を高めるような最適化レベルにて精密にコンパイルすることができる。【０１４４】  また、ソフトウエア開発者は、メニュー画面２１の表示中、実行ボタン２１ｂをクリックする前に、設定ボタン２１ａをクリックし（Ｓ１０２；設定ボタン）、第４図のコンパイルオプション制御画面２２における“最適化動的指定”ボタン２２ａ及び“実行頻度順”ボタン２２ｄを選択して“ＯＫ”ボタン２２ｍをクリックしておくと（Ｓ１０３，Ｓ１０６，Ｓ１１０）、コンパイル時には、ソースプログラム１３に使用される最適化オプションが、その実行頻度に応じて適正な最適化オプションに動的に変更される（Ｌ１，Ｓ２５１，Ｓ３０８〜Ｓ３１２，Ｓ３１６〜Ｓ３１８）。これにより、ソフトウエア開発者は、実行頻度が高いソースプログラム１３を、実行試験における実行モジュールの実行性能を高めるような最適化レベルにて精密にコンパイルし、逆に、実行頻度が低いソースプログラム１３を、実行モジュールの作成速度を高めるような最適化レベルにて簡略にコンパイルすることができる。【０１４５】  また、ソフトウエア開発者は、メニュー画面２１の表示中、実行ボタン２１ｂをクリックする前に、設定ボタン２１ａをクリックし（Ｓ１０２；設定ボタン）、第４図のコンパイルオプション制御画面２２における“最適化動的指定”ボタン２２ａ及び“更新経過度優先”ボタン２２ｅを選択して“ＯＫ”ボタン２２ｍをクリックしておくと（Ｓ１０３，Ｓ１０６，Ｓ１１０）、コンパイル時には、ソースプログラム１３に使用される最適化オプションが、実行モジュールの作成時間と実行試験における実行性能とをバランスさせるような適正な最適化オプションに動的に変更される（Ｌ１，Ｓ２５１，Ｓ３０３〜Ｓ３１２，Ｓ３１９〜Ｓ３２３）。これにより、ソフトウエア開発者は、実行頻度が所定の高さにあるソースプログラム１３を、実行試験における実行モジュールの実行性能を高めるような最適化レベルにて精密にコンパイルし、逆に、実行頻度が所定の高さに無いソースプログラム１３については、頻繁に修正されて更新されているものほど、より低い最適化レベルにて簡略にコンパイルすることができる。【０１４６】  また、ソフトウエア開発者は、メニュー画面２１の表示中、実行ボタン２１ｂをクリックする前に、設定ボタン２１ａをクリックし（Ｓ１０２；設定ボタン）、第４図のコンパイルオプション制御画面２２における“最適化動的指定”ボタン２２ａ及び“実行頻度優先”ボタン２２ｆを選択して“ＯＫ”ボタン２２ｍをクリックしておくと（Ｓ１０３，Ｓ１０６，Ｓ１１０）、コンパイル時には、ソースプログラム１３に使用される最適化オプションが、実行モジュールの作成時間と実行試験における実行性能とをバランスさせるような適正な最適化オプションに動的に変更される（Ｓ３０３〜Ｓ３１２，Ｓ３２４〜Ｓ３２７）。これにより、ソフトウエア開発者は、更新経過度が所定の低さにあるソースプログラム１３を、実行モジュールの作成速度を高めるような最適化レベルにて簡略にコンパイルし、逆に、更新経過度が所定の低さに無いソースプログラム１３については、実行頻度が高いものほど、より高い最適化レベルにて精密にコンパイルすることができる。【０１４７】  また、ソフトウエア開発者は、メニュー画面２１の表示中、実行ボタン２１ｂをクリックする前に、設定ボタン２１ａをクリックし（Ｓ１０２；設定ボタン）、第４図のコンパイルオプション制御画面２２における“最適化動的指定”ボタン２２ａを選択し、且つ“デバッグ動的指定”チェックボックス２２ｇにチェックマークを入力して“ＯＫ”ボタン２２ｍをクリックしておくと（Ｓ１０３，Ｓ１０６，Ｓ１１０）、コンパイル時には、ソースプログラム１３に対してデバッグオプションが付加される（Ｓ２０２，Ｓ２０３，Ｓ２０４；ＮＯ，Ｌ１，Ｓ２５１，Ｓ３２８，Ｓ３２９，Ｓ３３０；ＮＯ，Ｓ３３２；ＮＯ）。これにより、ソフトウエア開発者は、一連のソースプログラム１３に対してデバッグオプションを簡単に設定することができる。【０１４８】  また、ソフトウエア開発者は、メニュー画面２１の表示中、実行ボタン２１ｂをクリックする前に、設定ボタン２１ａをクリックし（Ｓ１０２；設定ボタン）、第４図のコンパイルオプション制御画面２２における“最適化動的指定”ボタン２２ａを選択し、且つ“デバッグ動的指定”チェックボックス２２ｇ及び“詳細デバッグ”チェックボックス２２ｈにチェックマークを入力して“ＯＫ”ボタン２２ｍをクリックしておくと（Ｓ１０３，Ｓ１０６，Ｓ１１０）、コンパイル時には、ソースプログラム１３に対してデバッグオプションが追加設定される（Ｓ２０２〜Ｓ２０５，Ｌ１，Ｓ２５１，Ｓ３２８，Ｓ３２９，Ｓ３３０；ＮＯ）とともに、そのソースプログラム１３に対して使用される最適化オプションが、最適化キャンセルオプションに変更される（Ｓ３３２，Ｓ３３３）。これにより、ソフトウエア開発者は、最適化オプションとデバッグオプションとを共存させることによってデバッグが詳細に行われなくなる可能性がある場合に、それを防ぐことができる。【０１４９】  また、ソフトウエア開発者は、メニュー画面２１の表示中、実行ボタン２１ｂをクリックする前に、設定ボタン２１ａをクリックし（Ｓ１０２；設定ボタン）、第４図のコンパイルオプション制御画面２２における“最適化動的指定”ボタン２２ａを選択し、且つ“デバッグ動的指定”チェックボックス２２ｇ及び“呼出関数デバッグ”チェックボックス２２ｉにチェックマークを入力して“ＯＫ”ボタン２２ｍをクリックしておくと（Ｓ１０３，Ｓ１０６，Ｓ１１０）、コンパイル時には、処理対象のソースプログラム１３には、デバッグオプションが追加設定され（Ｓ２０２〜Ｓ２０５，Ｌ１，Ｓ２５１，Ｓ３２８，３２９）、処理対象のソースプログラム１３中の関数を呼び出す関数を内部に持つソースプログラム１３に対しては、デバッグオプションが追加設定されるとともに、最適化オプションが最適化キャンセルオプションに変更される（Ｓ２０８〜Ｓ２１２，Ｌ２，Ｓ３０１；ＹＥＳ，Ｓ３２８〜Ｓ３３３）。さらに、それらのソースプログラム１３中の関数を呼び出す関数を内部に持つソースプログラム１３や、その呼び出し元となるソースプログラム１３中の関数を呼び出す関数を内部に持つソースプログラム１３など、順次連鎖するソースプログラム１３に対しても、デバッグオプションが追加設定されるとともに、最適化オプションが最適化キャンセルオプションに変更される（Ｓ２０８〜Ｓ２１２，Ｌ２，Ｓ３０１；ＹＥＳ，Ｓ３２８〜Ｓ３３３）。これにより、ソフトウエア開発者は、ソースプログラム１３が不具合を生じさせる場合においてそのソースプログラム１３中の呼出関数により呼び出されるソースプログラムが不具合を生じさせる原因となる可能性があるときでも、各ソースプログラム１３を、いちいち探し出してデバッグオプションを設定しなくても済むようになる。【０１５０】  なお、上述した実施形態の説明においては、リンカ１４ｂによってオブジェクトが結合されるとしていた。このようなリンカ１４ｂを必要とするソフトウエア開発環境としては、例えば、Ｃ言語（ＡＴ＆Ｔ社商標），Ｃ＋＋（ＡＴ＆Ｔ社商標），FORTRAN（ＩＢＭ社商標）などをプログラミング言語として利用するソフトウエア開発環境がある。但し、本発明は、このようにリンカ１４ｂを必要とするソフトウエア開発環境にしか適用できないというものではない。なぜならば、リンカ１４ｂによるオブジェクト結合機能と本発明に係るコンパイルオプションの動的設定機能とが、全く無関係であるためである。従って、このようなリンカ１４ｂを必要としないソフトウエア開発環境においても、コンパイル時に、ソースプログラム１３の状態に応じてコンパイルオプションを動的に設定するという本発明の効果を、十分に奏することができる。このようなリンカ１４ｂを必要としないソフトウエア開発環���としては、例えば、Java（サンマイクロシステムズ社商標）などをプログラミング言語として利用するソフトウエア開発環境がある。
【図面の簡単な説明】
【０１５１】
【図１】第１図は、本発明を実施するための形態であるソフトウエア開発ツールプログラムを実行するためのコンピュータを概略的に示す構成図である。
【図２】第２図は、ソフトウエア開発ツールプログラムによる処理の内容を説明するためのフローチャートである。
【図３】第３図は、メニュー画面の画面例を示す説明図である。
【図４】第４図は、コンパイルオプション制御画面の画面例を示す説明図である。
【図５】第５図は、更新経過度設定入力画面の画面例を示す説明図である。
【図６】第６図は、実行頻度設定入力画面の画面例を示す説明図である。
【図７】第７図は、初期値設定入力画面の画面例を示す説明図である。
【図８】第８図は、実行モジュール生成サブルーチンによる処理の内容を説明するためのフローチャートである。
【図９】第９図は、実行モジュール生成サブルーチンによる処理の内容を説明するためのフローチャートである。
【図１０】第１０図は、実行モジュール生成サブルーチンによる処理の内容を説明するためのフローチャートである。
【図１１】第１１図は、コンパイルオプション決定サブルーチンによる処理の内容を説明するためのフローチャートである。
【図１２】第１２図は、コンパイルオプション決定サブルーチンによる処理の内容を説明するためのフローチャートである。
【図１３】第１３図は、コンパイルオプション決定サブルーチンによる処理の内容を説明するためのフローチャートである。
【図１４】第１４図は、コンパイルオプション決定サブルーチンによる処理の内容を説明するためのフローチャートである。
【符号の説明】
【０１５２】    １０    コンピュータ    １０ａ  ＣＰＵ    １０ｂ  ＲＡＭ    １０ｃ  表示装置    １０ｄ  入力装置    １０ｅ  ＦＤＤ    １０ｆ  ＣＤＤ    １０ｇ  ＨＤＤ    １３    ソースプログラム    １４    ソフトウエア開発ツールプログラム    ２１    メニュー画面    ２２    コンパイルオプション制御画面    ２３    更新経過度設定入力画面    ２４    実行頻度設定入力画面    ２５    初期値設定入力画面
【図１】
0004328328.tif 000002
【図２】
0004328328.tif 000003
【図３】
0004328328.tif 000004
【図４】
0004328328.tif 000005
【図５】
0004328328.tif 000006
【図６】
0004328328.tif 000007
【図７】
0004328328.tif 000008
【図８】
0004328328.tif 000009
【図９】
0004328328.tif 000010
【図１０】
0004328328.tif 000011
【図１１】
0004328328.tif 000012
【図１２】
0004328328.tif 000013
【図１３】
0004328328.tif 000014
【図１４】
0004328328.tif 000015