(57)【要約】【課題】  アプリケーションプログラムのパッケージソフトに対するカストマイズが、パッケージソフトの修正、制御プログラムの追加、システム構成の変更を一切行うことなく、カストマイズに対応したライブラリをアプリケーションプログラムを構成する共有ライブラリに追加することによって実現することにある。【解決手段】  アプリケーションプログラム２をオブジェクト指向プログラム言語によって記述してなる共有ライブラリ４に、アプリケーションプログラムの標準的な機能で構成されるパッケージライブラリ群５と、システム個別の機能追加や機能変更に対応するためにカストマイズされたカストマイズライブラリ群６と、パッケージライブラリ群５及びカストマイズライブラリ群６を構成する個々のパッケージライブラリ１０及び個々のカストマイズライブラリ２０に対する制御情報を登録する記憶装置３０と、を有する。【選択図】      図１
2006099297.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムをオブジェクト指向プログラム言語で記述し、コンパイル及びリンクしてなる共有ライブラリが含むパッケージライブラリ群と、前記パッケージライブラリ群からライブラリにカストマイズを施してなるカストマイズライブラリ群と、前記パッケージライブラリ群及び前記カストマイズライブラリ群を構成する個々のパッケージライブラリ及び個々のカストマイズライブラリに対する制御情報を登録する記憶装置と、を有し、前記共有ライブラリにカストマイズしたライブラリを追加することによって前記共有ライブラリをカストマイズする装置にあって、
前記パッケージライブラリ群を構成する個々のパッケージライブラリが、自身を識別するライブラリ識別情報を登録する第１のライブラリ識別情報クラスを有する第１のライブラリ識別情報部と、第１の業務処理クラスのインスタンスを生成する第１の制御クラスのアドレスを登録する手段を有する第１のインスタンス制御部と、前記第１の業務処理クラスを含む第１の業務処理部と、を有し、
前記カストマイズライブラリ群を構成する個々のカストマイズライブラリが、自身を識別するライブラリ識別情報を登録する第２のライブラリ識別情報クラスを有する第２のライブラリ識別情報部と、第２の業務処理クラスのインスタンスを生成する第２の制御クラスのアドレスを登録する手段を持ち、かつ前記第１のインスタンス制御部を継承した第２のインスタンス制御部と、前記第２の業務処理クラスを含む第２の業務処理部と、を有し、
前記記憶装置が、前記パッケージライブラリ及びカストマイズライブラリのいずれか一つを指定するライブラリ識別情報を記憶する基本ライブラリ識別情報と、前記パッケージライブラリ及びカストマイズライブラリの前記第１及び第２の制御クラスに対して、前記第１の制御クラスか、あるいは前記第２の制御クラスかを指すアドレスを登録するインスタンス管理テーブルと、を有し、
てなることを特徴とする共有ライブラリ差分カストマイズ装置。
【請求項２】
前記基本ライブラリ識別情報は、
前記パッケージライブラリ及び前記カストマイズライブラリがそれぞれ有するライブラリ識別情報が持つ版数指標である有効文字列を比較して、大きい有効文字列を有するライブラリ識別情報が登録されることを特徴とする請求項１記載の共有ライブラリ差分カストマイズ装置。
【請求項３】
前記第１のライブラリ識別情報クラスは、
自身が属するライブラリの識別情報を登録するライブラリ識別情報と、ライブラリ情報識別手段と、を有することを特徴とする請求項１記載の共有ライブライ差分カストマイズ装置。
【請求項４】
前記第１の制御クラスは、
前記パッケージライブラリの第１の業務処理クラスに対応して設けられ、前記インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段と、前記インスタンス管理テーブルからアドレスを取得するインスタンス取得手段と、前記第１の業務処理クラスをインスタンス化するインスタンス生成手段と、を備えることを特徴とする請求項１記載の共有ライブラリ差分カストマイズ装置。
【請求項５】
前記第１の業務処理クラスは、
前記パッケージライブラリの第１の業務処理部に含まれる業務処理クラスで、それぞれが仮想関数化した業務処理実行手段を備えることを特徴とする請求項１記載の共有ライブラリ差分カストマイズ装置。
【請求項６】
前記第２のライブラリ識別情報クラスは、
前記パッケージライブラリの第１のライブラリ識別情報クラスに対応して設けられ、前記第１のライブラリ識別情報クラスを継承し、かつ自身が属するライブラリの識別情報を登録するライブラリ識別情報と、ライブラリ情報識別手段と、を有することを特徴とする請求項１記載の共有ライブライ差分カストマイズ装置。
【請求項７】
前記第２の制御クラスは、
前記カストマイズライブラリの第２の業務処理クラスに対応して設けられ、かつ前記第１の制御クラスを継承し、前記インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段と、前記インスタンス管理テーブルからアドレスを取得するインスタンス取得手段と、前記第２の業務処理クラスをインスタンス化するインスタンス生成手段と、を備えることを特徴とする請求項１記載の共有ライブラリ差分カストマイズ装置。
【請求項８】
前記第２の業務処理クラスは、
前記カストマイズライブラリの第２の業務処理部に含まれる業務処理クラスで、かつ第１の業務処理クラスを継承し、仮想関数化した業務処理実行手段を備えることを特徴とする請求項１記載の共有ライブラリ差分カストマイズ装置。
【請求項９】
アプリケーションプログラムをオブジェクト指向プログラム言語で記述し、コンパイル及びリンクしてなる共有ライブラリが含むパッケージライブラリ群と、前記パッケージライブラリ群のライブラリにカストマイズを施してなるカストマイズライブラリ群と、前記パッケージライブラリ群及び前記カストマイズライブラリ群を構成する個々のパッケージライブラリ及び個々のカストマイズライブラリに対する制御情報を登録する記憶装置と、を有し、前記共有ライブラリにカストマイズしたライブラリを追加することによって前記共有ライブラリをカストマイズする装置の方法にあって、
アプリケーションプログラムの起動時に前記パッケージライブラリがロードされるとき、前記パッケージライブラリが有する第１のインスタンス制御部の第１の制御クラスが前記共有ライブラリの初期化機能によってインスタンス化され、前記第１の制御クラス自身が有するインスタンス登録手段によって、自身を指すアドレスを対応するインスタンス管理テーブルに登録するステップと、
アプリケーションプログラムの起動時に前記パッケージライブラリがロードされるとき、前記パッケージライブラリが有する第１のライブラリ識別情報部の第１のライブラリ識別情報クラスが共有ライブラリの初期化機能によってインスタンス化され、自身が有するライブラリ情報識別手段によって、自身が有するライブラリ識別情報が持つ版数指標である有効文字列と基本ライブラリ識別情報に登録されているライブラリ識別情報の前記有効文字列とを比較し、有効文字列の大きい方のライブラリ識別情報を前記基本ライブラリ識別情報に上書き登録するステップと、
アプリケーションプログラムの起動時に前記カストマイズライブラリがロードされるとき、前記カストマイズライブラリが有する第２のインスタンス制御部の第２の制御クラスが前記共有ライブラリの初期化機能によってインスタンス化され、前記第２の制御クラスが有するインスタンス登録手段によって、自身のアドレスを前記インスタンス管理テーブルに登録する、あるいは自身のアドレスを前記インスタンス管理テーブルの前記第１の制御クラスの既登録アドレスに上書き登録するステップと、
アプリケーションプログラムの起動時に前記カストマイズライブラリがロードされるとき、自身が有する第２のライブラリ識別情報部の第２のライブラリ識別情報クラスが前記共有ライブラリの初期化機能によってインスタンス化され、自身が有するライブラリ情報識別手段によって、自身が有するライブラリ識別情報の有効文字列と前記基本ライブラリ識別情報の前記有効文字列とを比較し、自身の前記有効文字列が大きいとき、前記ライブラリ識別情報を前記基本ライブラリ識別情報に上書き登録するステップと、
前記第１の業務処理クラスの業務処理実行手段の呼び出し要求があったとき、呼び出し元の業務処理実行手段は、前記第１の業務処理クラスに対応する前記第１の制御クラスのインスタンス取得手段を通じて、前記インスタンス管理テーブルから登録されている制御クラスのアドレスを取得するステップと、
前記取得したアドレスが示す制御クラスのインスタンス生成手段によって、対応する業務処理クラスをインスタンス化するステップと、
前記生成された業務処理クラスのインスタンスの業務処理実行手段を実行するステップと、
を実行することを特徴とする共有ライブラリ差分カストマイズ装置の方法。
【請求項１０】
前記基本ライブラリ識別情報は、
前記パッケージライブラリ及び前記カストマイズライブラリがそれぞれ有するライブラリ識別情報が持つ指標である前記有効文字列を比較して、大きい有効文字列を有するライブラリ識別情報が登録されることを特徴とする請求項９記載の共有ライブラリ差分カストマイズ装置の方法。
【請求項１１】
前記第１のライブラリ識別情報クラスは、
自身が属するライブラリの識別情報を登録するライブラリ識別情報と、ライブラリ情報識別手段と、を有することを特徴とする請求項９記載の共有ライブライ差分カストマイズ装置の方法。
【請求項１２】
前記第１の制御クラスは、
前記パッケージライブラリの第１の業務処理クラスに対応して設けられ、前記インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段と、前記インスタンス管理テーブルからアドレスを取得するインスタンス取得手段と、対応する第１の業務処理クラスをインスタンス化するインスタンス生成手段と、を備えることを特徴とする請求項９記載の共有ライブラリ差分カストマイズ装置の方法
【請求項１３】
前記第１の業務処理クラスは、
前記パッケージライブラリの第１の業務処理部に含まれる業務処理クラスで、それぞれが仮想関数化した業務処理実行手段を備えることを特徴とする請求項９記載の共有ライブラリ差分カストマイズ装置の方法。
【請求項１４】
前記第２のライブラリ識別情報クラスは、
前記パッケージライブラリの第１のライブラリ識別情報クラスに対応して設けられ、前記第１のライブラリ識別情報クラスを継承し、かつ自身が属するライブラリ識別情報を登録するライブラリ識別情報と、ライブラリ情報識別手段と、を有することを特徴とする請求項９記載の共有ライブライ差分カストマイズ装置の方法。
【請求項１５】
前記第２の制御クラスは、
前記カストマイズライブラリの第２の業務処理クラスに対応して設けられ、かつ前記第１の制御クラスを継承し、前記インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段と、前記インスタンス管理テーブルからアドレスを取得するインスタンス取得手段と、対応する第２の業務処理クラスをインスタンス化するインスタンス生成手段と、を備えることを特徴とする請求項９記載の共有ライブラリ差分カストマイズ装置の方法。
【請求項１６】
前記第２の業務処理クラスは、
前記カストマイズライブラリの第２の業務処理部に含まれる業務処理クラスで、かつ前記第１の業務処理クラスを継承し、仮想関数化した業務処理実行手段を備えることを特徴とする請求項９記載の共有ライブラリ差分カストマイズ装置の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アプリケーションプログラムをカストマイズすることに関し、特に、アプリケーションプログラムをオブジェクト指向プログラム言語によって共有ライブラリ化し、カストマイズ対象のライブラリをアプリケーションを構成する共有ライブラリに追加することによってカストマイズされる共有ライブラリ差分カストマイズ装置及びその方法。
【背景技術】
【０００２】
既に動作実績もあり、ソフトウェアとして完成しているパッケージソフトをカストマイズするには、大きく分けて２つの方法がある。一つはパッケージソフトを修正して機能の追加や変更を実現する手法である。この手法を用いてカストマイズを行う場合、カストマイズ対象となるオブジェクトが他のオブジェクトに影響を及ぼすケースも多く、カストマイズ範囲の局所化が難しいという問題がある。また、このような場合には、稼動実績のあるパッケージソフトにバグが混入し品質が低下する可能性が懸念される。
【０００３】
もう一つの方法は、パッケージソフトは修正せずに機能の追加や変更を実現する手法である。この手法を用いてカストマイズするには、アプリケーションが必要とする適切な機能を決定するための制御プログラムの追加やシステム構成の変更等が必要であるという問題がある。このような制御プログラムにバグが混入していた場合には、アプリケーションの確実な起動を実現することができず、カストマイズの度にカストマイズライブラリの製造やテストだけではなく、制御プログラムも修正、テストを実施する必要がある。また、システム構成の変更にはシステム的なチェックに加え、他のアプリケーションに与える影響も大きく、パッケージソフト作成時とほぼ同等レベルのテストを余儀なくされる場合もある。
【０００４】
更に、上述の２つの方法には、制御プログラムやシステム変更等のカストマイズ個所以外における製造やテスト等の作業工程が必要となるため、管理工数が大幅に増加するという問題が存在する。
【０００５】
このパッケージソフトへのカストマイズに関し、様々な技術が提案されている。パッケージソフトそのものに対しカストマイズを行う手法（例えば、特許文献１）や、パッケージソフトにはカストマイズを行わず、制御ファイルの追加やシステム構成の変更による手法である（例えば特許文献２及び特許文献３）。
【０００６】
【特許文献１】特開平２００３−２６３３１９号公報（段落番号００４４乃至００４６）
【特許文献２】特開平４−２７６８２５号公報（段落番号０００６乃至０００８）
【特許文献３】特開平６−１０３０４１号公報（段落番号００１７乃至００２４）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来技術の問題を回避するため、オブジェクト指向プログラム言語によって、アプリケーションプログラムを共有ライブラリ化する。この共有ライブラリは、ライブラリ情報識別部、インスタンス制御部、業務処理部がＣ＋＋言語などで記述したファイルをコンパイルして、オブジェクトファイルを作成し、このオブジェクトファイルをリンカによってリンクされて、役割に応じてまとまった単位に構成する。
【０００８】
図８を参照すると、アプリケーションプログラム２の構成は、ロードモジュール３と、ロードモジュール３がロードされるとき、動的にリンクされる共有ライブラリ群４と、それの制御情報を登録する記憶装置３０と、を備える。
【０００９】
アプリケーションプログラム２は、業務処理を実行する手段を有する共有ライブラリ群４に対して、パッケージソフトの機能であるパッケージライブラリか、あるいはカストマイズした機能を有するカストマイズライブラリかを、基本ライブラリ識別情報及び制御情報に基づいて切り替え、実行する。
【００１０】
共有ライブラリ群４は、アプリケーションプログラムの標準的な機能で構成されるパッケージライブラリ群５と、パッケージライブラリ群５の内でシステム個別の機能追加や機能変更に対応するためにカストマイズされたライブラリでなるカストマイズライブラリ群６と、で構成する。
【００１１】
図７を参照すると、構成要素のライブラリであるパッケージライブラリ１０は、ライブラリ情報識別部１１、インスタンス制御部１２、業務処理部１３で構成する。また、カストマイズライブラリ２０は、ライブラリ情報識別部２１、インスタンス制御部２２、業務処理部２３で構成する。
【００１２】
更に、図７を参照すると、パッケージライブラリ１０のインスタンス制御部１２は、業務処理クラスに対応する制御クラス１２０を備え、制御クラス１２０が、インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段１２１と、インスタンス管理テーブルから業務処理インスタンスを生成するためのアドレスを入手するインスタンス取得手段１２２と、該アドレスによって、業務処理インスタンスを生成するインスタンス生成手段１２３と、を備える。
【００１３】
カストマイズライブラリ２０の構成は、パッケージライブラリ１０の構成に同じで、インスタンス制御部２２は、業務処理クラスに対応する制御クラス２２０を備え、制御クラス２２０が、インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段２２１と、インスタンス管理テーブルから業務処理インスタンスを生成するためのアドレスを入手するインスタンス取得手段２２２と、該アドレスによって、業務処理インスタンスを生成するインスタンス生成手段２２３と、を備える。
【００１４】
更に、図７を参照すると、制御クラス１２０と制御クラス２２０とは、先述のアドレスに制御クラス１２０を指定するか、あるいは制御クラス２２０を指定するか、をアドレスの登録あるいは上書き登録することによって可能にする。その結果、制御クラスの切り替えが可能になり、インスタンス生成手段１２３あるいはインスタンス生成手段２２３の実行によって、業務処理クラス１３０か、あるいは業務処理クラス２３０かを業務処理インスタンスに生成される。
【００１５】
この発明の目的は、上記の仕組みを実現することにあり、パッケージソフトのパッケージライブラリを一切修正することなく、パッケージライブラリの業務処理クラスに対応するカストマイズした業務処理クラスをアプリケーションプログラムを構成する共有ライブラリに追加という手法によって、アプリケーションプログラムのカストマイズを実現することにある。
【課題を解決するための手段】
【００１６】
そのため、この発明の、アプリケーションプログラムをオブジェクト指向プログラム言語で記述し、コンパイル及びリンクしてなる共有ライブラリが含むパッケージライブラリ群と、前記パッケージライブラリ群からライブラリにカストマイズを施してなるカストマイズライブラリ群と、前記パッケージライブラリ群及び前記カストマイズライブラリ群を構成する個々のパッケージライブラリ及び個々のカストマイズライブラリに対する制御情報を登録する記憶装置と、を有し、前記共有ライブラリにカストマイズしたライブラリを追加することによって前記共有ライブラリをカストマイズする装置にあって、前記パッケージライブラリ群を構成する個々のパッケージライブラリが、自身を識別するライブラリ識別情報を登録する第１のライブラリ識別情報クラスを有する第１のライブラリ識別情報部と、第１の業務処理クラスのインスタンスを生成する第１の制御クラスのアドレスを登録する手段を有する第１のインスタンス制御部と、前記第１の業務処理クラスを含む第１の業務処理部と、を有し、前記カストマイズライブラリ群を構成する個々のカストマイズライブラリが、自身を識別するライブラリ識別情報を登録する第２のライブラリ識別情報クラスを有する第２のライブラリ識別情報部と、第２の業務処理クラスのインスタンスを生成する第２の制御クラスのアドレスを登録する手段を持ち、かつ前記第１のインスタンス制御部を継承した第２のインスタンス制御部と、前記第２の業務処理クラスを含む第２の業務処理部と、を有し、前記記憶装置が、前記パッケージライブラリ及びカストマイズライブラリのいずれか一つを指定するライブラリ識別情報を記憶する基本ライブラリ識別情報と、前記パッケージライブラリ及びカストマイズライブラリの前記第１及び第２の制御クラスに対して、前記第１の制御クラスか、あるいは前記第２の制御クラスかを指すアドレスを登録するインスタンス管理テーブルと、を有し、てなることを特徴とする。
【００１７】
更に、前記基本ライブラリ識別情報は、前記パッケージライブラリ及び前記カストマイズライブラリがそれぞれ有するライブラリ識別情報が持つ版数指標である有効文字列を比較して、大きい有効文字列を有するライブラリ識別情報が登録されることを特徴とする。
【００１８】
更に、前記第１のライブラリ識別情報クラスは、自身が属するライブラリの識別情報を登録するライブラリ識別情報と、ライブラリ情報識別手段と、を有することを特徴とする。
【００１９】
更に、前記第１の制御クラスは、前記パッケージライブラリの第１の業務処理クラスに対応して設けられ、前記インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段と、前記インスタンス管理テーブルからアドレスを取得するインスタンス取得手段と、前記第１の業務処理クラスをインスタンス化するインスタンス生成手段と、を備えることを特徴とする。
【００２０】
更に、前記第１の業務処理クラスは、前記パッケージライブラリの第１の業務処理部に含まれる業務処理クラスで、それぞれが仮想関数化した業務処理実行手段を備えることを特徴とする。
【００２１】
更に、前記第２のライブラリ識別情報クラスは、前記パッケージライブラリの第１のライブラリ識別情報クラスに対応して設けられ、前記第１のライブラリ識別情報クラスを継承し、かつ自身が属するライブラリの識別情報を登録するライブラリ識別情報と、ライブラリ情報識別手段と、を有することを特徴とする。
【００２２】
更に、前記第２の制御クラスは、前記カストマイズライブラリの第２の業務処理クラスに対応して設けられ、かつ前記第１の制御クラスを継承し、前記インスタンス管理テーブルに自身のアドレスを登録するインスタンス登録手段と、前記インスタンス管理テーブルからアドレスを取得するインスタンス取得手段と、前記第２の業務処理クラスをインスタンス化するインスタンス生成手段と、を備えることを特徴とする。
【００２３】
更に、前記第２の業務処理クラスは、前記カストマイズライブラリの第２の業務処理部に含まれる業務処理クラスで、かつ第１の業務処理クラスを継承し、仮想関数化した業務処理実行手段を備えることを特徴とする。
〔作用〕
パッケージライブラリの第１の制御クラスのインスタンス生成手段及び第１の業務処理クラスの業務処理実行手段が仮想関数として実装され、かつカストマイズライブラリの第２の制御クラス及び第２の業務処理クラスが第１の制御クラス及び第１の業務処理クラスをそれぞれ継承し、第２の制御クラスのインスタンス生成手段及び第２の業務処理クラスの業務処理実行手段も仮想関数として実装されている場合、第１の制御クラスのインスタンス取得手段により取得された制御クラスのアドレスが第２の制御クラスのアドレスであるとき、そのアドレスを通じて実行されるインスタンス生成手段は、仮想関数機能により第２の制御クラスのインスタンス生成手段に切り替えられ、第２の制御クラスに対応する第２の業務処理クラスのインスタンスが生成される。更に、その生成された業務クラスのインスタンスを通じて業務処理実行手段が実行される。
【発明の効果】
【００２４】
この発明の効果は、アプリケーションプログラムのパッケージソフトに対するカストマイズ、つまり機能追加や機能変更が、パッケージソフトの修正、制御プログラムの追加、システム構成の変更を一切行うことなく、カストマイズに対応したライブラリを共有ライブラリ群に追加するだけで、パッケージソフトのカストマイズが可能になる点である。その理由は、アプリケーションプログラムを構成する共有ライブラリをロードされるとき、業務処理実行の基本とする制御情報に、カストマイズ対象の業務処理クラスを有するカストマイズライブラリが持つ制御情報を自動的に登録、有効にすることができる構成及びオブジェクト指向の継承機能及び仮想関数機能により、業務処理実行で呼び出す関数をパッケージライブラリの関数からカストマイズライブラリの関数に自動的に切り替えることが出来る構成を有するからである。
【発明を実施するための最良の形態】
【００２５】
この発明を実施するための最良の形態について図面を参照して説明する。図１を参照すると、アプリケーションプログラムをオブジェクト指向プログラム言語によって記述して、コンパイル及びリンクしてなる共有ライブラリ群に対して、この共有ライブラリをカストマイズする共有ライブラリ差分カストマイズ装置１は、アプリケーションプログラムの標準的な機能で構成されるパッケージライブラリ群の内の一つを示すパッケージライブラリ１０と、システムの個別の機能追加や機能変更に対応するためにカストマイズされたカストマイズライブラリ群の内の一つを示すカストマイズライブラリ２０と、前記パッケージライブラリ１０及びカストマイズライブラリ２０に対する制御情報を基本ライブラリ識別情報及びインスタンス管理テーブルに登録する記憶装置３０と、を有する。
【００２６】
パッケージライブラリ１０は、自身を識別するライブラリ識別情報を登録するライブラリ情報識別手段を有するライブラリ識別情報部１１と、制御クラスのアドレスをインスタンス管理テーブルに登録するインスタンス登録手段及び該アドレスをインスタンス管理テーブルから取得するインスタンス取得手段並びに業務処理クラスのインスタンスを生成するインスタンス生成手段を有するインスタンス制御部１２と、業務処理実行手段を有する業務処理クラスを含む業務処理部１３と、を有する。
【００２７】
カストマイズライブラリ２０は、自身を識別するライブラリ識別情報を登録するライブラリ情報識別手段を有するライブラリ識別情報部２１と、制御クラスのアドレスをインスタンス管理テーブルに登録するインスタンス登録手段及び該アドレスをインスタンス管理テーブルから取得するインスタンス取得手段並びに業務処理クラスのインスタンスを生成するインスタンス生成手段を有するインスタンス制御部２２と、業務処理実行手段を有する業務処理クラスを含む業務処理部２３と、を有する。
【００２８】
記憶装置３０は、パッケージライブラリ１０及びカストマイズライブラリ２０のいずれか一つを指定する基本ライブラリ識別情報３１と、インスタンス制御部１２の制御クラスのアドレス及びインスタンス制御部２２の制御クラスのアドレスを登録するインスタンス管理テーブル３２と、を有する。
【００２９】
更に、パッケージライブラリ１０及びカストマイズライブラリ２０の構成を示す図２を参照すると、パッケージライブラリ群の内の一つであるパッケージライブラリ１０は、ライブラリ識別情報部１２と、インスタンス制御部１２と、業務処理部１３と、を有し、パッケージライブラリ２０は、ライブラリ識別情報部２１と、インスタンス制御部１２と、業務処理部１３と、を有してなる。
【００３０】
パッケージライブラリ群の内の一つであるパッケージライブラリ１０のライブラリ識別情報部１１は、ライブラリ識別情報クラス１１０を含み、ライブラリ識別情報クラスは、ライブラリを識別するライブラリ識別情報１１１と、ライブラリ識別情報手段１１２と、を備える。
【００３１】
パッケージライブラリ群の内の一つであるパッケージライブラリ１０のインスタンス制御部１２は、業務処理クラスに対応する制御クラス１２１と、制御クラス１２２と、がある。制御クラス１２１はカストマイズされていない業務処理クラス１３１に対応し、制御クラス１２２はカストマイズされている業務処理クラス１３２に対応し、制御クラス１２１及び制御クラス１２２は、それぞれ複数個の内の一つを示す。制御クラス１２１及び制御クラス１２２は、インスタンス生成手段とインスタンス登録手段とインスタンス取得手段とをメソッド１２１１及びメソッド１２２１として備える。
【００３２】
パッケージライブラリ群の内の一つであるパッケージライブラリ１０の業務処理部１３は、カストマイズされていない業務処理クラス１３１と、カストマイズされている業務処理クラス１３２と、があり、それぞれは対応する制御クラスを有する。業務処理クラス１３１及び業務処理クラス１３２は、それぞれ仮想化された業務処理実行手段１３１１及び業務処理実行手段１３２１を有する。
【００３３】
カストマイズライブラリ２０は、パッケージライブラリ１０のカストマイズ対象のライブラリ識別情報クラス１１０、業務処理クラス１３２及び制御クラス１２２に対して、それぞれを継承するライブラリ識別情報部２１のライブラリ識別情報クラス２１０と、業務処理部２３の業務処理クラス２３１と、インスタンス制御部２２の制御クラス２２１と、を有する。
【００３４】
制御クラス２２１及び業務処理クラス２３１は、複数個の内の一つを示している。制御クラス２２１はインスタンス生成手段とインスタンス登録手段とインスタンス取得手段とをメソッド２２１１として備え、業務処理クラス２３１は業務処理実行手段をメソッド２３１１として備える。
【００３５】
次に、この実施の形態における、共有ライブラリをロードするとき、制御情報を記憶部３０に登録する動作を、パッケージライブラリ１０及びカストマイズライブラリ２０について説明する。
【００３６】
パッケージライブラリ１０が有するインスタンス制御部１２の制御クラスは、パッケージライブラリがロードされるとき、共有ライブラリの初期化機能によって、制御クラス自身が有するインスタンス登録手段によって、自身のアドレスをインスタンス制御テーブル３２に登録する。この登録動作をインスタンス制御部１２の全ての制御クラスに対して実施する（図１のステップ４１）。
【００３７】
パッケージライブラリ１０がロードされるとき、ライブラリ識別情報クラスは、共有ライブラリの初期化機能によりインスタンス化され、ライブラリ識別情報クラス自身が有するライブラリ情報識別手段によって、ライブラリ識別情報部１１のライブラリ識別情報の有効文字列と、基本ライブラリ識別情報３１に登録されているライブラリ識別情報の版数指標である有効文字列と、を比較し、有効文字列の大きい方のライブラリ識別情報を基本ライブラリ識別情報３１に上書き登録する（ステップ４２）。
【００３８】
カストマイズライブラリ２０が有するインスタンス制御部２２の制御クラスは、カストマイズライブラリがロードされるとき、共有ライブラリの初期化機能によりインスタンス化され、制御クラス自身が有するインスタンス登録手段によって、自身が属するカストマイズライブラリ２０のインスタンス制御部２２の制御クラスのアドレスをインスタンス管理テーブル３２に登録する（ステップ４３２）。また、インスタンス制御部１２の制御クラスを継承しているインスタンス制御部２２の制御クラスは、親クラスである制御クラスの既登録アドレスに自身のアドレスを上書き登録する（４３１）。
【００３９】
次に、この実施の形態における業務処理を実行する動作を説明する。記憶装置３０の基本ライブラリ識別情報３１には業務処理実行の基本となるライブラリのライブラリ識別情報が登録され、インスタンス管理テーブル３２には制御クラスのアドレスが登録されて、パッケージライブラリ１０及びカストマイズライブラリ２０のロードが終了している状態にあるとする。
【００４０】
パッケージライブラリ１０内の業務処理部１３の業務処理クラスの業務処理実行手段の動作を示す図３を参照すると、業務処理部１３の業務処理クラスの業務処理実行手段が実行中に、別のパッケージライブラリの業務処理クラスを呼び出すとき、呼び出し先の業務処理クラスに対応する制御クラスを呼び出す（図３のステップ５１１）。インスタンス制御部１２の呼び出された制御クラスのインスタンス取得手段により、インスタンス管理テーブル３２から登録されているアドレスを取得する（ステップ５１２）。取得したアドレスが指すパッケージライブラリの制御クラスのインスタンス生成手段が実行され、対応する業務処理クラスのインスタンスを生成する（５１３）。生成された業務処理クラスのインスタンスの業務処理実行手段が実行される。
【００４１】
次に、パッケージライブラリ１０の業務処理クラスからカストマイズライブラリ２０の業務処理クラスに切り替わる動作を説明する図４を参照すると、業務処理部１３の業務処理クラスの業務処理実行手段が実行中に、別のパッケージライブラリの業務処理クラスを呼び出すとき、呼び出し先の業務処理クラスに対応する制御クラスを呼び出す（図４のステップ５２１）。インスタンス制御部１２の呼び出された制御クラスは、インスタンス取得手段によって、インスタンス管理テーブル３２から登録されているアドレスを取得し（ステップ５２２）、そのアドレスが呼び出し先の業務処理クラスに対応する制御クラスを継承したカストマイズライブラリのインスタンス制御部２２の制御クラスのアドレスである場合、そのアドレスを通して、インスタンス制御部２２の制御クラスのインスタンス生成手段を実行し（ステップ５２３）、対応する業務処理部２３の業務処理クラスをインスタンス化して業務処理実行手段が実行される（ステップ５２４）。
【００４２】
次に、カストマイズライブラリ２０内の業務処理部２３の業務処理クラスが呼び出されて実行する動作を示す図５を参照すると、業務処理部２３の業務処理クラスの業務処理実行手段が実行中に、別のカストマイズライブラリの業務処理クラスを呼び出すとき、呼び出し先の業務処理クラスに対応する制御クラスを呼び出す（図５のステップ５３１）。インスタンス制御部２２の呼び出された制御クラスのインスタンス取得手段により、インスタンス管理テーブル３２からアドレスを取得する（ステップ５３２）。取得したアドレスが指すカストマイズライブラリの制御クラスのインスタンス生成手段が実行されて、業務処理クラスのインスタンスを生成する（５３３）。生成された業務処理クラスのインスタンスの業務処理実行手段が実行される。
【００４３】
次に、カストマイズライブラリ２０の業務処理クラスからパッケージライブラリ１０の業務処理クラスを呼び出す動作を説明する図６を参照すると、業務処理部２３の業務処理クラスの業務処理実行手段が実行中に、別のパッケージライブラリの業務処理クラスを呼び出すとき、呼び出し先の業務処理クラスに対応する制御クラスを呼び出す（図５のステップ５４１）。インスタンス制御部２２はインスタンス制御部１２を継承しているため、呼び出し先の業務処理クラスに対応するインスタンス制御部１２の制御クラスを呼び出し、インスタンス取得手段によって、インスタンス管理テーブル３２からアドレスを取得し（ステップ５４２）、取得したアドレスがパッケージライブラリ１０のインスタンス制御部１２制御クラスのアドレスを指定しているとき、そのアドレスが指すインスタンス制御部１２の制御クラスのインスタンス生成手段を実行し（ステップ５４３）、対応する業務処理クラスをインスタンス化して、それの業務処理実行手段が実行される（ステップ５４４）。
【００４４】
以上の説明から、共有ライブラリをロードするとき、記憶装置３０のインスタンス管理テーブル３２にアプリケーションプログラムを構成する制御クラスのアドレスが登録されることで、業務処理クラスのインスタンスを生成するとき、インスタンス管理テーブルに登録されているアドレスを取得し、そのアドレスがパッケージライブラリの制御クラスのアドレスか、もしくはカストマイズライブラリの制御クラスかによって、生成する業務処理クラスのインスタンスを切り替えることができ、そして、その生成されたインスタンスを通して実行すべき業務処理実行手段を切り替えることができる。
【００４５】
更に、カストマイズライブラリ２０の業務処理部２３の業務処理クラスは、対応するパッケージライブラリ１０の業務処理部１３の業務処理クラスをカストマイズして得られる、あるいは新たに追加して得られる業務処理クラスを業務処理部２３に追加することによって、達成できることは明らかである。
【産業上の利用可能性】
【００４６】
パッケージ化したアプリケーションプログラムを簡易にカストマイズでき、かつアプリケーションプログラムの品質の低下を防ぐことができるので、ユーザ要求に応じて標準アプリケーションプログラムにカストマイズを施すことが必要な分野に適用できる。
【図面の簡単な説明】
【００４７】
【図１】この発明の共有ライブラリ差分カストマイズ装置の構成及びロード方法を示す図である。
【図２】図１のパッケージライブラリ及びカストマイズライブラリの構成を示す図である。
【図３】パッケージライブラリ内での業務処理方法を示す図である。
【図４】パッケージライブラリの業務処理からカストマイズライブラリの業務処理に切り替える方法を示す図である。
【図５】カストマイズライブラリ内での業務処理方法を示す図である。
【図６】カストマイズライブラリの業務処理からパッケージライブラリの業務処理に切り替える方法を示す図である。
【図７】パッケージライブラリ及びカストマイズライブラリの構成を示す図である。
【図８】アプリケーションプログラムを共有ライブラリ化した図である。
【符号の説明】
【００４８】
１    共有ライブラリ差分カストマイズ装置
１０    パッケージライブラリ
１１    ライブラリ識別情報部
１２    インスタンス制御部
１３    業務処理部
２０    カストマイズライブラリ
２１    ライブラリ識別情報部
２２    インスタンス制御部
２３    業務処理部
３０    記憶装置
３１    基本ライブラリ識別情報
３２    インスタンス制御テーブル
【図１】
2006099297.tif 000003
【図２】
2006099297.tif 000004
【図３】
2006099297.tif 000005
【図４】
2006099297.tif 000006
【図５】
2006099297.tif 000007
【図６】
2006099297.tif 000008
【図７】
2006099297.tif 000009
【図８】
2006099297.tif 000010