(57)【特許請求の範囲】
【請求項１】
システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係を示す依存関係情報を記憶する依存関係記憶手段と、
前記複数の操作の各々の実行順序を示す手順シーケンスを記憶する操作手順記憶手段と、
前記依存関係情報で示される前記１以上の依存関係の各々が満たされるように、前記手順シーケンスを更新し、出力する操作手順生成手段と
を含むシステム構築手順生成装置。
【請求項２】
前記複数の操作種別は、プログラムモジュールのインストール、アンインストール、起動、停止、再起動の内の少なくとも１つを含む
請求項１に記載のシステム構築手順生成装置。
【請求項３】
前記依存関係は、操作の対の一方を依存元、他方を依存先としたときに、依存先操作に係るプログラムモジュールの状態が当該操作を完了した状態である場合に依存元操作を実行することを示す前提状態依存、依存元操作に係るプログラムモジュールの状態が当該操作を完了した状態である場合に依存先操作を実行することを示す逆前提状態依存、依存元操作の実行後に依存先操作を実行することを示す通知依存、依存先操作の実行後に依存元操作を実行することを示す逆通知依存の内の少なくとも１つにより指定される
請求項２に記載のシステム構築手順生成装置。
【請求項４】
前記操作手順生成手段は、前記依存関係情報に依存関係が追加された場合、
前記追加された依存関係が、前提状態依存または逆通知依存であるときは、前記手順シーケンスにおいて、前記追加された依存関係の依存元操作を依存先操作の後に移動し、前記追加された依存関係の依存先と依存元との間の１以上の操作の各々に関して、移動した操作を依存先とした前提状態依存または逆通知依存の依存元操作、もしくは、移動した操作を依存元とした逆前提状態依存または通知依存の依存先操作を、当該移動した操作の後に移動することを再帰的に繰り返し、
前記追加された依存関係が、逆前提状態依存または通知依存であるときは、前記手順シーケンスにおいて、前記追加された依存関係の依存元操作を依存先操作の前に移動し、前記追加された依存関係の依存先と依存元との間の１以上の操作の各々に関して、移動した操作を依存先とした逆前提状態依存または通知依存の依存元操作、もしくは、移動した操作を依存元とした前提状態依存または逆通知依存の依存先操作を、当該移動した操作の前に移動することを再帰的に繰り返すことにより、前記手順シーケンスを更新する
請求項３に記載のシステム構築手順生成装置。
【請求項５】
前記複数の操作の内の、依存関係の連鎖により辿ることのできる全ての操作を要素とする集合を操作集合とし、
前記操作手順記憶手段は、１以上の操作集合の各々対応に、当該操作集合に含まれる１以上の操作の各々の実行順序を示す手順シーケンスを記憶し、
前記操作手順生成手段は、前記依存関係情報に依存関係が追加された場合、
追加前に、前記追加された依存関係の依存元操作と依存先操作を含む操作集合が同じときは、前記追加された依存関係の依存元操作と依存先操作を含む手順シーケンスを更新し、
追加前に、前記追加された依存関係の依存元操作と依存先操作を含む操作集合が異なるときは、前記追加された依存関係が前提状態依存または逆通知依存である場合、前記追加された依存関係の依存元操作を含む手順シーケンスを、依存先操作を含む手順シーケンスの後に移動し、前記追加された依存関係が逆前提状態依存または通知依存である場合、前記追加された依存関係の依存先操作を含む手順シーケンスを、依存元操作を含む手順シーケンスの後に移動することにより、１つの手順シーケンスに統合する
請求項４に記載のシステム構築手順生成装置。
【請求項６】
前記操作手順生成手段は、前記依存関係情報から依存関係が削除された場合、
削除後に、前記削除された依存関係の依存元操作と依存先操作を含む操作集合が異なるときは、前記削除された依存関係の依存元操作と依存先操作を含む手順シーケンスを、依存元操作を含む手順シーケンスと、依存先操作を含む手順シーケンスとに分割する
請求項５に記載のシステム構築手順生成装置。
【請求項７】
さらに、
前記依存関係情報と前記手順シーケンスとが更新された場合、前記依存関係情報に含まれる１以上の依存関係の各々を当該依存関係の依存元操作と依存先操作に関連付けて示す依存関係画面と、前記手順シーケンスを示す手順画面とを生成し、出力する出力手段と、
前記依存関係画面上で依存関係の追加または削除の入力を受け付け、前記依存関係情報を更新する入力手段と
を備える
請求項１乃至６のいずれかに記載のシステム構築手順生成装置。
【請求項８】
システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係を示す依存関係情報を記憶し、
前記複数の操作の各々の実行順序を示す手順シーケンスを記憶し、
前記依存関係情報で示される前記１以上の依存関係の各々が満たされるように、前記手順シーケンスを更新し、出力する
システム構築手順生成方法。
【請求項９】
コンピュータに、
システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係を示す依存関係情報を記憶し、
前記複数の操作の各々の実行順序を示す手順シーケンスを記憶し、
前記依存関係情報で示される前記１以上の依存関係の各々が満たされるように、前記手順シーケンスを更新し、出力する
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム構築手順生成装置、システム構築手順生成方法、及び、プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータシステム（以下、システムとする）の運用コストの削減に対する要求が高まるにつれ、システムに関する様々な運用プロセスの自動化が進んでいる。その一つに、システムの自動構築がある。システムの構築は、システムの開発者等が構築手順書を作成し、構築担当者等が構築手順書に基づいて構築作業を行うというプロセスで実施されてきた。そして、このプロセスを自動化するために、システム構築前に開発者等がワークフローを作成し、ワークフローを基にシステムを自動構築するアプローチがとられてきた。【０００３】
一方で、システムの複雑化に伴い、ワークフローのメンテナンスの難易度が上り、フローの定義誤りや、変更が困難になる課題が発生してきた。この課題に対して、構築対象のシステムを構成するプログラムモジュールの間の依存関係を基にシステム構築手順を生成するアプローチが提案されはじめた。【０００４】
このような、プログラムモジュール間の依存関係に基づいてシステムの構築手順を生成する技術が、例えば、特許文献１に記載されている。特許文献１に記載の技術では、システムを構成する複数のソフトウェアコンポーネント（プログラムモジュール）を起動する場合に、各ソフトウェアコンポーネントの重み付き依存情報に基づいて各コンポーネントの起動順位を決定し、決定した起動順位に従って各コンポーネントを起動する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−４３９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
システムの構築では、複数のプログラムモジュールの各々に対して、インストールや起動等の、複数種別の操作が要求されることがある。この場合、あるプログラムの各操作の実行の可否が当該プログラムの他の操作や他のプログラムの各操作の実行の有無に依存することがある。【０００７】
しかしながら、上述の特許文献１に記載の技術は、複数のプログラムモジュールの起動に関する依存関係を基に、各プログラムの起動順位を決定しており、複数のプログラムモジュールの各々に対して複数種別の操作の実行が要求されるシステムには適用できない。【０００８】
本発明の目的は、複数のプログラムモジュールの各々に対して複数種別の操作を実行することにより構築されるシステムの構築手順を生成することである。
【課題を解決するための手段】
【０００９】
本発明の一態様におけるシステム構築手順生成装置は、システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係を示す依存関係情報を記憶する依存関係記憶手段と、前記複数の操作の各々の実行順序を示す手順シーケンスを記憶する操作手順記憶手段と、前記依存関係情報が更新された場合、前記依存関係情報で示される前記１以上の依存関係の各々が満たされるように、前記手順シーケンスを更新し、出力する操作手順生成手段とを含む。【００１０】
本発明の一態様におけるシステム構築手順生成方法は、システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係を示す依存関係情報を記憶し、前記複数の操作の各々の実行順序を示す手順シーケンスを記憶し、前記依存関係情報が更新された場合、前記依存関係情報で示される前記１以上の依存関係の各々が満たされるように、前記手順シーケンスを更新し、出力する。【００１１】
本発明の一態様におけるコンピュータが読み取り可能な記録媒体は、コンピュータに、システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係を示す依存関係情報を記憶し、前記複数の操作の各々の実行順序を示す手順シーケンスを記憶し、前記依存関係情報が更新された場合、前記依存関係情報で示される前記１以上の依存関係の各々が満たされるように、前記手順シーケンスを更新し、出力する処理を実行させるプログラムを格納する。
【発明の効果】
【００１２】
本発明の効果は、複数のプログラムモジュールの各々に対して複数種別の操作を実行することにより構築されるシステムの構築手順を生成できることである。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の第１の実施の形態における、システム構築手順生成装置１００の構成を示すブロック図である。
【図３】本発明の第１の実施の形態における、システム構築手順生成装置１００の処理を示すフローチャートである。
【図４】本発明の第１の実施の形態における、手順シーケンス更新処理（ステップＳ１０５）の詳細を示すフローチャートである。
【図５】本発明の第１の実施の形態における、手順シーケンス更新処理（ステップＳ１０５）の詳細を示すフローチャート（図４のつづき）である。
【図６】本発明の第１の実施の形態における、モジュールに対する操作と、操作によるモジュールの状態遷移を示す図である。
【図７】本発明の第１の実施の形態における、依存関係の種別の例を示す図である。
【図８】本発明の第１の実施の形態における、依存関係情報１２１と手順シーケンス１２２の例を示す図である。
【図９】本発明の第１の実施の形態における、依存関係情報１２１と手順シーケンス１２２の他の例を示す図である。
【図１０】本発明の第１の実施の形態における、出力画面２００の例を示す図である。
【図１１】本発明の第１の実施の形態における、手順シーケンス更新処理における、手順シーケンス１２２の更新の例を示す図である。
【図１２】本発明の第１の実施の形態における、手順シーケンス更新処理における、手順シーケンス１２２の更新の他の例を示す図である。
【図１３】本発明の第２の実施の形態における、システム構築手順生成装置１００の処理を示すフローチャートである。
【図１４】本発明の第２の実施の形態における、依存関係情報１２１と手順シーケンス１２２の例を示す図である。
【図１５】本発明の第２の実施の形態における、依存関係情報１２１と手順シーケンス１２２の他の例を示す図である。
【図１６】本発明の第２の実施の形態における、出力画面２００の例を示す図である。
【図１７】本発明の第２の実施の形態における、依存関係情報１２１と手順シーケンス１２２の他の例を示す図である。
【図１８】本発明の第２の実施の形態における、依存関係情報１２１と手順シーケンス１２２の他の例を示す図である。
【図１９】本発明の第２の実施の形態における、出力画面２００の他の例を示す図である。
【発明を実施するための形態】
【００１４】
（第１の実施の形態）
次に、本発明の第１の実施の形態について説明する。
【００１５】
はじめに、本発明の第１の実施の形態におけるシステム構築で実行される操作と、操作間に設定される依存関係１２３について説明する。
【００１６】
本発明の第１の実施の形態における構築対象のコンピュータシステムは、複数のプログラムモジュール（以下、モジュールとする）により構成され、複数のモジュールの各々に対して、複数種別の操作の内の１以上が実行される。
【００１７】
図６は、本発明の第１の実施の形態における、モジュールに対する操作と、操作によるモジュールの状態遷移を示す図である。
【００１８】
本発明の第１の実施の形態では、操作の種別として、「install（インストール）」、「uninstall（アンインストール）」、「load（起動）」、「unload（停止）」、及び、「reload（再起動）」が用いられる。
【００１９】
ここで、「install」は、システムを構築するコンピュータの外部記憶部等にモジュールを起動可能となるように配置する操作を示す。図６に示すように、「install」が完了するとモジュールの状態は「installed（インストール済み）」に遷移する。
【００２０】
「uninstall」は、外部記憶部等から、インストール済みのモジュールを削除する操作を示す。「uninstall」が完了するとモジュールの状態は「none（なし）」に遷移する。
【００２１】
「load」は、インストールされたモジュールをコンピュータのメモリ等に展開し、当該モジュールの処理を起動する操作を示す。「load」が完了するとモジュールの状態は「loaded（起動済み）」に遷移する。
【００２２】
「unload」は、モジュールを停止する操作を示す。「unload」が完了するとモジュールの状態は「installed」に遷移する。
【００２３】
「reload」は、モジュールを再起動する操作を示す。モジュールの状態が「loaded」であれば、上述の「unload」と「load」を順に実行する。モジュールの状態が「installed」であれば、「load」を実行する。「reload」が完了するとモジュールの状態は、「loaded」に遷移する。
【００２４】
図７は、本発明の第１の実施の形態における、依存関係１２３の種別の例を示す図である。
【００２５】
本発明の第１の実施の形態では、依存関係１２３の種別として、前提状態依存、逆前提状態依存、通知依存、逆通知依存が用いられると仮定する。
【００２６】
図７において、２つの操作間の矢印が依存関係１２３を示し、矢印の元が依存元、先が依存先、矢印に添付された＜＞内が、依存関係１２３の種別を示す。
【００２７】
ここで、「前提状態依存」は、依存元の操作を実行するためには、依存先の操作に対応するモジュールの状態が、当該操作が完了した状態である必要があることを示す。例えば、図７のように、「Module A : install」を依存元、「Module B : install」を依存先とした前提状態依存が設定されている場合、モジュールＡの「install」を実行するためには、モジュールＢの状態が「installed」である必要がある。
【００２８】
「逆前提状態依存」は、前提状態依存とは逆の依存関係１２３で、依存先の操作を実行するためには、依存元の操作に対応するモジュールの状態が、当該操作が完了した状態である必要があることを示す。例えば、「Module A : install」を依存元、「Module B : install」を依存先とした逆前提状態依存が設定されている場合、モジュールＢの「install」を実行するためには、モジュールＡの状態が「installed」である必要がある。
【００２９】
「通知依存」は、依存元の操作を実行後、依存先の操作を実行することを示す。例えば、「Module A : install」を依存元、「Module B : reload」を依存先とした通知依存が設定されている場合、モジュールＡの「install」を実行後、モジュールＢの「reload」を実行する。
【００３０】
「逆通知依存」は、通知依存とは逆の依存関係１２３で、依存先の操作を実行後、依存元の操作を実行することを示す。例えば、「Module A : reload」を依存元、「Module B : install」を依存先とした逆通知依存が設定されている場合、モジュールＢの「install」を実行後、モジュールＡの「reload」を実行する。
【００３１】
次に、本発明の第１の実施の形態の構成について説明する。図２は、本発明の第１の実施の形態における、システム構築手順生成装置１００の構成を示すブロック図である。
【００３２】
図２を参照すると、本発明の第１の実施の形態のシステム構築手順生成装置１００は、入力部１０１、操作手順生成部１０２、出力部１０３、依存関係記憶部１１１、及び、操作手順記憶部１１２を含む。
【００３３】
ここで、依存関係記憶部１１１は、依存関係情報１２１を記憶する。また、操作手順記憶部１１２は、手順シーケンス１２２を記憶する。
【００３４】
依存関係情報１２１は、システムの構築に必要な複数の操作の内の１以上の対の各々の依存関係１２３を示す。
【００３５】
図８、９は、本発明の第１の実施の形態における、依存関係情報１２１と手順シーケンス１２２の例を示す図である。図８、９の手順シーケンス１２２は、それぞれ、図８、９の依存関係情報１２１に対して設定された手順シーケンス１２２である。
【００３６】
ここで、図７と同様に、依存関係情報１２１の２つの操作間の矢印が依存関係１２３を示し、矢印の元が依存元、先が依存先、矢印に添付された＜＞内が、依存関係１２３の種別を示す。図８の依存関係情報１２１では、システムの構築に必要な５つの操作の内の２つの対に依存関係１２３（１２３ａ、ｂ）が設定されている。
【００３７】
手順シーケンス１２２は、システムの構築に必要な複数の操作の各々の実行順序を示す。図８の手順シーケンス１２２は、モジュールＢの「install」、モジュールＣの「install」、モジュールＣの「load」、…の順番に、操作が実行されることを示している。
【００３８】
なお、システムの構築に必要な複数の操作は、予めユーザにより入力され、依存関係情報１２１と手順シーケンス１２２に設定されていると仮定する。また、初期状態では、依存関係情報１２１に依存関係１２３は設定されておらず、手順シーケンス１２２における各操作は、例えば、入力された順に配置されていると仮定する。
【００３９】
入力部１０１は、ユーザから依存関係１２３の追加または削除の入力を受け付け、依存関係情報１２１を更新する。依存関係１２３の入力は、例えば、ユーザによる、後述する依存性定義画面２０１上での図示しないマウスやタッチスクリーン等の入力デバイスの操作により行われる。
【００４０】
操作手順生成部１０２は、依存関係情報１２１が更新された場合、依存関係情報１２１で示される１以上の依存関係１２３の各々が満たされるように、手順シーケンス１２２を更新する。
【００４１】
出力部１０３は、更新された依存関係情報１２１、及び、手順シーケンス１２２を出力する。ここで、出力部１０３は、例えば、図示しない表示デバイスにより、出力画面２００を生成し、表示する。
【００４２】
図１０は、本発明の第１の実施の形態における、出力画面２００の例を示す図である。出力画面２００は、依存性定義画面２０１（依存関係画面）と手順画面２０２を含む。
【００４３】
ここで、依存性定義画面２０１は、依存関係情報１２１を示す。図１０の依存性定義画面２０１は、図９の依存関係情報１２１を示している。依存性定義画面２０１では、システムを構成する複数のモジュールが配置され、各モジュールには、システム構築時に当該モジュールに対して実行される操作が配置される。また、依存関係１２３は、依存元操作から依存先操作への矢印で示される。
【００４４】
手順画面２０２は、手順シーケンス１２２を示す。図１０の手順画面２０２は、図９の手順シーケンス１２２を示している。
【００４５】
ユーザは、入力部１０１を介して、依存性定義画面２０１上で、依存元操作と依存先操作を接続し、依存関係１２３の種別を指定することにより、依存関係１２３を追加する。また、ユーザは、入力部１０１を介して、依存性定義画面２０１上で、設定済みの依存元操作と依存先操作間の接続を削除することにより、依存関係１２３を削除する。
【００４６】
なお、システム構築手順生成装置１００はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。また、依存関係記憶部１１１と操作手順記憶部１１２とは、それぞれ個別の記憶媒体でも、１つの記憶媒体によって構成されていてもよい。
【００４７】
次に、本発明の第１の実施の形態におけるシステム構築手順生成装置１００の動作について説明する。図３は、本発明の第１の実施の形態における、システム構築手順生成装置１００の処理を示すフローチャートである。
【００４８】
ここでは、図８のように、依存関係情報１２１、手順シーケンス１２２が設定されていると仮定する。
【００４９】
はじめに、入力部１０１は、ユーザから依存関係１２３の追加または削除の入力を受け付ける（ステップＳ１０１）。
【００５０】
例えば、入力部１０１は、依存元操作「Module B : install」、依存先操作「Module A : install」、依存関係種別「前提状態依存」である依存関係１２３ｃの追加を受け付ける。
【００５１】
入力部１０１は、入力内容に従って依存関係情報１２１を更新する（ステップＳ１０２）。
【００５２】
例えば、入力部１０１は、図９のように、依存関係情報１２１を更新（依存関係１２３ｃを追加）する。
【００５３】
出力部１０３は、依存関係情報１２１の更新内容に従って、依存性定義画面２０１を更新する（ステップＳ１０３）。
【００５４】
例えば、出力部１０３は、図１０のように、依存性定義画面２０１を更新（Module B : installからModule A : installへ前提状態依存を示す矢印を追加）する。
【００５５】
次に、操作手順生成部１０２は、入力内容が依存関係１２３の追加か削除かを判定する（ステップＳ１０４）。ステップＳ１０４において、依存関係１２３の追加の場合、操作手順生成部１０２は、後述する手順シーケンス更新処理（ステップＳ３０１〜Ｓ３３２）に従って、依存関係情報１２１で示される依存関係１２３が満たされるように、手順シーケンス１２２を更新する（ステップＳ１０５）。
【００５６】
例えば、操作手順生成部１０２は、図９のように、手順シーケンス１２２を更新する。
【００５７】
最後に、出力部１０３は、手順シーケンス１２２の更新内容に従って、手順画面２０２を更新する（ステップＳ１０６）。
【００５８】
例えば、出力部１０３は、図１０のように、手順画面２０２を更新（図９の手順シーケンス１２２を表示）する。
【００５９】
なお、ステップＳ１０４において、入力内容が依存関係１２３の削除の場合、操作手順生成部１０２は、現在の手順シーケンス１２２を保持する。
【００６０】
ユーザ等は、出力された手順シーケンス１２２に従って、各操作を実行することにより、システムを構築することができる。
【００６１】
図４、５は、本発明の第１の実施の形態における、手順シーケンス更新処理（ステップＳ１０５）の詳細を示すフローチャートである。
【００６２】
はじめに、操作手順生成部１０２は、追加された依存関係１２３の種別が、「前提状態依存または逆通知依存」、もしくは、「逆前提状態依存または通知依存」のいずれであるかを判定する（ステップＳ３０１）。
【００６３】
ステップＳ３０１で、依存関係１２３の種別が前提状態依存または逆通知依存の場合、操作手順生成部１０２は、現在の手順シーケンス１２２において、追加された依存関係１２３の依存元操作が依存先操作より先に実行されるかどうかを判定する（ステップＳ３０２）。
【００６４】
ステップＳ３０２で、追加された依存関係１２３の依存元操作が依存先操作より先に実行される場合（ステップＳ３０２／Ｙｅｓ）、操作手順生成部１０２は、現在の手順シーケンス１２２における、依存元操作から依存先操作までのシーケンスを部分シーケンス１３１として抽出する（ステップＳ３０３）。
【００６５】
図１１、１２は、本発明の第１の実施の形態における、手順シーケンス１２２の更新例を示す図である。例えば、図１１の状態１のように依存関係情報１２１、及び、手順シーケンス１２２（図８の依存関係情報１２１、及び、手順シーケンス１２２）が設定されているときに、依存関係１２３ｃが追加されたと仮定する。この場合、追加された依存関係１２３（前提状態依存）の依存元操作（Module B : install）は依存先操作（Module A : install）より先に実行される。従って、操作手順生成部１０２は、図１１の状態２のように、依存元操作（Module B : install）から依存先操作（Module A : install）までのシーケンスを部分シーケンス１３１として抽出する。
【００６６】
また、操作手順生成部１０２は、移動した操作を格納するための空のリストを移動リスト１３２として生成する（ステップＳ３０４）。
【００６７】
操作手順生成部１０２は、部分シーケンス１３１の先頭の操作（依存元操作）を末尾に移動するとともに（ステップＳ３０５）、移動リスト１３２に追加する（ステップＳ３０６）。
【００６８】
例えば、操作手順生成部１０２は、図１１の状態３のように、依存元操作（Module B : install）を、部分シーケンス１３１の末尾に移動し、移動リスト１３２に追加する。
【００６９】
次に、操作手順生成部１０２は、対象操作に、部分シーケンス１３１の先頭の操作から依存先操作の前の操作までを順番に設定して、ステップＳ３０８からＳ３１１までを繰り返す（ステップＳ３０７）。
【００７０】
操作手順生成部１０２は、依存関係情報１２１に含まれる前提状態依存または逆通知依存の依存関係１２３の内、対象操作を依存元、移動リスト１３２内の操作を依存先とする依存関係１２３があるかどうかを判定する（ステップＳ３０８）。
【００７１】
ステップＳ３０８で、依存関係１２３が無い場合（ステップＳ３０８／Ｎｏ）、操作手順生成部１０２は、依存関係情報１２１に含まれる逆前提状態依存または通知依存の依存関係１２３の内、対象操作を依存先、移動リスト１３２内の操作を依存元とする依存関係１２３があるかどうかを判定する（ステップＳ３０９）。
【００７２】
ステップＳ３０８、Ｓ３０９で依存関係１２３がある場合（ステップＳ３０８／Ｙｅｓ、ステップＳ３０９／Ｙｅｓ）、操作手順生成部１０２は、対象操作を部分シーケンス１３１の末尾に移動するとともに（ステップＳ３１０）、移動リスト１３２に追加する（ステップＳ３１１）。
【００７３】
例えば、図１１の状態３において、部分シーケンス１３１における操作「Module C : install」を対象操作とした場合、依存関係情報１２１には、対象操作を依存元、移動リスト１３２内の操作「Module B : install」を依存先とした前提状態依存（依存関係１２３ｂ）がある。従って、操作手順生成部１０２は、図１１の状態４のように、対象操作（Module C : install）を、部分シーケンス１３１の末尾に移動し、移動リスト１３２に追加する。
【００７４】
また、図１１の状態４において、部分シーケンス１３１における操作「Module C : load」を対象操作とした場合、依存関係情報１２１には、対象操作を依存元、移動リスト１３２内の操作「Module C : install」を依存先とした逆通知依存（依存関係１２３ａ）がある。従って、操作手順生成部１０２は、図１１の状態５のように、対象操作（Module C : load）を、部分シーケンス１３１の末尾に移動し、移動リスト１３２に追加する。
【００７５】
また、図１１の状態５において、部分シーケンス１３１における操作「Module D : install」を対象操作とした場合、依存関係情報１２１には、対象操作を依存元、または、依存先とした依存関係１２３は無い。従って、操作手順生成部１０２は、図１１の状態５の部分シーケンス１３１を保持する。
【００７６】
次に、操作手順生成部１０２は、現在の手順シーケンス１２２における、追加された依存関係１２３の依存元操作から依存先操作までのシーケンスを、更新された部分シーケンス１３１で置換する（ステップＳ３１２）。
【００７７】
例えば、操作手順生成部１０２は、図１１の状態５の部分シーケンス１３１をもとに、状態６のような手順シーケンス１２２（図９の手順シーケンス１２２）を得る。
【００７８】
一方、ステップＳ３０１で、依存関係１２３の種別が逆前提状態依存または通知依存の場合、操作手順生成部１０２は、現在の手順シーケンス１２２において、追加された依存関係１２３の依存元操作が依存先操作より後に実行されるかどうかを判定する（ステップＳ３２２）。
【００７９】
ステップＳ３２２で、追加された依存関係１２３の依存元操作が依存先操作より後に実行される場合（ステップＳ３２２／Ｙｅｓ）、操作手順生成部１０２は、現在の手順シーケンス１２２における、依存先操作から依存元操作までのシーケンスを部分シーケンス１３１として抽出する（ステップＳ３２３）。
【００８０】
例えば、図１２の状態１のように依存関係情報１２１、及び、手順シーケンス１２２が設定されているときに、依存関係１２３ｆが追加されたと仮定する。この場合、追加された依存関係１２３（逆前提状態依存）の依存元操作（Module B : install）は依存先操作（Module A : install）より後に実行される。従って、操作手順生成部１０２は、図１２の状態２のように、依存先操作（Module A : install）から依存元操作（Module B : install）までのシーケンスを部分シーケンス１３１として抽出する。
【００８１】
また、操作手順生成部１０２は、移動した操作を格納するための空のリストを移動リスト１３２として生成する（ステップＳ３２４）。
【００８２】
操作手順生成部１０２は、部分シーケンス１３１の末尾の操作（依存元操作）を先頭に移動するとともに（ステップＳ３２５）、移動リスト１３２に追加する（ステップＳ３２６）。
【００８３】
例えば、操作手順生成部１０２は、図１２の状態３のように、依存元操作（Module B : install）を、部分シーケンス１３１の先頭に移動し、移動リスト１３２に追加する。
【００８４】
次に、操作手順生成部１０２は、対象操作に、部分シーケンス１３１の末尾の操作から依存先操作の次の操作までを逆順に設定して、ステップＳ３２８からＳ３３１までを繰り返す（ステップＳ３２７）。
【００８５】
操作手順生成部１０２は、依存関係情報１２１に含まれる逆前提状態依存または通知依存の依存関係１２３の内、対象操作を依存元、移動リスト１３２内の操作を依存先とする依存関係１２３があるかどうかを判定する（ステップＳ３２８）。
【００８６】
ステップＳ３２８で、依存関係１２３が無い場合（ステップＳ３２８／Ｎｏ）、操作手順生成部１０２は、依存関係情報１２１に含まれる前提状態依存または逆通知依存の依存関係１２３の内、対象操作を依存先、移動リスト１３２内の操作を依存元とする依存関係１２３があるかどうかを判定する（ステップＳ３２９）。
【００８７】
ステップＳ３２８、Ｓ３２９で依存関係１２３がある場合（ステップＳ３２８／Ｙｅｓ、ステップＳ３２９／Ｙｅｓ）、操作手順生成部１０２は、対象操作を部分シーケンス１３１の先頭に移動するとともに（ステップＳ３３０）、移動リスト１３２に追加する（ステップＳ３３１）。
【００８８】
例えば、図１２の状態３において、部分シーケンス１３１における操作「Module C : load」を対象操作とした場合、依存関係情報１２１には、対象操作を依存元、移動リスト１３２内の操作「Module B : install」を依存先とした逆前提状態依存（依存関係１２３ｅ）がある。従って、操作手順生成部１０２は、図１２の状態４のように、対象操作（Module C : load）を、部分シーケンス１３１の先頭に移動し、移動リスト１３２に追加する。
【００８９】
また、図１２の状態４において、部分シーケンス１３１における操作「Module C : install」を対象操作とした場合、依存関係情報１２１には、対象操作を依存元、移動リスト１３２内の操作「Module C : load」を依存先とした通知依存（依存関係１２３ｄ）がある。従って、操作手順生成部１０２は、図１２の状態５のように、対象操作（Module C : install）を、部分シーケンス１３１の先頭に移動し、移動リスト１３２に追加する。
【００９０】
また、図１２の状態５において、部分シーケンス１３１における操作「Module D : install」を対象操作とした場合、依存関係情報１２１には、対象操作を依存元、または、依存先とした依存関係１２３は無い。従って、操作手順生成部１０２は、図１２の状態５の部分シーケンス１３１を保持する。
【００９１】
次に、操作手順生成部１０２は、現在の手順シーケンス１２２における、追加された依存関係１２３の依存先操作から依存元操作までのシーケンスを、更新された部分シーケンス１３１で置換する（ステップＳ３３２）。
【００９２】
例えば、操作手順生成部１０２は、図１２の状態５の部分シーケンス１３１をもとに、状態６のような手順シーケンス１２２を得る。
【００９３】
以上により、本発明の第１の実施の形態の動作が完了する。
【００９４】
なお、本発明の第１の実施の形態においては、出力部１０３が、更新された手順シーケンス１２２を出力画面２００により出力しているが、操作手順生成部１０２、または、出力部１０３が、更新された手順シーケンス１２２を、ファイル等により出力してもよい。
【００９５】
また、操作手順生成部１０２、または、出力部１０３は、更新された手順シーケンス１２２に、操作間の依存関係１２３に関する情報（依存先、依存元、依存関係１２３の種別等）を含めて出力してもよい。
【００９６】
次に、本発明の第１の実施の形態の特徴的な構成を説明する。図１は、本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【００９７】
図１を参照すると、システム構築手順生成装置１００は、依存関係記憶部１１１、操作手順記憶部１１２、及び、操作手順生成部１０２を含む。
【００９８】
ここで、依存関係記憶部１１１は、システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係１２３を示す依存関係情報１２１を記憶する。操作手順記憶部１１２は、複数の操作の各々の実行順序を示す手順シーケンス１２２を記憶する。操作手順生成部１０２は、依存関係情報１２１が更新された場合、依存関係情報１２１で示される１以上の依存関係１２３の各々が満たされるように、手順シーケンス１２２を更新し、出力する。
【００９９】
本発明の第１の実施の形態によれば、複数のプログラムモジュールの各々に対して複数種別の操作を実行することにより構築されるシステムの構築手順を生成できる。その理由は、依存関係記憶部１１１が、システムの構築に必要な、複数のプログラムモジュールのいずれかと複数の操作種別のいずれかの組で示される複数の操作の内の、１以上の対の各々の依存関係１２３を示す依存関係情報１２１を記憶し、操作手順生成部１０２が、依存関係情報１２１が更新された場合に、依存関係情報１２１で示される１以上の依存関係１２３の各々が満たされるように、複数の操作の各々の実行順序を示す手順シーケンス１２２を更新するためである。これにより、手順シーケンス１２２の生成が自動化され、手順シーケンス１２２の設計コストを削減、設計ミスを低減できる。
【０１００】
また、本発明の第１の実施の形態によれば、依存元操作と依存先操作の実行順序が異なる複数種別（双方向）の依存関係を用いて、システムの構築手順を生成できる。その理由は、操作手順生成部１０２が、依存関係１２３の種別に応じて、依存元操作、依存先操作のどちらを先に実行するかを決定して、手順シーケンス１２２を更新するためである。
【０１０１】
また、本発明の第１の実施の形態によれば、依存関係の追加や削除による、システム構築手順への影響を容易に把握できる。その理由は、入力部１０１が、依存性定義画面２０１上で、依存関係１２３の追加または削除の入力を受け付けて、依存関係情報１２１を更新し、出力部１０３が、依存関係情報１２１と手順シーケンス１２２が更新された場合に、依存性定義画面２０１と手順画面２０２とを生成し、出力するためである。
【０１０２】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【０１０３】
本発明の第２の実施の形態は、並列に実行可能な複数の手順シーケンス１２２を生成する点において、本発明の第１の実施の形態と異なる。
【０１０４】
本発明の第２の実施の形態の構成は、本発明の第１の実施の形態の構成（図２）と同様となる。
【０１０５】
本発明の第２の実施の形態においては、操作手順記憶部１１２は、１以上の操作集合の各々対応に、手順シーケンス１２２を記憶する。ここで、操作集合とは、システムの構築に必要な複数の操作の内、依存関係１２３の連鎖により辿ることのできる全ての操作を要素とする集合である。異なる操作集合間には、依存関係１２３が無いため、異なる操作集合に含まれる操作は並列に実行可能である。
【０１０６】
図１４、１５、１７、１８は、本発明の第２の実施の形態における、依存関係情報１２１と手順シーケンス１２２の例を示す図である。
【０１０７】
図１４の依存関係情報１２１では、システムの構築に必要な５つの操作の内の３つの対に依存関係１２３（１２３ｉ、ｊ、ｈ）が設定されている。そして、「Module A : install」、「Module D : install」を要素とする操作集合ａと、「Module B : install」、「Module C : install」、「Module C : load」を要素とする操作集合ｂの２つの操作集合が形成され、それぞれの操作集合に対して、手順シーケンス１２２（１２２ａ、ｂ）が設定されている。
【０１０８】
操作手順生成部１０２は、依存関係１２３が追加された場合、手順シーケンス１２２の統合を行う。また、操作手順生成部１０２は、依存関係１２３が削除された場合、手順シーケンス１２２の分割を行う。
【０１０９】
図１６、１９は、本発明の第２の実施の形態における、出力画面２００の例を示す図である。本発明の第２の実施の形態においては、手順画面２０２に、１以上の手順シーケンス１２２が、並列実行可能な操作のシーケンスとして示される。図１６の依存性定義画面２０１と手順画面２０２は、図１５の依存関係情報１２１と手順シーケンス１２２ｃを示している。図１９の依存性定義画面２０１と手順画面２０２は、図１８の依存関係情報１２１と手順シーケンス１２２ａ、ｂを示している。
【０１１０】
次に、本発明の第２の実施の形態におけるシステム構築手順生成装置１００の動作について説明する。図１３は、本発明の第２の実施の形態における、システム構築手順生成装置１００の処理を示すフローチャートである。
【０１１１】
ここでは、図１４のように、依存関係情報１２１、手順シーケンス１２２が設定されていると仮定する。
【０１１２】
はじめに、入力部１０１は、ユーザから依存関係１２３の追加または削除の入力を受け付ける（ステップＳ２０１）。
【０１１３】
例えば、入力部１０１は、依存元操作「Module C : load」、依存先操作「Module A : install」、依存関係種別「前提状態依存」である依存関係１２３ｋの追加を受け付ける。
【０１１４】
入力部１０１は、入力内容に従って依存関係情報１２１を更新する（ステップＳ２０２）。
【０１１５】
例えば、入力部１０１は、図１５のように、依存関係情報１２１を更新（依存関係１２３ｋを追加）する。
【０１１６】
出力部１０３は、依存関係情報１２１の更新内容に従って、依存性定義画面２０１を更新する（ステップＳ２０３）。
【０１１７】
例えば、出力部１０３は、図１６のように、依存性定義画面２０１を更新（Module C : loadからModule A : installへ前提状態依存を示す矢印を追加）する。
【０１１８】
次に、操作手順生成部１０２は、入力内容が依存関係１２３の追加か削除かを判定する（ステップＳ２０４）。
【０１１９】
ステップＳ２０４において、依存関係１２３の追加の場合、操作手順生成部１０２は、追加前の依存関係情報１２１において、追加された依存関係１２３の依存元操作と依存先操作を含む操作集合が異なるかどうか（追加された依存関係１２３が操作集合を跨ぐかどうか）を判定する（ステップＳ２０５）。ステップＳ２０５において、異なる場合（ステップＳ２０５／Ｙｅｓ）、操作手順生成部１０２は、追加された依存関係１２３の種別が、「前提状態依存または逆通知依存」、もしくは、「逆前提状態依存または通知依存」のいずれであるかを判定する（ステップＳ２０６）。
【０１２０】
ステップＳ２０６において、前提状態依存または逆通知依存の場合、操作手順生成部１０２は、追加された依存関係１２３の依存元操作を含む手順シーケンス１２２を、依存先操作を含む手順シーケンス１２２の後に移動することにより、手順シーケンス１２２を統合する（ステップＳ２０７）。
【０１２１】
例えば、図１４の依存関係情報１２１において、追加された依存関係１２３ｋの依存元操作と依存先操作とは、異なる操作集合ａ、ｂに含まれる。また、追加された依存関係１２３ｋの種別は、前提状態依存である。従って、操作手順生成部１０２は、図１５のように、手順シーケンス１２２ｂを、手順シーケンス１２２ａの後に移動することにより、手順シーケンス１２２ｃを生成する。
【０１２２】
ステップＳ２０６において、逆前提状態依存または通知依存の場合、操作手順生成部１０２は、追加された依存関係１２３の依存先操作を含む手順シーケンス１２２を、依存元操作を含む手順シーケンス１２２の後に移動することにより、手順シーケンス１２２を統合する（ステップＳ２０８）。
【０１２３】
また、ステップＳ２０５において、追加された依存関係１２３の依存元操作と依存先操作を含む操作集合が同じ場合（ステップＳ２０５／Ｎｏ）、上述の手順ステップ更新処理（ステップＳ３０１〜Ｓ３２２）に従って、依存元操作、及び、依存先操作を含む手順シーケンス１２２を更新する（ステップＳ２０９）。
【０１２４】
最後に、出力部１０３は、手順シーケンス１２２の更新内容に従って、手順画面２０２を更新する（ステップＳ２１２）。
【０１２５】
例えば、出力部１０３は、図１６のように、手順画面２０２を更新（図１５の手順シーケンス１２２ｃを表示）する。
【０１２６】
一方、ステップＳ２０４において、依存関係１２３の削除の場合、操作手順生成部１０２は、削除後の依存関係情報１２１において、削除された依存関係１２３の依存元操作と依存先操作を含む操作集合が異なるかどうか（依存関係１２３の削除により操作集合が分割されるかどうか）を判断する（ステップＳ２１０）。
【０１２７】
ステップＳ２１０で異なる場合（ステップＳ２１０／Ｙｅｓ）、操作手順生成部１０２は、依存元操作、及び、依存先操作を含む手順シーケンス１２２から、分割されたそれぞれの操作集合に対応する手順シーケンス１２２を抽出することにより、手順シーケンス１２２を、依存先操作を含む手順シーケンス１２２と依存元操作を含む手順シーケンス１２２とに分割する（ステップＳ２１１）。
【０１２８】
例えば、図１７のように、依存関係情報１２１、手順シーケンス１２２ｃが設定されているときに、入力部１０１が、依存関係１２３ｋの削除を受け付けたと仮定する。この場合、入力部１０１は、図１８のように、依存関係情報１２１を更新（依存関係１２３ｋを削除）する。図１８の依存関係情報１２１において、追加された依存関係１２３ｋの依存元操作と依存先操作とは、異なる操作集合ａ、ｂに含まれる。従って、操作手順生成部１０２は、手順シーケンス１２２ｃを、依存先操作を含む手順シーケンス１２２ａと依存元操作を含む手順シーケンス１２２ｂとに分割する。そして、出力部１０３は、図１９のように、手順画面２０２を更新（図１８の手順シーケンス１２２ａ、ｂを表示）する。
【０１２９】
なお、操作手順生成部１０２は、分割した結果得られた手順シーケンス１２２のいずれかを、操作の数が少ない手順シーケンス１２２等、他の手順シーケンス１２２に統合してもよい。
【０１３０】
以上により、本発明の第２の実施の形態の動作が完了する。
【０１３１】
本発明の第２の実施の形態によれば、複数のシステム構築処理を並列実行可能な場合でも、システムの構築手順が生成できる。その理由は、操作手順生成部１０２が、依存関係１２３の追加、削除に伴う操作集合の統合、分割に応じて、手順シーケンス１２２の統合、分割を行うためである。
【０１３２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１３３】
この出願は、２０１２年３月１日に出願された日本出願特願２０１２−０４５７６１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１３４】
本発明は、データセンタ等のコンピュータシステムやサービスシステムの構築、メンテナンスにおいて、システム構築手順の生成を自動化する運用ツールとして利用できる。
【符号の説明】
【０１３５】
１００    システム構築手順生成装置
１０１    入力部
１０２    操作手順生成部
１０３    出力部
１１１    依存関係記憶部
１１２    操作手順記憶部
１２１    依存関係情報
１２２    手順シーケンス
１２３    依存関係
１３１    部分シーケンス
１３２    移動リスト
２００    出力画面
２０１    依存性定義画面
２０２    手順画面
【図１】
0006048488.tif 000002
【図２】
0006048488.tif 000003
【図３】
0006048488.tif 000004
【図４】
0006048488.tif 000005
【図５】
0006048488.tif 000006
【図６】
0006048488.tif 000007
【図７】
0006048488.tif 000008
【図８】
0006048488.tif 000009
【図９】
0006048488.tif 000010
【図１０】
0006048488.tif 000011
【図１１】
0006048488.tif 000012
【図１２】
0006048488.tif 000013
【図１３】
0006048488.tif 000014
【図１４】
0006048488.tif 000015
【図１５】
0006048488.tif 000016
【図１６】
0006048488.tif 000017
【図１７】
0006048488.tif 000018
【図１８】
0006048488.tif 000019
【図１９】
0006048488.tif 000020