(57)【特許請求の範囲】
【請求項１】
それぞれ特定の機能を提供するプログラムの集合からなるソフトウェアシステムの稼働中プログラム置換装置であって、
少なくとも、置換プログラムのプログラム識別名と、被置換プログラムのプログラム識別名と、プログラム置換時の条件とを、置換制御情報として記憶する置換制御情報記憶手段と、
前記置換制御情報を参照しながら被置換プログラムを置換プログラムに置換する置換制御手段とを備え、
前記置換制御情報記憶手段は、前記プログラム置換時の条件として、被置換プログラムの処理を即時に終了するか現在実行中の処理の終了を待って終了するかを指示する被置換プログラム処理終了条件と、被置換プログラムの処理の終了後に置換プログラムの処理を自動的に開始するかシステム保守者からの開始指示の入力を待って開始するかを指示する置換プログラム処理開始条件と、被置換プログラムから置換プログラムへ処理情報を引き継がせるか否かを指示する引き継ぎ制御情報とを記憶し、
前記置換制御手段は、
前記被置換プログラム処理終了条件に従い、被置換プログラムの処理を即時に又は現在実行中の処理の終了を待って終了させると共に、前記引き継ぎ制御情報を参照して、置換プログラムに引き継がせる処理情報があればそれを所定の記憶場所に格納する被置換プログラム終了手段と、
前記置換プログラム処理開始条件に従い、置換プログラムの処理を自動的に又はシステム保守者からの開始指示の入力を待って開始させると共に、前記引き継ぎ制御情報を参照して、被置換プログラムから引き継ぐ処理情報があればそれを所定の記憶場所から取り出す置換プログラム開始手段と、
を含んで構成されることを特徴とするソフトウェアシステムの稼働中プログラム置換装置。
【請求項２】
前記置換制御手段は、置換プログラムが起動される際に、該置換プログラムに関する置換制御情報を前記置換制御情報記憶手段に記憶させる置換制御情報登録手段を更に含んで構成される請求項１に記載のソフトウェアシステムの稼働中プログラム置換装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、ソフトウェアシステムを稼働状態にしたままで実行中のプログラムを他のプログラムに置換する方法および装置に関する。
【０００２】
例えばソフトウェアシステムの改版作業を行う際、そのソフトウェアシステムを構成するアプリケーションプログラムを旧版から新版に置換するが、それに伴って生じるプログラム処理中断時間をできるだけ短縮する必要があり、また、そのアプリケーションプログラムの処理の連続性を置換の前後で可能なかぎり維持する必要がある。
【０００３】
【従来の技術】
ソフトウェアシステムの改版作業を行う場合、一つの方法として、ソフトウェアシステムを停止して非稼働状態にし、ディスク上の各アプリケーションプログラムのファイルを旧版から新版に入れ替え、システム動作環境（システム立上げ時に起動するファイルの名前など）を書き換えた後、システムを再度立ち上げるというやり方がある。
【０００４】
しかし、この方法ではソフトウェアシステム全体の稼働を長時間中断しなければならず、ソフトウェアシステムが提供しているすべての処理をいったん中止しなければならないため問題がある。そこで、従来は、ソフトウェアシステムが稼働中に新版アプリケーションプログラムのファイルを起動し、システム動作環境に設定されている旧版のファイル名を新版のファイル名に書き換える方法などをとって処理中断時間の短縮を図っていた。
【発明が解決しようとする課題】
しかし上記の方法では、旧版アプリケーションプログラムが行っていた処理を新版アプリケーションプログラムが引き継ぐことができないので、常時メッセージを受信するようなソフトウェアシステムにとっては、システムの稼働を停止して改版作業を行う場合と比べて実際上の利点はなかった。
【０００５】
本発明はかかる問題点に鑑みてなされたものであり、ソフトウェアシステムの改版作業に伴って生じるシステム処理中断時間を短縮し、アプリケーションプログラムが置換前に行っていた処理を置換後も継続することが可能なソフトウェアシステムにおける稼働中プログラムの置換方法および装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
図１は本発明に係る原理説明図である。
上述の課題を解決するために、本発明においては、図１に示されるように、それぞれ特定の機能を提供するプログラムの集合からなるソフトウェアシステム６０の中に、稼働中プログラムを置換する際の置換制御情報を記憶する置換制御情報記憶手段６４と、置換制御情報を参照しながら被置換プログラム６１を置換プログラム６０に置換する置換制御手段６３とを備えた稼働中プログラム置換装置を組み込んでいる。そして、置換制御情報記憶手段６４は、少なくとも、置換プログラムのプログラム識別名６４１と、被置換プログラムのプログラム識別名６４２と、プログラム置換時の条件６４３とを記憶する。
【０００７】
また、本発明の稼働中プログラム置換装置において、置換制御情報記憶手段６４は、上記プログラム置換時の条件６４３として被置換プログラム処理終了条件６４４と置換プログラム処理開始条件６４５とを記憶し、また更に、被置換プログラム６１から置換プログラム６２へ処理情報を引き継がせるか否かを指示する引き継ぎ制御情報６４６を記憶する。また、置換制御手段６３は、被置換プログラム処理終了条件６４４と引き継ぎ制御情報６４６を参照することにより、被置換プログラム６１の処理を終了させると共に、置換プログラム６２に引き継がせる処理情報があればそれを所定の記憶場所に格納する被置換プログラム終了手段６３１と、置換プログラム処理開始条件６４５と引き継ぎ制御情報６４６を参照することにより、置換プログラム６２の処理を開始させると共に、被置換プログラム６１から引き継ぐ処理情報があればそれを所定の記憶から取り出す置換プログラム開始手段６３２とを含んで構成される。
【０００８】
また、本発明の稼働中プログラム置換装置において、置換制御手段６３は、置換プログラムが起動される際に、置換プログラムに関する置換制御情報を置換制御情報記憶手段６４に記憶させる置換制御情報登録手段６３４を含んで構成される。
【０００９】
【作用】
本発明においては、稼働中の被置換プログラム６１を置換プログラム６２に置換する際に、置換制御情報記憶手段６４が、少なくとも、置換プログラムのプログラム識別名６４１と、被置換プログラムのプログラム識別名６４２と、プログラム置換時の条件６４３とを記憶し、そして置換制御手段６３が、上記の置換制御情報を参照しながら被置換プログラム６１を置換プログラム６２に置換する。
【００１０】
また、本発明においては、置換制御情報記憶手段６４が、被置換プログラム６１から置換プログラム６２へ処理情報を引き継がせるか否かを指示する引き継ぎ制御情報６４６を更に記憶し、そして置換制御手段６３が、プログラム置換時に、引き継ぎ制御情報６４６を参照することにより被置換プログラム６１から置換プログラム６２への処理情報の引き継ぎを行うか否かを判断する。
【００１１】
また、本発明においては、置換制御情報記憶手段６４が、プログラム置換時の条件６４３として被置換プログラム処理終了条件６４４を記憶し、そして置換制御手段６３が、プログラム置換時に、被置換プログラム処理終了条件６４４を参照することにより、被置換プログラム６１の処理を即時に終了させるか、あるいは、実行中の処理があればその処理が終了するのを待つか、を判断する。
【００１２】
また、本発明においては、置換制御情報記憶手段６４が、プログラム置換時の条件６４３として置換プログラム処理開始条件６４５を記憶し、そして置換制御手段６３が、プログラム置換時に、置換プログラム処理開始条件６４５を参照することにより、被置換プログラム６１の処理終了時に自動的に置換プログラム６２の処理を開始させるか、あるいは、手動的な指示に従って置換プログラム６２の処理を開始させるかを判断する。
【実施例】
以下、図面を参照して本発明の実施例を説明する。
本実施例ではＵＮＩＸオペレーティングシステム上にアプリケーションシステムが構築されたソフトウェアシステムの改版を例にとって説明する。
【００１３】
図２は本発明が適用されるソフトウェアシステム１の構成を示している。ソフトウェアシステム１では、ＵＮＩＸオペレーティングシステム２の上にｎ個のアプリケーションプログラムからなるアプリケーションシステム３が構築されている。ディスク４には、実行形式のアプリケーションプログラムのファイルが格納されている。アプリケーションシステム３が立ち上がる時に、それらのファイルから各アプリケーションプログラムが起動される。
【００１４】
上記のアプリケーションプログラムはそれぞれ特定の機能を有し、ユーザの要求に応じてその機能を実行する。ここで、ユーザとは、図中に示すように、ソフトウェアシステム１に直接接続される端末５、ネットワークを経由してソフトウェアシステム１に接続される遠隔の端末６、ネットワークを経由してソフトウェアシステム１に接続される他システム７で稼働するプログラムなどである。また、アプリケーションシステム３の内部でも、あるアプリケーションプログラムが他のアプリケーションプログラムのユーザとなりうる。以下、アプリケーションプログラムがユーザのためにその機能を実行することを「ユーザにサービスを提供する」と称する。
【００１５】
ＵＮＩＸはマルチタスク、マルチユーザの機能を備えたオペレーティングシステムなので、アプリケーションシステム３の１つのアプリケーションプログラムが複数のユーザに対して同時に同じサービスを提供することができる。図３を参照してその仕組みについて簡単に説明する。ＵＮＩＸではタスクはプロセスと呼ばれる。実行形式のアプリケーションプログラムのファイル８を起動すると、そのアプリケーションプログラムのプロセス９が生成される。そしてユーザ１１がこのプロセス９に対してサービスを要求すると、それに対してプロセス９は自分の分身である子プロセス１０を生成する。以下、実行形式のアプリケーションプログラムのファイル８をアプリケーションファイル、アプリケーションファイルから生成されるプロセス９をアプリケーションプロセス、アプリケーションプロセスが生成する子プロセス１０をアプリケーションインスタンスと称する。本実施例で、アプリケーションプログラムとは、アプリケーションプロセスおよびそれが生成したアプリケーションインスタンスとを総称したものである。
【００１６】
アプリケーションプロセス９はユーザ１１からのサービス要求に応じてユーザ対応にアプリケーションインスタンス１０を生成する。各アプリケーションインスタンス１０は、対応するユーザ１１と情報の交換等を行いながら所定の処理を行い、処理終了後に消滅する。すなわち、アプリケーションプロセス９がユーザ１１からのサービス要求を受け付け、アプリケーションインスタンス１０がユーザ１１に対してサービスを提供する。
【００１７】
上述のアプリケーションシステム３のアプリケーションプログラムを旧版から新版に置換しようとする場合、置換対象となるアプリケーションプログラムは次のいずれかの状態にある。
１．アプリケーションプロセスの下にアプリケーションインスタンスが生成されておらず、サービス処理は実行されていない。
２．アプリケーションプロセスの下に１つ以上のアプリケーションインスタンスが生成されており、サービス処理が実行されている。
【００１８】
上記１の場合にアプリケーションプログラムを置換するには、新版のアプリケーションファイルからアプリケーションプロセスを生成し、旧版のアプリケーションプロセスを消滅させるだけなので極めて簡単である。しかし、上記２の場合は次の問題があるので置換が複雑になる。
▲１▼  旧版のアプリケーションプロセスの下に現在何個のアプリケーションインスタンスが生成されていて、それぞれがどのユーザに対応しているかを把握した上で、新版のアプリケーションプロセスの下にも同数のアプリケーションを生成し、それぞれにユーザを適正に対応付ける必要がある。
▲２▼  それぞれのアプリケーションインスタンスが処理を実行中かどうか等の現在の状態を把握した上で、旧版のアプリケーションインスタンスの処理を新版のアプリケーションインスタンスに引き継がせる必要がある。
▲３▼  アプリケーションプログラムを旧版から新版へ置換している間、そのアプリケーションプログラムによるサービスについては、ユーザからのアクセスを受け付けないようにする必要がある。
【００１９】
本実施例のアプリケーションシステム３は、アプリケーションプログラムを旧版から新版へ置換できるように、サービス制御機能およびアプリケーションプログラム毎のサービス情報管理表を設け、サービスを一括管理できるようにしている。サービス制御機能は特許請求の範囲に規定した置換制御手段に対応し、サービス情報管理表は同じく置換制御情報記憶手段に対応する。上記の問題はサービス制御機能により以下のように解決される。
【００２０】
上記▲１▼の問題を解決するため、サービス制御機能は、ユーザからのサービス要求をアプリケーションプロセスに仲介し、アプリケーションインスタンスの生成と消滅の状況や、ユーザとアプリケーションインスタンスとの対応関係を把握する。
【００２１】
また、上記▲２▼の問題を解決するため、サービス制御機能は、生成されたアプリケーションインスタンス毎にサービス状態管理表を割り当てる。サービス状態管理表にはそれに対応するサービスの現在の状態を示す情報が格納され、サービス制御機能はサービス状態管理表を参照することによりそのサービスを実行しているアプリケーションインスタンスの状態を把握することができる。
【００２２】
また、上記▲３▼の問題を解決するために、ユーザとアプリケーションプロセスまたはアプリケーションインスタンスとの間のアクセスはすべてサービス制御機能を介して行われるようにし、アプリケーションプログラム置換中、サービス制御機能はそのアプリケーションプログラムについてのユーザからのアクセスを受け付けないようにする。
【００２３】
次に、サービス制御機能によるアプリケーションプログラムの置換の概要を図４〜図６を参照して説明する。置換手順は次の５つに大別できる。
▲１▼  新版アプリケーションプログラムの起動
▲２▼  サービスの閉塞
▲２▼′旧版アプリケーションプログラムから新版アプリケーションプログラムへの処理情報の引き継ぎ
▲３▼  サービスの閉塞解除
▲４▼  旧版アプリケーションプログラムの停止
【００２４】
以下、上記の各手順の概要を順に説明する。
▲１▼  新版アプリケーションプログラムの起動
置換前の状態では、図４（ａ）に示すように、旧版アプリケーションプログラム２２がユーザにサービスを提供し、旧版アプリケーションプロセス１２の下にいくつかのアプリケーションインスタンス１４が存在し、旧版アプリケーションプロセス１２にはサービス情報管理表１３が、各アプリケーションインスタンス１４にはサービス状態管理表１５がそれぞれ割り当てられている。そこで、ディスクに格納されている新版アプリケーションファイルから新版アプリケーションプログラム２３を起動することにより新版アプリケーションプロセス１６を生成し、それに対するサービス情報管理表１７をアプリケーションシステムに登録し、更に、旧版と同数のアプリケーションインスタンス１８を生成してそれらに対してサービス状態管理表１９を割り当てる。
【００２５】
▲２▼  サービスの閉塞
新版アプリケーションプログラム２３が起動された時点では、図４（ｂ）に示すように、旧版アプリケーションプログラム２２と新版アプリケーションプログラム２３が同時に存在している。ただし、旧版アプリケーションプログラム２２はサービス制御機能を介してユーザ２０との間で情報交換等のアクセスを行いながらサービスを提供する「活動状態」にあるのに対して、新版アプリケーションプログラム２３はサービスの提供を行っていない「非活動状態」にある。
【００２６】
旧版アプリケーションプログラム２２を新版アプリケーションプログラム２３に置換するには、旧版アプリケーションインスタンス１８が現在実行している処理を中断し、ユーザ２０から旧版アプリケーションプログラム２２へのアクセスを受け付けないようにする必要がある。これはユーザ２０の側から見れば、その時まで利用していたサービスが突然利用できなくなることを意味する。このようにユーザへのサービスの提供を中断することを、以後、「サービスを閉塞する」と称する。図５（ｃ）に示すように、サービスを閉塞することによりアプリケーションプログラムは旧版、新版とも「非活動状態」になる。
【００２７】
▲２▼′旧版アプリケーションプログラムから新版アプリケーションプログラムへの処理情報の引き継ぎ
次に、図５（ｄ）に示すように、旧版アプリケーションインスタンス１４がそれまで実行していた処理の情報２１を、それぞれに対応する新版アプリケーションインスタンス１８に引き継がせる。
【００２８】
▲３▼  サービスの閉塞解除
次に、このサービスを利用しているユーザ２０が新版アプリケーションプログラム２３との間でアクセスを行えるようにし、旧版アプリケーションインスタンス１４が中断した処理を新版アプリケーションインスタンス１８に再開させる。このようにユーザへのサービスの提供を再開することを、以後、「サービスを閉塞解除する」と称する。図６（ｅ）に示すように、サービスを閉塞解除することにより新版アプリケーションプログラム２３は「活動状態」になり、旧版アプリケーションプログラム２２は「非活動状態」になる。
【００２９】
▲４▼  旧版アプリケーションプログラムの停止
最後に、旧版アプリケーションインスタンス１４を消滅させ、旧版アプリケーションに対するサービス状態管理表１５の割当てを解除し、更に旧版アプリケーションプロセス１２を消滅させることにより旧版アプリケーションプログラム２２を停止する。
【００３０】
ところで、アプリケーションインスタンスの状態に着目すれば、上記の▲２▼〜▲３▼の過程で以下のことを配慮することが望まれる。
上記の「活動状態」のアプリケーションプログラムにおいて、サービスを実行しているアプリケーションインスタンスには図７に示す２つの状態がありうる。ここで、「処理実行状態」とはアプリケーションインスタンスが本来の処理を継続的に実行している状態を意味し、「アイドル状態」とはアプリケーションインスタンスが事象の発生や外部からの指示などを待っているか、あるいは何らかの理由で本来の処理を休止している状態を意味する。
【００３１】
サービスの閉塞を開始した時に旧版アプリケーションインスタンス１４が「処理実行状態」であり、かつその処理は時間的な中断が不可能もしくは困難な性質のものである場合、その処理を中断してすぐに置換を始めてしまうと置換の前後で処理の連続性が失われてしまうことがある。このような場合、旧版アプリケーションインスタンス１４の実行中の処理が終了するのを待ってから置換を開始するのが望ましい。この場合は、当然、新版アプリケーションインスタンス１８が旧版アプリケーションインスタンス１４の処理情報２１を引き継ぐ必要はない。一方、サービスの閉塞を開始した時に旧版アプリケーションインスタンス１４が「アイドル状態」である場合は、即時に旧版アプリケーションインスタンス１４の処理を中断して置換を開始しても問題はないが、新版アプリケーションインスタンス１８は中断した処理を再開するために、旧版アプリケーションインスタンス１４がそれまで使用していた処理情報２１を引き継ぐ必要がある。
【００３２】
図８は本実施例のサービス制御機能、サービス情報管理表、およびサービス状態管理表を一層具体的に示している。
サービス制御機能３０は、図８（ａ）の機能構成が示すように、サービス情報登録機能３１とサービス情報登録解除機能３２とサービス閉塞機能３３とサービス閉塞解除機能３４とサービス起動機能３５とサービス停止機能３６とサービス情報管理表４０とサービス状態管理表５０とで構成されている。
【００３３】
これらの機能は、システム保守者が対応するコマンドをコンソールから投入することによって起動される場合と、実行中のプログラムがその機能を呼び出すことにより起動される場合と、サービス制御機能３０が自らの判断で起動する場合とがある。
【００３４】
サービス情報登録機能３１は、アプリケーションシステムに新しいアプリケーションプログラムを追加する際にそれに対応するサービス情報管理表４０を登録したり、既存のアプリケーションプログラムに対するサービス情報管理表４０の内容を変更したりする機能である。サービス情報登録機能３１は請求項７で規定した置換制御情報登録手段に対応する。
【００３５】
サービス情報登録解除機能３２は、アプリケーションシステムから既存のアプリケーションプログラムを削除する際にそれに対応するサービス情報管理表４０の登録を解除する機能である。
【００３６】
サービス閉塞機能３３は、旧版アプリケーションプログラムから新版アプリケーションプログラムへの置換を行う際に、旧版アプリケーションインスタンスが現在実行している処理を中断し、ユーザから旧版アプリケーションインスタンスへのアクセスを受け付けないようにすることにより、ユーザへのサービスの提供を中断する機能である。サービス閉塞機能３３は請求項６で規定した被置換プログラム処理終了手段に対応する。
【００３７】
サービス閉塞解除機能３４は、サービス閉塞前に旧版アプリケーションプログラムによるサービスを利用していたユーザが新版アプリケーションインスタンスとの間でアクセスを行えるようにし、旧版アプリケーションインスタンスが中断した処理を新版アプリケーションインスタンスに再開させることにより、ユーザへのサービスの提供を再開する機能である。サービス閉塞機能３４は請求項６で規定した置換プログラム処理開始手段に対応する。
【００３８】
サービス起動機能３５は、ディスクに格納されているアプリケーションファイルを起動してアプリケーションプロセスを生成することにより、それに対応するサービスの提供を開始するために主にアプリケーションシステム立上げ時に使用する機能である。アプリケーションプログラムの置換時には、新版アプリケーションプログラムを起動するために使用できる。
【００３９】
サービス停止機能３６は、アプリケーションインスタンスとアプリケーションプロセスを消滅させることにより、それに対応するサービスの提供を停止するために主にアプリケーションシステム立下げ時に使用する機能である。アプリケーション置換時には、旧版アプリケーションプログラムを停止するために使用できる。
【００４０】
図８（ｂ）はサービス情報管理表４０の内容を示している。サービス情報管理表４０は特許請求の範囲で規定した置換制御情報記憶手段に対応する。サービス情報管理表４０には、アプリケーションファイル名４１、旧版アプリケーションファイル名４２、閉塞条件フラグ４３、および閉塞解除条件４４が格納される。これらの情報は特許請求の範囲で規定した置換制御情報と以下のように対応している。
アプリケーションファイル名４１  ─＞  置換プログラム識別名
旧版アプリケーションファイル名４２  ─＞  被置換プログラム識別名
閉塞条件フラグ４３  ─＞  被置換プログラム処理終了条件と引き継ぎ制御情報
閉塞解除条件フラグ４４  ─＞  置換プログラム処理開始条件
【００４１】
本実施例では、置換制御情報記憶手段の一実施形態として、サービス情報管理表をアプリケーションプログラムごとに登録し、それぞれのサービス情報管理表はそれに対応するアプリケーションプログラムに関する置換制御情報を保持する。これについて図９を参照して簡単に説明する。図９はアプリケーションプログラムＡをアプリケーションプログラムＢに置換し、その後、更にアプリケーションプログラムＢをアプリケーションプログラムＣに置換する場合の例を示している。
【００４２】
アプリケーションプログラムＡからＢへの置換では、アプリケーションプログラムＡに対するサービス情報管理表のアプリケーションファイル名、閉塞条件フラグと、アプリケーションプログラムＢに対するサービス情報管理表のアプリケーションファイル名、旧版アプリケーションファイル名、閉塞解除条件フラグが置換制御情報として参照される。そして、アプリケーションプログラムＢからＣへの置換では、アプリケーションプログラムＢに対するサービス情報管理表のアプリケーションファイル名、閉塞条件フラグと、アプリケーションプログラムＣに対するサービス情報管理表のアプリケーションファイル名、旧版アプリケーションファイル名、閉塞解除条件フラグが置換制御情報として参照される。
【００４３】
すなわち、各アプリケーションプログラムに対するサービス情報管理表には、そのアプリケーションプログラムが置換プログラムであるときの情報と被置換プログラムであるときの情報が格納されている。そして、アプリケーションプログラムの置換時に、置換プログラムと被置換プログラム双方のサービス情報管理表が置換制御情報記憶手段となり、その場合に応じて必要な置換制御情報だけがそれぞれのサービス情報管理表から読み出される。
【００４４】
次に、図８（ｂ）のサービス情報管理表４０の各情報について説明する。
アプリケーションファイル名４１は、サービス情報管理表４０が割り当てられているアプリケーションプログラムに対するアプリケーションファイル名である。
【００４５】
旧版アプリケーションファイル名４２は、サービス情報管理表４０が割り当てられているアプリケーションプログラムが置換プログラムである場合の被置換プログラム、すなわち旧版アプリケーションプログラムに対するアプリケーションファイル名である。サービス情報管理表４０が割り当てられているアプリケーションプログラムが被置換プログラムである場合はこの情報は参照されない。
【００４６】
閉塞条件フラグ４３は、アプリケーションプログラムを置換する際のサービス閉塞条件を「即時閉塞」または「待ち処理終了後閉塞」で指示するフラグである。サービス情報管理表４０が割り当てられているアプリケーションプログラムが被置換プログラム（すなわち旧版アプリケーションプログラム）である場合に閉塞条件フラグ４３が参照される。
【００４７】
閉塞条件フラグ４３が「即時閉塞」を指示する場合、サービス閉塞機能３３を起動すると即時にサービスが閉塞される。閉塞条件フラグ４３が「「待ち処理終了後閉塞」を指示する場合、サービス閉塞機能３３を起動すると、旧版アプリケーションインスタンスが「処理実行状態」と「アイドル状態」（図７を参照）のどちらであるかが検査され、「処理実行状態」であればその処理の終了後にサービスが閉塞され、「アイドル状態」であれば即時にサービスが閉塞される。
【００４８】
なお、閉塞条件フラグ４３は、特許請求の範囲で規定した引き継ぎ制御情報も兼ねている。これは、サービスを即時に閉塞するか、あるいは現在実行中の処理が終了してからサービスを閉塞するかの条件が、処理情報を旧版アプリケーションプログラムから新版アプリケーションプログラムに引き継ぐか否かの条件に対応しているためである。すなわち、旧版アプリケーションインスタンスが「アイドル状態」（図７を参照）であれば、サービスを即時に閉塞でき、それまでの処理情報の引き継ぎを行うが、旧版アプリケーションインスタンスが「処理実行状態」であれば、その処理が終了するのを待ってからサービスを閉塞し、処理は終了しているので処理情報の引き継ぎは行わない。したがって、閉塞条件フラグ４３が「即時閉塞」を指示する場合は処理情報の引き継ぎを行い、「待ち処理終了後閉塞」を指示する場合は処理情報の引き継ぎを行わない。
【００４９】
システム保守者は、サービスの特性を考慮して、次の基準で閉塞条件フラグ４３の指示を決定することができる。
▲１▼  開始してから短時間で処理を終えて終了するようなサービスは一般に「アイドル状態」の時間が短いので、このようなサービスに対しては「待ち処理終了後閉塞」を指示する。
▲２▼  開始してから長時間（例えば１年以上）かかるようなサービスは一般に「アイドル状態」の時間が長いので、このようなサービスに対しては「即時閉塞」を指示する。
【００５０】
閉塞解除条件フラグ４４は、アプリケーションプログラムを置換する際のサービス閉塞解除条件を「自動解除」と「手動解除」で指示するフラグである。サービス情報管理表４０が割り当てられているアプリケーションプログラムが置換プログラム（すなわち新版アプリケーションプログラム）である場合に閉塞解除条件フラグ４４が参照される。
【００５１】
閉塞解除条件フラグ４４が「自動解除」を指示する場合、サービス閉塞機能３３によりサービスが閉塞され、旧版アプリケーションプログラムの処理が終了した時点で、自動的にサービス閉塞解除機能３４が起動されてサービスが閉塞解除される。閉塞解除条件フラグ４４が「手動解除」を指示する場合、サービス閉塞機能３３によりサービスが閉塞された後、システム保守者等が手動で指示する（例えば、サービス閉塞解除のコマンドをキーボードから入力する）ことによってサービス閉塞解除機能３４が起動されてサービスが閉塞解除される。
【００５２】
図８（ｃ）はサービス状態管理表５０の内容を示している。サービス状態管理表５０は、各アプリケーションインスタンスが実行しているサービスの状態に関する情報を保持する管理表であり、生成されたアプリケーションインスタンスに対して割り当てられ、そのアプリケーションインスタンスが消滅すると割当てが解除される動的な情報である。サービス状態管理表５０の割当てと割当て解除はサービス制御機能３０により自動的に行われる。
【００５３】
サービス状態管理表５０には、アプリケーションファイル名５１、アプリケーションインスタンス識別子５２、サービス状態フラグ５３、アプリケーションインスタンス状態フラグ５４、引き継ぎ情報アドレス５５、および引き継ぎ情報語数５６が格納される。
【００５４】
次に、図８（ｃ）のサービス状態管理表５０の各情報について説明する。
アプリケーションファイル名５１は、そのサービスを実行するアプリケーションプログラムに対するアプリケーションファイル名である。
アプリケーションインスタンス識別子５２は、サービス状態管理表５０に対応するアプリケーションインスタンスに付与された識別子である。
【００５５】
サービス制御機能は、サービス情報管理表４０のアプリケーションファイル名４１、サービス状態管理表５０のアプリケーションファイル名５１、アプリケーションインスタンス識別子５２を参照することにより、アプリケーションプロセスとアプリケーションインスタンスとの対応関係を認識し、アプリケーションインスタンスを識別することができる。
【００５６】
サービス状態フラグ５３は、アプリケーションファイル名５１に対応するアプリケーションプログラムが実行するサービスの状態を「提供中」または「閉塞中」で指示するフラグである。「提供中」とはユーザに対してサービスを提供している状態であり、「閉塞中」とはサービス閉塞機能３３の実行によりサービスが閉塞されている状態である。
【００５７】
アプリケーションインスタンス状態フラグ５４は、サービス状態管理表５０が割り当てられたアプリケーションインスタンスの現在の状態が「処理実行状態」と「アイドル状態」（図７を参照）のどちらであるかを示すフラグである。
【００５８】
引き継ぎ情報アドレス５５と引き継ぎ情報語数５６は、旧版アプリケーションプログラムから新版アプリケーションプログラムへの処理情報の引き継ぎを行う際の作業用情報である。本実施例では、アプリケーションプログラムの置換時に、旧版アプリケーションプログラムがその処理情報をいったんディスク上の所定の記憶場所に保存し、新版アプリケーションプログラムがディスクに保存された処理情報を読み出すという形で処理情報の引き継ぎを行う。したがって、引き継ぎ情報アドレス５５は処理情報が保存されているディスク上の先頭アドレスであり、引き継ぎ情報語数５６はディスクに保存された処理情報の語数である。
【００５９】
次に、図４〜図６で概要を示したアプリケーションプログラムの置換手順を、図８で具体化したサービス制御機能、サービス情報管理表、サービス状態管理表の内容に即して詳細に説明する。
【００６０】
図１０は、アプリケーションプログラムの置換の過程における旧版アプリケーションプログラム２２と新版アプリケーションプログラム２３の稼働状態の例およびサービス情報管理表とサービス状態管理表の内容を示している。すなわち、旧版アプリケーションプロセス１２の下にｎ個の旧版アプリケーションインスタンス１４が生成され、一方、新版アプリケーションプロセス１６の下にｎ個の新版アプリケーションインスタンス１８が生成されている。また、旧版アプリケーションプログラム２２に対してサービス情報管理表１３が登録され、ｎ個の旧版アプリケーションインスタンス１４のそれぞれにサービス状態管理表１５が割り当てられ、一方、新版アプリケーションプログラム２３に対してサービス情報管理表１７が登録され、ｎ個の新版アプリケーションインスタンス１８のそれぞれにサービス状態管理表１９が割り当てられている。また、便宜上、旧版アプリケーションファイル名はＯＬＤ、旧版アプリケーションインスタンス識別子はＯ１、Ｏ２、・・・Ｏｎとし、新版アプリケーションファイル名はＮＥＷ、新版アプリケーションインスタンス識別子はＮ１、Ｎ２、・・・Ｎｎとする。以下の説明では図１０に示した符号を使用する。
【００６１】
以下、前述したアプリケーションプログラム置換手順▲１▼〜▲４▼の詳細を図１０〜図１４を参照して説明する。
【００６２】
▲１▼  新版アプリケーションプログラムの起動
システム保守者は、予め作成された新版アプリケーションファイルＮＥＷをディスクに格納しておき（ステップ１）、次に、新版アプリケーションファイルＮＥＷから新版アプリケーションプログラム２３を起動するためにサービス起動のコマンドをコンソールから投入する（ステップ２）。
【００６３】
サービス起動機能が起動されて新版アプリケーションプロセス１７が生成される（ステップ３）。この時、新版アプリケーションプログラム２３に対してサービス情報管理表が既に登録されているかどうかを確認するために現在登録されているサービス情報管理表が検索される（ステップ４）。もし新版アプリケーションプログラム２３に対するサービス情報管理表が未登録であれば、サービス情報登録機能が起動され、新版アプリケーションプログラム２３に対してサービス情報管理表１７が登録される（ステップ５）。ステップ４と５の処理を新版アプリケーションプログラム２３の中に作りこんでおけば、新版アプリケーションプログラム２３の起動時に自動的にそれに対するサービス情報管理表１７を登録することができる。このように新版アプリケーションプログラムが起動時に自らサービス情報登録機能を呼び出す方法は請求項７に対応する。
【００６４】
次に、新版アプリケーションプログラム２３に対するサービス情報管理表１７の旧版アプリケーションファイル名１７１が参照され、その結果、アプリケーションファイル名ＯＬＤに対応する旧版アプリケーションプログラム２２から、アプリケーションファイル名ＮＥＷに対応する新版アプリケーションプログラム２３への置換が行われることがサービス制御機能により認識される（ステップ６）。そして、旧版アプリケーションプログラム２２に対するサービス情報管理表１３に関連するサービス状態管理表１５が検索され、その結果、旧版アプリケーションプロセス１２の下にｎ個のアプリケーションインスタンスが存在することが確認される。サービス情報管理表１３とサービス状態管理表１５との関連はアプリケーションファイル名１３１とアプリケーションファイル名１５１との一致を調べることで確認できる（ステップ７）。
【００６５】
上記のステップ６と７の処理は、サービス制御機能が行っても、新版アプリケーションプロセス１６が自分で行ってもよい。ステップ７の処理の結果を受けて、新版アプリケーションプロセス１６の下にｎ個のアプリケーションインスタンスＮ１〜Ｎｎが生成される（ステップ８）。更に、生成された新版アプリケーションインスタンスＮ１〜Ｎｎのそれぞれに対してサービス状態管理表１９が割り当てられる（ステップ９）。
【００６６】
▲２▼  サービスの閉塞（旧版アプリケーションプログラムからの処理情報の引き継ぎを含む）
新版アプリケーションプログラム２３の起動が終了すると、次にサービス閉塞機能が起動される（ステップ１０）。サービス閉塞機能の起動は、新版アプリケーションプログラム２３の起動終了後にサービス制御機能が自動的に行う方法と、システム保守者がサービス閉塞のコマンドをコンソールから投入することによって行う方法とが可能である。
【００６７】
サービス閉塞機能が起動されると、旧版アプリケーションプログラム２２に対するサービス情報管理表１３の閉塞条件フラグ１３３が検査される（ステップ１１）。閉塞条件フラグ１３３が「待ち処理終了後閉塞」を指示していれば、待ち処理（ステップ１２）を開始する。閉塞条件フラグ１３３が「即時閉塞」を指示していれば、待ち処理は行われない。この場合の待ち処理とは、ｎ個の旧版アプリケーションインスタンス１４がすべて「アイドル状態」になるのを待つ処理のことである。サービス制御機能は旧版アプリケーションインスタンス１４に対するサービス状態管理表１５４のアプリケーションインスタンス状態フラグ１５４を監視し、ｎ個の旧版アプリケーションインスタンス１４がすべて「アイドル状態」になれば待ち処理を終了する。
【００６８】
各アプリケーションインスタンスは、自分の状態をサービス制御機能に通知するために、サービス状態管理表のアプリケーションインスタンス状態フラグをセットまたはリセットする。したがって、アプリケーションプログラムの中にアプリケーションインスタンス状態フラグを適宜にセット・リセットする処理を作りこんでおく必要がある。
【００６９】
待ち処理（ステップ１２）の終了後に、あるいは閉塞条件フラグ１３３が「即時閉塞」を指示している場合は即時に、サービス制御機能は、ｎ個の旧版アプリケーションインスタンスのサービス状態管理表１５のサービス状態フラグ１５３を「提供中」から「閉塞中」に変え（ステップ１３）、ｎ個の旧版アプリケーションインスタンス１４の実行中の処理を終了させ（ステップ１４）、旧版アプリケーションプログラム２２に対するユーザからのアクセスを禁止する（ステップ１５）。例えば、旧版アプリケーションプログラム２２に対してユーザからのアクセスがあってもそのユーザに拒否応答を返す。
【００７０】
サービスが閉塞されると、処理情報の引き継ぎを行うか否かを判断するために、旧版アプリケーションプログラム２２に対するサービス情報管理表１３の閉塞条件フラグ１３３が検査される（ステップ１６）。閉塞条件フラグ１３３が「待ち処理終了後閉塞」を指示している場合、前述したように処理情報の引き継ぎの必要はないので次のステップ１７と１８は省略される。一方、閉塞条件フラグ１３３が「即時閉塞」を指示している場合、旧版アプリケーションインスタンス１４から新版アプリケーションインスタンス１８に処理情報を引き継がせるために次のステップ１７と１８が実行される。
【００７１】
各旧版アプリケーションインスタンス１４がサービス閉塞直前まで実行していた処理の情報がディスクに保存される（ステップ１７）。そして、保存された処理情報のディスク上の格納アドレスと語数が、各旧版アプリケーションインスタンス１４に対応する新版アプリケーションインスタンス１８のサービス状態管理表１９の引き継ぎ情報アドレス１９５と引き継ぎ情報語数１９６に書き込まれる（ステップ１８）。ステップ１６〜１８の処理情報引き継ぎの処理は、サービス制御機能が行っても、各旧版アプリケーションインスタンス１４が自分で行ってもよい。
【００７２】
ステップ１８までの処理が終了した旧版アプリケーションインスタンス１４は、サービス閉塞のための処理が完了したことを示すために、各自のサービス状態管理表１５のサービス状態フラグ１５３の指示を「閉塞中」にする（ステップ１９）。
【００７３】
▲３▼  サービスの閉塞解除（新版アプリケーションプログラムへの処理情報の引き継ぎを含む）
サービス制御機能は、サービスの閉塞の完了を判断するために、旧版アプリケーションインスタンス１４のサービス状態管理表１５のサービス状態フラグ１５３を監視する（ステップ２０）。ｎ個の旧版アプリケーションインスタンス１４のサービス状態フラグ１５３がすべて「閉塞中」を指示すれば、サービスの閉塞が完了したと判断される。
【００７４】
サービス制御機能は、サービスの閉塞を自動解除するか、あるいは手動解除するかを判断するために、新版アプリケーションプログラム２３に対するサービス情報管理表１７の閉塞解除条件フラグ１７４を検査する（ステップ２１）。閉塞解除条件フラグ１７４が「手動解除」を指示していれば、サービス制御機能は待ち処理（ステップ２２）を行い、閉塞解除条件フラグ１７４が「自動解除」を指示していれば待ち処理を行わない。この場合、待ち処理とは、システム保守者がサービスの閉塞解除のコマンドを投入するのを待つことである。サービスの閉塞解除のコマンドが投入されれば以下のステップに進む。
【００７５】
旧版アプリケーションインスタンス１４の処理情報がディスクに保存されているか否かを判断するために、旧版アプリケーションプログラム２２に対するサービス情報管理表１３の閉塞条件フラグ１３３が検査される（ステップ２３）。閉塞条件フラグ１３３が「即時閉塞」を指示している場合、保存されている旧版アプリケーションインスタンス１４の処理情報を新版アプリケーションインスタンス１８が引き継ぐための処理（ステップ２４）が行われ、閉塞条件フラグ１３３が「待ち処理終了後閉塞」を指示している場合、前述したように処理情報は保存されていないので引き継ぎ処理は行われない。
【００７６】
新版アプリケーションインスタンス１８のサービス状態管理表１９の引き継ぎ情報アドレス１９５が示すディスク上のアドレスから、引き継ぎ情報語数１９６が示す語数の処理情報が読み出される（ステップ２４）。ステップ２３〜２４の処理は、サービス制御機能が行っても、各新版アプリケーションインスタンス１８が自分で行ってもよい。
【００７７】
ステップ２４までの処理が終了した新版アプリケーションインスタンス１８は、サービス閉塞解除の準備が完了したことを示すために、各自のサービス状態管理表１９のサービス状態フラグ１９３の指示を「提供中」にする（ステップ２５）。
【００７８】
サービス制御機能は、サービス閉塞解除の準備完了を判断するために、新版アプリケーションインスタンス１８のサービス状態管理表１９のサービス状態フラグ１９３を監視する（ステップ２６）。ｎ個の新版アプリケーションインスタンス１８のサービス状態フラグ１９３がすべて「提供中」を指示すれば、サービスの閉塞解除の準備が整ったと判断される。
【００７９】
そして、サービス制御機能は、新版アプリケーションプログラム２３に対するユーザからのアクセスを許可する（ステップ２７）。例えば、サービス閉塞前にそのサービスを利用していたユーザに対してサービス再開が通知され、それらのユーザは、サービス閉塞前にアクセスしていた旧版アプリケーションインスタンス１４に対応する新版アプリケーションインスタンス１８にアクセスできるようになる。以後、新版アプリケーションプログラム２３は通常の動作を開始し、ユザにサービスを提供する。
【００８０】
▲４▼  旧版アプリケーションプログラムの停止
システム保守者は、新版アプリケーションプログラム２３によるサービスが正常に再開したことを確認した後、サービス停止のコマンドを投入する（ステップ２８）。
サービス停止機能が起動されることにより、ｎ個の旧版アプリケーションインスタンス１４に対するサービス状態管理表１９の割当てがそれぞれ解除され、次いで旧版アプリケーションインスタンス１４がすべて消滅し、最後に旧版アプリケーションプロセス１２が消滅する（ステップ２９）。
【００８１】
更に、システム保守者がサービス情報登録解除のコマンドを投入する（ステップ３０）と、旧版アプリケーションプログラム２２に対するサービス情報管理表１３の登録が解除される（ステップ３１）。
以上で、旧版アプリケーションプログラム２２から新版アプリケーションプログラム２３への置換が完了する。
【００８２】
【発明の効果】
以上説明したように、本発明によれば、ソフトウェアシステムの改版時のアプリケーションプログラムの処理を一括管理することにより、稼働中のアプリケーションプログラムを旧版から新版へ効率的に置換し、それに伴って生じる処理中断時間を短縮することができる。
【００８３】
また、本発明によれば、置換前に旧版アプリケーションプログラムが行っていた処理の情報を置換後に新版アプケーションプログラムに引き継がせることで、置換のために旧版アプリケーションプログラムが中断した処理を新版アプリケーションプログラムに再開させることができる。
【００８４】
また、本発明によれば、置換するアプリケーションプログラムの処理の特性に応じてアプリケーションプログラム置換時の条件を指定できるので、置換の前後のアプリケーションプログラムの処理の連続性が高いレベルで保証される。
【００８５】
また、本発明によれば、新版アプリケーションプログラムをソフトウェアシステムにおいて起動する際にそれに対する置換制御情報が自動的に登録されるので、改版作業を省力化することができる。
【図面の簡単な説明】
【図１】本発明に係る原理説明図である。
【図２】実施例のソフトウェアシステムの構成を示す図である。
【図３】実施例のアプリケーションプログラムの稼働の概念図である。
【図４】実施例のアプリケーションプログラムの置換手順の概要を説明するための図である。
【図５】実施例のアプリケーションプログラムの置換手順の概要を説明するための図である。
【図６】実施例のアプリケーションプログラムの置換手順の概要を説明するための図である。
【図７】実施例のアプリケーションインスタンスの状態の遷移を説明するための図である。
【図８】実施例のサービス制御機能の構成を示す図である。
【図９】置換時のサービス情報管理表の参照情報を示す図である。
【図１０】置換時の旧版および新版アプリケーションプログラムの稼働状態の例を示す図である。
【図１１】実施例のアプリケーションプログラムの置換手順の詳細を説明するフローチャートである。
【図１２】実施例のアプリケーションプログラムの置換手順の詳細を説明するフローチャートである。
【図１３】実施例のアプリケーションプログラムの置換手順の詳細を説明するフローチャートである。
【図１４】実施例のアプリケーションプログラムの置換手順の詳細を説明するフローチャートである。
【符号の説明】
１  ソフトウェアシステム
２  ＵＮＩＸオペレーティングシステム
３  アプリケーションシステム
４  ディスク
５  ソフトウェアシステム１に直接接続される端末
６  ネットワーク経由でソフトウェアシステム１に接続される遠隔の端末
７  ネットワーク経由でソフトウェアシステム１に接続される他システム
８  アプリケーションファイル
９  アプリケーションプロセス
１０  アプリケーションインスタンス
１１、２０  ユーザ
１２  旧版アプリケーションプロセス
１３  旧版アプリケーションプログラムに対するサービス情報管理表
１４  旧版アプリケーションインスタンス
１５  旧版アプリケーションインスタンスに対するサービス状態管理表
１６  新版アプリケーションプロセス
１７  新版アプリケーションプログラムに対するサービス情報管理表
１８  新版アプリケーションインスタンス
１９  新版アプリケーションインスタンスに対するサービス状態管理表
２１  アプリケーションインスタンスの処理情報
２２  旧版アプリケーションプログラム
２４  新版アプリケーションプログラム
３０  サービス制御機能
３１  サービス情報登録機能
３２  サービス情報登録解除機能
３３  サービス閉塞機能
３４  サービス閉塞解除機能
３５  サービス起動機能
３６  サービス停止機能
４０、１３、１７  サービス情報管理表
４１、１３１、１７１  アプリケーションファイル名
４２、１７２  旧版アプリケーションファイル名
４３、１３３  閉塞条件フラグ
４４、１７４  閉塞解除条件フラグ
５０、１５、１９  サービス状態管理表
５１、１５１、１９１  アプリケーションファイル名
５２、１５２、１９２  アプリケーションインスタンス識別子
５３、１５３、１９３  サービス状態フラグ
５４、１５４、１９４  アプリケーションインスタンス状態フラグ
５５、１９５  引き継ぎ情報アドレス
５６、１９６  引き継ぎ情報語数
【図１】
0003739524.tif 000002
【図２】
0003739524.tif 000003
【図３】
0003739524.tif 000004
【図４】
0003739524.tif 000005
【図５】
0003739524.tif 000006
【図６】
0003739524.tif 000007
【図７】
0003739524.tif 000008
【図８】
0003739524.tif 000009
【図９】
0003739524.tif 000010
【図１０】
0003739524.tif 000011
【図１１】
0003739524.tif 000012
【図１２】
0003739524.tif 000013
【図１３】
0003739524.tif 000014
【図１４】
0003739524.tif 000015