(58)【調査した分野】(Int.Cl.,DB名)
ワイヤポートに含まれる状態マシン内の状態は、前記ワイヤポートを含むプリミティブに含まれる他のワイヤポートが含む状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、
システム定義展開部は、システム定義内の全てのワイヤリングそれぞれから導出される状態マシンを含み、ワイヤポートに関連する遷移条件を前記ワイヤポートと接続するワイヤリングから導出される状態マシンに関連付け直すように状態マシン群の情報を作成する
請求項1記載の変更管理システム。
現在のシステム定義と新規のシステム定義の2つのシステム定義から、前記2つのシステム定義のいずれかに含まれる全てのプリミティブとワイヤリングを重複無く含むシステム差分定義を生成するシステム定義比較部を含む
請求項1記載の変更管理システム。
システム定義比較部は、現在のシステム定義と新規のシステム定義の2つのシステム定義に含まれるプリミティブを維持または更新するプリミティブと判断し、現在のシステム定義のみに含まれるプリミティブを廃止するプリミティブと判断し、新規のシステム定義のみに含まれるプリミティブを追加するプリミティブと判断し、維持または更新するプリミティブ同士を接続するワイヤリングを維持または更新するワイヤリングと判断し、廃止するプリミティブを少なくとも1つ接続するワイヤリングを廃止するワイヤリングと判断し、追加するプリミティブを少なくとも1つ接続するワイヤリングを追加するワイヤリングと判断する
請求項5記載の変更管理システム。
システム定義展開部は、システム差分定義から、維持または更新されるプリミティブ内のパートから、現在のシステム定義における前記パートの状態を現在状態、新規のシステム定義における前記パートの状態を要求状態として含む状態マシンを生成し、廃止されるプリミティブ内のパートから、現在のシステム定義における前記パートの状態を現在状態として含む状態マシンを生成し、追加されるプリミティブ内のパートから、前記パートの初期の状態を現在状態、新規のシステム定義における前記パートの状態を要求状態として含む状態マシンを生成し、維持または更新されるワイヤリングから、現在状態と要求状態を共に接続状態として含む状態マシンを生成し、廃止されるワイヤリングから、現在状態を接続状態、要求状態を非接続状態として含む状態マシンを生成し、追加されるワイヤリングから、現在状態を非接続状態、要求状態を接続状態として含む状態マシンを生成する
請求項6記載の変更管理システム。
【発明を実施するための形態】
【0019】
実施形態1.
[構成の説明]
以下、本発明の第1の実施形態を、図面を参照して説明する。
図1は、本発明による変更管理システムの第1の実施形態の構成例を示すブロック図である。
図1に示す変更管理システム100は、システム定義展開部101を含む。
【0020】
システム定義展開部101は、システム定義を、1または複数の状態マシンから構成される状態マシン群に展開する機能を有する。システム定義展開部101は、外部の入出力部201と、通信ネットワークなどを介して通信可能に接続されている。
【0021】
入出力部201には、システム定義が入力される。システム定義展開部101は、入出力部201を介して、入力されたシステム定義を受信する。システム定義展開部101は、受信したシステム定義を状態マシン群に変換し、入出力部201に送信する。入出力部201は、送信された状態マシン群を出力する。
【0022】
本実施形態における状態マシン群は、管理対象になるシステム、および管理対象になるシステムに対する変更要求を示す。状態マシン群は、1または複数の状態マシンから構成される。状態マシンは、システムを構成する部品を示す。
【0023】
状態マシンは、複数の状態を含む。状態は、同一状態マシン内の他の状態への遷移を含む。状態マシンは、必ず1つの現在状態と、任意個の要求状態を含む。ただし、要求状態が複数指定された場合、要求状態は、指定されたいずれかの状態であればよい。要求状態が指定されない場合、要求状態は、どの状態でもよい。また、遷移の遷移条件は、遷移が含まれる状態マシン以外の状態マシン内の状態によって指定される。
【0024】
図2は、状態マシン群の概念を示す説明図である。
図2において、状態マシンを長方形で表す。また、状態を楕円形で表す。また、遷移を実線の矢印で表す。また、遷移条件を点線の矢印で表す。また、現在状態を破線の楕円形で表す。また、要求状態を黒塗りの楕円形で表す。また、遷移を示す矢印の途中に存在する丸印は、遷移条件の矢印の始点を示す。他の図においても、
図2と同じ方法で状態マシンなどが示される。
【0025】
図2は、"e1"と"e2"の2つの状態マシンから構成される状態マシン群を示す。"e1"と"e2"は、共に"s1"と"s2"の2つの状態を含む。
【0026】
図2に示すように、"e1"における"s1"は、"s2"への遷移を含む。また、"e2"における"s1"と"s2"は、互いの状態への遷移を含む。また、"e2"の"s1"から"s2"への遷移は、"e1"の状態"s2"を遷移条件にする。また、"e1"は、"s1"を現在状態にする。また、"e2"は、"s1"を現在状態にし、"s2"を要求状態にする。
【0027】
以下、便宜的に、例えば、状態マシン"e1"の状態"s1"のことを"e1(s1)"と記載する。また、状態マシン"e1"の状態"s1"から状態"s2"への遷移を、"e1(s1,s2)"と記載する。
【0028】
図3は、状態マシン群のテキストによる定義の一例を示す説明図である。
図3は、XML(Extensible Markup Language)形式を用いた表現の一例として、
図2に示す状態マシン群の定義例を示す。
【0029】
図3に示すように、例えば、状態マシンは、"stateMachine"タグによって表される。また、状態マシンのIDは、"stateMachine"の"id"属性によって表される。また、状態マシンが持つ状態は、"stateMachine"タグの子要素としての"state"タグによって表される。また、状態のIDは、"state"の"id"属性によって表される。
【0030】
また、
図3に示すように、状態が持つ遷移は、"state"タグの子要素としての"transition"タグによって表される。また、遷移先の状態を示すIDは、"transition"の"to"属性によって表される。遷移に伴って実行されるシステム変更タスクは、"transition"タグの"task"属性によって表される。
【0031】
また、
図3に示すように、遷移が持つ遷移条件は、"transition"タグの子要素としての"conditions"タグによって表される。遷移が状態マシン"e1"の状態"s2"を遷移条件にする場合、遷移条件は、"conditions"タグの子要素として"depends"タグを記述し、"depends"の"on"属性に"e1(s2)"を記述することによって表される。1つの遷移が複数の遷移条件を持つ場合、複数の遷移条件を記述するには、"conditions"タグの子要素として複数の"depends"タグを記述すればよい。
【0032】
システム変更タスクは、システム変更タスクがコンピュータによって実行される場合、例えば、プログラムとして記述される。また、人間の作業者によって実行される場合、システム変更タスクは、例えば、自然言語で記述される。
【0033】
図3に示す例では、システム変更タスクが人間の作業者によって実行される場合が想定されているため、システム変更タスクが自然言語で記述されている。なお、"task"属性に直接内容が記述される代わりに、外部のファイルにシステム変更タスクが記述され、"task"属性にファイルへの参照ポインタが記述されてもよい。また、
図3に示すような一行程度の説明の代わりに、システム変更タスクに関する詳細な説明が記述されてもよい。
【0034】
上述したような状態マシン群に基づくシステムの変更計画の作成は、常に全ての遷移条件を満たしつつ、要求状態が指定された全ての状態マシンの状態を現在状態から要求状態へ遷移させるような遷移順序を発見することによって達成される。
図2に示す状態マシン群の例であれば、"(e1(s1,s2), e2(s1,s2))"という遷移順序が、最も単純な唯一の解になる。
【0035】
図4は、遷移順序の導出結果の一例を示す説明図である。
図4において、左の角丸四角形は遷移を示す。また、遷移間の矢印は、遷移間の依存性を表す。すなわち、遷移間の矢印は、"e1(s1,s2)"が実施された後にのみ"e2(s1,s2)"が実施されるという関係性を示す。
【0036】
また、
図4において、遷移から点線で結ばれている底辺が曲線のブロックは、遷移に関連付けられたシステム変更タスクを示す。実施される遷移の順序通りにシステム変更タスクが実行されることによって、システムの変更計画が正しく実行される。
【0037】
次に、本実施形態におけるシステム定義を説明する。本実施形態では、状態マシン群を所定の構造で表現することによって、より大きく複雑なシステムを示す状態マシン群が簡潔に定義される。システム定義は、システム定義展開部101によって状態マシン群に変換される。
【0038】
本実施形態において、システム定義は、システムを構成する部品を表す概念であるコンポネントの集合によって表現される。コンポネントは、システムを構成する状態マシン群の定義の一部を含む。
【0039】
コンポネントの種類には、プリミティブとコンポジットがある。プリミティブは、システムを構成する特定の部品を表す。コンポジットは、いくつかのコンポネントが組み合せられた構成を表す。コンポジットは、複数のコンポジットやプリミティブを含む。すなわち、コンポジットを用いると、より大きく複雑な部品が簡潔に定義される。ただし、コンポジットは、状態マシン群に変換される前に、全てプリミティブに分解される。
【0040】
図5は、プリミティブの一例を示す説明図である。
図5(a)は、ネットワークインタフェースカードである"nic"のプリミティブの例を示す。
図5(b)は、物理サーバマシンである"server"のプリミティブの例を示す。
【0041】
プリミティブは、主にパートとワイヤポートの2つの種類の状態マシンから構成される。パートは、プリミティブが持つ、単独で変更可能な状態マシンを表す。ワイヤポートは、プリミティブが他のプリミティブと接続する際に用いられる状態マシンを表す。パートとワイヤポートは、それぞれ独自の状態を持つため、独立した状態マシンとして表される。また、同一プリミティブ内の状態マシン間で、遷移条件が自由に設定される。
【0042】
本実施形態において、ワイヤポートには、アクセプトとコンシュームの2種類がある。アクセプトは、他のプリミティブに含まれるコンシュームからの接続を受け付ける機能を有する。コンシュームは、他のプリミティブに含まれるアクセプトに接続する機能を有する。なお、
図5において、アクセプトは縦線の模様で、コンシュームは横線の模様でそれぞれ示される。アクセプトとコンシュームは、他の図においても同様の方法で示される。
【0043】
2つのプリミティブは、一方のプリミティブに含まれるコンシュームが、もう一方のプリミティブに含まれるアクセプトに接続することによって接続される。ただし、互いに接続するコンシュームとアクセプトは、特定の規格に従った接続部同士であることが求められる。本実施形態において、特定の規格を表す概念をワイヤインタフェースと呼ぶ。
【0044】
図5(b)に示す"server"は、コンシュームと、2つのアクセプトと、パートである"box"と、パートである"top"とを有する。
【0045】
図5に示す各ワイヤポートの近傍に記載された下線付きの文字は、各ワイヤポートが従うワイヤインタフェースに対応する。例えば、
図5(b)において、コンシュームはワイヤインタフェース"RS"に従う。また、上側のアクセプトはワイヤインタフェース"NW"に、下側のアクセプトはワイヤインタフェース"PCI"にそれぞれ従う。ワイヤインタフェースは、他の図においても同様の方法で示される。
【0046】
"RS"は、サーバラックへの設置に関するワイヤインタフェースである。"NW"は、ネットワークケーブルに関するワイヤインタフェースである。"PCI"は、PCIExpressに関するワイヤインタフェースである。
【0047】
各ワイヤポート内の"sep"は、ワイヤポートが非接続状態(Separate)であることを表す。また、"con"は、ワイヤポートが接続状態(Connect)であることを表す。
【0048】
また、"box"は、"server"が箱に入っているか否かを示すパートである。"box(out)"は、"server"が箱に入っていない状態を示す。また、"box(in)"は、"server"が箱に入っている状態を示す。
【0049】
また、"top"は、"server"の筐体の蓋に関するパートである。"top(open)"は、"server"の蓋が開いている状態を示す。また、"top(close)"は、"server"の蓋が閉まっている状態を示す。
【0050】
"box"以外の全ての状態マシンは、"box(out)"を遷移条件に指定する。その理由は、"server"が箱に入っている場合、作業者は、何の作業も実施できないためである。
【0051】
また、"RS"に従うコンシュームは、"top(close)"を遷移条件に指定する。その理由は、"server"をラックに設置したりラックから外したりする際、筐体の蓋が閉まっている必要があるためである。また、"top"は、"RS(sep)"を遷移条件に指定する。その理由は、蓋を開け閉めする際、"server"がラックから外れている必要があるためである。
【0052】
また、"RS"に従うコンシュームは、"NW(sep)"を遷移条件に指定する。その理由は、ネットワークケーブルは"server"がラックに設置された後に接続され、"server"がラックから外される前に抜かれる必要があるためである。
【0053】
また、"PCI"に従うアクセプトは、"top(open)"を遷移条件に指定する。その理由は、PCIExpressスロットへの部品の抜き差しをする際には、筐体の蓋が開いている必要があるためである。
【0054】
なお、
図5は、
図2と異なり、状態マシン自体から他の状態マシン内の状態に対する遷移条件に対応する矢印を示す。矢印は、状態マシン内の全ての遷移が、矢印が示す遷移条件と同様の遷移条件を持つことを示す。他の図においても、同様の表記が用いられる。
【0055】
図6は、プリミティブのテキストによる定義の一例を示す説明図である。
図6は、JSON(JavaScript(登録商標) Object Notation)形式を用いた表現の一例として、
図5(a)に示すプリミティブである"nic"をテキストで定義した例を示す。
図6に示す定義は、プリミティブのIDを示すid要素と、ワイヤポートを示すports要素と、パートを示すparts要素とを持つ。ports要素は、consume要素とaccept要素を持つ。
【0056】
"nic"は、id要素として"nic"を、consume要素として"pciExpress"を、accept要素として"networkPort"を、parts要素として"box"をそれぞれ持つ。ports内の各要素は、ワイヤインタフェースを示すinterface要素と、状態のリストを示すstates要素を持つ。
【0057】
"pciExpress"は、interface要素として"pciExpress"を持ち、states要素として"connect"と"separate"を持つ。
【0058】
states内の各要素は、状態マシンの状態を表す。states内の各要素は、遷移可能な他の状態のリストと、状態に遷移する際の遷移条件を示す"depends"要素を持つ。
【0059】
"pciExpress"の状態"connect"は、"separate"への遷移を持つ。また、"pciExpress"の状態"separate"も、"connect"への遷移を持つ。各遷移は、いずれもdepends要素として"box(out)"と"networkPort(separate)"を持つ。
【0060】
なお、
図5(a)に示すaccept要素である"networkPort"にも見られるように、ワイヤポートは、いずれも"pciExpress"と同様の状態と遷移の構造を持つ。ただし、
図6に示すように、"networkPort"におけるdepends要素には、"box(out)"と"pciExpress(connect)"が指定されている。
【0061】
parts内の各要素は、状態のリストを示すstates要素と、現在状態を示すcurrentState要素と、要求状態を示すdesiredState要素を持つ。parts内の状態を示す要素が持つ遷移は、システム変更タスクを示すtask要素を持つ。
【0062】
parts要素である"box"は、"in"と"out"の2つの状態を持つ。"in"から"out"の遷移には、task要素として"nicをパッケージから取り出します。"というシステム変更タスクが記載されている。状態"out"からの遷移はないため、要素"out"の内部には何も記載されていない。
【0063】
"box"は、現在状態を示すcurrentState要素として"in"を持ち、要求状態を示すdesiredState要素として何も持たない。なお、プリミティブにおいて、現在状態には常に何らかの値が必要になる。よって、現在状態が設定されていなかった場合に使用されるように、初期状態が設定されてもよい。
図6に示す"box"の例では、defaultState要素として"in"が設定されている。初期状態は、例えば、プリミティブが販売業者から出荷された当初の状態に基づいて設定される。
【0064】
なお、
図6に示すように、ports内の各要素における遷移は、システム変更タスクを持たない。その理由は、システム変更タスクがワイヤインタフェースによって定義されるためである。
【0065】
図7は、ワイヤインタフェースのテキストによる定義の一例を示す説明図である。
図7に示す例では、ワイヤインタフェースは、name要素とtasks要素のみを持つ。tasks要素は、connect要素とseparate要素のみを持つ。connect要素は、ワイヤインタフェースに部品を接続する際のシステム変更タスクを示す。separate要素は、ワイヤインタフェースから部品を取り外す際のシステム変更タスクを示す。
【0066】
図7は、PCIExpressのワイヤインタフェースの定義の例を示す。name要素には、"pciExpress"が記載されている。tasks内のconnect要素には、"{{consumer.id}}を{{acceptor.id}}のPCIスロットに差し込みます。"が記載されている。tasks内のseparate要素には、"{{consumer.id}}を{{acceptor.id}}のPCIスロットから抜き取ります。"が記載されている。
【0067】
なお、システム変更タスクは、テンプレートとして記述されていてもよい。上記の例では、"{{consumer.id}}"などの記述は、システム定義の展開処理時に適切な値に置き換えられる。例えば、ワイヤインタフェース"pciExpress"を介して"nic"のコンシュームと"server"のアクセプトが接続される場合であれば、上記のconnect要素のシステム変更タスクは、"nicをserverのPCIスロットに差し込みます。"のように変換される。
【0068】
図8は、接続されたプリミティブの一例を示す説明図である。
図8は、プリミティブ"server"とプリミティブ"nic"とが"PCI"のワイヤインタフェースに従うワイヤポートを介して接続された様子を示す。本実施形態において、2つのワイヤポートの接続を示す概念をワイヤリングと呼ぶ。
図8において、ワイヤリングは、太い曲線で示される。なお、ワイヤリングを用いたプリミティブの接続に関する定義は、後述のようにコンポジットの説明の中で説明する。
【0069】
図9は、接続されたプリミティブから展開された状態マシン群の一例を示す説明図である。
図9は、
図8に示すプリミティブとワイヤリングから構成されるシステム定義を展開することによって生成される状態マシン群を示す。
【0070】
システム定義の展開時に、接続していないワイヤポート、および接続していないワイヤポートに関連する遷移条件は除去される。パートは、全て状態マシンとして展開結果に移管される。移管される際、各状態マシンが唯一のIDを持つように、例えば、展開元のプリミティブのIDとパートの名前が"."で連結された文字列が、状態マシンのIDとして付加される。
【0071】
ワイヤリング、およびワイヤリングを介して接続する両端のワイヤポートは、1つの状態マシンとして展開結果に移管される。両端のワイヤポートに関連する遷移条件は、全て状態マシンに引き継がれる。すなわち、パートからワイヤポートへの遷移条件や、ワイヤポートからパートへの遷移条件は削除される。代わりに、パートから、ワイヤポートとワイヤリング由来の状態マシンへの遷移条件や、ワイヤポートとワイヤリング由来の状態マシンからパートへの遷移条件が作成される。
【0072】
また、パート由来の状態マシンの現在状態と要求状態には、パートに指定されていた現在状態と要求状態が引き継がれる。本実施形態において、ワイヤポートとワイヤリング由来の状態マシンの現在状態には"separate"が、要求状態には"connect"が、それぞれ必ず設定される。また、ワイヤポートとワイヤリング由来の状態マシンの遷移やシステム変更タスクには、ワイヤポートのワイヤインタフェースに定義されている遷移やシステム変更タスクが設定される。
【0073】
図10は、システムの変更計画の生成結果の一例を示す説明図である。
図10は、
図9に示す状態マシン群に基づいて計算することによって得られるタスクの一例を示す。
図10に示すように、上記に示すプリミティブの定義とプリミティブの接続の定義に基づいて、実行可能なシステム変更タスクが生成されることが分かる。
【0074】
次に、もう1つのコンポネントであるコンポジットを説明する。
図11は、コンポジットの一例を示す説明図である。
図11は、上記の"server"と"nic"を組み合わせた構成を1つの部品のように扱うためのコンポジットの例である、"serverWithNIC"を示す。
【0075】
コンポジットは、主に内部のコンポネントとワイヤポートから構成される。コンポジットのワイヤポートは、コンポジット内部のコンポネントのいずれかのワイヤポートを参照する。すなわち、コンポジットのワイヤポートは、参照先になるコンポジット内部のコンポネントのワイヤポートに接続されている。本実施形態において、この接続の概念をプロモートと呼ぶ。
【0076】
プロモートされるワイヤポートは、プロモートするワイヤポートと同じワイヤインタフェースを持つ必要がある。よって、アクセプトは、アクセプトにプロモートされる。また、コンシュームは、コンシュームにプロモートされる。
【0077】
また、コンポジットが持つワイヤポートや、コンポジット内部のコンポネントが持つ状態マシン間において、任意の遷移条件が定義される。
【0078】
システム定義を展開する際、システム定義展開部101は、コンポジット自体の定義をシステム定義から除去し、代わりに内部のコンポネントの定義をシステム定義に追加する。例えば、システム定義展開部101は、コンポジットのワイヤポートに関連付けられているワイヤリングや遷移条件を、ワイヤポートがプロモートするコンポジット内部のコンポネントのワイヤポートに関連付け直す。その結果、コンポジットの定義が、コンポジット内部のコンポネントの定義に変換される。
【0079】
図11に示す"serverWithNIC"の場合、ワイヤポートとして、"RS"に従う1つのコンシュームと、"NW"に従う2つのアクセプトが定義されている。なお、
図11に示すように、"RS"と"NW"は、共にワイヤインタフェースである。
【0080】
また、
図11に示すように、コンポジット内部のコンポネントとして、"nic"と"server"の2つのプリミティブが定義されている。"nic"と"server"は、ワイヤインタフェース"PCI"に従うワイヤポートを介してワイヤリングで接続されている。
【0081】
"serverWithNIC"内の"NW"に従う上側のアクセプトは、"server"内の"NW"に従うアクセプトにプロモートされている。また、"NW"に従う下側のアクセプトは、"nic"内の"NW"に従うアクセプトにプロモートされている。
【0082】
"serverWithNIC"内の"RS"に従うコンシュームは、"server"内の"RS"に従うコンシュームにプロモートされている。なお、"serverWithNIC"内の"RS"に従うコンシュームは、"NW"に従う下側のアクセプトの状態"sep"に対して遷移条件を定義する。
【0083】
コンポジット内のワイヤポートに関連付けられたワイヤリングや遷移条件は、展開時に全てプロモート先のワイヤポートに移管される。
図11に示す例の場合、"RS"、"NW"のワイヤインタフェースにそれぞれ従う"serverWithNIC"内の各ワイヤポートが持つ遷移条件と同様の遷移条件が、"server"内にある"RS"に従うコンシュームと、"nic"内にある"NW"に従うアクセプトの間に移管される。"RS"に従うワイヤポートが持つ遷移条件は、移管される遷移条件に該当する。
【0084】
図12は、コンポジットのテキストによる定義の一例を示す説明図である。
図12は、JSON形式を用いた表現の一例として、
図11に示す"serverWithNIC"をテキストで定義した例を示す。
【0085】
図12に示す定義は、コンポジットのIDを示すid要素と、ワイヤポートを示すports要素と、コンポジット内部のコンポネントを示すcomponents要素と、コンポジット内部のコンポネントの接続を示すwires要素とを持つ。
【0086】
図12に示すports要素の構造は、
図6に示すプリミティブの定義におけるports要素の構造とほぼ同様であるが、プロモートを示すpromote要素が含まれる点が異なる。components要素には、内包される各コンポネントのIDのリストが定義される。wires要素には、2つの内部コンポネントの参照先のワイヤポートから構成されるワイヤリングのリストが定義される。
【0087】
図12に示す例において、components要素には"server"と"nic"が定義されている。また、consume要素には"rackspace"が定義されている。また、accept要素には"networkPort1"と"networkPort2"が定義されている。
【0088】
"rackspace"のワイヤインタフェースには"rackspace"が定義されている。この定義は、
図11に示す"RS"のワイヤインタフェースに従うコンシュームに対応する。"networkPort1"と"networkPort2"は、
図11に示す"NW"のワイヤインタフェースに従う2つのアクセプトにそれぞれ対応する。
【0089】
"rackspace"のpromote要素には"server.rackspace"が定義されている。この定義は、"rackspace"が内部コンポネントである"server"のワイヤポート"rackspace"にプロモートされることを示す。同様に、"networkPort1"のpromote要素には"server.networkPort"が定義されている。また、"networkPort2"のpromote要素には"nic.networkPort"が定義されている。
【0090】
また、wires要素には、"nic.pciExpress:server.pciExpress"が定義されている。この定義は、内部コンポネント"nic"のワイヤポート"pciExpress"と、内部コンポネント"server"のワイヤポート"pciExpress"とが、ワイヤリングで接続されることを示す。
【0091】
なお、
図8に示すようなシステム定義も、ワイヤポートを持たないコンポジットとして、
図12に示す定義と同様に記述される。
【0092】
上記の定義方法によれば、複数のプリミティブやコンポジットを組み合わせることによって構成されるシステムが定義される。
図13は、プリミティブとコンポジットとで構成されるシステム定義の一例を示す説明図である。
図13において、特に示す必要のない状態の表示は省略する。
【0093】
図13は、上記の"serverWithNIC"と、"cable"、"switch"、および"rack"の3つのプリミティブとで構成されるコンピュータスタックのシステムの定義の例を示す。"cable"、"switch"、および"rack"の定義を、
図14に示す。
図14は、プリミティブの他の一例を示す説明図である。
【0094】
図15は、コンポジットから展開されたプリミティブの一例を示す説明図である。
図15は、
図13に示すコンポジットがプリミティブにまで展開された様子を示す。
【0095】
図16は、プリミティブから展開されたシステム定義の状態マシン群の一例を示す説明図である。
図16は、
図15に示すプリミティブが、さらに状態マシン群にまで展開された様子を示す。
【0096】
本実施形態においてシステムを定義する際、コンポジットの内部コンポネントには既に定義されたコンポネントが再利用される。
図13に示す例では、"serverWithNIC"と"cable"と"switch"と"rack"の4つの定義が再利用されている。各定義を単にワイヤリングを用いてつなげることで、
図16に示すような、12個の状態マシンと、状態マシン間の複雑な遷移条件とで構成される状態マシン群が簡単に定義される。
【0097】
なお、本実施形態のシステム定義展開部101は、例えば、非一時的なコンピュータ読み取り可能な記録媒体に記憶されたプログラムの制御に従って処理を実行するCPU(Central Processing Unit)によって実現される。
【0098】
[動作の説明]
以下、本実施形態の変更管理システム100の動作を
図17を参照して説明する。
図17は、変更管理システム100によるシステム定義展開処理の動作を示すフローチャートである。
【0099】
システム定義展開部101は、入出力部201からシステム定義の情報を受信する。システム定義展開部101は、受信した情報に基づくシステムをコンポジットとみなす。すなわち、システム定義展開部101は、コンポジットを再起的にプリミティブとワイヤリングに分解する処理を実施する(ステップS101)。
【0100】
ステップS101における処理により、システムの内部に含まれるコンポジットや、コンポジットの内部にさらに含まれるコンポジットが、全てプリミティブとワイヤリングのみに分解される。
【0101】
次いで、システム定義展開部101は、全てのプリミティブ内にある、全てのパート内の状態マシンを、出力結果にする状態マシン群の情報にコピーする(ステップS102)。
【0102】
次いで、システム定義展開部101は、全てのワイヤリング内の状態マシンを、出力結果にする状態マシン群の情報にコピーする。コピーする際、システム定義展開部101は、ワイヤリングの両端のワイヤポートに対する遷移条件や、ワイヤポートが持つ遷移条件の情報を除去する。
【0103】
除去した後、システム定義展開部101は、除去した遷移条件と同様の遷移条件をワイヤリング由来の状態マシンに対して再定義する(ステップS103)。ワイヤリングを展開した後、システム定義展開部101は、処理を終了する。
【0104】
次に、ステップS101における処理を
図18を参照して具体的に説明する。
図18は、変更管理システム100によるコンポジット展開処理の動作を示すフローチャートである。
【0105】
コンポジットを受信すると、システム定義展開部101は、コンポジットの基であるシステム定義からコンポジットの定義を除去する。除去した後、システム定義展開部101は、コンポジットの定義の代わりに、コンポジットの内部のコンポネントの定義を追加する(ステップS1011)。
【0106】
次いで、システム定義展開部101は、コンポジットが含む全てのワイヤポートに関連付けられている全てのワイヤリングと遷移条件を、ワイヤポートとプロモートで結ばれた内部のコンポネントのワイヤポートに移管する(ステップS1012)。
【0107】
ステップS1012における移管では、具体的には、元のワイヤリングや遷移条件の定義が変換される。例えば、定義におけるコンポジットのワイヤポートである部分を、移管先の内部のコンポネントのワイヤポートに変更することが、定義の変換に該当する。
【0108】
例えば、
図13に示すシステム定義を
図15に示すプリミティブに展開する例では、"rack"と"serverWithNIC"を接続する"RS"をワイヤインタフェースとして持つワイヤリングが、"rack"と"server"を接続するワイヤリングに変換される。
【0109】
より具体的には、システム定義内のワイヤリングの定義における、"serverWithNIC.rackspace1:rack.rackspace2"の記述が、例えば、"server.rackspace:rack.rackspace2"の記述に変更される。
【0110】
同様に、"serverWithNIC"のコンシューム"rackspace"が持つ"serverWithNIC.networkPort2(separate)"への遷移条件は、"nic.networkPort(separate)"への遷移条件として、"server"のコンシューム"rackspace"に追加される。
【0111】
次いで、システム定義展開部101は、コンポジットの内部のコンポネントの中にコンポジットがあれば、コンポジットを1つずつ取得する。取得した後、システム定義展開部101は、展開する処理を取得した全てのコンポジットに対して再度繰り返す。
【0112】
システム定義展開部101は、コンポジットの内部のコンポネントにコンポジットがあるかを確認する(ステップS1013)。コンポジットがない場合(ステップS1013におけるNO)、システム定義展開部101は、処理を終了する。
【0113】
コンポジットがある場合(ステップS1013におけるYES)、システム定義展開部101は、コンポジットを取得し、再度展開処理を実施する(ステップS1014)。コンポジットを展開した後、システム定義展開部101は、再度ステップS1013における処理を行う。
【0114】
[効果の説明]
本実施形態の変更管理システムによれば、予め定義された部品情報を再利用しつつ、部品情報を組み合わせることによって、効率的に状態マシン群が記述される。
【0115】
実施形態2.
[構成の説明]
以下、本発明の第2の実施形態を、図面を参照して説明する。
図19は、本発明による変更管理システムの第2の実施形態の構成例を示すブロック図である。
図19において、第1の実施形態と同様の構成要素には同一の符号を付し、説明を省略する。
【0116】
図19に示すように、本実施形態における変更管理システム100は、システム定義展開部101に加えて、システム定義比較部102を備える。システム定義比較部102は、現在のシステム定義と新規のシステム定義の2つの定義から、システム差分定義を生成する機能を有する。システム定義展開部101は、システム定義比較部102と通信ネットワークなどを介して通信可能に接続されている。
【0117】
本実施形態におけるシステム定義展開部101は、入出力部201から新旧の2つの状態マシン群の情報を受信する。システム定義展開部101は、受信した情報をシステム定義比較部102に入力する。
【0118】
システム定義比較部102は、入力された2つの状態マシン群を比較してシステム差分定義を生成する。システム定義比較部102は、生成したシステム差分定義をシステム定義展開部101に返す。
【0119】
次いで、システム定義展開部101は、システム差分定義に基づいて状態マシン群を生成する。システム定義展開部101は、生成した状態マシン群を入出力部201に返す。
【0120】
図20は、2つの異なるバージョンのシステム定義の一例を示す説明図である。
図20(a)に示す、version1と記載されているシステム定義が、現在のシステム定義である。また、
図20(b)に示す、version2と記載されているシステム定義が、新しいシステム定義である。
【0121】
2つのシステム定義の違いは、
図20(a)に示す現在のシステム定義におけるプリミティブである"gatewayServer"の部分が、
図20(b)に示す新しいシステム定義ではコンポジットである"serverWithNIC"に変更されている点である。
【0122】
すなわち、システム変更計画には、"gatewayServer"をシステムから取り除き、次いで"serverWithNIC"をシステムに組み込むというシステム変更タスクが加えられる。なお、"gatewayServer"は、例えば、
図21に示す構成を取る。
図21は、プリミティブの他の一例を示す説明図である。
【0123】
本実施形態において、入力されるシステム定義内のプリミティブが持つパートは、いずれも現在状態のみを持つとする。すなわち、新しいシステム定義においても、プリミティブは要求される状態を現在状態として持つ。ただし、全てのプリミティブ内の各パートは、必ず初期状態を持つとする。初期状態は、例えば、プリミティブが販売業者から出荷された当初の状態に基づいて設定される。
【0124】
図22は、
図20に示す2つのシステム定義から生成されるシステム差分定義の一例を示す説明図である。システム差分定義において、元になったシステム定義に含まれるコンポジットは、全てプリミティブに展開された状態で存在する。
【0125】
図22に示すシステム差分定義には、"cable"、"switch"、"rack"、"gatewayServer"、"nic"、および"server"の6つのプリミティブが含まれる。6つのプリミティブの中で、"cable"、"switch"、および"rack"の3つは、新旧両方のシステム定義に含まれる。よって、3つのプリミティブそのものは、システム差分定義内に維持されるプリミティブとしてマーキングされる。また、3つのプリミティブの各パートの状態は、必要に応じて更新される。
【0126】
"gatewayServer"は、現在のシステム定義のみに含まれる。よって、"gatewayServer"のプリミティブは、廃止されるプリミティブとしてマーキングされる。"nic"と"server"は、新しいシステム定義のみに含まれる。よって、"nic"と"server"のプリミティブは、システム差分定義に新たに追加されるプリミティブとしてマーキングされる。
【0127】
また、維持されるプリミティブ同士を接続するワイヤリングは、維持されるワイヤリングとしてマーキングされる。
図22に示す"NW1"、"RS1"と付されたワイヤリングが、維持されるワイヤリングに該当する。
【0128】
また、維持されるプリミティブと廃止されるプリミティブを接続するワイヤリングは、取りはずされるワイヤリングとしてマーキングされる。
図22に示す"NW2"、"RS2"と付されたワイヤリングが、取りはずされるワイヤリングに該当する。
【0129】
また、維持されるプリミティブと追加されるプリミティブを接続するワイヤリング、または追加されるプリミティブ同士を接続するワイヤリングは、新たに設定されるワイヤリングとしてマーキングされる。
図22に示す"NW3"、"RS3"および"PCI"と付されたワイヤリングが、新たに設定されるワイヤリングに該当する。
【0130】
なお、廃止されるプリミティブ同士を接続するワイヤリングは、取りはずされてもよいし、維持されてもよい。
【0131】
図23は、システム差分定義から展開される状態マシン群の一例を示す説明図である。
図23は、
図22に示すシステム差分定義を展開することによって生成される状態マシン群の例を示す。本実施形態におけるプリミティブとワイヤリングの状態マシンへの展開方法は、基本的に第1の実施形態における展開方法と同様である。
【0132】
しかし、本実施形態における展開方法では、現在状態と要求状態を新旧のシステム定義に応じて設定し直す点が、第1の実施形態における方法と異なる。また、同一のワイヤポートに接続される新旧2つのワイヤリングがある場合、一方のワイヤリングを接続する遷移が、他方のワイヤリングが外れていることを遷移条件にするように、遷移条件を追加する点も異なる。
【0133】
維持または更新されるプリミティブ内のパートは、現在のシステム定義におけるパートの現在状態を現在状態、新規のシステム定義におけるパートの現在状態を要求状態として含む。
【0134】
廃止されるプリミティブ内のパートは、現在のシステム定義におけるパートの現在状態を現在状態として含む。廃止されるプリミティブ内のパートの要求状態は、任意の状態で構わないため、設定されなくてもよい。
【0135】
追加されるプリミティブ内のパートは、パートの初期状態を現在状態、新規のシステム定義におけるパートの現在状態を要求状態として含む。
【0136】
また、維持されるワイヤリングは、現在状態と要求状態を共に接続状態として含む。取りはずされるワイヤリングは、現在状態を接続状態、要求状態を非接続状態として含む。新たに接続されるワイヤリングは、現在状態を非接続状態、要求状態を接続状態として含む。
【0137】
図23に示す例において、廃止されるプリミティブ同士を接続するワイヤリングは存在しない。仮に廃止されるプリミティブ同士を接続するワイヤリングが存在する場合、ワイヤリングは、現在状態を接続状態として含み、要求状態として何も含まない。
【0138】
また、
図23に示す例において、遷移順序の計算結果に影響を与える遷移条件であるワイヤリングへの遷移条件には、新しいワイヤリングから現在のワイヤリングへの遷移条件のみが追加されている。
図23に示す遷移"NW3(sep, con)"から"NW2(sep)"への遷移条件と、遷移"RS3(sep, con)"から"RS2(sep)"への遷移条件が、追加された遷移条件に相当する。
【0139】
[動作の説明]
以下、本実施形態の変更管理システム100の動作を
図24を参照して説明する。
図24は、変更管理システム100によるシステム差分定義の生成処理と展開処理の動作を示すフローチャートである。
【0140】
本実施形態のシステム定義展開部101は、入出力部201から新旧2つのバージョンのシステム定義の情報を受信する。システム定義展開部101は、受信した情報に基づくシステムをコンポジットとみなす。システム定義展開部101は、各コンポジットをそれぞれプリミティブとワイヤリングに分解する(ステップS201)。
【0141】
システム定義展開部101は、プリミティブとワイヤリングのみに展開された各システム定義をシステム定義比較部102に入力する。なお、ステップS201における具体的な処理は、第1の実施形態におけるステップS101における処理と同様である。
【0142】
次いで、システム定義比較部102は、入力された2つのシステム定義からシステム差分定義を生成する(ステップS202)。システム定義比較部102は、生成したシステム差分定義をシステム定義展開部101に返す。
【0143】
次いで、システム定義展開部101は、システム定義比較部102から入力されたシステム差分定義を展開して状態マシン群を生成する(ステップS203)。システム定義展開部101は、生成した状態マシン群を入出力部201に返す。状態マシン群を返した後、システム定義展開部101は、処理を終了する。
【0144】
次に、ステップS202における処理を
図25を参照して具体的に説明する。
図25は、変更管理システム100によるシステム差分定義生成処理の動作を示すフローチャートである。
【0145】
システム定義比較部102は、現在のシステム定義の内容を、暫定のシステム差分定義にコピーする。コピーした後、システム定義比較部102は、現在のシステム定義における全てのプリミティブを廃棄するように記録する(ステップS2021)。記録するためには、例えば、
図6に示すデータ内にprimitiveState要素を1つ追加し、追加したprimitiveStateの値を"old"にすればよい。
【0146】
次いで、システム定義比較部102は、新規のシステム定義内のプリミティブとワイヤリングを1つずつ取得する。システム定義比較部102は、取得した内容で、暫定のシステム差分定義の内容を上書きする(ステップS2022)。
【0147】
システム定義比較部102は、暫定のシステム差分定義内に同一のIDを持つプリミティブが存在するか否かを確認する。同一のIDを持つプリミティブが存在する場合、システム定義比較部102は、暫定のシステム差分定義内のプリミティブを維持するように記録する。同一のIDを持つプリミティブが存在しない場合、システム定義比較部102は、プリミティブを暫定のシステム差分定義に追加した上で、プリミティブの定義内の要素にプリミティブを追加するように記録する。
【0148】
維持するように記録するためには、例えば、primitiveState要素の値を"update"に変更すればよい。追加するように記録するためには、例えば、primitiveState要素の値を"new"に変更すればよい。
【0149】
また、暫定のシステム差分定義内に同一のIDを持つプリミティブが存在する場合、システム定義比較部102は、プリミティブが含む各パートの要求状態に新規のプリミティブ内の対応するパートが持つ現在状態を設定する。
【0150】
暫定のシステム差分定義内に同一のIDを持つプリミティブが存在しない場合、システム定義比較部102は、追加するプリミティブが含む各パートの要求状態にパートの現在状態を設定し、各パートの現在状態にパートの初期状態を設定する。
【0151】
システム定義比較部102は、ワイヤリングを単にシステム差分定義に追加する。
【0152】
なお、ワイヤリングがプログラムにおけるオブジェクトとして実現される場合が考えられる。その場合、ステップS2022以後、ワイヤリングの両端のワイヤポートとして、新規のシステム定義内のプリミティブが含むワイヤポートではなく、暫定のシステム差分定義内のプリミティブが含むワイヤポートが参照されるように、システム定義比較部102は、参照関係を更新する。
【0153】
次いで、システム定義比較部102は、全てのプリミティブの各ワイヤポートを参照する。参照した上で、新旧2つのワイヤリングが関連付けられているワイヤポートがあれば、システム定義比較部102は、関連付けられているワイヤリングのうち新しい方のワイヤリングに関する遷移条件を追加する(ステップS2023)。追加される遷移条件は、新しいワイヤリングを非接続から接続に変更する遷移に対する、古い方のワイヤリングの非接続の状態という遷移条件である。遷移条件を追加した後、システム定義比較部102は、処理を終了する。
【0154】
次に、ステップS203における処理を
図26を参照して具体的に説明する。
図26は、変更管理システム100によるシステム差分定義展開処理の動作を示すフローチャートである。
【0155】
システム定義比較部102からシステム差分定義が入力されると、システム定義展開部101は、システム差分定義の全てのプリミティブ内にある全てのパート内の状態マシンを、出力結果にする状態マシン群の情報にコピーする(ステップS102)。
【0156】
次いで、システム定義展開部101は、全てのワイヤリング内の状態マシンを、出力結果にする状態マシン群の情報にコピーする。コピーする際、システム定義展開部101は、ワイヤリングの両端のワイヤポートに対する遷移条件や、ワイヤポートが持つ遷移条件の情報を除去する。
【0157】
除去した後、システム定義展開部101は、除去した遷移条件と同様の遷移条件の定義を、ワイヤリング由来の状態マシンに対して再定義する。再定義した上で、システム定義展開部101は、ワイヤリングの両端のワイヤポートを含むプリミティブのprimitiveState要素を確認する。
【0158】
システム定義展開部101は、維持または更新されるプリミティブを両端に持つワイヤリング由来の状態マシンの現在状態と要求状態とを、共に“接続”状態に設定する。
【0159】
システム定義展開部101は、廃止されるプリミティブを少なくとも一端に持つワイヤリング由来の状態マシンの現在状態を“接続”状態に設定し、状態マシンの要求状態を“非接続”状態に設定する。
【0160】
システム定義展開部101は、追加されるプリミティブを少なくとも一端に持つワイヤリング由来の状態マシンの現在状態を“非接続”状態に設定し、状態マシンの要求状態を“接続”状態に設定する(ステップS2031)。ワイヤリングを展開した後、システム定義展開部101は、処理を終了する。
【0161】
[効果の説明]
本実施形態の変更管理システムによれば、現在のシステム定義を編集した新しいシステム定義が入力されることで、より直感的かつ効率的に状態マシン群が記述される。
【0162】
次に、本発明の概要を説明する。
図27は、本発明による変更管理システムの概要を示すブロック図である。本発明による変更管理システム10は、システム定義から、1または複数の状態マシンから構成される状態マシン群の情報を作成するシステム定義展開部11(例えば、システム定義展開部101)を含み、システム定義は、1または複数のプリミティブと、任意個のワイヤリングとを含み、プリミティブは、任意個のワイヤポートを含み、ワイヤポートは、1つの状態マシンを含み、ワイヤリングは、異なるプリミティブに含まれる2つのワイヤポートと接続し、システム定義展開部11は、プリミティブの既存の定義をワイヤリングで接続することによって、状態マシン群の情報を作成する。
【0163】
そのような構成により、変更管理システムは、状態マシンを含むシステムの定義から多数の状態マシン群を効率的に記述できる。
【0164】
また、ワイヤポートに含まれる状態マシン内の状態は、ワイヤポートを含むプリミティブに含まれる他のワイヤポートが含む状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、システム定義展開部11は、システム定義内の全てのワイヤリングそれぞれから導出される状態マシンを含み、ワイヤポートに関連する遷移条件をワイヤポートと接続するワイヤリングから導出される状態マシンに関連付け直すように状態マシン群の情報を作成してもよい。
【0165】
そのような構成により、変更管理システムは、遷移条件を関連する状態マシンに引き継ぐことができる。
【0166】
また、プリミティブは、任意個のパートを含み、パートは、1つの状態マシンを含み、プリミティブ内の状態マシン内の状態は、プリミティブに含まれる他のパートまたはワイヤポートが含む状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、システム定義展開部11は、システム定義内の全てのプリミティブに含まれる全てのパートそれぞれから導出される状態マシンと、全てのパート間の遷移条件とを含むように状態マシン群の情報を作成してもよい。
【0167】
そのような構成により、変更管理システムは、パートが含まれるシステム定義を展開できる。
【0168】
また、システム定義は、1または複数のコンポジットを含み、コンポジットは、1または複数のプリミティブまたはコンポジットと、任意個のワイヤポートと、任意個のワイヤリングと、任意個のプロモートとを含み、ワイヤリングは、コンポジットが含む異なるプリミティブまたはコンポジットに含まれる2つのワイヤポートと接続し、プロモートは、コンポジットが含むワイヤポートと、コンポジットが含むプリミティブまたはコンポジットに含まれるワイヤポートとを接続し、コンポジットが含むワイヤポート、コンポジットまたはプリミティブのいずれかに含まれる任意の状態マシン内の状態は、他の状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、システム定義展開部11は、コンポジットのワイヤポートに接続されたワイヤリングに関連付けられている遷移条件を、ワイヤポートとプロモートで接続されたコンポジット内部のワイヤポートに移してもよい。
【0169】
そのような構成により、変更管理システムは、コンポジットが含まれるシステム定義を展開できる。
【0170】
また、変更管理システム10は、現在のシステム定義と新規のシステム定義の2つのシステム定義から、2つのシステム定義のいずれかに含まれる全てのプリミティブとワイヤリングを重複無く含むシステム差分定義を生成するシステム定義比較部(例えば、システム定義比較部102)を含んでもよい。
【0171】
そのような構成により、変更管理システムは、2つのシステム定義からシステム差分定義を生成できる。
【0172】
また、システム定義比較部は、現在のシステム定義と新規のシステム定義の2つのシステム定義に含まれるプリミティブを維持または更新するプリミティブと判断し、現在のシステム定義のみに含まれるプリミティブを廃止するプリミティブと判断し、新規のシステム定義のみに含まれるプリミティブを追加するプリミティブと判断し、維持または更新するプリミティブ同士を接続するワイヤリングを維持または更新するワイヤリングと判断し、廃止するプリミティブを少なくとも1つ接続するワイヤリングを廃止するワイヤリングと判断し、追加するプリミティブを少なくとも1つ接続するワイヤリングを追加するワイヤリングと判断してもよい。
【0173】
そのような構成により、変更管理システムは、2つのシステム定義から維持または変更するプリミティブとワイヤリングを判別できる。
【0174】
また、システム定義展開部11は、システム差分定義から、維持または更新されるプリミティブ内のパートから、現在のシステム定義におけるパートの状態を現在状態、新規のシステム定義におけるパートの状態を要求状態として含む状態マシンを生成し、廃止されるプリミティブ内のパートから、現在のシステム定義におけるパートの状態を現在状態として含む状態マシンを生成し、追加されるプリミティブ内のパートから、パートの初期の状態を現在状態、新規のシステム定義におけるパートの状態を要求状態として含む状態マシンを生成し、維持または更新されるワイヤリングから、現在状態と要求状態を共に接続状態として含む状態マシンを生成し、廃止されるワイヤリングから、現在状態を接続状態、要求状態を非接続状態として含む状態マシンを生成し、追加されるワイヤリングから、現在状態を非接続状態、要求状態を接続状態として含む状態マシンを生成してもよい。
【0175】
そのような構成により、変更管理システムは、2つのシステム定義における状態マシンの状態を反映させた状態マシン群を作成できる。
【0176】
また、システム定義展開部11は、ワイヤリングを接続する遷移に、同一のワイヤポートに接続する他のワイヤリングが非接続であることを条件にする遷移条件を追加してもよい。
【0177】
そのような構成により、変更管理システムは、同一のワイヤポートに新旧2つのワイヤリングが接続される場合でも、正しい作業順序が作成されるような状態マシン群を作成できる。