(57)【要約】【課題】プログラムの整合性をチェックするシステムを提供する。【解決手段】整合性チェックシステムは、呼出プログラム名と、バージョンとを定義するコーリングシーケンス情報を記録し、プログラムの改版履歴を示す複数のバージョンと、互換性を示す互換性情報と、プログラムの現在のバージョンとを含むバージョン管理情報を、複数のプログラムプログラム名と関連づけて記録し、コーリングシーケンス情報から呼出プログラム名を取りだし、上記呼出プログラム名に関連づけられるバージョン管理情報を読み出す検索・読み出し部１２０と、上記バージョン管理情報と上記コーリングシーケンス情報とを用いて、上記コーリングシーケンス情報内の呼出プログラムのバージョンと、呼出プログラムの現在のバージョンと、互換性情報とを比較して、プログラムの間の整合性を判断し、判断した結果を出力する整合性チェック部１５０とを備える。【選択図】        図１
2005025543.tif 000002
【特許請求の範囲】
【請求項１】
プログラムが呼び出す呼出プログラムを特定する呼出プログラム名と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報を記録するコーリングシーケンス情報記録部と、
プログラムの現在のバージョンと、プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけて記録するバージョン管理情報記録部と、
上記コーリングシーケンス情報記録部からコーリングシーケンス情報を読み出し、読み出したコーリングシーケンス情報から呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出す検索・読み出し部と、
上記検索・読み出し部が読み出したバージョン管理情報とコーリングシーケンス情報とを入力し、上記コーリングシーケンス情報と上記バージョン管理情報とを用いて、上記コーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる呼出プログラムの現在のバージョンと、バージョン管理情報に含まれる互換性情報とを比較して、呼び出し側のプログラムと呼び出される側のプログラムとの間の整合性を判断し、判断した結果を出力するバージョンチェック部と
を備えることを特徴とする整合性チェックシステム。
【請求項２】
上記コーリングシーケンス情報記録部は、複数のプログラムそれぞれについて、呼出プログラム名とバージョンとを定義する複数のコーリングシーケンス情報を複数のプログラム名に関連づけて記録し、
上記検索・読み出し部は、上記プログラムが呼び出す呼出プログラムの呼出プログラム名を第一の呼出プログラム名とし、上記第一の呼出プログラム名に関連づけられるコーリングシーケンス情報を上記コーリングシーケンス情報記録部から読み出し第一のコーリングシーケンス情報とし、上記第一のコーリングシーケンス情報に定義される呼出プログラム名を第二の呼出プログラム名とし、上記第二の呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出して第二のバージョン管理情報とする処理を、呼出プログラム名を用いて読み出したコーリングシーケンス情報に定義される呼出プログラム名がなくなるまで繰り返し、複数のコーリングシーケンス情報と複数のバージョン管理情報とを取得し、
上記バージョンチェック部は、複数のコーリングシーケンス情報と複数のバージョン管理情報とを上記検索・読み出し部から入力し、上記複数のコーリングシーケンス情報に含まれる複数の呼出プログラムのバージョンそれぞれについて、上記バージョン管理情報に含まれる上記呼出プログラムの現在のバージョンと、上記バージョン管理情報に含まれる互換性情報を用いてプログラムの整合性をチェックすることを特徴とする請求項１記載の整合性チェックシステム。
【請求項３】
上記整合性チェックシステムは、さらに、
ユーザから整合性をチェックするプログラム名の入力を受け付け、受けつけたプログラム名を上記検索・読み出し部へ通知する選択部を備え、
上記検索・読み出し部は、上記選択部が通知したプログラム名を用いて、上記コーリングシーケンス情報記録部を検索し、上記通知されたプログラム名に関連づけられるコーリングシーケンス情報を読み出し、読み出した上記コーリングシーケンス情報に定義されている呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出し、
上記バージョンチェック部は、上記選択部から通知されたプログラム名を入力し、上記検索・読み出し部が読み出したコーリングシーケンス情報とバージョン管理情報とを入力し、入力したプログラム名に関連づけられるコーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる上記呼出プログラムの実際のバージョンと、上記バージョン管理情報に含まれる互換性情報とを比較することを特徴とする請求項２記載の整合性チェックシステム。
【請求項４】
上記コーリングシーケンス情報記録部は、コーリングシーケンス情報として、呼出プログラム名と呼出プログラムのバージョンに加え、上記呼出プログラム名に含まれる関数のうち、呼び出される関数名を定義し、
上記バージョン管理情報記録部は、バージョン管理情報として、プログラムに含まれる複数の関数名と、上記プログラムの改版履歴を示す複数のバージョンと、上記複数の関数名が特定する関数それぞれが上記複数のバージョンにおいて互換性があるかを示す互換性情報とを含み、上記バージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけて複数記録することを特徴とする請求項２または３記載の整合性チェックシステム。
【請求項５】
上記バージョンチェック部は、上記コーリングシーケンス情報に定義する関数名が特定する関数と上記関数を含む呼出プログラムのバージョンと、上記バージョン管理情報の互換性情報とを用いて、上記関数の互換性を判断することを特徴とする請求項４記載の整合性チェックシステム。
【請求項６】
上記コーリングシーケンス情報と上記バージョン管理情報とは、プログラムの実行形式モジュールへ付加されていることを特徴とする請求項２記載の整合性チェックシステム。
【請求項７】
上記検索・読み出し部は、上記呼出プログラム名に関連づけられるバージョン管理情報が検出できない場合に、バージョン管理情報がないことを上記バージョンチェック部へ通知し、
上記バージョンチェック部は、上記呼出プログラムのバージョン管理情報がないことを出力することを特徴とする請求項２記載の整合性チェックシステム。
【請求項８】
上記バージョンチェック部は、上記コーリングシーケンス情報と上記呼出プログラムのバージョンと上記バージョン管理情報の互換性情報とを比較した結果、現在のプログラムのバージョンとは互換性がないと判断した場合、呼ぶ側のプログラムと整合性のあるプログラムのバージョンを、上記バージョン管理情報の互換性情報から取得し、取得したバージョンのプログラムが格納されている場所を検索して出力することを特徴とする請求項２記載の整合性チェックシステム。
【請求項９】
上記整合性チェックシステムは、さらに、ワークメモリを備え、
上記検索・読み出し部は、上記選択部から複数のプログラム名を通知され、通知された複数のプログラムについて、読み出した複数のコーリングシーケンス情報と複数のバージョン管理情報とを上記ワークメモリへ格納し、
上記バージョンチェック部は、上記選択部から通知された複数のプログラム名を入力し、上記複数のプログラム名が特定するプログラムそれぞれについて、上記ワークメモリに格納された複数のコーリングシーケンス情報と複数のバージョン管理情報とを読み出してバージョンのチェックを実施し、上記複数のプログラムそれぞれが正常に動作するか否かを判断することを特徴とする請求項３記載の整合性チェックシステム。
【請求項１０】
プログラムが呼び出す呼出プログラムを特定する呼出プログラム名と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報をコーリングシーケンス情報記録部へ記録するコーリングシーケンス情報記録工程と、
プログラムの現在のバージョンと、プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけてバージョン管理情報記録部へ記録するバージョン管理情報記録工程と、
上記コーリングシーケンス情報記録部からコーリングシーケンス情報を読み出し、読み出したコーリングシーケンス情報から呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出す検索・読み出し工程と、
上記検索・読み出し工程が読み出したバージョン管理情報とコーリングシーケンス情報とを入力し、上記コーリングシーケンス情報と上記バージョン管理情報とを用いて、上記コーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる上記呼出プログラムの現在のバージョンと、上記バージョン管理情報の互換性情報とを比較して、呼び出し側のプログラムと呼び出される側のプログラムとの間の整合性を判断し、判断した結果を出力するバージョンチェック工程と
を備えることを特徴とする整合性チェック方法。
【請求項１１】
プログラムが呼び出す呼出プログラムを特定する呼出プログラム名と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報をコーリングシーケンス情報記録部へ記録するコーリングシーケンス情報記録手順と、
プログラムの現在のバージョンと、プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけてバージョン管理情報記録部へ記録するバージョン管理情報記録手順と、
上記コーリングシーケンス情報記録部からコーリングシーケンス情報を読み出し、読み出したコーリングシーケンス情報から呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出す検索・読み出し手順と、
上記検索・読み出し手順が読み出したバージョン管理情報とコーリングシーケンス情報とを入力し、上記コーリングシーケンス情報と上記バージョン管理情報とを用いて、上記コーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる上記呼出プログラムの現在のバージョンと、上記バージョン管理情報の互換性情報とを比較して、呼び出し側のプログラムと呼び出される側のプログラムとの間の整合性を判断し、判断した結果を出力するバージョンチェック手順と
を備えることを特徴とする計算機で実行させるための整合性チェックプログラム。
【請求項１２】
プログラムのプログラムソースコードを記録するプログラムソースコード記録部と、
上記プログラムソースコードから作成される実行形式モジュールをプログラム名と関連づけて記録する実行形式モジュール記録部と、
上記プログラムソースコード記録部からプログラム（以下、「対象プログラム」と記す）のプログラムソースコードを読み出す検索・読み出し部と、
上記検索・読み出し部が読み出したプログラムソースコードを入力し、上記プログラムソースコードから他のプログラム（以下、「呼出プログラム」と記す）を呼び出しているコール文を抽出し、抽出したコール文から、上記呼出プログラムを示す呼出プログラム名を抽出する呼出プログラム名抽出部と、
上記呼出プログラム名抽出部が抽出した呼出プログラム名を用いて、上記呼出プログラムの実行形式モジュールを実行形式モジュール記録部から読み出し、上記呼出プログラムの実行形式モジュールを解析して、上記呼出プログラムのバージョンを検出するバージョン検出部と、
上記呼出プログラム名と上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報を生成するコーリングシーケンス生成部と
を備えることを特徴とする管理情報作成システム。
【請求項１３】
上記管理情報作成システムは、さらに、
上記対象プログラムの現在のバージョンと、上記対象プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおける対象プログラムの互換性情報とを入力することを促し、入力された情報を用いて、上記対象プログラムの現在のバージョンと、上記対象プログラムの複数のバージョンと、上記複数のバージョンにおける対象プログラムの互換性情報とを含むバージョン管理情報を生成するバージョン管理情報生成部を備えることを特徴とする請求項１２記載の管理情報作成システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、複数のプログラムの間の整合性をチェックするシステムに関する。
【０００２】
【従来の技術】
プログラムは、不具合の解消、あるいは、改良等により、異なるバージョンのプログラムが存在する。一つのプログラムが他のプログラム、あるいは、他のプログラムの関数をコール（呼出）している場合、バージョンの異なるプログラムをコールした場合に動作しない等の不具合が生じることがある。
【０００３】
図１４は、従来のプログラム間整合性に関する状況を示す例である。
開発者がＰｒｇＡ（Ｖｅｒ１）を開発する場合、他の開発者が作成したＰｒｇＢ（Ｖｅｒ１）をコールするように作成する。これを実行環境に適用した最初の状態では、ＰｒｇＡ（Ｖｅｒ１）がＰｒｇＢ（Ｖｅｒ１）をコールしている（開発時と同じ）ため、問題なく動作する。しかし、何らかの原因によってある時点からＰｒｇＢがＶｅｒ１からＶｅｒ２に置き換わった時にＰｒｇＢの動作に互換性がない場合には、ＰｒｇＡからＰｒｇＢへのコール時に動作しない、または、動きが変わる、といった不具合が起こる。また、ＰｒｇＢのバージョンがＶｅｒ１からＶｅｒ０（バージョンが下がる置き換え）に代わる場合にも同様にＰｒｇＡからＰｒｇＢへのコール時に動作しない、または、動きが変わる、といったことが起こる。通常プログラムのバージョンアップの時には上位互換は保たれるが、下位互換が保たれない場合が多いため、実際には，後者のような問題が多い。
【０００４】
図１５は、従来のプログラムの互換性をチェックする一例を表した図である。
図１５の例では、関連性のあるプログラム群のバージョンの組合せ
（構成）のうち正常に動作する組合せ
（構成）を、予め定義された構成テーブルとしておく。そして、調べようとするマシンの構成がこの構成テーブルのどれかの構成と一致すれば、そのマシンは整合性がある（正常に動作する）と判断し、もしなければ整合性がない（正常に動作しない）と判断する。
【０００５】
【特許文献１】
特開平１０−２６９０６５号公報
【０００６】
【発明が解決しようとする課題】
図１５に示した例では、関連するプログラムの数が多くなると、あり得る組合せ
（構成）の数は飛躍的に多くなり、それらの組合せ
（構成）の一つ一つを検証することは非常に困難な作業となる。
【０００７】
そこで、この発明は、あるプログラムに関して、そのプログラムがコールしている他のプログラムに関するコーリングシーケンス情報と、そのプログラムの現在の（実際の）バージョンと、そのプログラムのバージョンにおける互換性に関するバージョン管理情報とを、プログラム毎に作成し、プログラムがコールしている他のプログラムのバージョンをチェックすることによって、呼び出し側のプログラムと呼び出される側のプログラムとの間の整合性を検証する手続を容易にすることを目的とする。
【０００８】
【課題を解決するための手段】
この発明に係る整合性チェックシステムは、プログラムが呼び出す呼出プログラムを特定する呼出プログラム名と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報を記録するコーリングシーケンス情報記録部と、プログラムの現在の（実際の）バージョンと、プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけて記録するバージョン管理情報記録部と、
上記コーリングシーケンス情報記録部からコーリングシーケンス情報を読み出し、読み出したコーリングシーケンス情報から呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出す検索・読み出し部と、
上記検索・読み出し部が読み出したバージョン管理情報とコーリングシーケンス情報とを入力し、上記コーリングシーケンス情報と上記バージョン管理情報とを用いて、上記コーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる呼出プログラムの現在の（実際の）バージョンと、バージョン管理情報に含まれる互換性情報とを比較して、呼び出し側のプログラムと呼び出される側のプログラムとの間の整合性を判断し、判断した結果を出力するバージョンチェック部と
を備えることを特徴とする。
【０００９】
上記コーリングシーケンス情報記録部は、複数のプログラムそれぞれについて、呼出プログラム名とバージョンとを定義する複数のコーリングシーケンス情報を複数のプログラム名に関連づけて記録し、
上記検索・読み出し部は、上記プログラムが呼び出す呼出プログラムの呼出プログラム名を第一の呼出プログラム名とし、上記第一の呼出プログラム名に関連づけられるコーリングシーケンス情報を上記コーリングシーケンス情報記録部から読み出し第一のコーリングシーケンス情報とし、上記第一のコーリングシーケンス情報に定義される呼出プログラム名を第二の呼出プログラム名とし、上記第二の呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出して第二のバージョン管理情報とする処理を、呼出プログラム名を用いて読み出したコーリングシーケンス情報に定義される呼出プログラム名がなくなるまで繰り返し、複数のコーリングシーケンス情報と複数のバージョン管理情報とを取得し、
上記バージョンチェック部は、複数のコーリングシーケンス情報と複数のバージョン管理情報とを上記検索・読み出し部から入力し、上記複数のコーリングシーケンス情報に含まれる複数の呼出プログラムのバージョンそれぞれについて、上記バージョン管理情報に含まれる上記呼出プログラムの現在の（実際の）バージョンと、上記バージョン管理情報に含まれる互換性情報を用いてプログラムの整合性をチェックすることを特徴とする。
【００１０】
上記整合性チェックシステムは、さらに、
ユーザから整合性をチェックするプログラム名の入力を受け付け、受けつけたプログラム名を上記検索・読み出し部へ通知する選択部を備え、
上記検索・読み出し部は、上記選択部が通知したプログラム名を用いて、上記コーリングシーケンス情報記録部を検索し、上記通知されたプログラム名に関連づけられるコーリングシーケンス情報を読み出し、読み出した上記コーリングシーケンス情報に定義されている呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出し、
上記バージョンチェック部は、上記選択部から通知されたプログラム名を入力し、上記検索・読み出し部が読み出したコーリングシーケンス情報とバージョン管理情報とを入力し、入力したプログラム名に関連づけられるコーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる上記呼出プログラムの現在の（実際の）バージョンと、上記バージョン管理情報に含まれる互換性情報とを比較することを特徴とする。
【００１１】
上記コーリングシーケンス情報記録部は、コーリングシーケンス情報として、呼出プログラム名と呼出プログラムのバージョンに加え、上記呼出プログラム名に含まれる関数のうち、呼び出される関数名を定義し、
上記バージョン管理情報記録部は、バージョン管理情報として、プログラムに含まれる複数の関数名と、上記プログラムの改版履歴を示す複数のバージョンと、上記複数の関数名が特定する関数それぞれが上記複数のバージョンにおいて互換性があるかを示す互換性情報とを含み、上記バージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけて複数記録することを特徴とする。
【００１２】
上記バージョンチェック部は、上記コーリングシーケンス情報に定義する関数名が特定する関数と上記関数を含む呼出プログラムのバージョンと、上記バージョン管理情報の互換性情報とを用いて、上記関数の互換性を判断することを特徴とする。
【００１３】
上記コーリングシーケンス情報と上記バージョン管理情報とは、プログラムの実行形式モジュールへ付加されていることを特徴とする。
【００１４】
上記検索・読み出し部は、上記呼出プログラム名に関連づけられるバージョン管理情報が検出できない場合に、バージョン管理情報がないことを上記バージョンチェック部へ通知し、
上記バージョンチェック部は、上記呼出プログラムのバージョン管理情報がないことを出力することを特徴とする。
【００１５】
上記バージョンチェック部は、上記コーリングシーケンス情報と、上記呼出プログラムのバージョンと上記バージョン管理情報の互換性情報とを比較した結果、現在のプログラムのバージョンとは互換性がないと判断した場合、呼ぶ側のプログラムと整合性のあるプログラムのバージョンを、上記バージョン管理情報の互換性情報から取得し、取得したバージョンのプログラムが格納されている場所を検索して出力することを特徴とする。
【００１６】
上記整合性チェックシステムは、さらに、ワークメモリを備え、
上記検索・読み出し部は、上記選択部から複数のプログラム名を通知され、通知された複数のプログラムについて、読み出した複数のコーリングシーケンス情報と複数のバージョン管理情報とを上記ワークメモリへ格納し、
上記バージョンチェック部は、上記選択部から通知された複数のプログラム名を入力し、上記複数のプログラム名が特定するプログラムそれぞれについて、上記ワークメモリに格納された複数のコーリングシーケンス情報と複数のバージョン管理情報とを読み出してバージョンのチェックを実施し、上記複数のプログラムそれぞれが正常に動作するか否かを判断することを特徴とする。
【００１７】
この発明に係る整合性チェック方法は、プログラムが呼び出す呼出プログラムを特定する呼出プログラム名と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報をコーリングシーケンス情報記録部へ記録するコーリングシーケンス情報記録工程と、
プログラムの現在の（実際の）バージョンと、プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけてバージョン管理情報記録部へ記録するバージョン管理情報記録工程と、
上記コーリングシーケンス情報記録部からコーリングシーケンス情報を読み出し、読み出したコーリングシーケンス情報から呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出す検索・読み出し工程と、
上記検索・読み出し工程が読み出したバージョン管理情報とコーリングシーケンス情報とを入力し、上記コーリングシーケンス情報と上記バージョン管理情報とを用いて、上記コーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる上記呼出プログラムの現在の（実際の）バージョンと、上記バージョン管理情報の互換性情報とを比較して、呼び出し側のプログラムと呼び出される側のプログラムとの間の整合性を判断し、判断した結果を出力するバージョンチェック工程と
を備えることを特徴とする。
【００１８】
この発明に係る計算機で実行させるための整合性チェックプログラムは、プログラムが呼び出す呼出プログラムを特定する呼出プログラム名と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報をコーリングシーケンス情報記録部へ記録するコーリングシーケンス情報記録手順と、
プログラムの現在の（実際の）バージョンと、プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけてバージョン管理情報記録部へ記録するバージョン管理情報記録手順と、
上記コーリングシーケンス情報記録部からコーリングシーケンス情報を読み出し、読み出したコーリングシーケンス情報から呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出す検索・読み出し手順と、
上記検索・読み出し手順が読み出したバージョン管理情報とコーリングシーケンス情報とを入力し、上記コーリングシーケンス情報と上記バージョン管理情報とを用いて、上記コーリングシーケンス情報が定義する呼出プログラムのバージョンと、上記バージョン管理情報に含まれる現在の（実際の）バージョンと、上記バージョン管理情報の互換性情報とを比較して、呼び出し側のプログラムと呼び出される側のプログラムとの間の整合性を判断し、判断した結果を出力するバージョンチェック手順と
を備えることを特徴とする。
【００１９】
この発明に係る管理情報作成システムは、プログラムのプログラムソースコードを記録するプログラムソースコード記録部と、
上記プログラムソースコードから作成される実行形式モジュールをプログラム名と関連づけて記録する実行形式モジュール記録部と、
上記プログラムソースコード記録部からプログラム（以下、「対象プログラム」と記す）のプログラムソースコードを読み出す検索・読み出し部と、
上記検索・読み出し部が読み出したプログラムソースコードを入力し、上記プログラムソースコードから他のプログラム（以下、「呼出プログラム」と記す）を呼び出しているコール文を抽出し、抽出したコール文から、上記呼出プログラムを示す呼出プログラム名を抽出する呼出プログラム名抽出部と、
上記呼出プログラム名抽出部が抽出した呼出プログラム名を用いて、上記呼出プログラムの実行形式モジュールを実行形式モジュール記録部から読み出し、上記呼出プログラムの実行形式モジュールを解析して、上記呼出プログラムのバージョンを検出するバージョン検出部と、
上記呼出プログラム名と上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報を生成するコーリングシーケンス生成部と
を備えることを特徴とする。
【００２０】
上記管理情報作成システムは、さらに、
上記対象プログラムの現在のバージョンと、上記対象プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおける対象プログラムの互換性情報とを入力することを促し、入力された情報を用いて、上記対象プログラムの現在のバージョンと、上記対象プログラムの複数のバージョンと、上記複数のバージョンにおける対象プログラムの互換性情報とを含むバージョン管理情報を生成するバージョン管理情報生成部を備えることを特徴とする。
【００２１】
【発明の実施の形態】
実施の形態１．
図１は、実施の形態１の整合性チェックシステムの構成の一例を表す図である。
図１に示す整合性チェックシステムは、プログラムの更新情報を管理する更新情報管理装置１００と複数のプログラムからなるプログラム群２００と出力結果としてのレポート３００とから構成される。また、整合性チェックシステムは、整合性チェック方法を実行する。
プログラム群２００は、複数のプログラムファイルとして、ＰｒｇＡ２１０、ＰｒｇＢ２２０、ＰｒｇＣ２３０を図１では一例として示しているがこれらに限られるわけではない。プログラム群２００に含まれるプログラムの数は、プログラムで実現するシステムに依存する。２１０、２２０、２３０は、プログラムファイルの一例である。プログラム群２００は、プログラムの実行環境に格納されているものであり、更新情報管理装置１００は、プログラムの実行環境においてプログラム間の整合性をチェックする。
一つのプログラムファイル、例えば、ＰｒｇＡ２１０、ＰｒｇＢ２２０、ＰｒｇＣ２３０それぞれは、実行形式モジュールに加え、コーリングシーケンス情報（以下、「ＣＳ」と記すこともある）、バージョン管理情報（以下、「Ｖｅｒ」と記すこともある）とを含む。
また、実行形式モジュールを記録する記録領域部分を実行形式モジュール記録部、コーリングシーケンス情報を記録する記録領域をコーリングシーケンス情報記録部、バージョン管理情報を記録する記録領域をバージョン管理情報記録部という。
レポート３００は、更新情報管理装置１００がチェックした結果をユーザへ報告する報告書である。レポート３００は、書面（プリントアウトしたもの）でもよいし、モニタ等の表示装置に表示する場合であってもよい。ユーザが認識できる形式で出力できればよい。
【００２２】
更新情報管理装置１００は、選択部１１０、検索・読み出し部１２０、制御部１３０、整合性チェック部１５０、ワークメモリ１６０とを備える。
選択部１１０は、整合性をチェックする対象となるプログラムのプログラム名を、ユーザから受け付ける。このプログラムは動作するプログラム群の中で最初に起動され、他のプログラムを呼び出すプログラムである。ユーザは、入力装置（図１では示していない）を用いて、プログラム名を入力し、選択部１１０へ受け渡す。入力装置としては、キーボード、テンキー、マウス等の機器を用いる。また、入力の際には、ユーザは、モニタ等表示装置を用いて、入力する情報を確認しながら入力装置を用いて入力を実施する。
検索・読み出し部１２０は、選択部１１０が受けつけたプログラム名を入力し、入力したプログラム名に対応するプログラムのコーリングシーケンス情報とバージョン管理情報とをプログラム群から読み出し、ワークメモリ１６０へ書きこむ。
制御部１３０は、更新情報管理装置１００の各構成要素の動作を制御する。
整合性チェック部１５０は、ワークメモリ１６０に書き込まれた情報を用いて、プログラム間の整合性をチェックする。
ワークメモリ１６０は、プログラム間の整合性をチェックするための、各プログラムのコーリングシーケンス情報とバージョン管理情報とを記録する。
【００２３】
以下の説明において、ファンクションは、プログラム内に含まれる処理の単位を示す。「ファンクション」は、「関数」ともいう。
プログラムは、処理を実施する実行形式の単位であり、複数のファンクションを含む。また、プログラムは、独立して存在する。
プログラムソースコード（プログラム・リスト）は、プログラムを作成するために必要な計算式、定義を記述したものであり、所定のプログラム言語（たとえば、Ｃ言語等）を用いて作成される。
【００２４】
次に、コーリングシーケンス情報とバージョン管理情報とについて説明する。
図２は、コーリングシーケンス情報とバージョン管理情報の一例を表した図である。
コーリングシーケンス情報（ＰｒｇＡ）は、ＰｒｇＡ内のＦｎｃＡ１（）において、ＰｒｇＢ（Ｖｅｒ２）のＦｎｃＢ１（）とＦｎｃＢ２（）とを呼び出していることを示している。このコーリングシーケンス情報はＰｒｇＡを設計、テストする段階で作成されるため、このバージョンのＰｒｇＡはＶｅｒ２のＰｒｇＢのＦｎｃＢ１（）とＦｎｃＢ２（）を呼び出した処理が正常に動作することがいえる。また、下段に示したバージョン管理情報は、ＰｒｇＡの現在のバージョン及び各バージョンとＦｎｃＡ１（）とＦｎｃＡ２（）との互換性を示している。下方に向かっている矢印は、上位互換（新しいバージョンへの互換）がある範囲を示している。複数のバージョンにおけるプログラムの互換性を表す情報を互換性情報ともいう。図２では、互換性情報は、複数のバージョンにおけるプログラムに含まれる関数の互換性を示す互換性情報を示している。
ここでは、ＰｒｇＡにおいて、Ｖｅｒ１のＦｎｃＡ２（）は、Ｖｅｒ２のＦｎｃＡ２（）と互換性（上位互換）があることを示している。上記以外の互換性はない。
【００２５】
例えば、Ｖｅｒ１のＰｒｇＡのＦｎｃＡ２（）のみを呼び出しているプログラムが正常に動作しているとすれば、ＰｒｇＡをＶｅｒ１からＶｅｒ２に置き換えても正常に動作する。一方、Ｖｅｒ２のＰｒｇＡのＦｎｃＡ２（）を呼び出しているプログラムが正常に動作している時に、ＰｒｇＡをＶｅｒ２からＶｅｒ１に置き換えた場合には、そのプログラムが正常に動作するとは限らない。
【００２６】
また、コーリングシーケンス情報（ＰｒｇＢ）は、ＰｒｇＢ内のＦｎｃＢ１において、ＰｒｇＣ（Ｖｅｒ３）のＦｎｃＣ１（）を呼び出していることを示している。このコーリングシーケンス情報はＰｒｇＢを設計、テストする段階で作成されるため、このバージョンのＰｒｇＢはＶｅｒ３のＰｒｇＣのＦｎｃＣ１（）を呼び出した処理が正常に動作することがいえる。また、下段に示したバージョン管理情報は、ＰｒｇＢの各バージョンと、ＦｎｃＢ１（）とＦｎｃＢ２（）との互換性を示している。上方に向かっている矢印は、下位互換（古いバージョンへの互換）が可能なことを示している。下方に向かっている矢印は、上記と同様である。
ここでは、ＰｒｇＢにおいて、Ｖｅｒ１のＦｎｃＢ１（）は、Ｖｅｒ２及びＶｅｒ３のＦｎｃＢ１（）と互換性（上位互換）があり、Ｖｅｒ２のＦｎｃＢ１（）は、Ｖｅｒ３のＦｎｃＢ１（）と互換性（上位互換）があることを示している。
また、ＰｒｇＢにおいて、Ｖｅｒ２のＦｎｃＢ１（）は、Ｖｅｒ１のＦｎｃＢ１（）と互換性（下位互換）がある。
また、ＰｒｇＢは、Ｖｅｒ１のＦｎｃＢ２（）と、Ｖｅｒ２のＦｎｃＢ１（）と互換性（上位互換）がある。
【００２７】
例えば、Ｖｅｒ１のＰｒｇＢのＦｎｃＢ１（）のみを呼び出しているプログラムが正常に動作しているとすれば、ＰｒｇＢをＶｅｒ１からＶｅｒ２に置き換えても正常に動作する。また、Ｖｅｒ２のＰｒｇＢのＦｎｃＢ１（）のみを呼び出しているプログラムが正常に動作しているとすれば、ＰｒｇＢをＶｅｒ２からＶｅｒ１に置き換えても正常に動作する。一方、Ｖｅｒ３のＰｒｇＢのＦｎｃＢ１（）を呼び出しているプログラムが正常に動作している時に、ＰｒｇＢをＶｅｒ３からＶｅｒ２に置き換えた場合には、そのプログラムが正常に動作するとは限らない。
【００２８】
図３は、図２のコーリングシーケンス情報を記録する場合の形式の一例を示した図である。
図３（Ａ）は、ＰｒｇＡのコーリングシーケンス情報であり、図３（Ｂ）は、ＰｒｇＢのコーリングシーケンス情報である。各ファンクション名に対応して、コーリングプログラム情報を記録する。コーリングプログラム情報は、呼び出しているファンクションを含む「プログラム名」、上記プログラムの「バージョン」を示す値、呼び出している「ファンクション名」とを記録する。
図３（Ａ）では、ファンクション名：ＦｎｃＡ１（）に対応して、コーリングプログラム情報として、一番目の情報として、プログラム名：ＰｒｇＢ、バージョン：２、ファンクション名：ＦｎｃＢ１（）、二番目の情報として、プログラム名：ＰｒｇＢ、バージョン：２、ファンクション名：ＦｎｃＢ２（）を記録している。
【００２９】
図４は、図２のバージョン管理情報を記録する場合の形式の一例を示した図である。
図４は、図２のバージョン管理情報に対応するように記録した例を示している。
図４（Ａ）は、ＰｒｇＡの現在のバージョンとファンクションの互換性を表し、図４（Ｂ）は、ＰｒｇＢの現在のバージョンとファンクションの互換性を表している。ファンクションの互換性では、各バージョンのファンクションが、互換性を有するバージョンの値を記録する例を示している。例えば、ＰｒｇＢのＦｎｃＢ１は、Ｖｅｒ１では、Ｖｅｒ３までの上位互換が可能であり、Ｖｅｒ２では、Ｖｅｒ３までの上位互換と、Ｖｅｒ１までの下位互換とが可能なことを示している。
【００３０】
図５は、プログラムを置きかえる場合のバージョンの対応の一例を示した図である。図５では、ＰｒｇＡのＶｅｒ１とＰｒｇＢのＶｅｒ１とが実行環境において、それぞれのプログラムが新しいバージョンに置きかえられる様子を示している。ＰｒｇＡは、Ｖｅｒ２へ、ＰｒｇＢは、Ｖｅｒ３へ置きかえられる例を示している。この場合、ＰｒｇＡにおいて、ＰｒｇＢに含まれるファンクションを呼び出している場合、そのファンクションに互換性が有るか無いかが問題となる。このような場合に、コーリングシーケンスを用いて、プログラム内で呼び出しているファンクションを検索し、検索したファンクションのコーリングシーケンス内でのバージョンを調査する。一方、呼び出される側のプログラムに関するバージョン管理情報を用いて、上記検索したファンクションのコーリングシーケンス内でのバージョンから現在のバージョンへの互換性があるかをチェックし、互換性がない場合は、レポート３００を用いて、ユーザに警告を発する必要がある。
【００３１】
次に、動作を説明する。
図６は、更新情報管理装置１００の動作の概略を表したフローチャート図である。
更新情報管理装置１００において、まず、選択部１１０は、チェックするプログラムを特定するプログラム名をユーザから受け付ける（Ｓ１１）。
次に、検索・読み出し部１２０は、選択部１１０で受け付けられたプログラム名を用いて、プログラム群２００からプログラム名と一致するプログラムを検索し（Ｓ１２）、検索したプログラムから、コーリングシーケンス情報とバージョン管理情報とを読み出して、ワークメモリ１６０へ記憶する（Ｓ１３）。検索・読み出し部１２０は、さらに、読み出したコーリングシーケンス情報を解析し、コーリングシーケンス情報を用いて、プログラム内で呼び出している他のプログラム、ファンクションを検出し、検出したプログラムのコーリングシーケンス情報とバージョン管理情報とを検索し、読み出し、ワークメモリ１６０への書きこみ、さらに読み出したコーリングシーケンス内の呼び出しているファンクション内を解析し、他のプログラム、ファンクションを呼び出していれば、さらに同様の処理を呼び出しているファンクションがなくなるまで繰り返す（Ｓ１４）。図１では、ワークメモリ１６０へ、ＰｒｇＡ，ＰｒｇＢ，ＰｒｇＣのコーリングシーケンス情報（ＣＳ）と、バージョン管理情報（Ｖｅｒ）とが読み出された例を示している（符号１６１〜１６６）。
【００３２】
次に、整合性チェック部１５０は、ワークメモリ１６０に記録されたコーリングシーケンス情報とバージョン管理情報とを用いて、バージョンの互換性があるファンクションの呼び出しになっているかをチェックする（Ｓ１５）。このとき、整合性チェック部１５０は、制御部１３０によって起動される。具体的には、制御部１３０は、検索・読み出し部１２０から、ワークメモリ１６０への書きこみが終了したことを通知する検索終了通知とチェック対象プログラム名との通知を受ける。制御部１３０は、整合性チェック部１５０を起動するとともに、チェック対象プログラム名を通知する。
上記が更新情報管理装置１００の動作の概略である。
Ｓ１１〜Ｓ１４までは、整合性チェックに必要な情報をワークメモリ１６０へ記録するチェック対象検索工程であり、Ｓ１５は、バージョンチェック工程であるといえる。
【００３３】
次に、詳細な動作の説明を行う。
動作の説明で用いるコーリングシーケンスの一例を示す。
図７は、コーリングシーケンスの一例を示す図である。
ＰｒｇＣのコーリングシーケンスが追加された点を除けば、図２，図３に示したコーリングシーケンス情報と同様である。
ＰｒｇＡは、チェック対象となるプログラムであり、ＰｒｇＢは、ＰｒｇＡから呼び出している関数を有するプログラムである。ＰｒｇＣは、ＰｒｇＢから呼び出している関数を有するプログラムである。図７では、芋づる式にプログラムに含まれるファンクションが呼び出されている例を示している。
ＰｒｇＡは、ＰｒｇＢのＦｎｃＢ１（図７の（１））とＦｎｃＢ２（図７の（２））を呼び出し、ＰｒｇＢのＦｎｃＢ１は、ＰｒｇＣのＦｎｃＣ１（図７の（３））を呼び出し、ＰｒｇＣのＦｎｃＣ１は、ＰｒｇＸのＦｎｃＸ１を呼び出している。従って、チェック対象検索工程では、検索・読み出し部１２０は、ワークメモリ１６０へ、ＰｒｇＡ，ＰｒｇＢ，ＰｒｇＣ，ＰｒｇＸそれぞれのコーリングシーケンス情報とバージョン管理情報とを書きこむことになる。
【００３４】
以下の説明では、ユーザが指定する、整合性チェック対象とするプログラムを「トッププログラム」、ある時点で検索の対象となっているプログラムを「検索対象プログラム」とする。検索対象プログラムは、チェック対象検索工程において推移していくものであり、トッププログラムである場合もある。
また、「検索対象関数」は、ある時点で検索の対象となっている関数とし、さらに、「検索対象コール」は、ある時点で検索対象プログラムに含まれる検索対象関数（ファンクション）の中で、検索の対象となっている関数コールとする。検索対象プログラムと同様、検索対象関数、検索対象コールともに、チェック対象検索工程において推移していく。「検索対象コール」は、ある時点で検索対象プログラムの検索対象関数の内、どのコール文を対象としているかを指すことになる。
また、「コール番号」は、コーリングシーケンス情報におけるコール（Ｃａｌｌ）の関数内での行番号とする。
以下、図７のコーリングシーケンスを用いて具体的な動作を説明する。
【００３５】
図８は、チェック対象検索工程の具体的な動作を表したフローチャート図である。
図９は、プログラム名を記録する検索プログラム履歴テーブルの一例を示す。図９は、検索対象プログラムの推移を記録するテーブルであり、ワークメモリ１６０へ設置される（図１には示していない）。このテーブルを用いて、現在どのプログラムを検索しているか等の情報を記録しておく。
【００３６】
まず、ユーザ（開発者）は、チェックするトッププログラムを検索対象プログラム（ＰｒｇＡ）に指定する（Ｓ２１）。ユーザによって指定されたプログラム名は、選択部１１０へ入力される。
選択部１１０は、ユーザからトッププログラムのプログラム名を取得し、取得したプログラム名（ＰｒｇＡ）をトッププログラムとして設定する。また、選択部１１０は、トッププログラムを検索対象プログラムとして設定し、検索対象プログラムとトッププログラムとを検索・読み出し部１２０へ出力する。
次に、検索・読み出し部１２０は、検索対象プログラムとトッププログラムとを比較する（Ｓ２２）。この段階では、検索対象プログラムとトッププログラムとは、ＰｒｇＡで一致している。一致する場合（Ｓ２２でＹｅｓ）は、Ｓ２６へ進む。
【００３７】
次に、Ｓ２６からは、検索・読み出し部１２０は、トッププログラム内の各関数を検索して呼び出している関数を調査し、呼び出している関数が含まれるプログラムのコーリングシーケンス情報とバージョン管理情報とを取得する手順を実施する。
まず、トッププログラムの全関数の全コール（関数の呼び出し）について調査が終了したかを判断する（Ｓ２６）。全関数の全コールについて調査が終了していない場合は（Ｓ２６でＮｏ）、トッププログラムに含まれているコールを順番に検索対象コールとして処理を進める（Ｓ２７）。従って、検索・読み出し部１２０は、前回検索したコールの次のコールを検索対象コールとする。
ここでは、はじめの調査なので、検索・読み出し部１２０は、検索対象コールをＦｎｃＡ１（）内のＣａｌｌ  ＰｒｇＢ（）．ＦｎｃＢ１（）とする。
【００３８】
次に、検索・読み出し部１２０は、現在の検索対象プログラム、検索対象関数、検索対象コールの行番号を検索プログラム履歴テーブル（図９）へ記録する。ここでは、シリアルＮｏ．１の行にＰｒｇＡ、ＦｎｃＡ１、１（ＦｎｃＡ１（）の１行目のコール）を、ポインタには１を設定する。ポインタは、１つ前の検索箇所を示すシリアルＮｏ．を指す（Ｓ２８）。
さらに、検索・読み出し部１２０は、検索対象コールが指す、プログラムを検索対象プログラムとして設定し、関数を検索対象関数として設定する（Ｓ２９）。
ここでは、検索・読み出し部１２０は、検索対象プログラムをＰｒｇＢ、検索対象関数をＦｎｃＢ１（）とする。
検索・読み出し部１２０は、検索対象プログラムのコーリングシーケンス情報とバージョン管理情報とがワークメモリ１６０（メモリ）へ記録されているかを調査し（Ｓ３０）、記録されていない場合は（Ｓ３０でＹｅｓ）、ワークメモリ１６０へ記録する（Ｓ３１）。
ここでは、ＰｒｇＢの情報をワークメモリ１６０へ記録されていないため、ＰｒｇＢのコーリングシーケンス情報とバージョン管理情報とをワークメモリ１６０へ記録する。
【００３９】
次に、検索・読み出し部１２０は、Ｓ２２の処理へ戻る。
検索・読み出し部１２０は、Ｓ２２において、検索対象プログラム（ＰｒｇＢ）とトッププログラム（ＰｒｇＡ）とが一致しないことより（Ｓ２２でＮｏ）、Ｓ２３へ進む。
検索・読み出し部１２０は、検索対象プログラム（ＰｒｇＢ）の検索対象関数（ＦｎｃＢ１（））の中を検索し、全コールについて検索が終了していないことを検出し（Ｓ２３でＮｏ）、コール番号が１のコールＣａｌｌ  ＰｒｇＣ（）．ＦｎｃＣ１（）を検索対象コールとする（Ｓ２５）。
次に、Ｓ２８において、現在の検索対象プログラム、検索対象関数、検索対象コールを検索プログラム履歴テーブル（図９）に格納する。格納前の検索プログラム履歴テーブルのポインタは１に設定されているため、ポインタよりも１だけ多いシリアルＮｏ．２の行に、ＰｒｇＢ、ＦｎｃＢ１、１（ｆｎｃＢ１（）の１行目のコール）を設定し、ポインタを１だけインクリメントして２とする。
続いて、Ｓ２９において、検索対象コールがＣａｌｌ  ＰｒｇＣ．ＦｎｃＣ１（）であることから、検索対象プログラムをＰｒｇＣ、検索対象関数をＦｎｃＣ１（）に設定する。
次に、検索対象プログラム（ＰｒｇＣ）がワークメモリ１６０に記録されていない場合（Ｓ３０でＹｅｓ）、検索対象プログラムのワークメモリ１６０にコーリングシーケンス情報とバージョン管理情報とをワークメモリ１６０に記録する。
【００４０】
Ｓ２３において、検索対象プログラムの検索対象関数内の全コールについて検索したと判断されたら（Ｓ２３でＹｅｓ）、検索・読み出し部１２０は、検索対象コールを一つ前の検索対象プログラムと検索対象関数に戻す。これは、検索プログラム履歴テーブルの現在のシリアルＮｏ．が示すプログラム、関数、コールに戻すことによって実施する。その後、検索プログラム履歴テーブルのポインタは１だけディクリメントしておく（Ｓ２４）。
このようにして、順次処理を実施し、検索対象コールのポインタが０になった場合、検索対象プログラムはトッププログラムと一致し（Ｓ２２でＹｅｓ）、Ｓ２６でトッププログラムの全関数の全コールについて処理を実施した場合（Ｓ２６でＹｅｓ）、チェック対象検索工程が終了する。
【００４１】
次に、バージョンチェックの動作を説明する。
図１０は、バージョンチェックの動作の一例を表したフローチャート図である。
Ｓ３２において、全てのコールをチェックしたかを判断し、まだチェックしていない関数がある場合は、チェック処理を続行する（Ｓ３２でＮｏ）。Ｓ３２は、チェック処理が続行される条件を示している。
整合性チェック部１５０は、コーリングシーケンス情報を検索して、チェック対象コールを設定する（Ｓ３３）。図７では、まず、ＦｎｃＡ１（）内のＣａｌｌ  ＰｒｇＢ（）．ＦｎｃＢ１（）がチェック対象コールとして設定される。
次に、整合性チェック部１５０は、チェック対象コールが呼び出しているプログラム、関数、バージョンに対応する部分及び呼出プログラムの実際のバージョンを、呼出プログラムに関するバージョン管理情報から検索する。
【００４２】
次に、整合性チェック部１５０は、バージョン管理情報中の検索した部分（チェック対象コールが呼び出しているプログラム、関数、バージョンに対応する部分）を参照して、呼び出し側のコーリングシーケンス情報中のバージョンから、呼び出される側のプログラムの現在稼働している現在の（実際の）バージョンへ向かっての互換性があるかどうかをチェックする（Ｓ３５）。
互換性がある場合は（Ｓ３５でＹｅｓ）、次のコールについて調査するため、Ｓ３２へ戻る。互換性がない場合は、エラー情報をワークメモリ１６０内へ記憶し（Ｓ３６）、次のコールについて調査するため、Ｓ３２へ戻る。
すべての関数について調査が終了したら（Ｓ３２でＹｅｓ）、エラー情報としてワークメモリ１６０へ記憶していた情報を読み出し、レポートを作成して出力する（Ｓ３７）。
【００４３】
図１１は、整合性チェックの結果を報告する整合性チェック報告書の一例である。図１１では、エラーがあった場合を示している。図１１に示した情報は一例であり、これ以外の情報を出力してもよい。また、複数のプログラムにおいて、互換性がない場合は、互換性がないすべてのプログラムを出力する。
エラーがない場合は、プログラムが正常に動作することを伝える報告書を作成する。
【００４４】
また、図１では、制御部１３０が全体の動作を制御し、特に、検索・読み出し部１２０と、整合性チェック部１５０との動作を制御しているように示しているが、検索・読み出し部１２０が直接、整合性チェック部１５０を起動するようにしてもよい。
【００４５】
また、図８では、検索・読み出し部１２０がプログラムに関連付けられたバージョン管理情報を検出できる場合を前提として説明したが、バージョン管理情報が検出できなかった場合は、バージョン管理情報がないことを整合性チェック部１５０へ通知し、整合性チェック部１５０では、バージョン管理情報がないことを示すレポートを出力することが可能である。
【００４６】
また、図１０のＳ３５では、既に配置済みの呼出プログラム（呼び出される側）のバージョン管理情報を参照して、既に配置済みの呼び出し側のプログラムのコーリングシーケンス情報中のバージョンと、既に配置済みの呼出プログラム（呼び出される側）の現在稼働している実際のバージョンとを比較してチェックを行うことを述べたが、未配置の呼び出し側のプログラムのコーリングシーケンス情報、未配置の呼び出される側のバージョン管理情報と実際のバージョンを用いることによって、プログラムの置き換えをする前に不具合の発生が生じるか否かをチェックすることが可能となる。
【００４７】
実施の形態２．
実施の形態２では、コーリングシーケンス情報を作成し、バージョン管理情報の作成を補助する装置について説明する。
なお、ここまでの説明では、プログラムの現在の（実際の）バージョンは、バージョン管理情報に含ませるとしたが、これは実行形式モジュールに含まれてもよい。本実施の形態では、プログラムの現在の（実際の）バージョンは実行形式モジュールに含まれていることとする。
図１２は、コーリングシーケンス情報及びバージョン管理情報とを作成する管理情報作成システムの一例を示した図である。
以下の説明では、コーリングシーケンス情報及びバージョン管理情報とを、管理情報ともいう。
【００４８】
プログラムソースコード記録部３４０は、プログラムのプログラムソースコードをプログラム名と関連づけて複数記録する。
実行形式モジュール記録部３３０は、上記プログラムソースコードから作成される実行形式モジュールをプログラム名と関連づけて複数記録する。
管理情報作成装置４００は、コーリングシーケンス情報（ＣＳ）とバージョン管理情報（Ｖｅｒ）とを作成する。
選択部４１０は、コーリングシーケンス情報（ＣＳ）とバージョン管理情報（Ｖｅｒ）とを作成するプログラム名の入力を受け付け、受け付けたプログラム名を検索・読み出し部４２０へ通知する。
【００４９】
検索・読み出し部４２０は、選択部４１０が通知したプログラム名に関連づけられるプログラムソースコードをプログラムソースコード記録部３４０から読み出す。
管理情報作成部４５０は、プログラムソースコードと実行形式モジュールを用いて、コーリングシーケンス情報とバージョン管理情報とを作成する。管理情報作成部４５０は、呼出プログラム名抽出部４５１と、バージョン検出部４５２と、コーリングシーケンス生成部４５３と、バージョン管理情報生成部４５４とを備える。各構成要素の機能については、後述する。
制御部４４０は、全体を制御する。図１２では、検索・読み出し部４２０の処理後、制御部４４０を介して管理情報作成部４５０へ指示を出す例を示しているが、検索・読み出し部４２０が管理情報作成部４５０へ直接指示を出してもよい。
【００５０】
次に、図１３を用いて動作を説明する。
図１３は、管理情報作成装置の動作の一例を示した図である。
選択部４１０は、ユーザから管理情報を作成する対象プログラム（ここでは、ＰｒｇＡとする）を受け付ける（Ｓ４１）。
次に、選択部４１０は、対象プログラムのバージョンを受け付ける（Ｓ４２）。なお、対象プログラムのバージョンは、ユーザからの入力によって取得してもよいし、その他の方法によって取得してもよい。
【００５１】
次に、検索・読み出し部４２０は、選択部４１０が受け付けた対象プログラムのプログラム名を入力し、入力したプログラム名を用いて、プログラムソースコード記録部から、関連づけられるプログラムソースコードを読み出す（Ｓ４３）。読み出したプログラムソースコードは、ワークメモリ４３０へ記録する。検索・読み出し部４２０は、処理が終了したことを制御部４４０へ通知する。制御部４４０は、管理情報作成部４５０へ処理の開始を指示する。
次に、管理情報作成部４５０の呼出プログラム名抽出部４５１は、プログラムソースコードを検索し、プログラムソースコードから他のプログラム（以下、「呼出プログラム名」と記す）の関数を呼び出しているコール文を抽出する。抽出したコール文から、上記呼出プログラムを示す呼出プログラム名を抽出する（Ｓ４４）。
次にバージョン検出部４５２は、呼出プログラム名抽出部４５１が抽出した呼出プログラム名を用いて、実行形式モジュール記録部３３０から上記呼出プログラム名に対応する実行形式モジュールを読み出し、読み出した実行形式モジュールを解析して、上記呼出プログラムのバージョンを検出する（Ｓ４５）。
【００５２】
次に、コーリングシーケンス部４５３は、上記呼出プログラム名と上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報を生成する（Ｓ４６）。
プログラムソースコードの終了になるまで、管理情報作成部４５０は、Ｓ４４からＳ４６の処理を繰り返す。
また、管理情報作成部４５０のバージョン管理情報生成部４５４は、バージョン管理情報の作成を促すため、ユーザに、対象プログラム（ＰｒｇＡ）の履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性情報とを入力することを促す画面を表示する。表示した画面に入力された情報を用いて、対象プログラムの複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性情報とを含むバージョン管理情報を生成する（Ｓ４８）。
管理情報作成部４５０は、コーリングシーケンス情報とバージョン管理情報と実行形式モジュールとを含むプログラムファイル３５０を作成する（Ｓ４９）。
【００５３】
コーリングシーケンス情報及びバージョン管理情報の一例は、図２、図３、図４に示した構成と同様である。
【００５４】
また、プログラムを開発中に、プログラムのバージョンを変更しようとした時点で、プログラムソースコードをチェックしてコーリングシーケンス情報を作成することや、ユーザの入力を促し、その入力によってバージョン管理情報を作成することも可能である。
【００５５】
また、バージョン管理情報は、ユーザがすべて作成してもよいし、一部分についてはユーザからの入力を促し、その他の部分は、管理情報作成装置４００が作成するようにしてもよい。
例えば、複数のバージョンにおける関数のパラメータの数や、パラメータのタイプ（データ型、サイズも含む）もバージョン管理情報に格納することとし、それらがバージョン間でどのように異なるかを調査することによって、ある関数のあるバージョン間で上位または下位の互換性がないと判断できる場合は、その部分についてユーザの入力を禁止し、その部分が互換性なしという情報を自動的にバージョン管理情報へ格納する。
【００５６】
このように、コーリングシーケンス情報及びバージョン管理情報との作成を補助する装置を備えることによって、プログラムの開発者が、プログラムの改版履歴を管理することの労力を削減することが可能となる。
【００５７】
実施の形態３．
実施の形態１では、コーリングシーケンス情報とバージョン管理情報とは、実行形式モジュールと一体化してプログラムファイルとして格納している例を図１に示した。しかしながら、図１で示した形式に限られるわけではない。
実行形式モジュールとは別のファイルに格納してもかまわない。
【００５８】
また、図２，図３，図４では、コーリングシーケンス情報として、ＰｒｇＡから呼び出している関数を定義している例を示し、バージョン管理情報として、プログラムに含まれる各関数について、複数のバージョンにおけるプログラム内の関数の互換性を示した。しかしながら、プログラムのレベルの互換性を示す情報であってもかまわない。例えば、コーリングシーケンス情報は、ＰｒｇＡ（プログラム）が呼び出す呼出プログラムを特定する呼出プログラム名（図２では、ＰｒｇＢ）と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報であってもよい。
また、バージョン管理情報は、プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報を、複数のプログラムそれぞれについてプログラム名と関連づけて記録する場合であってもよい。
【００５９】
実施の形態４．
実施の形態１では、選択部１１０は、一つのプログラム名を受けつけて互換性をチェックする例を説明したが、二つ以上のプログラム名を受け付け、まとめて互換性をチェックすることも可能である。
図８のＳ２１では、「開発者がチェックする任意個のトッププログラムを検索対象プログラムに指定」となる。
検索・読み出し部１２０は、選択部１１０が受け付けたプログラムの数だけ、図８のＳ２２以降の処理を繰り返す。また、検索・読み出し部１２０は、ワークメモリ１６０内へ、コーリングシーケンス情報とバージョン管理情報とを読み出したプログラム名を記録するプログラム名リストを作成し、既に読み出したか否かをプログラム名リストによってチェックするようにして、既に読み出したプログラムについてはスキップする。
また、整合性チェック部１５０は、受け付けたプログラムの数だけ、図１０に示した処理を繰り返す。
【００６０】
このようにして、一度ワークメモリ１６０へ読み出した情報を用いて、複数のプログラムの互換性をチェックすることが可能となる。
従って、一連の機能をまとめて処理できるため、効率よく処理することが可能となる。
【００６１】
また、実施の形態１では、チェック対象検索工程の処理が終了した後、バージョンチェック工程を実施する例を説明した（図６）。チェック対象検索工程で利用する情報をワークメモリ１６０へ記録することにより、バージョンチェック工程において、ワークメモリ１６０へのアクセスが高速になり、処理の実行が効率よくなる。
しかしながら、チェック対象検索工程で、一つのチェック対象を検索した後、バージョンチェックを実施してもよい。例えば、検査対象プログラムを検索するたび毎にバージョンチェックを実施してもよい。
【００６２】
実施の形態５．
実施の形態１では、整合性チェック部１５０は、プログラムの実行環境においてプログラムの整合性をチェックしているが、プログラムが動作していないときにチェックすることを前提していた。しかしながら、プログラムを起動した時に、動的に整合性チェックを実施することも可能である。
【００６３】
また、整合性チェックにおいて、整合性がないと判断された場合、エラー情報を出力する。
また、エラー情報に整合性のあるバージョンの情報を追加して出力することも可能である。例えば、整合性チェック部１５０は、チェック対象プログラムのコーリングシーケンス情報、呼出プログラムのバージョン、呼出プログラムのバージョン管理情報によってチェックした結果、整合性がないと判断した場合、整合性のある呼出プログラムのバージョンを、呼出プログラムのバージョン管理情報の互換性情報から取得し、取得したバージョンのプログラムが格納されている場所を検索して出力する。
【００６４】
また、下位互換があることによって、整合性のチェックがＯＫとなる具体例とは、コールされるプログラムのバージョン管理情報の中に、コールされるプログラムの実際のバージョンよりも新しい（未知の）バージョンがあり、かつ、新しいバージョンがコールされるような場合である。自己のバージョンより新しいバージョンがバージョン管理情報にあるプログラムが作成される状況とは、プログラムを開発している時点で、新しい未知のバージョンをバージョン管理情報に追加しておいた場合である。すなわち、将来利用するバージョンの番号を予め記録している場合である。
このような場合、バージョンの番号を二つの部分、ＸＸＸ．ＹＹＹのように、ＸＸＸの部分とＹＹＹの部分とが異なる意味合いを持つ二つの部分からなるようにし、ＸＸＸの部分が変更になれば、下位互換性なし、ＸＸＸの部分が変更なければ、下位互換性ありという規則に従って、バージョンの番号を付与する様にする。これによって、バージョンの番号によって、互換性の有無を示すことが可能となる。また、互換性の管理が容易になる。
更に、バージョンの番号を三つの部分、ＸＸＸ．ＹＹＹ．ＺＺＺのように、ＸＸＸの部分とＹＹＹの部分とＺＺＺの部分とが異なる意味合いを持つ三つの部分からなるようにし、ＸＸＸの部分が変更になれば上位互換性なし、変更なければ上位互換性あり、ＹＹＹの部分が変更になれば下位互換性なし、変更なければ下位互換性あり、という規則に従って、バージョンの番号を付与することも可能である。この場合は、バージョンの番号によって、上位互換、下位互換の両方の互換性の有無を示すことができる。
【００６５】
実施の形態６．
上記整合性チェックシステムは、プログラム（整合性チェックプログラム）によって実現することができる。
整合性チェックプログラムは、計算機にロードされ、プロセッサの制御に基づいて実行される。プロセッサは、図１の制御部１３０に含まれていてもよい。
【００６６】
整合性チェックプログラムは、下記の手順から構成される。
（１）プログラムが呼び出す呼出プログラムを特定する呼出プログラム名と、上記呼出プログラムのバージョンとを定義するコーリングシーケンス情報をコーリングシーケンス情報記録部へ記録するコーリングシーケンス情報記録手順。
（２）プログラムの改版履歴を示す複数のバージョンと、上記複数のバージョンにおけるプログラムの互換性を示す互換性情報とを含むバージョン管理情報と、プログラムの現在の（実際の）バージョンと、複数のプログラムそれぞれについてプログラム名と関連づけてバージョン管理情報記録部へ記録するバージョン管理情報記録手順。
（３）上記コーリングシーケンス情報記録部からコーリングシーケンス情報を読み出し、読み出したコーリングシーケンス情報から呼出プログラム名を取りだし、取り出した呼出プログラム名に関連づけられるバージョン管理情報を上記バージョン管理情報記録部から読み出す検索・読み出し手順。
（４）上記検索・読み出し工程が読み出したコールされるプログラムに関するバージョン管理情報とコールする側のプログラムに関するコーリングシーケンス情報とを入力し、上記コーリングシーケンス情報と上記バージョン管理情報とを用いて、上記コーリングシーケンス情報が定義する呼出プログラムのバージョンと、バージョン管理情報の互換性情報と、現在の（実際の）バージョンとを比較して、プログラム間の整合性を判断し、判断した結果を出力するバージョンチェック手順。
【００６７】
また、下記の手順の一部分がプログラムではなく、ハードウェア、ファームウェア等によって構成される場合であってもよい。また、上記各手順、あるいは、図１に一例を示した整合性チェックシステムによって整合性チェックが実行される。
また、上記整合性チェックプログラムは、計算機で読み取り可能な記録媒体に記録される。記録媒体に記録された整合性チェックプログラムは、計算機にロードされ、プロセッサの制御に基づいて実行される。
【００６８】
【発明の効果】
この発明によれば、プログラムがコールしている他のプログラムに関するコーリングシーケンス情報と、プログラムのバージョンに関するバージョン管理情報とを、プログラム毎に作成し、プログラムがコールしている他のプログラムのバージョンをチェックすることによって、プログラム間の整合性を検証する手続を容易にすることができる。
【図面の簡単な説明】
【図１】実施の形態１の整合性チェックシステムの構成の一例を表す図。
【図２】コーリングシーケンス情報とバージョン管理情報の一例を表した図。
【図３】図２のコーリングシーケンス情報を記録する場合の形式の一例を示した図。
【図４】図２のバージョン管理情報を記録する場合の形式の一例を示した図。
【図５】プログラムを置きかえる場合のバージョンの対応の一例を示した図。
【図６】更新情報管理装置１００の動作の概略を表したフローチャート図。
【図７】コーリングシーケンスの一例を示す図。
【図８】チェック対象検索工程の具体的な動作を表したフローチャート図。
【図９】プログラム名を記録する検索プログラム履歴テーブルの一例を表す図。
【図１０】整合性チェックの動作の一例を表したフローチャート図。
【図１１】整合性チェックの結果を報告するバージョンチェック報告書の一例を表す図。
【図１２】コーリングシーケンス情報及びバージョン管理情報とを作成する管理情報作成システムの一例を示した図。
【図１３】管理情報作成装置の動作の一例を示した図。
【図１４】従来のプログラム間整合性に関する状況を示す例を表す図。
【図１５】従来のプログラム間の整合性をチェックする一例を表した図。
【符号の説明】
１００  更新情報管理装置、１１０  選択部、１２０  検索・読み出し部、１３０  制御部、１５０  整合性チェック部、１６０  ワークメモリ、１６１  ＰｒｇＡ  ＣＳ、１６２  ＰｒｇＡ  Ｖｅｒ、１６３  ＰｒｇＢ  ＣＳ、１６４  ＰｒｇＢ  Ｖｅｒ、１６５  ＰｒｇＣ  ＣＳ、１６６  ＰｒｇＣ  Ｖｅｒ、２００  プログラム群、２１０  ＰｒｇＡ、２２０  ＰｒｇＢ、２３０  ＰｒｇＣ、３００  レポート、３１０  コーリングシーケンス情報記録部、３２０  バージョン管理情報記録部、３３０  実行形式モジュール記録部、３４０  プログラムソースコード記録部、３５０  プログラムファイル、４００  管理情報作成装置、４１０  選択部、４２０  検索・読み出し部、４３０  ワークメモリ、４３２プログラムソースコード、４３３  ＣＳ、４３４  Ｖｅｒ、４４０  制御部、４５０  管理情報作成部。
【図１】
2005025543.tif 000003
【図２】
2005025543.tif 000004
【図３】
2005025543.tif 000005
【図４】
2005025543.tif 000006
【図５】
2005025543.tif 000007
【図６】
2005025543.tif 000008
【図７】
2005025543.tif 000009
【図８】
2005025543.tif 000010
【図９】
2005025543.tif 000011
【図１０】
2005025543.tif 000012
【図１１】
2005025543.tif 000013
【図１２】
2005025543.tif 000014
【図１３】
2005025543.tif 000015
【図１４】
2005025543.tif 000016
【図１５】
2005025543.tif 000017