(57)【要約】  テンプレート生成装置（１２）は、特定部（５３）と、第１生成部（５４）と、第２生成部（５７）とを有する。特定部（５３）は、既存のシステムを構成する各構成要素に関するスクリプトが記述された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定する。第１生成部（５４）は、同類の構成要素毎に、特定された共通部分が記述され、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成する。第２生成部（５７）は、既存のシステムと同一の構成要素については既存のシステムの同一の構成要素のスクリプトを用い、新規の構成要素については同類の汎用スクリプトを用いて新規のシステムのテンプレートを生成する。
2014020771.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
既存のシステムを構成する各構成要素に関するスクリプトが記述された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定し、
同類の構成要素毎に、特定された共通部分が記述され、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成し、
既存のシステムと同一の構成要素については既存のシステムの同一の構成要素のスクリプトを用い、新規の構成要素については同類の汎用スクリプトを用いて新規のシステムのテンプレートを生成する
各処理を実行させることを特徴とするテンプレート生成プログラム。
【請求項２】
コンピュータに、
同類の構成要素毎に、前記汎用スクリプトおよび前記既存のシステムのスクリプトをツリー構造で管理する管理情報を記憶部に記憶させ、
前記管理情報により示されるツリー構造に基づき、既存のシステム毎に、既存のシステムのスクリプトを新規のシステムのスクリプトに変更するコストを算出する各処理をさらに実行させ、
前記生成する処理は、算出されたコストのより少ない既存のシステムを求め、当該既存のシステムと同一の構成要素については当該既存のシステムの同一の構成要素のスクリプトを用い、新規の構成要素については、既存のシステムの同類の構成要素と当該新規の構成要素から汎用化された汎用スクリプトを用いてテンプレートを生成する
ことを特徴とする請求項１記載のテンプレート生成プログラム。
【請求項３】
前記生成する処理は、算出されたコストの少ない順に既存のシステムの優先順位を定め、優先順位の高い順に、既存のシステムと同一の構成要素については既存のシステムの同一の構成要素のスクリプトを用い、新規の構成要素については、既存のシステムの同類の構成要素と当該新規の構成要素から汎用化された汎用スクリプトを用いてテンプレートを生成し、
コンピュータに、
生成されたテンプレートによる動作を検証する処理をさらに実行させる
ことを特徴とする請求項２記載のテンプレート生成プログラム。
【請求項４】
コンピュータに、
前記システムを構成するソフトウェアに関するソフトウェア情報および当該システムに関する構成管理情報に基づき、前記既存のシステムのスクリプトに含まれる実行環境特有の情報を、それぞれ所定の標準情報に置換する処理をさらに実行させ、
前記特定する処理は、実行環境特有の情報が前記標準情報に置換された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定し、
前記生成する処理は、スクリプトに前記標準情報が含まれる場合、新規のシステムの実行環境特有の情報に置換して前記テンプレートを生成する
ことを特徴とする請求項１〜３の何れか１つに記載のテンプレート生成プログラム。
【請求項５】
コンピュータが、
既存のシステムを構成する各構成要素に関するスクリプトが記述された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定し、
同類の構成要素毎に、特定された共通部分が記述され、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成し、
既存のシステムと同一の構成要素については既存のシステムの同一の構成要素のスクリプトを用い、新規の構成要素については同類の汎用スクリプトを用いて新規のシステムのテンプレートを生成する
各処理を実行することを特徴とするテンプレート生成方法。
【請求項６】
既存のシステムを構成する各構成要素に関するスクリプトが記述された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定する特定部と、
同類の構成要素毎に、特定された共通部分が記述され、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成する第１生成部と、
既存のシステムと同一の構成要素については既存のシステムの同一の構成要素のスクリプトを用い、新規の構成要素については同類の汎用スクリプトを用いて新規のシステムのテンプレートを生成する第２生成部と、
を有することを特徴とするテンプレート生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テンプレート生成プログラム、テンプレート生成方法およびテンプレート生成装置に関する。
【背景技術】
【０００２】
近年、クラウドに代表される大規模システムが運用されている。例えば、データセンタは、多数の物理サーバ上でそれぞれシステムが運用され、あるいは物理サーバ上でVirtual  Machine（仮想マシン）を動作させ、仮想マシン上でそれぞれシステムが運用されている。このような大規模システムは、各サーバのハードウェアや、サーバ上で動作する各種のソフトウェアなど多数の構成要素により構成される。【０００３】
このような大規模システムを効率的に運用するため、システムを構成する構成要素の運用管理作業の自動化を実現するOpen  Source  Software（ＯＳＳ）や製品が開発されている運用管理の自動化を実現するソフトウェアは、スクリプトベースで成り立っており、テンプレートを用いて運用管理作業の自動化を実現する。テンプレートとは、システムを構成する構成要素に関する構成情報が記述されたものである。例えば、テンプレートには、構成要素に関する各種の設定や、起動、停止などの運用に用いるスクリプトが記述されている。この「テンプレート」は、ソフトウェアによって呼び方が様々であり、「マニフェスト」、「レシピ」、「パターン」などと呼ばれる場合もある。これら運用管理の自動化を実現するソフトウェアは、対象のシステムに合ったテンプレートに各運用作業に用いるスクリプトを記述し、状況に応じてそれぞれのスクリプトを実行することにより運用の自動化を実現する。【０００４】
ところで、運用管理作業の自動化を実現するためには、対象システムで動作させるソフトウェアの組み合わせに合ったテンプレートを事前に用意することが求められる。しかし、対象システムで動作が保証されたテンプレートを用意することは、困難な場合がある。システムを構成する構成要素の組み合わせは、様々ある。このため、実際の構成要素の組み合わせで正しく動作するスクリプトを作成しようとすると非常に時間がかかり、作成したスクリプトが実際に正しく動作しないケースがある。【０００５】
そこで、スクリプト作成の負担を軽減する次のような従来技術が知られている。例えば、既存のシステムで用いたテンプレートに含まれるソフトウェアのスクリプトを保管しておき、新規のシステムで用いる新規のテンプレート作成時に流用する従来技術が知られている。また、ポリシ記述からスクリプトを生成する従来技術や業務システムに用いる業務プログラムの構成からスクリプトを生成する従来技術が知られている（例えば、特許文献１および特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２２７８５５号公報
【特許文献２】特開２００８−０２１１１１号公報
【特許文献３】特開２０１１−０６００３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
既存のシステムで用いたスクリプトを流用する従来技術では、新規のシステムが既存のシステムと同じソフトウェアの同じ版数を使用する場合は、保管されたスクリプトを用いればよい。一方、新規のシステムが既存のシステムと異なるソフトウェアあるいは同じソフトウェアの異なる版数を使用する場合は、他の製品あるいは他の版数のスクリプトを流用して新規のシステムのスクリプトを作成する。しかし、流用したスクリプトのどこを修正すればよいかわからず、作成したスクリプトが正しく動作しないケースがある。【０００８】
また、ポリシ記述や業務プログラムの構成からスクリプトを生成する従来技術は、ポリシ記述や業務プログラムに対応して予めスクリプトを記憶させねばならず、新規のシステムに対応したスクリプトを生成できないケースがある。【０００９】
一側面では、新規のシステムに適したテンプレートを生成できるテンプレート生成プログラム、テンプレート生成方法およびテンプレート生成装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一側面によれば、テンプレート生成プログラムは、コンピュータに、既存のシステムを構成する各構成要素に関するスクリプトが記述された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定する処理を実行させる。また、テンプレート生成プログラムは、コンピュータに、同類の構成要素毎に、特定された共通部分が記述され、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成する処理を実行させる。そして、テンプレート生成プログラムは、コンピュータに、既存のシステムと同一の構成要素については既存のシステムのスクリプトを用い、新規の構成要素については同類の汎用スクリプトを用いて新規のシステムのテンプレートを生成する処理を実行させる。
【発明の効果】
【００１１】
本発明の一様態によれば、新規のシステムに適したテンプレートを生成できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るシステムの構成の一例を示す図である。
【図２】図２は、テンプレートの一例を模式的に示した図である。
【図３】図３は、テンプレート生成装置の機能的な構成の一例を示す図である。
【図４】図４は、管理情報の構成を模式的に示した図である。
【図５】図５は、既存のシステムのスクリプトから汎用スクリプトを生成する流れの一例を模式的に示した図である。
【図６】図６は、コストの算出を説明するための図である。
【図７】図７は、既存のシステムのスクリプトを新規のシステムのスクリプトに変更するコストの算出を説明するための図である。
【図８】図８は、既存のシステム毎にスクリプトを変更するコストを算出した一例を示す図である。
【図９】図９は、汎用スクリプトから新しい構成要素に対応したスクリプトを生成する流れの一例を模式的に示した図である。
【図１０】図１０は、登録処理の手順を示すフローチャートである。
【図１１】図１１は、生成処理の手順を示すフローチャートである。
【図１２】図１２は、テンプレート生成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に、本発明にかかるテンプレート生成プログラム、テンプレート生成方法およびテンプレート生成装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１４】
実施例１について説明する。実施例１では、システムの運用管理の自動化に適したテンプレートの生成を行うシステム１０について説明する。図１は、実施例１に係るシステムの構成の一例を示す図である。本実施例に係るシステム１０は、端末装置１１と、テンプレート生成装置１２と、構成管理装置１３と、検証装置１４とを有する。端末装置１１と、テンプレート生成装置１２と、構成管理装置１３と、検証装置１４との間は、ネットワーク１５を介して通信可能に接続される。かかるネットワーク１５の一態様としては、有線または無線を問わず、Local  Area  Network（ＬＡＮ）やVirtual  Private  Network（ＶＰＮ）などの任意の通信網が挙げられる。【００１５】
端末装置１１は、新規のテンプレートの生成を依頼するユーザが用いるコンピュータであり、例えば、クライアントコンピュータである。テンプレート生成装置１２は、テンプレートの生成を行うコンピュータであり、例えば、サーバコンピュータである。構成管理装置１３は、構成管理情報を管理するコンピュータであり、例えば、サーバコンピュータである。検証装置１４は、テンプレートの検証を行うコンピュータであり、例えば、サーバコンピュータである。【００１６】
構成管理装置１３は、既存のシステムの構成管理情報を記憶する。構成管理情報には、既存のシステムが動作する実行環境に関する各種情報が記憶されている。例えば、構成管理情報には、既存のシステムが動作するハードウェアやOperating  System（ＯＳ）などのソフトウェア、ＩＰアドレス等の各種の設定情報などが記憶されている。【００１７】
テンプレート生成装置１２は、各種の操作画面の画像情報を端末装置１１へ送信して各種の操作画面を表示させ、端末装置１１から操作内容を示す情報や登録された各種の情報示す操作情報を受信することにより、端末装置１１からの各種操作が可能とされている。【００１８】
例えば、テンプレート生成装置１２は、既存のシステムの運用管理に用いた動作実績があるテンプレートおよび当該既存のシステムを構成するソフトウェアに関するソフトウェア情報が端末装置１１から複数登録される。各テンプレートには、それぞれ既存のシステムを構成する構成要素に関する構成情報が記述されている。例えば、テンプレートには、構成要素に関する各種の設定や、起動、停止などの運用管理に用いられるスクリプトが記述されている。また、テンプレートには、ソフトウェアの接続関係などの情報が記憶されている。【００１９】
また、例えば、テンプレート生成装置１２は、新規のシステムを構成するハードウェアやソフトウェアなどの構成要素を指定してテンプレートの生成が端末装置１１から指示される。テンプレート生成装置１２は、テンプレートの生成が指示された場合、予め登録された既存のシステムのテンプレートから、新規のシステムの運用管理に用いるテンプレートの生成を行う。【００２０】
検証装置１４は、ネットワーク１５を介してサーバ装置、ネットワーク機器、ストレージ装置等のハードウェアや、アプリケーション（ＡＰ）、ミドルウェア（ＭＷ）等のソフトウェアなど、各種のリソース１６の制御が可能とされている。検証装置１４は、各種のリソース１６を制御してシステムを構築し、テンプレート生成装置１２により生成されるテンプレートの検証を行うことが可能とされている。【００２１】
図２は、テンプレートの一例を模式的に示した図である。図２に示すテンプレート２０は、システムを構成するソフトウェアとして、Interstage  Application  Server  V10とSymfoware  Server  V10に関する情報が含まれている。リンク２１は、Interstage  Application  Server  V10とSymfoware  Server  V10とが接続関係にあることを示す。また、テンプレート２０には、Interstage  Application  Server  V10とSymfoware  Server  V10の起動、停止などの運用管理に用いられるスクリプト２２が含まれている。【００２２】
図３は、テンプレート生成装置の機能的な構成の一例を示す図である。図３に示すように、テンプレート生成装置１２は、通信Ｉ／Ｆ部３０と、記憶部３１と、制御部３２とを有する。【００２３】
通信Ｉ／Ｆ部３０は、他の装置、例えば、端末装置１１や構成管理装置１３、検証装置１４との間で通信制御を行うインタフェースである。例えば、通信Ｉ／Ｆ部３０は、端末装置１１から登録された既存のシステムのテンプレートのデータおよびソフトウェア情報を受信する。また、通信Ｉ／Ｆ部３０は、端末装置１１から新規のシステムを構成するハードウェアやソフトウェアなどの構成要素に関するデータと共に、新規のシステムの運用管理に用いるテンプレートの生成の指示を受信する。また、通信Ｉ／Ｆ部３０は、構成管理情報の参照の要求を構成管理装置１３へ送信し、要求した構成管理情報のデータを構成管理装置１３から受信する。また、通信Ｉ／Ｆ部３０は、検証対象のテンプレートのデータを検証装置１４へ送信し、検証結果を検証装置１４から受信する。かかる通信Ｉ／Ｆ部３０の一態様としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。【００２４】
記憶部３１は、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部３１は、上記の種類の記憶装置に限定されるものではなく、Random  Access  Memory（ＲＡＭ)、Read  Only  Memory（ＲＯＭ)であってもよい。【００２５】
記憶部３１は、制御部３２で実行されるＯＳやテンプレートの生成に用いる各種プログラムを記憶する。さらに、記憶部３１は、制御部３２で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部３１は、テンプレートデータ３１ａと、ソフトウェア情報３１ｂと、管理情報３１ｃと、条件情報３１ｄと、新規テンプレートデータ３１ｅとを記憶する。【００２６】
テンプレートデータ３１ａは、既存のシステムの運用管理に用いた動作実績があるテンプレートのデータである。一例として、テンプレートデータ３１ａは、端末装置１１によって登録が行われて通信Ｉ／Ｆ部３０によって受信されたテンプレートが後述の登録部５０によって登録される。他の一例として、テンプレートデータ３１ａは、汎用スクリプトを生成するために、後述の置換部５１によって参照される。【００２７】
ソフトウェア情報３１ｂは、既存のシステムを構成する各ソフトウェアの種類やバージョンなどソフトウェアに関する情報が記憶されたデータである。一例として、ソフトウェア情報３１ｂは、端末装置１１によって登録が行われて通信Ｉ／Ｆ部３０によって受信されたソフトウェア情報が後述の登録部５０によって登録される。他の一例として、ソフトウェア情報３１ｂは、汎用スクリプトを生成する際に、後述の置換部５１によって参照される。【００２８】
管理情報３１ｃは、各構成要素のスクリプトや同類の構成要素毎にスクリプトの共通部分を汎用化した汎用スクリプトをツリー構造で管理するデータである。一例として、管理情報３１ｃは、後述の置換部５１によって実行環境特有の情報が置換されたスクリプトや後述の第１生成部５４によって生成された汎用スクリプトが登録される。他の一例として、管理情報３１ｃは、新規のシステムのテンプレートを生成する際に、後述の算出部５６および第２生成部５７によって参照される。【００２９】
図４は、管理情報の構成を模式的に示した図である。なお、図４の例は、システムを構成する構成要素として、Application  Server（ＡＳ）および  DataBase（ＤＢ）のソフトウェアのスクリプトを管理している場合を示している。管理情報３１ｃは、類似する構成要素同士が近いノードになるように階層的なツリー構造でスクリプトが管理されている。管理情報３１ｃは、ツリー構造で末端となるノードの構成要素にそれぞれ対応させて、当該構成要素のスクリプトが記憶されている。また、管理情報３１ｃは、ツリー構造の中間部分および最上位となるノードの構成要素にそれぞれ対応させて、下位の構成要素のスクリプトの共通部分を汎用化した汎用スクリプトが記憶されている。図４の例では、ＡＳおよびＤＢのソフトウェアがそれぞれソフトウェアの種類やソフトウェアの製品毎に分類され、さらにバージョン毎に分類されている。また、バージョンについては、大幅な改訂がおこなわれたメジャーバージョンに分類し、さらに、メジャーバージョン毎に小幅な改訂がおこなわれたマイナーバージョンに分類されている。【００３０】
例えば、図４の例では、ＡＳとして、Apache  Tomcat（Ｔｏｍｃａｔ）、WebSphere  Application  Server（ＷＡＳ）、Interstage  Application  Server（ＩＡＳ）が記憶されている。そして、図４の例では、Ｔｏｍｃａｔのバージョンとして、Ｔｏｍｃａｔ  Ｖ６．０が記憶され、ＷＡＳのバージョンとして、ＷＡＳ  Ｖ８が記憶され、ＩＡＳのバージョンとして、ＩＡＳ  Ｖ８、ＩＡＳ  Ｖ９、ＩＡＳ  Ｖ１０が記憶されている。また、図４の例では、ＷＡＳ  Ｖ８のマイナーバージョンとして、ＷＡＳ  Ｖ８．０、ＷＡＳ  Ｖ８．１が記憶されている。また、図４の例では、ＩＡＳ  Ｖ８のマイナーバージョンとして、ＩＡＳ  Ｖ８．０が記憶されている。また、図４の例では、ＩＡＳ  Ｖ９のマイナーバージョンとして、ＩＡＳ  Ｖ９．１が記憶されている。また、図４の例では、ＩＡＳ  Ｖ１０のマイナーバージョンとして、ＩＡＳ  Ｖ１０．０、ＩＡＳ  Ｖ１０．１が記憶されている。【００３１】
また、図４の例では、ＤＢの種類として、Relational  Data  Base（ＲＤＢ）とKey  Value  Store（ＫＶＳ）が記憶されている。そして、図４の例では、ＲＤＢとして、ＭｙＳＱＬ、ＤＢ２、Symfoware  Server（Ｓｙｍｆｏｗａｒｅ）が記憶されている。そして、図４の例では、ＭｙＳＱＬのバージョンとして、ＭｙＳＱＬ  Ｖ５．５が記憶され、ＤＢ２のバージョンとして、ＤＢ２  Ｖ９．７が記憶されている。また、図４の例では、Ｓｙｍｆｏｗａｒｅのバージョンとして、Ｓｙｍｆｏｗａｒｅ  Ｖ９、Ｓｙｍｆｏｗａｒｅ  Ｖ１０が記憶されている。そして、図４の例では、ＭｙＳＱＬ  Ｖ５．５のマイナーバージョンとして、ＭｙＳＱＬ  Ｖ５．５．０、ＭｙＳＱＬ  Ｖ５．５．２が記憶されている。また、図４の例では、ＤＢ２  Ｖ９．７のマイナーバージョンとして、ＤＢ２  Ｖ９．７．０が記憶されている。また、図４の例では、Ｓｙｍｆｏｗａｒｅ  Ｖ９のマイナーバージョンとして、Ｓｙｍｆｏｗａｒｅ  Ｖ９．０、Ｓｙｍｆｏｗａｒｅ  Ｖ９．１が記憶されている。また、図４の例では、Ｓｙｍｆｏｗａｒｅ  Ｖ１０のマイナーバージョンとして、Ｓｙｍｆｏｗａｒｅ  Ｖ１０．０が記憶されている。【００３２】
図３に戻り、条件情報３１ｄは、新規のシステムを構成する構成要素に関する情報が記憶されたデータである。一例として、条件情報３１ｄは、後述の受付部５５によって新規のシステムを構成する構成要素を示す情報が登録される。他の一例として、条件情報３１ｄは、新規のシステムのテンプレートを生成する際に、後述の算出部５６および第２生成部５７によって参照される。【００３３】
新規テンプレートデータ３１ｅは、新規のシステムの運用管理に用いるために生成されたテンプレートのデータである。一例として、新規テンプレートデータ３１ｅは、後述の検証部５８によって新規のシステムを構成する構成要素を示す情報が登録される。【００３４】
制御部３２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部３２は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部３２は、図３に示すように、登録部５０と、置換部５１と、管理部５２と、特定部５３と、第１生成部５４と、受付部５５と、算出部５６と、第２生成部５７と、検証部５８とを有する。【００３５】
登録部５０は、記憶部３１へ各種のデータの登録を行う処理部である。登録部５０は、記憶部３１へテンプレートデータ３１ａおよびソフトウェア情報３１ｂの登録を行う。例えば、端末装置１１で登録された、既存のシステムの運用管理に用いられたテンプレートおよびソフトウェア情報が通信Ｉ／Ｆ部３０によって受信された場合、登録部５０は、受信されたテンプレートを記憶部３１にテンプレートデータ３１ａとして登録する。また、登録部５０は、受信されたソフトウェア情報を、受信されたテンプレートと関連付けて記憶部３１にソフトウェア情報３１ｂとして登録する。【００３６】
置換部５１は、データの置換を行う処理部である。置換部５１は、記憶部３１にテンプレートデータ３１ａとして記憶された各テンプレートに記述されたスクリプトに含まれる実行環境特有の情報を、一般化した共通情報に置換する。例えば、置換部５１は、記憶部３１にテンプレートデータ３１ａとして記憶されたテンプレート毎に、通信Ｉ／Ｆ部３０を介して構成管理装置１３から当該テンプレートにより運用管理が行われるシステムの構成を示す構成管理情報を読み出す。この読み出した構成管理情報には、システムが動作する実行環境に関する各種情報が含まれている。そして、管理部５２は、読み出した構成管理情報およびテンプレートに関連付けられたソフトウェア情報３１ｂに基づき、テンプレートに記述されたスクリプトに含まれる実行環境特有の情報を、それぞれ一般化した所定の標準情報に置換する。例えば、置換部５１は、スクリプトに含まれる実行環境特有の情報を種類毎にそれぞれ標準情報を示す所定の文字列に置換する。【００３７】
管理部５２は、スクリプトの管理を行う処理部である。管理部５２は、置換部５１により置換が行われたスクリプトおよび後述する汎用化された汎用スクリプトをツリー構造で管理する。例えば、管理部５２は、置換部５１により実行環境特有の情報が所定の文字列に置換されたテンプレートからソフトウェア毎のスクリプトを抽出する。管理部５２は、ソフトウェア情報３１ｂに基づき、抽出されたスクリプトが処理対象とするソフトウェアの種類およびバージョンを特定する。そして、置換部５１は、管理情報３１ｃの特定されたソフトウェアの種類およびバージョンに応じたノードに対応させてスクリプトを登録する。また、管理部５２は、後述する第１生成部５４により生成された汎用スクリプトおよび記述揺れ情報を、管理情報３１ｃの汎用スクリプトの元となったスクリプトが登録されていたノードの上位ノードに対応させて登録する。【００３８】
特定部５３は、各種の特定を行う処理部である。特定部５３は、管理情報３１ｃに登録されたスクリプトの共通部分および非共通部分を特定する。例えば、特定部５３は、ツリー構造の中間部分および最上位のノードについて、それぞれ下位のノードにスクリプトが登録されている場合、下位のノードのスクリプトからスクリプトの共通部分および非共通部分を特定する。例えば、特定部５３は、ソフトウェアについて種類およびメジャーバージョンが同じで、マイナーバージョンが異なるスクリプトがある場合、マイナーバージョンの異なるスクリプト同士を比較して、スクリプトの共通部分および非共通部分を特定する。また、特定部５３は、中間部分のノードに登録された汎用スクリプトについても、同類毎にスクリプト同士を比較して、同類の汎用スクリプトの共通部分および非共通部分を特定する。例えば、特定部５３は、ソフトウェアについて種類が同じでメジャーバージョンの異なる汎用スクリプトがある場合、メジャーバージョンの異なる汎用スクリプト同士を比較して、汎用スクリプトの共通部分および非共通部分を特定する。なお、特定部５３は、下位ノードのスクリプトが１つの場合、下位ノードのスクリプトにおいて、下位ノードを分類する情報が記述された部分を非共通部分と特定し、その他の部分を共通部分と特定する。例えば、メジャーバージョンとマイナーバージョンで階層的にノードを分類しており、メジャーバージョンのノードにマイナーバージョンのノードが１つのみの場合を想定する。この場合、特定部５３は、マイナーバージョンのノードのスクリプトでマイナーバージョンを示す情報が記述された部分を非共通部分と特定し、その他の部分を共通部分と特定する。【００３９】
第１生成部５４は、特定された共通部分および非共通部分から汎用スクリプトを生成する処理部である。第１生成部５４は、特定部５３により特定された共通部分のスクリプトを記述し、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成する。例えば、第１生成部５４は、特定部５３により特定された共通部分を抜き出し、非共通部分をそれぞれ記述の揺れを示す所定の文字列とした汎用スクリプトを生成する。また、第１生成部５４は、中間部分および最上位のノードについても、同類の構成要素毎に、汎用スクリプト同士の共通部分を抜き出し、非共通部分をそれぞれ記述の揺れを示す所定の文字列として、汎用スクリプト同士でさらに共通する汎用スクリプトを生成する。また、第１生成部５４は、非共通部分毎に、非共通部分のそれぞれの設定内容を示す記述揺れ情報を生成する。【００４０】
図５は、既存のシステムのスクリプトから汎用スクリプトを生成する流れの一例を模式的に示した図である。図５の例では、既存のシステムの２つのスクリプト６０ａ、６０ｂが示されている。スクリプト６０ａは、ソフトウェア「ＡＳａ  Ｖ９」の運用管理に用いられたスクリプトである。スクリプト６０ｂは、ソフトウェア「ＡＳａ  Ｖ１０」の運用管理に用いられたスクリプトである。また、図５の例では、スクリプト６０ａ、６０ｂのソフトウェア情報６１ａ、６１ｂおよび実行環境に関する情報６２ａ、６２ｂがそれぞれ示されている。例えば、ソフトウェア情報６１ａによれば、スクリプト６０ａは、処理対象とするソフトウェアの名称が「ＡＳａ  Ｖ９」であり、ベンダーが「ＸＹＺ」であり、製品群が「ＡＳａ」であり、バージョンが「９」であることを示す。また、実行環境に関する情報６２ａによれば、スクリプト６０ａは、実行環境のＩＰアドレスが「１９２．１６８．０．１０」であり、ホスト名が「ｈｏｇｅ」であり、ＯＳが「ＲＨＥＬ（Red  Hat  Enterprise  Linux（登録商標））５．６」であることを示す。また、スクリプト６０ａは、ＯＳの製品群が「ＲＨＥＬ」であり、実行環境のCentral  Processing  Unit（ＣＰＵ）が「Ｘｅｏｎ  ３ＧＨｚ×４」であり、メモリが「４ＧＢ」であることを示す。【００４１】
置換部５１は、ソフトウェア情報６１ａおよび実行環境に関する情報６２ａに記憶された実行環境特有の情報をスクリプト６０ａ内から検索し、スクリプト６０ａに含まれる実行環境特有の情報をそれぞれ所定の文字列に置換する。また、置換部５１は、ソフトウェア情報６１ｂおよび実行環境に関する情報６２ｂに記憶された実行環境特有の情報をスクリプト６０ｂ内から検索し、スクリプト６０ｂに含まれる実行環境特有の情報をそれぞれ所定の文字列に置換する。図５のスクリプト６３ａ、６３ｂは、標準情報への置換が行われた結果を示している。例えば、置換部５１は、スクリプト６０ａに記述された「ＩＮＳＴＤＩＲ＝／ｏｐｔ／ＸＹＺ／ＡＳａ／Ｖ９／」からベンダーを示す「ＸＹＺ」および製品群を示す「ＡＳａ」を検索する。そして、置換部５１は、「ＸＹＺ」を「｛｛｛Ｖｅｎｄｏｒ｝｝｝」に置換し、「ＡＳａ」を「｛｛｛Ｆａｍｉｌｙ｝｝｝」に置換する。これにより、スクリプト６３ａは、「ＩＮＳＴＤＩＲ＝／ｏｐｔ／｛｛｛Ｖｅｎｄｏｒ｝｝｝／｛｛｛Ｆａｍｉｌｙ｝｝｝／Ｖ９／」と記述が変化している。本実施例では、標準情報を示す所定の文字列を３重の｛｝で括った文字列とした場合について説明したが、予約語など予めシステムやソフトウェアで使用されるキーワードと重複しなければどのような文字列を用いてもよい。【００４２】
管理部５２は、スクリプトが処理対象とするソフトウェアの種類およびバージョンに応じて、置換後のスクリプトを管理情報３１ｃに登録する。例えば、図５のスクリプト６３ａは、ソフトウェア「ＡＳａ」のバージョン「Ｖ９」のノードに対応させて管理情報３１ｃに登録する。また、図５のスクリプト６３ｂは、ソフトウェア「ＡＳａ」のバージョン「Ｖ１０」のノードに対応させて管理情報３１ｃに登録する。【００４３】
特定部５３は、スクリプト６３ａ、６３ｂ同士を比較して、共通部分および非共通部分を特定する。第１生成部５４は、特定された共通部分のスクリプトを記述し、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成する。図５の例では、スクリプト６３ａ、６３ｂ同士を比較して生成された汎用スクリプト６４が示されている。汎用スクリプト６４は、スクリプト６３ａ、６３ｂの共通部分のスクリプトが記述されている。また、汎用スクリプト６４は、スクリプト６３ａ、６３ｂの非共通部分が記述の揺れを示す項目として記述されている。図５の例では、「｛｛｛＄１｝｝｝」、「｛｛｛＄２｝｝｝」、「｛｛｛＄３｝｝｝」が記述の揺れを示す項目を示す。また、図５の例では、記述揺れ情報として記憶される、記述の揺れを示す項目「｛｛｛＄１｝｝｝」、「｛｛｛＄２｝｝｝」、「｛｛｛＄３｝｝｝」に記述された非共通部分の設定内容が示されている。【００４４】
管理部５２は、汎用スクリプトおよび記述揺れ情報を、管理情報３１ｃの汎用スクリプトの元となったスクリプトが登録されていたノードの上位ノードに対応させて登録する。例えば、管理部５２は、図５の汎用スクリプト６４および記述揺れ情報を、スクリプト６０ａ、６０ｂが登録されていたノードの上位ノードに対応させて登録する。【００４５】
図３に戻り、受付部５５は、各種の指示を受け付ける処理部である。受付部５５は、端末装置１１からテンプレートの生成の指示を受け付ける。例えば、受付部５５は、新規のシステムを構成するハードウェアやソフトウェアなどの構成要素を示す情報と共に、テンプレートの生成の指示を端末装置１１から受け付ける。受付部５５は、受け付けた新規のシステムを構成する構成要素を示す情報を条件情報３１ｄとして記憶部３１に記憶させる。【００４６】
算出部５６は、各種算出を行う処理部である。算出部５６は、条件情報に記憶された新規のシステムを構成する構成要素に新規の構成要素がある場合、それぞれ既存のシステムの同類の構成要素から汎用化された汎用スクリプトを、新規の構成要素のスクリプトに変更するコストを算出する。【００４７】
ここで、スクリプトを変更するコストの算出について説明する。図６は、コストの算出を説明するための図である。図６には、汎用スクリプト６４が示されている。図６に示す汎用スクリプト６４は、記述の揺れを示す項目として「｛｛｛｛＄１｝｝｝」〜「｛｛｛＄３｝｝｝」を有する。また、図６には、Ｖ８〜Ｖ１１のバージョンに応じて記述の揺れを示す項目に記述する設定内容の一例が示されている。【００４８】
算出部５６は、記述の揺れを示す項目について、それぞれ最も頻出する設定内容の情報をデフォルトと特定する。なお、算出部５６は、設定内容の情報が全て異なる場合や、最も頻出する設定内容が複数ある場合、デフォルトを無しと特定する。図６の例では、記述の揺れを示す項目＄１は、設定内容の情報が全て異なるため、デフォルトが無し（「−」）とされている。また、記述の揺れを示す項目＄２は、最も頻出する「｛｛｛｛ＯＳ｝｝｝｝がデフォルトとされている。また、記述の揺れを示す項目＄３は、最も頻出する「ｅｃｈｏ・・・」がデフォルトとされている。【００４９】
そして、算出部５６は、スクリプトの情報を変更するコストを算出する。例えば、算出部５６は、レーベンシュタイン距離の計算方法を採用し、挿入・削除のコストを１、置換のコストを２として、記述の揺れを示す項目毎に以下のようにコストを求める。
・デフォルトと設定内容が同じ場合は、変更なしとみなし、コストを０とする。
・デフォルトが空で設定内容が空以外の場合は、挿入とみなし、コストを１とする。
・デフォルトが空以外で設定内容が空の場合は、削除とみなし、コストを１とする。
・デフォルトと設定内容が異なる場合は、置換とみなし、コストを２とする。
・デフォルトが無しで設定内容がある場合は、置換とみなし、コストを２とする。【００５０】
図６の例では、算出部５６は、記述の揺れを示す項目をそれぞれのバージョンの設定内容に変更するコストを加算して、汎用スクリプト６４をそれぞれのバージョンのスクリプトに変更するコストを算出する。例えば、汎用スクリプト６４をバージョンＶ８のスクリプトに変更する場合、記述の揺れを示す項目＄１は、デフォルトが無しで設定内容があるため、コストが２となる。また、記述の揺れを示す項目＄２は、デフォルトが空以外で設定内容が空であるため、コストが１となる。また、記述の揺れを示す項目＄３は、デフォルトと設定内容が同じであるため、コストが０となる。よって、汎用スクリプト６４をバージョンＶ８のスクリプトに変更するコストは、２＋１＋０＝３と算出される。【００５１】
算出部５６は、管理情報３１ｃに登録された各汎用スクリプトについて、記述の揺れを示す項目をそれぞれ下位のノードのスクリプトの情報に変更するコストを算出する。そして、算出部５６は、管理情報３１ｃにより示されるツリー構造に基づき、既存のシステム毎に、既存のシステムのスクリプトを新規のシステムのスクリプトに変更するコストを算出する。例えば、算出部５６は、既存のシステムに無い新規の構成要素について、管理情報３１ｃにより示されるツリー構造に基づき、当該新規の構成要素に最も近い上位の汎用スクリプトに既存のシステムの同類の構成要素のスクリプトを変更するコストを算出する。【００５２】
図７は、既存のシステムのスクリプトを新規のシステムのスクリプトに変更するコストの算出を説明するための図である。図７の例では、ツリー構造に対応させて、各汎用スクリプトをそれぞれ下位のノードのスクリプトに変更するコストを示す数値が示されている。また、図７の例では、既存のシステムを構成する各ソフトウェアの組み合わせを一点鎖線７０により示している。図７の例では、既存のシステムとしては、Ｔｏｍｃａｔ  Ｖ６．０とＳｙｍｆｏｗａｒｅ  Ｖ９．０との組み合わせがあることを示す。また、既存のシステムとしては、ＷＡＳ  Ｖ８．０とＳｙｍｆｏｗａｒｅ  Ｖ９．１との組み合わせがあることを示す。また、既存のシステムとしては、ＷＡＳ  Ｖ８．１とＤＢ２  Ｖ９．７．０との組み合わせがあることを示す。また、既存のシステムとしては、ＩＡＳ  Ｖ８．０とＭｙＳＱＬ  Ｖ５．５．２との組み合わせがあることを示す。また、既存のシステムとしては、ＩＡＳ  Ｖ１０．１とＳｙｍｆｏｗａｒｅ  Ｖ９．１との組み合わせがあることを示す。【００５３】
例えば、構成要素としてＩＡＳ  Ｖ９．１とＳｙｍｆｏｗａｒｅ  Ｖ１０．０を含む新規のシステムのテンプレートの生成が指示されたものとする。図７の例では、新規のシステムを構成する各ソフトウェアの組み合わせを破線７１により示している。【００５４】
算出部５６は、既存のシステム毎に、既存のシステムに無い新規の構成要素について、当該新規の構成要素に最も近い上位の汎用スクリプトに、既存のシステムの同類の構成要素のスクリプトを変更するコストを算出する。図７の例では、ＩＡＳ  Ｖ９．１に最も近い上位の汎用スクリプト７２と、Ｓｙｍｆｏｗａｒｅ  Ｖ１０．０に最も近い上位の汎用スクリプト７３に既存のシステムの同類の構成要素のスクリプトを変更するコストを算出する。例えば、既存のシステムがＩＡＳ  Ｖ１０．１とＳｙｍｆｏｗａｒｅ  Ｖ９．１との組み合わせである場合、算出部５６は、ＩＡＳ  Ｖ１０．１のスクリプト７４を汎用スクリプト７２に変更するコストを３５＋２０＝５５と算出する。また、算出部５６は、Ｓｙｍｆｏｗａｒｅ  Ｖ９．１のスクリプト７５を汎用スクリプト７３に変更するコストを１５＋５＝２０と算出する。【００５５】
図８は、既存のシステム毎にスクリプトを変更するコストを算出した一例を示す図である。「ＡＳ変更コスト」は、ＡＳのソフトウェアのスクリプトを変更するコストを示す。「ＤＢ変更コスト」は、ＤＢのソフトウェアのスクリプトを変更するコストを示す。「合計コスト」は、ＡＳ変更コストとＤＢ変更コストの合計を示す。「優先順位」はコストの少ない順に既存のシステムの優先順位を示す。例えば、ＩＡＳ  Ｖ１０．１とＳｙｍｆｏｗａｒｅ  Ｖ９．１との組み合わせた既存のシステムの場合、ＩＡＳ  Ｖ１０．１のスクリプト７４を変更するコストは、「５５」である。また、Ｓｙｍｆｏｗａｒｅ  Ｖ９．１のスクリプト７５を変更するコストは、「２０」である。このため、ＩＡＳ  Ｖ１０．１とＳｙｍｆｏｗａｒｅ  Ｖ９．１との組み合わせた既存のシステムのスクリプトを変更する合計のコストは、「７５」と算出される。【００５６】
図３に戻り、第２生成部５７は、新規のシステムの運用管理作業に用いるテンプレートを生成する処理部である。第２生成部５７は、算出されたコストの少ない順に既存のシステムの優先順位を定める。そして、第２生成部５７は、優先順位の高い順に、既存のシステムのスクリプトを変更して、新しいシステムのテンプレートを生成する。例えば、第２生成部５７は、既存のシステムと同一の構成要素については既存のシステムの同一の構成要素のスクリプトを用いてテンプレートを生成する。また、第２生成部５７は、既存のシステムに無い新規の構成要素については、既存のシステムの同類の構成要素と当該新規の構成要素から汎用化された汎用スクリプトを用いてテンプレートを生成する。例えば、第２生成部５７は、新規のソフトウェアについては、管理情報３１ｃにより示されるツリー構造において、既存のシステムの同類のソフトウェアと新規のソフトウェアで共通する最も下位のノードの汎用スクリプトを用いてテンプレートを生成する。例えば、図７に示すツリー構造において、新規のソフトウェアがＳｙｍｆｏｗａｒｅ  Ｖ１０．０であり、既存のシステムの同類のソフトウェアがＭｙＳＱＬ  Ｖ５．５．２である場合、第２生成部５７は、汎用スクリプト７６を用いてテンプレートを生成する。また、第２生成部５７は、スクリプトに標準情報を示す所定の文字列が含まれる場合、新規のシステムの実行環境特有の情報に置換してテンプレートを生成する。【００５７】
図９は、汎用スクリプトから新しい構成要素に対応したスクリプトを生成する流れの一例を模式的に示した図である。図９の例では、ソフトウェア「ＡＳａ」について汎用化された汎用スクリプト６４が示されている。汎用スクリプト６４には、「｛｛｛Ｖｅｎｄｏｒ｝｝｝」、「｛｛｛ｆａｍｉｌｙ｝｝｝」、「｛｛｛ＩＰＡｄｄｒ｝｝｝」と標準情報を示す文字列が含まれる。また、汎用スクリプト６４には、記述の揺れを示す項目「｛｛｛＄１｝｝｝」、「｛｛｛＄２｝｝｝」、「｛｛｛＄３｝｝｝」が含まれる。【００５８】
第２生成部５７は、条件情報３１ｄにより示される新規のシステムとして指定された構成要素に関する情報に基づき、通信Ｉ／Ｆ部３０を介して構成管理装置１３から新規のシステムで使用される構成要素に関する構成管理情報を読み出す。この読み出した構成管理情報には、新規のシステムが動作する実行環境に関する各種情報が含まれている。図９には、実行環境に関する情報８０の一例が示されている。また、図９には、新規のシステムとして指定されたソフトウェア「ＡＳａ」に関する情報８１の一例も示されている。【００５９】
第２生成部５７は、実行環境に関する情報８０およびソフトウェア「ＡＳａ」に関する情報８１に基づき、汎用スクリプトに含まれる標準情報を実行環境特有の情報に置換する。例えば、第２生成部５７は、スクリプトに含まれる標準情報を示す文字列をそれぞれ実行環境特有の情報に置換する。【００６０】
図９のスクリプト６５は、実行環境特有の情報への置換が行われた結果を示している。例えば、第２生成部５７は、「｛｛｛Ｖｅｎｄｏｒ｝｝｝」を「ＸＹＺ」に置換し、「｛｛｛ｆａｍｉｌｙ｝｝｝」を「ＡＳａ」に置換し、「｛｛｛ＩＰＡｄｄｒ｝｝｝」を「１９２．１６８．０．１０」に置換する。これにより、スクリプト６５は、例えば、「ＮＳＴＤＩＲ＝／ｏｐｔ／ＸＹＺ／ＡＳａ／｛｛｛＄１｝｝｝／」と記述が変化している。【００６１】
また、第２生成部５７は、スクリプトに含まれる記述の揺れを示す項目をソフトウェアに応じた情報に置換する。例えば、第２生成部５７は、スクリプト６５に含まれる「｛｛｛＄１｝｝｝」、「｛｛｛＄２｝｝｝」、「｛｛｛＄３｝｝｝」をソフトウェアに応じた情報に置換する。この記述の揺れを示す項目に設定するソフトウェアに応じた情報は、端末装置１１からユーザが指定してもよく、また、管理者等が予め記述揺れ情報として設定しておいてもよい。また、ソフトウェアに応じた情報は、同じソフトウェアの他のバージョンの情報から推定して設定してもよい。例えば、各バージョンの記述の揺れを示す項目の情報がバージョンの情報と同じ場合は、新規のソフトウェアのバージョンの情報を設定してもよい。また、ソフトウェアに応じた情報は、記述揺れ情報に記憶されたデフォルトの情報としてもよい。【００６２】
図９のスクリプト６６は、記述の揺れを示す項目にソフトウェアに応じた情報を設定した結果を示している。例えば、第２生成部５７は、スクリプト６５に含まれる「｛｛｛＄１｝｝｝」、「｛｛｛＄２｝｝｝」、「｛｛｛＄３｝｝｝」をバージョンＶ８に応じた情報に置換する。これにより、スクリプト６６は、例えば、「ＮＳＴＤＩＲ＝／ｏｐｔ／ＸＹＺ／ＡＳａ／Ｖ８／」と記述が変化している。【００６３】
第２生成部５７は、新規のシステムについて、スクリプト６６が記述されたテンプレートを生成する。【００６４】
図３に戻り、検証部５８は、生成されたスクリプトの検証を行う処理部である。検証部５８は、生成したスクリプトを検証装置１４を利用して検証する。検証部５８は、生成されたテンプレートを検証装置１４で実行させて正しく動作するか、および所定の性能が得られるかを検証する。第２生成部５７は、検証部５８による検証の結果、問題があった場合は次に優先順位の高い既存のシステムのスクリプトから生成されたテンプレートを生成する。【００６５】
このように、テンプレート生成装置１２は、既存のシステムのスクリプトの共通部分が記述され、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成することにより、スクリプトのどこを修正すればよいか特定できる。このため、テンプレート生成装置１２は、既存のシステムのスクリプトを用い、新規の構成要素については汎用スクリプトを用いてテンプレートを生成することにより、新規のシステムであっても運用管理作業の自動化に適したテンプレートを生成できる。【００６６】
また、既存のシステムのスクリプトは、動作実績があるため、信頼性が高い。このため、既存のシステムのスクリプトからの変更コストが少ない順に、既存のシステムのスクリプトを変更して、新しいシステムのテンプレートを生成することにより、安定して動作しやすいテンプレートを生成できる。また、生成したテンプレートの検証を行うことにより、安定して動作するテンプレートを生成できる。【００６７】
次に、本実施例に係るテンプレート生成装置１２が既存のシステムのテンプレートに含まれるスクリプトを管理情報３１ｃに登録する登録処理の流れを説明する。図１０は、登録処理の手順を示すフローチャートである。この登録処理は、例えば、端末装置１１から登録された既存のシステムのテンプレートのデータおよびソフトウェア情報を受信した場合に実行される。【００６８】
図１０に示すように、登録部５０は、受信されたテンプレートのデータおよびソフトウェア情報をテンプレートデータ３１ａおよびソフトウェア情報３１ｂとして記憶部３１に登録する（Ｓ１０）。置換部５１は、記憶部３１にテンプレートデータ３１ａとして記憶された各テンプレートに記述されたスクリプトに含まれる実行環境特有の情報をそれぞれ標準情報を示す所定の文字列に置換する（Ｓ１１）。管理部５２は、置換されたテンプレートからソフトウェア毎のスクリプトを抽出する（Ｓ１２）。管理部５２は、抽出した全スクリプトへの処理が完了したか否か判定する（Ｓ１３）。全スクリプトへの処理が完了した場合（Ｓ１３肯定）、処理を終了する。【００６９】
一方、全スクリプトへの処理が完了していない場合（Ｓ１３否定）、管理部５２は、未処理のスクリプトからスクリプトを選択する（Ｓ１４）。管理部５２は、ソフトウェア情報３１ｂに基づき、選択したスクリプトが処理対象とするソフトウェアの種類およびバージョンを特定し、特定されたソフトウェアの種類およびバージョンに応じた末端のノードに対応させてスクリプトを登録する（Ｓ１５）。【００７０】
管理部５２は、スクリプトを登録した現ノードが最上位ノードか否か判定する（Ｓ１６）。最上位ノードである場合（Ｓ１６肯定）、上述のＳ１３へ移行する。【００７１】
一方、最上位ノードではない場合（Ｓ１６否定）、管理部５２は、現ノードの上位ノードの処理へ移行する（Ｓ１７）。特定部５３は、下位ノードのスクリプトからスクリプトの共通部分および非共通部分を特定する（Ｓ１８）。第１生成部５４は、特定部５３により特定された共通部分のスクリプトを記述し、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成する（Ｓ１９）。そして、管理部５２は、汎用スクリプトおよび記述の揺れを示す項目を特定した場合は記述揺れ情報を管理情報３１ｃの現ノードに対応させて登録し（Ｓ２０）、上述のＳ１６へ移行する。【００７２】
次に、本実施例に係るテンプレート生成装置１２が新規のシステムのテンプレートを生成する生成処理の流れを説明する。図１１は、生成処理の手順を示すフローチャートである。この生成処理は、例えば、端末装置１１から新規のシステムを構成する構成要素を示す情報と共に、テンプレートの生成の指示を受信した場合に実行される。【００７３】
図１１に示すように、算出部５６は、各汎用スクリプトについて、記述の揺れを示す項目を下位のスクリプトの情報に変更するコストを求める（Ｓ３０）。そして、算出部５６は、既存のシステム毎に、既存のシステムのスクリプトを新規のシステムのスクリプトに変更するコストを算出する（Ｓ３１）。【００７４】
第２生成部５７は、算出されたコストの少ない順に既存のシステムの優先順位を定める（Ｓ３２）。そして、第２生成部５７は、優先順位の高い順に、既存のシステムのスクリプトを変更し、スクリプトに含まれる標準情報を実行環境特有の情報に置換して新規システムのテンプレートを生成する（Ｓ３３）。【００７５】
検証部５８は、生成されたテンプレートを検証装置１４で実行させて正しく動作するか、および生成されるシステムが所定の性能が得られるかを検証する（Ｓ３４）。検証部５８は、検証装置１４による検証の結果、スクリプトが正常に動作しかつ生成されるシステムが所定の性能が得られたか否か判定する（Ｓ３５）。スクリプトが正常に動作しない又は所定の性能が得られない場合（Ｓ３５否定）、上述のＳ３３へ移行する。一方、スクリプトが正常に動作しかつ所定の性能が得られた場合（Ｓ３５肯定）、生成されたテンプレートを記憶部３１へ記憶させ（Ｓ３６）、処理を終了する。【００７６】
このように、テンプレート生成装置１２は、既存のシステムを構成する各構成要素に関するスクリプトが記述された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定する。また、テンプレート生成装置１２は、同類の構成要素毎に、特定された共通部分が記述され、非共通部分を記述の揺れを示す項目とした汎用スクリプトを生成する。そして、テンプレート生成装置１２は、既存のシステムと同一の構成要素については既存のシステムの同一の構成要素のスクリプトを用い、新規の構成要素については同類の汎用スクリプトを用いて新規のシステムのテンプレートを生成する。これにより、テンプレート生成装置１２は、新規のシステムに適したテンプレートを生成できる。【００７７】
また、テンプレート生成装置１２は、同類の構成要素毎に、汎用スクリプトおよび既存のシステムのスクリプトをツリー構造で管理する管理情報３１ｃを記憶部３１に記憶させる。テンプレート生成装置１２は、管理情報３１ｃにより示されるツリー構造に基づき、既存のシステム毎に、既存のシステムのスクリプトを新規のシステムのスクリプトに変更するコストを算出する。テンプレート生成装置１２は、算出されたコストの少ない順に既存のシステムの優先順位を定める。そして、テンプレート生成装置１２は、優先順位の高い順に、既存のシステムと同一の構成要素については既存のシステムのスクリプトを用い、新規の構成要素については、汎用スクリプトを用いてテンプレートを生成する。そして、テンプレート生成装置１２は、生成されたテンプレートによる動作を検証する。これにより、テンプレート生成装置１２は、安定して動作するテンプレートを生成できる。【００７８】
また、テンプレート生成装置１２は、システムを構成するソフトウェアに関するソフトウェア情報および当該システムに関する構成管理情報に基づき、動作実績があるスクリプトに含まれる実行環境特有の情報をそれぞれ所定の標準情報に置換する。そして、テンプレート生成装置１２は、実行環境特有の情報が標準情報に置換された複数のテンプレートから同類の構成要素毎にスクリプトの共通部分および非共通部分を特定する。そして、テンプレート生成装置１２は、スクリプトに標準情報が含まれる場合、新規のシステムの実行環境特有の情報に置換してテンプレートを生成する。これにより、テンプレート生成装置１２は、スクリプトに含まれる実行環境特有の情報がある場合でも、実行環境特有の情報を実行環境に合わせて情報に変更可能な汎用スクリプトを生成できる。また、テンプレート生成装置１２は、スクリプトに含まれる標準情報を新規のシステムの実行環境特有の情報に置換してテンプレートを生成することにより、新規のシステムの実行環境に合わせたテンプレートを生成できる。
【実施例２】
【００７９】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。【００８０】
上記の実施例では、既存のシステムからの変更コストの少ない順に優先順位を定め、優先順位の高い順にテンプレートを生成して検証を行う場合について説明したが、開示の装置はこれに限定されない。例えば、テンプレート生成装置１２は、生成されたテンプレートの検証を行わなくてもよい。例えば、テンプレート生成装置１２は、変更コストのより少ない既存のシステムを求め、当該既存のシステムと同一の構成要素については既存のシステムのスクリプトを用い、新規の構成要素については、汎用スクリプトを用いてテンプレートを生成してもよい。既存のシステムのスクリプトは、動作実績があるため、信頼性が高い。このため、テンプレート生成装置１２は、既存のシステムのスクリプトからの変更コストが少ない既存のシステムのスクリプトから新しいシステムのテンプレートを生成することにより、安定して動作しやすいテンプレートを生成できる。【００８１】
また、上記の実施例では、変更コストが少ない順に既存のシステムのスクリプトから新規システムのテンプレートを生成する場合について説明したが、開示の装置はこれに限定されない。例えば、テンプレート生成装置１２は、既存のシステムと同一の構成要素については既存のシステムのスクリプトを用い、新規の構成要素についてはツリー構造において同類の最も近いノードの汎用スクリプトを用いて新規システムのテンプレートを生成してもよい。最も近いノードの汎用スクリプトは、新規の構成要素に用いられるスクリプトと共通部分を多く含んでいる。このため、テンプレート生成装置１２は、新規の構成要素については最も近いノードの汎用スクリプトを用いて新規のシステムのテンプレートを生成することにより、新規のシステムに適したテンプレートを生成できる。【００８２】
上記の実施例では、既存のシステムの構成を示す構成管理情報を構成管理装置１３から読み出す場合について説明したが、開示の装置はこれに限定されない。テンプレート生成装置１２は、既存のシステムの構成を示す構成管理情報を記憶部３１に記憶してもよい。【００８３】
上記の実施例では、既存のシステムを構成するソフトウェアに関するソフトウェア情報が端末装置１１から送信される場合について説明したが、開示の装置はこれに限定されない。テンプレート生成装置１２は、外部の装置から既存のシステムのソフトウェア情報を読み出してもよい。【００８４】
また、上記の実施例では、ソフトウェアの制御を行うスクリプトを生成する場合について説明したが、開示の装置はこれに限定されない。ハードウェアの制御を行うスクリプトについても同様に生成できる。【００８５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図３に示す登録部５０と、置換部５１と、管理部５２と、特定部５３と、第１生成部５４と、受付部５５と、算出部５６と、第２生成部５７と、検証部５８の各処理部が適宜統合されてもよい。また、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、Central  Processing  Unit（ＣＰＵ）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。【００８６】
［テンプレート生成プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図１２は、テンプレート生成プログラムを実行するコンピュータを示す図である。【００８７】
図１２に示すように、コンピュータ３００は、ＣＰＵ３１０、Read  Only  Memory（ＲＯＭ）３２０、Hard  Disk  Drive（ＨＤＤ）３３０、Random  Access  Memory（ＲＡＭ）３４０を有する。これら３１０〜３４０の各部は、バス４００を介して接続される。【００８８】
ＲＯＭ３２０には上記実施例の各処理部と同様の機能を発揮するテンプレート生成プログラム３２０ａが予め記憶される。例えば、上記実施例１の登録部５０と、置換部５１と、管理部５２と、特定部５３と、第１生成部５４と、受付部５５と、算出部５６と、第２生成部５７と、検証部５８と同様の機能を発揮するテンプレート生成プログラム３２０ａを記憶させる。なお、テンプレート生成プログラム３２０ａについては、適宜分離しても良い。【００８９】
ＨＤＤ３３０には、各種データを記憶する。例えば、ＨＤＤ３３０は、ＯＳやテンプレートの生成に用いる各種データを記憶する。【００９０】
そして、ＣＰＵ３１０が、テンプレート生成プログラム３２０ａをＲＯＭ３２０から読み出して実行することで、実施例１の各処理部と同様の動作を実行する。すなわち、テンプレート生成プログラム３２０ａは、実施例１の登録部５０と、置換部５１と、管理部５２と、特定部５３と、第１生成部５４と、受付部５５と、算出部５６と、第２生成部５７と、検証部５８と同様の動作を実行する。【００９１】
なお、上記したテンプレート生成プログラム３２０ａについては、必ずしも最初からＲＯＭ３２０に記憶させることを要しない。テンプレート生成プログラム３２０ａはＨＤＤ３３０に記憶させてもよい。【００９２】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、Compact  Disk  Read  Only  Memory（ＣＤ−ＲＯＭ）、Digital  Versatile  Disk（ＤＶＤ）、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。【００９３】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００９４】
１０      システム
１１      端末装置
１２      テンプレート生成装置
１３      構成管理装置
１４      検証装置
２０      テンプレート
２２      スクリプト
３０      通信Ｉ／Ｆ部
３１      記憶部
３１ａ    テンプレートデータ
３１ｂ    ソフトウェア情報
３１ｃ    管理情報
３１ｄ    条件情報
３１ｅ    新規テンプレートデータ
３２      制御部
５０      登録部
５１      置換部
５２      管理部
５３      特定部
５４      第１生成部
５５      受付部
５６      算出部
５７      第２生成部
５８      検証部
【図１】
2014020771.tif 000003
【図２】
2014020771.tif 000004
【図３】
2014020771.tif 000005
【図４】
2014020771.tif 000006
【図５】
2014020771.tif 000007
【図６】
2014020771.tif 000008
【図７】
2014020771.tif 000009
【図８】
2014020771.tif 000010
【図９】
2014020771.tif 000011
【図１０】
2014020771.tif 000012
【図１１】
2014020771.tif 000013
【図１２】
2014020771.tif 000014
【国際調査報告】
2014020771.tif 000015
2014020771.tif 000016