JP2001022560A - ライブラリ関数バージョンアップ方法 - Google Patents

ライブラリ関数バージョンアップ方法

Info

Publication number
JP2001022560A
JP2001022560A JP11190988A JP19098899A JP2001022560A JP 2001022560 A JP2001022560 A JP 2001022560A JP 11190988 A JP11190988 A JP 11190988A JP 19098899 A JP19098899 A JP 19098899A JP 2001022560 A JP2001022560 A JP 2001022560A
Authority
JP
Japan
Prior art keywords
library
function
version
execution system
program
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.)
Granted
Application number
JP11190988A
Other languages
English (en)
Other versions
JP4484001B2 (ja
Inventor
Hiroshi Ichise
浩 市瀬
Hideaki Horibata
英彰 堀端
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyo Communication Equipment Co Ltd
Original Assignee
Toyo Communication Equipment Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toyo Communication Equipment Co Ltd filed Critical Toyo Communication Equipment Co Ltd
Priority to JP19098899A priority Critical patent/JP4484001B2/ja
Publication of JP2001022560A publication Critical patent/JP2001022560A/ja
Application granted granted Critical
Publication of JP4484001B2 publication Critical patent/JP4484001B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 アプリケーションプログラム開発で用いたラ
イブラリ関数と同一のライブラリ関数を全て実行系に保
持することが可能となり、アプリケーションプログラム
の動作検証を行ったときと同一の条件で常にアプリケー
ションプログラムを動作させることが可能となるライブ
ラリ関数のバージョンアップ方法を提供する。 【解決手段】 開発系で開発された配布プログラムを実
行系へインストールする際に、上記実行系のライブラリ
に保持されているライブラリ関数を上記配布プログラム
で使われるライブラリ関数へバージョンアップするライ
ブラリ関数バージョンアップ方法であって、インストー
ル時に実行系のライブラリに保持されている古いバージ
ョンのライブラリ関数をそのまま保持し、新しいバージ
ョンのライブラリ関数を上記実行系のライブラリに追記
する様にした構成となっている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、開発系で開発した
配布プログラムを実行系へインストールする際に行われ
るライブラリ関数のバージョンアップ方法に関し、特
に、アプリケーションプログラム開発で用いたライブラ
リ関数と同一のライブラリ関数を全て実行系に保持する
ことができるライブラリ関数バージョンアップ方法に関
する。
【0002】
【従来の技術】近年、パソコンの普及に伴いソフトウェ
アの低価格化、大量供給、および早期開発の進展に伴
い、ソフトウェアの質の低下、すなわち、ソフトウェア
の品質検査を充分行うことなく市場に供給しなければな
らない状況に至っている。この時、既に市場への提供を
済ませているソフトウェアに対して追加や改善を行った
部分の置き換え(更新:バージョンアップ)を速やかに
実施する必要が生じており、これが重要な技術となって
きている。ここでは、オペレーティングシステムの構成
要素も、オペレーティングシステムにアクセスするライ
ブラリも追加・更新の対象となる。一般に、オペレーテ
ィングシステムでは、複数のアプリケーションプログラ
ムを同時期に並行して実行する場合、アプリケーション
プログラムが異なるアプリケーションプログラムの命令
コードの中に分岐していかないように異なるアドレス空
間を割り当てる様になっている。しかし、多機能化して
肥大化したライブラリ関数の命令コードを個別のアプリ
ケーションソフトウェア毎に組み込むと、全く同じ機能
を持った命令コードが複数個メモリ上に存在することに
なり、メモリの使用効率が悪くなってしまう。ライブラ
リ関数をアプリケーションプログラムに組み込む場合
は、そのアプリケーションプログラムが呼び出している
ライブラリ関数だけをライブラリの中から引き出して組
み込む様にしているが、入出力処理のような利用頻度の
高いものは殆どのアプリケーションプログラムの中にそ
のライブラリ関数が重なって入ることになってしまう。
そこで、同一のライブラリ関数の命令コード一式をメモ
リ上に一つだけ置き、各アプリケーションプログラム
は、実行権を得ている間にそれらの命令コード一式を利
用する方式(ダイナミックリンク)がとられるようにな
ってきている。この方式では、アプリケーションプログ
ラムを開発する側(開発系と呼ぶ)が利用しているライ
ブラリ関数のバージョンと、開発したアプリケーション
プログラムを実行する側(実行系と呼ぶ)が利用してい
るライブラリ関数のバージョンとが一致するとは限らな
い。そこで、ライブラリ関数のバージョンがより新しい
場合はより古いバージョンの機能を全て包含しているこ
とを前提として、開発したアプリケーションプログラム
を実行系にインストールするときに、そのアプリケーシ
ョンプログラムが利用する開発系のライブラリ関数のバ
ージョンと実行系のライブラリ関数のバージョンとを比
較して、開発系のライブラリ関数のバージョンの方が実
行系のライブラリ関数のバージョンよりもより新しい場
合に、開発系のライブラリ関数を実行系にインストール
することがなされている。
【0003】上述した開発系のライブラリ関数を実行系
にインストールしてバージョンアップする方法の一例に
ついて図9を参照して説明する。図9は、従来のライブ
ラリ関数のバージョンアップ方法の手順を示す図であ
る。図9において、点線の左側が開発者側の開発系2で
あり、点線の右側がパソコン等の実行系4である。図9
に示す様に、まず、開発者側で、バージョンアップ対象
であるライブラリを利用している開発者が開発している
アプリケーションプログラム1とそのバージョンアップ
対象のライブラリ3とをコンパイラ5でコンパイルして
配布プログラム7を作成する。次に、実行系4において
インストーラ9が上記開発系2から供給された上記配布
プログラム7と共にバージョンアップ対象のライブラリ
3のインストールを実行すると、上記配布プログラム7
が実行系4のハードディスク11のプログラムファイル
13に書き込まれると共に、OS15を用いて上記ハー
ドディスク11の実行系ライブラリ(バージョン番号
f,1)17を上記バージョンアップ対象のライブラリ
(バージョン番号f,2)に書き換えることにより、バ
ージョンアップを行っている。次に、上記図9に示した
バージョンアップ方法の詳細について説明する。まず、
図10〜図13を参照して上記アプリケーションプログ
ラム1のソースコード、バージョンアップ対象のライブ
ラリ3、配布プログラム7、および実行系ライブラリ1
7について説明する。図10に示す様に、上記アプリケ
ーションプログラム1のソースコードは、fというライ
ブラリ関数名19をもつライブラリ関数を呼び出す記述
を含むC言語で記述したプログラムのソースコードであ
って、図10ではライブラリ関数名19の関数呼び出し
を行う文の記述のみ例示しているが、その全体はC言語
の言語処理系で処理可能なプログラムの記述となってい
ることは言うまでもない。上記ソースコードをコンパイ
ルする作業を行うアプリケーションプログラム開発者が
利用するライブラリが、開発系ライブラリ3であり、そ
の構造例を図11に示す。上記開発系ライブラリ3は、
一つのライブラリファイル21でできており、その中に
は、複数の関数ブロック23がある。関数ブロック23
は、その開始と終了が明確になっており、コンパイラ5
によって個別に読み出し可能である。上記関数ブロック
23には、関数名フィールド25があり、上記コンパイ
ラ5によって、個別に読み出した関数ブロックの中から
読み出し可能である。また、上記関数ブロック23には
バージョンフィールド27があり、その関数ブロック2
3のバージョンを識別する符号を記録している。上記バ
ージョンを識別する符号としては、その関数ブロック2
3を開発した日付時刻など、ライブラリ関数開発の新旧
関係を識別可能な情報が用いられる。上記開発系ライブ
ラリ3の中で、同一の関数名が関数名フィールド25に
書き込まれている関数ブロック23が複数個重複して存
在するようなことはない。
【0004】次に、アプリケーションプログラム開発者
は、上記アプリケーションプログラム1のソースコード
を作成する作業を終えると、上記コンパイラ5の入力に
上記ソースコードと開発系ライブラリ3を与えてコンパ
イラ5を起動し、上記コンパイラ5は処理を終了する
と、配布プログラム7を生成するわけであるが、このコ
ンパイラ5の処理手順の例を、図14を参照して以下に
説明する。図14のステップ101において、上記コン
パイラ5は、処理を開始するとまずソースコード読み込
み処理を実行する。上記ソースコード読み込み処理は、
アプリケーションプログラム開発者がコンパイラ5に入
力として与えた上記ソースコードを、先頭から読み込み
コンパイルする。次に、ステップ103において、読み
込んだ部分がライブラリ関数呼び出しの形式であるかど
うかをライブラリ呼び出し判定処理で判定し、このライ
ブラリ呼び出し判定処理の判定の結果、読み込んだ部分
がライブラリ関数呼び出し処理でなかった場合は、一般
コード生成処理を実行する(ステップ105)。上記一
般コード生成処理は、ライブラリ関数呼び出し以外のC
言語にしたがう記述を命令コードにコンパイルする処理
である。上記ステップ103において、読み込んだ部分
がライブラリ関数呼び出しであった場合、ステップ10
7においてライブラリ呼び出し命令生成処理を実行す
る。上記ライブラリ呼び出し命令生成処理は、図10に
示したソースコード(ライブラリ関数名19がfである
ライブラリ関数を呼び出す処理)を図12に示す配布プ
ログラムにコンパイルし、その配布プログラム7に命令
コードを書き込む。
【0005】従来技術におけるコンパイラ5は、ライブ
ラリ関数名19をfとするライブラリ関数を呼び出す部
分を、図12に示すように、そのライブラリ関数名19
に応じたライブラリ参照フィールド29を持つライブラ
リ呼び出し命令31に変換している。次に、ステップ1
09において、上記コンパイラ5は、ソースコード読み
込み処理(ステップ101)で読み込み、一般コード生
成処理(ステップ105)またはライブラリ呼び出し命
令生成処理(ステップ107)で命令コードを生成した
読み込み部分が、入力しているソースコード4の最後の
部分であるかどうかを処理終了判定処理で判定し、最後
の部分でなかったならば再び上記ステップ101のソー
スコード読み込み処理から処理を行い、最後の部分であ
ったならば、配布プログラム7の生成を完了して、コン
パイラ5の処理を終了する。
【0006】次に、アプリケーションプログラム開発者
がアプリケーションプログラムの開発を終了した後に、
アプリケーションプログラム利用者が利用できるように
するには、コンパイル処理を行った後にできあがった配
布プログラム7を実行系にインストールするわけである
が、このインストーラ9によるインストール処理につい
て図15を参照して以下に説明する。まず、図15のス
テップ111において、上記インストーラ9は、処理を
開始すると、まず上記配布プログラム7の複写処理を実
行する。この配布プログラムの複写処理は、上記配布プ
ログラム7を実行系が読み取って実行可能な場所および
格納形式でプログラムファイル13に複写するものであ
る。ここでは、単純に、配布プログラム7と全く同一の
形式とする。上記インストーラ9は、次に、ステップ1
13において、上記配布プログラム7が利用するライブ
ラリ関数のバージョン番号を検出するバージョン番号の
検出処理を実行する。この検出処理においては、上記イ
ンストーラ9は上記配布プログラム7を読み取り、その
中からライブラリ呼び出し命令31(図12参照)を識
別し、その中のライブラリ参照フィールド29を読み出
して、呼び出すライブラリ関数名19を識別し、そのラ
イブラリ関数名19と同一名称の上記開発系ライブラリ
3の関数名フィールド25を有する関数ブロック23を
ライブラリファイル21から呼び出し、そのバージョン
フィールド27を読み出して、利用するバージョン番号
を検出する。
【0007】ここで、上記インストーラ9は、上記実行
系4の側で動作する。そして、上記配布プログラム7と
開発系ライブラリ3のライブラリファイル21を一つの
可搬媒体に記録しておくなどの措置をとり、上記インス
トーラ9が開発系ライブラリ3のライブラリファイル2
1を読み取り可能としておく。上記インストーラ9は、
次に、ステップ115において、上記実行系4の中の規
定位置に格納してある実行系ライブラリ17のライブラ
リファイル33(図13参照)を読み取り、上記開発系
ライブラリ3のライブラリファイル21に対して行った
のと同様にして、実行系ライブラリ17の中から、呼び
出すライブラリ関数名19と同じ名称の関数名フィール
ド35を有する関数ブロック37を読み取り、その中の
バージョンフィールド39を読み取ってインストールし
たアプリケーションプログラムが利用可能なバージョン
番号のライブラリを検出する。上記インストーラ9は、
利用可能バージョン番号検出処理(ステップ115)に
おいて、上記実行系ライブラリ17の関数ブロック37
をライブラリファイル33の中に見いだすことがなかっ
た場合は、ステップ117において、利用可能バージョ
ン番号の検出成否判定処理で検出無しと判定し、この場
合は、開発系ライブラリ3から読み取った関数ブロック
23を実行系ライブラリ17のライブラリファイル35
の中に無条件に追加するライブラリの複写処理を実行す
る(ステップ119)。
【0008】そして、上記ステップ117の利用可能バ
ージョン番号の検出成否判定処理で検出有りと判定した
場合は、開発系ライブラリ3のライブラリファイル21
の関数ブロック23のバージョンフィールド27から読
み取ったバージョン番号と、上記実行系ライブラリ17
のライブラリファイル33の関数ブロック37のバージ
ョンフィールド39から読み取ったバージョン番号とを
比較する利用可能判定処理を実行する(ステップ12
1)。上記利用可能判定処理は、利用可能バージョン番
号が利用するバージョン番号よりもより小さな値であ
り、利用可能バージョン番号の方がより古いことを示し
ている場合ならば、ステップ123においてライブラリ
の上書き処理を実行する。上記ライブラリ上書き処理で
は、上記実行系ライブラリ17のライブラリファイル3
3の中から利用可能バージョン番号の検出処理(ステッ
プ115)で読み取った関数ブロック37と同じ格納位
置に、上記開発系ライブラリ3のライブラリファイル2
1の中から利用するバージョン番号の検出処理(ステッ
プ113)で読み取った関数ブロック23を上書きす
る。図15に示した例では、一つのライブラリ関数につ
いてのみ処理するようにしているが、利用するバージョ
ンの検出処理(ステップ113)以降の処理を、上記配
布プログラム7の中のライブラリ呼出命令全てについて
適用することで、複数のライブラリ関数について処理す
ることができる。上記実行系ライブラリ17の例を図1
3に示す。従来方式の実行系ライブラリ17の形式は、
図11に示す従来方式の開発系ライブラリの例と同じ形
式となる。
【0009】次に、上記従来技術の実行系4の動作処理
について図16を参照して説明する。上記実行系4を操
作してアプリケーションプログラムを起動する利用者
が、上記実行系4に対する入力として、上記インストー
ラ9が作成したプログラムファイル13を指定して、上
記実行系4の処理を起動すると、起動した実行系4は、
まずプログラムファイル13をメモリ上に読み込む、プ
ログラムのロードを実行する(ステップ125)。この
プログラムのロードが終わると、上記実行系4は、ロー
ドしたプログラムファイル13の内容である命令コード
を解析して、実行すべき命令コードを特定する命令の解
析処理を行う(ステップ127)。その結果、実行すべ
き命令コードがライブラリ呼出命令であるかどうかを、
ステップ129のライブラリ呼出判定処理で判定し、ラ
イブラリ呼出命令でなければ一般命令の実行を行う(ス
テップ131)。一般命令の実行では、ライブラリ呼出
命令以外の全ての命令コードの実行を行う。上記ステッ
プ129におけるライブラリ呼出判定処理でライブラリ
呼出命令であると判定した場合は、その命令コードのラ
イブラリ参照フィールドを読み出し、読み出すライブラ
リ関数名を識別し、そのライブラリ関数名と同じ名称の
関数名フィールド35を有する関数ブロック37のコー
ドエリア41を実行系ライブラリ17のライブラリファ
イル33から読み取り、メモリ上にロードする、ライブ
ラリのロードを行う(ステップ133)。上記ライブラ
リのロードでは、すでにメモリ上に同一名称のライブラ
リ関数があれば、そのライブラリ関数のコードエリアの
メモリ上へのロードは行わない。
【0010】上記ライブラリのロードを終えると、上記
実行系4は、ライブラリのロードでコードエリア41か
らメモリ上にロードした命令コードの列、もしくは既に
メモリ上に存在していた場合には、コードエリア41か
らメモリ上にロードしたときに相当する命令コードの列
を実行するライブラリの実行を行う(ステップ13
5)。次に、一般命令の実行若しくはライブラリの実行
を行った実行系4は、その結果処理が終了するかどうか
を判定する実行終了判定処理を行い(ステップ13
7)、終了しないと判定したならば引き続く命令コード
を識別して命令の解析(ステップ127)からの処理を
再び行う。終了すると判定したならば、上記実行系4は
処理を終了する。以上のようにして、従来技術では、ア
プリケーションプログラムを開発する開発系2が有する
ライブラリ関数のバージョンと、アプリケーションプロ
グラムを実行する実行系4が有するライブラリ関数のバ
ージョンに違いがあったとしても、インストール時によ
り新しいバージョンに実行系4が有するライブラリ関数
を更新することによって、従来から実行系4に存在する
アプリケーションプログラムの動作も新しく開発したア
プリケーションプログラムの動作もともに可能にしてい
た。
【0011】
【発明が解決しようとする課題】しかしながら、以上述
べた従来技術では、ライブラリ関数のバージョンがより
新しい場合は古いバージョンの機能を全て包含している
ことが、新しいバージョンのライブラリ関数の開発にお
いて保証できない場合、新しいアプリケーションプログ
ラムを実行系にインストールするときに行うライブラリ
の上書き処理(図15のステップ123)の結果、新し
くインストールしたアプリケーションプログラムは正常
に動作するものの、実行系に既に存在していたアプリケ
ーションプログラムのいくつかの動作が正常でなくなっ
てしまう問題があった。すなわち、上述した従来技術で
は、実行系ライブラリを新しいバージョンに更新する時
に、古いバージョンのライブラリの上に上書きするため
に古いバージョンのライブラリ関数を用いるアプリケー
ションプログラムが正常に実行できなくなってしまうも
のであった。この様な状況が生じるのは、新しいバージ
ョンのライブラリ関数を開発する開発者は、通常、旧版
との互換性を意識して開発を進めるのが一般的である
が、新しい機能を実現するために、必ずしも古いバージ
ョンのライブラリ関数の全機能をそのまま踏襲できると
は限らないからである。本発明は、上記事情に鑑みてな
されたものであって、アプリケーションプログラム開発
で用いたライブラリ関数と同一のライブラリ関数を全て
実行系に保持することができるライブラリ関数バージョ
ンアップ方法を提供することを目的とする。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、開発系で開発された配布プログラムを実
行系へインストールする際に、上記実行系のライブラリ
に保持されているライブラリ関数を上記配布プログラム
で使われるライブラリ関数へバージョンアップするライ
ブラリ関数バージョンアップ方法において、インストー
ル時に実行系のライブラリに保持されている古いバージ
ョンのライブラリ関数をそのまま保持し、新しいバージ
ョンのライブラリ関数を上記実行系のライブラリに追記
する様にしたことを特徴とする。
【0013】
【発明の実施の形態】以下、本発明を図示した実施形態
に基づいて説明する。図1は、本発明によるライブラリ
関数のバージョンアップ方法の一実施形態の手順を示す
図である。本発明によるライブラリ関数のバージョンア
ップ方法の要点は、配布プログラムにライブラリ関数の
バージョン番号を付けて実行系へ配布し、インストール
時に古いバージョンのライブラリ関数に追記して新しい
バージョンのライブラリ関数を実行系ライブラリに書き
込む様にしたことである。すなわち、図1に示す様に、
点線の左側を開発者側の開発系52とし、点線の右側を
パソコン等の実行系54とした場合、まず、開発者側
で、バージョンアップ対象であるライブラリを利用して
いる開発者が開発しているアプリケーションプログラム
51とバージョンアップ対象のライブラリ53とをコン
パイラ55でコンパイルして配布プログラム57を作成
する。ここで、上記配布プログラム57は、図4におい
て後述する如くに、そのライブラリ呼出命令71中に呼
び出すライブラリ関数のバージョンを指定する関数バー
ジョンフィールド73を有している。次に、上記開発系
52から実行系54のインストーラ59へ上記配布プロ
グラム57と共にバージョンアップ対象のライブラリ5
3がインストールされると、上記配布プログラム57が
実行系54のハードディスク61のプログラムファイル
63に書き込まれると共に、後述する如くに、OS65
を用いて上記ハードディスク61の実行系ライブラリ6
7に、図5に示す様に、上記バージョンアップ対象のラ
イブラリ(バージョン番号f,2)を追記する。
【0014】次に、上記図1に示したバージョンアップ
方法の詳細について説明する。まず、図2〜図5を参照
して上記アプリケーションプログラム51のソースコー
ド、バージョンアップ対象のライブラリ53、配布プロ
グラム57、および実行系ライブラリ67について説明
する。図2に示す様に、上記アプリケーションプログラ
ム51のソースコードは、fというライブラリ関数名1
9をもつライブラリ関数を呼び出す記述を持つC言語で
記述したプログラムのソースコードであって、図2で
は、ライブラリ関数名19の関数呼び出しを行う文の記
述のみ例示しているが、その全体はC言語の言語処理系
で処理可能なプログラムの記述となっている。上記ソー
スコードをコンパイルする作業を行うアプリケーション
プログラム開発者が利用するライブラリが、開発系ライ
ブラリ53であり、その構造例を図3に示している。開
発系ライブラリ53は、一つのライブラリファイル21
でできており、その中には、複数の関数ブロック23が
ある。関数ブロック23は、その開始と終了が明確にな
っており、コンパイラ55によって個別に読み出し可能
である。上記関数ブロック23には、関数名フィールド
25があり、上記コンパイラ55によって、個別に読み
出した関数ブロックの中から読み出し可能である。ま
た、上記関数ブロック23にはバージョンフィールド2
7があり、その関数ブロック23のバージョンを識別す
る番号を記録している。バージョンを識別する番号とし
ては、その関数ブロック23を開発した日付時刻など、
ライブラリ関数開発の新旧関係を識別可能な情報が用い
られる。
【0015】次に、上記アプリケーションプログラム開
発者は、上記アプリケーションプログラム51のソース
コードを作成する作業を終えると、上記コンパイラ55
の入力にソースコードと開発系ライブラリ53を与えて
コンパイラ55を起動し、コンパイラ55の処理が終了
すると、配布プログラム57を生成するわけであるが、
このコンパイラ55の処理手順を図6を参照して以下に
説明する。図6のステップ201において、上記コンパ
イラ55は、処理を開始するとまずソースコード読み込
み処理を実行する。このソースコード読み込み処理は、
アプリケーションプログラム開発者が上記コンパイラ5
5に入力として与えたソースコードを先頭から読み込
み、コンパイルする。次に、ステップ203において、
上記読み込んだ部分がライブラリ関数呼び出しの形式で
あるかどうかをライブラリ呼び出し判定処理で判定し、
このライブラリ呼び出し判定処理の判定の結果、読み込
んだ部分がライブラリ関数呼出処理でなかった場合は、
一般コード生成処理を実行する(ステップ205)。こ
の一般コード生成処理は、この実施例においては、ライ
ブラリ関数呼出以外のC言語にしたがう記述を命令コー
ドにコンパイルする処理である。上記ステップ203に
おいて、読み込んだ部分がライブラリ関数呼出であった
場合、次に、ステップ207において、バージョン番号
読み込み処理が行われる。このバージョン番号読み込み
処理は、次のライブラリ呼出命令生成処理(ステップ2
09)で必要とされる配布プログラム57中に書き込む
バージョン番号を得るためのもので、図2に示すソース
コードをソースコード読み込み処理(ステップ201)
で読み込んで判別しているライブラリ関数名19を用い
て、図5に示す様にそれと同じ名称の関数名フィールド
75を有する関数ブロック77を実行系ライブラリ53
のライブラリファイル79から読み込み、そのバージョ
ンフィールド81を読み込むことによって、上記配布プ
ログラム57の中に書き込むバージョン番号を得る様に
している。
【0016】そして、次に、ステップ209において、
ライブラリ呼出命令生成処理を実行する。このライブラ
リ呼出命令生成処理は、図2に示した例(ライブラリ関
数名19がfであるライブラリ関数を呼び出す処理)
を、図4に示す例にコンパイルし、配布プログラム57
に命令コードを書き込む。上記コンパイラ55は、ライ
ブラリ関数名19をfとするライブラリ関数を呼び出す
部分を図4に示すように、そのライブラリ関数名19に
応じたライブラリ参照フィールド83および呼び出すラ
イブラリ関数のバージョンを指定する関数バージョンフ
ィールド73を持つライブラリを呼び出す命令71に変
換している。上記コンパイラ55は、ソースコード読み
込み処理(ステップ201)で読み込み、一般コード生
成処理(ステップ205)またはライブラリ呼出命令生
成処理(ステップ209)で命令コードを生成し、読み
込んだ部分が、入力しているソースコードの最後の部分
であるかどうかを処理終了判定処理で判定し(ステップ
211)、最後の部分でなかったならば再びステップ2
01のソースコード読み込み処理から処理を行い、最後
の部分であったならば、上記配布プログラム57の生成
を完了して、コンパイルの処理を終了する。
【0017】次に、アプリケーションプログラム開発者
がアプリケーションプログラムの開発を終了した後に、
アプリケーションプログラム利用者が利用できるように
するには、コンパイル処理を行った後にできあがった配
布プログラム57を実行系にインストールするわけであ
るが、このインストーラ59によるインストール処理に
ついて図7を参照して以下に説明する。まず、図7のス
テップ213において、上記インストーラ59は、処理
を開始すると、まず配布プログラム57の複写処理を実
行する。この配布プログラムの複写処理は、上記配布プ
ログラム57を実行系54が読み取って実行可能な場所
および格納形式でプログラムファイル63に複写する。
ここでは、単純に、配布プログラム57と全く同一の形
式とする。上記インストーラ59は、次に、ステップ2
15において、配布プログラム57が利用するライブラ
リ関数のバージョン番号を検出するバージョン番号の検
出処理を実行する。すなわち、上記インストーラ59は
配布プログラム57を読み取り、その中からライブラリ
呼出命令71を識別し、その中のライブラリ参照フィー
ルドを読み出して、呼び出すライブラリ関数名19を識
別し、そのライブラリ関数名19と同一名称の関数名フ
ィールド25を有する関数ブロック23をライブラリフ
ァイル21から読み出し、そのバージョンフィールド2
7を読み出して、利用するバージョン番号を検出する。
【0018】次に、インストーラ2は、ステップ217
において、利用可能バージョン番号の検出処理を行う。
この利用可能バージョン番号の検出処理は、実施例にお
ける実行系ライブラリ67のライブラリファイル79の
中から、バージョン番号を検出する対象としているライ
ブラリ関数名19と同じ名称の関数名フィールド75を
有する全ての関数ブロック77を読み取って、それらの
中のバージョンフィールド81の全てを読み取る。次
に、ステップ219において、上記インストーラ59
は、上記利用可能バージョン番号の検出処理で読み取っ
た全てのバージョン番号の中に、利用するバージョン番
号の検出処理で読み取ったバージョン番号があるかどう
かを判定する利用可能判定処理を行う。その結果、利用
するバージョン番号の検出処理で読み取ったバージョン
番号が、利用可能バージョン番号の検出処理で読み取っ
たバージョン番号の中にない場合、ステップ221にお
いてライブラリ複写処理を行う。このライブラリ複写処
理(ステップ221)は、開発系ライブラリ53から読
み取った関数ブロック23を実行系ライブラリ67のラ
イブラリファイル79の中に無条件に追加する処理であ
る。ここで、上記実行系ライブラリ67の例を図5に示
す。この実施形態においては、上記実行系ライブラリ6
7のライブラリファイル79の中に、バージョンフィー
ルド81の内容が異なれば、関数名フィールド75の内
容が同一の関数ブロック77が複数存在する。また、バ
ージョンフィールド81の内容がともに等しく、かつ関
数名フィールド75の内容がともに等しい。2つの関数
ブロック77は存在しないように構成されている。
【0019】次に、上記実行系54の動作処理について
図8を参照して説明する。上記実行系54を操作してア
プリケーションプログラムを起動する利用者は、実行系
54に対する入力として、インストーラ59が作成した
プログラムファイル63を指定して、実行系54の処理
を起動すると、起動した実行系54は、まずプログラム
ファイル63をメモリ上に読み込む、プログラムのロー
ドを実行する(ステップ223)。上記プログラムのロ
ードが終わると、上記実行系54は、ロードしたプログ
ラムファイル63の内容であった命令コードを解析し
て、実行すべき命令コードを特定する命令の解析処理を
行う(ステップ225)。その結果、ステップ227に
おいて、実行すべき命令コードがライブラリ呼出命令で
あるかどうかをライブラリ呼出判定処理で判定し、ライ
ブラリ呼出命令でなければ一般命令の実行を行う(ステ
ップ229)。この一般命令の実行では、ライブラリ呼
出命令以外の全ての命令コードの実行を行う。上記ライ
ブラリ呼出判定処理(ステップ227)でライブラリ呼
出命令であると判定した場合は、ステップ231におい
て上記命令の解析処理で識別した実行すべき命令コード
の中から、呼び出すべきライブラリ関数のバージョン番
号を検出するバージョン番号検出処理をライブラリのロ
ードの直前に行う。ここで、この実施形態におけるプロ
グラムファイル63の形式は、図4に示す配布プログラ
ムと同一の形式であり、その中の、ライブラリ呼出命令
71は、そのライブラリ関数バージョンフィールド73
に、呼び出すべきバージョンを保持している。上記バー
ジョン番号検出処理では、呼び出すべきライブラリ関数
のバージョン番号の検出を、このライブラリ関数バージ
ョンフィールド73を読むことで行う。
【0020】次に、ステップ233におけるライブラリ
のロードでは、上記実行系ライブラリ67のライブラリ
ファイル79の中から、呼び出すべきライブラリ関数名
と同じ名称を有する関数名フィールド75を有し、かつ
上記バージョン検索処理で検出したバージョン番号と同
じ番号を有するバージョンフィールドを有する関数ブロ
ック77のコードエリア85を読み出し、メモリ上にロ
ードする。次に、上記ライブラリのロードを終えると、
上記実行系54は、上記ライブラリのロードの場合では
コードエリア85からメモリ上にロードした命令コード
の列、もしくは既にメモリ上に存在していた場合には、
コードエリア18からメモリ上にロードしたときに相当
する命令コードの列を実行するライブラリの実行を行う
(ステップ235)。一般命令の実行もしくはライブラ
リの実行を行った実行系54は、次に、ステップ237
において、その結果処理が終了するかどうかを判定する
実行終了判定処理を行い、終了しないと判定したならば
引き続く命令コードを識別して上記命令の解析(ステッ
プ225)からの処理を再び行う。終了すると判定した
ならば、実行系54は処理を終了する。
【0021】
【発明の効果】本発明は、以上説明した様に、配布プロ
グラムにライブラリ関数のバージョン番号を付けて実行
系へ配布し、インストール時に古いバージョンのライブ
ラリ関数に追記して新しいバージョンのライブラリ関数
を実行系ライブラリに書き込む様にしたので、アプリケ
ーションプログラム開発で用いたライブラリ関数と同一
のライブラリ関数を全て実行系に保持することが可能と
なり、アプリケーションプログラムの動作検証を行った
ときと同一の条件で常にアプリケーションプログラムを
動作させることが可能となる。
【図面の簡単な説明】
【図1】本発明によるライブラリ関数のバージョンアッ
プ方法の一実施形態の手順を示す図である。
【図2】図1に示したプログラムソースを示す図であ
る。
【図3】図1に示した開発系ライブラリの内部構造を示
す図である。
【図4】図1に示した配布プログラムを示す図である。
【図5】図1に示した実行系ライブラリを示す図であ
る。
【図6】図1に示したコンパイラの処理手順を示すフロ
ーチャートである。
【図7】図1に示したインストーラの処理手順を示すフ
ローチャートである。
【図8】図1に示した実行系の処理手順を示すフローチ
ャートである。
【図9】従来のライブラリ関数のバージョンアップ方式
の手順を示す図である。
【図10】図9に示したプログラムソースを示す図であ
る。
【図11】図9に示した開発系ライブラリの内部構造を
示す図である。
【図12】図9に示した配布プログラムを示す図であ
る。
【図13】図9に示した実行系ライブラリを示す図であ
る。
【図14】図9に示したコンパイラの処理手順を示すフ
ローチャートである。
【図15】図9に示したインストーラの処理手順を示す
フローチャートである。
【図16】図9に示した実行系の処理手順を示すフロー
チャートである。
【符号の説明】
1…ソースコード、 2…開発
系、3…開発系ライブラリ、 4…実
行系、5…コンパイラ、 7…
配布プログラム、9…インストーラ、
13…プログラムファイル、15…OS、
17…実行系ライブラリ、19
…ライブラリ関数名、 21…ライブラ
リファイル、23…関数ブロック、
25…関数名フィールド、27…バージョンフィール
ド、 29…ライブラリ参照フィールド、3
1…ライブラリ呼出命令、 33…ライブ
ラリファイル、35…関数名フィールド、
37…関数ブロック、39…バージョンフィール
ド、 41…コードエリア、51…ソースコ
ード、 52…開発系、53…開発
系ライブラリ、 54…実行系、55…
コンパイラ、 57…配布プログ
ラム、59…インストーラ、 63
…実行系ライブラリ、65…OS、
67…実行系ライブラリ、71…ライブラリ
呼出命令、73…ライブラリ関数バージョンフィール
ド、75…関数名フィールド、 77…
関数ブロック、79…ライブラリファイル、
81…バージョンフィールド、83…ライブラリ関
数参照フィールド、 85…コードエリア、101〜
237…各ステップ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 開発系で開発された配布プログラムを実
    行系へインストールする際に、上記実行系のライブラリ
    に保持されているライブラリ関数を上記配布プログラム
    で使われるライブラリ関数へバージョンアップするライ
    ブラリ関数バージョンアップ方法であって、インストー
    ル時に実行系のライブラリに保持されている古いバージ
    ョンのライブラリ関数をそのまま保持し、新しいバージ
    ョンのライブラリ関数を上記実行系のライブラリに追記
    する様にしたことを特徴とするライブラリ関数バージョ
    ンアップ方法。
  2. 【請求項2】 前記配布プログラムのライブラリ呼出命
    令コードに、当該ライブラリ関数と、そのバージョンを
    示す符号とが記述されていることを特徴とするライブラ
    リ関数バージョンアップ方法。
JP19098899A 1999-07-05 1999-07-05 ライブラリ関数バージョン一致方法。 Expired - Fee Related JP4484001B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19098899A JP4484001B2 (ja) 1999-07-05 1999-07-05 ライブラリ関数バージョン一致方法。

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19098899A JP4484001B2 (ja) 1999-07-05 1999-07-05 ライブラリ関数バージョン一致方法。

Publications (2)

Publication Number Publication Date
JP2001022560A true JP2001022560A (ja) 2001-01-26
JP4484001B2 JP4484001B2 (ja) 2010-06-16

Family

ID=16267004

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19098899A Expired - Fee Related JP4484001B2 (ja) 1999-07-05 1999-07-05 ライブラリ関数バージョン一致方法。

Country Status (1)

Country Link
JP (1) JP4484001B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005222524A (ja) * 2004-02-05 2005-08-18 Microsoft Corp 要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法
JP2009245194A (ja) * 2008-03-31 2009-10-22 Fuji Electric Systems Co Ltd プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP2011170419A (ja) * 2010-02-16 2011-09-01 Mitsubishi Electric Corp 制御プログラム作成装置
CN110968342A (zh) * 2019-11-29 2020-04-07 中国银行股份有限公司 一种版本比对方法、装置及系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005222524A (ja) * 2004-02-05 2005-08-18 Microsoft Corp 要求側コンポーネントに目標コンポーネントの適切なバージョンへのアクセスを提供する方法
JP2009245194A (ja) * 2008-03-31 2009-10-22 Fuji Electric Systems Co Ltd プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム
JP2011170419A (ja) * 2010-02-16 2011-09-01 Mitsubishi Electric Corp 制御プログラム作成装置
CN110968342A (zh) * 2019-11-29 2020-04-07 中国银行股份有限公司 一种版本比对方法、装置及系统
CN110968342B (zh) * 2019-11-29 2023-07-21 中国银行股份有限公司 一种版本比对方法、装置及系统

Also Published As

Publication number Publication date
JP4484001B2 (ja) 2010-06-16

Similar Documents

Publication Publication Date Title
US8607208B1 (en) System and methods for object code hot updates
JP4828271B2 (ja) 複数osバージョン用ソフトウェア生成装置及び複数osバージョン用ソフトウェア生成支援プログラム
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
US6795963B1 (en) Method and system for optimizing systems with enhanced debugging information
US5561800A (en) Method and apparatus for incrementally linking modified routines into software
JP2802005B2 (ja) 障害検出方法
JP4006337B2 (ja) 共有ライブラリを使用して実行可能ファイルの実行を修正する方法
US8266588B2 (en) Creating projects in a rational application developer workspace
CN111796831B (zh) 一种多芯片兼容的编译方法和装置
US20040025083A1 (en) Generating test code for software
CN105446712B (zh) 一种应用程序缺陷修补方法及装置
JP2000181725A (ja) 実行可能なコ―ドを改変し、追加機能を付与するための方法およびシステム
US20110126179A1 (en) Method and System for Dynamic Patching Software Using Source Code
CN111562934B (zh) 一种基于热补丁的软件系统升级方法、终端及存储介质
JPH0254337A (ja) 実行可能イメージの生成を容易とするデータ処理システム
US20040083467A1 (en) System and method for executing intermediate code
CN102364433B (zh) 在ARM处理器上实现Wine构建工具移植的方法
US20040261055A1 (en) Predictively processing tasks for building software
US7861236B2 (en) System and method for version control for software development
TWI515656B (zh) 程式安裝方法及裝置
JP4484001B2 (ja) ライブラリ関数バージョン一致方法。
CN114138376B (zh) 一种在应用中加载插件的方法、计算设备及存储介质
US8713550B2 (en) Methods, devices and software applications for facilitating a development of a computer program
US6976247B1 (en) Generating an executable file
JP2009098963A (ja) モジュール自動生成システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060301

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20070905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090331

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090728

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091201

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100309

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100316

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100316

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140402

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees