JP2004005058A - プログラムモジュールのバージョン管理装置 - Google Patents
プログラムモジュールのバージョン管理装置 Download PDFInfo
- Publication number
- JP2004005058A JP2004005058A JP2002158083A JP2002158083A JP2004005058A JP 2004005058 A JP2004005058 A JP 2004005058A JP 2002158083 A JP2002158083 A JP 2002158083A JP 2002158083 A JP2002158083 A JP 2002158083A JP 2004005058 A JP2004005058 A JP 2004005058A
- Authority
- JP
- Japan
- Prior art keywords
- link
- module
- execution module
- program
- version
- 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
- Stored Programmes (AREA)
Abstract
【課題】リンクモジュールを含む実行モジュールのバージョンを実行モジュールの実行前に確認できるようにし、これにより不正処理の実行および障害発生を未然に防止すること。
【解決手段】バージョン検査プログラム6は、リンクモジュール2を含む実行モジュール4の実行時、バージョンチェック用明細テーブル20に格納された当該実行モジュール4に含まれる1〜複数の全てのリンクモジュール2のコンパイル日時情報▲3▼と、バージョンチェック用テーブル10に格納された全てのリンクモジュール2についてのコンパイル日時情報▲3▼とをそれぞれ比較し、その比較結果を表示部7に出力する。
【選択図】 図1
【解決手段】バージョン検査プログラム6は、リンクモジュール2を含む実行モジュール4の実行時、バージョンチェック用明細テーブル20に格納された当該実行モジュール4に含まれる1〜複数の全てのリンクモジュール2のコンパイル日時情報▲3▼と、バージョンチェック用テーブル10に格納された全てのリンクモジュール2についてのコンパイル日時情報▲3▼とをそれぞれ比較し、その比較結果を表示部7に出力する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、リンクを含むプログラムを開発する際に用いるプログラムモジュールのバージョン管理装置に関するものである。
【0002】
【従来の技術】
従来、プログラム開発においては、コンパイラを用いてプログラムを更新する際、プログラマ自らがバージョンを管理する必要があり、その管理作業を怠ると、どのバージョンのプログラムソースがコンパイルされて実行モジュール化されたのかが判らなくなり、障害の発生原因となっていた。すなわち、従来のコンパイラにおいては、実行モジュール化されたプログラムは、どのバージョンのソースコードから作成されたかが、デバッガなどの別のツールで確認するまで判らなかった。
【0003】
【発明が解決しようとする課題】
このように従来のコンパイラにおいては、プログラムソースと実行モジュールのバージョン管理を、別途、プログラマによって実施する必要があるので、管理漏れが発生する可能性があった。
【0004】
また、メインプログラムからリンクされるリンクプログラムに関しては、コンパイルの際に、そのバージョンがチェックされておらず、旧バージョンのリンクプログラムをリンクする可能性があった。例えば、プログラムソースAには、リンクプログラムBが存在するとする。プログラムソースAおよびリンクプログラムBをコンパイルしてA+Bの内容を含む実行モジュール(A+B)が形成されたとする。このコンパイルの後、リンクプログラムBが更新されてリンクプログラムB´になった場合は、実行モジュール(A+B)も(A+B´)に更新されなくてはならないが、従来のコンパイラでは、これをチェックする機能が無かったため、旧バージョンのリンクプログラムをそのまま使い続ける可能性がある。
【0005】
この発明は上記に鑑みてなされたもので、実行モジュール、そのソースプログラムおよびリンクプログラムのバージョンを一括管理することで、リンクモジュールを含む実行モジュールのバージョンを実行モジュールの実行前に確認できるようにし、これにより不正処理の実行および障害発生を未然に防止するプログラムモジュールのバージョン管理装置を得ることを目的とする。
【0006】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるプログラムモジュールのバージョン管理装置は、リンクを含むプログラムソースをコンパイルして作成されたリンクモジュールを含む実行モジュールのバージョンを管理するプログラムモジュールのバージョン管理装置において、各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納する第1のテーブルと、前記コンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納する第2のテーブルと、リンクモジュールを含む実行モジュールの実行時、前記第2のテーブルに格納された当該実行モジュールに含まれる1〜複数の全てのリンクモジュールのコンパイル日時情報と、前記第1のテーブルに格納された前記全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、該比較結果を出力するバージョン検査手段とを備えることを特徴とする。
【0007】
この発明によれば、第1のテーブルに各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納し、第2のテーブルにコンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納し、リンクモジュールを含む実行モジュールの実行時、第2のテーブルに格納された当該実行モジュールに含まれる1〜複数の全てのリンクモジュールのコンパイル日時情報と、第1のテーブルに格納された全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、その比較結果を出力するようにしており、これによりプログラム開発の際に、リンクプログラムのバージョンを確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0008】
つぎの発明にかかるプログラムモジュールのバージョン管理装置は、上記の発明において、前記バージョン検査手段は、前記実行モジュールを実行する際、前記第1のテーブルに格納された当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報とを比較し、それらの比較結果を出力することを特徴とする。
【0009】
この発明によれば、当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報との比較結果を出力するようにしており、これにより実行モジュールのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0010】
つぎの発明にかかるプログラムモジュールのバージョン管理装置は、前記バージョン検査手段は、前記実行モジュールを実行する際、前記第1のテーブルに格納された当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報とを比較して、それらの比較結果を出力することを特徴とする。
【0011】
この発明によれば、当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報との比較結果を出力するようにしており、これによりプログラムソースのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0012】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるプログラムモジュールのバージョン管理装置の好適な実施の形態を詳細に説明する。
【0013】
図1は、この発明にかかるプログラムモジュールのバージョン管理装置の機能構成を概念的に示すブロック図である。
【0014】
図1において、図示しないテキストエディタなどのプログラム作成装置によって作成されたプログラムソースは、プログラムソースファイル1にそれぞれ格納されている。このプログラムソースファイル1には、メインプログラムとして機能するプログラム、メインプログラムからリンクするかあるいはリンクプログラムから再リンク、再々リンク、…するリンクプログラムが含まれており、それらの各プログラムソースには、作成日時、プログラム名等のバージョン情報が記述されている。
【0015】
リンクモジュールファイル2は、ソースプログラムあるいはリンクモジュールからリンクするコンパイル後の実行形式の1〜複数のリンクモジュールをそれぞれ格納するものである。各リンクモジュールは、当該リンクモジュールをメインプログラムとしてプログラムソースからコンパイルした日時を示すリンクモジュール日時情報を属性として有している。
【0016】
コンパイラ3は、プログラムソースファイル1に格納されている各種プログラムソースおよびリンクモジュールファイル2に格納されているリンクモジュールを用いてコンパイルを実行し、実行形式の実行モジュールを作成し、作成した実行モジュールを実行モジュールファイル4に格納する。
【0017】
バージョン情報取得プログラム5は、コンパイル作業実施時または実施後に実行されるプログラムであり、プログラムソースファイル1に格納されているプログラムソース、実行モジュールファイル4に格納されている実行モジュール、リンクモジュールファイルに格納されているリンクプログラムに基づいてこれらのバージョン情報を取得し、取得したバージョン情報を2つのデータベーステーブル10,20(バージョンチェック用テーブル10,バージョンチェック用明細テーブル20)に格納する。
【0018】
バージョンチェック用テーブル10は、バージョン情報取得プログラム5によって、プログラムソース1のコンパイル終了後に更新されるもので、バージョンチェック用テーブル10には、コンパイル時に使用されたソースプログラムおよびコンパイル時に生成された実行モジュールについてのバージョン情報が実行モジュールIDに対応付けられて実行モジュール毎に格納される。そのバージョン情報はつぎの通りである。
▲1▼ 実行モジュールID情報(実行モジュール識別情報)
▲2▼ ソースのファイル日時情報
▲3▼ 実行モジュール日時情報(実行モジュールのコンパイル日時情報)
▲4▼ チェック有無フラグ
【0019】
実行モジュールID情報は、実行モジュール毎に割り付けられる実行モジュールの識別情報であり、この識別情報にはプログラムソースのID情報も含まれている。ソースのファイル日付情報は、実行ファイルのコンパイル元となるプログラムソースを作成した日時を示す情報である。実行モジュール日時情報は、プログラムソースを実行モジュールにコンパイルした日時を示す情報である。チェック有無フラグは、当該実行モジュールが、バージョン検査プログラム6によるバージョン検査を行うか否かを示すフラグである。
【0020】
バージョンチェック用明細テーブル20は、コンパイル時にリンクが発生した際に更新されるもので、バージョンチェック用明細テーブル20には、コンパイル時に使用されたリンクモジュールについてのバージョン情報が実行モジュールIDおよびリンクモジュールIDに対応付けられて格納される。すなわち、このバージョンチェック用明細テーブル20は、あくまでも、メインプログラムのコンパイル時に被リンクモジュールとして使用されたときにのみ、使用されたリンクモジュールに所属するデータが更新されるものである。そのバージョン情報はつぎの通りである。
▲1▼ 実行モジュールID情報
▲2▼ リンクモジュールID情報
▲3▼ リンクモジュール日時情報(コンパイル日時情報)
【0021】
実行モジュールID情報は、当該リンクモジュールのリンク元(呼出し元)となるプログラムの識別情報である。リンクモジュールID情報は、リンク元の実行モジュールからリンクされる当該リンクモジュールの識別情報である。リンクモジュール日時情報は、コンパイラ3によるメインプログラムのコンパイル作業中にリンクモジュールへのリンクが発生した際に作成または更新されるもので、このとき、バージョン情報取得プログラム5が、リンクモジュールファイル2中の当該リンクモジュールからその属性情報としてのリンクモジュール日時情報(当該リンクモジュールをメインプログラムとしてプログラムソースからコンパイルした日時を示す情報)を取得することによって、テーブル登録される。
【0022】
バージョン検査プログラム6は、実行モジュールを実行させたときに動作するもので、例えば実行モジュール4の先頭などで、サブルーチンコールなどによって呼び出されるものである。バージョン検査プログラム6は、プログラムソースファイル1、実行モジュールファイル4、バージョンチェック用テーブル10およびバージョンチェック用明細テーブル20を用いて、プログラムソース、実行モジュールおよびリンクプログラムのバージョンの不整合をそれぞれ検査する。その検査結果は、表示部7に表示される。
【0023】
つぎに、図1に示すバージョン管理装置の動作を、図2〜図5を用いて説明する。この場合は、メインプログラムAおよびリンクモジュールB.EXEを用いてコンパイルを行う場合について説明する。
【0024】
この場合は、リンクモジュールBに関しては、メインプログラムAのコンパイル前に、コンパイルが終了しているので、バージョンチェック用テーブル10のモジュールBに関する登録データには、▲1▼実行モジュールID情報=B.EXE、▲2▼ソースのファイル日時情報=「xx」、▲3▼実行モジュール日時情報=「yy」が、
バージョン情報取得プログラム5によって、既に登録されている。
【0025】
その後、図2に示すように、コンパイラ3によってメインプログラムソースAおよびリンクモジュールB.EXEをコンパイル/リンクすることにより、実行モジュールA.EXE(=A+B)を作成する。
【0026】
このコンパイルの後、図3に示すように、バージョン情報取得プログラム5を動作させることによって、コンパイル時に使用されたプログラムソースAおよびコンパイルによって生成された実行モジュールA.EXEを用いて、前述した
▲1▼ 実行モジュールID情報
▲2▼ ソースのファイル日時情報
▲3▼ 実行モジュール日時情報
を含むバージョン情報を取得し、バージョンチェック用テーブル10に登録する。
【0027】
このとき、バージョンチェック用テーブル10には、▲1▼実行モジュールID情報=A.EXE、▲2▼ソースのファイル日時情報=「cc」、▲3▼実行モジュール日時情報=「dd」が登録される。
【0028】
また、この場合には、コンパイルの際、別のプログラムB.EXEへのリンクが存在しているので、バージョン情報取得プログラム5は、リンクモジュールB.EXEへのリンクが発生した時点で、図4に示すように、リンクモジュールファイル2中の該当するリンクモジュールB.EXEからその属性情報としてのリンクモジュール日時情報を取得し、これをプログラムソースAから得た▲1▼実行モジュールID情報およびリンクモジュールB.EXEから得た▲2▼リンクモジュールIDに対応付けて、バージョンチェック用明細テーブル20の▲3▼リンクモジュール日時情報の項目欄に格納する。
【0029】
このとき、バージョンチェック用明細テーブル20には、▲1▼実行モジュールID情報=A.EXE、▲2▼リンクモジュールID情報=B.EXE、▲3▼リンクモジュール日時情報=「yy」が登録される。すなわち、バージョンチェック用明細テーブル20の▲3▼リンクモジュール日時情報には、バージョンチェック用テーブル10に登録されるリンクモジュールBについての▲3▼実行モジュール日時情報と同じ日時情報「yy」が登録される。
【0030】
このようにして、実行モジュールA.EXEに関するコンパイル時のバージョン情報の登録処理が終了する。
【0031】
実行モジュールA.EXEに関するコンパイルの後、リンクモジュールB.EXEに不良が検出され、リンクモジュールB.EXEをバージョンアップしなくてはいけない事態が発生したとする。この場合は、リンクモジュールB.EXEに対応するリンクプログラムソースBがB´に改訂されて、再びコンパイルされることになる。このプログラムソースB´に関するコンパイルが終了したとき、バージョンチェック用テーブル10のモジュールBに関する登録内容は、▲1▼実行モジュールID情報=B.EXE、▲2▼ソースのファイル日時情報=「x´x´」、▲3▼実行モジュール日時情報=「y´y´」に更新される。
【0032】
このように、リンクモジュールB.EXEの改訂前には、バージョンチェック用テーブル10のリンクモジュールB.EXEに関する登録内容と、バージョンチェック用明細テーブル20における実行モジュールA.EXEからリンクするリンクモジュールB.EXEに関する登録内容とが一致していたが、リンクモジュールB.EXEの改訂後には、両テーブルの登録内容が一致しなくなる。これを利用して、リンクプログラムに関するバージョンチェックが行われる。
【0033】
図4は、バージョン検査プログラム6による実行モジュール実行時のバージョンチェックの為の構成を示す図である。バージョン検査プログラム6によるバージョンチェック項目には、以下の3項目があり、これらが順番に実行される。ただし、バージョンチェック用テーブル10の▲4▼チェック有無フラグがオフのときには、その実行モジュールに関しては、以下のチェックを行わない。
【0034】
(1)プログラムソースのバージョンチェック
(2)実行モジュールのバージョンチェック
(3)リンクモジュールのバージョンチェック
【0035】
まず、バージョンチェック用テーブル10に登録された当該実行モジュールの▲2▼ソースのファイル日付情報を実行モジュールIDに基づいて読み出し、読み出したソース日付情報をコンパイル元のプログラムソースファイル1の日付情報と比較する。一致した場合は、次の処理に移行し、不一致が発生した場合は、ソースのバージョンに不整合が発生していたと判断し、エラー情報を表示部7に出力し、実行モジュールの実行を停止する。
【0036】
つぎに、バージョンチェック用テーブル10に登録された当該実行モジュールの▲3▼実行モジュール日付情報を実行モジュールIDに基づいて読み出し、読み出したモジュール日付情報と、実行モジュール4自身が属性として持っている日付情報とを比較する。一致した場合は、次の処理に移行し、不一致が発生した場合は、実行モジュールのバージョンに不整合が発生していたと判断し、エラー情報を表示部7に出力し、処理を停止する。
【0037】
つぎに、実行モジュールにリンクが存在する場合は、実行モジュールIDおよびリンクモジュールIDに基づき、バージョンチェック用明細テーブル20から該当するリンクプログラムの▲3▼リンクモジュール日時情報を読み出すとともに、バージョンチェック用テーブル10から該当するリンクプログラムの▲3▼実行モジュール日時情報を読み出し、読み出した2つの日時情報を比較する。この比較の結果、両者が一致した場合は、処理を終了し、正常終了を表示部7に表示し、不一致が発生した場合は、リンクプログラムのバージョンに不整合が発生していたと判断し、エラー情報を表示部7に出力し、実行モジュールの実行を停止する。このようなリンクモジュールのバージョンチェックを、当該実行プログラムからリンクする全てのリンクプログラムおよびそのリンクプログラムから再リンク、再々リンク、…する全てのリンクプログラムについて、繰り返し実行する。
【0038】
このようなリンクモジュールのバージョンチェック処理を行うことにより、リンクモジュールB.EXEをバージョンアップしたときに、このバージョンアップをリンク元の実行モジュールに対しても反映することを忘れた場合でも、リンク元の実行モジュールを実行したときに、上述したバージョンチェックが行われて、バージョンの不整合が発生したときは、その旨が表示されて実行モジュールの実行が停止されるので、不正処理の実行および障害発生を未然に防止することが可能となる。
【0039】
このようにこの実施の形態によれば、プログラム開発の際に、バージョン情報取得プログラム5およびバージョン検査プログラム6によってプログラムソースのバージョンチェック、実行モジュールのバージョンチェックおよびリンクモジュールのバージョンチェックを行うようにしたので、バージョンアップを関連するプログラムに対し反映することを忘れた場合でも、不正処理の実行および障害発生を未然に防止することが可能となる。
【0040】
なお、上記実施の形態においては、コンパイル時、リンクがある場合、コンパイルされたリンクモジュールを用いるようにしたが、コンパイル前のリンクプログラムソースを用いるようにしてもよい。
【0041】
【発明の効果】
以上説明したように、この発明によれば、リンクモジュールを含む実行モジュールの実行時、第2のテーブルに格納された当該実行モジュールに含まれる1〜複数の全てのリンクモジュールのコンパイル日時情報と、第1のテーブルに格納された全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、その比較結果を出力するようにしているので、プログラム開発の際に、リンクプログラムのバージョンを確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0042】
つぎの発明によれば、当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報との比較結果を出力するようにしているので、実行モジュールのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0043】
つぎの発明によれば、当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報との比較結果を出力するようにしているので、プログラムソースのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【図面の簡単な説明】
【図1】この発明にかかるプログラムモジュールのバージョン管理装置の実施の形態を示す機能ブロック図である。
【図2】コンパイルを実行するための機能ブロック図である。
【図3】バージョンチェック用テーブルを作成するための機能ブロック図である。
【図4】バージョンチェック用明細テーブルを作成するための機能ブロック図である。
【図5】プログラム実行時に、バージョン整合性チェックを行うための機能ブロック図である。
【符号の説明】
1 プログラムソースファイル(プログラムソース)、2 リンクモジュールファイル(リンクモジュール)、3 コンパイラ、4 実行モジュールファイル(実行モジュール)、5 バージョン情報取得プログラム、6 バージョン検査プログム、7 表示部、10 バージョンチェック用テーブル、20 バージョンチェック用明細テーブル。
【発明の属する技術分野】
この発明は、リンクを含むプログラムを開発する際に用いるプログラムモジュールのバージョン管理装置に関するものである。
【0002】
【従来の技術】
従来、プログラム開発においては、コンパイラを用いてプログラムを更新する際、プログラマ自らがバージョンを管理する必要があり、その管理作業を怠ると、どのバージョンのプログラムソースがコンパイルされて実行モジュール化されたのかが判らなくなり、障害の発生原因となっていた。すなわち、従来のコンパイラにおいては、実行モジュール化されたプログラムは、どのバージョンのソースコードから作成されたかが、デバッガなどの別のツールで確認するまで判らなかった。
【0003】
【発明が解決しようとする課題】
このように従来のコンパイラにおいては、プログラムソースと実行モジュールのバージョン管理を、別途、プログラマによって実施する必要があるので、管理漏れが発生する可能性があった。
【0004】
また、メインプログラムからリンクされるリンクプログラムに関しては、コンパイルの際に、そのバージョンがチェックされておらず、旧バージョンのリンクプログラムをリンクする可能性があった。例えば、プログラムソースAには、リンクプログラムBが存在するとする。プログラムソースAおよびリンクプログラムBをコンパイルしてA+Bの内容を含む実行モジュール(A+B)が形成されたとする。このコンパイルの後、リンクプログラムBが更新されてリンクプログラムB´になった場合は、実行モジュール(A+B)も(A+B´)に更新されなくてはならないが、従来のコンパイラでは、これをチェックする機能が無かったため、旧バージョンのリンクプログラムをそのまま使い続ける可能性がある。
【0005】
この発明は上記に鑑みてなされたもので、実行モジュール、そのソースプログラムおよびリンクプログラムのバージョンを一括管理することで、リンクモジュールを含む実行モジュールのバージョンを実行モジュールの実行前に確認できるようにし、これにより不正処理の実行および障害発生を未然に防止するプログラムモジュールのバージョン管理装置を得ることを目的とする。
【0006】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかるプログラムモジュールのバージョン管理装置は、リンクを含むプログラムソースをコンパイルして作成されたリンクモジュールを含む実行モジュールのバージョンを管理するプログラムモジュールのバージョン管理装置において、各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納する第1のテーブルと、前記コンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納する第2のテーブルと、リンクモジュールを含む実行モジュールの実行時、前記第2のテーブルに格納された当該実行モジュールに含まれる1〜複数の全てのリンクモジュールのコンパイル日時情報と、前記第1のテーブルに格納された前記全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、該比較結果を出力するバージョン検査手段とを備えることを特徴とする。
【0007】
この発明によれば、第1のテーブルに各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納し、第2のテーブルにコンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納し、リンクモジュールを含む実行モジュールの実行時、第2のテーブルに格納された当該実行モジュールに含まれる1〜複数の全てのリンクモジュールのコンパイル日時情報と、第1のテーブルに格納された全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、その比較結果を出力するようにしており、これによりプログラム開発の際に、リンクプログラムのバージョンを確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0008】
つぎの発明にかかるプログラムモジュールのバージョン管理装置は、上記の発明において、前記バージョン検査手段は、前記実行モジュールを実行する際、前記第1のテーブルに格納された当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報とを比較し、それらの比較結果を出力することを特徴とする。
【0009】
この発明によれば、当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報との比較結果を出力するようにしており、これにより実行モジュールのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0010】
つぎの発明にかかるプログラムモジュールのバージョン管理装置は、前記バージョン検査手段は、前記実行モジュールを実行する際、前記第1のテーブルに格納された当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報とを比較して、それらの比較結果を出力することを特徴とする。
【0011】
この発明によれば、当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報との比較結果を出力するようにしており、これによりプログラムソースのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0012】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるプログラムモジュールのバージョン管理装置の好適な実施の形態を詳細に説明する。
【0013】
図1は、この発明にかかるプログラムモジュールのバージョン管理装置の機能構成を概念的に示すブロック図である。
【0014】
図1において、図示しないテキストエディタなどのプログラム作成装置によって作成されたプログラムソースは、プログラムソースファイル1にそれぞれ格納されている。このプログラムソースファイル1には、メインプログラムとして機能するプログラム、メインプログラムからリンクするかあるいはリンクプログラムから再リンク、再々リンク、…するリンクプログラムが含まれており、それらの各プログラムソースには、作成日時、プログラム名等のバージョン情報が記述されている。
【0015】
リンクモジュールファイル2は、ソースプログラムあるいはリンクモジュールからリンクするコンパイル後の実行形式の1〜複数のリンクモジュールをそれぞれ格納するものである。各リンクモジュールは、当該リンクモジュールをメインプログラムとしてプログラムソースからコンパイルした日時を示すリンクモジュール日時情報を属性として有している。
【0016】
コンパイラ3は、プログラムソースファイル1に格納されている各種プログラムソースおよびリンクモジュールファイル2に格納されているリンクモジュールを用いてコンパイルを実行し、実行形式の実行モジュールを作成し、作成した実行モジュールを実行モジュールファイル4に格納する。
【0017】
バージョン情報取得プログラム5は、コンパイル作業実施時または実施後に実行されるプログラムであり、プログラムソースファイル1に格納されているプログラムソース、実行モジュールファイル4に格納されている実行モジュール、リンクモジュールファイルに格納されているリンクプログラムに基づいてこれらのバージョン情報を取得し、取得したバージョン情報を2つのデータベーステーブル10,20(バージョンチェック用テーブル10,バージョンチェック用明細テーブル20)に格納する。
【0018】
バージョンチェック用テーブル10は、バージョン情報取得プログラム5によって、プログラムソース1のコンパイル終了後に更新されるもので、バージョンチェック用テーブル10には、コンパイル時に使用されたソースプログラムおよびコンパイル時に生成された実行モジュールについてのバージョン情報が実行モジュールIDに対応付けられて実行モジュール毎に格納される。そのバージョン情報はつぎの通りである。
▲1▼ 実行モジュールID情報(実行モジュール識別情報)
▲2▼ ソースのファイル日時情報
▲3▼ 実行モジュール日時情報(実行モジュールのコンパイル日時情報)
▲4▼ チェック有無フラグ
【0019】
実行モジュールID情報は、実行モジュール毎に割り付けられる実行モジュールの識別情報であり、この識別情報にはプログラムソースのID情報も含まれている。ソースのファイル日付情報は、実行ファイルのコンパイル元となるプログラムソースを作成した日時を示す情報である。実行モジュール日時情報は、プログラムソースを実行モジュールにコンパイルした日時を示す情報である。チェック有無フラグは、当該実行モジュールが、バージョン検査プログラム6によるバージョン検査を行うか否かを示すフラグである。
【0020】
バージョンチェック用明細テーブル20は、コンパイル時にリンクが発生した際に更新されるもので、バージョンチェック用明細テーブル20には、コンパイル時に使用されたリンクモジュールについてのバージョン情報が実行モジュールIDおよびリンクモジュールIDに対応付けられて格納される。すなわち、このバージョンチェック用明細テーブル20は、あくまでも、メインプログラムのコンパイル時に被リンクモジュールとして使用されたときにのみ、使用されたリンクモジュールに所属するデータが更新されるものである。そのバージョン情報はつぎの通りである。
▲1▼ 実行モジュールID情報
▲2▼ リンクモジュールID情報
▲3▼ リンクモジュール日時情報(コンパイル日時情報)
【0021】
実行モジュールID情報は、当該リンクモジュールのリンク元(呼出し元)となるプログラムの識別情報である。リンクモジュールID情報は、リンク元の実行モジュールからリンクされる当該リンクモジュールの識別情報である。リンクモジュール日時情報は、コンパイラ3によるメインプログラムのコンパイル作業中にリンクモジュールへのリンクが発生した際に作成または更新されるもので、このとき、バージョン情報取得プログラム5が、リンクモジュールファイル2中の当該リンクモジュールからその属性情報としてのリンクモジュール日時情報(当該リンクモジュールをメインプログラムとしてプログラムソースからコンパイルした日時を示す情報)を取得することによって、テーブル登録される。
【0022】
バージョン検査プログラム6は、実行モジュールを実行させたときに動作するもので、例えば実行モジュール4の先頭などで、サブルーチンコールなどによって呼び出されるものである。バージョン検査プログラム6は、プログラムソースファイル1、実行モジュールファイル4、バージョンチェック用テーブル10およびバージョンチェック用明細テーブル20を用いて、プログラムソース、実行モジュールおよびリンクプログラムのバージョンの不整合をそれぞれ検査する。その検査結果は、表示部7に表示される。
【0023】
つぎに、図1に示すバージョン管理装置の動作を、図2〜図5を用いて説明する。この場合は、メインプログラムAおよびリンクモジュールB.EXEを用いてコンパイルを行う場合について説明する。
【0024】
この場合は、リンクモジュールBに関しては、メインプログラムAのコンパイル前に、コンパイルが終了しているので、バージョンチェック用テーブル10のモジュールBに関する登録データには、▲1▼実行モジュールID情報=B.EXE、▲2▼ソースのファイル日時情報=「xx」、▲3▼実行モジュール日時情報=「yy」が、
バージョン情報取得プログラム5によって、既に登録されている。
【0025】
その後、図2に示すように、コンパイラ3によってメインプログラムソースAおよびリンクモジュールB.EXEをコンパイル/リンクすることにより、実行モジュールA.EXE(=A+B)を作成する。
【0026】
このコンパイルの後、図3に示すように、バージョン情報取得プログラム5を動作させることによって、コンパイル時に使用されたプログラムソースAおよびコンパイルによって生成された実行モジュールA.EXEを用いて、前述した
▲1▼ 実行モジュールID情報
▲2▼ ソースのファイル日時情報
▲3▼ 実行モジュール日時情報
を含むバージョン情報を取得し、バージョンチェック用テーブル10に登録する。
【0027】
このとき、バージョンチェック用テーブル10には、▲1▼実行モジュールID情報=A.EXE、▲2▼ソースのファイル日時情報=「cc」、▲3▼実行モジュール日時情報=「dd」が登録される。
【0028】
また、この場合には、コンパイルの際、別のプログラムB.EXEへのリンクが存在しているので、バージョン情報取得プログラム5は、リンクモジュールB.EXEへのリンクが発生した時点で、図4に示すように、リンクモジュールファイル2中の該当するリンクモジュールB.EXEからその属性情報としてのリンクモジュール日時情報を取得し、これをプログラムソースAから得た▲1▼実行モジュールID情報およびリンクモジュールB.EXEから得た▲2▼リンクモジュールIDに対応付けて、バージョンチェック用明細テーブル20の▲3▼リンクモジュール日時情報の項目欄に格納する。
【0029】
このとき、バージョンチェック用明細テーブル20には、▲1▼実行モジュールID情報=A.EXE、▲2▼リンクモジュールID情報=B.EXE、▲3▼リンクモジュール日時情報=「yy」が登録される。すなわち、バージョンチェック用明細テーブル20の▲3▼リンクモジュール日時情報には、バージョンチェック用テーブル10に登録されるリンクモジュールBについての▲3▼実行モジュール日時情報と同じ日時情報「yy」が登録される。
【0030】
このようにして、実行モジュールA.EXEに関するコンパイル時のバージョン情報の登録処理が終了する。
【0031】
実行モジュールA.EXEに関するコンパイルの後、リンクモジュールB.EXEに不良が検出され、リンクモジュールB.EXEをバージョンアップしなくてはいけない事態が発生したとする。この場合は、リンクモジュールB.EXEに対応するリンクプログラムソースBがB´に改訂されて、再びコンパイルされることになる。このプログラムソースB´に関するコンパイルが終了したとき、バージョンチェック用テーブル10のモジュールBに関する登録内容は、▲1▼実行モジュールID情報=B.EXE、▲2▼ソースのファイル日時情報=「x´x´」、▲3▼実行モジュール日時情報=「y´y´」に更新される。
【0032】
このように、リンクモジュールB.EXEの改訂前には、バージョンチェック用テーブル10のリンクモジュールB.EXEに関する登録内容と、バージョンチェック用明細テーブル20における実行モジュールA.EXEからリンクするリンクモジュールB.EXEに関する登録内容とが一致していたが、リンクモジュールB.EXEの改訂後には、両テーブルの登録内容が一致しなくなる。これを利用して、リンクプログラムに関するバージョンチェックが行われる。
【0033】
図4は、バージョン検査プログラム6による実行モジュール実行時のバージョンチェックの為の構成を示す図である。バージョン検査プログラム6によるバージョンチェック項目には、以下の3項目があり、これらが順番に実行される。ただし、バージョンチェック用テーブル10の▲4▼チェック有無フラグがオフのときには、その実行モジュールに関しては、以下のチェックを行わない。
【0034】
(1)プログラムソースのバージョンチェック
(2)実行モジュールのバージョンチェック
(3)リンクモジュールのバージョンチェック
【0035】
まず、バージョンチェック用テーブル10に登録された当該実行モジュールの▲2▼ソースのファイル日付情報を実行モジュールIDに基づいて読み出し、読み出したソース日付情報をコンパイル元のプログラムソースファイル1の日付情報と比較する。一致した場合は、次の処理に移行し、不一致が発生した場合は、ソースのバージョンに不整合が発生していたと判断し、エラー情報を表示部7に出力し、実行モジュールの実行を停止する。
【0036】
つぎに、バージョンチェック用テーブル10に登録された当該実行モジュールの▲3▼実行モジュール日付情報を実行モジュールIDに基づいて読み出し、読み出したモジュール日付情報と、実行モジュール4自身が属性として持っている日付情報とを比較する。一致した場合は、次の処理に移行し、不一致が発生した場合は、実行モジュールのバージョンに不整合が発生していたと判断し、エラー情報を表示部7に出力し、処理を停止する。
【0037】
つぎに、実行モジュールにリンクが存在する場合は、実行モジュールIDおよびリンクモジュールIDに基づき、バージョンチェック用明細テーブル20から該当するリンクプログラムの▲3▼リンクモジュール日時情報を読み出すとともに、バージョンチェック用テーブル10から該当するリンクプログラムの▲3▼実行モジュール日時情報を読み出し、読み出した2つの日時情報を比較する。この比較の結果、両者が一致した場合は、処理を終了し、正常終了を表示部7に表示し、不一致が発生した場合は、リンクプログラムのバージョンに不整合が発生していたと判断し、エラー情報を表示部7に出力し、実行モジュールの実行を停止する。このようなリンクモジュールのバージョンチェックを、当該実行プログラムからリンクする全てのリンクプログラムおよびそのリンクプログラムから再リンク、再々リンク、…する全てのリンクプログラムについて、繰り返し実行する。
【0038】
このようなリンクモジュールのバージョンチェック処理を行うことにより、リンクモジュールB.EXEをバージョンアップしたときに、このバージョンアップをリンク元の実行モジュールに対しても反映することを忘れた場合でも、リンク元の実行モジュールを実行したときに、上述したバージョンチェックが行われて、バージョンの不整合が発生したときは、その旨が表示されて実行モジュールの実行が停止されるので、不正処理の実行および障害発生を未然に防止することが可能となる。
【0039】
このようにこの実施の形態によれば、プログラム開発の際に、バージョン情報取得プログラム5およびバージョン検査プログラム6によってプログラムソースのバージョンチェック、実行モジュールのバージョンチェックおよびリンクモジュールのバージョンチェックを行うようにしたので、バージョンアップを関連するプログラムに対し反映することを忘れた場合でも、不正処理の実行および障害発生を未然に防止することが可能となる。
【0040】
なお、上記実施の形態においては、コンパイル時、リンクがある場合、コンパイルされたリンクモジュールを用いるようにしたが、コンパイル前のリンクプログラムソースを用いるようにしてもよい。
【0041】
【発明の効果】
以上説明したように、この発明によれば、リンクモジュールを含む実行モジュールの実行時、第2のテーブルに格納された当該実行モジュールに含まれる1〜複数の全てのリンクモジュールのコンパイル日時情報と、第1のテーブルに格納された全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、その比較結果を出力するようにしているので、プログラム開発の際に、リンクプログラムのバージョンを確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0042】
つぎの発明によれば、当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報との比較結果を出力するようにしているので、実行モジュールのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【0043】
つぎの発明によれば、当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報との比較結果を出力するようにしているので、プログラムソースのバージョンの不整合を確実に管理することができ、不正処理の実行および障害発生を未然に防止することが可能となる。
【図面の簡単な説明】
【図1】この発明にかかるプログラムモジュールのバージョン管理装置の実施の形態を示す機能ブロック図である。
【図2】コンパイルを実行するための機能ブロック図である。
【図3】バージョンチェック用テーブルを作成するための機能ブロック図である。
【図4】バージョンチェック用明細テーブルを作成するための機能ブロック図である。
【図5】プログラム実行時に、バージョン整合性チェックを行うための機能ブロック図である。
【符号の説明】
1 プログラムソースファイル(プログラムソース)、2 リンクモジュールファイル(リンクモジュール)、3 コンパイラ、4 実行モジュールファイル(実行モジュール)、5 バージョン情報取得プログラム、6 バージョン検査プログム、7 表示部、10 バージョンチェック用テーブル、20 バージョンチェック用明細テーブル。
Claims (3)
- リンクを含むプログラムソースをコンパイルして作成されたリンクモジュールを含む実行モジュールのバージョンを管理するプログラムモジュールのバージョン管理装置において、
各種のプログラムソースをコンパイルするとき、作成された実行モジュール毎にプログラムソースのファイル日時情報および実行モジュールのコンパイル日時情報を実行モジュール識別情報に対応付けて格納する第1のテーブルと、
前記コンパイルの際にプログラムソースにリンクが存在する場合、使用したリンクモジュールのコンパイル日時情報をリンク元の実行モジュール識別情報およびリンクモジュール識別情報に対応付けて格納する第2のテーブルと、
リンクモジュールを含む実行モジュールの実行時、前記第2のテーブルに格納された当該実行モジュールに含まれる1〜複数の全てのリンクモジュールのコンパイル日時情報と、前記第1のテーブルに格納された前記全てのリンクモジュールについてのコンパイル日時情報とをそれぞれ比較し、該比較結果を出力するバージョン検査手段と、
を備えることを特徴とするプログラムモジュールのバージョン管理装置。 - 前記バージョン検査手段は、
前記実行モジュールを実行する際、前記第1のテーブルに格納された当該実行モジュールのコンパイル日時情報と実行すべき実行モジュールのコンパイル日時情報とを比較し、それらの比較結果を出力することを特徴とする請求項1に記載のプログラムモジュールのバージョン管理装置。 - 前記バージョン検査手段は、
前記実行モジュールを実行する際、前記第1のテーブルに格納された当該実行モジュールに対応するプログラムソースのファイル日時情報とそのプログラムソースに対応するソースファイルの日時情報とを比較して、それらの比較結果を出力することを特徴とする請求項1に記載のプログラムモジュールのバージョン管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002158083A JP2004005058A (ja) | 2002-05-30 | 2002-05-30 | プログラムモジュールのバージョン管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002158083A JP2004005058A (ja) | 2002-05-30 | 2002-05-30 | プログラムモジュールのバージョン管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004005058A true JP2004005058A (ja) | 2004-01-08 |
Family
ID=30428602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002158083A Pending JP2004005058A (ja) | 2002-05-30 | 2002-05-30 | プログラムモジュールのバージョン管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004005058A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015097029A (ja) * | 2013-11-15 | 2015-05-21 | 日本電気株式会社 | ソフトウェア開発支援装置、ソフトウェア開発支援方法及びプログラム |
CN106293683A (zh) * | 2015-06-12 | 2017-01-04 | 小米科技有限责任公司 | 一种项目的编译方法及装置 |
-
2002
- 2002-05-30 JP JP2002158083A patent/JP2004005058A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015097029A (ja) * | 2013-11-15 | 2015-05-21 | 日本電気株式会社 | ソフトウェア開発支援装置、ソフトウェア開発支援方法及びプログラム |
CN106293683A (zh) * | 2015-06-12 | 2017-01-04 | 小米科技有限责任公司 | 一种项目的编译方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8627289B2 (en) | Detecting configuration problems in an eclipse-based software application | |
Aftandilian et al. | Building useful program analysis tools using an extensible java compiler | |
US7051316B2 (en) | Distributed computing component system with diagrammatic graphical representation of code with separate delineated display area by type | |
US20080082974A1 (en) | Managing Software Component Version Identifications in a Componentised Software System | |
US9916134B2 (en) | Methods and systems for accessing distributed computing components through the internet | |
US5956513A (en) | System and method for automated software build control | |
Dietrich et al. | Broken promises: An empirical study into evolution problems in java programs caused by library upgrades | |
US7810069B2 (en) | Methods and systems for relating data structures and object-oriented elements for distributed computing | |
Störzer et al. | Using pointcut delta analysis to support evolution of aspect-oriented software | |
US5193191A (en) | Incremental linking in source-code development system | |
US6993759B2 (en) | Diagrammatic control of software in a version control system | |
US8572572B2 (en) | Dynamic source code analyzer | |
US6851107B1 (en) | Software development tool with instant updating and simultaneous view of graphical and a textual display of source code | |
US20020023257A1 (en) | Methods and systems for finding specific line of source code | |
US20090327994A1 (en) | Metadata driven api development | |
Neitsch et al. | Build system issues in multilanguage software | |
US8302087B2 (en) | Quality assurance in software systems through autonomic reliability, availability and serviceability code generation | |
Kramer et al. | Change-driven consistency for component code, architectural models, and contracts | |
Donaldson et al. | Putting randomized compiler testing into production (experience report) | |
US20100313186A1 (en) | Developer-managed debugger data records | |
AU638999B2 (en) | Incremental compiler for source-code development system | |
Jezek et al. | On the use of static analysis to safeguard recursive dependency resolution | |
JP2004005058A (ja) | プログラムモジュールのバージョン管理装置 | |
Carvalho et al. | Deep semantic versioning for evolution and variability | |
Sotiropoulos et al. | The additional testsuite framework: facilitating software testing and test management |