(57)【要約】      （修正有）【課題】プログラムを再コンパイルすることなく、必要に応じてデバッグライブラリ関数又は動作モードライブラリ関数にリンク又は再リンクできる。【解決手段】プログラム１３５が第１モードでリンクされた場合には、第１ライブラリ２３５ａからの第１コンパイルルーチン２４０ａが関数呼出しに連結され、プログラム１３５が第１モードでリンクされない場合には、第２ライブラリ２３５ｂからの第２コンパイルルーチン２４０ｂが関数呼出しに連結される。第１コンパイルルーチン２４０ａは、ソースコードルーチン中のパラメータが第１の値に設定されたソースコードルーチンからコンパイルされ、第２コンパイルルーチン２４０ｂは、ソースコードルーチン中のパラメータが第２の値に設定されたソースコードルーチンからコンパイルされる。【選択図】図３
2007149089.tif 000002
【特許請求の範囲】
【請求項１】
関数呼出しを含むソフトウェアプログラムであって、
前記プログラムが第１モードでリンクされる場合には、第１ライブラリからの第１コンパイルルーチンが前記関数呼出しに連結され、
前記プログラムが第１モードでリンクされない場合には、第２ライブラリからの第２コンパイルルーチンが前記関数呼出しに連結され、
前記第１コンパイルルーチンが、ソースコードルーチン中のパラメータが第１の値に設定される前記ソースコードルーチンからコンパイルされ、
前記第２コンパイルルーチンが、前記ソースコードルーチン中の前記パラメータが第２の値に設定される前記ソースコードルーチンからコンパイルされ、
前記第１コンパイルルーチンが、前記第２コンパイルルーチンと同じ機能に加えて追加的な機能を備える、ソフトウェアプログラム。
【請求項２】
前記第１コンパイルルーチンの前記追加的な機能が、前記プログラムをデバッグするための情報を提供するように構成される、請求項１に記載のソフトウェアプログラム。
【請求項３】
前記プログラムがテストマシンで実行されるように構成される、請求項１に記載のソフトウェアプログラム。
【請求項４】
前記プログラムが要素のテストを行うように構成される、請求項１に記載のソフトウェアプログラム。
【請求項５】
一対のライブラリであって、
第１コンパイルルーチンを含む第１ライブラリと、
第２コンパイルルーチンを含む第２ライブラリと、
を含み、前記第１コンパイルルーチンが、ソースコードルーチン中のパラメータが第１の値に設定される前記ソースコードルーチンからコンパイルされ、
前記第２コンパイルルーチンが、前記ソースコードルーチン中の前記パラメータが第２の値に設定される前記ソースコードルーチンからコンパイルされ、
前記第１コンパイルルーチンが前記第２コンパイルルーチンと同じ機能に加えて追加的な機能を備える、一対のライブラリ。
【請求項６】
前記第１コンパイルルーチンの前記追加的な機能が、前記第１コンパイルルーチンを呼び出すプログラムをデバッグするための情報を提供するように構成される、請求項５に記載の一対のライブラリ。
【請求項７】
前記第１コンパイルルーチン及び前記第２コンパイルルーチンが、要素のテストを支援するように構成されると共に、テストマシンにおいて前記要素をテストするプログラムの実行を支援するように構成される、請求項５に記載の一対のライブラリ。
【請求項８】
ソフトウェアプログラムを作成する方法であって、
前記プログラムをリンクするモードを特定するステップを含み、前記プログラムのソースコードが関数呼出しを含み、
前記モードを特定するステップにおいて第１モードが特定される場合には、第１ライブラリからの第１コンパイルルーチンのオブジェクトコードを、前記プログラムの以前にコンパイルされる形式で前記関数呼出しに連結することによって、前記プログラムの実行可能形式を作成し、
前記モードを特定するステップにおいて第１モードが特定されない場合には、第２ライブラリからの第２コンパイルルーチンのオブジェクトコードを、前記プログラムの以前にコンパイルされる形式で前記関数呼出しに連結することによって、前記プログラムの前記実行可能形式を作成する、方法。
【請求項９】
前記プログラムの前記実行可能形式をコンピュータにロードするステップと、
前記プログラムの前記実行可能形式を実行するステップと、
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記プログラムを実行するステップの前に要素をテストマシンに接続するステップをさらに含み、前記テストマシンが前記コンピュータを含む、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、代替関数ライブラリを備えるソフトウェアプログラム及びその作成方法に関する。
【背景技術】
【０００２】
最新の製品の性能を、その仕様に対する適合性に関して評価するためのテスト及び測定が、製品の開発と製造のライフサイクルの重要な一部分となっている。かかるテストを行うテストマシンは、多くの場合コンピュータ制御の下で自動化して、様々なシステム又は要素の少なくとも一方について１つ以上の多様なテストを行うことができる。
【０００３】
ユーザは、かかるテストマシンを使用して、上記のようなテストを実行するのに必要なソフトウェアプログラムを作成しなければならない場合がある。ソフトウェアプログラマの労力を軽減するために、テストマシンの製造業者は、ソフトウェアプログラムに使用することのできる共通機能のライブラリを提供することが多い。すべてのソフトウェアプログラムと同様、プログラムが設計通りに機能することを保証するために、必要に応じてプログラム自体をテストして変更することが求められる。プログラム内に存在する可能性のあるエラーを発見して修正することを、プログラムをデバッグするという。この作業では、プログラムをデバッグモードでコンパイルすることがよくあるが、この場合、任意のエラーの種類及びプログラム位置の識別において使用する情報をソフトウェアプログラマに提供する更なるプログラミングステップがプログラムに追加される。この作業には時間と経費を要することが多い。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
プログラムが正確に機能し、使用可能な状態であることがソフトウェアプログラマの要求通りであれば、デバッグに使用する追加的なプログラミングステップを踏むことなく、プログラムの操作の実行速度を高めるためのプログラムの再コンパイルが行われる。ソフトウェアプログラマは、ライブラリ関数によってソフトウェアプログラムに報告されるスタックオーバーフロー又はエラー等の様々な潜在的なプログラムの問題についてチェックしないことも多いが、プログラムが正確に機能するとプログラマが思っても、状況によってはそうでない場合もある。さらに、ライブラリ関数のうちの１つに関する問題を、後のソフトウェアのリリースの段階で製造業者が検出し、修正するということもある。ライブラリ関数のこの新たなバージョンを使用することで、ソフトウェアプログラマ又はユーザによって事前に検出されることのなかったプログラムの問題を表面化させることができる。
【課題を解決するための手段】
【０００５】
代表的な実施形態では、関数呼出しを含むソフトウェアプログラムを開示する。プログラムが第１モードでリンクされる場合には、第１ライブラリからの第１コンパイルルーチンが関数呼出しに連結される。プログラムが第１モードでリンクされない場合には、第２ライブラリからの第２コンパイルルーチンが関数呼出しに連結される。第１コンパイルルーチンは、ソースコードルーチン中のパラメータが第１の値に設定されるソースコードルーチンからコンパイルされ、第２コンパイルルーチンは、ソースコードルーチン中のパラメータが第２の値に設定されるソースコードルーチンからコンパイルされる。第１コンパイルルーチンは、第２コンパイルルーチンと同じ機能に加えて追加的な機能を有する。
【０００６】
別の代表的な実施形態では、第１ライブラリと第２ライブラリを含む一対のライブラリを開示する。第１ライブラリは第１コンパイルルーチンを含み、第２ライブラリは第２コンパイルルーチンを含む。第１コンパイルルーチンは、ソースコードルーチン中のパラメータが第１の値に設定されるソースコードルーチンからコンパイルされ、第２コンパイルルーチンは、ソースコードルーチン中のパラメータが第２の値に設定されるソースコードルーチンからコンパイルされる。第１コンパイルルーチンは、第２コンパイルルーチンと同じ機能に加えて追加的な機能を有する。
【０００７】
さらに別の代表的な実施形態では、ソフトウェアプログラムを作成する方法を開示する。該方法はプログラムをリンクするモードを特定するステップを含み、プログラムのソースコードは関数呼出しを含む。モードを特定するステップにおいて第１モードが特定される場合には、第１ライブラリからの第１コンパイルルーチンのオブジェクトコードを、プログラムの以前にコンパイルされる形式で関数呼出しに連結することによって、プログラムの実行可能形式を作成する。モードを特定するステップにおいて第１モードが特定されない場合には、第２ライブラリからの第２コンパイルルーチンのオブジェクトコードを、プログラムの以前にコンパイルされる形式で関数呼出しに連結することによって、プログラムの実行可能形式を作成する。第１コンパイルルーチンは、第２コンパイルルーチンと同じ機能に加えて追加的な機能を有する。
【０００８】
本明細書中に示す代表的な実施形態の他の態様及び利点は、添付の図面を参照する以下の詳細な説明から明らかとなろう。
【発明を実施するための最良の形態】
【０００９】
添付の図面は、様々な代表的実施形態をより詳しく説明するための視覚的な表示を提供するものであり、当業者はそれらの図面を利用することで、本発明の様々な代表的実施形態及びその特有の利点をより良く理解できよう。尚、図面中、対応する要素には同じ参照番号を付す。
【００１０】
例示を目的とした図面に示すように、本明細書は代替ライブラリにおける関数呼出しを含むソフトウェアプログラムに対する新規の技術を開示するが、このプログラムはデバッグモードと動作モードの両方でコンパイルすることができる。デバッグモードのコンパイル関数はデバッグライブラリで提供され、動作モードのコンパイル関数は別のライブラリで提供される。次に、ソフトウェアプログラムは、必要に応じてソフトウェアプログラムを再コンパイルすることなく、必要に応じてデバッグライブラリ関数又は動作モードライブラリ関数のいずれかにリンク又は再リンクできる。ライブラリ関数の呼出しの成功又は失敗は、ユーザが開発したソフトウェアプログラムを変更及び再コンパイルすることなく、監視することができる。このようなデバッグ作業の以前の方法は、ユーザの開発したソフトウェアプログラムに対してデバッグコードをアクティブにすること又はデバッグコードを追加することの少なくとも一方を行い、その後ソフトウェアプログラムの再コンパイルとリンクを行うことによるものであった。
【００１１】
以下の詳細な説明及び図面においては、同じ要素には同じ参照番号を付して示す。
【００１２】
図１は、様々な代表的実施形態で説明するテストシステム１００のブロック図である。図１において、テストシステム１００は被測定装置（ＤＵＴ）１５０に接続されるテストマシン１０５を含む。被測定装置（ＤＵＴ）１５０は、様々な種類の電子的要素、又は例えば機械的要素のような任意の他の種類の要素であってもよい。テストマシン１０５は、コンピュータ１１０と機器１１５とを含む。図１には、コンピュータ１１０に外部から接続される任意の外部出力装置１４５も示されている。外部出力装置１４５は、例えばプリンタである。コンピュータ１１０は機器１１５に接続され、テスト測定が行われる条件を設定すること、測定を始めること、及び測定結果を収集することによって、機器１１５の動作を制御する。図１に示す機器１１５は、電圧計、流速計等の単一機器を表すものであっても、又は多様な測定及び測定の種類を行うことのできる個々の機器の組合せを表すものであってもよい。
【００１３】
コンピュータは中央処理装置（ＣＰＵ）１２０、メモリ１２５、入力装置１３０、及び内部出力装置１４０を含む。入力装置１３０は、キーボード、又はペン、マウス、トラックポイント、またはタッチスクリーン等の、カーソル操作等に適当なポインティグデバイスであってもよく、内部出力装置１４０はモニタであり得る。モニタはモノクロであってもカラーであってもよい。コンピュータ１１０は、ＤＯＳ、マイクロソフトウィンドウズの各バージョン（ウィンドウズ９５、９８、Ｍｅ、２０００、ＮＴ、ＸＰ等（登録商標））、アップルコンピュータのＭＡＣ  ＯＳＸ、ＵＮＩＸ、Ｌｉｎｕｘ（登録商標）、又はその他の適当なオペレーティングシステム等の、市販されている任意のオペレーティングシステムのうちの１つ以上を実行することができる。動作中、実行可能ソフトウェアテストプログラム１３５（本明細書中ではソフトウェアテストプログラム１３５及びテストプログラム１３５とも称すが、一般的にはソフトウェアプログラム１３５及びプログラム１３５とも称する）は、メモリ１２５又は外部ソース（図示せず）からＣＰＵ１２０にロードされる。
【００１４】
他の実施においては、テストシステム１００が複数のＣＰＵ１２０を含んでもよいが、これらＣＰＵ１２０のすべてが同じテスト機能を実行しなくてもよい。また、それら複数のＣＰＵ１２０は他の入力／出力装置に取り付けてもよく、図１に示す様々な入力／出力装置に取り付けなくてもよい。
【００１５】
図２は、様々な代表的実施形態で説明する、プログラムソースコード要素２０５を実行可能ソフトウェアプログラム１３５に変換することに用いられる要素及びプロセス２００のブロック図である。図２において、コンパイラ２１５はプログラムソースコード要素２０５をプログラムオブジェクトコードモジュール２２０にコンパイルする。プログラムソースコード要素２０５は、本明細書中で一般に関数呼出し２１０とも称するテスタ関数呼出し２１０を含み、該関数呼出し２１０はテストマシン１０５に標準の関数呼出しであり、かかる関数のライブラリで発見される。かかる関数のライブラリは、テストマシン１０５の製造業者によって提供されるのが一般的であるが、プログラムソースコードルーチンはユーザの特定の目的のためにテストマシン１０５のユーザが作成する。リンカー２２５は、プログラムオブジェクトコードモジュール２２０をスタブライブラリ２５０と結合又はリンクし、該スタブライブラリ２５０は図３に示すように、ライブラリルーチンに対するオブジェクトコードを連結するために使用できる。スタブライブラリ２５０の使用以外の方法、例えばコンパイルテスタルーチン２４０ａ、２４０ｂをプログラム１３５内の関数呼出し２１０に直接連結する方法を使用して、関数呼出し２１０に応じることができる。
【００１６】
図３は、様々な代表的実施形態において説明する、２つのライブラリ２３５ａ、２３５ｂのうちの１つからルーチンを呼び出す際にソフトウェアプログラム１３５が使用する要素及びプロセスのブロック図である。図２及び３の両図を参照すると、リンカー２２５は、本明細書中でモードと称する２つの形式のうちの１つで実行可能ソフトウェアテストプログラム１３５を作成する。実行可能ソフトウェアテストプログラム１３５が、本明細書中で第１モードと称するデバッグモードでリンクされると、テスタ関数呼出し２１０はデバッグライブラリ２３５ａからの第１コンパイルテスタルーチン２４０ａに連結される。第１コンパイルテスタルーチン２４０ａは、本明細書中では一般に第１コンパイルルーチン２４０ａと称し、デバッグライブラリ２３５ａは本明細書中では一般に第１ライブラリ２３５ａとも称する。実行可能ソフトウェアテストプログラム１３５が、本明細書中で第２のモードと称する動作モードでリンクされると、テスタ関数呼出し２１０は動作ライブラリ２３５ｂからの第２コンパイルテスタルーチン２４０ｂに置き換えられる。第２コンパイルテストルーチン２４０ｂは本明細書中で一般に第２コンパイルルーチン２４０ｂと称し、また動作ライブラリ２３５ｂは、本明細書中では一般に第２ライブラリ２３５ｂとも称する。このように、ソフトウェアテストプログラムをリンクする際に選択されるモードによって、２つのライブラリ２３５ａ、２３５ｂのうちの１つがソフトウェアテストプログラム１３５に連結される。
【００１７】
実際には、テスタ関数呼出し２１０に対する呼出しにはスタブライブラリを介して応じるが、このスタブライブラリはコンピュータ１１０のオペレーティングシステム２６０に位置するのが一般的であると共に、ユーザによるリンク時に選択されたモードによって、第１スタブ２５１を使用して、アドレステーブル２５５から第１ライブラリ２３５ａ中の第１コンパイルテスタルーチン２４０ａのアドレスを得る。又は、第２のスタブ２５２を使用して、アドレステーブル２５５から第２ライブラリ２３５ｂ中の第２コンパイルテスタルーチン２４０ｂのアドレスを得る。第１コンパイルテスタルーチン２４０ａは、第２コンパイルテスタルーチン２４０ｂの機能に追加的な機能を備える。代表的な実施形態では、第１コンパイルテスタルーチン２４０ａの追加的な機能は、ソフトウェアテストプログラム１３５をデバッグするための情報を提供するものである。第１コンパイルルーチン２４０ａ及び第２コンパイルルーチン２４０ｂは、オペレーティングシステム２６０に位置される内部ルーチン２６５への呼出しを行う。ここで開示する技術は、様々な種類の複数の関数呼出し２１０を有するソフトウェアプログラム１３５に適用できる。スタブライブラリ２５０を使用するのではなく、例えば、リンク時にコンパイルテスタルーチン２４０ａ、２４０ｂのうちの１つをプログラムオブジェクトコードモジュール２２０とリンクする等の、他の技術を使用してもよい。スタブライブラリ２５０とアドレステーブル２５５を使用する以外の技術を使用して関数呼出し２１０に応じることもできるが、アドレステーブル２５５における機能アドレスルックアップと共にスタブライブラリ２５０を使用すれば、使用するオペレーティングシステムの更新に依存せずに、ルーチンに対する呼出しを容易にすることができる。
【００１８】
図４は様々な代表的実施形態で説明する第１コンパイルルーチン２４０ａと第２コンパイルルーチン２４０ｂに対するソースコードルーチン３００のリストである。第２コンパイルテスタルーチン２４０ｂは、ソースコードルーチン３００中のパラメータ３１０（本例では「ＤＥＢＵＧ」）が第２の値（本例ではＮＵＬＬ）に設定されたソースコードルーチン３００からコンパイルされる。第１コンパイルテスタルーチン２４０ａは、ソースコードルーチン３００中のパラメータ３１０が第１の値に設定されたソースコードルーチン３００からコンパイルされるが、この第１の値により、第１コンパイルテスタルーチン２４０ａは第２コンパイルテスタルーチン２４０ｂの機能に加えて追加的な機能を有することとなる。またこの代表的な例ではパラメータ３１０は「ＤＥＢＵＧ」であるが、第１コンパイルテスタルーチン２４０ａのコンパイルに対しては、ＤＥＢＵＧの値はＮＵＬＬではない値を有する。
【００１９】
第２コンパイルテスタルーチン２４０ｂの機能に追加された第１コンパイルテストルーチン２４０ａの機能は、“SCheckStack()”への呼出しを介してルーチンの開始時にスタックをチェックすることと、“SCheckAtm()”への呼出しを介して第１コンパイルテスタルーチン２４０ａの内部のルーチンの戻り値“PETable()”をチェックすることを含む。一方、第２コンパイルテスタルーチン２４０ｂにおける機能の場合、“CHECK_STACK”が第１コンパイルテスタルーチン２４０ａの場合のように“SCheckStack()”へのコンパイルではなくＮＵＬＬにコンパイルされるため、“SCheckStack()”への呼出しを介してルーチンの開始時にスタックをチェックすることはない。また、第２コンパイルテスタルーチン２４０ｂの機能の場合、第１コンパイルテスタルーチン２４０ａのように“CHECK_ATM”が“SCheckAtm()”へのコンパイルではなくＮＵＬＬにコンパイルされるため、“SCheckAtm()”への呼出しを介して第１コンパイルテスタルーチン２４０ａ内部のルーチンの戻り値“PETable()”をチェックすることはない。
【００２０】
図５は様々な代表的実施形態において説明する代替ライブラリ２３５ａ、２３５ｂを用いてプログラム１３５をリンク及び実行するための方法４００のフローチャートである。ブロック４０３で、プログラム１３５がリンク又は再リンクされた場合には、ブロック４０３はブロック４０５に制御を移行する。そうでない場合には、ブロック４０３はブロック４２５に制御を移行する。
【００２１】
ブロック４０５では、デバッグライブラリ（第１ライブラリ）２３５ａ又は動作ライブラリ（第２ライブラリ）のいずれかとプログラムソースコード要素２０５をリンクするモードをユーザが設定する。次いで、ブロック４０５はブロック４１０に制御を移行する。
【００２２】
ブロック４０５でデバッグモードが選択された場合には、ブロック４１０はブロック４１５に制御を移行する。そうでない場合には、ブロック４０５はブロック４２０に制御を移行する。
【００２３】
ブロック４１５では、テストプログラム１３５はデバッグライブラリ２３５ａにおける適切な第１コンパイルテスタルーチン２４０ａとリンクして、実行可能ソフトウェアテストプログラム１３５を作成する。次いで、ブロック４１５はブロック４２５に制御を移行する。
【００２４】
ブロック４２０では、テストプログラム１３５は動作ライブラリ２３５ｂにおける適切な第２コンパイルテスタルーチン２４０ｂとリンクして、実行可能ソフトウェアテストプログラム１３５を作成する。次いで、ブロック４２０はブロック４２５に制御を移行する。
【００２５】
ブロック４２５では、ブロック４１５又はブロック４２０のいずれかで作成された実行可能ソフトウェアテストプログラム１３５がテストマシン１０５のコンピュータ１１０のＣＰＵ１２０にロードされる。次いで、ブロック４２５はブロック４３０に制御を移行する。
【００２６】
ブロック４３０では、被測定装置１５０をテストマシン１０５に接続する。次いで、ブロック４３０はブロック４３５に制御を移行する。
【００２７】
ブロック４３５では、テストマシン１０５のコンピュータ１１０のＣＰＵ１２０において、実行可能ソフトウェアテストプログラム１３５が被測定装置でテストされた順に起動される。次いで、ブロック４３５はブロック４４０に制御を移行する。
【００２８】
ブロック４４０でデバッグモードが選択された場合には、ブロック４４０はブロック４４５に制御を移行する。そうでない場合には、ブロック４４０はブロック４５０に制御を移行する。
【００２９】
ブロック４４５においてプログラム実行中にプログラムエラーが発見された場合には、ブロック４４５はブロック４５５に制御を移行する。そうでない場合には、ブロック４４５はブロック４６０に制御を移行する。
【００３０】
ブロック４５０において、テストすべきＤＵＴ１５０がさらに存在すると判断された場合には、ブロック４５０はブロック４３０に制御を移行する。そうでない場合には、ブロック４５０はプロセスを終了する。
【００３１】
ブロック４５５では、プログラムソースコード要素２０５におけるエラーが修正される。次いで、ブロック４５５はブロック４０５に制御を移行する。
【００３２】
ブロック４６０において、テストすべきＤＵＴ１５０がさらに存在すると判断された場合には、ブロック４６０はブロック４３０に制御を移行する。そうでない場合には、ブロック４６０はブロック４０５に制御を移行する。
【００３３】
テストプログラム１３５を実行している際にそれ以上エラーが発見されず、プログラム１３５が動作モードに再リンクされると、図５の他のステップを介さなくとも適切であるとして、ブロック４２５、４３０、４３５が実行される。ただし、ブロック４０３での判断によりユーザはブロック４２５、４３０、４３５に導かれ、また、ブロック４４０及び４５０での判断により、ユーザは必要に応じてブロック４２５、４３０、及び４３５を出るように、そしてそれらブロックに戻るように導かれる。
【００３４】
代表的な実施形態において、関数呼出し２１０を含むソフトウェアプログラム１３５を開示する。プログラム１３５が第１モードでリンクされる場合には、第１ライブラリ２３５ａからの第１コンパイルルーチン２４０ａが関数呼出し２１０に連結される。プログラム１３５が第１モードでリンクされない場合には、第２ライブラリ２３５ｂからの第２コンパイルルーチン２４０ｂが関数呼出し２１０に連結される。第１コンパイルルーチン２４０ａは、ソースコードルーチン３００中のパラメータ３１０が第１の値に設定されたソースコードルーチン３００からコンパイルされ、第２コンパイルルーチン２４０ｂは、ソースコードルーチン３００中のパラメータ３１０が第２の値に設定されたソースコードルーチン３００からコンパイルされる。第１コンパイルルーチン２４０ａは、第２コンパイルルーチン２４０ｂと同じ機能に加えて追加的な機能を有する。
【００３５】
別の代表的な実施形態では、第１ライブラリ２３５ａと第２ライブラリ２３５ｂを含む一対のライブラリ２３５ａ、２３５ｂを開示する。第１ライブラリ２３５ａは第１コンパイルルーチン２４０ａを含み、第２ライブラリ２３５ｂは第２コンパイルルーチン２４０ｂを含む。第１コンパイルルーチン２４０ａは、ソースコードルーチン３００中のパラメータ３１０が第１の値に設定されたソースコードルーチン３００からコンパイルされ、第２コンパイルルーチン２４０ｂは、ソースコードルーチン３００中のパラメータ３１０が第２の値に設定されたソースコードルーチン３００からコンパイルされる。第１コンパイルルーチン２４０ａは、第２コンパイルルーチン２４０ｂと同じ機能に加えて追加的な機能を有する。
【００３６】
さらに別の代表的な実施形態では、ソフトウェアプログラム１３５を作成する方法４００を開示する。この方法は、プログラム１３５をリンクするモードを特定するステップを含み、プログラム１３５に対するソースコードは関数呼出し２１０を含む。モードを特定するステップで第１モードが特定された場合には、第１ライブラリ２３５ａからの第１コンパイルルーチン２４０ａに対するオブジェクトコードを、プログラム１３５の以前にコンパイルされた形式で関数呼出し２１０に連結することにより、プログラム１３５の実行可能形式が作成される。モードを特定するステップで第１モードが特定されない場合には、第２ライブラリ２３５ｂからの第２コンパイルルーチン２４０ｂに対するオブジェクトコードを、プログラム１３５の以前にコンパイルされた形式で関数呼出し２１０に連結することにより、プログラム１３５の実行可能形式が作成される。第１コンパイルルーチン２４０ａは、第２コンパイルルーチン２４０ｂと同じ機能に加えて追加的な機能を有する。
【００３７】
同じように、多くのデータ処理用の製品においては、上述のシステムはハードウェア要素及びソフトウェア要素の組合せとして実行される。さらに、代表的な実施形態を実施するために必要な機能は、コンピュータ可読媒体（例えば、フロッピーディスク、従来のハードディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュＲＯＭ、不揮発性ＲＯＭ、ＲＡＭ等）において実行可能である。
【００３８】
本明細書において「プログラム記憶媒体」という用語は、広義には例えばフロッピーディスク（登録商標）、従来のハードディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュＲＯＭ、不揮発性ＲＯＭ、ＲＡＭ等、任意のコンピュータメモリを含むが、それらに限定されるものではない。
【００３９】
本明細書で開示したソフトウェアプログラム１３５及び方法の代表的な実施形態では、ユーザはライブラリルーチンに対する呼出しを行うプログラムを作成する。これらの呼出しには、２つの代替ライブラリ２３５ａ、２３５ｂのうちの１つに発見されるコンパイルテスタルーチンから応じることができる。これらライブラリのうちの第1ライブラリ２３５ａにおけるルーチンは、ルーチンの操作に関する追加的情報をユーザに提供するが、典型的にはそれを使用して、例えばソフトウェアテストプログラム１３５としてのソフトウェアプログラム１３５をデバッグすることができる。これらライブラリのうちの第２ライブラリ２３５ｂにおけるルーチンは、第１ライブラリ２３５ａにおけるルーチンと同じであるが、その追加的情報はない。実際、コンパイルルーチン２４０ａ、２４０ｂの両バージョンに対するソースコードは、パラメータ３１０の値を除けば同一である。第１コンパイルルーチン２４０ａ及び第２コンパイルルーチン２４０ｂをコンパイルする際の制御としてパラメータ３１０の値を使用することで、選択された操作チェックを行うこと、並びに第１ライブラリ２３５ａをコンパイルしたものによってプログラム１３５を実行することにおける中間地点での値を報告する等、他の機能を行うことが可能となる。新たなライブラリ機能を有するテストプログラム１３５のプログラムの確認及びデバッグは、ソフトウェアテストプログラム１３５のソースコードを再コンパイルする必要がないため、簡便化される。ソフトウェアテストプログラム１３５のソースコードは、デバッグ中にデバッグライブラリ（第１ライブラリ）２３５ａとリンクし、その後ソフトウェアプログラム１３５の適切な動作を確認した際に、動作ライブラリ（第２ライブラリ）２３５ｂと再リンクするだけでよい。
【００４０】
電子的要素１５０をテストするためのソフトウェアテストプログラム１３５に関して説明を行ってきたが、本明細書中で開示した技術がかかるソフトウェアプログラム１３５に限定されないことは、当業者であれば理解できよう。呼出しに応じるためにライブラリ２３５ａ、２３５ｂのうちのどちらを使用するかに関わらず、ソフトウェアプログラム１３５によって同じ関数呼出しが行われる。さらに、ユーザの書いたコードを再コンパイルするのではなく、テストマシン１０５の製造業者が提供したコードのみを再コンパイルすることによって、変更されるコンパイルコードは製造業者が提供したものに限定される。このことにより、任意の問題の出所に関する混乱が抑えられると共に、さらなる問題の導入によってユーザがコードを変更する可能性を減らすことができる。
【００４１】
本明細書において詳述した代表的な実施形態は本発明の単なる例示であり、本発明を制限するものではない。添付の特許請求の範囲内で、上述の実施形態の形式及び詳細を多様に変化させて同様の実施形態としてもよいことは、当業者であれば理解できよう。
【図面の簡単な説明】
【００４２】
【図１】様々な代表的実施形態で説明するテストシステムのブロック図である。
【図２】様々な代表的実施形態で説明する、プログラムソースコード要素を実行可能ソフトウェアプログラムに変換することに使用される要素及びプロセスのブロック図である。
【図３】様々な代表的実施形態で説明する、２つのライブラリのうちの１つからルーチンを呼び出すことにおいて、ソフトウェアプログラムが使用する要素及びプロセスのブロック図である。
【図４】様々な代表的実施形態で説明する第１コンパイルルーチン及び第２コンパイルルーチンに対するソースコードルーチンのリストである。
【図５】様々な代表的実施形態で説明する代替ライブラリを使用してプログラムをリンク及び実行する方法のフローチャートである。
【符号の説明】
【００４３】
１３５  ソフトウェアプログラム（テストプログラム）
２１０  関数呼出し
２３５ａ  第１ライブラリ
２３５ｂ  第２ライブラリ
２４０ａ  第１コンパイルルーチン
２４０ｂ  第２コンパイルルーチン
３００  ソースコードルーチン
３１０  パラメータ
【図１】
2007149089.tif 000003
【図２】
2007149089.tif 000004
【図３】
2007149089.tif 000005
【図４】
2007149089.tif 000006
【図５】
2007149089.tif 000007