以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の構成要件作成装置を示す図である。構成要件作成装置1は、情報処理システムに含まれる各種の装置に対する設定内容から、設定内容に対する要件を抽出する。各装置において設定対象となる属性には種々のものが含まれる。例えば、属性としては装置の識別情報(ホスト名やネットワーク上のアドレスなど)および機能に応じて通信する他の装置の識別情報などが考えられる。また、属性としては装置内のハードウェアやソフトウェアの設定項目などが考えられる。
構成要件作成装置1は、記憶部1aおよび演算部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bは、プログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、複数の装置を管理する包含関係を有する複数の管理単位および各管理単位で区分される装置の集合を示す情報を記憶する。例えば、処理の対象とするシステムでは、複数の装置は包含関係をもつ管理単位A,B,Cで管理される。当該包含関係は階層的な構造で表せる。上位の階層の管理単位は、下位の階層の管理単位を包含する。
管理単位Aは第1階層の管理単位である。管理単位Bは管理単位Aの直下の第2階層の管理単位である。管理単位Cは管理単位Bの直下の第3階層の管理単位である。例えば、管理単位Aを地域、管理単位Bをデータセンタ、管理単位Cをラックに対応付けることができる。この場合、上記包含関係は管理単位A,B,Cの空間的な包含関係を示しているということもできる。なお、管理単位の階層の数は2つでもよいし4つ以上でもよい。例えば、データセンタという管理単位の配下にフロアという管理単位を設け、フロアの配下にサーバルームという管理単位を設け、サーバルームの配下にラックという管理単位を設けることも考えられる(この場合は5階層となる)。
例えば、分析の対象となる情報処理システムは、装置5,5a,5b,5c,5d,5e,5f,5gを含む。例えば、装置5,5a,5b,5c,5d,5e,5f,5gはコンピュータ、ネットワーク機器およびストレージ装置などである。例えば、集合2は第1階層に対応する管理単位Aで区分される集合である。集合2は装置5,5a,5b,5c,5d,5e,5f,5gを含む。集合3,3aは第2階層に対応する管理単位Bで区分される集合である。集合3は装置5,5a,5b,5cを含む。集合3aは装置5d,5e,5f,5gを含む。
集合4,4a,4b,4cは第3階層に対応する管理単位Cで区分される集合である。集合4は装置5,5aを含む。集合4aは装置5b,5cを含む。集合4bは装置5d,5eを含む。集合4cは装置5f,5gを含む。
記憶部1aは、各装置に関連付けられた複数の属性の設定値を示す情報を記憶する。例えば、各装置は属性X,Yをもち、属性X,Yそれぞれについて設定値をもつ。具体的には次の通りである。装置5の属性Xは設定値aである。この関係をX=aと表記する(以下、同様)。装置5の属性YについてY=cである。装置5aではX=b,Y=cである。装置5bではX=a,Y=cである。装置5cではX=b,Y=cである。装置5dではX=a,Y=dである。装置5eではX=b,Y=dである。装置5fではX=a,Y=dである。装置5gではX=b,Y=dである。
演算部1bは、記憶部1aを参照して、何れかの属性の設定値が管理単位で区分される装置の集合毎に第1の特徴をもつ管理単位を特定する。例えば、属性Xに着目すれば、集合4,4a,4b,4cについて、各集合に属する複数の装置(例えば、集合4でいえば装置5,5a)がそれぞれ別個の設定値(例えば、集合4でいえば設定値a,b)であるという特徴をもつ。集合4,4a,4b,4cは管理単位Cで区分される集合である。よって、演算部1bは「属性Xの設定値が別個である」という特徴をもつ管理単位として管理単位Cを特定する。
あるいは、例えば、属性Yに着目すれば、集合3,3aについて、各集合に属する複数の装置(例えば、集合3でいえば装置5,5a,5b,5c)が同一の設定値(例えば、集合3は設定値cで同一、集合3aは設定値dで同一)であるという特徴をもつ。集合3,3aは管理単位Bで区分される集合である。よって、演算部1bは「属性Yの設定値が同一である」という特徴をもつ管理単位として管理単位Bを特定する。
演算部1bは、第1の特徴をもつ属性の設定値に対して、特定された管理単位で区分される複数の集合間で成立する第2の特徴を検出する。例えば、属性Xに着目すれば、演算部1bは前述のように「属性Xの設定値が別個である」という第1の特徴をもつ管理単位として管理単位Cを特定している。また、各装置の属性Xの設定値によれば、管理単位Cで区分される集合4,4a,4b,4c間で、属性Xの設定値a,bの重複がある。よって、演算部1bは「属性Xの設定値に対して管理単位Cで区分される集合間で設定値の重複がある」という特徴を第2の特徴として検出する。
あるいは、例えば、属性Yに着目すれば、演算部1bは前述のように「属性Yの設定値が同一である」という第1の特徴をもつ管理単位として管理単位Bを特定している。また、各装置の属性Yの設定値によれば、管理単位Bで区分される集合3,3a間で、属性Yの設定値が重複していない。よって、演算部1bは「属性Xの設定値に対して管理単位Bで区分される集合間で設定値の重複がない」という特徴を第2の特徴として検出する。
演算部1bは、第1および第2の特徴に基づいて、特定された管理単位における属性の設定値に対する要件を示す情報を作成する。例えば、演算部1bは、属性Xについて「管理単位Cで区分される集合内では設定値を別個にする」、「管理単位Cで区分される集合間では設定値の重複を許容する」という要件を示す情報を作成する。また、例えば、演算部1bは、属性Yについて「管理単位Bで区分される集合内では設定値を共通にする」、「管理単位Bで区分される集合間では設定値を別個にする」という要件を示す情報を作成する。
構成要件作成装置1によれば、演算部1bにより、記憶部1aが参照されて、何れかの属性の設定値が装置の集合毎に第1の特徴をもつ管理単位が特定される。演算部1bにより、第1の特徴をもつ属性の設定値に対して、特定された管理単位で区分される複数の装置の集合間で成立する第2の特徴が検出される。第1および第2の特徴に基づいて、特定された管理単位における属性の設定値に対する要件を示す情報が作成される。
これにより、管理単位に応じた要件を適切に把握できる。例えば、管理単位毎に装置の設定値に規則を設け、各装置に対する設定の統制を図ることがある。この場合、管理単位毎の規則に則って装置の設定が行われなければ、当該装置の設定が他の装置の動作に対して悪影響を及ぼし得る。ところが、管理単位毎にどのような規則に則った設定が行われているかを把握することは容易でない。
そこで、構成要件作成装置1は、各装置における属性の設定値を示す情報に基づいて、各属性に対して管理単位に応じた要件を抽出する。このとき、ある管理単位で区分される装置の集合毎に成立する第1の特徴と、当該管理単位で区分される装置の集合間で成立する第2の特徴との両方を抽出するので、何れか一方の特徴のみを抽出するよりも、管理単位毎の適切な要件を作成できる。特に、ある管理単位で区分される装置の集合内である属性が特徴をもつ場合、当該属性は当該管理単位で区分される他の集合における当該属性の設定値との間で関係をもつ可能性が高い。構成要件作成装置1によれば、このような関係を的確に把握することができる。ユーザは、作成された要件を参照して、管理単位に応じた要件を適切に把握した上で、新たな設定や既存の設定の変更を行い得る。そうすれば、管理単位毎の規則を逸脱した設定が行われるリスクを低減できる。
構成要件作成装置1は、設定変更後の各装置の各属性の設定内容を、抽出した要件と照合して、設定変更後の各属性の設定値が適正であるかを事前に検証してもよい。そうすれば、ユーザが検証作業を行うよりも、迅速かつ正確に誤設定の有無を確認し得る。また、ユーザの作業を省力化できる。すなわち、設定の検証を効率化できる。その結果、各装置の設定変更の作業期間を短縮化し得る。
なお、演算部1bは、各属性について、種々の特徴を検出し得る。例えば、ある集合内における第1の種類の装置の第1の属性の設定値と、当該集合内の第2の種類の装置の第2の属性の設定値との間に成り立つ関係を第3の特徴として更に検出してもよい。そうすれば、属性の設定値に対する要件をより詳細化できる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、複数のサーバおよびスイッチなどの装置を含む。各装置は、スコープ(Scope)と呼ばれる単位で管理される。スコープは、情報処理システムに含まれる装置のまとまりの単位(管理単位)である。スコープは種々の粒度をもつ。スコープは、次に示すように空間的な包含関係で区別できるから管理範囲と呼ぶこともできる。
第2の実施の形態では一例として、スコープを、クラウド、地域、データセンタ、ラックとする。クラウドは、最上位の階層のスコープである。地域はクラウドの直下の階層のスコープである。データセンタは地域の直下の階層のスコープである。ラックはデータセンタの直下の階層のスコープである。すなわち、スコープは空間的なひろがりによって区別される階層をもつ。例えば、クラウドは地域を包含する。クラウドは、地域を合わせたものだから、地域よりも大きな空間的ひろがりをもつといえる。同様に、地域はデータセンタを包含する。また、データセンタはラックを包含する。
クラウドというスコープの実体としてクラウド10がある。地域というスコープの実体として、地域11,12がある。データセンタというスコープの実体として、データセンタ11a,11b,12a,12bがある。ラックというスコープの実体としてラック20がある。
地域11,12は、クラウド10に属している。データセンタ11a,11bは、地域11に属している。データセンタ12a,12bは、地域12に属している。データセンタ11a,11b,12a,12b内には、それぞれ複数のラックが設置されている。それぞれのラックには、複数のサーバやスイッチが設けられている。
例えば、データセンタ11a内にはラック20が設置されている。ラック20はサーバ21,22およびスイッチ23を含む。サーバ21,22は、ユーザに提供するハードウェア資源やソフトウェア資源を備えたサーバコンピュータである。ユーザ側でコンピュータを保有せずに、データセンタ側に設けられたコンピュータのリソースを、ネットワークを介して利用する利用形態をクラウドコンピューティングと呼ぶことがある。
スイッチ23は、サーバ21,22、他のラック内のサーバおよび他のデータセンタ内のサーバの間の通信を中継する中継装置である。ここでは、スイッチ23としてOSI(Open Systems Interconnection)参照モデルの第3層でIP(Internet Protocol)によりデータを転送するL3(Layer 3)スイッチを想定する。スイッチ23は、ルータと呼ばれるものでもよい。なお、以下ではIPv4(Internet Protocol Version 4)を例に説明するが、IPv6(Internet Protocol Version 6)でも同様である。
この場合、ラック20は、サーバ21,22およびスイッチ23という複数の装置の集合である。データセンタ11aは、データセンタ11a内の複数のラック(ラック20を含む)に含まれる複数の装置の集合である。データセンタ11bは、データセンタ11b内の複数のラックに含まれる複数の装置の集合である。データセンタ12aは、データセンタ12a内の複数のラックに含まれる複数の装置の集合である。データセンタ12bは、データセンタ12b内の複数のラックに含まれる複数の装置の集合である。
地域11は、データセンタ11a,11bに含まれる複数の装置の集合である。地域12は、データセンタ12a,12bに含まれる複数の装置の集合である。クラウド10は、地域11,12に含まれる複数の装置の集合である。
このようにスコープの実体を装置の集合と捉えれば、地域11,12は、クラウド10の部分集合(サブセット)であると考えることができる。データセンタ11a,11bは、地域11の部分集合であると考えることもできる。ラック20は、データセンタ11aの部分集合と考えることもできる。
第2の実施の形態では当該情報処理システムに対して、各装置の属性のスコープ毎の要件を抽出する機能を提供する。当該機能は構成要件作成装置により実現される。
図3は、構成要件作成装置のハードウェア例を示す図である。構成要件作成装置100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットが構成要件作成装置100のバスに接続されている。
プロセッサ101は、構成要件作成装置100の情報処理を制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。
RAM102は、構成要件作成装置100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、構成要件作成装置100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。構成要件作成装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
通信部104は、ネットワーク30を介して他のコンピュータと通信を行えるインタフェースである。通信部104は、有線インタフェースでもよいし、無線インタフェースでもよい。
画像信号処理部105は、プロセッサ101からの命令に従って、構成要件作成装置100に接続されたディスプレイ31に画像を出力する。ディスプレイ31としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部106は、構成要件作成装置100に接続された入力デバイス32から入力信号を取得し、プロセッサ101に出力する。入力デバイス32としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、レーザ光などを利用して、光ディスク33に記録されたプログラムやデータを読み取る駆動装置である。光ディスク33として、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などを使用できる。ディスクドライブ107は、例えば、プロセッサ101からの命令に従って、光ディスク33から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
機器接続部108は、構成要件作成装置100に周辺機器を接続するための通信インタフェースである。例えば、機器接続部108にはメモリ装置34やリーダライタ装置35を接続できる。メモリ装置34は、機器接続部108との通信機能を搭載した記録媒体である。リーダライタ装置35は、メモリカード36へのデータの書き込み、またはメモリカード36からのデータの読み出しを行う装置である。メモリカード36は、カード型の記録媒体である。機器接続部108は、例えば、プロセッサ101からの命令に従って、メモリ装置34またはメモリカード36から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
図4は、構成要件作成装置のソフトウェア例を示す図である。構成要件作成装置100は、記憶部110、分析部120および検証部130を有する。記憶部110は、RAM102またはHDD103に確保した記憶領域として実現できる。分析部120および検証部130は、プロセッサ101が実行するソフトウェアのモジュールとして実現できる。
記憶部110は、図2で例示した情報処理システムにおけるスコープおよび各スコープで区分される装置の集合を示す構成情報を記憶する。なお、以下では、装置の個々の集合をグループと称する。また、何れかのスコープで区分されるグループを指して、“スコープの名称(例えば、ラック)”で区分されるグループということがある。スコープの名称からスコープの階層を把握できる。また、記憶部110は、各装置に設定可能な属性(以下、パラメータと称する)および当該属性に対する設定値を示すパラメータ情報を記憶する。
分析部120は、記憶部110に記憶された構成情報およびパラメータ情報に基づいて、スコープに応じたパラメータの設定値の特徴を抽出する。具体的には、分析部120はラック毎、データセンタ毎、地域毎に成立する各パラメータの設定値のパターンなどの特徴を抽出する。また、分析部120は、何れかのスコープで特徴が見出されたパラメータについて、当該スコープで区分される複数のグループ間で成立する特徴を抽出する。更に、分析部120は、当該スコープで区分される同一のグループ内でパラメータ間に成立する特徴を抽出する。分析部120は、抽出した特徴に基づいて、スコープに応じた各パラメータの要件を示すパラメータ要件情報を作成し、記憶部110に格納する。
検証部130は、情報処理システムに含まれる装置の追加や交換などに伴う変更後の構成情報およびパラメータ情報を取得する。検証部130は、取得した情報と分析部120により作成されたパラメータ要件情報とに基づいて、変更後のパラメータ情報が適正であるか否かを検証する。検証部130は、検証結果をユーザに提供する。例えば、検証部130は、ディスプレイ31に検証結果を表示させる。
図5は、構成情報の例を示す図である。構成情報111は、記憶部110に予め記憶される。構成情報111は、スコープ、スコープの包含関係およびスコープで区分されるグループを示す情報である。具体的には、構成情報111は、クラウド(Cloud)というスコープに対してクラウド10(Cloud1)が存在することを示す。また、クラウド(Cloud)というスコープの直下には領域(Region)というスコープが存在することを示す。また、クラウド10(Cloud1)の直下に、地域11(Reg1)、地域12(Reg2)が存在することを示す。
また、領域(Region)というスコープの直下にはデータセンタ(AZ:Availability Zone)というスコープが存在することを示す。また、地域11(Reg1)の直下に、データセンタ11a(Reg1−1)、データセンタ11b(Reg1−2)が存在することを示す。地域12とデータセンタ12a,12bとの関係も同様に表されている。
また、データセンタ(AZ)というスコープの直下に、ラック(Rack)というスコープが存在することを示す。また、データセンタ11aの直下に、ラック20(R1)および他のラック(R2)が存在することを示す。データセンタ11b,12a,12bと各データセンタ配下のラックとの関係も同様に表されている。
更に、ラック20(R1)内には、サーバ21,22(Svr1,Svr2)およびスイッチ23(Sw1)が存在することを示す。他のラック内に存在する装置に関しても同様に表されている。構成情報111によれば、データセンタ11a,11b,12a,12bには、それぞれ2つのラックが含まれている。各ラックには、2台のサーバと1台のスイッチとが存在している。
構成情報111は、各スコープのクラスに対するインスタンスおよびインスタンス間のリンクを定義した情報であるということもできる。構成情報111は、各装置のクラスに対するインスタンスとスコープのインスタンスとのリンクも含んでいる。構成情報111は、例えば統一モデリング言語(UML:Unified Modeling Language)オブジェクト図で表せる。
図6は、グループの例を示す図である。図6に示す関係は、構成情報111から導かれるものである。例えば、グループ名“R1”のグループが、2台のサーバ(Svr1,Svr2)および1台のスイッチ(Sw1)を要素にもつことを示している。グループ名“R2”〜“R8”のグループについても、同様にして各要素が示されている。グループと要素の関係を、グループ名={要素}として表記すれば、これらの関係は次のようになる。R1={Svr1,Svr2,Sw1}。R2={Svr3,Svr4,Sw2}。R3={Svr5,Svr6,Sw3}。R4={Svr7,Svr8,Sw4}。R5={Svr9,Svr10,Sw5}。R6={Svr11,Svr12,Sw6}。R7={Svr13,Svr14,Sw7}。R8={Svr15,Svr16,Sw8}。
また、グループ名“Reg1−1”のグループが、4台のサーバ(Svr1〜Svr4)および2台のスイッチ(Sw1,Sw2)を要素にもつことを示している。グループ名“Reg1−2”のグループが4台のサーバ(Svr5〜Svr8)および2台のスイッチ(Sw3,Sw4)を要素にもつことを示している。グループ“Reg2−1”のグループが4台のサーバ(Svr9〜Svr12)および2台のスイッチ(Sw5,Sw6)を要素にもつことを示している。グループ名“Reg2−2”のグループが4台のサーバ(Svr13〜Svr16)および2台のスイッチ(Sw7,Sw8)を要素にもつことを示している。
また、グループ名“Reg1”のグループが8台のサーバ(Svr1〜Svr8)および4台のスイッチ(Sw1〜Sw4)を要素にもつことを示している。グループ名“Reg2”のグループが8台のサーバ(Svr9〜Svr16)および4台のスイッチ(Sw5〜Sw8)を要素にもつことを示している。
更に、グループ名“Cloud1”のグループが16台のサーバ(Svr1〜Svr16)および8台のスイッチ(Sw1〜Sw8)を要素にもつことを示している。
図7は、サーバパラメータテーブルの例を示す図である。サーバパラメータテーブル112は、記憶部110に予め格納される。サーバパラメータテーブル112は、サーバのパラメータの設定値を示す情報である。サーバパラメータテーブル112は、ID(IDentifier)、Name、Role、IPおよびGatewayの項目を含む。各項目名がパラメータの種類を示し、各項目の登録内容が当該パラメータの設定値を示す。
IDの項目には、サーバのIDが登録される。Nameの項目には、サーバの名称が登録される。Roleの項目には、サーバの役割を示す情報が登録される。IPの項目には、サーバのIPアドレスが登録される。Gatewayの項目には、デフォルトゲートウェイのIPアドレスが登録される。
例えば、サーバパラメータテーブル112には、IDが“Svr1”、Nameが“R1−Manage”、Roleが“Management”、IPが“192.168.10.11”、Gatewayが“192.168.10.1”という情報が登録されている。ここで、Role“Management”は、運用管理機能を担うサーバであることを示す。Role“Security”は、セキュリティ機能を担うサーバであることを示す。Role“Dom0”は仮想マシンを動作させるサーバであることを示す。
サーバパラメータテーブル112には、他のサーバ(ID“Svr2”〜“Svr16”)についても同様にしてパラメータ毎の設定値が登録されている。
図8は、スイッチパラメータテーブルの例を示す図である。スイッチパラメータテーブル113は、記憶部110に予め格納される。スイッチパラメータテーブル113は、スイッチのパラメータの設定値を示す情報である。スイッチパラメータテーブル113は、ID、NameおよびIP−Addrの項目を含む。各項目名がパラメータの種類を示し、各項目の登録内容が当該パラメータの設定値を示す。
IDの項目には、スイッチのIDが登録される。Nameの項目には、スイッチの名称が登録される。IP−Addrの項目には、スイッチの各ネットワークインタフェースに設定されたIPアドレスが登録される。
例えば、スイッチパラメータテーブル113には、IDが“Sw1”、Nameが“Switch1”、IP−Addrが“192.168.10.1”、“192.168.10.2”、“192.168.10.3”という情報が登録されている。スイッチパラメータテーブル113には、他のスイッチ(ID“Sw2”〜“Sw8”)についても同様にしてパラメータ毎の設定値が登録されている。
図9は、パラメータ特徴テーブルの例を示す図である。パラメータ特徴テーブル114は、構成情報111、サーバパラメータテーブル112およびスイッチパラメータテーブル113に基づいて、分析部120により作成され、記憶部110に格納される。パラメータ特徴テーブル114は、タイプ、パラメータ、スコープ、スコープ内での特徴、スコープ外との関係および他のパラメータとの関係の項目を含む。
タイプの項目には、装置(構成要素)の種類を示す情報が登録される。パラメータの項目には、パラメータの種類を示す情報が登録される。スコープの項目には、スコープを示す情報が登録される。スコープ内での特徴の項目には、スコープ内で抽出されたパラメータの特徴を示す情報が登録される。スコープ外との関係の項目には、同一スコープで区分される他のグループとの比較におけるパラメータの特徴を示す情報が登録される。他のパラメータとの関係の項目には、スコープ内における他のパラメータに対する特徴を示す情報が登録される。
例えば、パラメータ特徴テーブル114には、タイプが“Server”、パラメータが“Name”、スコープが“AZ”、スコープ内での特徴が“スコープ内で個別”、スコープ外との関係が“スコープ内外で同一値が存在する”、他のパラメータとの関係が設定なし“−(ハイフン)”という情報が登録されている。
これは、サーバのパラメータ“Name”は、スコープ“AZ”で区分されるグループ内で個別の値になっていることを示す。また、サーバのパラメータ“Name”は、スコープ“AZ”で区分されるグループ間で同じ設定値が存在していることを示す。また、サーバのパラメータ“Name”は、スコープ“AZ”で区分されるグループ内で他のパラメータに対する特徴をもたないことを示す。
また、パラメータ特徴テーブル114には、タイプが“Server”、パラメータが“Role”、スコープが“−”、スコープ内での特徴が“−”、スコープ外との関係が“−”、他のパラメータとの関係が“−”という情報が登録されている。これは、サーバのパラメータ“Role”がスコープに対して何らの特徴ももたないことを示す。
また、パラメータ特徴テーブル114には、タイプが“Server”、パラメータが“IP”、スコープが“Cloud”、スコープ内での特徴が“スコープ内で個別”、スコープ外との関係が“−”、他のパラメータとの関係が“−”という情報が登録されている。
これは、サーバのパラメータ“IP”(IPアドレス)は、スコープ“Cloud”で区分されるグループ内で個別の値になっていることを示す。また、サーバのパラメータ“IP”は、スコープ“Cloud”で区分される他のグループとの関係をもたないことを示す(スコープ“Cloud”は最上位の階層であるため)。また、サーバのパラメータ“IP”は、スコープ“Cloud”で区分されるグループ内で他のパラメータに対する特徴をもたないことを示す。
また、パラメータ特徴テーブル114には、タイプが“Server”、パラメータが“Gateway”、スコープが“AZ”、スコープ内での特徴が“スコープ内で同一”、スコープ外との関係が“スコープ内外で同一値は存在しない”、他のパラメータとの関係が“同一スコープ内のSwitchのパラメータIP−Addrの値の集合に含まれる”という情報が登録されている。
これは、サーバのパラメータ“Gateway”(デフォルトゲートウェイ)は、スコープ“AZ”で区分されるグループ内で同一の値になっていることを示す。また、サーバのパラメータ“Gateway”は、スコープ“AZ”で区分されるグループ間で同じ設定値が存在しないことを示す。また、サーバのパラメータ“Gateway”の設定値は、スコープ“AZ”で区分される同一グループ内に存在するスイッチのパラメータ“IP−Addr”の設定値の集合に包含されていることを示す。
また、パラメータ特徴テーブル114には、タイプが“Switch”、パラメータが“IP−Addr”、スコープが“Cloud”、スコープ内での特徴が“スコープ内で個別”、スコープ外との関係が“−”、他のパラメータとの関係が“−”という情報が登録されている。
これは、スイッチのパラメータ“IP−Addr”(IPアドレス)は、スコープ“Cloud”で区分されるグループ内で個別の値になっていることを示す。また、スイッチのパラメータ“IP−Addr”は、スコープ“Cloud”で区分される他のグループとの関係をもたないことを示す(スコープ“Cloud”は最上位の階層であるため)。また、スイッチのパラメータ“IP−Addr”は、スコープ“Cloud”で区分されるグループ内で他のパラメータに対する特徴をもたないことを示す。
なお、パラメータ特徴テーブル114では、スイッチのパラメータ“Name”に関する情報を省略している。ただし、スイッチのパラメータ“Name”も“IP−Addr”と同様にスコープ“Cloud”で区分されるグループ内で個別の値となる。
また、パラメータ特徴テーブル114は、既存の各パラメータが従う規則を示していると考えられるので、各パラメータの要件を示す情報であるということができる。次に、構成要件作成装置100による処理手順を説明する。まず、構成要件作成装置100によって実行される全体の処理の手順を説明する。以下の処理は、例えば、要件作成のユーザによる指示が構成要件作成装置100に入力された際に開始される。例えば、ユーザは、入力デバイス32を用いて、当該指示を構成要件作成装置100に入力し得る。このとき、ユーザは、構成情報111、サーバパラメータテーブル112およびスイッチパラメータテーブル113を構成要件作成装置100に対して指定し得る。
図10は、要件作成の処理例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
(S1)分析部120は、記憶部110に記憶された構成情報111、サーバパラメータテーブル112およびスイッチパラメータテーブル113に基づいて、何れかのパラメータを特徴づけるスコープを特定する。各スコープは、階層的な包含関係をもつから、スコープの特定は、スコープに対応する階層を特定することともいえる。
(S2)分析部120は、ステップS1で特定されたスコープで特徴をもつパラメータについて、当該スコープで区分されるグループ間の関係を評価する。
(S3)分析部120は、ステップS1で特定されたスコープで特徴をもつパラメータについて、他のパラメータとの関係を評価する。
(S4)分析部120は、ステップS1〜S3の結果に基づいて、パラメータ特徴テーブル114を作成し、記憶部110に格納する。分析部120は、パラメータ特徴テーブル114の内容をユーザに提示してもよい。例えば、分析部120は、ディスプレイ31にパラメータ特徴テーブル114の内容を表示させることで、当該内容をユーザに提示してもよい。
なお、ステップS2,S3を行う順序は任意である。例えば、分析部120はステップS1,S3,S2,S4の順に実行してもよい。
図11は、パラメータを特徴づけるスコープの特定例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。以下に示す手順は、図10のステップS1の手順に相当する。
(S11)分析部120は、記憶部110を参照して、既存インフラ(infrastructureの略)の情報を取得する。何れの情報を用いるかは、前述のようにユーザにより指定され得る。ここでは、分析部120は、構成情報111、サーバパラメータテーブル112およびスイッチパラメータテーブル113を取得する。
(S12)分析部120は、構成要素の種類を選択する。第2の実施の形態の例では、構成要素の種類として、サーバおよびスイッチがある。分析部120は、構成要素の種類としてサーバおよびスイッチの何れかを選択する。分析部120は、選択した種類の構成要素に着目して以降のステップを実行する。
(S13)分析部120は、着目する種類の構成要素に対してパラメータの種類を選択する。例えば、サーバが選択されている場合、サーバパラメータテーブル112によればパラメータの種類として、Name、Role、IPおよびGatewayがある。分析部120は、この中から任意の選択方法で何れかを選択する。同様に、スイッチが選択されている場合、スイッチパラメータテーブル113からNameおよびIP−Addrの何れかの種類のパラメータを選択する。なお、サーバやスイッチのパラメータの種類としてIDも存在するが、IDは各要素でスコープに依らず個別であることが予め分かっている。このため、分析部120は、IDを分析の対象外とする。分析部120は、選択したパラメータの種類に着目して以降のステップを実行する。
(S14)分析部120は、着目する種類の構成要素について、当該構成要素が属する最小のスコープでグルーピングする。例えば、構成要素の種類としてサーバが選択されている場合、サーバが属する最小のスコープはラックである。よって、分析部120は、サーバをラックでグルーピングする。なお、本例では構成要素の種類としてスイッチが選択されている場合も、スイッチが属する最小のスコープはラックなので、まずはスイッチをラックでグルーピングすることになる。
(S15)分析部120は、着目する種類の構成要素について、ステップS13でグルーピングしたグループ内で、着目するパラメータの値が全て同一であるか否かを判定する。全て同一である場合、処理をステップS16に進める。全て同一でない場合、処理をステップS17に進める。
(S16)分析部120は、着目するパラメータの値が全て同一である最上位(最大)のスコープを特定する。処理の詳細は後述する。そして、処理をステップS19に進める。
(S17)分析部120は、着目する種類の構成要素について、ステップS13でグルーピングしたグループ内で、着目するパラメータの値が全て別個であるか否かを判定する。全て別個である場合、処理をステップS18に進める。全て別個でない場合、処理をステップS19に進める。
(S18)分析部120は、着目するパラメータの値が全て別個である最上位(最大)のスコープを特定する。処理の詳細は後述する。そして、処理をステップS19に進める。
(S19)分析部120は、着目する種類の構成要素について、全てのパラメータの調査を終了したか否かを判定する。着目する種類の構成要素について、全てのパラメータの調査を終了した場合、処理をステップS20に進める。着目する種類の構成要素について、全てのパラメータの調査を終了していない場合、処理をステップS13に進める。
(S20)分析部120は、全ての種類の構成要素の調査を終了したか否かを判定する。全ての種類の構成要素の調査を終了した場合、処理を終了する。全ての種類の構成要素の調査を終了していない場合、処理をステップS12に進める。
図12は、同一パラメータ値となるスコープの特定例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。以下に示す手順は、図11のステップS16の手順に相当する。
(S21)分析部120は、スコープを1段階広げて、着目する種類の構成要素をグルーピングする。スコープを1段階広げるとは、着目するスコープを現在のスコープから1階層上位のスコープに変更することを示す。例えば、現在のスコープがラックであれば、1階層上位のスコープはデータセンタである。例えば、グループ名“R1”、“R2”のグループに対して、グループ名“Reg1−1”のグループが1段階広いスコープのグループである。
(S22)分析部120は、着目する種類の構成要素について、ステップS21でグルーピングしたグループ内で、着目するパラメータの値が全て同一であるか否かを判定する。全て同一である場合、処理をステップS23に進める。全て同一でない場合、処理をステップS25に進める。
(S23)分析部120は、着目するスコープよりも上位のスコープはないか否かを判定する。上位のスコープがない場合、処理をステップS24に進める。上位のスコープがある場合、処理をステップS21に進める。すなわち、分析部120は、着目するスコープをこれ以上広げられなければステップS24に進め、スコープを広げる余地があればステップS21に進める。
(S24)分析部120は、現在のスコープにおいて、着目する種類の構成要素の着目するパラメータの値が全て同一であることを記憶部110に記録する。そして、処理を終了する。
(S25)分析部120は、現在のスコープよりも1段階下位のスコープにおいて、着目するパラメータの値が全て同一であることを記憶部110に記録する。そして、処理を終了する。ステップS24,S25で記録されたパラメータは、スコープ内で特徴をもつパラメータということになる。
図13は、個別パラメータ値となるスコープの特定例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。以下に示す手順は、図11のステップS18の手順に相当する。
(S31)分析部120は、スコープを1段階広げて、着目する種類の構成要素をグルーピングする。
(S32)分析部120は、着目する種類の構成要素について、ステップS31でグルーピングしたグループ内で、着目するパラメータの値が全て別個であるか否かを判定する。全て別個である場合、処理をステップS33に進める。全て別個でない場合、処理をステップS35に進める。
(S33)分析部120は、着目するスコープが最上位のスコープであるか否かを判定する。最上位のスコープである場合、処理をステップS34に進める。最上位のスコープでない場合、処理をステップS31に進める。すなわち、分析部120は、着目するスコープをこれ以上広げられなければステップS34に進め、スコープを広げる余地があればステップS31に進める。
(S34)分析部120は、現在のスコープにおいて、着目する種類の構成要素の着目するパラメータの値が全て別個であることを記憶部110に記録する。そして、処理を終了する。
(S35)分析部120は、現在のスコープよりも1段階下位のスコープにおいて、着目するパラメータの値が全て別個であることを記憶部110に記録する。そして、処理を終了する。ステップS34,S35で記録されたパラメータは、スコープ内で特徴をもつパラメータということになる。
図14は、パラメータのグループ間の関係の評価例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。以下に示す手順は、図10のステップS2の手順に相当する。
(S41)分析部120は、何れかのスコープで特徴をもつパラメータと当該スコープとを選択する。分析部120は、図12,13で示した処理の結果、何れかのスコープで、同一の設定値または別個の設定値であるという特徴をもつパラメータと当該スコープとを特定済である。分析部120は、この結果に基づいてパラメータおよびスコープを選択する。分析部120は、選択したパラメータおよびスコープに着目して以降のステップを実行する。
(S42)分析部120は、着目するパラメータの値に対し、着目するスコープで区分されるグループ間で同じ値をもつか否かを調査する。
(S43)分析部120は、調査の結果から当該パラメータの値に対し、グループ間で同じ値が存在するか否かを判定する。同じ値が存在する場合、処理をステップS44に進める。同じ値が存在しない場合、処理をステップS45に進める。
(S44)分析部120は、着目するパラメータについて、着目するスコープで区分されるグループ間で同じ値を取り得ることを記憶部110に記録する。そして、処理をステップS46に進める。
(S45)分析部120は、着目するパラメータについて、着目するスコープで区分されるグループ間で同じ値を取らないことを記憶部110に記録する。
(S46)分析部120は、スコープ内で特徴をもつ全てのパラメータについて調査を終了したか否かを判定する。スコープ内で特徴をもつ全てのパラメータについて調査を終了した場合、処理を終了する。スコープ内で特徴をもつ全てのパラメータについて調査を終了していない場合、処理をステップS41に進める。ステップS41では、分析部120は未調査のパラメータおよびスコープの組を選択する。
図15は、パラメータ間の関係の評価例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。以下に示す手順は、図10のステップS3の手順に相当する。
(S51)分析部120は、何れかのスコープで特徴をもつパラメータと当該スコープとを選択する。分析部120は、図12,13で示した処理の結果、何れかのスコープで、同一の設定値または別個の設定値であるという特徴をもつパラメータと当該スコープとを特定済である。分析部120は、この結果に基づいてパラメータおよびスコープを選択する。分析部120は、選択したパラメータおよびスコープに着目して以降のステップを実行する。
(S52)分析部120は、着目するスコープ内で、着目するパラメータが取り得る値の集合を包含する値の集合を値域とする別のパラメータを検索する。
(S53)分析部120は、検索結果により当該別のパラメータが存在するか否かを判定する。当該別のパラメータが存在する場合、処理をステップS54に進める。当該別のパラメータが存在しない場合、処理をステップS55に進める。
(S54)分析部120は、着目するパラメータと検索された別のパラメータとの関係を記憶部110に記録する。
(S55)分析部120は、スコープ内で特徴をもつ全てのパラメータについて調査を終了したか否かを判定する。スコープ内で特徴をもつ全てのパラメータについて調査を終了した場合、処理を終了する。スコープ内で特徴をもつ全てのパラメータについて調査を終了していない場合、処理をステップS51に進める。ステップS51では、分析部120は未調査のパラメータおよびスコープの組を選択する。
図16は、特徴抽出の具体例を示す図である。パラメータ値域表115は、構成情報111、サーバパラメータテーブル112およびスイッチパラメータテーブル113に基づいて分析部120により作成され記憶部110に格納される。パラメータ値域表115によれば、分析部120は、図10のステップS1の処理により、各パラメータに対して次の特徴を抽出する。
(a1)タイプ“Server”のパラメータ“Name”は、スコープ“AZ”で区分されるグループ内で個別の設定値である。スコープ“AZ”で区分されるグループ単位では当該“Name”の値は個別であるが、1つ上位のスコープ“Region”で区分されるグループ単位では“Name”の値(例えば、“Sec”、“Dom0−1”、“Dom0−2”)が重複しているからである。
(a2)タイプ“Server”のパラメータ“IP”は、スコープ“Cloud”で区分されるグループ内で個別の設定値である。
(a3)タイプ“Server”のパラメータ“Gateway”は、スコープ“AZ”で区分されるグループ内で同一の設定値である。スコープ“AZ”で区分されるグループ単位では当該“Gateway”の値は同一であるが、1つ上位のスコープ“Region”で区分されるグループ単位では“Gateway”の値が異なっているからである。
より具体的には、グループ名“Reg1−1”のグループで“Gateway”は“192.168.10.1”で同一である。グループ名“Reg1−2”のグループで“Gateway”は“192.168.20.1”で同一である。グループ名“Reg2−1”のグループで“Gateway”は“192.168.30.1”で同一である。グループ名“Reg2−2”のグループで“Gateway”は“192.168.40.1”で同一である。一方、グループ名“Reg1”のグループで“Gateway”は“192.168.10.1”および“192.168.20.1”と異なる値となっている。また、グループ名“Reg2”のグループで“Gateway”は“192.168.30.1”および“192.168.40.1”と異なる値となっている。
(a4)タイプ“Switch”のパラメータ“IP−Addr”は、スコープ“Cloud”で区分されるグループ内で個別の設定値である。
また、分析部120は、図10のステップS2の処理により、前述の(a1)〜(a4)のパラメータに対して次の特徴を抽出する。
(b1)タイプ“Server”のパラメータ“Name”は、スコープ“AZ”で区分されるグループ間で同一値が存在する。スコープ“AZ”で区分されるグループ名“Reg1−1”、“Reg1−2”、“Reg2−1”、“Reg2−2”のグループでは、“Name”の値“Sec”、“Dom0−1”、“Dom0−2”、“Dom0−3”が重複しているからである。
(b2)タイプ“Server”のパラメータ“Gateway”は、スコープ“AZ”で区分されるグループ間で同一値は存在しない。スコープ“AZ”で区分されるグループ名“Reg1−1”、“Reg1−2”、“Reg2−1”、“Reg2−2”のグループでは、“Gateway”の値がそれぞれ“192.168.10.1”、“192.168.20.1”、“192.168.30.1”、“192.168.40.1”と別個の値となっているからである。
また、分析部120は、図10のステップS3の処理により、前述の(a1)〜(a4)のパラメータに対して次の特徴を抽出する。
(c1)タイプ“Server”のパラメータ“Gateway”の値は、スコープ“AZ”で区分される同一グループ内のタイプ“Switch”のパラメータ“IP−Addr”の値の集合に含まれる。スコープ“AZ”で区分されるグループ名“Reg1−1”、“Reg1−2”、“Reg2−1”、“Reg2−2”の各グループにおいて2つのパラメータ間に次の関係があるからである。
グループ名“Reg1−1”のグループ内で、タイプ“Server”のパラメータ“Gateway”の値“192.168.10.1”が、当該グループ内のタイプ“Switch”のパラメータ“IP−Addr”の6つの値の集合“192.168.10.1”〜“192.168.10.6”に含まれる。
グループ名“Reg1−2”のグループ内で、タイプ“Server”のパラメータ“Gateway”の値“192.168.20.1”が、当該グループ内のタイプ“Switch”のパラメータ“IP−Addr”の6つの値の集合“192.168.20.1”〜“192.168.20.6”に含まれる。
グループ名“Reg2−1”のグループ内で、タイプ“Server”のパラメータ“Gateway”の値“192.168.30.1”が、当該グループ内のタイプ“Switch”のパラメータ“IP−Addr”の6つの値の集合“192.168.30.1”〜“192.168.30.6”に含まれる。
グループ名“Reg2−2”のグループ内で、タイプ“Server”のパラメータ“Gateway”の値“192.168.40.1”が、当該グループ内のタイプ“Switch”のパラメータ“IP−Addr”の6つの値の集合“192.168.40.1”〜“192.168.40.6”に含まれる。
分析部120は、以上のようにして抽出した特徴に基づいて、パラメータ特徴テーブル114を作成し、記憶部110に格納する。パラメータ特徴テーブル114は、上記の特徴(a1)〜(a4),(b1),(b2),(c1)を示す情報を含んでいる。
また、分析部120は、パラメータ特徴テーブル114に基づいて要件の検証に用いる情報を生成する。当該情報は検証部130による新規インフラの検証に用いられる。一例として、検証部130は、USE(UML-based Specification Environment)と呼ばれるUML検証ツールを用いて各パラメータに対するスコープに応じた要件の検証を行うものとする。ただし、他の検証ツールを利用することを妨げるものではない。
USEでは、チェックしたいUMLオブジェクト図を示す情報およびオブジェクトに対する制約を記述したOCL(Object Constraint Language)論理式を入力として、当該UMLオブジェクト図が制約を満たすか否かを検証できる。USEの利用に関しては、次の文献を参考にすることができる。
(文献1)Martin Gogolla, Fabian Buttner, and Mark Richters, “USE: A UML-Based Specification Environment for Validating UML and OCL”, Science of Computer Programming, 69:27-34, 2007”
(文献2)USE: The UML-based Specification Environment, WebページURL:“http://sourceforge.net/apps/mediawiki/useocl/”
(文献3)International workshop UML and Formal Methods, WebページURL:“http://www−public.int−evry.fr/~gibson/Workshops/UML−FM−2012.html”
そこで、分析部120により抽出された要件をOCL論理式に変換して、検証部130に入力する。また、新規インフラのUMLオブジェクト図を示す情報を検証部130に入力する。検証部130は、USEの機能を用いて、新規インフラのパラメータの値が要件を満たすか否かを検証する。
図17は、OCL論理式のテンプレートの例を示す図である。テンプレートT1は、記憶部110に予め記憶される。テンプレートT1は、「コンポーネント(Component)のパラメータ(param)の値は、スコープ(scope)の中で全て同一である」という要件を表す。ここで、コンポーネントは構成要素の種類(タイプ)を示す。
例えば、パラメータ特徴テーブル114によれば、タイプ“Server”のパラメータ“Gateway”がスコープ“AZ”内で同一であるという特徴(前述の特徴(a3))を含む。これをテンプレートT1にあてはめる。具体的には、テンプレートT1に含まれる文字列“Component”を文字列“Server”に置換する。文字列“param”を文字列“Gateway”に置換する。文字列“scope”を文字列“AZ”に置換する。その結果、分析部120は、上記特徴(a3)に対応する要件を記述したOCL論理式T1aを得る。
図18は、OCL論理式のテンプレートの例(つづき)を示す図である。テンプレートT2,T3,T4,T5は、記憶部110に予め記憶される。テンプレートT2,T3,T4,T5は、テンプレートT1と同様に、各パラメータに対する要件をOCL論理式で表すために用いられる。
テンプレートT2は、「コンポーネント(Component)のパラメータ(param)の値は、スコープ(scope)の中で全て別個である」という要件を表す。分析部120は、上記特徴(a1),(a2),(a4)に対応する要件を記述するためにテンプレートT2を利用する。特徴(a1)を例に挙げれば、文字列“Component”を文字列“Server”に置換する。文字列“param”を文字列“Name”に置換する。文字列“scope”を文字列“AZ”に置換する。
テンプレートT3は、「コンポーネント(Component)のパラメータ(param)の値は、スコープ(scope)の中と外とで同一値をもたない」という要件を表す。分析部120は、上記特徴(b2)に対応する要件を記述するためにテンプレートT3を利用する。具体的には、文字列“Component”を文字列“Server”に置換する。文字列“param”を文字列“Gateway”に置換する。文字列“scope”を文字列“AZ”に置換する。
テンプレートT4は、「コンポーネント(Component)のパラメータ(param)の値は、スコープ(scope)の中と外とで同一値をもち得る」という要件を表す。分析部120は、上記特徴(b1)に対応する要件を記述するためにテンプレートT4を利用する。具体的には、文字列“Component”を文字列“Server”に置換する。文字列“param”を文字列“Name”に置換する。文字列“scope”を文字列“AZ”に置換する。
テンプレートT5は、「スコープ(scope)内のコンポーネント(component1)のパラメータ(param1)の値は、同一スコープ内の他のコンポーネント(component2)のパラメータ(param2)の値の集合に含まれる」という要件を表す。分析部120は、上記特徴(c1)に対応する要件を記述するためにテンプレートT5を利用する。具体的には、文字列“component1”を文字列“Server”に置換する。文字列“component2”を文字列“Switch”に置換する。文字列“param1”を文字列“Gateway”に置換する。文字列“param2”を文字列“IP-Addr”に置換する。文字列“scope”を文字列“AZ”に置換する。
図19は、制約テーブルの例を示す図である。制約テーブル116は、分析部120によって作成され、記憶部110に格納される。制約テーブル116は、パラメータ特徴テーブル114に基づいて作成されたOCL論理式を格納するテーブルである。制約テーブル116は、制約ID、Component、Parameter、Scope、テンプレートおよびOCL論理式の項目を含む。
制約IDの項目には、レコードを識別するための情報が登録される。Componentの項目には、テンプレートの文字列“Component”の部分に挿入されたタイプを示す文字列が登録される。Parameterの項目には、テンプレートの文字列“param”の部分に挿入されたパラメータを示す文字列が登録される。Scopeの項目には、テンプレートの文字列“scope”の部分に挿入されたスコープを示す文字列が登録される。テンプレートの項目には、利用されたテンプレートを示す情報が登録される。OCL論理式の項目には、当該テンプレートに基づいて作成されたOCL論理式が登録される。
例えば、制約テーブル116には、制約IDが“制約1”、Componentが“Server”、Parameterが“Name”、Scopeが“AZ”、テンプレートが“T2”、OCL論理式が“Server.allInstances −>・・・”という情報が登録されている。これは、テンプレートT2から前述のようにして、特徴(a1)に対応する要件を示すOCL論理式が作成されたことを示す。
ここで、制約ID“制約1”〜“制約6”と、上記の特徴(a1)〜(a4),(b1),(b2)との対応は次の通りである。“制約1”は特徴(a1)に対応する。“制約2”は特徴(b1)に対応する。“制約3”は特徴(a2)に対応する。“制約4”は特徴(a3)に対応する。“制約5”は特徴(b2)に対応する。“制約6”は特徴(a4)に対応する。
図20は、制約テーブルの例(つづき)を示す図である。制約テーブル117は、分析部120によって生成され、記憶部110に格納される。制約テーブル117は、特徴(c1)に対応するOCL論理式を格納するためのテーブルである。制約テーブル117は、制約ID、Component1、Component2、Parameter1、Parameter2、Scope、テンプレートおよびOCL論式の項目を含む。
制約IDの項目には、レコードを識別するための情報が登録される。Component1の項目には、テンプレートの文字列“component1”の部分に挿入されたタイプを示す文字列が登録される。Component2の項目には、テンプレートの文字列“component2”の部分に挿入されたタイプを示す文字列が登録される。Parameter1の項目には、テンプレートの文字列“param1”の部分に挿入されたパラメータを示す文字列が登録される。Parameter2の項目には、テンプレートの文字列“param2”の部分に挿入されたパラメータを示す文字列が登録される。Scopeの項目には、テンプレートの文字列“scope”の部分に挿入されたスコープを示す文字列が登録される。テンプレートの項目には、利用されたテンプレートを示す情報が登録される。
例えば、制約テーブル117には、制約IDが“制約7”、Component1が“Server”、Component2が“Switch”、Parameter1が“Gateway”、Parameter2が“IP−Addr”、Scopeが“AZ”、テンプレートが“T5”、OCL論理式が“Allcomponent・・・”という情報が登録されている。これは、テンプレートT5から前述のようにして特徴(c1)に対応する要件を示すOCL論理式が作成されたことを示す。
図21は、新規構成情報の例を示す図である。新規構成情報111aは、新規インフラの設定内容を検証する際に構成要件作成装置100に入力され、記憶部110に格納される。新規構成情報111aは、構成情報111に対して追加された装置を示す情報を含む。具体的には、ラックというスコープのグループ名“R8”のグループにおいて、サーバ名“Svr17”のサーバが追加されている。
新規構成情報111aは、構成情報111と同様に、各スコープのクラスに対するインスタンスおよびインスタンス間のリンクを定義した情報であるということもできる。また、新規構成情報111aは、各装置のクラスに対するインスタンスとスコープのインスタンスとのリンクも含んでいる。新規構成情報111aもUMLオブジェクト図を示す情報として記述できる。
図22は、サーバパラメータテーブルの例を示す図である。サーバパラメータテーブル112aは、新規インフラの設定内容を検証する際に構成要件作成装置100に入力され、記憶部110に格納される。サーバパラメータテーブル112aは、ID、Name、Role、IPおよびGatewayの項目を含む。各項目の設定内容は、サーバパラメータテーブル112と同様である。
例えば、サーバパラメータテーブル112aには、IDが“Svr17”、Nameが“Dom0−3”、Roleが“Dom0”、IPが“192.168.40.14”、Gatewayが“192.168.80.1”という情報が登録されている。これは、新規構成情報111aで追加されているサーバの各パラメータの値を示している。
サーバパラメータテーブル112aのその他のレコードの内容は、サーバパラメータテーブル112のレコードの内容と同じである。
図23は、要件の検証例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
(S61)分析部120は、新規インフラの検証開始の入力を受け付ける。例えば、ユーザは、入力デバイス32を用いて構成要件作成装置100に対する検証開始の入力を行える。当該入力では、新規インフラの情報として記憶部110に記憶された新規構成情報111a、サーバパラメータテーブル112aおよびスイッチパラメータテーブル113が指定される。新規インフラの情報は、検証開始の入力とともに分析部120に入力されてもよい。
(S62)分析部120は、記憶部110に記憶されたパラメータ特徴テーブル114およびテンプレートT1〜T5に基づいて、各要件に応じたOCL論理式を生成する。分析部120は、生成したOCL論理式を制約テーブル116に登録する。
(S63)分析部120は、新規構成情報111a、サーバパラメータテーブル112aおよびスイッチパラメータテーブル113を用いて、UMLオブジェクト図を示すオブジェクトモデル情報を生成する。新規構成情報111aが当該オブジェクトモデル情報の形式として与えられていれば、本ステップS63をスキップしてもよい。
(S64)分析部120は、ステップS62で生成したOCL論理式およびS63で生成した情報を検証部130に入力する。検証部130は、USEの機能を利用して、オブジェクトモデル情報で示される各パラメータの設定値が、既存インフラで満たされている要件を満たすか否かを判定する。
(S65)検証部130は、判定結果を示す情報を生成し、記憶部110に格納する。検証部130は、判定結果の内容をユーザに提示することができる。例えば、検証部130は判定結果の内容をディスプレイ31に表示させることで、ユーザに提示してもよい。検証部130は、要件を満たさないと判定されたパラメータについて、その旨を強調して表示させることで、ユーザによる注意を促してもよい。
このようにして、検証部130は、新規構成情報111a、サーバパラメータテーブル112aおよびスイッチパラメータテーブル113に対して、パラメータ特徴テーブル114で示される要件が満たされているかを検証する。なお、ステップS61〜S63の処理を分析部120により実行するものとしたが、検証部130が各処理を担ってもよい。
図24は、検証結果の例を示す図である。図24では新規構成情報111a、サーバパラメータテーブル112aおよびスイッチパラメータテーブル113に対して、パラメータ特徴テーブル114の要件が示されているかを検証した結果を示している。ここで、各パラメータは、制約テーブル116の“制約2”、“制約5”、“制約6”に対応する要件については満たすと判断されている。一方、次の制約については満たしていないと判断されている。
例えば、タイプ“Server”のパラメータ“Name”は“制約1”を満たしていない。スコープ“AZ”で区分されるグループ名“Reg2−2”のグループ内でID“Svr16”、“Svr17”の各サーバの“Name”の値“Dom0−3”が重複しているからである。
また、タイプ“Server”のパラメータ“IP”は“制約3”を満たしていない。スコープ“Cloud”で区分されるグループ名“Cloud1”のグループ内でID“Svr16”、“Svr17”の各サーバの“IP”の値“192.168.40.14”が重複しているからである。
また、タイプ“Server”のパラメータ“Gateway”は“制約4”を満たしていない。スコープ“AZ”で区分されるグループ名“Reg2−2”のグループ内でID“Svr13”〜“Svr16”の“Gateway”の値“192.168.40.1”と“Svr17”の“Gateway”の値“192.168.80.1”とが異なっているからである。
また、タイプ“Server”のパラメータ“Gateway”は“制約7”を満たしていない。スコープ“AZ”で区分されるグループ名“Reg2−2”のグループ内でID“Svr17”の“Gateway”の値“192.168.80.1”が、ID“Sw7”、“Sw8”の“IP−Addr”の6つの値“192.168.40.1”〜“192.168.40.6”に含まれていないからである。
図25は、検証の流れの例を示す図である。分析部120は、構成情報111、サーバパラメータテーブル112およびスイッチパラメータテーブル113に基づいてパラメータ特徴テーブル114を作成する。分析部120は、パラメータ特徴テーブル114に基づいてOCL論理式を作成し、制約テーブル117に登録する。分析部120は、作成したOCL論理式を検証部130に入力する。
また、分析部120は、新規構成情報111a、サーバパラメータテーブル112aおよびスイッチパラメータテーブル113を用いて、UMLオブジェクト図のオブジェクトモデル情報を生成して検証部130に入力する。
検証部130は、入力された情報により、構成変更後のパラメータの設定値が、分析部120によって抽出された既存のインフラの要件を満たしているかを検証する。検証部130は、検証結果として検証結果テーブル118を生成する。検証結果テーブル118には、図24で説明したように、制約ID毎に、当該OCL論理式で示される要件が満たされているか否かを示す情報が登録される。上記の入力情報に対する各要件の検証結果(要件を満たすか否かの判定結果)は、図24で説明した通りである。
以上のように、構成要件作成装置100によれば、スコープに応じた各パラメータの要件を示す情報を適切に把握できる。例えば、スコープ毎にパラメータの設定値に規則を設け、各装置に対する設定の統制を図ることがある。この場合、スコープ毎の規則に則って各装置の設定変更が行われなければ、当該設定変更が他の装置の動作に対して悪影響を及ぼし得る。例えば、スコープで区分されるグループ内で設定値の重複が許されないパラメータ(例えば、“Name”や“IP”など)について、当該グループ内の複数の装置で設定値が重複すると装置間の通信に支障を来たすおそれがある。ところが、スコープ毎にどのような規則に則った設定が行われているかを把握することは容易でない。例えば、各パラメータに対するスコープ毎の要件を記録した情報の所在が不明なこともある。また、各パラメータに対するスコープ毎の要件を記録した情報が存在していないこともある。
そこで、構成要件作成装置100は、各パラメータに対してスコープに応じた要件を抽出する。このとき、あるスコープで区分されるグループ毎に成立する第1の特徴と、当該スコープで区分されるグループ間で成立する第2の特徴との両方を抽出するので、何れか一方の特徴のみを抽出するよりも、スコープ毎の適切な要件を作成できる。特に、あるスコープで区分されるグループ内で、あるパラメータが特徴をもつ場合、当該パラメータは当該スコープで区分される他のグループにおける当該パラメータの値との間で関係をもつ可能性が高い。構成要件作成装置100によれば、このような関係を的確に把握することができる。ユーザは、作成された要件を参照して、スコープに応じた要件を適切に把握した上で、追加する装置や既存の装置の設定を行い得る。そうすれば、スコープ毎の規則を逸脱した設定が行われるリスクを低減できる。
更に、構成要件作成装置100は、あるパラメータについてある特徴が見出される場合、当該パラメータと別のパラメータとの関係の有無を確認する。例えば、ある種類の装置の設定値(例えば、サーバのデフォルトゲートウェイの設定値)が別の種類の装置の設定値(例えば、L3スイッチがもつIPアドレスの設定値)に関係することがあり得るからである。このような関係を抽出することで、スコープに応じた要件をより適切に把握できる。
なお、第2の実施の形態では、抽出するパラメータの特徴の具体例を挙げて説明したが、例示した以外の特徴を抽出してもよい。例えば、スコープ内のパラメータの特徴として、全て同一値であるか、全て別個の値であるか以外にも、「設定値が、所定量(例えば、1)ずつ増加(あるいは減少)する連続量である」という特徴を抽出することも考えられる。抽出したい特徴は、構成要件作成装置100に対して任意に与えることができる。システムに応じた特徴を構成要件作成装置100に抽出させることで、スコープに応じた要件をより適切に把握できる。
また、構成要件作成装置100は、設定変更後の各装置の各パラメータの設定内容を、抽出した要件と照合して、設定変更後の各パラメータの設定値が適正であるかを検証する。ユーザは、設定変更の作業を行う前に構成要件作成装置100を用いて当該検証を行える。このため、ユーザが、抽出された要件とパラメータの設計内容とを対比して誤設定の有無を確認するよりも、迅速かつ正確に誤設定の有無を確認できる。また、ユーザの作業を省力化できる。すなわち、検証作業を効率化できる。その結果、各装置の設定変更の作業期間を短縮化し得る。
ここで、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、光ディスク33、メモリ装置34およびメモリカード36など)に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。