(57)【特許請求の範囲】
【請求項１】
更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成する逆作業生成部と、
逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成された逆作業が前記所定の順と逆の順に複数並べられた手順を逆実行手順として生成する第１手順生成部と、
逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業の手順を計画する計画部と、
生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する第２手順生成部とを備える
ことを特徴とするシステム更新装置。
【請求項２】
前記更新手順の実行中の前記更新対象システムの最新の状態を管理する管理部を備え、
前記第２手順生成部は、管理されている最新の状態に基づいてロールバック手順を生成する
請求項１記載のシステム更新装置。
【請求項３】
生成された逆実行手順と、計画された手順と、前記更新手順の実行中の前記更新対象システムの状態とを対応付けて記憶する記憶部を備え、
前記第２手順生成部は、管理されている最新の状態に対応付けられている生成された逆実行手順と前記最新の状態に対応付けられている計画された手順とを用いてロールバック手順を生成する
請求項２記載のシステム更新装置。
【請求項４】
前記記憶部は、生成された逆実行手順と計画された手順との合成に使用される情報を前記生成された逆実行手順および前記計画された手順と対応付けて記憶する
請求項３記載のシステム更新装置。
【請求項５】
手順を実行する実行部を備える
請求項１から請求項４のうちのいずれか１項に記載のシステム更新装置。
【請求項６】
前記更新手順は、２つ以上の作業が順不同に実行可能に並べられた手順である
請求項１から請求項５のうちのいずれか１項に記載のシステム更新装置。
【請求項７】
前記第１手順生成部は、前記更新対象システムの初期状態と前記更新対象システムの目的状態とに基づいて前記更新手順を生成する
請求項１から請求項６のうちのいずれか１項に記載のシステム更新装置。
【請求項８】
更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成し、
逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成された逆作業が前記所定の順と逆の順に複数並べられた手順を逆実行手順として生成し、
逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業の手順を計画し、
生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する
ことを特徴とするシステム更新方法。
【請求項９】
前記更新手順の実行中の前記更新対象システムの最新の状態を管理し、
管理されている最新の状態に基づいてロールバック手順を生成する
請求項８記載のシステム更新方法。
【請求項１０】
コンピュータに、
更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成する逆作業生成処理、
逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成された逆作業が前記所定の順と逆の順に複数並べられた手順を逆実行手順として生成する第１手順生成処理、
逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業の手順を計画する計画処理、および
生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する第２手順生成処理
を実行させるためのシステム更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム更新装置およびシステム更新方法に関する。
【背景技術】
【０００２】
システムの管理者は、システム構築作業用の手順やシステム更新作業用の手順を、例えば、手順の雛形が蓄積されている記憶部から取得された適切な雛形を基に開発する。しかし、管理者には、状況に応じて手順を最初から手動で開発することが求められる場合がある。【０００３】
例えば、システム更新作業が実行される際、更新前の現在のシステム構成と更新後の目的のシステム構成に対して適切な手順の雛形が記憶部に蓄積されていない場合、管理者には、適切な手順を最初から手動で開発することが求められる。【０００４】
上記のように、要求に応じた手順が手動で開発されるシステム構築作業およびシステム更新作業を、命令的システム構築作業および命令的システム更新作業と呼ぶ。特に、命令的システム更新作業には、更新作業自体が複雑であることが多いため、手順の開発工数が膨大になるという問題がある。【０００５】
命令的システム構築作業および命令的システム更新作業に対して、要求に応じた手順が自動で生成されるシステム構築作業およびシステム更新作業を、宣言的システム構築作業および宣言的システム更新作業と呼ぶ。宣言的システム構築作業および宣言的システム更新作業では、部品等のシステムの構成要素、および構成要素同士の関係性が記憶部に蓄積されている。【０００６】
例えば、宣言的システム更新作業では、蓄積されている情報が用いられて、現在のシステム構成と目的のシステム構成とがそれぞれ構成要素に分解される。次いで、分解された各構成の構成要素同士が比較されることによって、現在のシステム構成を目的のシステム構成に更新可能な作業手順が、更新作業が実行される度に生成される。【０００７】
上記のように、宣言的システム更新作業には、手動での手順の開発が不要になるという利点がある。すなわち、宣言的システム更新作業は、システムの構成を更新目的の構成に自動で更新する作業である。また、宣言的システム構築作業は、構築目的の構成のシステムを自動で構築する作業である。【０００８】
上記の宣言的システム構築技術および宣言的システム更新技術を用いて、現在のシステム構成と目的のシステム構成との差分を基に構築手順や更新手順を自動で生成する技術として、例えば非特許文献１〜非特許文献３にそれぞれ記載されている各手順生成装置がある。図３２は、一般的な手順生成装置による手順の自動生成処理の例を示す説明図である。【０００９】
図３２に示すように、手順生成装置には、構成情報としてシステムの構成管理部から現在のシステム構成が入力される。また、手順生成装置には、構成情報としてシステムの管理者から目的のシステム構成が入力される。【００１０】
図３２に示す手順生成装置は、入力された各構成情報をコンパイルすることによって、現在のシステム構成の状態を示す状態情報と、目的のシステム構成の状態を示す状態情報とをそれぞれ生成する。なお、状態情報は、上述したシステムの構成要素、および構成要素同士の関係性を示す。【００１１】
次いで、図３２に示す手順生成装置は、生成された各状態情報を比較することによって、現在のシステム構成の状態と目的のシステム構成の状態との差分である状態差分をとる。次いで、手順生成装置は、状態差分を用いて現在のシステム構成を目的のシステム構成に更新可能な作業手順を探索する。【００１２】
手順探索が行われた結果、図３２に示すようなWorkflowが生成される。また、図３２に示すように、Workflowを構成する各手順は、各システムでそれぞれ実行される。すなわち、図３２に示す手順生成装置を用いて作業手順を開発する管理者は、目的のシステム構成を入力するだけで比較的信頼性の高い作業手順を自動的に取得できる。【００１３】
また、特許文献１にも、複数の情報処理装置へのソフトウェア更新作業を動作確認作業を含めて自動化し、もってシステム管理者の負荷を軽減させることができるソフトウェア更新装置が記載されている。【００１４】
また、特許文献２にも、関係する複数の構成要素に対する複数の作業の実行順序を特定する運用手順書管理方法が記載されている。【００１５】
また、特許文献３には、ファームウェア保存用の不揮発性メモリ容量を小さく抑えながらも、更新中不具合に対応でき、更新に伴うシステム停止時間の短いファームウェア更新装置が記載されている。【００１６】
また、非特許文献４には、MaxSATソルバに関する事項が記載されている。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００６−１１９８４８号公報
【特許文献２】特開２０１７−１６２２５６号公報
【特許文献３】国際公開第２０１０／０３５５９６号
【非特許文献】
【００１８】
【非特許文献１】T. Kuroda and A. Gokhale, "Model-Based IT Change Management for Large System Definitions with State-Related Dependencies," 2014 IEEE 18th International Enterprise Distributed Object Computing Conference, Ulm, 2014, pages 170-179.
【非特許文献２】T. Kuroda, M. Nakanoya, A. Kitano and A. Gokhale, "The configuration-oriented planning for fully declarative IT system provisioning automation," NOMS 2016 - 2016 IEEE/IFIP Network Operations and Management Symposium, Istanbul, 2016, pages 808-811.
【非特許文献３】M. Nakanoya, T. Kuroda and A. Kitano, "Automated Change Planning for Differential Update IT Systems with State Constraint," 2016 IEEE 20th International Enterprise Distributed Object Computing Workshop (EDOCW), Vienna, 2016, pages 130-138.
【非特許文献４】C. Muise, S. A. McIlraith and J. C. Beck, "Optimally relaxing partial-order plans with MaxSAT," In Proceedings of the 22nd International Conference on Automated Planning and Scheduling, 2012, pages 358-362.
【発明の概要】
【発明が解決しようとする課題】
【００１９】
一般的に、構築作業の手順および更新作業の手順が開発される際、例外が発生した時に実行される作業の手順であるロールバック手順（例外対応手順）の開発も作業が実行される度に求められる。【００２０】
求められるロールバック手順は、例えば通常手順を構成する次の実行対象のタスクが実行不可能である場合に、システムの状態を初期状態に戻すために用いられる手順である。なお、初期状態は、作業が実行される前のシステムの状態である。【００２１】
発生する例外として、例えばリソースの不足、ユーザ割り込みによる停止、更新された後のファームウェアにおける異常の発生、実行予定時間の延長が考えられる。また、例外状態は、通常手順の実行中に発生する可能性がある対象システムの状態以外の対象システムの状態である。【００２２】
例えば、電気通信事業者（キャリア）が設けている通信ネットワークが提供する通信サービスの停止が発生した場合、事業者にとって損害額が大きい。また、通信サービスの停止が発生した場合、電気通信事業者には、関係省庁へ障害を報告することも求められる。【００２３】
上記のように、通信ネットワークの運用では、例外が発生した場合に速やかに通信サービスを復旧させることが要求されるため、安全な復旧作業の計画が予め求められる。例えば、「例外が発生しても高々３０分以内に復旧できることを保証する」という復旧作業の計画が求められる。【００２４】
図３２に示す手順生成装置では、ロールバック手順を生成することが想定されていない。よって、例外が発生した時に手順生成装置が単純に利用される場合、システムの状態を例外が発生した時の状態から初期状態へ遷移させるためのロールバック手順が、例外が発生する度に生成される。次いで、生成されたロールバック手順が実行される。【００２５】
しかし、手順生成装置がロールバック可能な手順を生成できない場合、管理者は、例外への対応に失敗してしまう。また、手順生成装置がロールバック手順を生成するための計算処理の実行に長い時間を掛けた場合、例外への対応が遅れてしまう可能性もある。【００２６】
従って、安全な復旧作業の計画を基に生成されるロールバック手順は、例外が発生する可能性がある全ての時点に対して事前に用意されることが好ましい。なお、全ての時点は、基本的に構築作業中の全時点、または更新作業中の全時点である。【００２７】
上記の「例外が発生する可能性がある全ての時点に対してロールバック手順を事前に用意する」という設計思想に基づいて実行されるシステム更新処理を図３３に示す。図３３は、システム更新装置によるシステム更新処理の例を示す説明図である。【００２８】
管理者は、例えばシステム更新装置に、現在のシステム構成を示す構成要素モデルと、変更目的のシステム構成を示す構成要素モデルとを入力する（ステップS001）。システム更新装置は、入力された各構成要素モデルを基に更新作業手順を設計する（ステップS002）。【００２９】
また、上記の設計思想に基づいて構築されているシステム更新装置は、例外が発生する可能性がある更新作業中の全ての時点に対するロールバック手順をそれぞれ設計する（ステップS003）。システム更新装置は、設計されたロールバック手順群を記憶部に保存する（ステップS004）。【００３０】
次いで、システム更新装置は、設計された更新作業手順に従って対象システムの構成を変更する（ステップS005）。ステップS005の処理が実行されることによって、対象システムの状態が、初期状態から目的状態へ遷移する。なお、目的状態は、作業が実行された後のシステムの状態である。【００３１】
また、更新作業手順の実行中に例外が発生した時、システム更新装置は、例外が発生した時のシステムの状態に対応するロールバック手順を記憶部から取得する。次いで、システム更新装置は、取得されたロールバック手順に従ってロールバックを実行する（ステップS006）。ステップS006の処理が実行されることによって、対象システムの状態が、例外が発生した時の状態から初期状態へ遷移する。【００３２】
すなわち、図３３に示すシステム更新処理において、ロールバック手順は、予め構成要素モデルの情報を基に網羅的に設計される。よって、例外が発生した時、システム更新装置は、障害状態から直ちに初期状態へ対象システムの状態をロールバックできる。【００３３】
しかし、図３３に示すシステム更新処理には、事前にロールバック手順を用意する対象になる更新作業中の状態が多いという課題がある。例えば、更新作業中に発生する可能性がある状態が全部で１４９通り存在する場合、システム更新装置には、１４９通りのロールバック手順を事前に用意することが求められる。【００３４】
よって、更新作業中の各状態にロールバック手順を準備する方法が採用された場合、ロールバック手順の準備に要するリソース量（特に、計算処理に要するリソース量）が膨大になる恐れがある。【００３５】
また、更新作業手順がタスクの半順序集合で表される場合、所定のタスクの実行中に発生する状態は１つに定まらない。順序集合は、順序の概念が定義された集合である。順序集合のうち、半順序集合は、要素間の順序の比較が不可能なケースが許容されている順序集合である。また、順序集合のうち、全順序集合は、要素間の順序の比較が不可能なケースが許容されていない順序集合である。【００３６】
すなわち、全順序集合で表される手順（以下、全順序手順という。）は、タスクが一列に並べられた直列な手順である。また、半順序集合で表される手順（以下、半順序手順という。）は、２つ以上のタスクが順不同に実行可能に並べられた手順である。図３４は、半順序手順の例を示す説明図である。【００３７】
図３４に示す半順序手順は、OpenStack （登録商標）を用いて２つの仮想マシンを構築し、それぞれをアプリケーションサーバとデータベースサーバとして起動させるための手順である。【００３８】
図３４に示す１つの矩形は、１つのタスクを表す。黒色の矩形は、実行済みのタスクを表す。また、白色の矩形は、未実行のタスクを表す。また、図３４に示す矢印は、先に実行されるタスクから後に実行されるタスクに向けて伸びている。【００３９】
図３４に示す半順序手順において、並列に実行可能なタスクの実行順序は、実行時の状況に応じて異なる。例えば、図３４に示すタスク「Create serverXml1 」、タスク「Make directory C」、タスク「Create DBInstance YY」の実行順序は決まっていない。【００４０】
すなわち、図３４に示すような半順序手順に従ってシステムの構築やシステムの更新が実行される場合、実行中に発生する可能性があるシステムの状態は、全順序手順が用いられる場合に比べて多い。半順序手順が用いられる場合、ロールバック手順の準備に要するリソース量がさらに増える可能性が高い。【００４１】
ロールバック手順の準備に要するリソース量を削減する方法として、例えば、特許文献３には、更新作業手順に含まれている作業と逆の作業を生成し、生成された逆の作業を更新作業手順と逆の順序で並べることによって簡易的にロールバック手順を生成する方法が記載されている。【００４２】
しかし、更新対象システムの複雑化に伴い、上記の方法で単純に生成されたロールバック手順が実行不可能な手順になることも多い。実行可能なロールバック手順を生成するためには、更新作業手順に基づいた事前の準備が求められる。【００４３】
［発明の目的］
そこで、本発明は、上述した課題を解決する、ロールバック手順の準備に要するリソース量を削減できるシステム更新装置およびシステム更新方法を提供することを１つの目的とする。
【課題を解決するための手段】
【００４４】
本発明の一実施形態において、システム更新装置は、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業である逆作業を生成する逆作業生成部と、逆作業が生成不可能な作業が含まれていない更新手順の部分を基に生成された逆作業が所定の順と逆の順に複数並べられた手順を逆実行手順として生成する第１手順生成部と、逆作業が生成不可能な作業が含まれている更新手順の部分に対応する状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画する計画部と、生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する第２手順生成部とを備えることを特徴とする。【００４５】
本発明の一実施形態において、システム更新方法は、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業である逆作業を生成し、逆作業が生成不可能な作業が含まれていない更新手順の部分を基に生成された逆作業が所定の順と逆の順に複数並べられた手順を逆実行手順として生成し、逆作業が生成不可能な作業が含まれている更新手順の部分に対応する状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画し、生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成することを特徴とする。【００４６】
本発明の一実施形態において、システム更新プログラムは、コンピュータに、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業である逆作業を生成する逆作業生成処理、逆作業が生成不可能な作業が含まれていない更新手順の部分を基に生成された逆作業が所定の順と逆の順に複数並べられた手順を逆実行手順として生成する第１手順生成処理、逆作業が生成不可能な作業が含まれている更新手順の部分に対応する状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画する計画処理、および生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する第２手順生成処理を実行させることを特徴とする。
【発明の効果】
【００４８】
本発明によれば、ロールバック手順の準備に要するリソース量を削減できる。
【図面の簡単な説明】
【００４９】
【図１】第１の実施形態のシステム更新装置によるシステム更新処理の例を示す説明図である。
【図２】本発明によるシステム更新装置の第１の実施形態の構成例を示すブロック図である。
【図３】本実施形態のロールバック手順の生成処理の例を示す説明図である。
【図４】更新作業手順の例を示す説明図である。
【図５】実行順序調整部１１２によるタスクの実行順序の調整処理の例を示す説明図である。
【図６】逆実行手順計画部１２２による部分ロールバック手順の計画処理の例を示す説明図である。
【図７】ロールバック手順生成部１３１によるロールバック手順の生成処理の例を示す説明図である。
【図８】ロールバック手順生成部１３１によるロールバック手順の生成処理の他の例を示す説明図である。
【図９】手順計画部１１１に入力される状態要素モデルの例を示す説明図である。
【図１０】手順計画部１１１が計画する更新作業手順の例を示す説明図である。
【図１１】逆実行手順計画部１２２による各グループの手順に対する統合処理の例を示す説明図である。
【図１２】逆実行手順計画部１２２が計画する逆実行手順の例を示す説明図である。
【図１３】実行順序調整部１１２による順序関係候補の収集処理の例を示す説明図である。
【図１４】実行順序調整部１１２により実行順序が補完された手順の例を示す説明図である。
【図１５】手順における順序関係の数を示す説明図である。
【図１６】逆実行手順計画部１２２による部分ロールバック手順の計画処理の例を示す説明図である。
【図１７】逆実行手順計画部１２２による部分ロールバック手順の計画処理の他の例を示す説明図である。
【図１８】逆実行手順計画部１２２による部分ロールバック手順の計画処理の他の例を示す説明図である。
【図１９】逆実行手順計画部１２２による部分ロールバック手順の計画処理の他の例を示す説明図である。
【図２０】逆実行手順計画部１２２により生成された部分ロールバック手順参照テーブルＤの例を示す説明図である。
【図２１】第１の実施形態のシステム更新装置１００による手順生成処理の動作を示すフローチャートである。
【図２２】第１の実施形態のシステム更新装置１００による手順実行処理の動作を示すフローチャートである。
【図２３】第１の実施形態の実行順序調整部１１２による実行順序補完処理の動作を示すフローチャートである。
【図２４】第１の実施形態の逆実行手順計画部１２２による部分ロールバック手順計画処理の動作を示すフローチャートである。
【図２５】本発明によるシステム更新装置の第２の実施形態の構成例を示す説明図である。
【図２６】第２の実施形態のシステム更新装置２００による手順生成処理の動作を示すフローチャートである。
【図２７】第２の実施形態のシステム更新装置２００による手順実行処理の動作を示すフローチャートである。
【図２８】本発明によるシステム更新装置の第３の実施形態の構成例を示す説明図である。
【図２９】第３の実施形態のシステム更新装置３００による手順生成処理の動作を示すフローチャートである。
【図３０】本発明の各実施形態を適用可能なシステム更新装置のハードウェア構成例を示す説明図である。
【図３１】本発明によるシステム更新装置の概要を示すブロック図である。
【図３２】一般的な手順生成装置による手順の自動生成処理の例を示す説明図である。
【図３３】システム更新装置によるシステム更新処理の例を示す説明図である。
【図３４】半順序手順の例を示す説明図である。
【発明を実施するための形態】
【００５０】
実施形態１．
以下、本発明の実施形態を、図面を参照して説明する。図１は、第１の実施形態のシステム更新装置によるシステム更新処理の例を示す説明図である。
【００５１】
図１に示すステップS101、ステップS102、ステップS104、およびステップS106の各処理は、図３３に示すステップS001、ステップS002、ステップS005、およびステップS006の各処理とそれぞれ同様である。図１に示すステップS103、およびステップS105の各処理が、本実施形態のシステム更新装置による特徴的な処理である。
【００５２】
本実施形態のシステム更新装置は、例外が発生する可能性がある更新作業中の全ての時点に対するロールバック手順をそれぞれ設計する（ステップS103）。ただし、ステップS103で設計されるロールバック手順は、現実的なリソース量で実行可能な計算処理で求められる手順である。後述するように、ステップS103で設計されるロールバック手順には、不適切な手順が含まれている可能性がある。
【００５３】
また、本実施形態のシステム更新装置は、更新作業手順の実行中に例外が発生した時、ステップS103で設計された例外が発生した時のシステムの状態に対応するロールバック手順に応じて、後述するように手順を合成する（ステップS105）。ステップS105の処理により、ロールバック手順が迅速に準備される。
【００５４】
図１に示すシステム更新処理により、本実施形態のシステム更新装置は、事前に各ロールバック手順を準備せずに、例外が発生した時のシステムの全ての状態に迅速に対応できる。以下、ステップS101〜ステップS106の各処理を実行する本実施形態のシステム更新装置の構成および動作を、図面を参照して説明する。
【００５５】
［構成の説明］
図２は、本発明によるシステム更新装置の第１の実施形態の構成例を示すブロック図である。図２に示すように、本実施形態のシステム更新装置１００は、正常系ブロックと、事前処理ブロックと、事後対応ブロックとで構成されている。
【００５６】
なお、ブロック図に記載されている単方向の矢印は、データ（情報）が流れる方向を示す。しかし、各矢印が記載されている箇所において双方向にデータが流れる可能性は排除されていない。
【００５７】
図２に示すように、正常系ブロックは、手順計画部１１１と、実行順序調整部１１２と、手順実行部１１３とを含む。手順計画部１１１は、入力された状態要素モデルを基に、手順を計画する機能を有する。すなわち、手順計画部１１１は、図１に示すステップS102の処理を行う。
【００５８】
実行順序調整部１１２は、手順計画部１１１により設計された手順を構成するタスクの実行順序を調整する機能を有する。また、手順実行部１１３は、実行順序調整部１１２によりタスクの実行順序が調整された手順を更新対象システム５００に対して実行する機能を有する。すなわち、手順実行部１１３は、図１に示すステップS104の処理、およびステップS106の処理を行う。
【００５９】
手順実行部１１３は、更新対象システム５００と通信可能に接続されている。また、手順実行中に更新対象システム５００において例外が発生した場合、手順実行部１１３に例外が発生したことが通知される。例外の発生は、人手による確認や、外部のシステム監視サービス等によって手順実行部１１３に通知される。また、更新対象システム５００自身が、例外の発生を手順実行部１１３に通知してもよい。
【００６０】
また、図２に示すように、事前処理ブロックは、ロールバック手順網羅部１２１と、逆実行手順計画部１２２と、部分ロールバック手順保存部１２３とを含む。
【００６１】
ロールバック手順網羅部１２１は、例外が発生する可能性がある全ての時点に対してロールバック手順を事前に用意するために、逆実行手順計画部１２２および部分ロールバック手順保存部１２３を制御する機能を有する。
【００６２】
逆実行手順計画部１２２は、更新作業手順の実行中に発生する可能性がある状態に対応するロールバック手順として用いられる逆実行手順を計画する機能を有する。逆実行手順計画部１２２は、実行順序調整部１１２によりタスクの実行順序が調整された手順を基に逆実行手順を計画する。なお、逆実行手順の具体的な内容は後述する。
【００６３】
部分ロールバック手順保存部１２３は、逆実行手順計画部１２２により設計された部分ロールバック手順を保存する機能を有する。すなわち、事前処理ブロックの各構成要素が、図１に示すステップS103の処理を行う。
【００６４】
また、図２に示すように、事後対応ブロックは、ロールバック手順生成部１３１と、状態管理部１３２とを含む。ロールバック手順生成部１３１は、更新作業手順の実行中の更新対象システム５００の現在状態に対応するロールバック手順を生成する機能を有する。
【００６５】
具体的には、ロールバック手順生成部１３１は、現在状態に応じて、部分ロールバック手順と逆実行手順とを部分ロールバック手順保存部１２３から取得する。次いで、ロールバック手順生成部１３１は、取得された部分ロールバック手順と逆実行手順とを合成することによって、ロールバック手順を生成する。ロールバック手順生成部１３１は、生成されたロールバック手順を手順実行部１１３に入力する。
【００６６】
状態管理部１３２は、更新作業手順の実行中の更新対象システム５００の現在状態を管理する機能を有する。現在状態は、更新対象システム５００の最新の状態である。すなわち、事後対応ブロックの各構成要素が、図１に示すステップS105の処理を行う。
【００６７】
以下、図１に示すステップS103の処理、および図１に示すステップS105の処理を、図３〜図８を参照して具体的に説明する。
【００６８】
本実施形態のシステム更新装置１００は、ロールバック手順が、通常手順を構成するタスクと「逆のタスク」が、通常手順と「逆の順序」で並べられる（以下、逆実行されるという。）ことによって生成可能である場合が多いという特徴を利用している。本実施形態における逆実行手順は、上記の方法で生成された手順である。
【００６９】
図３は、本実施形態のロールバック手順の生成処理の例を示す説明図である。図３に示す１つの矩形は、１つのタスクを表す。また、白色の矩形は、未実行のタスクを表す。また、黒色のタスクは、実行済みのタスクを表す。また、図３に示す矢印は、先に実行されるタスクから後に実行されるタスクに向けて伸びている。
【００７０】
図３（ａ）は、実行途中の手順を示す。具体的には、図３（ａ）は、タスク「app.conf配備」が実行される直前で例外が発生した状態を示す。
【００７１】
図３（ａ）に示す状態から初期状態に戻すロールバック手順は、実行済みのタスクが逆実行されることによって生成される。図３（ｂ）は、逆実行で生成されたロールバック手順を示す。
【００７２】
図３（ｂ）に示すタスク「app.war 削除」、タスク「serverXml 復元」、およびタスク「tomcat起動」は、図３（ａ）に示すタスク「app.war 配備」、タスク「serverXml 更新」、およびタスク「tomcat停止」の逆のタスクである。また、図３（ｂ）に示すロールバック手順では、上記の逆のタスクが図３（ａ）に示す手順と逆の順序で並べられている。
【００７３】
上記のように例外が発生した時までに実行されたタスクを基にロールバック手順が生成される手法では、事前に各状態に対応したロールバック手順が生成される手法に比べて、消費されるリソース量が削減される。本実施形態のシステム更新装置１００は、基本的に上記の手法でロールバック手順を生成する。
【００７４】
しかし、上記のように単に「逆のタスク」が並べられるだけではロールバック手順が生成不可能な場合がある。図４は、更新作業手順の例を示す説明図である。
【００７５】
図４に示す手順において、例えばapp1.warとapp1.conf が削除された時点からロールバックが行われる時、war →confの順で配備されることが求められる。しかし、単純な逆実行で上記の順が考慮されたロールバック手順を生成することは困難である。
【００７６】
また、app1.warの配備に外部のリポジトリへのアクセスが求められる時、適切な操作が補完されなければ、タスク「app1.warの削除」の逆のタスク「app1.warの配備」は、実行不可能である。
【００７７】
よって、本実施形態のシステム更新装置１００は、可能な限り逆実行可能なタスクを増やし、逆実行不可能なタスクに対してのみ部分ロールバック手順を計画するという方針でロールバック手順を生成する。
【００７８】
上記の方針に基づいた事前処理ブロックの構成要素の処理を説明する。実行順序調整部１１２は、逆実行でロールバック手順が生成可能になるように、更新作業手順を構成するタスクの実行順序を調整する。図５は、実行順序調整部１１２によるタスクの実行順序の調整処理の例を示す説明図である。
【００７９】
図５（ａ）に示す手順は、図４に示す更新作業手順である。上述したように、app1.warとapp1.conf が削除された場合、war →confの順で配備されることが求められる。単純な逆実行で生成されるロールバック手順において上記の順が考慮されるように、実行順序調整部１１２は、図５（ｂ）に示すようにタスクの実行順序を調整する。
【００８０】
図５（ｂ）は、図５（ａ）に示すタスクの実行順序が調整された手順を示す。具体的には、実行順序調整部１１２は、並列に実行可能なタスク「app1.war削除」とタスク「app1.conf 削除」を、タスク「app1.conf 削除」→タスク「app1.war削除」の順に実行されるように並び替える。図５（ｂ）に示す白抜きの矢印が、調整された実行順序を表す。
【００８１】
また、逆実行手順計画部１２２は、実行順序が調整されても逆実行不可能なタスクに対してのみ、部分ロールバック手順を事前に計画する。図６は、逆実行手順計画部１２２による部分ロールバック手順の計画処理の例を示す説明図である。
【００８２】
図６（ａ）は、図５（ｂ）に示す手順全体に対する逆実行により生成された逆実行手順を示す。タスク「app1.war配備」に「×」が記されている理由は、上記の理由により実行不可能なタスクであるためである。
【００８３】
よって、逆実行手順計画部１２２は、タスク「app1.war削除」に対する部分的なロールバック手順である部分ロールバック手順を計画する。図６（ｂ）に示すように、逆実行手順計画部１２２は、部分ロールバック手順としてタスク「repo.conn 接続」→タスク「app1.war配備」→タスク「repo.conn 切断」の手順を計画する。逆実行手順計画部１２２は、元の手順と、計画された部分ロールバック手順とを、関連付けて部分ロールバック手順保存部１２３に保存する。
【００８４】
次に、上記の方針に基づいた事後対応ブロックの構成要素の処理を説明する。図７は、ロールバック手順生成部１３１によるロールバック手順の生成処理の例を示す説明図である。
【００８５】
図７（ａ）は、実行途中の手順を示す。具体的には、図７（ａ）は、タスク「app1.war削除」が実行された直後に例外が発生した状態を示す。また、図７（ａ）に示す破線で囲まれた領域は、逆実行可能な手順の部分を表す。
【００８６】
ロールバック手順生成部１３１は、実行済みのタスクを逆実行することによって、図７（ｂ）に示す逆実行手順を生成する。図７（ｂ）に示す破線で囲まれた領域には、逆実行可能な手順の部分の逆実行で生成された手順が含まれる。なお、実行不可能なタスクであるタスク「app1.war配備」には、「×」が記されている。
【００８７】
図８は、ロールバック手順生成部１３１によるロールバック手順の生成処理の他の例を示す説明図である。図８（ａ）に示す手順は、図７（ｂ）に示す逆実行手順である。図８（ａ）に示す破線で囲まれた領域は、逆実行不可能な手順の部分を表す。
【００８８】
ロールバック手順生成部１３１は、元の手順をキーに、事前に計画された部分ロールバック手順を部分ロールバック手順保存部１２３から取得する。次いで、ロールバック手順生成部１３１は、取得された部分ロールバック手順と逆実行手順とを合成する。
【００８９】
図８（ｂ）は、２つの手順が合成された手順、すなわち生成目的とするロールバック手順を示す。図８（ｂ）に示す破線で囲まれた領域には、部分ロールバック手順が含まれている。以上のように、本実施形態のシステム更新装置１００は、ロールバック手順を準備する。
【００９０】
以下、本実施形態のシステム更新装置１００がロールバック手順を準備する具体的な例を図９〜図２０を参照して説明する。図９は、手順計画部１１１に入力される状態要素モデルの例を示す説明図である。
【００９１】
図９に示す状態要素モデルは、更新対象システム５００を表す。図９に示す矩形は、状態要素を表す。各状態要素は、更新対象システム５００を構成する各部品をそれぞれ表す。
【００９２】
また、図９に示す状態要素内の楕円は、状態要素の状態を表す。二重線の楕円は、現在状態を表す。また、黒色の楕円は、目的状態を表す。また、楕円間の矢印は、状態遷移を表す。手順計画部１１１は、入力された状態要素モデルを基に、各状態要素の状態を現在状態から目的状態へ遷移させるような更新作業手順を計画する。
【００９３】
また、図９に示す破線の矢印は、依存性を表す。また、図９に示す白色の丸は、依存性の起点を表す。始点が状態要素そのものに付随し、終点が任意の状態に付随する矢印は、当該状態要素内の全ての状態遷移から当該任意の状態への依存性を表す。
【００９４】
例えば、状態要素E1の状態遷移t から状態要素E2の状態s への依存性は、状態遷移t の実行が状態s に依存していることを示す。すなわち、状態要素E1は、状態要素E2の状態が状態s であるときにしか状態遷移t を実行できない。
【００９５】
また、図９に示す破線の角丸四角形は、手順計画部１１１が入力された状態要素モデルを分割することによって生成されたグループを表す。手順計画部１１１は、入力された状態要素モデルを基に更新作業手順を計画する。
【００９６】
図１０は、手順計画部１１１が計画する更新作業手順の例を示す説明図である。図１０に示す更新作業手順は、図９に示す状態要素モデル内の各現在状態を各目的状態にそれぞれ遷移させるための手順である。
【００９７】
図１０に示す各破線の角丸四角形は、図９に示す各グループにそれぞれ対応する。また、図１０に示す矩形および矢印は、図３４に示す矩形および矢印と同じ意味を有する。例えば、タスク「bot.service:t->f」は、「状態要素bot.service の状態を状態t から状態f へ遷移させる」というタスクである。
【００９８】
手順計画部１１１は、計画された更新作業手順を逆実行手順計画部１２２に入力する。逆実行手順計画部１２２は、入力された順方向の変更手順である図１０に示す左のグループの手順および右のグループの手順に対して単純に逆実行することによって、逆実行手順を生成できる。
【００９９】
しかし、図１０に示す順方向の変更手順である中央のグループの手順には状態要素app.service に対するタスクが含まれるため、逆実行手順計画部１２２は、上記の理由により単純に逆実行できない。よって、図１０に示すように、逆実行手順計画部１２２には、中央のグループの手順に対してのみ部分ロールバック手順を計画することが求められる。
【０１００】
なお、部分ロールバック手順の計画が求められるグループ同士が隣接したとき、以下に示す前処理の実行が求められる。図１１は、逆実行手順計画部１２２による各グループの手順に対する統合処理の例を示す説明図である。図１１に示す「不要」と記載された角丸四角形は、部分ロールバック手順の計画が求められないグループの手順を表す。また、図１１に示す「必要」と記載された角丸四角形は、部分ロールバック手順の計画が求められるグループの手順を表す。
【０１０１】
部分ロールバック手順の計画が求められるグループ同士が隣接すると、以降の手続きに不都合が生じる可能性がある。よって、逆実行手順計画部１２２は、図１１に示すように部分ロールバック手順の計画が求められるグループ同士を１つのグループに統合する前処理を行う。
【０１０２】
図１２は、逆実行手順計画部１２２が計画する逆実行手順の例を示す説明図である。図１２に示す各破線の角丸四角形は、図１０に示す各グループにそれぞれ対応する。上記のように、図１２に示す左のグループの逆実行手順および右のグループの逆実行手順は、図１０に示す左のグループの手順および右のグループの手順に対する単純な逆実行で生成された手順である。
【０１０３】
例えば、図１０に示すタスク「bot.service:t->f」は、図１２に示すタスク「bot.service:f->t」に変更されている。また、図１２に示す矢印の向きは、図１０に示す矢印の向きとそれぞれ反対になっている。すなわち、左のグループの逆実行手順および右のグループの逆実行手順は、通常の逆実行で計画された手順である。
【０１０４】
実行順序調整部１１２は、図１２に示す逆実行手順のように生成された逆実行手順のうち、実行順序の調整が求められる逆実行手順に対して実行順序補完処理を実行する。
【０１０５】
以下、実行順序調整部１１２が実行順序補完処理を実行することによってシステム逆実行手順Ｐからシステム逆実行手順Ｐ’を生成する処理を、図１３〜図１５を参照して説明する。図１３は、実行順序調整部１１２による順序関係候補の収集処理の例を示す説明図である。
【０１０６】
図１３に示す手順Ｐは、逆実行手順である。また、タスクt は、逆実行不可能なタスクである。最初に、実行順序調整部１１２は、タスクt に対して図１３に示す処理Ａと処理Ｂを実行する。
【０１０７】
処理Ａにおいて、実行順序調整部１１２は、以下の２つの条件を満たすタスク群d1,d2,・・・,dn を列挙する。
【０１０８】
（１）タスクt と並列に実行可能
（２）タスクt の実行可能条件に影響する
【０１０９】
図１３に示す処理Ａでは、タスク群としてタスクd1、タスクd2、タスクd3が列挙されている。その理由は、いずれのタスクもタスクt と並列に実行可能である。また、タスクd1とタスクd3が実行されると、タスクt が実行可能になる。また、タスクd2が実行されると、タスクt が実行不可能になる。すなわち、いずれのタスクもタスクt の実行可能条件に影響するからである。
【０１１０】
次いで、処理Ｂにおいて、実行順序調整部１１２は、タスクt とタスクdi(i=1, ・・・,n) との間に張られる順序関係の候補の集合X(t,di) を生成する。X には、候補「t →di」、および候補「di→t 」が含まれる。
【０１１１】
上記の実行可能条件への影響が踏まえられると、順序関係の候補としてタスクt とタスクd1との間には、「d1→t 」が張られる。また、タスクt とタスクd2との間には、「t →d2」が張られる。また、タスクt とタスクd3との間には、「d3→t 」が張られる。よって、上記の手順で全てのタスクt に対して集められた順序関係の候補の集合X は、図１３に示すようにX={d1 →t, t→d2, d3→t}になる。
【０１１２】
次に、実行順序調整部１１２は、全てのタスクt に対して「タスクt が実行可能」になるための制約Cexe(t) を生成する。タスクt が実行可能なタイミングは、図１３に示す処理Ｂを参照すると、以下のいずれかである。
【０１１３】
１．タスクd1が実行された後
２．タスクd3が実行された後、タスクd2が実行される前
【０１１４】
「順序関係a →b を採用する」ことを[a→b]と記載すると、「タスクt が実行可能」になるための制約Cexe(t) は、以下のように記載される。
【０１１５】
Cexe(t) = ( [d1→t] OR ( [d3→t] AND [t→d2] ) )  ・・・式（１）
【０１１６】
次に、実行順序調整部１１２は、「手順Ｐの順序関係に矛盾がない」ための制約Cordを生成する。「順序関係に矛盾がない」とは、以下の２つのルールが保たれていることを意味する。
【０１１７】
１．（非対称律）[a→b]と[b→a]が同時に成立してはならない
２．（推移律）[a→b]と[b→c]が成立するなら[a→c]も成立する
【０１１８】
よって、図１３に示す手順の順序関係に矛盾がないための制約Cordは、以下のように記載される。
【０１１９】
Cord = NOT ( [t→d2] AND [d1→t] )  ・・・式（２）
【０１２０】
なお、非特許文献４には、制約Cexe(t) の式、および制約Cordの式のより複雑な例が記載されている。
【０１２１】
次に、実行順序調整部１１２は、制約解決ソルバを用いて、Cordを満たし、かつ可能な限り多くのCexe(t) を満たす手順のうち、必要最小限の順序構造を手順Ｐ’として採用する。実行順序調整部１１２は、例えば集合X から必要最小限の順序関係を採用し、手順Ｐに追加することによって手順Ｐ’を構成する。
【０１２２】
制約解決ソルバとして、例えば非特許文献４に記載されているMaxSATソルバが使用される。MaxSATソルバが使用されると、手順の半順序化が実現される。また、非特許文献４には、上記のような制約の例が記載されている。
【０１２３】
図１４は、実行順序調整部１１２により実行順序が補完された手順の例を示す説明図である。図１４に示す手順Ｐ’１、および手順Ｐ’２はいずれも、制約「Cexe(t) かつCord」を満たす。
【０１２４】
また、図１４に示す手順Ｐ’２の方が手順Ｐ’１よりも順序性の制約が少ない。すなわち、実行順序調整部１１２は、順序関係の数が最小である手順Ｐ’２をシステム逆実行手順Ｐ’に採用する。
【０１２５】
図１５は、手順における順序関係の数を示す説明図である。手順における順序関係の数は、タスク間にかかる全ての順序関係の数である。図１５（ａ）に示すように矢印が３本だけ張られている手順において、タスク間にかかる全ての順序関係の数は、図１５（ｂ）に示すように６つである。タスク間にかかる全ての順序関係の数を用いて、実行順序調整部１１２は、システム逆実行手順Ｐを決定する。
【０１２６】
また、中央のグループの部分ロールバック手順は、図１２にはまだ記載されていない。逆実行手順計画部１２２は、周辺の逆実行手順との実行順序も考慮された手順を構築し、全体として正しい部分ロールバック手順を計画する。
【０１２７】
以下、逆実行手順計画部１２２が部分ロールバック手順計画処理を実行することによって部分手順Ｐから部分ロールバック手順参照テーブルＤを生成する処理を、図１６〜図２０を参照して説明する。
【０１２８】
最初に、逆実行手順計画部１２２は、逆実行不可能な部分手順Ｐが実行される時に発生する可能性がある全ての実行状況S(S={s0,s1, ・・・,sn}) を列挙する。
【０１２９】
図１６は、逆実行手順計画部１２２による部分ロールバック手順の計画処理の例を示す説明図である。図１６（ａ）の上に示す手順は、図１０に示す中央のグループの手順である。
【０１３０】
また、図１６（ａ）の下に示す吹き出しには、実行状況S が記載されている。図１６（ａ）の下に示す白色の矩形は、未実行のタスクを表す。また、黒色の矩形は、実行済みのタスクを表す。
【０１３１】
図１６（ａ）の下に示すように、実行状況S には８通りの状況が含まれている。計算処理が削減されるためには可能な限り発生する可能性がある状況を減らすことが求められるため、逆実行手順計画部１２２は、手順の一部の線形化を行う。具体的には、逆実行手順計画部１２２は、適当に順序関係を加えることによって、逆実行不可能な部分手順Ｐを線形手順に変形する。
【０１３２】
図１６（ｂ）の上に示す手順は、一部が線形化された図１０に示す中央のグループの手順である。具体的には、図１６（ａ）で並列に実行可能なタスク「app.config:u->t 」とタスク「dependPackage:f->t」が、図１６（ｂ）でタスク「dependPackage:f->t」→タスク「app.config:u->t 」の順に並び替えられている。
【０１３３】
また、図１６（ｂ）の下に示すように、実行状況S に含まれている状況は、６通りまで削減されている。よって、逆実行手順計画部１２２は、図１６（ｂ）の上に示す手順を基に部分ロールバック手順を計画する。
【０１３４】
なお、線形化が実行される場合、元の更新作業手順における部分手順Ｐも、線形化された後の手順に置き換えられることが求められる。また、手順の線形化は、手順に応じて実行されなくてもよい。
【０１３５】
次いで、逆実行手順計画部１２２は、各実行状況siに対して、状態モデルの状態を部分手順Ｐが実行される前の状態へ遷移させるための部分ロールバック手順Piを求める。図１７は、逆実行手順計画部１２２による部分ロールバック手順の計画処理の他の例を示す説明図である。
【０１３６】
図１７（ａ）は、例外が発生したタイミングの手順の実行状況を示す。具体的には、図１７（ａ）は、タスク「app.service:t->r」→タスク「app.config:u->t 」→タスク「dependPackage:f->t」まで実行された段階で例外が発生した状況を示す。
【０１３７】
図１７（ａ）に示す例外が発生した状況に対して、逆実行手順計画部１２２は、図１７（ｂ）に示す状態要素モデルの状態を初期状態に戻すという構成変更問題の解を部分ロールバック手順として求める。上記のように、逆実行手順計画部１２２は、例外が発生した各状況に対して状態を初期状態に遷移させるための部分ロールバック手順を求める。
【０１３８】
また、部分ロールバック手順を求める際、部分ロールバック手順の計画対象に依存する周辺タスクが存在する場合、逆実行手順計画部１２２は、仮状態要素を追加する。図１８は、逆実行手順計画部１２２による部分ロールバック手順の計画処理の他の例を示す説明図である。
【０１３９】
図１８（ａ）に示す仮状態要素は、状態app.service.t に依存するタスク「bot.service:f->t」に対応する状態遷移を含む。また、図１８（ａ）に示す状態モデルにおいて、状態遷移「bot.service:f->t」に対応する仮状態要素の状態遷移から状態app.service.t への依存性も追加されている。
【０１４０】
図１８（ｂ）は、逆実行手順計画部１２２が図１８（ａ）に示す状態モデルを基に計画した部分ロールバック手順を示す。仮状態要素および依存性が追加されたことによって、図１８（ｂ）に示す部分ロールバック手順とタスク「bot.service:f->t」とが接合されている。
【０１４１】
すなわち、図１８に示す追加処理を実行することによって、逆実行手順計画部１２２は、計画された部分ロールバック手順と部分ロールバック手順の計画対象に依存するタスクとを矛盾なく接合できる。
【０１４２】
また、部分ロールバック手順から周辺の状態要素に対する依存性が存在する場合、逆実行手順計画部１２２は、部分ロールバック手順と周辺の逆向きのタスクとの間に順序関係を追加する。図１９は、逆実行手順計画部１２２による部分ロールバック手順の計画処理の他の例を示す説明図である。
【０１４３】
図１９に示す吹き出し内の状態要素モデルを参照すると、部分ロールバック手順の計画対象から状態repo.connect.tへ依存性が付与されている。状態repo.connect.tへの依存性が満たされるように、逆実行手順計画部１２２は、部分ロールバック手順とタスクとの間に順序関係を追加する。
【０１４４】
順序関係を追加するために、逆実行手順計画部１２２は、例えば実行順序調整部１１２による実行順序補完処理と同様に、順序関係の候補を生成し、生成された候補に対して制約解決を行う。図１９に示す例では、逆実行手順計画部１２２は、「付与されている依存性が全て満たされる最小の順序構造」を求める。
【０１４５】
求められた最小の順序構造に基づいて、逆実行手順計画部１２２は、タスク「repo.connect:f->t 」からタスク「dependPackage:f->t」への順序関係を追加する。また、逆実行手順計画部１２２は、タスク「dependPackage:f->t」からタスク「repo.connect:t->f 」への順序関係を追加する。
【０１４６】
すなわち、図１９に示す追加処理を実行することによって、逆実行手順計画部１２２は、計画された部分ロールバック手順と部分ロールバック手順の計画対象が依存するタスクとを矛盾なく接合できる。
【０１４７】
次いで、逆実行手順計画部１２２は、実行状況siをキーとして部分ロールバック手順Piを返すテーブルである部分ロールバック手順参照テーブルＤを生成する。図２０は、逆実行手順計画部１２２により生成された部分ロールバック手順参照テーブルＤの例を示す説明図である。
【０１４８】
逆実行手順計画部１２２は、例外が発生した時の各実行状況に対応する部分ロールバック手順、および図１８〜図１９に示す周囲との依存性を解決可能な手段（図示せず）を含む部分ロールバック手順参照テーブルＤを部分ロールバック手順保存部１２３に入力する。
【０１４９】
また、逆実行手順計画部１２２は、生成された逆実行手順も部分ロールバック手順保存部１２３に入力する。部分ロールバック手順保存部１２３は、入力された部分ロールバック手順参照テーブルＤおよび逆実行手順を保存する。
【０１５０】
［動作の説明］
以下、本実施形態のシステム更新装置１００の手順を生成する動作を図２１を参照して説明する。図２１は、第１の実施形態のシステム更新装置１００による手順生成処理の動作を示すフローチャートである。
【０１５１】
最初に、手順計画部１１１に状態要素モデルが入力される（ステップS110）。入力された状態要素モデルを基に、手順計画部１１１は、更新作業手順を計画する（ステップS120）。手順計画部１１１は、計画された更新作業手順を実行順序調整部１１２に入力する。
【０１５２】
次いで、実行順序調整部１１２は、入力された更新作業手順を基に、実行順序補完処理を行う（ステップS130）。実行順序調整部１１２は、実行順序が補完された更新作業手順をロールバック手順網羅部１２１に入力する。
【０１５３】
次いで、ロールバック手順網羅部１２１は、入力された更新作業手順のうち逆実行可能な部分のみを逆実行手順計画部１２２に入力する。逆実行手順計画部１２２は、入力された部分を基に逆実行手順を生成する（ステップS140）。
【０１５４】
次いで、ロールバック手順網羅部１２１は、入力された更新作業手順のうち逆実行不可能な部分を逆実行手順計画部１２２に入力する。逆実行手順計画部１２２は、入力された部分を基に部分ロールバック手順計画処理を行う（ステップS150）。部分ロールバック手順計画処理を実行した後、システム更新装置１００は、手順生成処理を終了する。
【０１５５】
次に、本実施形態のシステム更新装置１００の手順を実行する動作を図２２を参照して説明する。図２２は、第１の実施形態のシステム更新装置１００による手順実行処理の動作を示すフローチャートである。
【０１５６】
最初に、手順実行部１１３に、実行順序調整部１１２により実行順序が補完された更新作業手順が入力される（ステップS210）。
【０１５７】
次いで、手順実行部１１３は、入力された更新作業手順を構成するタスクを実行する（ステップS220）。タスクを実行した後、手順実行部１１３は、更新対象システム５００の現在状態を状態管理部１３２に記憶する（ステップS230）。
【０１５８】
次いで、手順実行部１１３は、更新対象システム５００において例外が発生したことが通知されたか否かを確認する（ステップS240）。例外が発生したことが通知されなかった場合（ステップS240におけるNo）、手順実行部１１３は、ステップS290の処理を行う。
【０１５９】
例外が発生したことが通知された場合（ステップS240におけるYes ）、手順実行部１１３は、実行済みの更新作業手順全てに対する逆実行が可能であるか否かを確認する（ステップS250）。
【０１６０】
更新作業手順全てに対する逆実行が可能である場合（ステップS250におけるYes ）、手順実行部１１３は、ロールバック手順生成部１３１に更新作業手順を基に逆実行でロールバック手順を生成するように指示する。
【０１６１】
次いで、ロールバック手順生成部１３１は、部分ロールバック手順保存部１２３から現在状態に応じた逆実行手順をロールバック手順として取得する（ステップS260）。次いで、手順実行部１１３は、取得されたロールバック手順をロールバック手順生成部１３１から取得する。ロールバック手順を取得した後、手順実行部１１３は、ステップS280の処理を行う。
【０１６２】
更新作業手順の一部に対する逆実行が不可能である場合（ステップS250におけるNo）、手順実行部１１３は、実行中の更新作業手順をロールバック手順生成部１３１に入力する。
【０１６３】
ロールバック手順生成部１３１は、入力された手順のうちの逆実行が不可能である部分手順に対応する部分ロールバック手順を、状態管理部１３２に記憶されている現在状態も用いて部分ロールバック手順保存部１２３から取得する。また、ロールバック手順生成部１３１は、取得された部分ロールバック手順に応じた逆実行手順も併せて取得する。
【０１６４】
次いで、ロールバック手順生成部１３１は、逆実行が可能である部分手順に対する逆実行で生成された逆実行手順と取得された部分ロールバック手順とを合成することによって、ロールバック手順を生成する（ステップS270）。ロールバック手順生成部１３１は、生成されたロールバック手順を手順実行部１１３に入力する。手順が入力された後、手順実行部１１３は、ステップS280の処理を行う。
【０１６５】
ステップS280において、手順実行部１１３は、入力されたロールバック手順を実行する。ロールバック手順が実行されることによって、更新対象システム５００の状態が初期状態に戻る。ロールバック手順を実行した後、システム更新装置１００は、手順実行処理を終了する。
【０１６６】
ステップS290において、手順実行部１１３は、入力された更新作業手順を構成するタスクのうち、まだ実行されていないタスクが存在するか否かを確認する。まだ実行されていないタスクが存在する場合（ステップS290におけるYes ）、手順実行部１１３は、再度ステップS220の処理を行う。
【０１６７】
更新作業手順を構成する全てのタスクが実行済みである場合（ステップS290におけるNo）、システム更新装置１００は、手順実行処理を終了する。
【０１６８】
次に、図２１に示す手順生成処理を構成する副処理であるステップS130の実行順序補完処理を、図２３を参照して説明する。図２３は、第１の実施形態の実行順序調整部１１２による実行順序補完処理の動作を示すフローチャートである。
【０１６９】
最初に、実行順序調整部１１２は、逆実行不可能なタスクt と並列に実行可能で、かつ逆実行不可能なタスクt の実行可能条件に影響するタスク群を列挙する（ステップS131）。
【０１７０】
次いで、実行順序調整部１１２は、逆実行不可能なタスクt と列挙されたタスク群との間に張られる順序関係の候補の集合を生成する（ステップS132）。
【０１７１】
次いで、実行順序調整部１１２は、全てのタスクt に対して「タスクt が実行可能」になるための制約Cexe(t) を生成する（ステップS133）。
【０１７２】
次いで、実行順序調整部１１２は、逆実行手順の順序関係に矛盾がないための制約Cordを生成する（ステップS134）。
【０１７３】
次いで、実行順序調整部１１２は、Cordを満たし、かつ可能な限り多くのCexe(t) を満たす必要最小限の順序構造の手順を逆実行手順として採用する（ステップS135）。採用した後、実行順序調整部１１２は、実行順序補完処理を終了する。
【０１７４】
次に、図２１に示す手順生成処理を構成する副処理であるステップS150の部分ロールバック手順計画処理を、図２４を参照して説明する。図２４は、第１の実施形態の逆実行手順計画部１２２による部分ロールバック手順計画処理の動作を示すフローチャートである。
【０１７５】
最初に、逆実行手順計画部１２２は、適当に順序関係を加えることによって、逆実行不可能な部分手順Ｐを線形手順に変形する（ステップS151）。なお、ステップS151の処理は、省略されてもよい。
【０１７６】
次いで、逆実行手順計画部１２２は、逆実行不可能な部分手順Ｐが実行される時に発生する可能性がある全ての実行状況S を列挙する（ステップS152）。
【０１７７】
次いで、逆実行手順計画部１２２は、各実行状況siに対して、状態モデルの状態を部分手順Ｐが実行される前の状態へ遷移させるための部分ロールバック手順Piを計画する（ステップS153）。
【０１７８】
次いで、逆実行手順計画部１２２は、計画された部分ロールバック手順Piの周囲との依存性を解決可能な手段を生成する（ステップS154）。
【０１７９】
次いで、逆実行手順計画部１２２は、実行状況siをキーとして部分ロールバック手順Piを返すテーブルである部分ロールバック手順参照テーブルＤを生成する（ステップS155）。部分ロールバック手順参照テーブルＤには、例外が発生した時の各実行状況siに対応する部分ロールバック手順Pi、および部分ロールバック手順Piの周囲との依存性を解決可能な手段が含まれる。
【０１８０】
次いで、逆実行手順計画部１２２は、部分ロールバック手順参照テーブルＤと逆実行手順を部分ロールバック手順保存部１２３に入力する。部分ロールバック手順保存部１２３は、部分ロールバック手順参照テーブルＤと逆実行手順を保存する（ステップS156）。保存された後、逆実行手順計画部１２２は、部分ロールバック手順計画処理を終了する。
【０１８１】
［効果の説明］
本実施形態のシステム更新装置１００の実行順序調整部１１２は、更新作業手順に対する逆実行で生成された逆実行手順に対して実行順序を補完する。実行順序が補完されることによって、生成された逆実行手順がロールバック手順として使用可能になる。すなわち、単純な逆実行処理によりロールバック手順が生成されるため、システム更新装置１００は、ロールバック手順の準備に要するリソース量を削減できる。
【０１８２】
また、本実施形態のシステム更新装置１００のロールバック手順生成部１３１は、更新作業手順の逆実行可能な部分に対する逆実行で生成された逆実行手順と、更新作業手順の逆実行不可能な部分に対する計画処理で生成された部分ロールバック手順とを合成する。合成することによって、ロールバック手順生成部１３１は、使用可能なロールバック手順を生成する。すなわち、計画処理の対象部分が削減されるため、システム更新装置１００は、ロールバック手順の準備に要するリソース量を削減できる。
【０１８３】
実施形態２．
［構成の説明］
次に、本発明の第２の実施形態を、図面を参照して説明する。図２５は、本発明によるシステム更新装置の第２の実施形態の構成例を示す説明図である。図２５に示すように、本実施形態のシステム更新装置２００は、正常系ブロックと、事前処理ブロックと、事後対応ブロックとで構成されている。
【０１８４】
図２５に示す正常系ブロック、および事後対応ブロックは、図２に示す正常系ブロック、および事後対応ブロックとそれぞれ同様である。図２５に示す事前処理ブロックには、図２に示す事前処理ブロックと異なり、ロールバック手順網羅部１２１と、部分ロールバック手順保存部１２３とが含まれる。
【０１８５】
すなわち、本実施形態のシステム更新装置２００は、第１の実施形態の部分ロールバック手順計画処理を実行せず、第１の実施形態の実行順序補完処理を実行する装置である。システム更新装置２００の事前処理ブロックは、逆実行不可能な部分手順が含まれていない更新作業手順を処理対象にする。なお、本実施形態では、ロールバック手順網羅部１２１が逆実行手順を生成する。
【０１８６】
［動作の説明］
以下、本実施形態のシステム更新装置２００の手順を生成する動作を図２６を参照して説明する。図２６は、第２の実施形態のシステム更新装置２００による手順生成処理の動作を示すフローチャートである。
【０１８７】
図２６に示すステップS310〜ステップS330の各処理は、図２１に示すステップS110〜ステップS130の各処理とそれぞれ同様である。
【０１８８】
次いで、ロールバック手順網羅部１２１は、入力された更新作業手順を基に逆実行手順を生成する（ステップS340）。ロールバック手順網羅部１２１は、生成された逆実行手順を部分ロールバック手順保存部１２３に入力する。
【０１８９】
次いで、部分ロールバック手順保存部１２３は、入力された逆実行手順を保存する（ステップS350）。保存された後、システム更新装置２００は、手順生成処理を終了する。
【０１９０】
次に、本実施形態のシステム更新装置２００の手順を実行する動作を図２７を参照して説明する。図２７は、第２の実施形態のシステム更新装置２００による手順実行処理の動作を示すフローチャートである。
【０１９１】
図２７に示すステップS410〜ステップS440の各処理は、図２２に示すステップS210〜ステップS240の各処理とそれぞれ同様である。また、図２７に示すステップS450〜ステップS470の各処理は、図２２に示すステップS260、ステップS280〜ステップS290の各処理とそれぞれ同様である。
【０１９２】
［効果の説明］
本実施形態のシステム更新装置２００の実行順序調整部１１２は、更新作業手順に対する逆実行で生成された逆実行手順に対して実行順序を補完する。実行順序が補完されることによって、生成された逆実行手順がロールバック手順として使用可能になる。すなわち、単純な逆実行処理によりロールバック手順が生成されるため、システム更新装置２００は、ロールバック手順の準備に要するリソース量を削減できる。
【０１９３】
実施形態３．
［構成の説明］
次に、本発明の第３の実施形態を、図面を参照して説明する。図２８は、本発明によるシステム更新装置の第３の実施形態の構成例を示す説明図である。図２８に示すように、本実施形態のシステム更新装置３００は、正常系ブロックと、事前処理ブロックと、事後対応ブロックとで構成されている。
【０１９４】
図２８に示す事前処理ブロック、および事後対応ブロックは、図２に示す事前処理ブロック、および事後対応ブロックとそれぞれ同様である。図２８に示す正常系ブロックには、図２に示す正常系ブロックと異なり、手順計画部１１１と、手順実行部１１３とが含まれる。
【０１９５】
すなわち、本実施形態のシステム更新装置３００は、第１の実施形態の実行順序補完処理を実行せず、第１の実施形態の部分ロールバック手順計画処理を実行する装置である。システム更新装置３００の事前処理ブロックは、生成された逆実行手順において実行順序の補完が不要な更新作業手順を処理対象にする。
【０１９６】
［動作の説明］
以下、本実施形態のシステム更新装置３００の手順を生成する動作を図２９を参照して説明する。図２９は、第３の実施形態のシステム更新装置３００による手順生成処理の動作を示すフローチャートである。
【０１９７】
図２９に示すステップS510〜ステップS520の各処理は、図２１に示すステップS110〜ステップS120の各処理とそれぞれ同様である。
【０１９８】
手順計画部１１１は、計画された更新作業手順をロールバック手順網羅部１２１に入力する。ロールバック手順網羅部１２１は、入力された更新作業手順のうち逆実行可能な部分のみを逆実行手順計画部１２２に入力する。逆実行手順計画部１２２は、入力された部分を基に逆実行手順を生成する（ステップS530）。
【０１９９】
次いで、ロールバック手順網羅部１２１は、入力された更新作業手順のうち逆実行不可能な部分を逆実行手順計画部１２２に入力する。逆実行手順計画部１２２は、入力された部分を基に部分ロールバック手順計画処理を行う（ステップS540）。部分ロールバック手順計画処理を実行した後、システム更新装置３００は、手順生成処理を終了する。
【０２００】
また、本実施形態のシステム更新装置３００の手順を実行する処理は、図２２に示す手順実行処理と同様である。
【０２０１】
［効果の説明］
本実施形態のシステム更新装置３００のロールバック手順生成部１３１は、更新作業手順の逆実行可能な部分に対する逆実行で生成された逆実行手順と、更新作業手順の逆実行不可能な部分に対する計画処理で生成された部分ロールバック手順とを合成する。合成することによって、ロールバック手順生成部１３１は、使用可能なロールバック手順を生成する。すなわち、計画処理の対象部分が削減されるため、システム更新装置３００は、ロールバック手順の準備に要するリソース量を削減できる。
【０２０２】
以下、各実施形態のシステム更新装置１００、システム更新装置２００、およびシステム更新装置３００のハードウェア構成の具体例を説明する。図３０は、本発明の各実施形態を適用可能なシステム更新装置のハードウェア構成例を示す説明図である。
【０２０３】
図３０に示すシステム更新装置は、ＣＰＵ（Central Processing Unit ）１０１と、主記憶部１０２と、通信部１０３と、補助記憶部１０４とを備える。また、ユーザが操作するための入力部１０５や、ユーザに処理結果または処理内容の経過を提示するための出力部１０６を備えてもよい。
【０２０４】
システム更新装置１００、システム更新装置２００、およびシステム更新装置３００は、図３０に示すＣＰＵ１０１が各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現される。
【０２０５】
すなわち、ＣＰＵ１０１が補助記憶部１０４に格納されているプログラムを、主記憶部１０２にロードして実行し、システム更新装置１００、システム更新装置２００、およびシステム更新装置３００の各動作を制御することによって、各機能がソフトウェアにより実現される。
【０２０６】
主記憶部１０２は、データの作業領域やデータの一時退避領域として用いられる。主記憶部１０２は、例えばＲＡＭ（Random Access Memory）である。
【０２０７】
通信部１０３は、有線のネットワークまたは無線のネットワーク（情報通信ネットワーク）を介して、周辺機器との間でデータを入力および出力する機能を有する。
【０２０８】
補助記憶部１０４は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory ）、ＤＶＤ−ＲＯＭ（Digital Versatile Disk Read Only Memory ）、半導体メモリが挙げられる。
【０２０９】
入力部１０５は、データや処理命令を入力する機能を有する。入力部１０５は、例えばキーボードやマウス等の入力デバイスである。
【０２１０】
出力部１０６は、データを出力する機能を有する。出力部１０６は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
【０２１１】
また、図３０に示すように、システム更新装置において、各構成要素は、システムバス１０７に接続されている。
【０２１２】
補助記憶部１０４は、例えば、図２に示す手順計画部１１１、実行順序調整部１１２、手順実行部１１３、ロールバック手順網羅部１２１、逆実行手順計画部１２２、ロールバック手順生成部１３１、および状態管理部１３２を実現するためのプログラムを記憶している。
【０２１３】
また、主記憶部１０２は、例えば、部分ロールバック手順保存部１２３の記憶領域として利用される。また、手順計画部１１１、および手順実行部１１３は、通信部１０３を介して通信処理を実行してもよい。
【０２１４】
なお、システム更新装置１００、システム更新装置２００、およびシステム更新装置３００は、ハードウェアにより実現されてもよい。例えば、システム更新装置１００は、内部に図２に示すような機能を実現するＬＳＩ（Large Scale Integration ）等のハードウェア部品が含まれる回路が実装されてもよい。
【０２１５】
また、各構成要素の一部または全部は、汎用の回路（circuitry ）または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップ（例えば、上記のＬＳＩ）によって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【０２１６】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【０２１７】
次に、本発明の概要を説明する。図３１は、本発明によるシステム更新装置の概要を示すブロック図である。本発明によるシステム更新装置１０は、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業（例えば、タスク）が所定の順に複数並べられた手順である更新手順に含まれている作業を基に状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業である逆作業を生成する逆作業生成部１１（例えば、逆実行手順計画部１２２）と、逆作業が生成不可能な作業が含まれていない更新手順の部分を基に生成された逆作業が所定の順と逆の順に複数並べられた手順を逆実行手順として生成する第１手順生成部１２（例えば、逆実行手順計画部１２２）と、逆作業が生成不可能な作業が含まれている更新手順の部分に対応する状態要素の状態を更新手順の実行中の任意の状態から現在状態へ遷移させるための作業の手順を計画する計画部１３（例えば、逆実行手順計画部１２２）と、生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する第２手順生成部１４（例えば、ロールバック手順生成部１３１）とを備える。
【０２１８】
そのような構成により、システム更新装置は、ロールバック手順の準備に要するリソース量を削減できる。
【０２１９】
また、システム更新装置１０は、更新手順の実行中の更新対象システムの最新の状態を管理する管理部（例えば、状態管理部１３２）を備え、第２手順生成部１４は、管理されている最新の状態に基づいてロールバック手順を生成してもよい。
【０２２０】
そのような構成により、システム更新装置は、システムの状態を現在状態から初期状態へロールバックさせるための作業の手順を生成できる。
【０２２１】
また、システム更新装置１０は、生成された逆実行手順と、計画された手順と、更新手順の実行中の更新対象システムの状態とを対応付けて記憶する記憶部（例えば、部分ロールバック手順保存部１２３）を備え、第２手順生成部１４は、管理されている最新の状態に対応付けられている生成された逆実行手順と最新の状態に対応付けられている計画された手順とを用いてロールバック手順を生成してもよい。
【０２２２】
そのような構成により、システム更新装置は、ロールバック手順をより迅速に生成できる。
【０２２３】
また、記憶部は、生成された逆実行手順と計画された手順との合成に使用される情報を生成された逆実行手順および計画された手順と対応付けて記憶してもよい。
【０２２４】
そのような構成により、システム更新装置は、逆実行手順と部分ロールバック手順とを矛盾なく合成できる。
【０２２５】
また、システム更新装置１０は、手順を実行する実行部（例えば、手順実行部１１３）を備えてもよい。
【０２２６】
そのような構成により、システム更新装置は、例外が発生した時にロールバック手順を実行できる。
【０２２７】
また、更新手順は、２つ以上の作業が順不同に実行可能に並べられた手順でもよい。
【０２２８】
そのような構成により、システム更新装置は、半順序手順の実行中に更新対象システムが到達する可能性がある全ての状態に対してロールバック手順を生成できる。
【０２２９】
また、第１手順生成部１２は、更新対象システムの初期状態と更新対象システムの目的状態とに基づいて更新手順を生成してもよい。
【０２３０】
そのような構成により、システム更新装置は、更新手順を生成できる。
【０２３１】
以上、本実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０２３２】
この出願は、２０１８年３月２９日に出願された日本特許出願２０１８−０６３８４２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【０２３３】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下に限られない。
【０２３４】
（付記１）更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成する逆作業生成部と、逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成された逆作業が前記所定の順と逆の順に複数並べられた手順を逆実行手順として生成する第１手順生成部と、逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業の手順を計画する計画部と、生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する第２手順生成部とを備えることを特徴とするシステム更新装置。
【０２３５】
（付記２）前記更新手順の実行中の前記更新対象システムの最新の状態を管理する管理部を備え、前記第２手順生成部は、管理されている最新の状態に基づいてロールバック手順を生成する付記１記載のシステム更新装置。
【０２３６】
（付記３）生成された逆実行手順と、計画された手順と、前記更新手順の実行中の前記更新対象システムの状態とを対応付けて記憶する記憶部を備え、前記第２手順生成部は、管理されている最新の状態に対応付けられている生成された逆実行手順と前記最新の状態に対応付けられている計画された手順とを用いてロールバック手順を生成する付記２記載のシステム更新装置。
【０２３７】
（付記４）前記記憶部は、生成された逆実行手順と計画された手順との合成に使用される情報を前記生成された逆実行手順および前記計画された手順と対応付けて記憶する付記３記載のシステム更新装置。
【０２３８】
（付記５）手順を実行する実行部を備える付記１から付記４のうちのいずれかに記載のシステム更新装置。
【０２３９】
（付記６）前記更新手順は、２つ以上の作業が順不同に実行可能に並べられた手順である付記１から付記５のうちのいずれかに記載のシステム更新装置。
【０２４０】
（付記７）前記第１手順生成部は、前記更新対象システムの初期状態と前記更新対象システムの目的状態とに基づいて前記更新手順を生成する付記１から付記６のうちのいずれかに記載のシステム更新装置。
【０２４１】
（付記８）更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成し、逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成された逆作業が前記所定の順と逆の順に複数並べられた手順を逆実行手順として生成し、逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業の手順を計画し、生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成することを特徴とするシステム更新方法。
【０２４２】
（付記９）前記更新手順の実行中の前記更新対象システムの最新の状態を管理し、管理されている最新の状態に基づいてロールバック手順を生成する付記８記載のシステム更新方法。
【０２４３】
（付記１０）コンピュータに、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成する逆作業生成処理、逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成された逆作業が前記所定の順と逆の順に複数並べられた手順を逆実行手順として生成する第１手順生成処理、逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業の手順を計画する計画処理、および生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成する第２手順生成処理を実行させるためのシステム更新プログラム。
【０２４４】
（付記１１）コンピュータに、前記更新手順の実行中の前記更新対象システムの最新の状態を管理する管理処理を実行させ、前記第２手順生成処理で、管理されている最新の状態に基づいてロールバック手順を生成させる付記１０記載のシステム更新プログラム。
【０２４５】
（付記１２）コンピュータで実行されるときに、更新対象システムを構成する状態要素の状態を現在状態から目的状態へ遷移させるための作業が所定の順に複数並べられた手順である更新手順に含まれている作業を基に前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業である逆作業を生成し、逆作業が生成不可能な作業が含まれていない前記更新手順の部分を基に生成された逆作業が前記所定の順と逆の順に複数並べられた手順を逆実行手順として生成し、逆作業が生成不可能な作業が含まれている前記更新手順の部分に対応する前記状態要素の状態を前記更新手順の実行中の任意の状態から前記現在状態へ遷移させるための作業の手順を計画し、生成された逆実行手順と計画された手順とを合成することによってロールバック手順を生成するシステム更新プログラムを記録したコンピュータ読み取り可能な記録媒体。
【０２４６】
（付記１３）コンピュータで実行されるときに、前記更新手順の実行中の前記更新対象システムの最新の状態を管理し、管理されている最新の状態に基づいてロールバック手順を生成する付記１２記載の記録媒体。
【産業上の利用の可能性】
【０２４７】
本発明は、例外処理手順（ロールバック手順）の自動生成の分野に好適に適用される。
【符号の説明】
【０２４８】
１０、１００、２００、３００  システム更新装置
１１  逆作業生成部
１２  第１手順生成部
１３  計画部
１４  第２手順生成部
１０１  ＣＰＵ
１０２  主記憶部
１０３  通信部
１０４  補助記憶部
１０５  入力部
１０６  出力部
１０７  システムバス
１１１  手順計画部
１１２  実行順序調整部
１１３  手順実行部
１２１  ロールバック手順網羅部
１２２  逆実行手順計画部
１２３  部分ロールバック手順保存部
１３１  ロールバック手順生成部
１３２  状態管理部
５００  更新対象システム
【図１】
0006897867.tif 000002
【図２】
0006897867.tif 000003
【図３】
0006897867.tif 000004
【図４】
0006897867.tif 000005
【図５】
0006897867.tif 000006
【図６】
0006897867.tif 000007
【図７】
0006897867.tif 000008
【図８】
0006897867.tif 000009
【図９】
0006897867.tif 000010
【図１０】
0006897867.tif 000011
【図１１】
0006897867.tif 000012
【図１２】
0006897867.tif 000013
【図１３】
0006897867.tif 000014
【図１４】
0006897867.tif 000015
【図１５】
0006897867.tif 000016
【図１６】
0006897867.tif 000017
【図１７】
0006897867.tif 000018
【図１８】
0006897867.tif 000019
【図１９】
0006897867.tif 000020
【図２０】
0006897867.tif 000021
【図２１】
0006897867.tif 000022
【図２２】
0006897867.tif 000023
【図２３】
0006897867.tif 000024
【図２４】
0006897867.tif 000025
【図２５】
0006897867.tif 000026
【図２６】
0006897867.tif 000027
【図２７】
0006897867.tif 000028
【図２８】
0006897867.tif 000029
【図２９】
0006897867.tif 000030
【図３０】
0006897867.tif 000031
【図３１】
0006897867.tif 000032
【図３２】
0006897867.tif 000033
【図３３】
0006897867.tif 000034
【図３４】
0006897867.tif 000035