(57)【要約】【課題】状態マシンを含むシステムの定義から多数の状態マシン群の情報を効率的に作成できる変更管理システムを提供する。【解決手段】変更管理システム１０は、システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成するシステム定義展開部１１を含み、システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、プリミティブは、任意個のワイヤポートを含み、ワイヤポートは、１つの状態マシンを含み、ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、システム定義展開部１１は、プリミティブの既存の定義をワイヤリングで接続することによって、状態マシン群の情報を作成する。【選択図】図２７
2015215887.tif 000002
【特許請求の範囲】
【請求項１】
システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成するシステム定義展開部を含み、
前記システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、
前記プリミティブは、任意個のワイヤポートを含み、
前記ワイヤポートは、１つの状態マシンを含み、
前記ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、
前記システム定義展開部は、前記プリミティブの既存の定義を前記ワイヤリングで接続することによって、前記状態マシン群の情報を作成する
ことを特徴とする変更管理システム。
【請求項２】
ワイヤポートに含まれる状態マシン内の状態は、前記ワイヤポートを含むプリミティブに含まれる他のワイヤポートが含む状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、
システム定義展開部は、システム定義内の全てのワイヤリングそれぞれから導出される状態マシンを含み、ワイヤポートに関連する遷移条件を前記ワイヤポートと接続するワイヤリングから導出される状態マシンに関連付け直すように状態マシン群の情報を作成する
請求項１記載の変更管理システム。
【請求項３】
プリミティブは、任意個のパートを含み、
前記パートは、１つの状態マシンを含み、
前記プリミティブ内の状態マシン内の状態は、前記プリミティブに含まれる他のパートまたはワイヤポートが含む状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、
システム定義展開部は、システム定義内の全てのプリミティブに含まれる全てのパートそれぞれから導出される状態マシンと、前記全てのパート間の遷移条件とを含むように状態マシン群の情報を作成する
請求項１記載の変更管理システム。
【請求項４】
システム定義は、１または複数のコンポジットを含み、
前記コンポジットは、１または複数のプリミティブまたはコンポジットと、任意個のワイヤポートと、任意個のワイヤリングと、任意個のプロモートとを含み、
前記ワイヤリングは、前記コンポジットが含む異なるプリミティブまたはコンポジットに含まれる２つのワイヤポートと接続し、
前記プロモートは、前記コンポジットが含むワイヤポートと、前記コンポジットが含むプリミティブまたはコンポジットに含まれるワイヤポートとを接続し、
前記コンポジットが含むワイヤポート、コンポジットまたはプリミティブのいずれかに含まれる任意の状態マシン内の状態は、他の状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、
システム定義展開部は、コンポジットのワイヤポートに接続されたワイヤリングに関連付けられている遷移条件を、前記ワイヤポートとプロモートで接続された前記コンポジット内部のワイヤポートに移す
請求項１記載の変更管理システム。
【請求項５】
現在のシステム定義と新規のシステム定義の２つのシステム定義から、前記２つのシステム定義のいずれかに含まれる全てのプリミティブとワイヤリングを重複無く含むシステム差分定義を生成するシステム定義比較部を含む
請求項１記載の変更管理システム。
【請求項６】
システム定義比較部は、現在のシステム定義と新規のシステム定義の２つのシステム定義に含まれるプリミティブを維持または更新するプリミティブと判断し、現在のシステム定義のみに含まれるプリミティブを廃止するプリミティブと判断し、新規のシステム定義のみに含まれるプリミティブを追加するプリミティブと判断し、維持または更新するプリミティブ同士を接続するワイヤリングを維持または更新するワイヤリングと判断し、廃止するプリミティブを少なくとも１つ接続するワイヤリングを廃止するワイヤリングと判断し、追加するプリミティブを少なくとも１つ接続するワイヤリングを追加するワイヤリングと判断する
請求項５記載の変更管理システム。
【請求項７】
システム定義展開部は、システム差分定義から、維持または更新されるプリミティブ内のパートから、現在のシステム定義における前記パートの状態を現在状態、新規のシステム定義における前記パートの状態を要求状態として含む状態マシンを生成し、廃止されるプリミティブ内のパートから、現在のシステム定義における前記パートの状態を現在状態として含む状態マシンを生成し、追加されるプリミティブ内のパートから、前記パートの初期の状態を現在状態、新規のシステム定義における前記パートの状態を要求状態として含む状態マシンを生成し、維持または更新されるワイヤリングから、現在状態と要求状態を共に接続状態として含む状態マシンを生成し、廃止されるワイヤリングから、現在状態を接続状態、要求状態を非接続状態として含む状態マシンを生成し、追加されるワイヤリングから、現在状態を非接続状態、要求状態を接続状態として含む状態マシンを生成する
請求項６記載の変更管理システム。
【請求項８】
システム定義展開部は、ワイヤリングを接続する遷移に、同一のワイヤポートに接続する他のワイヤリングが非接続であることを条件にする遷移条件を追加する
請求項６記載の変更管理システム。
【請求項９】
システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成する変更管理システムにおいて実行される変更管理方法であって、
前記システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、
前記プリミティブは、任意個のワイヤポートを含み、
前記ワイヤポートは、１つの状態マシンを含み、
前記ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、
前記プリミティブの既存の定義を前記ワイヤリングで接続することによって、前記状態マシン群の情報を作成する
ことを特徴とする変更管理方法。
【請求項１０】
コンピュータで実行されるときに、
システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成し、
前記システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、
前記プリミティブは、任意個のワイヤポートを含み、
前記ワイヤポートは、１つの状態マシンを含み、
前記ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、
前記プリミティブの既存の定義を前記ワイヤリングで接続することによって、前記状態マシン群の情報を作成する
変更管理プログラム
を記録した非一時的なコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変更管理システム、変更管理方法および変更管理プログラムに関する。
【背景技術】
【０００２】
変更管理の目的は、あるシステムを変更する際に生じる、変更するシステムの管理者および変更作業者の手間と、変更するシステムの利用者への影響を少なくすることである。変更するシステムが、例えば、複数の部品から構成されるような複雑なシステムである場合、変更作業は複雑になる。変更作業が複雑になると、作業者の手間や、作業者の作業を監督する管理者の手間は増大する。その結果、システム利用者への影響も増大する。
【０００３】
特に、システムを構成する部品間に依存性が存在する場合、各部品に対する変更作業の順序が問題になるため、作業が複雑になりやすい。部品間の依存性は、例えば、部品Ａと部品Ｂがある場合、部品Ａが正しく機能するためには部品Ｂが正しく機能することが必要であるというような、２つの要素間の関係性である。
【０００４】
上記の例の場合、部品Ａは部品Ｂに依存するという。このような部品Ａと部品Ｂから構成されるシステムを構築する作業では、最初に部品Ｂを構築し、次に部品Ａを構築するというように、実施する作業に順序性が求められる。
【０００５】
このような依存性を考慮しつつ、システムの変更に必要な作業の計画を自動的に作成するシステムを変更管理システムと呼ぶ。ただし、本発明における変更管理システムは、各部品の現在の状態（現在状態）と、変更後の要求される状態（要求状態）とを入力データとして、必要な作業と適切な作業手順を導出するシステムである。変更管理システムでは、予め部品間の依存性に関する情報、および部品に対する作業に関する情報が定義されている。
【０００６】
上記の変更管理システムを用いることで、管理者は、複雑な変更作業の実施に効果的な作業手順を効率的に作成できる。また、作業者も、作成された効果的な作業手順に基づいて、効率的に作業を実施できる。その結果、変更されるシステムの利用者への影響も少なくなることが期待される。
【０００７】
このような変更管理システムに関して、既に多数の関連研究や関連製品が知られている。非特許文献１には、管理対象のシステムを複数の状態マシン群として定義する方法が記載されている。非特許文献１に記載された方法では、各状態マシン群が持つ遷移の遷移条件は、遷移が含まれる状態マシン以外の状態マシン内の状態を用いて記述される。
【０００８】
状態マシンは、システムを構成する部品を表す。状態マシンの状態は、部品がとり得る状態を表す。また、遷移には、部品の状態を変更する際の作業の情報が含まれる。遷移条件は、遷移に含まれる情報に対応する作業が持つ依存性を表す。
【０００９】
以上のようなシステムの定義方法に基づく変更計画は、計画可能な状況が広範である点や、定義の再利用可能な点において、他の手法を用いた変更計画よりも有効であると期待される。本発明において、上記の定義方法に基づくシステムが対象のシステムになる。以下、対象になるシステムを単に変更管理システムと呼ぶ。
【００１０】
上記の状態マシン群を用いて作業手順を計算するには、最初に全ての状態マシンに現在状態を設定し、少なくとも１つの状態マシンに要求状態を設定する。現在状態と要求状態が設定された状態マシン群から、遷移条件を満たしつつ、要求状態が指定された全ての状態マシンを現在状態から要求状態に遷移させる遷移順序を求めることによって、作業手順が計算される。すなわち、変更計画の作成が実施される。非特許文献１には、作業手順の計算手法の一例が記載されている。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】S. Hagen and A. Kemper, “Model-based planning for state-relatedchanges to infrastructure and software as a service instances in largedata centers,” in Cloud Computing (CLOUD), 2010 IEEE 3rd InternationalConference on, July 2010, pp. 11-18.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
非特許文献１に記載された手法に基づいて変更計画の作成を実施するためには、管理対象システムを示す状態マシン群を記述することが求められる。特に、多数の部品から構成される実用的なシステムを対象にする場合、多くの状態マシンを記述することが求められる。多くの状態マシンを記述する場合、状態マシンを記述するための工数の増加が問題になる。非特許文献１において、状態マシンを記述する作業は、特に取り扱われていない。
【００１３】
そこで、本発明は、状態マシンを含むシステムの定義から多数の状態マシン群の情報を効率的に作成できる変更管理システム、変更管理方法および変更管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明による変更管理システムは、システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成するシステム定義展開部を含み、システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、プリミティブは、任意個のワイヤポートを含み、ワイヤポートは、１つの状態マシンを含み、ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、システム定義展開部は、プリミティブの既存の定義をワイヤリングで接続することによって、状態マシン群の情報を作成することを特徴とする。
【００１５】
本発明による変更管理方法は、システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成する変更管理システムにおいて実行される変更管理方法であって、システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、プリミティブは、任意個のワイヤポートを含み、ワイヤポートは、１つの状態マシンを含み、ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、プリミティブの既存の定義をワイヤリングで接続することによって、状態マシン群の情報を作成することを特徴とする。
【００１６】
本発明による変更管理プログラムを記録した非一時的なコンピュータ読み取り可能な記録媒体は、コンピュータで実行されるときに、システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成し、システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、プリミティブは、任意個のワイヤポートを含み、ワイヤポートは、１つの状態マシンを含み、ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、プリミティブの既存の定義をワイヤリングで接続することによって、状態マシン群の情報を作成する変更管理プログラムを記憶する。
【発明の効果】
【００１７】
本発明によれば、状態マシンを含むシステムの定義から多数の状態マシン群の情報を効率的に作成できる。
【図面の簡単な説明】
【００１８】
【図１】本発明による変更管理システムの第１の実施形態の構成例を示すブロック図である。
【図２】状態マシン群の概念を示す説明図である。
【図３】状態マシン群のテキストによる定義の一例を示す説明図である。
【図４】遷移順序の導出結果の一例を示す説明図である。
【図５】プリミティブの一例を示す説明図である。
【図６】プリミティブのテキストによる定義の一例を示す説明図である。
【図７】ワイヤインタフェースのテキストによる定義の一例を示す説明図である。
【図８】接続されたプリミティブの一例を示す説明図である。
【図９】接続されたプリミティブから展開された状態マシン群の一例を示す説明図である。
【図１０】システムの変更計画の生成結果の一例を示す説明図である。
【図１１】コンポジットの一例を示す説明図である。
【図１２】コンポジットのテキストによる定義の一例を示す説明図である。
【図１３】プリミティブとコンポジットとで構成されるシステム定義の一例を示す説明図である。
【図１４】プリミティブの他の一例を示す説明図である。
【図１５】コンポジットから展開されたプリミティブの一例を示す説明図である。
【図１６】プリミティブから展開されたシステム定義の状態マシン群の一例を示す説明図である。
【図１７】変更管理システム１００によるシステム定義展開処理の動作を示すフローチャートである。
【図１８】変更管理システム１００によるコンポジット展開処理の動作を示すフローチャートである。
【図１９】本発明による変更管理システムの第２の実施形態の構成例を示すブロック図である。
【図２０】２つの異なるバージョンのシステム定義の一例を示す説明図である。
【図２１】プリミティブの他の一例を示す説明図である。
【図２２】２つのシステム定義から生成されるシステム差分定義の一例を示す説明図である。
【図２３】システム差分定義から展開される状態マシン群の一例を示す説明図である。
【図２４】変更管理システム１００によるシステム差分定義の生成処理と展開処理の動作を示すフローチャートである。
【図２５】変更管理システム１００によるシステム差分定義生成処理の動作を示すフローチャートである。
【図２６】変更管理システム１００によるシステム差分定義展開処理の動作を示すフローチャートである。
【図２７】本発明による変更管理システムの概要を示すブロック図である。
【発明を実施するための形態】
【００１９】
実施形態１．
［構成の説明］
以下、本発明の第１の実施形態を、図面を参照して説明する。図１は、本発明による変更管理システムの第１の実施形態の構成例を示すブロック図である。図１に示す変更管理システム１００は、システム定義展開部１０１を含む。
【００２０】
システム定義展開部１０１は、システム定義を、１または複数の状態マシンから構成される状態マシン群に展開する機能を有する。システム定義展開部１０１は、外部の入出力部２０１と、通信ネットワークなどを介して通信可能に接続されている。
【００２１】
入出力部２０１には、システム定義が入力される。システム定義展開部１０１は、入出力部２０１を介して、入力されたシステム定義を受信する。システム定義展開部１０１は、受信したシステム定義を状態マシン群に変換し、入出力部２０１に送信する。入出力部２０１は、送信された状態マシン群を出力する。
【００２２】
本実施形態における状態マシン群は、管理対象になるシステム、および管理対象になるシステムに対する変更要求を示す。状態マシン群は、１または複数の状態マシンから構成される。状態マシンは、システムを構成する部品を示す。
【００２３】
状態マシンは、複数の状態を含む。状態は、同一状態マシン内の他の状態への遷移を含む。状態マシンは、必ず１つの現在状態と、任意個の要求状態を含む。ただし、要求状態が複数指定された場合、要求状態は、指定されたいずれかの状態であればよい。要求状態が指定されない場合、要求状態は、どの状態でもよい。また、遷移の遷移条件は、遷移が含まれる状態マシン以外の状態マシン内の状態によって指定される。
【００２４】
図２は、状態マシン群の概念を示す説明図である。図２において、状態マシンを長方形で表す。また、状態を楕円形で表す。また、遷移を実線の矢印で表す。また、遷移条件を点線の矢印で表す。また、現在状態を破線の楕円形で表す。また、要求状態を黒塗りの楕円形で表す。また、遷移を示す矢印の途中に存在する丸印は、遷移条件の矢印の始点を示す。他の図においても、図２と同じ方法で状態マシンなどが示される。
【００２５】
図２は、"e1"と"e2"の２つの状態マシンから構成される状態マシン群を示す。"e1"と"e2"は、共に"s1"と"s2"の２つの状態を含む。
【００２６】
図２に示すように、"e1"における"s1"は、"s2"への遷移を含む。また、"e2"における"s1"と"s2"は、互いの状態への遷移を含む。また、"e2"の"s1"から"s2"への遷移は、"e1"の状態"s2"を遷移条件にする。また、"e1"は、"s1"を現在状態にする。また、"e2"は、"s1"を現在状態にし、"s2"を要求状態にする。
【００２７】
以下、便宜的に、例えば、状態マシン"e1"の状態"s1"のことを"e1(s1)"と記載する。また、状態マシン"e1"の状態"s1"から状態"s2"への遷移を、"e1(s1,s2)"と記載する。
【００２８】
図３は、状態マシン群のテキストによる定義の一例を示す説明図である。図３は、XML(Extensible Markup Language)形式を用いた表現の一例として、図２に示す状態マシン群の定義例を示す。
【００２９】
図３に示すように、例えば、状態マシンは、"stateMachine"タグによって表される。また、状態マシンのIDは、"stateMachine"の"id"属性によって表される。また、状態マシンが持つ状態は、"stateMachine"タグの子要素としての"state"タグによって表される。また、状態のIDは、"state"の"id"属性によって表される。
【００３０】
また、図３に示すように、状態が持つ遷移は、"state"タグの子要素としての"transition"タグによって表される。また、遷移先の状態を示すIDは、"transition"の"to"属性によって表される。遷移に伴って実行されるシステム変更タスクは、"transition"タグの"task"属性によって表される。
【００３１】
また、図３に示すように、遷移が持つ遷移条件は、"transition"タグの子要素としての"conditions"タグによって表される。遷移が状態マシン"e1"の状態"s2"を遷移条件にする場合、遷移条件は、"conditions"タグの子要素として"depends"タグを記述し、"depends"の"on"属性に"e1(s2)"を記述することによって表される。１つの遷移が複数の遷移条件を持つ場合、複数の遷移条件を記述するには、"conditions"タグの子要素として複数の"depends"タグを記述すればよい。
【００３２】
システム変更タスクは、システム変更タスクがコンピュータによって実行される場合、例えば、プログラムとして記述される。また、人間の作業者によって実行される場合、システム変更タスクは、例えば、自然言語で記述される。
【００３３】
図３に示す例では、システム変更タスクが人間の作業者によって実行される場合が想定されているため、システム変更タスクが自然言語で記述されている。なお、"task"属性に直接内容が記述される代わりに、外部のファイルにシステム変更タスクが記述され、"task"属性にファイルへの参照ポインタが記述されてもよい。また、図３に示すような一行程度の説明の代わりに、システム変更タスクに関する詳細な説明が記述されてもよい。
【００３４】
上述したような状態マシン群に基づくシステムの変更計画の作成は、常に全ての遷移条件を満たしつつ、要求状態が指定された全ての状態マシンの状態を現在状態から要求状態へ遷移させるような遷移順序を発見することによって達成される。図２に示す状態マシン群の例であれば、"(e1(s1,s2), e2(s1,s2))"という遷移順序が、最も単純な唯一の解になる。
【００３５】
図４は、遷移順序の導出結果の一例を示す説明図である。図４において、左の角丸四角形は遷移を示す。また、遷移間の矢印は、遷移間の依存性を表す。すなわち、遷移間の矢印は、"e1(s1,s2)"が実施された後にのみ"e2(s1,s2)"が実施されるという関係性を示す。
【００３６】
また、図４において、遷移から点線で結ばれている底辺が曲線のブロックは、遷移に関連付けられたシステム変更タスクを示す。実施される遷移の順序通りにシステム変更タスクが実行されることによって、システムの変更計画が正しく実行される。
【００３７】
次に、本実施形態におけるシステム定義を説明する。本実施形態では、状態マシン群を所定の構造で表現することによって、より大きく複雑なシステムを示す状態マシン群が簡潔に定義される。システム定義は、システム定義展開部１０１によって状態マシン群に変換される。
【００３８】
本実施形態において、システム定義は、システムを構成する部品を表す概念であるコンポネントの集合によって表現される。コンポネントは、システムを構成する状態マシン群の定義の一部を含む。
【００３９】
コンポネントの種類には、プリミティブとコンポジットがある。プリミティブは、システムを構成する特定の部品を表す。コンポジットは、いくつかのコンポネントが組み合せられた構成を表す。コンポジットは、複数のコンポジットやプリミティブを含む。すなわち、コンポジットを用いると、より大きく複雑な部品が簡潔に定義される。ただし、コンポジットは、状態マシン群に変換される前に、全てプリミティブに分解される。
【００４０】
図５は、プリミティブの一例を示す説明図である。図５（ａ）は、ネットワークインタフェースカードである"nic"のプリミティブの例を示す。図５（ｂ）は、物理サーバマシンである"server"のプリミティブの例を示す。
【００４１】
プリミティブは、主にパートとワイヤポートの２つの種類の状態マシンから構成される。パートは、プリミティブが持つ、単独で変更可能な状態マシンを表す。ワイヤポートは、プリミティブが他のプリミティブと接続する際に用いられる状態マシンを表す。パートとワイヤポートは、それぞれ独自の状態を持つため、独立した状態マシンとして表される。また、同一プリミティブ内の状態マシン間で、遷移条件が自由に設定される。
【００４２】
本実施形態において、ワイヤポートには、アクセプトとコンシュームの２種類がある。アクセプトは、他のプリミティブに含まれるコンシュームからの接続を受け付ける機能を有する。コンシュームは、他のプリミティブに含まれるアクセプトに接続する機能を有する。なお、図５において、アクセプトは縦線の模様で、コンシュームは横線の模様でそれぞれ示される。アクセプトとコンシュームは、他の図においても同様の方法で示される。
【００４３】
２つのプリミティブは、一方のプリミティブに含まれるコンシュームが、もう一方のプリミティブに含まれるアクセプトに接続することによって接続される。ただし、互いに接続するコンシュームとアクセプトは、特定の規格に従った接続部同士であることが求められる。本実施形態において、特定の規格を表す概念をワイヤインタフェースと呼ぶ。
【００４４】
図５（ｂ）に示す"server"は、コンシュームと、２つのアクセプトと、パートである"box"と、パートである"top"とを有する。
【００４５】
図５に示す各ワイヤポートの近傍に記載された下線付きの文字は、各ワイヤポートが従うワイヤインタフェースに対応する。例えば、図５（ｂ）において、コンシュームはワイヤインタフェース"RS"に従う。また、上側のアクセプトはワイヤインタフェース"NW"に、下側のアクセプトはワイヤインタフェース"PCI"にそれぞれ従う。ワイヤインタフェースは、他の図においても同様の方法で示される。
【００４６】
"RS"は、サーバラックへの設置に関するワイヤインタフェースである。"NW"は、ネットワークケーブルに関するワイヤインタフェースである。"PCI"は、PCIExpressに関するワイヤインタフェースである。
【００４７】
各ワイヤポート内の"sep"は、ワイヤポートが非接続状態（Separate）であることを表す。また、"con"は、ワイヤポートが接続状態（Connect）であることを表す。
【００４８】
また、"box"は、"server"が箱に入っているか否かを示すパートである。"box(out)"は、"server"が箱に入っていない状態を示す。また、"box(in)"は、"server"が箱に入っている状態を示す。
【００４９】
また、"top"は、"server"の筐体の蓋に関するパートである。"top(open)"は、"server"の蓋が開いている状態を示す。また、"top(close)"は、"server"の蓋が閉まっている状態を示す。
【００５０】
"box"以外の全ての状態マシンは、"box(out)"を遷移条件に指定する。その理由は、"server"が箱に入っている場合、作業者は、何の作業も実施できないためである。
【００５１】
また、"RS"に従うコンシュームは、"top(close)"を遷移条件に指定する。その理由は、"server"をラックに設置したりラックから外したりする際、筐体の蓋が閉まっている必要があるためである。また、"top"は、"RS(sep)"を遷移条件に指定する。その理由は、蓋を開け閉めする際、"server"がラックから外れている必要があるためである。
【００５２】
また、"RS"に従うコンシュームは、"NW(sep)"を遷移条件に指定する。その理由は、ネットワークケーブルは"server"がラックに設置された後に接続され、"server"がラックから外される前に抜かれる必要があるためである。
【００５３】
また、"PCI"に従うアクセプトは、"top(open)"を遷移条件に指定する。その理由は、PCIExpressスロットへの部品の抜き差しをする際には、筐体の蓋が開いている必要があるためである。
【００５４】
なお、図５は、図２と異なり、状態マシン自体から他の状態マシン内の状態に対する遷移条件に対応する矢印を示す。矢印は、状態マシン内の全ての遷移が、矢印が示す遷移条件と同様の遷移条件を持つことを示す。他の図においても、同様の表記が用いられる。
【００５５】
図６は、プリミティブのテキストによる定義の一例を示す説明図である。図６は、JSON(JavaScript(登録商標) Object Notation)形式を用いた表現の一例として、図５（ａ）に示すプリミティブである"nic"をテキストで定義した例を示す。図６に示す定義は、プリミティブのIDを示すid要素と、ワイヤポートを示すports要素と、パートを示すparts要素とを持つ。ports要素は、consume要素とaccept要素を持つ。
【００５６】
"nic"は、id要素として"nic"を、consume要素として"pciExpress"を、accept要素として"networkPort"を、parts要素として"box"をそれぞれ持つ。ports内の各要素は、ワイヤインタフェースを示すinterface要素と、状態のリストを示すstates要素を持つ。
【００５７】
"pciExpress"は、interface要素として"pciExpress"を持ち、states要素として"connect"と"separate"を持つ。
【００５８】
states内の各要素は、状態マシンの状態を表す。states内の各要素は、遷移可能な他の状態のリストと、状態に遷移する際の遷移条件を示す"depends"要素を持つ。
【００５９】
"pciExpress"の状態"connect"は、"separate"への遷移を持つ。また、"pciExpress"の状態"separate"も、"connect"への遷移を持つ。各遷移は、いずれもdepends要素として"box(out)"と"networkPort(separate)"を持つ。
【００６０】
なお、図５（ａ）に示すaccept要素である"networkPort"にも見られるように、ワイヤポートは、いずれも"pciExpress"と同様の状態と遷移の構造を持つ。ただし、図６に示すように、"networkPort"におけるdepends要素には、"box(out)"と"pciExpress(connect)"が指定されている。
【００６１】
parts内の各要素は、状態のリストを示すstates要素と、現在状態を示すcurrentState要素と、要求状態を示すdesiredState要素を持つ。parts内の状態を示す要素が持つ遷移は、システム変更タスクを示すtask要素を持つ。
【００６２】
parts要素である"box"は、"in"と"out"の２つの状態を持つ。"in"から"out"の遷移には、task要素として"nicをパッケージから取り出します。"というシステム変更タスクが記載されている。状態"out"からの遷移はないため、要素"out"の内部には何も記載されていない。
【００６３】
"box"は、現在状態を示すcurrentState要素として"in"を持ち、要求状態を示すdesiredState要素として何も持たない。なお、プリミティブにおいて、現在状態には常に何らかの値が必要になる。よって、現在状態が設定されていなかった場合に使用されるように、初期状態が設定されてもよい。図６に示す"box"の例では、defaultState要素として"in"が設定されている。初期状態は、例えば、プリミティブが販売業者から出荷された当初の状態に基づいて設定される。
【００６４】
なお、図６に示すように、ports内の各要素における遷移は、システム変更タスクを持たない。その理由は、システム変更タスクがワイヤインタフェースによって定義されるためである。
【００６５】
図７は、ワイヤインタフェースのテキストによる定義の一例を示す説明図である。図７に示す例では、ワイヤインタフェースは、name要素とtasks要素のみを持つ。tasks要素は、connect要素とseparate要素のみを持つ。connect要素は、ワイヤインタフェースに部品を接続する際のシステム変更タスクを示す。separate要素は、ワイヤインタフェースから部品を取り外す際のシステム変更タスクを示す。
【００６６】
図７は、PCIExpressのワイヤインタフェースの定義の例を示す。name要素には、"pciExpress"が記載されている。tasks内のconnect要素には、"{{consumer.id}}を{{acceptor.id}}のPCIスロットに差し込みます。"が記載されている。tasks内のseparate要素には、"{{consumer.id}}を{{acceptor.id}}のPCIスロットから抜き取ります。"が記載されている。
【００６７】
なお、システム変更タスクは、テンプレートとして記述されていてもよい。上記の例では、"{{consumer.id}}"などの記述は、システム定義の展開処理時に適切な値に置き換えられる。例えば、ワイヤインタフェース"pciExpress"を介して"nic"のコンシュームと"server"のアクセプトが接続される場合であれば、上記のconnect要素のシステム変更タスクは、"nicをserverのPCIスロットに差し込みます。"のように変換される。
【００６８】
図８は、接続されたプリミティブの一例を示す説明図である。図８は、プリミティブ"server"とプリミティブ"nic"とが"PCI"のワイヤインタフェースに従うワイヤポートを介して接続された様子を示す。本実施形態において、２つのワイヤポートの接続を示す概念をワイヤリングと呼ぶ。図８において、ワイヤリングは、太い曲線で示される。なお、ワイヤリングを用いたプリミティブの接続に関する定義は、後述のようにコンポジットの説明の中で説明する。
【００６９】
図９は、接続されたプリミティブから展開された状態マシン群の一例を示す説明図である。図９は、図８に示すプリミティブとワイヤリングから構成されるシステム定義を展開することによって生成される状態マシン群を示す。
【００７０】
システム定義の展開時に、接続していないワイヤポート、および接続していないワイヤポートに関連する遷移条件は除去される。パートは、全て状態マシンとして展開結果に移管される。移管される際、各状態マシンが唯一のIDを持つように、例えば、展開元のプリミティブのIDとパートの名前が"."で連結された文字列が、状態マシンのIDとして付加される。
【００７１】
ワイヤリング、およびワイヤリングを介して接続する両端のワイヤポートは、１つの状態マシンとして展開結果に移管される。両端のワイヤポートに関連する遷移条件は、全て状態マシンに引き継がれる。すなわち、パートからワイヤポートへの遷移条件や、ワイヤポートからパートへの遷移条件は削除される。代わりに、パートから、ワイヤポートとワイヤリング由来の状態マシンへの遷移条件や、ワイヤポートとワイヤリング由来の状態マシンからパートへの遷移条件が作成される。
【００７２】
また、パート由来の状態マシンの現在状態と要求状態には、パートに指定されていた現在状態と要求状態が引き継がれる。本実施形態において、ワイヤポートとワイヤリング由来の状態マシンの現在状態には"separate"が、要求状態には"connect"が、それぞれ必ず設定される。また、ワイヤポートとワイヤリング由来の状態マシンの遷移やシステム変更タスクには、ワイヤポートのワイヤインタフェースに定義されている遷移やシステム変更タスクが設定される。
【００７３】
図１０は、システムの変更計画の生成結果の一例を示す説明図である。図１０は、図９に示す状態マシン群に基づいて計算することによって得られるタスクの一例を示す。図１０に示すように、上記に示すプリミティブの定義とプリミティブの接続の定義に基づいて、実行可能なシステム変更タスクが生成されることが分かる。
【００７４】
次に、もう１つのコンポネントであるコンポジットを説明する。図１１は、コンポジットの一例を示す説明図である。図１１は、上記の"server"と"nic"を組み合わせた構成を１つの部品のように扱うためのコンポジットの例である、"serverWithNIC"を示す。
【００７５】
コンポジットは、主に内部のコンポネントとワイヤポートから構成される。コンポジットのワイヤポートは、コンポジット内部のコンポネントのいずれかのワイヤポートを参照する。すなわち、コンポジットのワイヤポートは、参照先になるコンポジット内部のコンポネントのワイヤポートに接続されている。本実施形態において、この接続の概念をプロモートと呼ぶ。
【００７６】
プロモートされるワイヤポートは、プロモートするワイヤポートと同じワイヤインタフェースを持つ必要がある。よって、アクセプトは、アクセプトにプロモートされる。また、コンシュームは、コンシュームにプロモートされる。
【００７７】
また、コンポジットが持つワイヤポートや、コンポジット内部のコンポネントが持つ状態マシン間において、任意の遷移条件が定義される。
【００７８】
システム定義を展開する際、システム定義展開部１０１は、コンポジット自体の定義をシステム定義から除去し、代わりに内部のコンポネントの定義をシステム定義に追加する。例えば、システム定義展開部１０１は、コンポジットのワイヤポートに関連付けられているワイヤリングや遷移条件を、ワイヤポートがプロモートするコンポジット内部のコンポネントのワイヤポートに関連付け直す。その結果、コンポジットの定義が、コンポジット内部のコンポネントの定義に変換される。
【００７９】
図１１に示す"serverWithNIC"の場合、ワイヤポートとして、"RS"に従う１つのコンシュームと、"NW"に従う２つのアクセプトが定義されている。なお、図１１に示すように、"RS"と"NW"は、共にワイヤインタフェースである。
【００８０】
また、図１１に示すように、コンポジット内部のコンポネントとして、"nic"と"server"の２つのプリミティブが定義されている。"nic"と"server"は、ワイヤインタフェース"PCI"に従うワイヤポートを介してワイヤリングで接続されている。
【００８１】
"serverWithNIC"内の"NW"に従う上側のアクセプトは、"server"内の"NW"に従うアクセプトにプロモートされている。また、"NW"に従う下側のアクセプトは、"nic"内の"NW"に従うアクセプトにプロモートされている。
【００８２】
"serverWithNIC"内の"RS"に従うコンシュームは、"server"内の"RS"に従うコンシュームにプロモートされている。なお、"serverWithNIC"内の"RS"に従うコンシュームは、"NW"に従う下側のアクセプトの状態"sep"に対して遷移条件を定義する。
【００８３】
コンポジット内のワイヤポートに関連付けられたワイヤリングや遷移条件は、展開時に全てプロモート先のワイヤポートに移管される。図１１に示す例の場合、"RS"、"NW"のワイヤインタフェースにそれぞれ従う"serverWithNIC"内の各ワイヤポートが持つ遷移条件と同様の遷移条件が、"server"内にある"RS"に従うコンシュームと、"nic"内にある"NW"に従うアクセプトの間に移管される。"RS"に従うワイヤポートが持つ遷移条件は、移管される遷移条件に該当する。
【００８４】
図１２は、コンポジットのテキストによる定義の一例を示す説明図である。図１２は、JSON形式を用いた表現の一例として、図１１に示す"serverWithNIC"をテキストで定義した例を示す。
【００８５】
図１２に示す定義は、コンポジットのIDを示すid要素と、ワイヤポートを示すports要素と、コンポジット内部のコンポネントを示すcomponents要素と、コンポジット内部のコンポネントの接続を示すwires要素とを持つ。
【００８６】
図１２に示すports要素の構造は、図６に示すプリミティブの定義におけるports要素の構造とほぼ同様であるが、プロモートを示すpromote要素が含まれる点が異なる。components要素には、内包される各コンポネントのIDのリストが定義される。wires要素には、２つの内部コンポネントの参照先のワイヤポートから構成されるワイヤリングのリストが定義される。
【００８７】
図１２に示す例において、components要素には"server"と"nic"が定義されている。また、consume要素には"rackspace"が定義されている。また、accept要素には"networkPort1"と"networkPort2"が定義されている。
【００８８】
"rackspace"のワイヤインタフェースには"rackspace"が定義されている。この定義は、図１１に示す"RS"のワイヤインタフェースに従うコンシュームに対応する。"networkPort1"と"networkPort2"は、図１１に示す"NW"のワイヤインタフェースに従う２つのアクセプトにそれぞれ対応する。
【００８９】
"rackspace"のpromote要素には"server.rackspace"が定義されている。この定義は、"rackspace"が内部コンポネントである"server"のワイヤポート"rackspace"にプロモートされることを示す。同様に、"networkPort1"のpromote要素には"server.networkPort"が定義されている。また、"networkPort2"のpromote要素には"nic.networkPort"が定義されている。
【００９０】
また、wires要素には、"nic.pciExpress:server.pciExpress"が定義されている。この定義は、内部コンポネント"nic"のワイヤポート"pciExpress"と、内部コンポネント"server"のワイヤポート"pciExpress"とが、ワイヤリングで接続されることを示す。
【００９１】
なお、図８に示すようなシステム定義も、ワイヤポートを持たないコンポジットとして、図１２に示す定義と同様に記述される。
【００９２】
上記の定義方法によれば、複数のプリミティブやコンポジットを組み合わせることによって構成されるシステムが定義される。図１３は、プリミティブとコンポジットとで構成されるシステム定義の一例を示す説明図である。図１３において、特に示す必要のない状態の表示は省略する。
【００９３】
図１３は、上記の"serverWithNIC"と、"cable"、"switch"、および"rack"の３つのプリミティブとで構成されるコンピュータスタックのシステムの定義の例を示す。"cable"、"switch"、および"rack"の定義を、図１４に示す。図１４は、プリミティブの他の一例を示す説明図である。
【００９４】
図１５は、コンポジットから展開されたプリミティブの一例を示す説明図である。図１５は、図１３に示すコンポジットがプリミティブにまで展開された様子を示す。
【００９５】
図１６は、プリミティブから展開されたシステム定義の状態マシン群の一例を示す説明図である。図１６は、図１５に示すプリミティブが、さらに状態マシン群にまで展開された様子を示す。
【００９６】
本実施形態においてシステムを定義する際、コンポジットの内部コンポネントには既に定義されたコンポネントが再利用される。図１３に示す例では、"serverWithNIC"と"cable"と"switch"と"rack"の４つの定義が再利用されている。各定義を単にワイヤリングを用いてつなげることで、図１６に示すような、12個の状態マシンと、状態マシン間の複雑な遷移条件とで構成される状態マシン群が簡単に定義される。
【００９７】
なお、本実施形態のシステム定義展開部１０１は、例えば、非一時的なコンピュータ読み取り可能な記録媒体に記憶されたプログラムの制御に従って処理を実行するCPU(Central Processing Unit)によって実現される。
【００９８】
［動作の説明］
以下、本実施形態の変更管理システム１００の動作を図１７を参照して説明する。図１７は、変更管理システム１００によるシステム定義展開処理の動作を示すフローチャートである。
【００９９】
システム定義展開部１０１は、入出力部２０１からシステム定義の情報を受信する。システム定義展開部１０１は、受信した情報に基づくシステムをコンポジットとみなす。すなわち、システム定義展開部１０１は、コンポジットを再起的にプリミティブとワイヤリングに分解する処理を実施する（ステップＳ１０１）。
【０１００】
ステップＳ１０１における処理により、システムの内部に含まれるコンポジットや、コンポジットの内部にさらに含まれるコンポジットが、全てプリミティブとワイヤリングのみに分解される。
【０１０１】
次いで、システム定義展開部１０１は、全てのプリミティブ内にある、全てのパート内の状態マシンを、出力結果にする状態マシン群の情報にコピーする（ステップＳ１０２）。
【０１０２】
次いで、システム定義展開部１０１は、全てのワイヤリング内の状態マシンを、出力結果にする状態マシン群の情報にコピーする。コピーする際、システム定義展開部１０１は、ワイヤリングの両端のワイヤポートに対する遷移条件や、ワイヤポートが持つ遷移条件の情報を除去する。
【０１０３】
除去した後、システム定義展開部１０１は、除去した遷移条件と同様の遷移条件をワイヤリング由来の状態マシンに対して再定義する（ステップＳ１０３）。ワイヤリングを展開した後、システム定義展開部１０１は、処理を終了する。
【０１０４】
次に、ステップＳ１０１における処理を図１８を参照して具体的に説明する。図１８は、変更管理システム１００によるコンポジット展開処理の動作を示すフローチャートである。
【０１０５】
コンポジットを受信すると、システム定義展開部１０１は、コンポジットの基であるシステム定義からコンポジットの定義を除去する。除去した後、システム定義展開部１０１は、コンポジットの定義の代わりに、コンポジットの内部のコンポネントの定義を追加する（ステップＳ１０１１）。
【０１０６】
次いで、システム定義展開部１０１は、コンポジットが含む全てのワイヤポートに関連付けられている全てのワイヤリングと遷移条件を、ワイヤポートとプロモートで結ばれた内部のコンポネントのワイヤポートに移管する（ステップＳ１０１２）。
【０１０７】
ステップＳ１０１２における移管では、具体的には、元のワイヤリングや遷移条件の定義が変換される。例えば、定義におけるコンポジットのワイヤポートである部分を、移管先の内部のコンポネントのワイヤポートに変更することが、定義の変換に該当する。
【０１０８】
例えば、図１３に示すシステム定義を図１５に示すプリミティブに展開する例では、"rack"と"serverWithNIC"を接続する"RS"をワイヤインタフェースとして持つワイヤリングが、"rack"と"server"を接続するワイヤリングに変換される。
【０１０９】
より具体的には、システム定義内のワイヤリングの定義における、"serverWithNIC.rackspace1:rack.rackspace2"の記述が、例えば、"server.rackspace:rack.rackspace2"の記述に変更される。
【０１１０】
同様に、"serverWithNIC"のコンシューム"rackspace"が持つ"serverWithNIC.networkPort2(separate)"への遷移条件は、"nic.networkPort(separate)"への遷移条件として、"server"のコンシューム"rackspace"に追加される。
【０１１１】
次いで、システム定義展開部１０１は、コンポジットの内部のコンポネントの中にコンポジットがあれば、コンポジットを１つずつ取得する。取得した後、システム定義展開部１０１は、展開する処理を取得した全てのコンポジットに対して再度繰り返す。
【０１１２】
システム定義展開部１０１は、コンポジットの内部のコンポネントにコンポジットがあるかを確認する（ステップＳ１０１３）。コンポジットがない場合（ステップＳ１０１３におけるＮＯ）、システム定義展開部１０１は、処理を終了する。
【０１１３】
コンポジットがある場合（ステップＳ１０１３におけるＹＥＳ）、システム定義展開部１０１は、コンポジットを取得し、再度展開処理を実施する（ステップＳ１０１４）。コンポジットを展開した後、システム定義展開部１０１は、再度ステップＳ１０１３における処理を行う。
【０１１４】
［効果の説明］
本実施形態の変更管理システムによれば、予め定義された部品情報を再利用しつつ、部品情報を組み合わせることによって、効率的に状態マシン群が記述される。  
【０１１５】
実施形態２．
［構成の説明］
以下、本発明の第２の実施形態を、図面を参照して説明する。図１９は、本発明による変更管理システムの第２の実施形態の構成例を示すブロック図である。図１９において、第１の実施形態と同様の構成要素には同一の符号を付し、説明を省略する。
【０１１６】
図１９に示すように、本実施形態における変更管理システム１００は、システム定義展開部１０１に加えて、システム定義比較部１０２を備える。システム定義比較部１０２は、現在のシステム定義と新規のシステム定義の２つの定義から、システム差分定義を生成する機能を有する。システム定義展開部１０１は、システム定義比較部１０２と通信ネットワークなどを介して通信可能に接続されている。
【０１１７】
本実施形態におけるシステム定義展開部１０１は、入出力部２０１から新旧の２つの状態マシン群の情報を受信する。システム定義展開部１０１は、受信した情報をシステム定義比較部１０２に入力する。
【０１１８】
システム定義比較部１０２は、入力された２つの状態マシン群を比較してシステム差分定義を生成する。システム定義比較部１０２は、生成したシステム差分定義をシステム定義展開部１０１に返す。
【０１１９】
次いで、システム定義展開部１０１は、システム差分定義に基づいて状態マシン群を生成する。システム定義展開部１０１は、生成した状態マシン群を入出力部２０１に返す。
【０１２０】
図２０は、２つの異なるバージョンのシステム定義の一例を示す説明図である。図２０（ａ）に示す、version1と記載されているシステム定義が、現在のシステム定義である。また、図２０（ｂ）に示す、version2と記載されているシステム定義が、新しいシステム定義である。
【０１２１】
２つのシステム定義の違いは、図２０（ａ）に示す現在のシステム定義におけるプリミティブである"gatewayServer"の部分が、図２０（ｂ）に示す新しいシステム定義ではコンポジットである"serverWithNIC"に変更されている点である。
【０１２２】
すなわち、システム変更計画には、"gatewayServer"をシステムから取り除き、次いで"serverWithNIC"をシステムに組み込むというシステム変更タスクが加えられる。なお、"gatewayServer"は、例えば、図２１に示す構成を取る。図２１は、プリミティブの他の一例を示す説明図である。
【０１２３】
本実施形態において、入力されるシステム定義内のプリミティブが持つパートは、いずれも現在状態のみを持つとする。すなわち、新しいシステム定義においても、プリミティブは要求される状態を現在状態として持つ。ただし、全てのプリミティブ内の各パートは、必ず初期状態を持つとする。初期状態は、例えば、プリミティブが販売業者から出荷された当初の状態に基づいて設定される。
【０１２４】
図２２は、図２０に示す２つのシステム定義から生成されるシステム差分定義の一例を示す説明図である。システム差分定義において、元になったシステム定義に含まれるコンポジットは、全てプリミティブに展開された状態で存在する。
【０１２５】
図２２に示すシステム差分定義には、"cable"、"switch"、"rack"、"gatewayServer"、"nic"、および"server"の６つのプリミティブが含まれる。６つのプリミティブの中で、"cable"、"switch"、および"rack"の３つは、新旧両方のシステム定義に含まれる。よって、３つのプリミティブそのものは、システム差分定義内に維持されるプリミティブとしてマーキングされる。また、３つのプリミティブの各パートの状態は、必要に応じて更新される。
【０１２６】
"gatewayServer"は、現在のシステム定義のみに含まれる。よって、"gatewayServer"のプリミティブは、廃止されるプリミティブとしてマーキングされる。"nic"と"server"は、新しいシステム定義のみに含まれる。よって、"nic"と"server"のプリミティブは、システム差分定義に新たに追加されるプリミティブとしてマーキングされる。
【０１２７】
また、維持されるプリミティブ同士を接続するワイヤリングは、維持されるワイヤリングとしてマーキングされる。図２２に示す"NW1"、"RS1"と付されたワイヤリングが、維持されるワイヤリングに該当する。
【０１２８】
また、維持されるプリミティブと廃止されるプリミティブを接続するワイヤリングは、取りはずされるワイヤリングとしてマーキングされる。図２２に示す"NW2"、"RS2"と付されたワイヤリングが、取りはずされるワイヤリングに該当する。
【０１２９】
また、維持されるプリミティブと追加されるプリミティブを接続するワイヤリング、または追加されるプリミティブ同士を接続するワイヤリングは、新たに設定されるワイヤリングとしてマーキングされる。図２２に示す"NW3"、"RS3"および"PCI"と付されたワイヤリングが、新たに設定されるワイヤリングに該当する。
【０１３０】
なお、廃止されるプリミティブ同士を接続するワイヤリングは、取りはずされてもよいし、維持されてもよい。
【０１３１】
図２３は、システム差分定義から展開される状態マシン群の一例を示す説明図である。図２３は、図２２に示すシステム差分定義を展開することによって生成される状態マシン群の例を示す。本実施形態におけるプリミティブとワイヤリングの状態マシンへの展開方法は、基本的に第１の実施形態における展開方法と同様である。
【０１３２】
しかし、本実施形態における展開方法では、現在状態と要求状態を新旧のシステム定義に応じて設定し直す点が、第１の実施形態における方法と異なる。また、同一のワイヤポートに接続される新旧２つのワイヤリングがある場合、一方のワイヤリングを接続する遷移が、他方のワイヤリングが外れていることを遷移条件にするように、遷移条件を追加する点も異なる。
【０１３３】
維持または更新されるプリミティブ内のパートは、現在のシステム定義におけるパートの現在状態を現在状態、新規のシステム定義におけるパートの現在状態を要求状態として含む。
【０１３４】
廃止されるプリミティブ内のパートは、現在のシステム定義におけるパートの現在状態を現在状態として含む。廃止されるプリミティブ内のパートの要求状態は、任意の状態で構わないため、設定されなくてもよい。
【０１３５】
追加されるプリミティブ内のパートは、パートの初期状態を現在状態、新規のシステム定義におけるパートの現在状態を要求状態として含む。
【０１３６】
また、維持されるワイヤリングは、現在状態と要求状態を共に接続状態として含む。取りはずされるワイヤリングは、現在状態を接続状態、要求状態を非接続状態として含む。新たに接続されるワイヤリングは、現在状態を非接続状態、要求状態を接続状態として含む。
【０１３７】
図２３に示す例において、廃止されるプリミティブ同士を接続するワイヤリングは存在しない。仮に廃止されるプリミティブ同士を接続するワイヤリングが存在する場合、ワイヤリングは、現在状態を接続状態として含み、要求状態として何も含まない。
【０１３８】
また、図２３に示す例において、遷移順序の計算結果に影響を与える遷移条件であるワイヤリングへの遷移条件には、新しいワイヤリングから現在のワイヤリングへの遷移条件のみが追加されている。図２３に示す遷移"NW3(sep, con)"から"NW2(sep)"への遷移条件と、遷移"RS3(sep, con)"から"RS2(sep)"への遷移条件が、追加された遷移条件に相当する。
【０１３９】
［動作の説明］
以下、本実施形態の変更管理システム１００の動作を図２４を参照して説明する。図２４は、変更管理システム１００によるシステム差分定義の生成処理と展開処理の動作を示すフローチャートである。
【０１４０】
本実施形態のシステム定義展開部１０１は、入出力部２０１から新旧２つのバージョンのシステム定義の情報を受信する。システム定義展開部１０１は、受信した情報に基づくシステムをコンポジットとみなす。システム定義展開部１０１は、各コンポジットをそれぞれプリミティブとワイヤリングに分解する（ステップＳ２０１）。
【０１４１】
システム定義展開部１０１は、プリミティブとワイヤリングのみに展開された各システム定義をシステム定義比較部１０２に入力する。なお、ステップＳ２０１における具体的な処理は、第１の実施形態におけるステップＳ１０１における処理と同様である。
【０１４２】
次いで、システム定義比較部１０２は、入力された２つのシステム定義からシステム差分定義を生成する（ステップＳ２０２）。システム定義比較部１０２は、生成したシステム差分定義をシステム定義展開部１０１に返す。
【０１４３】
次いで、システム定義展開部１０１は、システム定義比較部１０２から入力されたシステム差分定義を展開して状態マシン群を生成する（ステップＳ２０３）。システム定義展開部１０１は、生成した状態マシン群を入出力部２０１に返す。状態マシン群を返した後、システム定義展開部１０１は、処理を終了する。
【０１４４】
次に、ステップＳ２０２における処理を図２５を参照して具体的に説明する。図２５は、変更管理システム１００によるシステム差分定義生成処理の動作を示すフローチャートである。
【０１４５】
システム定義比較部１０２は、現在のシステム定義の内容を、暫定のシステム差分定義にコピーする。コピーした後、システム定義比較部１０２は、現在のシステム定義における全てのプリミティブを廃棄するように記録する（ステップＳ２０２１）。記録するためには、例えば、図６に示すデータ内にprimitiveState要素を１つ追加し、追加したprimitiveStateの値を"old"にすればよい。
【０１４６】
次いで、システム定義比較部１０２は、新規のシステム定義内のプリミティブとワイヤリングを１つずつ取得する。システム定義比較部１０２は、取得した内容で、暫定のシステム差分定義の内容を上書きする（ステップＳ２０２２）。
【０１４７】
システム定義比較部１０２は、暫定のシステム差分定義内に同一のIDを持つプリミティブが存在するか否かを確認する。同一のIDを持つプリミティブが存在する場合、システム定義比較部１０２は、暫定のシステム差分定義内のプリミティブを維持するように記録する。同一のIDを持つプリミティブが存在しない場合、システム定義比較部１０２は、プリミティブを暫定のシステム差分定義に追加した上で、プリミティブの定義内の要素にプリミティブを追加するように記録する。
【０１４８】
維持するように記録するためには、例えば、primitiveState要素の値を"update"に変更すればよい。追加するように記録するためには、例えば、primitiveState要素の値を"new"に変更すればよい。
【０１４９】
また、暫定のシステム差分定義内に同一のIDを持つプリミティブが存在する場合、システム定義比較部１０２は、プリミティブが含む各パートの要求状態に新規のプリミティブ内の対応するパートが持つ現在状態を設定する。
【０１５０】
暫定のシステム差分定義内に同一のIDを持つプリミティブが存在しない場合、システム定義比較部１０２は、追加するプリミティブが含む各パートの要求状態にパートの現在状態を設定し、各パートの現在状態にパートの初期状態を設定する。
【０１５１】
システム定義比較部１０２は、ワイヤリングを単にシステム差分定義に追加する。
【０１５２】
なお、ワイヤリングがプログラムにおけるオブジェクトとして実現される場合が考えられる。その場合、ステップＳ２０２２以後、ワイヤリングの両端のワイヤポートとして、新規のシステム定義内のプリミティブが含むワイヤポートではなく、暫定のシステム差分定義内のプリミティブが含むワイヤポートが参照されるように、システム定義比較部１０２は、参照関係を更新する。
【０１５３】
次いで、システム定義比較部１０２は、全てのプリミティブの各ワイヤポートを参照する。参照した上で、新旧２つのワイヤリングが関連付けられているワイヤポートがあれば、システム定義比較部１０２は、関連付けられているワイヤリングのうち新しい方のワイヤリングに関する遷移条件を追加する（ステップＳ２０２３）。追加される遷移条件は、新しいワイヤリングを非接続から接続に変更する遷移に対する、古い方のワイヤリングの非接続の状態という遷移条件である。遷移条件を追加した後、システム定義比較部１０２は、処理を終了する。
【０１５４】
次に、ステップＳ２０３における処理を図２６を参照して具体的に説明する。図２６は、変更管理システム１００によるシステム差分定義展開処理の動作を示すフローチャートである。
【０１５５】
システム定義比較部１０２からシステム差分定義が入力されると、システム定義展開部１０１は、システム差分定義の全てのプリミティブ内にある全てのパート内の状態マシンを、出力結果にする状態マシン群の情報にコピーする（ステップＳ１０２）。
【０１５６】
次いで、システム定義展開部１０１は、全てのワイヤリング内の状態マシンを、出力結果にする状態マシン群の情報にコピーする。コピーする際、システム定義展開部１０１は、ワイヤリングの両端のワイヤポートに対する遷移条件や、ワイヤポートが持つ遷移条件の情報を除去する。
【０１５７】
除去した後、システム定義展開部１０１は、除去した遷移条件と同様の遷移条件の定義を、ワイヤリング由来の状態マシンに対して再定義する。再定義した上で、システム定義展開部１０１は、ワイヤリングの両端のワイヤポートを含むプリミティブのprimitiveState要素を確認する。
【０１５８】
システム定義展開部１０１は、維持または更新されるプリミティブを両端に持つワイヤリング由来の状態マシンの現在状態と要求状態とを、共に“接続”状態に設定する。
【０１５９】
システム定義展開部１０１は、廃止されるプリミティブを少なくとも一端に持つワイヤリング由来の状態マシンの現在状態を“接続”状態に設定し、状態マシンの要求状態を“非接続”状態に設定する。
【０１６０】
システム定義展開部１０１は、追加されるプリミティブを少なくとも一端に持つワイヤリング由来の状態マシンの現在状態を“非接続”状態に設定し、状態マシンの要求状態を“接続”状態に設定する（ステップＳ２０３１）。ワイヤリングを展開した後、システム定義展開部１０１は、処理を終了する。
【０１６１】
［効果の説明］
本実施形態の変更管理システムによれば、現在のシステム定義を編集した新しいシステム定義が入力されることで、より直感的かつ効率的に状態マシン群が記述される。
【０１６２】
次に、本発明の概要を説明する。図２７は、本発明による変更管理システムの概要を示すブロック図である。本発明による変更管理システム１０は、システム定義から、１または複数の状態マシンから構成される状態マシン群の情報を作成するシステム定義展開部１１（例えば、システム定義展開部１０１）を含み、システム定義は、１または複数のプリミティブと、任意個のワイヤリングとを含み、プリミティブは、任意個のワイヤポートを含み、ワイヤポートは、１つの状態マシンを含み、ワイヤリングは、異なるプリミティブに含まれる２つのワイヤポートと接続し、システム定義展開部１１は、プリミティブの既存の定義をワイヤリングで接続することによって、状態マシン群の情報を作成する。
【０１６３】
そのような構成により、変更管理システムは、状態マシンを含むシステムの定義から多数の状態マシン群を効率的に記述できる。
【０１６４】
また、ワイヤポートに含まれる状態マシン内の状態は、ワイヤポートを含むプリミティブに含まれる他のワイヤポートが含む状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、システム定義展開部１１は、システム定義内の全てのワイヤリングそれぞれから導出される状態マシンを含み、ワイヤポートに関連する遷移条件をワイヤポートと接続するワイヤリングから導出される状態マシンに関連付け直すように状態マシン群の情報を作成してもよい。
【０１６５】
そのような構成により、変更管理システムは、遷移条件を関連する状態マシンに引き継ぐことができる。
【０１６６】
また、プリミティブは、任意個のパートを含み、パートは、１つの状態マシンを含み、プリミティブ内の状態マシン内の状態は、プリミティブに含まれる他のパートまたはワイヤポートが含む状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、システム定義展開部１１は、システム定義内の全てのプリミティブに含まれる全てのパートそれぞれから導出される状態マシンと、全てのパート間の遷移条件とを含むように状態マシン群の情報を作成してもよい。
【０１６７】
そのような構成により、変更管理システムは、パートが含まれるシステム定義を展開できる。
【０１６８】
また、システム定義は、１または複数のコンポジットを含み、コンポジットは、１または複数のプリミティブまたはコンポジットと、任意個のワイヤポートと、任意個のワイヤリングと、任意個のプロモートとを含み、ワイヤリングは、コンポジットが含む異なるプリミティブまたはコンポジットに含まれる２つのワイヤポートと接続し、プロモートは、コンポジットが含むワイヤポートと、コンポジットが含むプリミティブまたはコンポジットに含まれるワイヤポートとを接続し、コンポジットが含むワイヤポート、コンポジットまたはプリミティブのいずれかに含まれる任意の状態マシン内の状態は、他の状態マシン内の状態に関連する遷移条件に従って他の状態に遷移し、システム定義展開部１１は、コンポジットのワイヤポートに接続されたワイヤリングに関連付けられている遷移条件を、ワイヤポートとプロモートで接続されたコンポジット内部のワイヤポートに移してもよい。
【０１６９】
そのような構成により、変更管理システムは、コンポジットが含まれるシステム定義を展開できる。
【０１７０】
また、変更管理システム１０は、現在のシステム定義と新規のシステム定義の２つのシステム定義から、２つのシステム定義のいずれかに含まれる全てのプリミティブとワイヤリングを重複無く含むシステム差分定義を生成するシステム定義比較部（例えば、システム定義比較部１０２）を含んでもよい。
【０１７１】
そのような構成により、変更管理システムは、２つのシステム定義からシステム差分定義を生成できる。
【０１７２】
また、システム定義比較部は、現在のシステム定義と新規のシステム定義の２つのシステム定義に含まれるプリミティブを維持または更新するプリミティブと判断し、現在のシステム定義のみに含まれるプリミティブを廃止するプリミティブと判断し、新規のシステム定義のみに含まれるプリミティブを追加するプリミティブと判断し、維持または更新するプリミティブ同士を接続するワイヤリングを維持または更新するワイヤリングと判断し、廃止するプリミティブを少なくとも１つ接続するワイヤリングを廃止するワイヤリングと判断し、追加するプリミティブを少なくとも１つ接続するワイヤリングを追加するワイヤリングと判断してもよい。
【０１７３】
そのような構成により、変更管理システムは、２つのシステム定義から維持または変更するプリミティブとワイヤリングを判別できる。
【０１７４】
また、システム定義展開部１１は、システム差分定義から、維持または更新されるプリミティブ内のパートから、現在のシステム定義におけるパートの状態を現在状態、新規のシステム定義におけるパートの状態を要求状態として含む状態マシンを生成し、廃止されるプリミティブ内のパートから、現在のシステム定義におけるパートの状態を現在状態として含む状態マシンを生成し、追加されるプリミティブ内のパートから、パートの初期の状態を現在状態、新規のシステム定義におけるパートの状態を要求状態として含む状態マシンを生成し、維持または更新されるワイヤリングから、現在状態と要求状態を共に接続状態として含む状態マシンを生成し、廃止されるワイヤリングから、現在状態を接続状態、要求状態を非接続状態として含む状態マシンを生成し、追加されるワイヤリングから、現在状態を非接続状態、要求状態を接続状態として含む状態マシンを生成してもよい。
【０１７５】
そのような構成により、変更管理システムは、２つのシステム定義における状態マシンの状態を反映させた状態マシン群を作成できる。
【０１７６】
また、システム定義展開部１１は、ワイヤリングを接続する遷移に、同一のワイヤポートに接続する他のワイヤリングが非接続であることを条件にする遷移条件を追加してもよい。
【０１７７】
そのような構成により、変更管理システムは、同一のワイヤポートに新旧２つのワイヤリングが接続される場合でも、正しい作業順序が作成されるような状態マシン群を作成できる。
【符号の説明】
【０１７８】
１０、１００  変更管理システム
１１、１０１  システム定義展開部
１０２  システム定義比較部
２０１  入出力部
【図１】
2015215887.tif 000003
【図２】
2015215887.tif 000004
【図３】
2015215887.tif 000005
【図４】
2015215887.tif 000006
【図５】
2015215887.tif 000007
【図６】
2015215887.tif 000008
【図７】
2015215887.tif 000009
【図８】
2015215887.tif 000010
【図９】
2015215887.tif 000011
【図１０】
2015215887.tif 000012
【図１１】
2015215887.tif 000013
【図１２】
2015215887.tif 000014
【図１３】
2015215887.tif 000015
【図１４】
2015215887.tif 000016
【図１５】
2015215887.tif 000017
【図１６】
2015215887.tif 000018
【図１７】
2015215887.tif 000019
【図１８】
2015215887.tif 000020
【図１９】
2015215887.tif 000021
【図２０】
2015215887.tif 000022
【図２１】
2015215887.tif 000023
【図２２】
2015215887.tif 000024
【図２３】
2015215887.tif 000025
【図２４】
2015215887.tif 000026
【図２５】
2015215887.tif 000027
【図２６】
2015215887.tif 000028
【図２７】
2015215887.tif 000029