(57)【要約】【課題】複数のソフトウェアの中から要求に応じたソフトウェアを実行する情報処理システムを効率的に運用できるようにする。【解決手段】記憶部１ａは、ソフトウェア２ａ，２ｂを含む複数のソフトウェアの利用される順序を示す順序情報を記憶する。予測手段１ｂは、情報処理装置２におけるソフトウェア２ａの実行状況と、記憶部１ａに記憶された順序情報とに基づいて、情報処理装置３から次に要求されるソフトウェア２ｂを予測する。インストール手段１ｃは、情報処理装置２に、予測手段１ｂが予測したソフトウェア２ｂをインストールする。【選択図】図１
2012088901.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置からの要求に応じて１またはそれ以上の第２の情報処理装置が実行するソフトウェアを管理するソフトウェア管理装置であって、
複数のソフトウェアの利用される順序を示す順序情報を記憶する記憶部と、
前記１またはそれ以上の第２の情報処理装置における前記複数のソフトウェアのうちの第１のソフトウェアの実行状況と、前記記憶部に記憶された前記順序情報とに基づいて、前記複数のソフトウェアのうち前記第１の情報処理装置から次に要求される第２のソフトウェアを予測する予測手段と、
前記１またはそれ以上の第２の情報処理装置の少なくとも１つに、前記予測手段が予測した前記第２のソフトウェアをインストールするインストール手段と、
を有することを特徴とするソフトウェア管理装置。
【請求項２】
前記予測手段は、前記１またはそれ以上の第２の情報処理装置における前記第１のソフトウェアの実行開始時刻に基づいて、前記第２のソフトウェアをインストールするタイミングを制御することを特徴とする請求項１記載のソフトウェア管理装置。
【請求項３】
前記記憶部は、前記複数のソフトウェアそれぞれの利用予定時刻を示す計画情報を更に記憶し、
前記予測手段は、前記第１のソフトウェアの実行開始時刻に加えて、前記記憶部に記憶された前記計画情報が示す前記第２のソフトウェアの利用予定時刻に基づいて、前記第２のソフトウェアをインストールするタイミングを制御することを特徴とする請求項２記載のソフトウェア管理装置。
【請求項４】
前記第２のソフトウェアがインストールされると、実行を要求するソフトウェアとして前記第２のソフトウェアが選択可能であることを示す画面データを前記第１の情報処理装置に送信する画面提供手段を更に有することを特徴とする請求項１記載のソフトウェア管理装置。
【請求項５】
前記インストール手段は、前記１またはそれ以上の第２の情報処理装置における前記第１のソフトウェアの実行状況に基づいて、前記１またはそれ以上の第２の情報処理装置から前記第１のソフトウェアをアンインストールし、
前記画面提供手段は、実行を要求するソフトウェアとして前記第１のソフトウェアが選択不可であることを示す画面データを前記第１の情報処理装置に送信する、
ことを特徴とする請求項４記載のソフトウェア管理装置。
【請求項６】
前記第２のソフトウェアのインストールには、所定の第１の記憶装置に記憶された前記第２のソフトウェアに対応するプログラムを前記１またはそれ以上の第２の情報処理装置が使用する第２の記憶装置にコピーする処理、および、圧縮された前記第２のソフトウェアに対応するプログラムを復元する処理の少なくとも一方を含むことを特徴とする請求項１記載のソフトウェア管理装置。
【請求項７】
第１の情報処理装置からの要求に応じて１またはそれ以上の第２の情報処理装置で実行されるソフトウェアを管理する装置が実行するソフトウェア管理方法であって、
前記１またはそれ以上の第２の情報処理装置における複数のソフトウェアのうちの第１のソフトウェアの実行状況を監視し、
前記第１のソフトウェアの実行状況と、記憶部に記憶された前記複数のソフトウェアの利用される順序を示す順序情報とに基づいて、前記複数のソフトウェアのうち前記第１の情報処理装置から次に要求される第２のソフトウェアを予測し、
前記１またはそれ以上の第２の情報処理装置の少なくとも１つに、予測した前記第２のソフトウェアをインストールする、
ことを特徴とするソフトウェア管理方法。
【請求項８】
第１の情報処理装置からの要求に応じて１またはそれ以上の第２の情報処理装置が実行するソフトウェアを管理するソフトウェア管理プログラムであって、コンピュータに、
前記１またはそれ以上の第２の情報処理装置における複数のソフトウェアのうちの第１のソフトウェアの実行状況を監視し、
前記第１のソフトウェアの実行状況と、記憶部に記憶された前記複数のソフトウェアの利用される順序を示す順序情報とに基づいて、前記複数のソフトウェアのうち前記第１の情報処理装置から次に要求される第２のソフトウェアを予測し、
前記１またはそれ以上の第２の情報処理装置の少なくとも１つに、予測した前記第２のソフトウェアをインストールする、
処理を実行させることを特徴とするソフトウェア管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア管理装置、ソフトウェア管理方法およびソフトウェア管理プログラムに関する。
【背景技術】
【０００２】
現在、ネットワークに接続された複数の情報処理装置が通信を行いながら情報処理を行う情報処理システムが広く利用されている。ネットワークを用いた情報処理システムの中には、クライアント装置としての情報処理装置が、サーバ装置としての情報処理装置にソフトウェアの実行を要求し、サーバ装置からソフトウェアの実行結果を取得するものがある。例えば、クライアント装置で実行されるＷｅｂブラウザから、インターネットを介して、サーバ装置にソフトウェアの実行を要求する情報処理システムがある。このようなソフトウェアの利用形態は、ＳａａＳ（Software as a Service）と呼ばれることがある。
【０００３】
ここで、ソフトウェアを実行可能な状態にするため、当該ソフトウェアを実行する情報処理装置に当該ソフトウェアをインストールする処理が発生し得る。そこで、例えば、ソフトウェア開発支援用ソフトウェアのインストールを効率的に行うために、ソフトウェア開発拠点の開発環境に関する定義情報を参照して、ソフトウェア開発支援用ソフトウェアを自動的にインストールする方法が提案されている。
【０００４】
なお、車両や加工装置などのリソースのスケジューリング方法に関し、日時を指定したリソースの予約を受け付け、受け付けた予約から、将来受け付けることが見込まれる予約に基づくリソースの需要量を予測して、スケジューリングを行う方法が提案されている。また、電子機器開発用ソフトウェアの管理方法に関し、プロジェクト参加者への電子機器開発用ソフトウェアの割り当てを示す情報に基づいて、電子機器開発用ソフトウェアの設定を自動的に実行する方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１６５６１０号公報
【特許文献２】特開２００３−２０３１５６号公報
【特許文献３】特開２００１−３０６７７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前述の通り、サーバ装置などの情報処理装置が、クライアント装置など他の情報処理装置からの要求に応じたソフトウェアを実行する情報処理システムが考えられる。しかし、他の情報処理装置から要求される可能性のあるソフトウェアの数が多いと、ソフトウェアのインストールに関して、情報処理システムの運用の効率性が問題となる。
【０００７】
例えば、要求される可能性のあるソフトウェアの全てを、予め情報処理装置にインストールしておく運用方法が考えられる。しかし、この運用方法では、ハードディスク装置などの記憶装置の記憶領域が多く消費される。また、要求される可能性のある複数のソフトウェアの中に、同一の情報処理装置にインストールできないソフトウェアが含まれている場合、多数の情報処理装置を設置することになる可能性がある。すなわち、用意する演算装置や記憶装置などの計算リソースが増大するという問題がある。
【０００８】
一方、計算リソースの増大を抑制するため、要求を受けてからソフトウェアを情報処理装置にインストールする運用方法も考えられる。しかし、この運用方法では、インストール処理のため、要求からソフトウェアの実行開始までの待ち時間が増大する。すなわち、情報処理システムのＴＡＴ（Turn Around Time）が増大するという問題がある。
【０００９】
本発明はこのような点に鑑みてなされたものであり、複数のソフトウェアの中から要求に応じたソフトウェアを実行する情報処理システムを効率的に運用できるようにするソフトウェア管理装置、ソフトウェア管理方法およびソフトウェア管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、第１の情報処理装置からの要求に応じて１またはそれ以上の第２の情報処理装置が実行するソフトウェアを管理するソフトウェア管理装置が提供される。このソフトウェア管理装置は、記憶部と予測手段とインストール手段とを有する。記憶部は、複数のソフトウェアの利用される順序を示す順序情報を記憶する。予測手段は、１またはそれ以上の第２の情報処理装置における複数のソフトウェアのうちの第１のソフトウェアの実行状況と、記憶部に記憶された順序情報とに基づいて、複数のソフトウェアのうち第１の情報処理装置から次に要求される第２のソフトウェアを予測する。インストール手段は、１またはそれ以上の第２の情報処理装置の少なくとも１つに、予測手段が予測した第２のソフトウェアをインストールする。
【００１１】
また、上記課題を解決するために、第１の情報処理装置からの要求に応じて１またはそれ以上の第２の情報処理装置で実行されるソフトウェアを管理する装置が実行するソフトウェア管理方法が提供される。このソフトウェア管理方法では、１またはそれ以上の第２の情報処理装置における複数のソフトウェアのうちの第１のソフトウェアの実行状況を監視する。第１のソフトウェアの実行状況と、記憶部に記憶された複数のソフトウェアの利用される順序を示す順序情報とに基づいて、複数のソフトウェアのうち第１の情報処理装置から次に要求される第２のソフトウェアを予測する。１またはそれ以上の第２の情報処理装置の少なくとも１つに、予測した第２のソフトウェアをインストールする。また、上記課題を解決するために、上記ソフトウェア管理方法をコンピュータに実行させるソフトウェア管理プログラムが提供される。
【発明の効果】
【００１２】
上記ソフトウェア管理装置、ソフトウェア管理方法およびソフトウェア管理プログラムによれば、複数のソフトウェアの中から要求に応じたソフトウェアを実行する情報処理システムを効率的に運用することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態のソフトウェア管理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】実行サーバの構成を示す図である。
【図４】アプリケーション管理サーバのハードウェア構成を示す図である。
【図５】アプリケーション管理サーバの機能を示すブロック図である。
【図６】アプリケーション管理テーブルのデータ構造例を示す図である。
【図７】設計ステップ定義テーブルのデータ構造例を示す図である。
【図８】利用実績管理テーブルのデータ構造例を示す図である。
【図９】アプリケーション選択画面の例を示す図である。
【図１０】バージョン選択画面の例を示す図である。
【図１１】第２の実施の形態のアプリケーション予測処理を示すフローチャートである。
【図１２】インストール処理を示すフローチャートである。
【図１３】インストール処理の流れを示すシーケンス図である。
【図１４】アプリケーション起動処理を示すフローチャートである。
【図１５】アプリケーション起動処理の流れを示す第１のシーケンス図である。
【図１６】アプリケーション起動処理の流れを示す第２のシーケンス図である。
【図１７】アプリケーション負荷判定処理を示すフローチャートである。
【図１８】マシン負荷によるアプリケーション追加処理の流れを示すシーケンス図である。
【図１９】アンインストール対象特定処理を示すフローチャートである。
【図２０】アンインストール処理を示すフローチャートである。
【図２１】アンインストール処理の流れを示すシーケンス図である。
【図２２】第３の実施の形態のアプリケーション管理サーバの機能を示すブロック図である。
【図２３】利用計画テーブルのデータ構造例を示す図である。
【図２４】第３の実施の形態のアプリケーション予測処理を示すフローチャートである。
【図２５】第４の実施の形態のアプリケーション管理サーバの機能を示すブロック図である。
【図２６】補正パラメータ算出処理を示すフローチャートである。
【図２７】補正パラメータ算出処理の具体例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のソフトウェア管理装置を示す図である。ソフトウェア管理装置１は、情報処理装置３からの要求に応じて情報処理装置２（または、情報処理装置２を含む複数の情報処理装置）が実行するソフトウェアを管理する。ソフトウェア管理装置１が管理するソフトウェアは、アプリケーションソフトウェア（以下、アプリケーションと呼ぶことがある）であってもよい。ソフトウェア管理装置１は、記憶部１ａ、予測手段１ｂおよびインストール手段１ｃを有する。
【００１５】
記憶部１ａは、ソフトウェア２ａ，２ｂを含む複数のソフトウェアの利用される順序を示す順序情報を記憶する。順序情報は、複数のソフトウェアを利用するプロジェクトの種類毎に、当該種類のプロジェクトにおいて一般的な利用順序を規定してもよい。例えば、順序情報は、電子回路開発のプロジェクトについて、論理設計用アプリケーション、シミュレーション用アプリケーション、配置・配線用アプリケーションが順に利用されることを規定してもよい。第１の実施の形態では、順序情報は、ソフトウェア２ａの次にソフトウェア２ｂが利用される旨を規定しているものとする。
【００１６】
予測手段１ｂは、情報処理装置２（または、複数の情報処理装置）におけるソフトウェア２ａの実況状況を監視する。ソフトウェア２ａの実行状況は、例えば、情報処理装置２（または、複数の情報処理装置それぞれ）から取得するログ情報に基づいて判断することができる。予測手段１ｂは、ソフトウェア２ａの実行状況と記憶部１ａに記憶された順序情報とに基づいて、情報処理装置３から次に要求されるソフトウェア２ｂを予測する。
【００１７】
インストール手段１ｃは、情報処理装置２（または、複数の情報処理装置の少なくとも１つ）に、予測手段１ｂが予測したソフトウェア２ｂをインストールする。インストールの処理は、所定の記憶装置に格納されたソフトウェア２ｂに対応するプログラムを、情報処理装置２（または、他の情報処理装置）が使用する記憶装置にコピーする処理を含んでもよい。また、情報処理装置２（または、他の情報処理装置）が使用する記憶装置に格納された圧縮されたプログラムを、元のプログラムに復元する処理を含んでもよい。インストール手段１ｃは、インストールの処理を他の装置に依頼してもよい。
【００１８】
なお、予測手段１ｂは、ソフトウェア２ａの実行開始時刻に基づいて、ソフトウェア２ｂをインストールするタイミングを制御してもよい。例えば、予測手段１ｂは、ソフトウェア２ａの実行開始を検知した後すぐ、ソフトウェア２ｂをインストールするよう制御してもよい。また、ソフトウェア２ａの実行開始から所定時間経過後、ソフトウェア２ｂをインストールするよう制御してもよい。ソフトウェア２ａの実行開始からの経過時間は、ソフトウェアやプロジェクトの種類に応じて変えてもよい。
【００１９】
また、予測手段１ｂは、情報処理装置３のユーザ（または、当該ユーザを含むユーザグループ）が作成した、複数のソフトウェアそれぞれの利用予定時刻を示す計画情報を更に参照して、ソフトウェア２ｂをインストールするタイミングを制御してもよい。また、順序情報を記憶する記憶部１ａを、ソフトウェア管理装置１の外部に設けてもよい。その場合、予測手段１ｂは、記憶部１ａを備えた装置からネットワーク経由で、順序情報を取得するようにすればよい。また、ソフトウェア管理装置１は、コンピュータに所定のソフトウェア管理プログラムを実行させることで実現してもよい。
【００２０】
ソフトウェア管理装置１によれば、予測手段１ｂが、情報処理装置２（または、複数の情報処理装置）におけるソフトウェア２ａの実行状況を監視する。予測手段１ｂが、ソフトウェア２ａの実行状況と、記憶部１ａに記憶された順序情報とに基づいて、情報処理装置３から次に要求されるソフトウェア２ｂを予測する。インストール手段１ｃが、情報処理装置２（または、複数の情報処理装置の少なくとも１つ）に、予測手段１ｂが予測したソフトウェア２ｂをインストールする。
【００２１】
これにより、複数のソフトウェアのうち情報処理装置３からの要求に応じたソフトウェアを実行する情報処理装置２（または、複数の情報処理装置）を効率的に運用することができる。すなわち、情報処理装置３から要求され得るソフトウェアの全てを、情報処理装置２（または、複数の情報処理装置）に予めインストールしなくてもよい。このため、用意する演算装置や記憶装置などの計算リソースを抑制することができる。また、情報処理装置３からソフトウェアの実行を要求される前に、要求されるソフトウェアを予測して少なくとも１つの情報処理装置にインストールしておくことができる。このため、要求から実行開始までの待ち時間を抑制することができる。
【００２２】
以下に説明する第２〜第４の実施の形態では、複数のサーバコンピュータを用いて、端末装置からの要求に応じたアプリケーションを実行する情報処理システムの例を示す。
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態に係る情報処理システムは、複数のサーバコンピュータ（以下、単にサーバということもある）で端末装置からの要求を受け付け、要求に応じたアプリケーションを実行する。第２の実施の形態では、主に、設計種別としてＰＣＢ（Printed Circuit Board）設計やＦＰＧＡ（Field Programmable Gate Array）設計などの回路設計に用いるツール群を実行する情報処理システムを想定する。ただし、それ以外の設計開発用のアプリケーションを実行するものであってもよい。例えば、プログラム開発やシステム開発などに用いるアプリケーションを実行するものでもよい。
【００２３】
第２の実施の形態の情報処理システムは、アプリケーション管理サーバ１００、実行サーバ２００，３００，４００、ストレージサーバ５００およびライセンスサーバ６００を含む。アプリケーション管理サーバ１００、実行サーバ２００，３００，４００、ストレージサーバ５００およびライセンスサーバ６００は、ネットワーク１０に接続されている。また、アプリケーション管理サーバ１００は、ネットワーク２０に接続されている。更に、端末装置２１，２２，２３がネットワーク２０に接続されている。
【００２４】
端末装置２１，２２，２３は、ユーザが操作するコンピュータである。端末装置２１，２２，２３は、アプリケーション管理サーバ１００を介して実行サーバ２００，３００，４００で実行されるアプリケーションに対して処理の実行を要求する。端末装置２１，２２，２３は、実行サーバ２００，３００，４００から要求に対する処理結果を受信する。
【００２５】
アプリケーション管理サーバ１００は、実行サーバ２００，３００，４００に対するアプリケーションのインストール・アンインストールを制御するサーバコンピュータである。また、アプリケーション管理サーバ１００は、端末装置２１，２２，２３から受け付けた要求を実行サーバ２００，３００，４００に送信する。アプリケーション管理サーバ１００は、実行サーバ２００，３００，４００からの応答を表示する画面情報を生成して端末装置２１，２２，２３に送信する。このように、端末装置２１，２２，２３はアプリケーション管理サーバ１００を介して実行サーバ２００，３００，４００で実行されるアプリケーションに所定の処理を実行させることができる。
【００２６】
実行サーバ２００，３００，４００は、アプリケーションを実行するサーバコンピュータである。ＯＳ（Operating System）として、実行サーバ２００では“ＯＳ−Ａ”が、実行サーバ３００，４００では“ＯＳ−Ｂ”が、それぞれ実行されるものとする。これらＯＳの構成の詳細は後述する。
【００２７】
ストレージサーバ５００は、実行サーバ２００，３００，４００にインストールするアプリケーションのプログラムを記憶する。
ライセンスサーバ６００は、実行サーバ２００，３００，４００にインストールするアプリケーションのライセンス管理を行う。具体的には、ライセンスサーバ６００は、実行サーバ２００，３００，４００にアプリケーションがインストールされるたびに該当サーバに対してプールしたライセンスの割り当てを行う。また、ライセンスサーバ６００は実行サーバ２００，３００，４００からアプリケーションがアンインストールされるたびに該当サーバへ割り当てたライセンスの割り当てを解除する。ライセンスサーバ６００は、ライセンスの割り当ておよび解除につきログを取得する。アプリケーション管理サーバ１００は、このログを参照することで、実行サーバ２００，３００，４００におけるアプリケーションの利用状況を把握できる。
【００２８】
図３は、実行サーバの構成を示す図である。実行サーバ２００は、ハードウェア層２１０、仮想化機構２２０およびＯＳ層２３０を有する。
ハードウェア層２１０は、実行サーバ２００が備えるハードウェア資源が属する階層である。
【００２９】
仮想化機構２２０は、実行サーバ２００上で仮想的に複数のコンピュータの機能を実現する。具体的には、実行サーバ２００上で複数のＯＳを実行する。その際、複数のＯＳがハードウェア層２１０上の資源を共同で利用できるよう各ＯＳのデバイスアクセスを調停する。実行サーバ２００上に実現される仮想的な複数のコンピュータを、以下では仮想マシンと呼ぶ。一方、実行サーバ２００，３００，４００は物理的なコンピュータであり、これを以下では物理マシンと呼ぶ。
【００３０】
ＯＳ層２３０は、仮想化機構２２０により実行サーバ２００上に実現されたＯＳが属する階層である。ＯＳ層２３０には、複数のＯＳ（例えば、ＯＳ２３１，２３２，２３３）が含まれる。ＯＳ２３１，２３２，２３３は、それぞれ独立しており個別にアプリケーションをインストールして利用できる。ＯＳ２３１，２３２，２３３は、同一のＯＳでもよいし、異なるＯＳでもよい。図３では、各ＯＳとも“ＯＳ−Ａ”である場合を例示している。各ＯＳはバージョンが異なっていてもよい。“ＯＳ−Ａ”は、例えばＷｉｎｄｏｗｓ（登録商標）である。
【００３１】
実行サーバ３００は、ハードウェア層３１０およびＯＳ層３２０を有する。ハードウェア層３１０は、実行サーバ３００が備えるハードウェア資源が属する階層である。
ＯＳ層３２０は、ハードウェア層３１０上に実現されたＯＳの階層である。ＯＳ層３２０には、単一のＯＳ（“ＯＳ−Ｂ”）が含まれる。実行サーバ３００は、当該ＯＳにアプリケーションをインストールして実行できる。“ＯＳ−Ｂ”は、例えばＬｉｎｕｘ（登録商標）、または、ＵＮＩＸ（登録商標）である。
【００３２】
実行サーバ４００は、ハードウェア層４１０およびＯＳ層４２０を有する。ハードウェア層４１０はハードウェア層３１０に対応する。ＯＳ層４２０は、ＯＳ層３２０に対応する。
【００３３】
ストレージサーバ５００は、アプリケーションプログラムを記憶する。アプリケーションプログラムは、仮想化機構２２０を有する実行サーバ２００および当該機構を有さない実行サーバ３００，４００のそれぞれに対して異なる構成のファイルとして格納されている。当該ファイルには仮想マシンイメージファイル５１０およびアーカイブファイル５２０が含まれる。
【００３４】
仮想マシンイメージファイル５１０は、実行サーバ２００にインストールするプログラムを格納したファイルである。仮想マシンイメージファイル５１０には、ＯＳイメージ５１１およびアプリケーションイメージ５１２が含まれる。
【００３５】
ＯＳイメージ５１１は、仮想化機構２２０上に実現するＯＳのプログラムである。アプリケーションイメージ５１２は、ＯＳイメージ５１１にインストールされたアプリケーションのイメージである。すなわち、仮想マシンイメージファイル５１０では、予めＯＳイメージ５１１にアプリケーションイメージ５１２がインストールされた状態となっている。仮想マシンイメージファイル５１０は、例えばＷｉｎｄｏｗｓのようにアプリケーションのインストール時にＯＳの設定情報（レジストリ）の更新を伴うＯＳに対して用いる場合に適している。なぜなら、予め稼働中のＯＳにアプリケーションをインストール／アンインストールする場合、そのたびにレジストリの更新が発生してＯＳの動作に影響を及ぼし得る。一方、仮想マシンイメージファイル５１０によりＯＳごとにアプリケーションのインストール／アンインストールを行えば、アプリケーションの利用開始時におけるレジストリの状態を所定の状態に保つことができるからである。
【００３６】
アーカイブファイル５２０は、実行サーバ３００，４００にインストールするプログラムを格納したファイルである。アーカイブファイル５２０には、アプリケーションファイル５２１が含まれる。アプリケーションファイル５２１は、アプリケーションプログラムや設定ファイルを含むファイルである。アーカイブファイル５２０は、例えばＬｉｎｕｘやＵＮＩＸのようにアプリケーションのインストールにレジストリの更新を伴わないＯＳに対して用いる。その場合、アーカイブファイルを、例えばＴＡＲ（Tape ARchive）やＴＡＺ（TAR Z）ファイルとして管理できる。ただし、実行サーバ２００のようにＯＳイメージにアプリケーションプログラムの内容を付加した仮想マシンイメージファイルを用いてインストール／アンインストールを行ってもよい。
【００３７】
図４は、アプリケーション管理サーバのハードウェア構成を示す図である。アプリケーション管理サーバ１００は、ＣＰＵ（Central Processing Unit）１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３、ＨＤＤ（Hard Disk Drive）１０４、グラフィック処理装置１０５、入力インタフェース１０６、記録媒体読取装置１０７および通信インタフェース１０８，１０８ａを有する。
【００３８】
ＣＰＵ１０１は、ＯＳプログラムやアプリケーションプログラムを実行して、アプリケーション管理サーバ１００全体を制御する。
ＲＯＭ１０２は、アプリケーション管理サーバ１００の起動時に実行されるＢＩＯＳ（Basic Input / Output System）プログラムなどの所定のプログラムを記憶する。ＲＯＭ１０２は、書き換え可能な不揮発性メモリであってもよい。
【００３９】
ＲＡＭ１０３は、ＣＰＵ１０１が実行するＯＳプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０３は、ＣＰＵ１０１の処理に用いられるデータの少なくとも一部を一時的に記憶する。
【００４０】
ＨＤＤ１０４は、ＯＳプログラムやアプリケーションプログラムを記憶する。また、ＨＤＤ１０４は、ＣＰＵ１０１の処理に用いられるデータを記憶する。なお、ＨＤＤ１０４に代えて（または、ＨＤＤ１０４と併せて）、ＳＳＤ（Solid State Drive）など他の種類の不揮発性の記憶装置を用いてもよい。
【００４１】
グラフィック処理装置１０５は、モニタ１１に接続される。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１に表示させる。
入力インタフェース１０６は、キーボード１２やマウス１３などの入力デバイスに接続される。入力インタフェース１０６は、入力デバイスから送られる入力信号をＣＰＵ１０１に出力する。
【００４２】
記録媒体読取装置１０７は、記録媒体１４に格納されたデータを読み取る読取装置である。記録媒体１４には、例えば、アプリケーション管理サーバ１００に実行させるプログラムが記録されている。アプリケーション管理サーバ１００は、例えば、記録媒体１４に記録されたアプリケーション管理プログラムを実行することで、後述するようなアプリケーション管理機能を実現することができる。すなわち、アプリケーション管理の処理内容を記述したプログラムは、コンピュータ読み取り可能な記録媒体１４に記録して配布することが可能である。
【００４３】
記録媒体１４としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−Ｒ／ＲＷ／ＲＡＭなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。半導体メモリには、ＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリがある。
【００４４】
通信インタフェース１０８，１０８ａは、ネットワーク１０，２０に接続される。通信インタフェース１０８は、ネットワーク１０を介して実行サーバ２００，３００，４００、ストレージサーバ５００およびライセンスサーバ６００とデータ通信を行える。また、通信インタフェース１０８ａは、ネットワーク２０を介して端末装置２１，２２，２３とデータ通信を行える。
【００４５】
なお、ネットワーク１０に接続された他のサーバ装置（図示せず）にアプリケーション管理プログラムを格納しておいてもよい。その場合、アプリケーション管理サーバ１００は、当該サーバ装置からプログラムをダウンロードして実行することもできる。
【００４６】
端末装置２１，２２，２３、実行サーバ２００，３００，４００、ストレージサーバ５００およびライセンスサーバ６００もアプリケーション管理サーバ１００と同様のハードウェア構成により実現できる。
【００４７】
図５は、アプリケーション管理サーバの機能を示すブロック図である。アプリケーション管理サーバ１００は、管理データ記憶部１１０、ログデータ記憶部１２０、ポータル管理部１３０、利用状況管理部１４０、インストール制御部１５０およびアプリ管理部１６０を有する。これらのユニットの機能は、ＣＰＵ１０１がアプリケーション管理プログラムを実行することにより、アプリケーション管理サーバ１００上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【００４８】
管理データ記憶部１１０は、提供可能なアプリケーションを管理するためのアプリケーション管理テーブルを記憶する。アプリケーション管理テーブルは、各アプリケーションに対応付けて、そのバージョンや利用可能ＯＳ、インストール先およびインストールのための実行コマンド等を示す情報を含む。管理データ記憶部１１０は、所定の設計種別の各ステップで一般に用いられるアプリケーションの利用順序を定義した設計ステップ定義テーブルを記憶する。
【００４９】
ログデータ記憶部１２０は、各設計種別に含まれるアプリケーションのインストール状況を記録した利用実績管理テーブルを記憶する。利用実績管理テーブルには、アプリケーション名、バージョンおよびインストール先マシン等を識別するための情報が設定される。
【００５０】
ポータル管理部１３０は、端末装置２１，２２，２３に対してアプリケーションの選択を受け付けるためのポータル画面を提供する。ポータル画面の提供開始の際、ポータル管理部１３０はユーザのユーザＩＤおよびパスワードを受け付けてユーザ認証を行う。ユーザ認証は、個人単位で行ってもよいし、プロジェクト単位で行ってもよい。ポータル管理部１３０は、メニュー生成部１３１およびアプリ起動部１３２を有する。
【００５１】
メニュー生成部１３１は、設計種別、アプリケーション、アプリケーションのバージョンおよびＯＳ等の選択画面を生成して端末装置２１，２２，２３に提供する。
アプリ起動部１３２は、メニュー生成部１３１が生成した選択画面によって選択されたアプリケーションのインストール指示／起動指示を受け付ける。なお、起動とは、実行サーバ２００，３００，４００にインストール済みのアプリケーションを実行状態にさせることを示す。アプリ起動部１３２は、インストール指示を受け付けた場合、当該インストール指示をインストール制御部１５０に出力する。アプリ起動部１３２は、起動指示を受け付けた場合、実行サーバ２００，３００，４００にインストール済みのアプリケーションを起動させる。
【００５２】
利用状況管理部１４０は、実行サーバ２００，３００，４００にインストール中のアプリケーションの利用状況を管理する。利用状況管理部１４０は、利用実績集計部１４１および所要予測部１４２を有する。
【００５３】
利用実績集計部１４１は、ライセンスサーバ６００から実行サーバ２００，３００，４００に対するアプリケーションのライセンス割り当て状況を取得する。利用実績集計部１４１は、当該アプリケーションをどのユーザが利用しているか、どれ程の時間利用されたか、などの具体的な利用状況を実行サーバ２００，３００，４００から取得する。利用実績集計部１４１は、取得した情報に基づいて、ログデータ記憶部１２０に格納された利用実績管理テーブルの設定を行う。
【００５４】
所要予測部１４２は、管理データ記憶部１１０に格納された設計ステップ定義テーブルとログデータ記憶部１２０に格納された利用実績管理テーブルとを参照して、端末装置２１，２２，２３から次に要求されるアプリケーションを予測する。所要予測部１４２は、予測したアプリケーションのインストール指示をインストール制御部１５０に出力する。
【００５５】
インストール制御部１５０は、実行サーバ２００，３００，４００に対するアプリケーションのインストール／アンインストールを制御する。インストール制御部１５０は、要求受付部１５１、実行環境追加部１５２および実行環境削除部１５３を有する。
【００５６】
要求受付部１５１は、アプリ起動部１３２または所要予測部１４２からインストール指示を受け付けると、管理データ記憶部１１０に格納されたアプリケーション管理テーブルを参照して、アプリケーションをインストールするサーバを特定する。要求受付部１５１は、特定したサーバを実行環境追加部１５２に出力する。
【００５７】
実行環境追加部１５２は、管理データ記憶部１１０に格納されたアプリケーション管理テーブルを参照して、実行サーバ２００，３００，４００に対するアプリケーションのインストールを行う。例えば、“ＯＳ−Ａ”にアプリケーションをインストールする場合、実行サーバ２００に仮想マシンイメージファイル５１０を実行させる。これにより、実行サーバ２００上に“ＯＳ−Ａ”および指定されたアプリケーションがインストールされる。また、“ＯＳ−Ｂ”にアプリケーションをインストールする場合、実行サーバ３００または実行サーバ４００にアーカイブファイル５２０を所定のディレクトリにコピー・展開させる。これにより、実行サーバ３００，４００に指定されたアプリケーションがインストールされる。
【００５８】
実行環境削除部１５３は、実行サーバ２００，３００，４００にアプリケーションのアンインストールを指示する。実行環境削除部１５３は、実行サーバ２００，３００，４００や実行サーバ２００上の仮想マシンの負荷に基づいて、アンインストール対象のアプリケーションを特定する。
【００５９】
アプリ管理部１６０は、ストレージサーバ５００に格納されたアプリケーションのプログラムの情報を管理データ記憶部１１０に格納されたアプリケーション管理テーブルに登録する。システム管理者は、ストレージサーバ５００に新たなアプリケーションのプログラムを格納した場合、アプリ管理部１６０を介して当該プログラムの情報を管理データ記憶部１１０に格納されたアプリケーション管理テーブルに反映させることができる。
【００６０】
図６は、アプリケーション管理テーブルのデータ構造例を示す図である。アプリケーション管理テーブル１１１は、管理データ記憶部１１０に格納される。
アプリケーション管理テーブル１１１には、項番、名称、バージョン、ＯＳ、インストール先マシンおよび実行コマンドの項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、アプリケーション管理テーブル１１１の１つのレコードを構成する。項番の項目は、レコードの識別番号が設定される。名称の項目には、アプリケーションの名称が設定される。バージョンの項目には、アプリケーションのバージョンが設定される。ＯＳの項目には、ＯＳの名称が設定される。インストール先マシンの項目には、インストール先マシンを識別する情報が設定される。インストール先マシンの項目には、更に、物理マシンおよび仮想マシンの項目が設けられている。物理マシンの項目には、実行サーバ２００，３００，４００を識別する情報が設定される。仮想マシンの項目には、仮想マシンを識別する情報が設定される。実行コマンドの項目には、アプリケーションを実行するコマンドが設定される。
【００６１】
例えば、アプリケーション管理テーブル１１１には、項番が“１”、名称が“ＡＰＰ１”、バージョンが“１．０”、ＯＳが“ＯＳ−Ａ”、インストール先マシン（物理マシン）が“ハイフン（−）”、インストール先マシン（仮想マシン）が“ハイフン（−）”、実行コマンドが“ハイフン（−）”という情報が設定される。
【００６２】
これは、“ＯＳ−Ａ”に対応したアプリケーション名“ＡＰＰ１”、バージョン“１．０”のアプリケーションのプログラムがストレージサーバ５００に格納済みであることを示している。インストール先マシンおよび実行コマンドの“ハイフン（−）”は、当該項目が未設定であることを示しており、そのアプリケーションが何れのサーバにもインストールされていないことを示している。
【００６３】
また、例えば、アプリケーション管理テーブル１１１には、項番が“３”、名称が“ＡＰＰ１”、バージョンが“３．０”、ＯＳが“ＯＳ−Ａ”、インストール先マシン（物理マシン）が“ＳＶ１”、インストール先マシン（仮想マシン）が“ＶＭ１”、“ＶＭ２”、実行コマンドが“／ｄａｔａ／ＯＳ−Ａ／ｖｍ−ａｐｐ１＿３．０．ｅｘｅ”という情報が設定される。
【００６４】
これは、“ＯＳ−Ａ”に対応したアプリケーション名“ＡＰＰ１”、バージョン“３．０”のアプリケーションのプログラムがストレージサーバ５００に格納済みであることを示している。また、このアプリケーションが物理マシン“ＳＶ１”で示される実行サーバ２００にインストール済みであることを示している。更に、インストールされている仮想マシンが“ＶＭ１”、“ＶＭ２”であることを示している。実行コマンド“／ｄａｔａ／ＯＳ−Ａ／ｖｍ−ａｐｐ１＿３．０．ｅｘｅ”は各仮想マシン上でこのコマンドを実行することで、各仮想マシン上で“ＡＰＰ１”のバージョン“３．０”を実行状態にできることを示している。
【００６５】
更に、例えば、アプリケーション管理テーブル１１１には、項番が“１１”、名称が“ＡＰＰ１１”、バージョンが“４．０”、ＯＳが“ＯＳ−Ｂ”、インストール先マシン（物理マシン）が“ＳＶ２”、“ＳＶ３”、インストール先マシン（仮想マシン）が“ハイフン（−）”、実行コマンドが“／ｄａｔａ／ＯＳ−Ｂ／ａｐｐ１１＿４．０．ｅｘｅ”という情報が設定される。
【００６６】
これは、“ＯＳ−Ｂ”に対応したアプリケーション名“ＡＰＰ１１”、バージョン“４．０”のアプリケーションのプログラムがストレージサーバ５００に格納済みであることを示している。また、このアプリケーションが物理マシン“ＳＶ２”、“ＳＶ３”で示される実行サーバ３００，４００にインストール済みであることを示している。なお、実行サーバ３００，４００では仮想マシンが存在しないので、インストール先マシン（仮想マシン）には設定なし“ハイフン（−）”となる。実行コマンド“／ｄａｔａ／ＯＳ−Ｂ／ａｐｐ１１＿４．０．ｅｘｅ”は各物理マシン上でこのコマンドを実行することで、各物理マシン上で“ＡＰＰ１１”のバージョン“４．０”を実行状態にできることを示している。
【００６７】
図７は、設計ステップ定義テーブルのデータ構造例を示す図である。設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・は、管理データ記憶部１１０に格納される。以下の説明では、設計ステップ定義テーブル１１２のデータ構造例を説明するが、設計ステップ定義テーブル１１２ａ，１１２ｂ，・・・のデータ構造も設計ステップ定義テーブル１１２と同様である。
【００６８】
設計ステップ定義テーブル１１２には、設計種別、順序および名称の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、設計ステップ定義テーブル１１２の１つのレコードを構成する。設計種別の項目には、設計ツールの名称が設定される。順序の項目には、アプリケーションの利用順を示す番号が設定される。名称の項目には、アプリケーションの名称が設定される。
【００６９】
例えば、設計ステップ定義テーブル１１２には、設計種別が“ＰＣＢ設計”、順序が“１”、名称が“ＡＰＰ１”という情報が設定される。これは、設計ステップ定義テーブル１１２がＰＣＢ設計に関する定義情報であることを示している。なお、順序“１”は、最初に実行されるアプリケーションであることを示す。順序“２”は、順序“１”の次に実行されるアプリケーションであることを示す。順序“３”は、順序“２”の次に実行されるアプリケーションであることを示す。以下、順序“４”以降に関しても同様である。
【００７０】
図８は、利用実績管理テーブルのデータ構造例を示す図である。利用実績管理テーブル１２１は、ログデータ記憶部１２０に格納される。利用実績管理テーブル１２１には、ユーザＩＤ（IDentifier）、名称、バージョン、ＯＳ、物理マシン、仮想マシン、利用開始日時、最終利用日時、実行回数および実行時間の項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、利用実績管理テーブル１２１の１つのレコードを構成する。
【００７１】
ユーザＩＤの項目には、ユーザを識別する識別情報が設定される。名称の項目には、アプリケーションの名称が設定される。バージョンの項目には、アプリケーションのバージョンが設定される。ＯＳの項目には、ＯＳの名称が設定される。物理マシンの項目には、実行サーバ２００，３００，４００を識別する情報が設定される。仮想マシンの項目には、仮想マシンを識別する情報が設定される。利用開始日時の項目には、アプリケーションの利用を開始した日時が設定される。最終利用日時の項目には、アプリケーションの利用を最後に終了した日付が設定される。実行回数の項目には、所定期間中（例えば、直近一週間）にアプリケーションを実行した回数が設定される。実行時間の項目には、所定期間中（例えば、直近一週間）にアプリケーションを実行した時間が設定される。
【００７２】
例えば、利用実績管理テーブル１２１には、ユーザＩＤが“Ｕ００１”、名称が“ＡＰＰ１”、バージョンが“３．０”、ＯＳが“ＯＳ−Ａ”、物理マシンが“ＳＶ１”、仮想マシンが“ＶＭ１”、利用開始日時が“２０１０／８／１  ９：００：００”、最終利用日時が“２０１０／８／３  １５：００：００”、実行回数が“５”、実行時間が“１０Ｈ（Hours）”という情報が設定される。
【００７３】
これは、ユーザＩＤ“Ｕ００１”のユーザがアプリケーション“ＡＰＰ１”のバージョン“３．０”を起動させたことを示している。当該アプリケーションがインストールされているのは物理マシン“ＳＶ１”で示される実行サーバ２００上の仮想マシン“ＶＭ１”であり、ＯＳが“ＯＳ−Ａ”であることを示している。また、当該アプリケーションの利用開始日時が２０１０年８月１日９時０分０秒であり、最終利用日時が２０１０年８月３日１５時０分０秒であることを示している。更に、所定期間中の実行回数が５回であることを示している。同様に、所定期間中の実行時間が１０時間であることを示している。
【００７４】
また、例えば、利用実績管理テーブル１２１には、ユーザＩＤが“Ｕ００２”、名称が“ＡＰＰ１１”、バージョンが“４．０”、ＯＳが“ＯＳ−Ｂ”、物理マシンが“ＳＶ２”、仮想マシンが“ハイフン（−）”、利用開始日時が“２０１０／８／２  ９：００：００”、最終利用日時が“２０１０／８／１０  １５：００：００”、実行回数が“７”、実行時間が“１５Ｈ”という情報が設定される。
【００７５】
これは、ユーザＩＤ“Ｕ００２”のユーザがアプリケーション“ＡＰＰ１１”のバージョン“４．０”を利用していることを示している。当該アプリケーションがインストールされているのは物理マシン“ＳＶ２”で示される実行サーバ３００であり、ＯＳが“ＯＳ−Ｂ”であることを示している。また、当該アプリケーションの利用開始日時が２０１０年８月２日９時０分０秒であり、終了日が２０１０年８月１０日１５時０分０秒であることを示している。更に、所定期間中の実行回数が７回であることを示している。同様に、所定期間中の実行時間が１５時間であることを示している。
【００７６】
利用実績集計部１４１は、実行サーバ２００，３００，４００によるアプリケーションのユーザごとの起動履歴やライセンスサーバ６００によるライセンスの割り当て履歴を参照して、利用実績管理テーブル１２１の各項目の情報を取得することができる。
【００７７】
例えば、利用実績集計部１４１は、実行サーバ２００上の複数の“ＯＳ−Ａ”が生成するアプリケーションの起動／停止の履歴を仮想マシンごとに取得する。すると、この起動／停止の履歴により、“ＡＰＰ１”の利用開始日時、最終利用日時、実行回数および実行時間を取得できる。具体的には、最初に起動した日時が利用開始日時に相当する。最後に終了した日時が最終利用日時に相当する。また、所定期間中に起動した回数が実行回数に相当する。また、所定期間中の起動状態の累積時間が実行時間に相当する。
【００７８】
また、利用実績集計部１４１は、ライセンスサーバ６００上のライセンスの割り当て履歴から、実行サーバ２００，３００，４００にライセンスの割り当てが行われた日時を取得して、利用開始日時を取得することもできる。
【００７９】
なお、各情報は“ＡＰＰ１”が生成する同様のログから取得してもよい。また、利用実績集計部１４１は、実行サーバ３００，４００上の“ＯＳ−Ｂ”あるいはアプリケーション自体が生成するアプリケーションの起動／停止の履歴を取得することで、“ＡＰＰ１１”等についても同様に実行回数や実行時間を取得できる。
【００８０】
図９は、アプリケーション選択画面の例を示す図である。アプリケーション選択画面７００は、設計種別ごとにメニュー生成部１３１によって生成され、端末装置２１，２２，２３に提供される。メニュー生成部１３１は、アプリケーション選択画面７００の前段に更に設計種別の一覧を表示したメニュー画面を設けて、何れの設計種別のアプリケーション選択画面７００を生成するかユーザに選択させる。アプリケーション選択画面７００は、設計種別がＰＣＢ設計である場合を例示している。アプリケーション選択画面７００は、アプリケーションリスト表示部７１０を有する。
【００８１】
アプリケーションリスト表示部７１０は、情報処理システムが提供するアプリケーションの一覧を表示する領域である。アプリケーションリスト表示部７１０には、例えば、機能分類、アプリケーション名および機能概要が表示される。アプリケーション名には、アプリケーションの名称がポインタＰ１によって選択可能となっている。ユーザは、端末装置２１，２２，２３のポインティングデバイスを操作して、所望のアプリケーションを選択できる。メニュー生成部１３１は、選択入力を受け付けると、当該アプリケーション名に設定されたリンクに基づいて、バージョン選択画面を生成する。
【００８２】
図１０は、バージョン選択画面の例を示す図である。バージョン選択画面８００は、メニュー生成部１３１によって生成され、端末装置２１，２２，２３に提供される。バージョン選択画面８００は、バージョンリスト表示部８１０を有する。
【００８３】
バージョンリスト表示部８１０は、アプリケーション選択画面７００で選択されたアプリケーションにつき提供可能なバージョンの一覧を表示する領域である。バージョンリスト表示部８１０には、例えば、版数、バージョン、ＯＳが表示される。
【００８４】
版数は、各バージョンの更新状況を示す情報が表示される。最新版のバージョンには“最新版”が表示されている。最新版よりも１版古いバージョンには“−１版”が表示されている。最新版よりも２版古いバージョンには“−２版”が表示されている。“−３版”以降の表示も同様である。
【００８５】
バージョンには、アプリケーションのバージョンを示す番号が表示されている。ＯＳには、対応ＯＳが二重丸印“◎”、丸印“○”、ハイフン“−”の記号によって表示されている。
【００８６】
二重丸印は、当該バージョンにつき既に実行サーバ２００，３００，４００の何れかにインストール済みであることを示している。丸印は、当該バージョンにつき実行サーバ２００，３００，４００の何れかに未インストールではあるが、インストール後に提供可能であることを示している。ハイフンは、そのアプリケーションのそのバージョンが未対応のＯＳであり、提供対象でないことを示している。
【００８７】
二重丸印および丸印は、ポインタＰ１によって選択可能となっている。ユーザは、端末装置２１，２２，２３のポインティングデバイスを操作して、所望のバージョンおよびＯＳに対応する二重丸印または丸印を選択できる。アプリ起動部１３２には、二重丸印が選択されると、対応するアプリケーションの当該バージョンの起動を実行サーバ２００，３００，４００に指示する。アプリ起動部１３２は、丸印が選択されると、対応するアプリケーションの当該バージョンのインストール指示をインストール制御部１５０に出力する。そして、アプリ起動部１３２はインストール制御部１５０からインストールが完了した旨の通知を受けると、インストールしたアプリケーションの当該バージョンの起動を実行サーバ２００，３００，４００に指示する。
【００８８】
このため、二重丸印を選択した場合には、丸印を選択した場合に比べてインストールの処理がない。よって、ユーザがアプリケーションを利用可能となるまでの時間が早い。
なお、第２の実施の形態では、“ＯＳ−Ａ”と“ＯＳ−Ｂ”の２種類のＯＳを選択できるものとしているが、３種類以上のＯＳを選択可能としてもよい。例えば、“ＯＳ−Ｃ”、“ＯＳ−Ｄ”、・・・と更に複数のＯＳも提供可能であれば、メニュー生成部１３１はバージョンリスト表示部８１０に各ＯＳの欄を設けて、提供状況を表示する。また、各ＯＳに異なるバージョンがある場合は、ＯＳのバージョンも選択可能としてもよい。例えば、“ＯＳ−Ａ”に複数のバージョンがある場合には、メニュー生成部１３１はバージョンリスト表示部８１０の“ＯＳ−Ａ”の欄を更に細分化してバージョンごとの提供状況を表示する。
【００８９】
また、インストール済み／未インストールのアプリケーションを区別して表示する方法は、上記の方法に限らず種々の方法を採れる。例えば、インストール済みのアプリケーションを所定の色（例えば、青）で表示し、未インストールのアプリケーションをそれよりも薄い色（例えば、灰色）で表示してもよい。
【００９０】
ここで、ユーザがＯＳ・バージョンを指定して開発ツールを利用可能とするのは次の理由による。第１の理由は、例えば以前設計した回路の改良版（リメイク）を、前に作成したデータを用いて設計したい場合に、異なるＯＳ・バージョンの開発ツールでは操作性も異なることが多く効率的に作業を行えないためである。第２の理由は、異なるＯＳ・バージョンの開発ツールでは前に作成したデータを流用できない場合があるからである。
【００９１】
なお、開発ツールのバージョンは所定期間毎（例えば１年に１回程度〜１年に４回程度）に更新される可能性がある。そのため、ストレージサーバ５００には、開発サイクルを考慮して各開発ツールにつき複数のバージョンを用意しておく。用意するバージョンとしては、例えば１０版程度（最新版〜−９版）が好ましい。
【００９２】
次に、以上の構成のアプリケーション管理サーバ１００の処理手順を説明する。
図１１は、第２の実施の形態のアプリケーション予測処理を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００９３】
（ステップＳ１１）所要予測部１４２は、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１を参照して、アプリケーションを利用中のユーザを選択する。アプリケーションを利用中であるか否かは、例えば利用実績管理テーブル１２１の実行回数の設定により判定できる。すなわち、実行回数の項目が０よりも大きければ、直近の所定期間中（例えば、１週間）に対応するユーザがアプリケーションを利用中であると判断できる。一方、実行回数の項目が０であれば、そのレコードに対応するアプリケーションは利用中ではないと判断できる。
【００９４】
（ステップＳ１２）所要予測部１４２は、ステップＳ１１で選択したユーザが現在の設計種別において、何れの設計ステップにあるかを確認する。具体的には、所要予測部１４２は、利用実績管理テーブル１２１を参照して、選択したユーザに対応するアプリケーション名およびバージョンを特定する。例えば、所要予測部１４２は、利用実績管理テーブル１２１に基づいて、ユーザＩＤ“Ｕ００１”に対応するアプリケーション名“ＡＰＰ１”を特定する。
【００９５】
（ステップＳ１３）所要予測部１４２は、アプリケーション名をキーとして、管理データ記憶部１１０に格納された設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・を参照し、現ステップの次ステップの有無を判定する。次ステップがある場合、処理をステップＳ１４に進める。次ステップがない場合、処理をステップＳ１７に進める。例えば、所要予測部１４２は、設計ステップ定義テーブル１１２に基づいて、“ＡＰＰ１”が設計種別“ＰＣＢ設計”において順序“１”であると特定する。そして、所要予測部１４２は、順序“１”の次の順序“２”に対応するアプリケーション“ＡＰＰ２”があると判定する。一方、次ステップがないと判定される場合とは、設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・に定義された最後のステップに対応するアプリケーションがステップＳ１２で特定された場合である。設計ステップ定義テーブル１１２では、“ＡＰＰ３”が特定された場合が次ステップのない場合に該当する。
【００９６】
（ステップＳ１４）所要予測部１４２は、ステップＳ１３で特定した次ステップのアプリケーションのバージョンを特定する。具体的には、所要予測部１４２はステップＳ１２で特定したアプリケーション（直前のステップのアプリケーション）と同一バージョンとする。所要予測部１４２は、管理データ記憶部１１０に格納されたアプリケーション管理テーブル１１１を参照して、特定したバージョンの次ステップのアプリケーションが未インストールであるか否かを判定する。未インストールである場合、処理をステップＳ１５に進める。インストール済みである場合、処理をステップＳ１７に進める。なお、現ステップのアプリケーションが複数利用されている場合もある。その場合、所要予測部１４２は、現ステップで利用中のアプリケーションの数だけ次ステップのアプリケーションがインストールされているかを判定する。次ステップのアプリケーションに不足があれば、不足する数の分だけ未インストールであると判定して、処理をステップＳ１５に進める。
【００９７】
（ステップＳ１５）所要予測部１４２は、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１を参照して、当該ユーザが現ステップのアプリケーションの利用開始日時から所定時間Ｔが経過しているかを判定する。経過している場合、処理をステップＳ１６に進める。経過していない場合、処理をステップＳ１７に進める。なお、Ｔの値は、システムの運用状況に応じて適宜決定できる。また、ユーザが利用開始した直後にインストールを行う場合には、Ｔ＝０とする。
【００９８】
（ステップＳ１６）所要予測部１４２は、ステップＳ１３で特定した次ステップのアプリケーションのインストール指示をインストール制御部１５０に出力する。インストール指示には、ＯＳ、アプリケーション、バージョンおよび追加数量を指定する情報が含まれる。所要予測部１４２は、これらの情報をアプリケーション管理テーブル１１１から取得できる。また、追加数量は、ステップＳ１４で不足すると判断された数量である。
【００９９】
（ステップＳ１７）所要予測部１４２は、全ユーザについて処理を行ったかを判定する。全ユーザについて処理済みの場合、処理を完了する。未処理のユーザが存在する場合には、現在選択中のユーザを処理済みとして、処理をステップＳ１１に進める。
【０１００】
このようにして、所要予測部１４２は、現在利用されているアプリケーションの次に利用されるアプリケーションを設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・により特定して、特定したアプリケーションのインストール指示を出力する。
【０１０１】
所要予測部１４２は、ユーザによるアプリケーションの利用開始日時に基づいて、インストール指示の出力タイミングを制御することで、ユーザが実際に次のアプリケーションの利用を開始するまでに当該アプリケーションが利用されない期間を短縮できる。
【０１０２】
なお、ステップＳ１５におけるＴの値は、現ステップのアプリケーション若しくは次ステップのアプリケーション、またはこれらの組み合わせごとに異なる値を設定して管理データ記憶部１１０に格納しておくこともできる。このようにすれば、開発ステップに時間を要するアプリケーションと時間を要しないアプリケーションとを考慮してインストールのタイミングを制御できる。
【０１０３】
また、アプリケーションの利用開始を検知したタイミングで本アプリケーション予測処理を実行し、現ステップのアプリケーションの利用開始の直後に次ステップのアプリケーションをインストールしてもよい。
【０１０４】
図１２は、インストール処理を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
（ステップＳ２１）要求受付部１５１は、所要予測部１４２が出力したインストール指示を受け付ける。
【０１０５】
（ステップＳ２２）要求受付部１５１は、管理データ記憶部１１０に格納されたアプリケーション管理テーブル１１１を参照して、インストール対象とする実行サーバを特定する。例えば、“ＯＳ−Ａ”に対する“ＡＰＰ２”のバージョン“３．０”のインストール指示を受け付けると、“ＯＳ−Ａ”を利用可能な実行サーバ２００をインストール対象として特定する。要求受付部１５１は、インストール指示と、インストール先の実行サーバとを実行環境追加部１５２に出力する。なお、“ＯＳ−Ｂ”については、当該ＯＳを利用可能な実行サーバが複数存在する。この場合、各実行サーバに負荷分散してインストール先マシンを特定する。例えば、要求受付部１５１は現状の各実行サーバのＣＰＵ負荷やインストール済みアプリケーション数等を取得し、これらが均等になるよう、インストール先マシンを特定する。
【０１０６】
（ステップＳ２３）実行環境追加部１５２は、要求受付部１５１からインストール指示を受け付ける。実行環境追加部１５２は、インストール先のＯＳの種別を判定する。“ＯＳ−Ａ”である場合、処理をステップＳ２４に進める。“ＯＳ−Ｂ”である場合、処理をステップＳ２５に進める。
【０１０７】
（ステップＳ２４）実行環境追加部１５２は、インストール対象のアプリケーションにつき、ストレージサーバ５００から仮想マシンイメージファイル５１０を取得する。そして、実行環境追加部１５２は、仮想マシンイメージファイル５１０により実行サーバ２００に“ＯＳ−Ａ”を追加する。例えば、“ＡＰＰ２”のバージョン“３．０”のインストール指示を受け付けている場合、実行サーバ２００上に“ＡＰＰ２”のバージョン“２．０”を含む“ＯＳ−Ａ”が追加される。これにより、“ＡＰＰ２”のバージョン“２．０”が実行サーバ２００上の仮想マシンにインストールされる。なお、新たに追加した“ＯＳ−Ａ”はインストールされた時点で実行状態とする。
【０１０８】
（ステップＳ２５）実行環境追加部１５２は、実行環境追加部１５２は、インストール対象のアプリケーションにつき、ストレージサーバ５００からアーカイブファイル５２０を取得する。そして、実行環境追加部１５２は、アーカイブファイル５２０を実行サーバ３００，４００上に展開する。これにより、指定されたバージョンのアプリケーションがが実行サーバ３００，４００にインストールされる。
【０１０９】
（ステップＳ２６）実行環境追加部１５２は、アプリケーション管理テーブル１１１に新たにインストールしたアプリケーションの情報を登録する。仮想マシンの識別情報については、例えば既存の識別情報をインクリメントして新たな識別情報を生成できる。また、追加したアプリケーションを実行するための実行コマンドを設定する。
【０１１０】
（ステップＳ２７）実行環境追加部１５２は、インストールが完了した旨を示す完了通知をポータル管理部１３０に出力する。
このようにして、要求受付部１５１および実行環境追加部１５２は、インストール先マシンを特定し、特定したインストール先マシンに対してアプリケーションのインストールを行う。
【０１１１】
図１３は、インストール処理の流れを示すシーケンス図である。以下、図１３に示す処理をステップ番号に沿って説明する。以下では、実行サーバ２００を例示して説明するが、実行サーバ３００，４００に関しても同様の流れである。
【０１１２】
（ステップＳＴ１０１）利用状況管理部１４０は、所定の周期でアプリケーション予測処理を行う。アプリケーション予測処理の詳細は、図１１で説明した通りである。その結果、利用状況管理部１４０は、“ＡＰＰ２”のバージョン“２．０”のインストール指示をインストール制御部１５０に出力する。インストール制御部１５０は、インストール指示を受け付ける。
【０１１３】
（ステップＳＴ１０２）インストール制御部１５０は、インストール指示に基づいて、実行サーバ２００に対する“ＡＰＰ２”のバージョン“２．０”のインストール処理を行う。インストール処理の詳細は、図１２で説明した通りである。インストール制御部１５０は、インストールが完了すると、管理データ記憶部１１０に格納されたアプリケーション管理テーブル１１１にインストールした“ＡＰＰ２”の情報を登録する。
【０１１４】
（ステップＳＴ１０３）インストール制御部１５０は、ポータル管理部１３０にアプリケーションのインストールが完了した旨を示す完了通知を出力する。ポータル管理部１３０は、完了通知を受け付けると、アプリケーション管理テーブル１１１を参照して以降に生成するバージョン選択画面８００に更新後の内容を反映させる。具体的には、メニュー生成部１３１は、新たにインストールした“ＡＰＰ２”のバージョン“２．０”につきバージョンリスト表示部８１０の丸印表示を二重丸印表示に変更する。
【０１１５】
このようにして、アプリケーション管理サーバ１００は、次に端末装置２１，２２，２３から要求されると予測されるアプリケーションを実行サーバ２００，３００，４００に予めインストールする。このため、ユーザが現在の開発ステップを完了して、次の開発ステップに進んだ際に、インストールに要する時間が省略されるので、次ステップのアプリケーションを即座に起動できる。
【０１１６】
図１４は、アプリケーション起動処理を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
（ステップＳ３１）メニュー生成部１３１は、バージョン選択画面８００を生成し、端末装置２１，２２，２３に提供する。アプリ起動部１３２は、バージョン選択画面８００に表示したアプリケーションのバージョンの選択入力を端末装置２１，２２，２３から受け付ける。なお、メニュー生成部１３１は、管理データ記憶部１１０に格納されたアプリケーション管理テーブル１１１を参照して、インストール済みのアプリケーションのバージョンに対して、バージョンリスト表示部８１０に二重丸印をリンク表示する。未インストールのアプリケーションのバージョンに対して、バージョンリスト表示部８１０に丸印をリンク表示する。
【０１１７】
（ステップＳ３２）アプリ起動部１３２は、未インストールのアプリケーションが選択されたか否かを判定する。未インストールのアプリケーションが選択された場合、処理をステップＳ３３に進める。インストール済みのアプリケーションが選択された場合、処理をステップＳ３５に進める。
【０１１８】
（ステップＳ３３）アプリ起動部１３２は、選択されたバージョンのアプリケーションのインストールを指示するインストール指示をインストール制御部１５０に出力する。インストール指示には、ＯＳ、アプリケーション、バージョンおよび追加本数を示す情報が含まれる。追加本数は、例えば一回の選択につき一本とする。なお、メニュー生成部１３１は、バージョン選択画面８００上に追加本数の入力を受け付けるフォームを表示させてもよい。インストール制御部１５０は、インストール指示を受け付けるとインストール処理を行う。インストール処理は、図１２で説明した通りである。
【０１１９】
（ステップＳ３４）アプリ起動部１３２は、インストール制御部１５０からアプリケーションのインストールが完了した旨を示す完了通知を受け付ける。インストール完了通知には、追加したアプリケーションを実行するための実行コマンドが含まれる。
【０１２０】
（ステップＳ３５）アプリ起動部１３２は、アプリケーション管理テーブル１１１を参照して、当該選択されたバージョンのアプリケーションがインストールされた実行サーバを特定する。そして、アプリ起動部１３２は、特定した実行サーバに実行コマンドを送信する。すると、当該実行サーバは実行コマンドを実行してアプリケーションを起動する。なお、複数の実行サーバに起動対象のアプリケーションがインストールされている場合、アプリ起動部１３２は各実行サーバで負荷分散されるように実行サーバを特定してもよい。例えば、アプリ起動部１３２は現状の各実行サーバのＣＰＵ負荷や実行中のアプリケーション数等を取得し、これらが均等になるよう、実行サーバを特定する。
【０１２１】
このようにして、アプリ起動部１３２は、ユーザによって選択されたアプリケーションを実行サーバ２００，３００，４００に起動させる。
次に、アプリケーション起動処理の流れの具体例を説明する。まず、実行サーバ２００に選択されたアプリケーションが既にインストールされている場合を説明する。
【０１２２】
図１５は、アプリケーション起動処理の流れを示す第１のシーケンス図である。以下、図１５に示す処理をステップ番号に沿って説明する。
（ステップＳＴ１１１）ポータル管理部１３０は、バージョン選択画面８００を端末装置２１に提供しているとする。バージョンリスト表示部８１０では、“ＯＳ−Ａ”に対して“ＡＰＰ１”のバージョン“５．０”がインストール済み（二重丸印）として表示されている。ポータル管理部１３０は、端末装置２１から“ＯＳ−Ａ”、“ＡＰＰ１”のバージョン“５．０”の選択を受け付ける。
【０１２３】
（ステップＳＴ１１２）ポータル管理部１３０は、“ＯＳ−Ａ”における“ＡＰＰ１”のバージョン“５．０”の実行コマンドを含む起動指示を実行サーバ２００に送信する。実行サーバ２００は、ポータル管理部１３０から起動指示を受信すると、実行コマンドにより当該アプリケーションの起動を行う。
【０１２４】
（ステップＳＴ１１３）実行サーバ２００は、“ＡＰＰ１”のバージョン“５．０”の起動が完了すると、その旨を示す起動応答をポータル管理部１３０に送信する。ポータル管理部１３０は、実行サーバ２００から起動応答を受信する。
【０１２５】
（ステップＳＴ１１４）ポータル管理部１３０は、“ＡＰＰ２”のバージョン“２．０”の操作画面を生成し、端末装置２１に提供する。ユーザが端末装置２１で画面操作すると、端末装置２１からアプリケーション管理サーバ１００を介して実行サーバ２００に操作内容が通知される。そして、実行サーバ２００により操作内容に応じた処理が実行されると、その実行結果がアプリケーション管理サーバ１００を介して端末装置２１に送信される。
【０１２６】
次に、実行サーバ３００，４００に選択されたアプリケーションが未インストールである場合を説明する。
図１６は、アプリケーション起動処理の流れを示す第２のシーケンス図である。以下、図１６に示す処理をステップ番号に沿って説明する。
【０１２７】
（ステップＳＴ１２１）ポータル管理部１３０は、バージョン選択画面８００を端末装置２１に提供しているとする。バージョンリスト表示部８１０では、“ＯＳ−Ｂ”、“ＡＰＰ１”のバージョン“４．０”が未インストール（丸印）として表示されている。ポータル管理部１３０は、端末装置２１から“ＯＳ−Ｂ”、“ＡＰＰ１”のバージョン“４．０”の選択を受け付ける。
【０１２８】
（ステップＳＴ１２２）ポータル管理部１３０は、インストール制御部１５０に“ＯＳ−Ｂ”に対する“ＡＰＰ１”のバージョン“４．０”のインストール指示をインストール制御部１５０に出力する。インストール制御部１５０は、ポータル管理部１３０からインストール指示を受け付ける。
【０１２９】
（ステップＳＴ１２３）インストール制御部１５０は、インストール指示に基づいて、例えば実行サーバ３００をインストール先に特定する。インストール制御部１５０は、実行サーバ３００に対する“ＡＰＰ１”のバージョン“４．０”のインストール処理を行う。インストール処理の詳細は図１２で説明した通りである。インストール制御部１５０は、インストールが完了すると、管理データ記憶部１１０に格納されたアプリケーション管理テーブル１１１に、インストールした“ＡＰＰ１”の情報を登録する。
【０１３０】
（ステップＳＴ１２４）インストール制御部１５０は、ポータル管理部１３０にアプリケーションのインストールが完了した旨を示す完了通知を出力する。ポータル管理部１３０は、完了通知を受け付けると、アプリケーション管理テーブル１１１を参照して以降に表示するバージョン選択画面８００に更新後の内容を反映させる。具体的には、メニュー生成部１３１は、“ＯＳ−Ｂ”に対して新たにインストールした“ＡＰＰ１”のバージョン“４．０”につきバージョンリスト表示部８１０の丸印表示を二重丸印表示に変更する。
【０１３１】
（ステップＳＴ１２５）ポータル管理部１３０は、完了通知を受け付けると、“ＡＰＰ１”のバージョン“４．０”の実行コマンドを含む起動指示を実行サーバ３００に送信する。実行サーバ３００は、ポータル管理部１３０から起動指示を受信すると、実行コマンドにより当該アプリケーションの起動を行う。
【０１３２】
（ステップＳＴ１２６）実行サーバ３００は、“ＡＰＰ１”のバージョン“４．０”の起動が完了すると、その旨を示す起動応答をポータル管理部１３０に送信する。ポータル管理部１３０は、実行サーバ３００から起動応答を受信する。
【０１３３】
（ステップＳＴ１２７）ポータル管理部１３０は、“ＡＰＰ１”のバージョン“４．０”の操作画面を生成し、端末装置２１に提供する。
このようにして、アプリケーション管理サーバ１００は、実行サーバ２００，３００，４００にユーザが選択したアプリケーションを起動させる。そして、アプリケーション管理サーバ１００は、当該アプリケーションの操作画面を生成して、端末装置２１，２２，２３に提供する。
【０１３４】
なお、インストールしたアプリケーションは、上述のようにインストール完了後に続けて起動する方法の他にも次のような起動方法が考えられる。すなわち、インストール完了後に、バージョンリスト表示部８１０の丸印表示を二重丸印表示に変更しておき、ユーザが改めて二重丸欄をクリックした後に当該アプリケーションを起動してもよい。
【０１３５】
図１５と図１６とを比較すると図１５では、図１６中のステップＳＴ１２２，ＳＴ１２３，ＳＴ１２４に対応する処理を省略できることが分かる。すなわち、アプリケーション管理サーバ１００は、アプリケーションが実行サーバ２００，３００，４００に予めインストールされていれば、インストール処理に対応するステップを省略して、アプリケーションの起動のためのステップを実行できる。このため、未インストールのアプリケーションを起動させる場合よりもアプリケーションの起動時間を早めることができる。
【０１３６】
以下では、アプリケーションをインストールする他の方法およびアプリケーションのアンインストールの方法について説明する。
まず、実行サーバ２００上の仮想マシンおよび実行サーバ３００，４００の負荷に基づくアプリケーションのインストールについて説明する。なお、以下では、各マシンという場合、実行サーバ２００上の仮想マシンおよび実行サーバ３００，４００を示すものとする。
【０１３７】
図１７は、アプリケーション負荷判定処理を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
（ステップＳ４１）所要予測部１４２は、実行サーバ２００上の各マシンの何れかを選択する。
【０１３８】
（ステップＳ４２）所要予測部１４２は、選択したマシンの負荷情報を取得する。所要予測部１４２は、管理データ記憶部１１０に格納された利用実績管理テーブル１２１を参照して、アプリケーションの実行回数や実行時間を負荷情報として取得する。
【０１３９】
（ステップＳ４３）所要予測部１４２は、取得した負荷情報に基づいて選択したマシンが高負荷状態であるか否かを判定する。高負荷状態である場合、処理をステップＳ４４に進める。高負荷状態でない場合、処理をステップＳ４５に進める。なお、高負荷状態であるか否かは、例えば負荷情報に含まれる実行回数や実行時間が予め決められた閾値よりも大きいか否かで判定できる。例えば、実行回数が“２０回”かつ実行時間“１００時間”以上の場合には、高負荷状態にあると判定できる。それ以外の場合には、高負荷状態にないと判定できる。閾値は、実行サーバの性能や運用状況によって適宜変更できる。
【０１４０】
（ステップＳ４４）所要予測部１４２は、ステップＳ４１で選択したマシンで実行されているＯＳ、アプリケーションおよびそのバージョンを特定する。例えば、実行サーバ２００上の仮想マシンを選択した場合、当該仮想マシンで実行しているＯＳ、アプリケーションおよびそのバージョンを特定する。また、例えば、実行サーバ３００上の仮想マシンを選択した場合、当該物理マシンで実行しているアプリケーションとそのバージョンを特定する。所要予測部１４２は、特定したＯＳ、アプリケーションおよびそのバージョンを含むインストール指示をインストール制御部１５０に出力する。
【０１４１】
（ステップＳ４５）所要予測部１４２は、全マシンについて処理を行ったかを判定する。全マシンについて処理済みの場合、処理を完了する。未処理のマシンが存在する場合には、現在選択中のマシンを処理済みとして、処理をステップＳ４１に進める。
【０１４２】
このようにして、所要予測部１４２は各マシンが高負荷状態である場合には、当該マシンにインストールされたアプリケーションのインストール指示をインストール制御部１５０に出力する。インストール制御部１５０は、インストール指示に基づいて、インストール対象とする実行サーバ２００，３００，４００を選択する。そして、選択したサーバに指示されたアプリケーションをインストールする。インストール処理の手順は図１２で説明した通りである。
【０１４３】
仮想マシンで高負荷状態が検知されれば、その仮想マシンで実行中のアプリケーションを含む別の仮想マシンが実行サーバ２００上に実現される。また、実行サーバ３００で高負荷状態が検知されれば、実行サーバ３００で実行中のアプリケーションが実行サーバ４００にインストールされる。なお、仮想マシンを利用可能なサーバが実行サーバ２００以外にも存在する場合には、実行サーバ２００自体の高負荷状態を検知して、他の実行サーバ上で別の仮想マシンを起動してもよい。
【０１４４】
更に、上記ステップＳ４４では、選択したマシンで実行されているＯＳと同じＯＳを特定して、インストール指示を出力するものとしたが、任意のＯＳを指定してインストール指示を出力してもよい。
【０１４５】
なお、所要予測部１４２は実行サーバ２００，３００，４００のＣＰＵ利用率やメモリ利用率等の負荷情報に基づいて、アプリケーションの追加要否を判断してもよい。その場合、例えばＣＰＵ利用率等が閾値を超えた期間に応じて高負荷状態を判断することが考えられる。
【０１４６】
図１８は、マシン負荷によるアプリケーション追加処理の流れを示すシーケンス図である。以下、図１８に示す処理をステップ番号に沿って説明する。以下では、実行サーバ２００を例示して説明するが、実行サーバ３００，４００に関しても同様の流れである。
【０１４７】
（ステップＳＴ１３１）利用状況管理部１４０は、所定の周期で実行サーバ２００上の仮想マシンの負荷を取得し、アプリケーション負荷判定処理を行う。アプリケーション負荷判定処理の詳細は、図１７で説明した通りである。その結果、利用状況管理部１４０は、当該仮想マシンが高負荷状態であると検知する。ここで、当該仮想マシンでは、“ＡＰＰ１”のバージョン“３．０”が実行中であるとする。
【０１４８】
（ステップＳＴ１３２）利用状況管理部１４０は、“ＯＳ−Ａ”に対する“ＡＰＰ１”のバージョン“３．０”のインストール指示をインストール制御部１５０に出力する。インストール制御部１５０は、インストール指示を受け付ける。
【０１４９】
（ステップＳＴ１３３）インストール制御部１５０は、インストール指示に基づいて、実行サーバ２００に対する“ＡＰＰ１”のバージョン“３．０”のインストール処理を行う。インストール処理の詳細は、図１２で説明した通りである。インストール制御部１５０は、インストール処理が完了すると、管理データ記憶部１１０に格納されたアプリケーション管理テーブル１１１にインストールした“ＡＰＰ１”の情報を登録する。
【０１５０】
（ステップＳＴ１３４）インストール制御部１５０は、ポータル管理部１３０にアプリケーションのインストールが完了した旨を示す完了通知を出力する。完了通知には、新たに追加した仮想マシンでインストールしたアプリケーションを起動させるための実行コマンドが含まれる。ポータル管理部１３０は、完了通知を受け付けると、アプリケーション管理テーブル１１１を参照して以降に生成するバージョン選択画面８００に更新後の内容を反映させる。例えば、バージョン選択画面８００のバージョンリスト表示部８１０において、“ＡＰＰ１”のバージョン“３．０”が選択された場合に、新たにインストールした仮想マシンで当該アプリケーションを起動させるよう二重丸印のリンクを更新することが考えられる。また、例えば、バージョン選択画面８００に当該アプリケーションを利用可能なマシン数やマシン候補を表示させる場合、これらの情報を更新することが考えられる。
【０１５１】
このようにして、アプリケーション管理サーバ１００は実行サーバ２００上の仮想マシンおよび実行サーバ３００，４００が高負荷である場合に、他のマシンへのアプリケーションのインストールを行う。更に、当該アプリケーションの起動が選択された場合には、新たにインストールしたマシンで、アプリケーションを起動させる。これにより、１つのマシンに対して負荷が過度に集中することを防止できる。このため、端末装置２１，２２，２３からの要求に対する応答遅延を軽減できる。
【０１５２】
次に、実行サーバ２００，３００，４００にインストールされたアプリケーションのアンインストール処理について説明する。
図１９は、アンインストール対象特定処理を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
【０１５３】
（ステップＳ５１）所要予測部１４２は、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１を参照して、処理対象のマシンを選択する。
（ステップＳ５２）所要予測部１４２は、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１を参照して、選択したマシンにおけるアプリケーションの利用状況を確認する。
【０１５４】
（ステップＳ５３）所要予測部１４２は、利用状況に基づいて、アンインストール可能なアプリケーションがあるか否かを判定する。アンインストール可能なアプリケーションがある場合には、処理をステップＳ５４に進める。アンインストール可能なアプリケーションが無い場合には、処理をステップＳ５５に進める。例えば、利用実績管理テーブル１２１において、実行回数および実行時間の両方または何れか一方の項目に０が設定されているアプリケーションは、所定期間中（例えば、直近１週間）に利用されていないと考えられる。このため、所要予測部１４２は、当該条件を満たすアプリケーションをアンインストール可能と判定できる。
【０１５５】
（ステップＳ５４）所要予測部１４２は、ステップＳ５３でアンインストール可能と判定したアプリケーションのアンインストール指示をインストール制御部１５０に出力する。アンインストール指示には、アンインストール対象のＯＳ、アプリケーション、そのバージョンおよびマシンを示す情報が含まれる。
【０１５６】
（ステップＳ５５）所要予測部１４２は、全マシンについて処理を行ったかを判定する。全マシンについて処理済みの場合、処理を完了する。未処理のマシンが存在する場合には、現在選択中のマシンを処理済みとして、処理をステップＳ５１に進める。
【０１５７】
このようにして、所要予測部１４２は各マシンについてアンインストールできるアプリケーションを特定し、アンインストール指示をインストール制御部１５０に出力する。
なお、上記ステップＳ５４において、アンインストール可能な全アプリケーションにつきアンインストール指示を出力してもよいし、負荷状況に応じて、アンインストール可能な一部のアプリケーションにつきアンインストール指示を出力してもよい。負荷状況に応じて、アンインストール指示を行うアプリケーションを変更する場合、現時点以降に利用される可能性の低いアプリケーションを選択することが望ましい。そのために、例えば、アンインストール可能なアプリケーションのうち最終利用日時が最も古いアプリケーションから優先的にアンインストール指示を行うことが考えられる。
【０１５８】
図２０は、アンインストール処理を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。
（ステップＳ６１）要求受付部１５１は、所要予測部１４２が出力したアンインストール指示を受け付ける。
【０１５９】
（ステップＳ６２）要求受付部１５１は、アンインストール指示によって指定されたアプリケーションをアンインストールする旨を示すアンインストール通知をポータル管理部１３０に出力する。ポータル管理部１３０は、アンインストール通知を受け付けると、当該アプリケーションの選択ができないようにバージョン選択画面８００を更新する。要求受付部１５１は、アンインストール指示を実行環境削除部１５３に出力する。
【０１６０】
（ステップＳ６３）実行環境削除部１５３は、アンインストール指示に含まれるアンインストール対象のＯＳの種別を判定する。“ＯＳ−Ａ”である場合、処理をステップＳ６４に進める。“ＯＳ−Ｂ”である場合、処理をステップＳ６５に進める。
【０１６１】
（ステップＳ６４）実行環境削除部１５３は、実行サーバ２００にアンインストール指示によって指示された仮想マシンの停止を指示する。すると、実行サーバ２００は、指定された仮想マシンを停止し、対応する仮想マシンイメージファイルを削除する。
【０１６２】
（ステップＳ６５）実行環境削除部１５３は、実行サーバ３００，４００からアンインストール指示によって指示されたアプリケーションのファイルを削除する。
このようにして、実行環境削除部１５３は所要予測部１４２のアンインストール指示により、各マシンのアプリケーションのアンインストールを行う。
【０１６３】
図２１は、アンインストール処理の流れを示すシーケンス図である。以下、図２１に示す処理をステップ番号に沿って説明する。以下では、実行サーバ２００を例示して説明するが、実行サーバ３００，４００に関しても同様の流れである。
【０１６４】
（ステップＳＴ１４１）利用状況管理部１４０は、所定の周期でアンインストール対象特定処理を行う。アンインストール対象特定処理の詳細は、図１９で説明した通りである。その結果、利用状況管理部１４０は、利用されていないと判断した“ＡＰＰ１”のバージョン“３．０”を仮想マシン“ＶＭ２”からアンインストールする旨を示すアンインストール指示をインストール制御部１５０に出力する。インストール制御部１５０は、アンインストール指示を受け付ける。
【０１６５】
（ステップＳＴ１４２）インストール制御部１５０は、仮想マシン“ＶＭ２”にインストールされた“ＡＰＰ１”のバージョン“３．０”についてアンインストールを行う旨を示す削除通知をポータル管理部１３０に出力する。ポータル管理部１３０は、削除通知を受け付ける。ポータル管理部１３０は、ユーザが当該アプリケーションを選択できないよう、バージョン選択画面８００を更新する。
【０１６６】
（ステップＳＴ１４３）インストール制御部１５０は、アンインストール指示に基づいて、仮想マシン“ＶＭ２”の停止指示を実行サーバ２００に送信する。実行サーバ２００は、停止指示を受け付けると、アンインストール処理を行う。アンインストール処理の詳細は図２０で説明した通りである。インストール制御部１５０は、実行サーバ２００に仮想マシン“ＶＭ２”を停止させ、当該仮想マシンイメージファイルを削除させる。
【０１６７】
（ステップＳＴ１４４）インストール制御部１５０は、ポータル管理部１３０にアプリケーションのアンインストールが完了した旨を示す完了通知を出力する。ポータル管理部１３０は、完了通知を受け付けると、アプリケーション管理テーブル１１１を参照して以降に生成するバージョン選択画面８００に更新後の内容を反映させる。具体的には、メニュー生成部１３１は、アンインストールした“ＡＰＰ１”のバージョン“３．０”につきバージョンリスト表示部８１０の二重丸印表示を丸印表示に変更して再び選択可能とする。ただし、当該アプリケーションをインストールしたマシンが他にも存在する場合には、バージョンリスト表示部８１０の表示は二重丸印表示のまま、再び選択可能とする。
【０１６８】
このようにして、アプリケーション管理サーバ１００はアンインストールしても問題ないと判断されるアプリケーションのアンインストールを行う。このため、実行サーバ２００，３００，４００上に無駄なアプリケーションがインストールされた状態を防止できる。
【０１６９】
このとき、アンインストール処理を実行する前にバージョン選択画面８００でアンインストール対象のアプリケーションの選択ができないようにする。このため、アンインストールを行うにも関わらず、該当マシンに対してアプリケーションの起動指示がなされる事態を防止できる。
【０１７０】
また、余分にインストールされたアプリケーションをアンインストールしていくことで、他のアプリケーションへ空いたリソースを割り当てることができる。このため、実行サーバ２００，３００，４００に対して、利用が予測されるアプリケーションをより多くインストールしておくことができ、アプリケーションの起動待ち時間を一層低減できる。
【０１７１】
更に、アンインストール作業では、対応する仮想マシンイメージファイルやアプリケーションのファイルを削除するものとしたが、例えば実行サーバ上あるいはアプリケーション管理サーバ１００上に各ファイルを圧縮または非圧縮の状態で退避させておいてもよい。その場合、次回インストール時にストレージサーバ５００を参照する必要がない。特に実行サーバ上に退避させておけば、実行サーバ上で当該ファイルを展開すればよいので、アプリケーションの利用開始までの時間を一層短縮できる。
【０１７２】
［第３の実施の形態］
以下、第３の実施の形態を図面を参照して詳細に説明する。前述の第２の実施の形態との相違点について主に説明し、同様の事項に関しては説明を省略する。
【０１７３】
第２の実施の形態では、管理データ記憶部１１０に格納された設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・に基づいて、次に利用が予測されるアプリケーションを特定して、そのアプリケーションを予めインストールしておくこととした。この場合、インストール後、そのアプリケーションの利用が開始されるまでの期間が短いことが望ましい。未だ使用されないアプリケーションに対してＣＰＵ、メモリおよびＨＤＤなどのリソースが過剰に割り当てられることを抑制して、リソースの効率的な利用を図るためである。そこで、第２の実施の形態では、利用開始日時によりインストールのタイミングを制御するものとした。
【０１７４】
第３の実施の形態では、ユーザから予めアプリケーションの利用計画を受け付け、利用計画を更に考慮して次のアプリケーションのインストールのより適切なタイミングを決定する。これにより、アプリケーションの利用が開始されるまでの期間の一層の短縮を図る。以下では、このような機能を実現するアプリケーション管理サーバについて詳細に説明する。
【０１７５】
なお、第３の実施の形態の情報処理システムの構成は、図２で説明した第２の実施の形態の情報処理システムの構成と同様であるため、説明を省略する。ただし、第３の実施の形態では、アプリケーション管理サーバ１００に代えてアプリケーション管理サーバ１００ａを設ける。アプリケーション管理サーバ１００ａのハードウェア構成は、図４で説明したアプリケーション管理サーバ１００のハードウェア構成と同様であるため、説明を省略する。
【０１７６】
図２２は、第３の実施の形態のアプリケーション管理サーバの機能を示すブロック図である。アプリケーション管理サーバ１００ａは、管理データ記憶部１１０、ログデータ記憶部１２０、ポータル管理部１３０ａ、利用状況管理部１４０ａ、インストール制御部１５０、アプリ管理部１６０および計画データ記憶部１７０を有する。これらのユニットの機能は、ＣＰＵ１０１がアプリケーション管理プログラムを実行することにより、アプリケーション管理サーバ１００ａ上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【０１７７】
ここで、管理データ記憶部１１０、ログデータ記憶部１２０、インストール制御部１５０およびアプリ管理部１６０の機能は、図５のアプリケーション管理サーバ１００において同一の符号を付して説明したユニットと同様であるため、説明を省略する。
【０１７８】
ポータル管理部１３０ａは、端末装置２１，２２，２３に対してアプリケーションの選択を受け付けるためのポータル画面を提供する。ポータル画面の提供開始の際、ポータル管理部１３０はユーザのユーザＩＤおよびパスワードを受け付けてユーザ認証を行う。ユーザ認証は、個人単位で行ってもよいし、プロジェクト単位で行ってもよい。ポータル管理部１３０は、メニュー生成部１３１、アプリ起動部１３２および計画受付部１３３を有する。ここで、メニュー生成部１３１およびアプリ起動部１３２は、図５で同一の符号を付して説明した各ユニットと同一である。
【０１７９】
計画受付部１３３は、端末装置２１，２２，２３からアプリケーションの利用計画を受け付ける。計画受付部１３３は、受け付けた利用計画を計画データ記憶部１７０に格納された利用計画テーブルに登録する。ここで、アプリケーションの利用計画には、例えばユーザが利用を予定しているアプリケーションとそのバージョン、ＯＳ、利用期間、数量等の情報が含まれる。
【０１８０】
利用状況管理部１４０ａは、実行サーバ２００，３００，４００にインストール中のアプリケーションの利用状況を管理する。利用状況管理部１４０ａは、利用実績集計部１４１および所要予測部１４２ａを有する。ここで、利用実績集計部１４１は、図５で同一の符号を付して説明したユニットと同一である。
【０１８１】
所要予測部１４２ａは、管理データ記憶部１１０に格納された設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・を参照して、端末装置２１，２２，２３から次に要求されるアプリケーションを予測する。また、所要予測部１４２ａは、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１および計画データ記憶部１７０に格納された利用計画テーブルを参照して、予測したアプリケーションをインストールするタイミングを決定する。所要予測部１４２ａは、アプリケーションのインストール指示を当該タイミングでインストール制御部１５０に出力する。
【０１８２】
計画データ記憶部１７０は、利用計画テーブルを記憶する。
図２３は、利用計画テーブルのデータ構造例を示す図である。利用計画テーブル１７１，１７２，１７３，・・・は、計画受付部１３３によって更新され、計画データ記憶部１７０に格納される。利用計画テーブル１７１，１７２，１７３，・・・は、ユーザごとに生成される。例えば、利用計画テーブル１７１はユーザ“Ｕ００１”の利用計画を示す。なお、以下では利用計画テーブル１７１の構成に関して説明するが、利用計画テーブル１７２，１７３，・・・に関しても同様の構成である。
【０１８３】
利用計画テーブル１７１には、設計種別、アプリ名、バージョン、ＯＳ、ユーザＩＤ、利用開始予定日時、利用完了予定日時および数量を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの利用計画レコードを構成する。
【０１８４】
設計種別の項目には、回路設計の種別が設定される。アプリ名の項目には、アプリケーションの名称が設定される。バージョンの項目には、アプリケーションのバージョンが設定される。ＯＳの項目には、ＯＳの名称が設定される。ユーザＩＤの項目には、ユーザの識別情報が設定される。利用開始予定日時の項目には、利用開始予定の日時が設定される。利用完了予定日時の項目には、利用完了予定の日時が設定される。数量の項目には、利用予定の数量が設定される。
【０１８５】
例えば、利用計画テーブル１７１には、設計種別が“ＰＣＢ設計”、アプリ名が“ＡＰＰ１”、バージョンが“３．０”、ＯＳが“ＯＳ−Ａ”、ユーザＩＤが“Ｕ００１”、利用開始予定日時が“２０１０／８／１  １０：００：００”、利用完了予定日時が“２０１０／８／５  １７：００：００”、数量が“２”という情報が設定される。
【０１８６】
これは、“Ｕ００１”で示されるユーザが、“ＰＣＢ設計”のために“ＯＳ−Ａ”をＯＳとしてアプリケーション“ＡＰＰ１”のバージョン“３．０”の利用を計画していることを示している。また、その利用開始予定日時が２０１０年８月１日１０時０分０秒であり、利用完了予定日時が２０１０年８月５日１７時０分０秒であることを示している。更に、利用を計画している当該アプリケーションの数が２つであることを示している。
【０１８７】
次に、以上の構成を備えるアプリケーション管理サーバ１００ａのアプリケーション予測処理の手順について説明する。それ以外の処理手順に関しては、第２の実施の形態で説明したアプリケーション管理サーバ１００の処理手順と同様であるため説明を省略する。
【０１８８】
図２４は、第３の実施の形態のアプリケーション予測処理を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。
（ステップＳ７１）所要予測部１４２ａは、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１を参照して、アプリケーションを利用中のユーザを選択する。アプリケーションを利用中であるか否かは、例えば利用実績管理テーブル１２１の実行回数の設定により判定できる。すなわち、実行回数の項目が０よりも大きければ、直近の所定期間（例えば、１週間）に対応するユーザがアプリケーションを利用中であると判断できる。一方、実行回数の項目が０であれば、そのレコードに対応するアプリケーションは利用中ではないと判断できる。
【０１８９】
（ステップＳ７２）所要予測部１４２ａは、計画データ記憶部１７０を参照して、選択したユーザに対応する利用計画テーブルを特定する。例えば、ユーザ“Ｕ００１”に対しては利用計画テーブル１７１を特定する。
【０１９０】
（ステップＳ７３）所要予測部１４２ａは、特定した利用計画テーブルを参照して、設計種別を特定する。所要予測部１４２ａは、特定した設計種別により、管理データ記憶部１１０に格納された設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・を参照し、現アプリケーションに対する次ステップのアプリケーションがあるか否かを判定する。次ステップのアプリケーションがある場合、処理をステップＳ７４に進める。次ステップのアプリケーションがない場合、処理をステップＳ７８に進める。例えば、利用計画テーブル１７１において、ユーザ“Ｕ００１”が利用中の“ＡＰＰ１”の設計種別は“ＰＣＢ設計”である。このため、所要予測部１４２ａは、設計種別“ＰＣＢ設計”により設計ステップ定義テーブル１１２を特定する。そして、“ＡＰＰ１”の次ステップのアプリケーションとして“ＡＰＰ２”があることを特定する。この場合、所要予測部１４２ａは、次ステップのアプリケーションがあると判定する。
【０１９１】
（ステップＳ７４）所要予測部１４２ａは、管理データ記憶部１１０に格納されたアプリケーション管理テーブル１１１を参照して、次ステップのアプリケーションのインストール済み数が指定された数量よりも小さいか否かを判定する。指定された数量よりも小さい場合、処理をステップＳ７５に進める。指定された数量以上である場合、処理をステップＳ７８に進める。例えば、利用計画テーブル１７１では次ステップのアプリケーションとして特定した“ＡＰＰ２”のバージョン“２．０”につき数量“２”が指定されている。この場合、所要予測部１４２ａは、“ＡＰＰ２”のバージョン“２．０”が２つ、インストール済みであるかを判定する。
【０１９２】
（ステップＳ７５）所要予測部１４２ａは、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１を参照して、当該ユーザが現ステップのアプリケーションの利用開始日時から所定時間Ｔが経過しているかを判定する。経過している場合、処理をステップＳ７６に進める。経過していない場合、処理をステップＳ７８に進める。
【０１９３】
（ステップＳ７６）所要予測部１４２ａは、次に利用が計画されているアプリケーションが利用開始間近であるか否かを判定する。間近である場合、処理をステップＳ７７に進める。間近ではない場合、処理をステップＳ７８に進める。利用開始間近であるか否かの判定は、例えば次のようにして行える。（１）所要予測部１４２ａは、利用計画テーブルを参照して次ステップのアプリケーションの利用開始予定日時を取得する。（２）所要予測部１４２ａは、利用実績管理テーブル１２１を参照して、現ステップのアプリケーション利用の前倒し／後倒し状況を取得する。例えば、現アプリケーションの実績の利用開始日時と利用計画テーブルにおける利用開始予定日時とを比較することで取得できる。（３）所要予測部１４２ａは、前倒し／後倒し状況により次ステップのアプリケーションの利用開始予定日時を補正する。そして、補正後の利用開始予定日時が間近であるかを判定する。ここで、間近であるとは、例えば現在日から補正後の利用開始予定日時までの期間が１日以内である場合である。
【０１９４】
（ステップＳ７７）所要予測部１４２ａは、次ステップのアプリケーションのインストール指示をインストール制御部１５０に出力する。インストール指示には、ＯＳ、アプリケーション、バージョンおよび数量を示す情報が含まれる。数量は、現在インストール済みの数量と利用計画テーブル１７１で指定された数量との差分である。
【０１９５】
（ステップＳ７８）所要予測部１４２ａは、全ユーザについて処理を行ったかを判定する。全ユーザについて処理済みの場合、処理を完了する。未処理のユーザが存在する場合には、選択中のユーザを処理済みとして、処理をステップＳ７１に進める。
【０１９６】
このようにして、所要予測部１４２ａは、現在利用されているアプリケーションの次に利用されるアプリケーションを利用計画テーブル１７１，１７２，１７３，・・・により特定して、特定したアプリケーションのインストール指示を出力する。インストール指示を受けたインストール制御部１５０のインストール処理の手順は、図１２で説明した手順と同様である。
【０１９７】
所要予測部１４２ａは、ユーザにより入力された利用計画を更に考慮して、アプリケーションをインストールするタイミングを決定する。このため、インストール後、当該アプリケーションが利用されない期間を、第２の実施の形態で説明した方法よりも短縮できる。その結果、空いたリソースを他のアプリケーションの実行に割り当てることができる。すなわち、第２の実施の形態の方法よりもリソース利用の効率化を図れる。
【０１９８】
特に、ユーザにより入力された利用計画は予定であり、必ずしもその予定通りに各ステップが進むとは限らない。このため、利用計画テーブル１７１，１７２，１７３，・・・に入力された開始予定日および完了予定日が現実の進行状況と一致しない場合も生じ得る。そこで、所要予測部１４２ａは、計画が前倒し／後倒しされることを考慮して、現実の利用状況を踏まえてインストールのタイミングを補正する。これにより、インストール後に当該アプリケーションが利用されない期間を更に短縮し、リソース利用の一層の効率化を図ることができる。
【０１９９】
なお、所要予測部１４２ａは、設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・に基づき、次のアプリケーションを予測するものとしたが、利用計画テーブル１７１，１７２，１７３，・・・のみを参照して、次のアプリケーションを予測してもよい。その場合、例えば利用計画テーブル１７１，１７２，１７３，・・・に対して、ユーザの入力により各アプリケーションの利用順序を設定してもよい。
【０２００】
［第４の実施の形態］
以下、第４の実施の形態を図面を参照して詳細に説明する。前述の第２，第３の実施の形態との相違点について主に説明し、同様の事項に関しては説明を省略する。
【０２０１】
第３の実施の形態では、計画データ記憶部１７０に格納された利用計画テーブル１７１，１７２，１７３，・・・を考慮して、次に利用が予測されるアプリケーションをインストールするタイミングを決定することとした。第４の実施の形態では、利用実績および利用計画を考慮してタイミングを補正するパラメータを事前に決定するための方法を提供する。
【０２０２】
なお、第４の実施の形態の情報処理システムの構成は、図２で説明した第２の実施の形態の情報処理システムの構成と同様であるため、説明を省略する。ただし、第４の実施の形態では、アプリケーション管理サーバ１００に代えてアプリケーション管理サーバ１００ｂを設ける。アプリケーション管理サーバ１００ｂのハードウェア構成は、図４で説明したアプリケーション管理サーバ１００のハードウェア構成と同様であるため、説明を省略する。
【０２０３】
図２５は、第４の実施の形態のアプリケーション管理サーバの機能を示すブロック図である。アプリケーション管理サーバ１００ｂは、管理データ記憶部１１０、ログデータ記憶部１２０、ポータル管理部１３０ａ、利用状況管理部１４０ｂ、インストール制御部１５０、アプリ管理部１６０および計画データ記憶部１７０を有する。これらのユニットの機能は、ＣＰＵ１０１がアプリケーション管理プログラムを実行することにより、アプリケーション管理サーバ１００ｂ上に実現される。ただし、これらのユニットの機能の全部または一部を専用のハードウェアで実装してもよい。
【０２０４】
ここで、管理データ記憶部１１０、ログデータ記憶部１２０、インストール制御部１５０およびアプリ管理部１６０の機能は、図５のアプリケーション管理サーバ１００において同一の符号を付して説明したユニットと同様であるため、説明を省略する。また、ポータル管理部１３０ａおよび計画データ記憶部１７０の機能は、図２２のアプリケーション管理サーバ１００ａにおいて同一の符号を付して説明したユニットと同様であるため、説明を省略する。
【０２０５】
利用状況管理部１４０ｂは、実行サーバ２００，３００，４００にインストール中のアプリケーションの利用状況を管理する。利用状況管理部１４０ｂは、利用実績集計部１４１および所要予測部１４２ｂを有する。ここで、利用実績集計部１４１は、図５で同一の符号を付して説明したユニットと同一である。
【０２０６】
所要予測部１４２ｂは、管理データ記憶部１１０に格納された設計ステップ定義テーブル１１２，１１２ａ，１１２ｂ，・・・を参照して、端末装置２１，２２，２３から次に要求されるアプリケーションを予測する。
【０２０７】
また、所要予測部１４２ｂは、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１および計画データ記憶部１７０に格納された利用計画テーブル１７１，１７２，１７３，・・・を参照して、予測したアプリケーションをインストールするタイミングを補正するパラメータを事前に決定する。所要予測部１４２ｂは、利用計画テーブル１７１，１７２，１７３，・・・に設定された利用予定開始日を補正して、アプリケーションのインストールのタイミングを決定する。所要予測部１４２ｂは、インストール指示を当該タイミングでインストール制御部１５０に出力する。
【０２０８】
図２６は、補正パラメータ算出処理を示すフローチャートである。以下、図２６に示す処理をステップ番号に沿って説明する。
（ステップＳ８１）所要予測部１４２ｂは、計画データ記憶部１７０に格納された利用計画テーブル１７１，１７２，１７３，・・・を参照して、属性情報を取得する。属性情報は、例えば、ＯＳ・アプリケーション・バージョンの組合せである。所要予測部１４２ｂは、例えば、利用計画テーブル１７１から、ＯＳ“ＯＳ−Ａ”、アプリケーション“ＡＰＰ１”およびバージョン“３．０”の組合せを属性情報として取得できる。
【０２０９】
（ステップＳ８２）所要予測部１４２ｂは、利用計画テーブル１７１，１７２，１７３，・・・を参照して、属性情報に合致する利用計画レコードを検索し、各レコードから利用予定期間を取得する。
【０２１０】
（ステップＳ８３）所要予測部１４２ｂは、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１を参照して、ステップＳ８２で取得した利用計画レコードに対応する利用実績レコードを取得する。例えば、利用計画レコードの属性情報および利用予定期間に基づいて、利用実績管理テーブル１２１から同一の属性情報、かつ、利用実績期間の最も近い利用実績レコードを特定することで、利用計画レコードに対応する利用実績レコードを特定できる。所要予測部１４２ｂは、各利用実績レコードから実績利用期間を取得する。
【０２１１】
（ステップＳ８４）所要予測部１４２ｂは、利用予定期間と、それに対応する実績利用期間と、を比較して、当該属性情報を含む作業ステップにつき平均遅延率Ｎ（％）を算出する。平均遅延率Ｎは、属性情報に対する補正パラメータである。すなわち、平均遅延率Ｎにより、対応する属性情報を含む作業ステップが計画された場合に、その計画で設定された利用開始予定日時や利用完了予定日時を補正できる。
【０２１２】
（ステップＳ８５）所要予測部１４２ｂは、利用計画テーブル１７１，１７２，１７３，・・・に含まれる全ての属性情報に対して平均遅延率を算出したか否かを判定する。全ての属性情報に対して算出済みの場合、処理を完了する。全ての属性情報に対して算出済みでない場合、処理をステップＳ８１に進める。
【０２１３】
このようにして、所要予測部１４２ｂは、属性情報毎に平均遅延率を事前に算出しておく。そして、利用計画を考慮してインストールのタイミングを決定する際に、属性情報毎に求めた平均遅延率に基づいて、利用計画に設定された利用開始予定日時や利用完了予定日時を補正し、補正後の日程によりインストールのタイミングを決定する。
【０２１４】
具体的には、第３の実施の形態において、図２４で説明したステップＳ７６の処理に代えて、次のように平均遅延率Ｎに基づく補正を行える。
すなわち、（１）所要予測部１４２ｂは、利用計画テーブルを参照して次ステップのアプリケーションの利用開始予定日時を取得する。（２）所要予測部１４２ｂは、利用計画テーブルを参照して現ステップのアプリケーションの利用完了予定日時とその属性情報を取得する。（３）所要予測部１４２ｂは、属性情報に対応する平均遅延率に基づいて、現ステップのアプリケーションの利用完了予定日時を補正する。例えば、１０日間の予定期間につき、１０（日）×Ｎ（％）の演算により利用完了予定日時を短縮／延長する補正を行う。そして、短縮／延長が見込まれる期間の分だけ次ステップのアプリケーションの利用開始予定日時につき、前倒し／後倒しする補正を行う。そして、補正後の利用開始予定日時が間近であるかを判定する。
【０２１５】
図２７は、補正パラメータ算出処理の具体例を示す図である。計画データ記憶部１７０に格納された利用計画テーブル１７１は、利用計画レコード１７１ａ，１７１ｂ，・・・を含む。利用計画レコード１７１ａ，１７１ｂ，・・・は、属性情報として、アプリ名“ＡＰＰ１”、バージョン“３．０”、ＯＳ“ＯＳ−Ａ”を含むレコード群である。
【０２１６】
また、ログデータ記憶部１２０に格納された利用実績管理テーブル１２１は、利用実績レコード１２１ａ，１２１ｂ，・・・を含む。利用実績レコード１２１ａ，１２１ｂ，・・・は、属性情報として、アプリ名“ＡＰＰ１”、バージョン“３．０”、ＯＳ“ＯＳ−Ａ”を含むレコード群である。
【０２１７】
なお、図２７では本図の説明で言及する項目以外の項目の図示を省略している。
所要予測部１４２ｂは、利用計画レコード１７１ａ，１７１ｂ，・・・と、各利用計画レコードに対応する利用実績レコード１２１ａ，１２１ｂ，・・・と、を比較して、上記属性情報に対応する平均遅延率を算出する。
【０２１８】
例えば、利用計画レコード１７１ａに対応する実績を示す情報として、利用実績レコード１２１ａが対応している。この場合、利用計画レコード１７１ａでは５日間の予定のところ、利用実績レコード１２１ａでは７日間を要している。よって、遅延率は、７／５×１００＝１４０％である。
【０２１９】
また、利用計画レコード１７１ｂに対応する実績を示す情報として、利用実績レコード１２１ｂが対応している。この場合、利用計画レコード１７１ｂでは７日間の予定のところ、利用実績レコード１２１ｂでは８日間を要している。よって、遅延率は、８／７×１００＝１１４％である。
【０２２０】
このように、利用計画レコード１７１ａ，１７１ｂ，・・・と利用実績レコード１２１ａ，１２１ｂ，・・・とを対比させて求めた各遅延率から平均遅延率Ｎを求める。そして、例えば管理データ記憶部１１０に属性情報に対応づけて平均遅延率Ｎを格納しておく。このようなデータを事前に作成しておくことで、利用計画として入力された各アプリケーションの利用開始予定日時および利用完了予定日時を精度良く補正できる。そして、補正後の予定期間に基づいて、次のアプリケーションのインストールのタイミングを適切に決定できる。
【０２２１】
その結果、インストール後に当該アプリケーションが利用されない期間を一層短縮できる。これにより、情報処理システムの運用を一層の効率化できる。
なお、第４の実施の形態では、属性情報としてＯＳ、アプリケーション、バージョンの組合せを例示したが、これらの組合せに限らない。例えば、ユーザＩＤを含めてもよい。ユーザＩＤを含めれば、該当のユーザにおける利用計画に対する利用実績の傾向を考慮して平均遅延率を算出できる。
【０２２２】
更に、平均遅延率Ｎ以外の値を補正パラメータとして求めてもよい。例えば、利用計画レコード１７１ａ，１７１ｂ，・・・と利用実績レコード１２１ａ，１２１ｂ，・・・とを対比して、遅延日数の分散を求めることが考えられる。そして、求めた分散に基づいて、ユーザが実行を要求する前にアプリケーションが済んでいる確率を所定値（例えば、８０％）とするようなＮ（％）を求め、補正パラメータとして用いることも考えられる。
【符号の説明】
【０２２３】
１  ソフトウェア管理装置
１ａ  記憶部
１ｂ  予測手段
１ｃ  インストール手段
２，３  情報処理装置
２ａ，２ｂ  ソフトウェア
【図１】
2012088901.tif 000003
【図２】
2012088901.tif 000004
【図３】
2012088901.tif 000005
【図４】
2012088901.tif 000006
【図５】
2012088901.tif 000007
【図６】
2012088901.tif 000008
【図７】
2012088901.tif 000009
【図８】
2012088901.tif 000010
【図９】
2012088901.tif 000011
【図１０】
2012088901.tif 000012
【図１１】
2012088901.tif 000013
【図１２】
2012088901.tif 000014
【図１３】
2012088901.tif 000015
【図１４】
2012088901.tif 000016
【図１５】
2012088901.tif 000017
【図１６】
2012088901.tif 000018
【図１７】
2012088901.tif 000019
【図１８】
2012088901.tif 000020
【図１９】
2012088901.tif 000021
【図２０】
2012088901.tif 000022
【図２１】
2012088901.tif 000023
【図２２】
2012088901.tif 000024
【図２３】
2012088901.tif 000025
【図２４】
2012088901.tif 000026
【図２５】
2012088901.tif 000027
【図２６】
2012088901.tif 000028
【図２７】
2012088901.tif 000029