(57)【特許請求の範囲】
【請求項１】
クライアントに対してライセンスを貸し出すライセンス運用サーバからリクエストを受信する受信手段と、
前記受信手段で前記リクエストを受信した場合、前記第１のバージョンのライセンスの有効期限を所定期間後に変更する変更手段と、
前記受信手段で前記リクエストを受信した場合、前記第２のバージョンのライセンスを発行する発行手段と、
前記第１のバージョンのライセンスおよび前記第２のバージョンのライセンスのそれぞれに関する情報を、前記ライセンス運用サーバと対応づけて管理するライセンス管理手段と、前記変更手段により有効期限を所定期間後に変更した前記第１のバージョンのライセンスと、前記発行手段により発行された前記第２のバージョンのライセンスとを、前記ライセンス運用サーバに送信する送信手段と、
を有することを特徴とするライセンス管理サーバ。
【請求項２】
前記リクエストは、
前記第１のバージョンのライセンスを前記第２のバージョンのライセンスに変更するためのリクエストであることを特徴とする請求項１に記載のライセンス管理サーバ。
【請求項３】
前記発行手段で発行される前記第２のバージョンのライセンスのシリアル番号は、前記第１のバージョンのライセンスのシリアル番号と同じであることを特徴とする請求項１または２に記載のライセンス管理サーバ。
【請求項４】
前記発行手段で発行される前記第２のバージョンのライセンスの有効期限は無期限であることを特徴とする請求項１乃至３のいずれか一項に記載のライセンス管理サーバ。
【請求項５】
クライアントに対してライセンスを貸し出すライセンス運用サーバと、前記ライセンス運用サーバに対してライセンスを発行するライセンス管理サーバと、を含むライセンス管理システムであって、
前記ライセンス運用サーバは、
前記クライアントで第１のバージョンのソフトウェアを実行する際に必要となる第１のバージョンのライセンスを保持する保存手段と、
前記クライアントからの要求に応じて、前記第１のバージョンのライセンスを前記クライアントに貸し出す利用管理手段と、
前記保存手段で保持している第１のバージョンのライセンスを、第２のバージョンに変更する変更指示を受け付ける受け付け手段と、
前記受け付け手段で前記変更指示を受け付けた場合、前記ライセンス管理サーバに対してリクエストを送信する送信手段と、
前記リクエストに応じて前記ライセンス管理サーバから送信されてきたライセンスを用いて、前記保存手段に保持されているライセンスを更新する更新手段と、
を有し、
前記ライセンス管理サーバは、
前記リクエストを受信する受信手段と、
前記受信手段で前記リクエストを受信した場合、前記第１のバージョンのライセンスの有効期限を所定期間後に変更する変更手段と、
前記受信手段で前記リクエストを受信した場合、前記第２のバージョンのライセンスを発行する発行手段と、
前記第１のバージョンのライセンスおよび前記第２のバージョンのライセンスのそれぞれに関する情報を、前記ライセンス運用サーバと対応づけて管理するライセンス管理手段と、
前記変更手段により有効期限を所定期間後に変更した前記第１のバージョンのライセンスと、前記発行手段により発行された前記第２のバージョンのライセンスとを、前記ライセンス運用サーバに送信する送信手段と、
を有する
ことを特徴とするライセンス管理システム。
【請求項６】
前記ライセンス運用サーバは、更に、
前記変更指示に伴って、返却すべきバージョンのライセンスがあるか判断する判断手段と、
前記判断手段で返却すべきと判断されたバージョンのライセンスの返却リクエストを送信する返却手段と、
を有し、
前記ライセンス管理サーバは、更に、
前記返却リクエストに基づいて、当該返却すべきと判断されたバージョンのライセンスを削除する削除手段を有する
ことを特徴とする請求項５に記載のライセンス管理システム。
【請求項７】
コンピュータを、請求項１乃至４のいずれか１項に記載のライセンス管理サーバとして機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ライセンス管理に関する。
【背景技術】
【０００２】
有償ソフトウェアを使用許諾する方法として、ノードロック方式とフローティング方式がある。ノードロック方式は、ユーザのコンピュータが、ライセンスサーバからライセンスを直接取得して該コンピュータとライセンスを紐づけることで、当該ライセンスを取得したコンピュータはそのソフトウェアを使用することができる。該コンピュータに紐づけられたライセンスは、該コンピュータ以外のコンピュータでは使用できないようにする。
【０００３】
一方、フローティング方式は、予め一定数のライセンスをプールしているライセンスサーバが、クライアントにライセンスを貸し出す方式である。フローティング方式で管理されるライセンス（フローティングライセンス）は、各クライアントで該当するソフトウェアの使用が終われば、ライセンスサーバに返却される。そのため、その後は他のクライアントが当該返却されたライセンスを借りることにより同じソフトウェアを別のクライアント上で使用することができる。なお、同時に複数のクライアントに対して貸し出し可能なライセンスの数は、ライセンスサーバにプールしているライセンスの数（一定数）で制約される。しかしながら、ソフトウェアを使用する際にのみライセンスを借りるので、複数のクライアントでソフトウェアを使用するタイミングが異なれば、当該ソフトウェアをプールしているライセンス数以上のクライアント上で利用することが可能となる。なお、フローティング方式のライセンスの管理を行うのは、ソフトウェアを購入した企業のシステム管理者等の一部の担当者であることが一般的である。
【０００４】
次に、ライセンスとソフトウェアのバージョンとの関係について説明する。特許文献１の図１０では、アプリＩＤと最新バージョン情報とを対応づけてライセンスサーバに登録しておき、ＰＣから起動要求を受けたときに、当該ＰＣのソフトウェアが古いバージョンである場合は、バージョンアップを案内することが記載されている。しかしながら、特許文献１ではバージョンアップを案内するだけであり、実際にソフトウェアをバージョンアップするかどうかは各クライアントＰＣのユーザの操作に委ねられることになる。さらに、特許文献１では、図７に示すように、ソフトウェアを同時起動可能なＰＣの台数はアプリＩＤに対応付けて管理されている。すなわち、特許文献１では、同じアプリＩＤのソフトウェアに関しては、異なるバージョンであっても共通のフローティングライセンスを利用するようにしている。すなわち、各クライアントＰＣのユーザがソフトウェアのバージョンアップを行わなくても旧バージョンのソフトウェアを利用することができてしまうため、ユーザによってはソフトウェアのアップグレード作業を行わない可能性がある。
【０００５】
一方、ソフトウェアを購入した企業のシステム管理者は、ソフトウェアの運用・保守の観点から、各クライアントで使用するソフトウェアのバージョンを１つのバージョンに統一したい。しかし、特許文献１の技術では、各クライアントＰＣのユーザがソフトウェアのアップグレード作業を行うか否かに依存してしまうため、各クライアントのソフトウェアを１つのバージョンに揃えることができない可能性がある。
【０００６】
そこで、ソフトウェアのバージョンに合わせて、ライセンスにもバージョンを導入することが考えられる。すなわち、ライセンスのバージョンとソフトウェアのバージョンが一致した場合のみ、ソフトウェアが起動できるようにすることが考えられる。そして、システム管理者がライセンスサーバで管理しているライセンスのバージョンをアップグレードすれば、各クライアントで起動可能なソフトウェアのバージョンを制限することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１５−０１４８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ライセンスのバージョンとソフトウェアのバージョンが一致した場合のみ起動できるようにし、システム管理者がライセンスサーバで管理しているライセンスをバージョンアップした場合、以下のような問題がある。すなわち、クライアントがソフトウェアをアップグレードする前に、システム管理者がライセンスサーバのライセンスをアップグレードすると、クライアントで古いバージョンのソフトウェアを起動中であったとしても、古いバージョンのソフトウェアに必要な古いバージョンのライセンスがライセンスサーバから消える為、当該起動中のソフトウェアが動作しなくなる。すなわち、ライセンスサーバで管理しているライセンスが新しいバージョンのライセンスに置換されてしまうと、古いバージョンのソフトウェアを利用中のクライアントにとっては不都合が生じる。
【０００９】
例えば、クライアントではバージョン２のソフトウェアを運用しており、ライセンスサーバではバージョン２のライセンスを保持している環境があるとする。ここで、システム管理者がライセンスサーバに存在するライセンスをバージョン２からバージョン３にアップグレードした場合、クライアントの起動に必要なバージョン２のライセンスがライセンスサーバから消える。そのため、クライアントではバージョン２のソフトウェアが起動しなくなる。すなわち、ライセンスサーバで管理しているライセンスが新しいバージョンのライセンスに置換されてしまうと、古いバージョンのソフトウェアを利用中のクライアントにとっては不都合が生じる。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明のライセンス管理サーバは、クライアントに対してライセンスを貸し出すライセンス運用サーバからリクエストを受信する受信手段と、前記受信手段で前記リクエストを受信した場合、前記第１のバージョンのライセンスの有効期限を所定期間後に変更する変更手段と、前記受信手段で前記リクエストを受信した場合、前記第２のバージョンのライセンスを発行する発行手段と、前記第１のバージョンのライセンスおよび前記第２のバージョンのライセンスのそれぞれに関する情報を、前記ライセンス運用サーバと対応づけて管理するライセンス管理手段と、前記変更手段により有効期限を所定期間後に変更した前記第１のバージョンのライセンスと、前記発行手段により発行された前記第２のバージョンのライセンスとを、前記ライセンス運用サーバに送信する送信手段と、を有することを特徴とする。
【発明の効果】
【００１１】
ユーザの利便性を損なうことなく、ソフトウェアをアップグレードするための猶予期間を設けることができる。また、猶予期間経過後は、フローティングライセンスで利用するソフトウェアのバージョンを１つに制限できるため、システム管理者はソフトウェアの運用・保守が容易となる。
【図面の簡単な説明】
【００１２】
【図１】システム構成例
【図２】各コンピュータのハードウェア構成例
【図３】各コンピュータのソフトウェア構成例
【図４】ライセンス運用ソフトウェアのＵＩ画面
【図５】ライセンス保存部３１３が保有するライセンステーブル
【図６】ライセンス管理部３２２が保有するライセンステーブル
【図７】実施例１の処理フロー図
【図８】実施例２の処理フロー図
【発明を実施するための形態】
【００１３】
（実施例１）
図１は、本発明の一実施形態におけるライセンス管理システムの構成を示す図である。本実施形態は、後述するクライアント１１０、ライセンス運用サーバ１２０、ライセンス管理サーバ１３０がネットワーク１００（例えばＬＡＮ）を介して通信可能なシステムである。なお、ネットワークは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に限るものではなく、その他のネットワークであっても構わない。
【００１４】
各クライアント１１０は、ライセンス運用サーバ１２０に対してライセンスを要求するコンピュータであり、ユーザによって操作が行われる。ライセンス運用サーバ１２０は、購入したフローティング方式のライセンスを管理するコンピュータであり、例えば該ソフトウェアを購入した企業内で運用されているローカルサーバである。ライセンス運用サーバ１２０は、ソフトウェアを購入した企業のシステム管理者により管理されるサーバである。クライアント１１０は、クライアント内にインストールされたソフトウェア３００を利用する際、ライセンス運用サーバ１２０にライセンスを要求し、ライセンス運用サーバ１２０からライセンスを借りることができた場合は、そのソフトウェア３００を使用可能状態にする。なお、ライセンスとは、ソフトウェア３００の利用する際に必要な情報（許諾情報）である。
【００１５】
ライセンス管理サーバ１３０は、ソフトウェアを購入した企業に対してライセンスを発行したり当該発行したライセンスを失効させたりするコンピュータであり、例えば、ソフトウェアを販売している販売会社やソフトウェアの開発会社により運用される。
【００１６】
図２は、各コンピュータ（クライアント１１０、ライセンス運用サーバ１２０、ライセンス管理サーバ１３０）のハードウェアの構成例を示す図である。
【００１７】
図２において、キーボードやポインティングデバイスなどのユーザ操作入力を受信する入力デバイス２０５が設けられている。さらに、ユーザに視覚的な出力情報フィードバックを与える表示部（ディスプレイ）２０２を備える。さらに、後述する各処理をコンピュータ（ＣＰＵ２０１）に実行させるための各種プログラムや実行情報を保管する記憶デバイスとして、ＲＡＭ２０３，ＲＯＭ２０４，ならびに、ＨＤＤ（ハードディスクドライブ）やＤＶＤ−ＲＯＭドライブ（ディスクドライブ）やリムーバブルメモリなどの外部記憶装置２０６が設けられる。Ｉ／Ｏ２０７は、外部機器との通信を行うためのインターフェースデバイスである。クライアント１１０とライセンス運用サーバ１２０とライセンス管理サーバ１３０は、インターフェースデバイスＩ／Ｏ２０７を介して互いに通信を行う。
【００１８】
なお、本実施例で説明される処理は、ＲＯＭ２０４、または外部記憶装置２０６に保存されたプログラム（クライアント用のプログラムや各サーバ用のプログラム）をＲＡＭ２０３にロードし、ＣＰＵ２０１で実行することによって実現される。
【００１９】
図３は、クライアント１１０、ライセンス運用サーバ１２０、ライセンス管理サーバ１３０で実行されるプログラム構成の一例を示す図である。
【００２０】
クライアント１１０は、ソフトウェア３００、ライセンス管理モジュール３０１、ライセンス保存部３０２を備える。ソフトウェア３００は、例えば、ワードプロセッサソフト、表計算ソフト、データベースソフト、画像編集ソフト、エディタソフト等の任意のソフトウェアであり、該クライアントがライセンスを取得している間のみ利用可能になるソフトウェアである。
【００２１】
クライアントのライセンス管理モジュール３０１は、クライアント１１０内でのライセンスに関する処理全般の機能を備える。ライセンス管理モジュール３０１は、ライセンス運用サーバ１２０に対してソフトウェア３００を利用する際に必要なライセンス情報（特定情報）を要求することにより、該ライセンス情報を取得するプログラムである。クライアント１１０のＣＰＵは、該ライセンス管理モジュールを実行することにより、ソフトウェア３００を利用する際のライセンス管理を行う利用管理手段として機能する。ライセンス管理モジュール３０１は、実行対象のソフトウェア３００からの依頼を受けて、ライセンス処理用のリクエストデータを作成し、該リクエストデータに対してライセンス取得に必要な情報を追加する。ライセンス取得に必要な情報は、例えば、ソフトウェア３００の識別情報、クライアント１１０の機器情報である。機器情報は、クライアントのコンピュータを一意に特定するための情報であり、例えば、ＭＡＣアドレスなどが該当する。これらの情報をライセンス取得用のリクエストデータに追加した後、該リクエストデータをライセンス運用サーバ１２０へ送信する。さらに、ライセンス管理モジュール３０１は、ライセンス運用サーバ１２０から貸し出されたライセンスを受信し、ライセンス保存部３０２に当該受信したライセンスを保存する。
【００２２】
クライアントのライセンス保存部３０２は、ライセンス運用サーバ１２０から取得したライセンスに関する情報を保存するデータベースである。ライセンス保存部３０２では、ライセンスに紐づけるべき情報も管理される。例えば、ソフトウェアの名称、ソフトウェアのバージョン、ソフトウェアの識別情報、クライアントの機器情報などが、ライセンスに紐づけられて保存される。これらの情報は、ソフトウェア３００の起動可否の判断に使用される。また、ソフトウェア３００の利用が終了して、ライセンス管理モジュール３０１がライセンス運用サーバ１２０にライセンスを返却すると、ライセンス管理モジュール３０１は当該返却したライセンスに紐づいた情報をライセンス保存部３０２から削除する。
【００２３】
ライセンス運用サーバ１２０は、ライセンス運用ソフトウェア３１１、ライセンス管理モジュール３１２、ライセンス保存部３１３を備える。
【００２４】
ライセンス運用ソフトウェア３１１は、例えば、ライセンス運用サーバ１２０で保持している購入済みライセンス情報の一覧表示や、ライセンス認証・返却・バージョン変更等の入力を受け付けるための図４のライセンス運用画面等を表示するためのプログラムである。ソフトウェア３００を購入した企業のシステム管理者が、該ソフトウェア３００のライセンス運用を管理するためのツールとして、ライセンス運用ソフトウェア３１１をライセンス運用サーバにインストールする。ライセンス運用ソフトウェア３１１は、購入したソフトウェア３００のバージョンに対応しており、ライセンス運用ソフトウェア３１１の内部に当該購入したソフトウェアのバージョンの情報が保持されているものとする。また、ソフトウェア３００のバージョンを無償または有償でアップグレードする場合、システム管理者は、そのアップグレードしたバージョンに対応するライセンス運用ソフトウェア３１１をインストールするものとする。
【００２５】
ライセンス運用サーバのライセンス管理モジュール３１２は、ライセンス運用サーバ１２０内でのライセンスに関する処理全般の機能を備える。企業がソフトウェア３００のライセンスを購入すると、ライセンス運用サーバのＣＰＵは、ライセンス管理モジュール３１２を実行することにより、ライセンス管理サーバ１３０に対してソフトウェア３００の利用に必要なライセンス情報（特定情報）を要求して取得する。そして、ライセンス運用サーバ１２０のライセンス管理モジュール３１２は、前記ライセンス管理サーバ１３０から取得したライセンス情報をライセンス保存部３１３に蓄える。ライセンス管理モジュール３１２は、この蓄えたライセンス情報を基にライセンス運用ソフトウェア３１１の利用管理を行うための利用管理手段として機能する。
【００２６】
ライセンス管理モジュール３１２は、実行対象のライセンス運用ソフトウェア３１１から依頼を受けて、ライセンス認証用のリクエストデータを作成し、該リクエストデータへライセンス認証に必要な情報を追加する。ライセンス認証に必要な情報は、例えば、ライセンス運用ソフトウェア３１１の識別情報、ライセンス運用サーバ１２０の機器情報、ソフトウェアの識別情報、シリアル番号、ライセンス数などの情報である。機器情報は、ライセンス運用サーバ１２０を一意に特定するための情報であり、例えば、ＭＡＣアドレスなどが該当する。ソフトウェアの識別情報は、購入したソフトウェア名とそのバージョンを一意に特定可能な情報である。シリアル番号は、企業が購入したソフトウェアのパッケージに一意に付与された番号であり、ライセンス運用サーバ１３０にライセンスの発行を要求する際に必要となる番号である。また、ライセンス数は、ライセンス管理ソフトウェア３２１に要求するライセンスの総数であり、この数分のライセンスを取得してプールしておくことができる。これらの情報をライセンス認証用のリクエストデータに追加した後、該リクエストデータをライセンス管理サーバ１３０へ送信する。また、ライセンス管理モジュール３１２は、ライセンス管理サーバ１３０が発行したライセンスを受信し、ライセンス保存部３１３に当該受信したライセンスを保存しておく。なお、本実施例では、シリアル番号は、企業が購入したソフトウェアのパッケージに記載されているものとするが、これに限るものではなく、ネットワークを介してダウンロード購入した場合は、ダウンロード時に通知されるものとしてもよい。
【００２７】
ライセンス保存部３１３は、ライセンス管理ソフトウェア３２１から取得したライセンスに関する情報を保存するデータベース（ライセンステーブル：詳細については図５で後述する）である。ライセンス保存部３１３には、ライセンスに紐づけるべき情報も管理される。例えば、ソフトウェアの名称、ソフトウェアのバージョン、ソフトウェアの識別情報、ライセンス運用サーバ１２０の機器情報、シリアル番号、ライセンス数、ライセンスの有効期限などが該当する。これらの情報は、ソフトウェア３００によるライセンス取得処理や図４のライセンス運用画面でのライセンスのバージョン変更処理等に使用される。また、ライセンス管理モジュール３１２は、ライセンスをライセンス管理モジュール１３０に返却した場合、当該返却したライセンスに紐づいた情報をライセンス保存部３１３から削除する。
【００２８】
ライセンス管理サーバ１３０は、ライセンス管理ソフトウェア３２１、ライセンス管理部３２２を備える。
【００２９】
ライセンス管理サーバ１３０のライセンス管理ソフトウェア３２１は、ライセンス管理に関する統合的な機能を備える。ライセンス管理ソフトウェア３２１は、ライセンス運用サーバ１２０とライセンスに関する情報の送受信を行う。また、ライセンス管理ソフトウェア３２１は、ライセンス運用サーバ１２０から受け付けた要求（リクエストデータ）を基にライセンスの発行やライセンスの認証状態の変更などを実行する。すなわち、ライセンス管理サーバ１３０のＣＰＵは、ライセンス管理ソフトウェアを実行することにより、ライセンスの管理を行うライセンス管理手段として機能する。また、ライセンス管理ソフトウェア３２１は、発行したライセンスをライセンス運用サーバ１２０に送信する。
【００３０】
ライセンス管理部３２２は、ライセンス管理ソフトウェア３２１が管理しているライセンスに関する情報を保存するデータベース（ライセンステーブル：詳細については図６で後述する）である。ライセンス管理部３２２では、ライセンス保存部３１３と同様の情報に加え、ライセンスの認証状態が管理される。また、ライセンス管理ソフトウェア３２１によってライセンス認証又はライセンス返却がされると、ライセンス管理部３２２が管理しているライセンス情報を更新する。ライセンス認証によるライセンス情報の更新の場合、リクエストデータ内に含まれる情報をライセンスに紐づける。ライセンス認証によるライセンス情報の更新は、ライセンス運用サーバ１２０における前記ライセンス対象のライセンス運用ソフトウェア３１１についてのライセンス情報を蓄えることである。一方、ライセンス返却によるライセンス情報の更新の場合、ライセンスに紐づいている情報を削除する。ライセンス返却によるライセンス情報の更新は、ライセンスに紐づいていたシリアル番号及びライセンス運用サーバ１２０の機器情報の情報が解除される。機器情報が解除されると、他のコンピュータ（他のライセンス運用サーバ）上で前記返却されたライセンスに紐づいていたシリアル番号を使用してライセンス認証が可能となる。
【００３１】
なお、本実施例において、ライセンス運用サーバ１２０とライセンス管理サーバ１３０は、異なる装置上で実行されるものとして説明するが、これに限るものではなく、同一装置上で実行されるようにしてもよい。
【００３２】
図４は、ライセンス運用ソフトウェア３１１によって表示されるＧＵＩの一例を示している。ライセンス運用画面４００は、ライセンス運用サーバで運用しているライセンス情報の一覧を表示するためのライセンス情報一覧４０１、ライセンスの認証を行うためのライセンス認証入力フォーム４１０を備える。
【００３３】
ライセンス情報一覧４０１は、ライセンス保存部３１３に保存されているライセンスのシリアル番号４０２、バージョン４０３、数量（ライセンス数）４０４、有効期限４０５を表示し、複数のライセンスを一覧表示できる。また、各ライセンスは、ライセンスをライセンス管理サーバ１３０に返却するように指示するためのライセンス返却ボタン４０６、ライセンスのバージョンを変更するように指示するためのバージョン変更ボタン４０７を備える。ここでライセンスのバージョン変更とは、ライセンスのアップグレード（またはダウングレード）を指す。ライセンスをアップグレード、ダウングレードのどちらを実施するかは、ライセンス情報一覧４０１に表示されているライセンスのバージョン４０３と、ライセンス運用ソフトウェア３１１が内部的に保持しているバージョンを比較して判断する。具体的には、ライセンス運用ソフトウェア３１１のバージョンが、ライセンス保存部に保存済みのライセンスのバージョン４０３より大きければ、ライセンスのアップグレードとなる。一方、ライセンス運用ソフトウェアのバージョンが、ライセンス保存部に保存済みのライセンスのバージョン４０３より小さければ、ライセンスのダウングレードとなる。なお、ライセンス運用ソフトウェアのバージョンがライセンスのバージョン４０３と同じである場合、バージョン変更ボタン４０７は表示されない。
【００３４】
図４は、ライセンス運用ソフトウェア３１１のバージョンが「３」である場合の例を示しており、シリアル番号「１１１１−１１１１−１１１１−１１１１」のバージョンは「１」であるため、そのシリアル番号のライセンスに対してアップグレードのバージョン変更ボタン４０７が表示されている。後述するように、シリアル番号「２２２２−２２２２−２２２２−２２２２」のライセンスについては、アップグレード処理が行われた後の状態を示しており、アップグレードされた後のバージョン「３」が存在するので、バージョン変更ボタンは表示されない。なお、シリアル番号「２２２２−２２２２−２２２２−２２２２」のライセンスのうち、アップグレード前の旧バージョン「２」は、後述する処理によって、有効期限が３０日後（所定期間後）に変更されている。なお、バージョン変更ボタンを表示するかどうかの判断は、有効期限が無制限に設定されているシリアル番号に限って行うようにしてもよい。
【００３５】
ライセンス認証入力フォーム４１０は、ライセンスを追加購入した場合に、当該購入したライセンスの認証を行うためのシリアル番号、数量（ライセンス数）を入力するためのフォームである。追加購入したシリアル番号と数量とを入力した後に認証ボタンが押下されると、当該入力されたシリアル番号のライセンス認証を行うようにライセンス管理サーバに指示する。
【００３６】
図５は、ライセンス保存部３１３に保存されるライセンステーブルの一例を示している。ライセンステーブル５００は、ライセンス管理モジュール３１２が取得したライセンスに紐づく情報を管理する。
【００３７】
シリアル番号５０１は、ライセンス運用ソフトウェア３１１のライセンス認証入力フォーム４１０で指定され、ライセンス認証に成功したシリアル番号である。図５の例では、ライセンス保存部３１３に３つのライセンスが保存されている状態を示している。
【００３８】
ソフトウェア名５０２は、各シリアル番号に対応するライセンス処理対象のソフトウェアの名称を示しており、ソフトウェアバージョン５０３は、各ソフトウェアのバージョンを示している。ソフトウェアの識別情報５０４は、ソフトウェア名とどのバージョンかを一意に識別することが可能な情報であり、クライアントからソフトウェアのどのバージョンについてライセンス要求されたか判断するために用いられる。例えば、クライアント１１０のソフトウェア３００の起動時に、クライアントはライセンス運用サーバ１２０に対してライセンスを要求する。その際、クライアント１１０のライセンス管理モジュール３０１は、ライセンス運用サーバに対してソフトウェア３００に組み込まれたソフトウェアの識別情報、バージョン、クライアントの機器情報を送信する。ライセンス運用サーバ１２０のライセンス管理モジュール３１２はこれらの情報に基づいて、ライセンス保存部３１３に保持している貸し出し可能なライセンスがあるか判断し、貸し出し可能なライセンスがあればクライアント１１０へ送信する。クライアント１１０のライセンス管理モジュール３０１は、ライセンスを受信した場合、該ライセンスをライセンス保存部３０２に保存し、貸し出されたライセンス情報内に当該ソフトウェア識別情報と当該クライアントの機器情報とが存在すれば、そのソフトウェア３００を起動する。
【００３９】
数量５０５は、購入したライセンスの総数（すなわち、クライアントに対してライセンス運用サーバ１２０から貸し出し可能なライセンスの総数）である。例えば、ライセンスの数量５０５が「５」である場合、最大５台のクライアントがソフトウェアを同時利用することができる。また、残数５０８は、その時点でクライアントに貸し出し可能なライセンスの数を示しており、貸出先５０９には、その時点でライセンスを貸し出しているクライアントの機器情報が記憶される。例えば、ライセンスの数量５０５が「５」であるシリアル番号のライセンスについて、３台のクライアントに該ライセンスを貸し出していれば、残数は「２」となる。なお、クライアントからライセンス要求を受けた際に、ライセンスの残数５０８が「０」の場合は、クライアントはライセンスを取得できずにソフトウェアを利用できない。
【００４０】
有効期限５０６は、当該ライセンスの有効期限である。有効期限が過ぎた場合、そのライセンスに対応するソフトウェアのバージョンは利用できなくなる。
【００４１】
機器情報５０７は、ライセンス運用サーバ１２０の機器情報である。図５では、ライセンス運用サーバ１２０のＭＡＣアドレスを機器情報５０７として用いている。
【００４２】
なお、本実施例では、ライセンステーブル５００の構成として項目５０１〜５０９を例に挙げたが、これらの項目に限るものではない。
【００４３】
図６は、ライセンス管理部３２２に保存されるライセンステーブルの例を示している。ライセンステーブル６００は、ライセンス管理ソフトウェア３２１が発行したライセンスが、どのライセンス運用サーバで利用されているかを管理する。
【００４４】
図６の６０１〜６０７は図５の５０１〜５０７にそれぞれ対応しているので、各項目の詳細説明は割愛する。
【００４５】
機器情報６０７は、各シリアル番号のライセンスが、どのライセンス運用サーバで運用されているかを識別するための機器情報である。この機器情報は、ライセンス運用サーバ１２０がライセンス管理サーバ１３０からライセンスを取得する際に保存され、ライセンスを返却する際に削除される。すなわち、機器情報６０７が保存されている場合、この情報に紐づいているシリアル番号６０１は使用中の状態であるため、他のライセンス運用サーバで使用することができない。一方、機器情報６０７が保存されていない場合、この情報に紐づいているシリアル番号は未使用の状態であるため、他のライセンス運用サーバで使用することができる。本実施例では、一つのシリアル番号に対して一台の機器情報６０７を紐づけて管理しているが、ライセンス数６０５が２台以上のライセンス運用サーバで分割できる場合、複数の機器情報を紐づけて管理してもよい。
【００４６】
また、本実施例では、ライセンステーブル６００の構成として６０１〜６０７を項目の例に挙げたが、ライセンステーブルの構成は前述の項目に限るものではない。
【００４７】
図７は、ライセンス運用サーバ１２０およびライセンス管理サーバ１３０で実行される処理のフロー図である。図７では、ライセンス運用サーバ１２０のライセンス運用ソフトウェア３１１で、ライセンスをバージョン変更（アップグレードまたはダウングレード）する場合の処理手順を示す。アップグレードを行う場合は、システム管理者が、まず、当該アップグレード後のバージョンに対応するライセンス運用ソフトウェア３１１をライセンス運用サーバに上書きインストールし、当該ライセンス運用ソフトウェア３１１を起動する。以下では、ライセンス運用サーバ１２０にバージョン変更前のライセンスが保持されている状態で、当該新たにインストールされたライセンス運用ソフトウェア３１１の起動処理が指示された場合の処理について説明する。
【００４８】
ライセンス運用ソフトウェア３１１の起動処理が開始されると、Ｓ１００１にて、ライセンス管理モジュール３１２は、ライセンス保存部３１３からライセンス情報の一覧を取得する。
【００４９】
次に、Ｓ１００２にて、ライセンス管理モジュール３１２は、ライセンス運用ソフトウェア３１１が内部的に保持しているバージョン（ライセンスを購入したソフトウェアのバージョン情報）を取得する。
【００５０】
Ｓ１００３にて、ライセンス管理モジュール３１２は、Ｓ１００１で取得したライセンス情報のバージョンとＳ１００２で取得したライセンス運用ソフトウェア３１１のバージョンとが異なるライセンス情報があるか判断する。Ｙｅｓ（バージョンの異なるライセンス情報がある）の場合、Ｓ１００４へ進み、Ｎｏ（バージョンの異なるライセンス情報がない）の場合、Ｓ１００５へ進む。
【００５１】
Ｓ１００４にて、ライセンス管理モジュール３１２は、Ｓ１００３でバージョンが異なると判断したライセンスのバージョン変更を許可するフラグを付与する。
【００５２】
Ｓ１００５にて、ライセンス運用ソフトウェア３１１は、図４のようなライセンス運用画面を表示する。ここで、ライセンス運用画面のライセンス情報一覧４０１のうち、Ｓ１００４でフラグが付与されたライセンス情報に対してのみ、バージョン変更ボタン４０７を表示するように制御する。つまり、Ｓ１００３でバージョンが異なると判断されたライセンス情報に対しては、当該ライセンスのバージョン変更を指示可能な状態となる。
【００５３】
Ｓ１００６にて、ライセンス運用ソフトウェア３１１は、バージョン変更ボタン４０７が押されたかどうかを判断する。Ｙｅｓ（バージョン変更ボタン４０７が押された）の場合、Ｓ１００７へ進み、Ｎｏ（ボタンが押されていない）の場合、Ｓ１００６で待機する。
【００５４】
Ｓ１００７にて、ライセンス管理モジュール３１２は、ライセンス運用ソフトウェア３１１からライセンスのバージョン変更指示を受け付けたことに応じて、ライセンス処理用のリクエストデータを作成する。そして、作成したリクエストデータに対し、バージョン変更指示されたライセンスのシリアル番号、ソフトウェアの識別情報、ライセンスの数量、ライセンス運用サーバ１２０の機器情報などを、ライセンス処理用リクエストとして追加する。
【００５５】
Ｓ１００８にて、ライセンス管理モジュール３１２はＳ１００７で作成したリクエストデータをライセンス管理サーバ１３０へ送信する。
【００５６】
次にライセンス管理サーバ１３０における処理について説明する。
【００５７】
Ｓ１１０１にて、ライセンス管理ソフトウェア３２１は受信したリクエストデータが有効かどうかを判断する。具体的には、まずライセンス管理ソフトウェア３２１は、リクエストデータ内に含まれる情報を抽出し、その情報をライセンステーブル６００の情報を比較する。そして、シリアル番号６０１、ソフトウェアの識別情報６０４、ライセンスの数量６０５、ライセンス運用サーバ１２０の機器情報が有効な値かどうかを判断する。リクエストデータが有効であれば、リクエストデータ内に含まれる情報がライセンステーブル６００にも存在することになる。そして、全て有効な値であれば、リクエストデータは有効であると判断する。Ｙｅｓ（有効である）の場合、Ｓ１１０２へ進み、Ｎｏ（有効でない）の場合、Ｓ１１０５へ進む。
【００５８】
Ｓ１１０２にて、ライセンス管理ソフトウェア３２１は受信したリクエストデータがバージョン変更かどうかを判断する。Ｙｅｓ（バージョン変更リクエスト）の場合、Ｓ１１０３へ進み、Ｎｏ（バージョン変更リクエストではなく、新規登録リクエスト）の場合、Ｓ１１０４へ進む。なお、バージョン変更リクエストの場合、受け付けたシリアル番号は、ライセンス管理サーバにおいて、旧バージョンのソフトウェアに対するライセンスとして既に認証済みの状態でライセンステーブル６００に登録されている。
【００５９】
Ｓ１１０３にて、ライセンス管理ソフトウェア３２１は、当該受け付けたシリアル番号に対して認証済みの旧バージョンのソフトウェアに対するライセンスを、期限付きのライセンスに変更し、ライセンステーブル６００を更新する。例えば、当該シリアル番号に対する旧バージョンのソフトウェアに対するライセンスの有効期限を、バージョン変更リクエストを受信した日時から３０日後（所定期間後）とする。このようにすることで、変更前の旧バージョンに対するライセンスを３０日間は制限無しで利用できるようになる。図６の例では、シリアル番号「２２２２−２２２２−２２２２−２２２２」について、バージョン変更リクエスト前に運用していたソフトウェアのバージョン「２」に対する有効期限を「２０１５／１２／３１」に変更した状態を示している。
【００６０】
Ｓ１１０４にて、ライセンス管理ソフトウェア３２１は、受信したリクエストデータに含まれるシリアル番号に基づいて、新たなバージョンのソフトウェアに対するライセンスを発行する。そのライセンスに対し、ライセンス運用サーバ１２０の機器情報を紐づけ、ライセンステーブル６００を更新する。例えば、リクエストデータ内に含まれる新たなバージョンのソフトウェアの識別情報がＣ３００であれば、ソフトウェアバージョン「３」のライセンスを新規に発行する。ここで新規に発行したライセンスの有効期限は無期限とする。図６の例では、シリアル番号「２２２２−２２２２−２２２２−２２２２」について、アップグレード後のバージョン「３」のソフトウェアに対し、有効期限が無期限の状態のライセンスが発行された状態を示している。
【００６１】
このように、Ｓ１１０３〜Ｓ１１０４の処理によって、ライセンステーブル６００上では、ライセンス運用サーバ１２０で運用される１つのシリアル番号に対して、２つのライセンスが紐づいて管理されることとなる。２つのライセンスとは、更新前バージョンに対するライセンスと更新後バージョンに対するライセンスであり、更新前バージョンのライセンスは３０日の有効期限付きとして設定され、更新後バージョンのライセンスは無期限のライセンスとして設定される。
【００６２】
Ｓ１１０５にて、ライセンス管理ソフトウェア３２１は、ライセンステーブル６００でライセンス運用サーバ１２０の機器情報に紐づいている全てのライセンスを、ライセンスデータとしてライセンス運用サーバ１２０に送信する。
【００６３】
Ｓ１１０９にて、ライセンス運用サーバのライセンス管理モジュール３１２は受信したライセンスデータをライセンス保存部３１３に上書き保存（更新）する。この結果、図５のように、シリアル番号「２２２２−２２２２−２２２２−２２２２」について、バージョン変更リクエスト前に運用していたソフトウェアのバージョン「２」に対するライセンスの有効期限が「２０１５／１２／３１」になる。また、シリアル番号「２２２２−２２２２−２２２２−２２２２」について、アップグレード後のバージョン「３」のソフトウェアに対し、有効期限が無期限の状態のライセンスが保存される。
【００６４】
以上により、ライセンス運用サーバにおいて、ライセンスをアップグレードしたとしても、アップグレード前のバージョンに対するライセンスが、すぐに削除されることはなくなる。したがって、クライアントＰＣのユーザは、すぐにクライアントＰＣのソフトウェアをバージョンアップしなくても、ライセンスの有効期限内であれば引き続き旧バージョンのソフトウェアを使用できる。一方で、旧バージョンのライセンスに有効期限を付けることにより、クライアントＰＣのユーザがずっと旧バージョンのソフトウェアを使い続けることはできなくなる。
【００６５】
したがって、クライアントＰＣのユーザに対しては、ソフトウェアをアップグレードするための猶予期間を設けることができる。また、猶予期間経過後は、フローティングライセンスで利用するソフトウェアのバージョンを１つに制限できるため、システム管理者にとっては、ソフトウェアの運用・保守が容易となる。
【００６６】
（実施例２）
実施例１ではソフトウェアのバージョン変更を行うための猶予期間として、一時的に、１つのシリアル番号に対してバージョンの異なる２つのライセンスを提供した。
【００６７】
一方で、アップグレードしたソフトウェアに対して、ダウングレードを行い、その後、再度アップグレードを行う、というように、短期間の間に、意図的にライセンスのアップグレードとダウングレードとを繰り返し行うと、有効期限付きのライセンスが複数生成されてしまう。
【００６８】
例えば、バージョン１に対するライセンスに対して最初のアップグレードを行うと、バージョン１のライセンスが有効期限付きライセンスに変更されて、バージョン２の無期限ライセンスが新たに生成され、ライセンス保存部３１３に保存される。その後すぐに、バージョン２の無期限ライセンスに対してダウングレードを行うと、バージョン２のライセンスが有効期限付きライセンスに変更されて、バージョン１の無期限ライセンスが新たに生成され、ライセンス保存部３１３に保存される。この時点では、最初のアップグレード時に保存されたバージョン１の有効期限付きライセンスと、ダウングレード時に保存されたバージョン２の有効期限付きライセンスと、ダウングレード時に保存されたバージョン１の無期限ライセンスとが保存されることになる。そして、さらにその後、バージョン１の無期限ライセンスに対して２回目のアップグレードを行うと、バージョン１のライセンスが有効期限付きライセンスに変更されて、バージョン２の無期限ライセンスが新たに生成され、ライセンス保存部３１３に保存される。このように、アップグレードとダウングレードを短期間のうちに繰り返し行われると、有効期限付きライセンスが複数生成されてしまう。
【００６９】
そこで実施例２では、実施例１に加え、ライセンスのバージョン変更を複数回繰り返したとしても、有効期限付きライセンスを増やさない手法について説明する。本実施例において、システム構成やアプリケーションのＵＩなど、実施例１と同様の説明は割愛する。
【００７０】
図８は、実施例２におけるライセンス運用サーバ１２０とライセンス管理サーバ１３０で実行される処理のフロー図である。図８では、図７と重複した部分についての説明を割愛する。
【００７１】
ライセンス運用サーバ１２０における処理について説明する。Ｓ１００１〜Ｓ１００７の各ステップの処理は、図７と同様である。
【００７２】
Ｓ２００１において、ライセンス管理モジュール３１２は、Ｓ１００１で取得したライセンス情報の一覧から１つのライセンス情報をチェック対象とする。そして、そのライセンス情報に含まれるシリアル番号が、バージョン変更指示を受け付けたライセンスと同じシリアル番号であるかを判断する。Ｙｅｓ（同じシリアル番号である）の場合、Ｓ２００２へ進み、Ｎｏ（同じシリアル番号でない）の場合、Ｓ２００４へ進む。
【００７３】
Ｓ２００２において、ライセンス管理モジュール３１２は、当該チェック対象のライセンス情報が有効期限付きかを判断する。Ｙｅｓ（有効期限付きのライセンスである）の場合、Ｓ２００３へ進み、Ｎｏ（有効期限付きのライセンスでない）の場合、Ｓ２００４へ進む。
【００７４】
Ｓ２００３において、ライセンス管理モジュール３１２は、当該チェック対象のライセンス情報を返却対象ライセンスとしてＳ１００７で作成したリクエストデータに追加する。このリクエストデータには、返却対象ライセンスの情報として、シリアル番号、ソフトウェアの識別情報（返却対象バージョン）、ライセンスの数量、ライセンス運用サーバ１２０の機器情報が含まれることになる。
【００７５】
Ｓ２００４において、ライセンス管理モジュール３１２は、ライセンス情報の一覧のうち、未チェックのライセンス情報があるかを判断する。Ｙｅｓ（未チェックのライセンスがある）の場合、Ｓ２００１へ進み、Ｎｏ（全てチェック済み）の場合、Ｓ１００８へ進んで、リクエストデータをライセンス管理サーバに送信する。
【００７６】
次に、ライセンス管理サーバ１３０における処理について説明する。Ｓ１１０１〜Ｓ１１０４の各ステップの処理は、図７と同様である。
【００７７】
Ｓ２１０１において、ライセンス管理ソフトウェア３２１は、受信したリクエストデータに返却対象ライセンスに関する返却リクエストが含まれるかを判断する。Ｙｅｓ（返却リクエストが含まれる）の場合、Ｓ２１０２へ進み、Ｎｏ（返却リクエストが含まれない）の場合、Ｓ１１０５へ進む。
【００７８】
Ｓ２１０２において、ライセンス管理ソフトウェア３２１は、リクエストデータに含まれる返却対象ライセンスについて返却処理を実行し、ライセンステーブル６００を更新する。すなわち、ライセンステーブル６００から返却対象ライセンスを削除する。その後、Ｓ１１０５において、ライセンス管理ソフトウェア３２１は、ライセンステーブル６００でライセンス運用サーバ１２０の機器情報に紐づいている全てのライセンスを、ライセンスデータとしてライセンス運用サーバ１２０に送信する。その結果、Ｓ１００９において、ライセンス運用サーバのライセンス管理モジュール３１２は受信したライセンスデータをライセンス保存部３１３に上書き保存するので、返却対象ライセンスはライセンステーブル５００から削除されることになる。
【００７９】
以上により、ライセンスのバージョン変更を複数回繰り返したとしても、有効期限付きライセンスが複数保存されることがなくなり、バージョン更新後の無期限ライセンスと、その直前のバージョンの有効期限付きライセンスとだけが残ることになる。
【００８０】
（その他の実施例）
実施例２では、Ｓ２００１〜Ｓ２００４の処理により、返却対象のバージョンのライセンスを特定していたが、この返却対象のバージョンのライセンスを特定する処理をライセンス管理サーバで行うように構成しても構わない。その場合、当該返却対象として特定されたバージョンのライセンスは、強制的に返却するようにライセンス運用サーバに通知されるようにすればよい。
【００８１】
また、本発明は、以下の処理を実行することによっても実現される。その処理は、上述した実施例の機能を実現させるソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0006661395.tif 000002
【図２】
0006661395.tif 000003
【図３】
0006661395.tif 000004
【図４】
0006661395.tif 000005
【図５】
0006661395.tif 000006
【図６】
0006661395.tif 000007
【図７】
0006661395.tif 000008
【図８】
0006661395.tif 000009