(57)【要約】【課題】耐障害方式設計の属人性を排除し、耐障害方式設計の設計期間を短縮することにある。【解決手段】耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成を受け付ける受け付けステップと、受け付けステップで受け付けたシステム構成にもとづいて、前記計算機システムのモデルを生成する生成ステップと、生成したモデルから、障害パターンを抽出する障害パターン抽出ステップと、障害パターン毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行ステップと、障害パターン毎のシミュレーション実行結果と、生成したモデルとにもとづいて、前記システム構成の評価を行う評価ステップと、評価ステップが行った評価結果を出力する出力ステップと、を有する。【選択図】  図６
2005275749.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いて、耐障害性方式設計を支援する方式設計支援方法であって、
前記コンピュータの演算装置は、
耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成を受け付け、当該受け付けたシステム構成を有する前記計算機システムのモデルを生成する生成ステップと、
前記生成したモデルの障害ケースを設定する障害ケース抽出ステップと、
前記障害ケース毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行ステップと、
前記障害ケース毎のシミュレーション実行結果に応じて、前記生成したモデルの問題点を抽出する評価ステップと、
前記モデルの問題点を出力する出力ステップと、を行うこと
を特徴とする方式設計支援方法。
【請求項２】
請求項１記載の方式設計支援方法であって、
前記生成したモデルには、処理の単位を示すプロセスと、当該プロセスの動きが設定されていること
を特徴とする方式設計支援方法。
【請求項３】
請求項１記載の方式設計支援方法であって、
前記評価ステップは、前記抽出した問題点にレベルを設定すること
を特徴とする方式設計支援方法。
【請求項４】
耐障害性方式設計を支援する方式設計支援装置であって、
耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成の構成を受け付け、当該受け付けたシステム構成を有する前記計算機システムのモデルを生成する生成手段と、
前記生成したモデルの障害ケースを設定する障害ケース抽出手段と、
前記障害ケース毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行手段と、
前記障害ケース毎のシミュレーション実行結果に応じて、前記生成したモデルの問題点を抽出する評価手段と、
前記モデルの問題点を出力する出力手段と、を有すること
を特徴とする方式設計支援装置。
【請求項５】
耐障害性方式設計を支援する方式設計支援装置において動作するプログラムであって、
前記プログラムは、前記方式設計支援装置に、
耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成の構成を受け付け、当該受け付けたシステム構成を有する前記計算機システムのモデルを生成する生成手段、
前記生成したモデルの障害ケースを設定する障害ケース抽出手段、
前記障害ケース毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行手段、
前記障害ケース毎のシミュレーション実行結果に応じて、前記生成したモデルの問題点を抽出する評価手段、および、
前記モデルの問題点を出力する出力手段、として機能させること
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、方式設計を支援する技術に関し、特に耐障害方式設計を支援する技術に関する。
【背景技術】
【０００２】
コンピュータシステムの方式設計には、性能設計、耐障害方式設計、運用方式設計など基盤面から方式を設計する基盤方式設計と、機能面から処理方式（処理パターン）を設計する処理方式設計とがある。特許文献１には、シミュレーションによる方式設計支援方法が記載されている。
【０００３】
【特許文献１】特開平０７−１２９６５３
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般的に、方式設計の方法論は確立されておらず、方式設計を行うには高度なスキル（経験と勘など）が要求される。すなわち、基盤方式設計を行うには、全ての処理パターンについて考慮し、全ての処理パターンの整合性を確保しつつ、設計を行う必要がある。たとえば、印刷処理方式を検討する際に、ある特定の機能を用いるためにＡ社の印刷用ソフトウェアを選択する。そして、Ａ社の印刷用ソフトウェアが稼働する前提条件がＢ社のＷｅｂサーバ製品であるため、Ｂ社のＷｅｂサーバ製品を選択する。しかしながら、Ｂ社のＷｅｂサーバ製品で印刷処理とともにオンライン処理を実行した場合、障害時の処理および性能に問題が発生する場合がある。このように、機能面と基盤面との全体的な調整が必要とされるため、方式設計は高度なスキルを有する技術者のみが行う属人性の高いものである。また、機能面の処理方式設計と、基盤方式設計との全体調整には、さまざまな手戻り作業が発生し、方式設計工程が長期化する傾向にある。なお、上記特許文献１のシステム設計支援方法は、性能設計のみの支援方法であって、耐障害方式設計について考慮されていない。
【０００５】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、耐障害方式設計の属人性を排除し、耐障害方式設計の設計工程を短縮化することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明では、方式設計の対象となるシステム構成の入力を受け付けて、当該システム構成のモデルを生成し、障害時の動きをシュミレーションする。
【０００７】
例えば、本発明の方式設計支援方法は、耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成を受け付ける受け付けステップと、受け付けステップで受け付けたシステム構成にもとづいて、前記計算機システムのモデルを生成する生成ステップと、生成したモデルから障害パターンを抽出する障害パターン抽出ステップと、障害パターン毎に障害を発生させて障害時の動きをシミュレーションするシミュレーション実行ステップと、障害パターン毎のシミュレーション実行結果と、生成したモデルとにもとづいて、前記システム構成の評価を行う評価ステップと、評価ステップが行った評価結果を出力する出力ステップと、を有する。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態について説明する。
【０００９】
図１は、本発明の一実施形態が適用された方式設計支援装置１の機能を示すブロック図である。本実施形態の方式設計支援装置１は、コンピュータシステムの障害時の動きをシュミレーションし、耐障害方式設計の支援を行うための装置である。この方式設計支援装置１は、図示するように、モデル生成部１１と、障害ケース抽出部１２と、シミュレーション実行部１３と、評価部１４と、出力部１５と、を有する。また、方式設計支援装置１は、オブジェクト記憶部２１と、モデル記憶部２２と、実行結果記憶部２３と、製品情報記憶部２４と、を有する。
【００１０】
モデル生成部１１は、図示しない入力装置により、耐障害方式設計を行うコンピュータシステムのハードウェアおよびミドルウェアなどのシステム構成を受け付け、後述するコンピュータシステムのモデルを生成する。障害ケース抽出部１２は、生成されたモデルの障害ケース（障害パターン）を抽出する。シミュレーション実行部１３は、抽出した全ての障害ケース各々について障害時の動きをシミュレーションにより検証する。評価部１４は、シミュレーションの実行結果にもとづいて、生成したモデルの問題点を抽出する。出力部１５は、評価部１４が評価した結果などを、図示しない出力装置に出力する。
【００１１】
また、オブジェクト記憶部２１には、ハードウェア、ミドルウェアなどモデルを構成する各オブジェクトの情報が記憶される。なお、オブジェクトの情報については後述する。モデル記憶部２２には、モデル生成部１２により生成された後述するモデルが記憶される。実行結果記憶部２３には、後述する障害ケース毎の評価結果が記憶される。製品情報記憶部２４には、あらかじめ、各社のハードウェアの製品情報およびミドルウェアの製品情報が記憶されている。製品情報には、例えば、当該製品を識別するための製品ＩＤ（型名）、製品名、設定可能なパラメータ情報、前提となるソフトウェア（またはハードウェア）などが含まれている。
【００１２】
上記構成の方式設計支援装置１は、例えば図２に示すようなＣＰＵ９０１と、メモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、キーボードやマウスなどの入力装置９０４と、モニタやプリンタなどの出力装置９０５と、これらの各装置を接続するバス９０６と、を備えた汎用的なコンピュータにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することで実現される。この場合、オブジェクト記憶部２１、モデル記憶部２２、実行結果記憶部２３、および製品情報記憶部２４には、メモリ９０２または外部記憶装置９０３が用いられる。
【００１３】
次に、オグジェクト記憶部２１に記憶されているオブジェクトについて説明する。
【００１４】
図３は、各オブジェクトの関連図を示したものである。オブジェクトは、後述するモデルを構成する要素である。そして、オブジェクトの種類には、ハードウェア３１、ミドルウェア３２、グループ３８、プロセス３３、ＤＢ（データベース）３４、キュー３５、ミドルスクリプト３６、アプリスクリプト３７がある。そして、これらのオブジェクトは、階層構造を有している。すなわち、図示するように、ハードウェア３１の下位階層にミドルウェア３２が設定されている。また、ミドルウェア３２の下位階層にプロセス３３、ＤＢ３４、キュー３５、ミドルスクリプト３６が設定されている。また、プロセス３３の下位階層に、アプリスクリプト３７が設定されている。また、グループ３８の下位階層にプロセス３３が設定されている。このような階層構造により、たとえば、上位の階層であるハードウェアが障害の場合は、このハードウェアより下位の階層に属する全てのオブジェクトは動作しない（障害となる）ことを表している。
【００１５】
なお、ミドルウェア３２は、ＯＳ（Operating System）上で動作し、アプリケーションソフトウェアに対して、特定の機能を提供するソフトウェアである。具体的なミドルウェアとしては、データベースを管理するミドルウェアや、トランザクション処理を行うミドルウェアなどがある。グループ３８は、複数のミドルウェア３２をグルーピングし、グループ内での処理の振り分けを可能とする範囲を示すものである。プロセス３３は、プログラムを実行する上での処理の最小単位である。なお、本実施形態では、プロセスを使用しているが、プロセスをさらに分割したスレッドを用いることとしてもよい。キュー３５は、メッセージ（リクエスト）を一時的に蓄積するためのファイルである。ミドルスクリプト３６は、ミドルウェア３２が行う処理を記述したものである。アプリスクリプト３７は、プロセス３３が行う処理を記述したものである。
【００１６】
図４および図５は、各オブジェクトのデータ構造の一例を示したものである。
【００１７】
図４（Ａ）は、ハードウェアのオブジェクトのデータ構造の一例を示したものである。図示するように、ハードウェアのオブジェクトは、オブジェクトを一意に識別するためのオブジェクトＩＤ４１と、オブジェクトの種別を識別するための種別ＩＤ４２と、当該オブジェクトの上位階層に位置する親オブジェクトを一意に識別するための親オブジェクトＩＤ４３と、オブジェクト名称４４と、を有する。オブジェクト名称４４には、製品情報記憶部２４に記憶されている各種のハードウェア製品と対応付けるための製品ＩＤ（型名など）あるいは、製品名が設定される。また、オブジェクト種別４２には、ハードウェアまたはハードウェアを意味する識別子が設定される。また、親オブジェクＩＤ４３は、配列構造を有し、複数の親オブジェクトの指定が可能である。ハードウェアのオブジェクトの場合は、最も上位の階層であるため親オブジェクトＩＤ４３にはスペースが設定される。
【００１８】
図４（Ｂ）は、ミドルウェアのオブジェクトのデータ構造の一例を示したものである。図示するように、ミドルウェアのオブジェクトは、オブジェクトＩＤ４１と、種別ＩＤ４２と、親オブジェクトＩＤ４３と、オブジェクト名称４４と、さらに、パラメータ４５と、を有する。パラメータ４５は、当該ミドルウェアを実行するときに設定するオプション情報である。パラメータ４５は、配列構造を有し、例えば、タイムアウトの値、リトライ回数などの複数のパラメータを設定することができる。なお、オブジェクト名称４４には、製品情報記憶部２４に記憶されている各種のミドルウェア製品と対応付けるための製品ＩＤ（型名など）あるいは、製品名が設定される。また、オブジェクト種別４２には、ミドルウェアまたはミドルウェアを意味する識別子が設定される。また、親オブジェクトＩＤ４３には、ミドルウェアの上位階層のハードウェアのオブジェクトＩＤが設定される。
【００１９】
図４（Ｃ）は、プロセスのオブジェクトのデータ構造の一例を示したものである。図示するように、プロセスのオブジェクトは、オブジェクトＩＤ４１と、種別ＩＤ４２と、親オブジェクトＩＤ４３と、オブジェクト名称４４と、を有する。なお、オブジェクト種別４２には、プロセスまたはプロセスを意味する識別子が設定される。また、親オブジェクトＩＤ４３には、プロセスの上位階層のミドルウェアのオブジェクトＩＤが設定される。
【００２０】
図４（Ｄ）は、グループのオブジェクトのデータ構造の一例を示したものである。図示するように、グループのオブジェクトは、オブジェクトＩＤ４１と、種別ＩＤ４２と、親オブジェクトＩＤ４３と、オブジェクト名称４４と、を有する。なお、オブジェクト種別４２には、グループまたはグループを意味する識別子が設定される。また、グループのオブジェクトの場合は、最も上位の階層であるため、親オブジェクトＩＤ４３には、スペースが設定される。
【００２１】
図４（Ｅ）は、ＤＢのオブジェクトのデータ構造の一例を示したものである。図示するように、ＤＢのオブジェクトは、オブジェクトＩＤ４１と、種別ＩＤ４２と、親オブジェクトＩＤ４３と、オブジェクト名称４４と、ＤＢライトデータ４６と、ＤＢリードデータ４７と、を有する。ＤＢライトデータ４６には、ＤＢに書き込むデータが設定される。また、ＤＢリードデータ４７には、ＤＢから読み込むデータが設定される。また、ＤＢライトデータ４６およびＤＢリードデータ４７は、それぞれ配列構造を有し、複数のデータを設定することができる。なお、オブジェクト種別４２には、ＤＢまたはＤＢを意味する識別子が設定される。また、親オブジェクトＩＤ４３には、ＤＢの上位階層のミドルウェアのオブジェクトＩＤが設定される。
【００２２】
図５（Ａ）は、キューのオブジェクトのデータ構造の一例を示したものである。図示するように、キューのオブジェクトは、オブジェクトＩＤ４１と、種別ＩＤ４２と、親オブジェクトＩＤ４３と、オブジェクト名称４４と、キュータイプ４８と、キューイングデータ４９と、を有する。キュータイプ４８には、キューの種別（メモリ９０２上のキューファイル、または、外部記憶装置９０３上のキューファイル）が設定される。またキューイングデータ４９には、キューイングされるデータが設定される。なおキューイングデータ４９は配列構造を有し、複数のキューイングデータを設定することができる。なお、オブジェクト種別４２には、キューまたはキューを意味する識別子が設定される。また、親オブジェクトＩＤ４３には、キューの上位階層のミドルウェアのオブジェクトＩＤが設定される。
【００２３】
図５（Ｂ）は、ミドルスクリプトのオブジェクトのデータ構造の一例を示したものである。図示するように、ミドルスクリプトのオブジェクトは、オブジェクトＩＤ４１と、種別ＩＤ４２と、親オブジェクトＩＤ４３と、オブジェクト名称４４と、スクリプト５０と、を有する。スクリプト５０には、ミドルウェアが行う処理が記憶される。
【００２４】
図５（Ｃ）は、アプリスクリプトのオブジェクトのデータ構造の一例を示したものである。図示するように、アプリスクリプトのオブジェクトは、オブジェクトＩＤ４１と、種別ＩＤ４２と、親オブジェクトＩＤ４３と、オブジェクト名称４４と、スクリプト５０と、を有する。スクリプト５０には、プロセスが行う処理が記憶される。
【００２５】
次に、モデル記憶部２２に記憶されるコンピュータシステムのモデルについて説明する。モデル生成部１２は、前述の各オブジェクトを組合せることにより、コンピュータシステムのモデルを生成する。
【００２６】
図６は、モデルの一例を示したものである。図示するモデルは、ハードウェアのオブジェクトとして、プレゼンテーションサーバ（以下、「ＰＬサーバ」）１００と、ビジネスロジックサーバ１号機（以下、「ＢＬサーバ１号機」）２００と、ビジネスロジックサーバ２号機（以下、「ＢＬサーバ２号機」）３００と、ＤＢサーバ４００と、ＢＬサーバ１号機２００およびＢＬサーバ２号機３００をグルーピングしたグループ５００と、を有する。  
そして、プレゼンテーションサーバ１００は、クライアントとデータを送受信するためのＷｅｂ用ミドルウェア１１０と、分散オブジェクト環境を実現するための分散用ミドルウェア１２０と、を有する。そして、Ｗｅｂ用ミドルウェア１１０は、３つのＷｅｂプロセス１１１を有する。また、分散用ミドルウェア１２０は、Ｗｅｂ用ミドルウェア１１０から送信（ｓｅｎｄ）されたメッセージを処理する３つの分散プロセス１２１と、を有する。
【００２７】
また、ビジネスロジックサーバ１号機２００は、トランザクション処理を行うための業務用ミドルウェア２１０を有する。そして、業務用ミドルウェア２１０は、分散用ミドルウェア１２０から受信（ｒｅｃｖ）したメッセージを受け付ける受付プロセス２１１と、メッセージを一時的に蓄積するキュー２１２と、キューに蓄積されたメッセージを処理する処理プロセス２１３と、を有する。なお、ビジネスロジックサーバ２号機３００は、ビジネスロジックサーバ１号機２００と同様の構成である。また、ＤＢサーバ４００は、ＤＢを管理するためのＤＢ用ミドルウェア４１０を有する。そして、ＤＢ用ミドルウェア４１０はＤＢ４１１を有する。
【００２８】
また、グループ５００は、ディレクトリ情報５１０を有する。ディレクトリ情報５１０は、グルーピングされた複数のミドルウェアの情報（この場合は、ＢＬサーバ１号機２００とＢＬサーバ２号機３００のオブジェクトＩＤなど）、が記憶されている。分散用ミドルウェア１２０の図示しないミドルスクリプトは、ディレクトリ情報５１０を参照することにより、グルーピングされたミドルウェア間で処理の振り分けをすることができる。
【００２９】
また、分散用ミドルウェア１２０の分散プロセス１２１、業務用ミドルウェア２１０、３１０の受付プロセス２１１、３１１および処理プロセス２１３、３１３は、それぞれ図示しないアプリスクリプトを有する。アプリスクリプトは、コマンドと一般的なプログラミング言語を用いて、プロセスの動作を簡単に記述したものである。図示するモデルには、プロセス間のメッセージの通信をモデル化するために、各アプリスクリプトに記述されたコマンドが表示されている。コマンドには、他のプロセスへのメッセージを送信するsendコマンド、他のプロセスからメッセージを受信するrecvコマンド、sendメッセージを受信したプロセスが送信元へ制御(及びメッセージ)を戻すreturnコマンド、ＤＢやキューからデータを読み込むreadコマンド、ＤＢやキューにデータを書き込むwriteコマンド、などがある。モデルにこのようなコマンドを表示することにより、処理パターンとの整合性を確保しつつ、耐障害方式設計を行うことができる。
【００３０】
また、分散用ミドルウェア１２０および業務用ミドルウェア２１０、３１０は、それぞれ図示しないミドルスクリプトを有する。ミドルスクリプトについても、アプリスクリプトと同様に、上記コマンドと一般的なプログラミング言語を用いて、ミドルウェアの動作を簡単に記述することができる。
【００３１】
図７に、図６に示すモデルの各オブジェクトの関連図を示す。前述したように、上位の階層のオブジェクトであるハードウェアとして、ＰＬサーバ１００と、ＢＬサーバ１号機２００と、ＢＬサーバ２号機３００と、ＤＢサーバ４００と、を有する。そして、これらのハードウェアのオブジェクトの下位階層には、図６で説明したように、それぞれミドルウェア、プロセス、ミドルスクリプト、アプリスクリプト等が設定されている。
【００３２】
また、図８および図９に、図６に示すモデルの分散用ミドルウェア１２０、分散プロセス１２１、ミドルスクリプト１２２、および、アプリスクリプト１２３のオブジェクト情報を示す。
【００３３】
図８（Ａ）は、分散用ミドルウェア１２０のオブジェクト情報の一例を示したものである。図示するオブジェクト情報１２０は、オブジェクトＩＤ４１には「＃１０」が、オブジェクト種別４２には「ミドルウェア」が、親オブジェクトＩＤ４３にはＰＬサーバ１００のオブジェクトＩＤである「＃１」が、オブジェクト名称４４にはミドルウェアの製品名である「分散用ミドルウェア」が、パラメータ４５の「配列１」４５ａにはタイムアウト値である「３０秒」が、パラメータ４５の「配列２」４５ｂには送信時に送信先が既に障害となっていた場合のリトライの有無を示す「リトライ無し」が、それぞれ設定されている。
【００３４】
図８（Ｂ）は、分散プロセス１２１のオブジェクト情報の一例を示したものである。図示するオブジェクト情報１２１は、オブジェクトＩＤ４１には「＃１１」が、オブジェクト種別４２には「プロセス」が、親オブジェクトＩＤ４３には分散用ミドルウェア１２０のオブジェクトＩＤである「＃１０」が、それぞれ設定されている。
【００３５】
図８（Ｃ）は、分散用ミドルウェア１２０のミドルスクリプト１２２のオブジェクト情報の一例を示したものである。図示するオブジェクト情報１２２は、オブジェクトＩＤ４１には「＃１２」が、オブジェクト種別４２には「ミドルスクリプト」が、親オブジェクトＩＤ４３には分散用ミドルウェア１２０のオブジェクトＩＤである「＃１０」が、それぞれ設定されている。
【００３６】
また、ミドルスクリプト１２２のオブジェクト情報には、図示するようなスクリプト５０が設定されている。すなわち、分散用ミドルウェア１２０は、まずディレクトリ情報５１０を参照してグルーピングされたミドルウェアのいずれかを特定し、特定したミドルウェアを宛先としてメッセージを送信する（５０ａ）。この場合のタイムアウトとなる時間は、分散用ミドルウェア１２０のパラメータ４５の「配列１」４５ａに設定された３０秒である（図８（Ａ）参照）。そして、メッセージの送信が送信エラーの場合、分散用ミドルウェア１２０は、ディレクトリ情報５１０を参照して、グルーピングされたミドルウェアの中から前記特定したミドルウェア以外のミドルウェアを宛先として設定する。そして、分散用ミドルウェア１２０は、分散用ミドルウェア１２０のパラメータ配列２の値が、「リトライする」の場合は、新たに設定したミドルウェアを宛先として、メッセージを送信する（５０ｂ）。
【００３７】
一方、メッセージの送信が正常に行われた場合、分散用ミドルウェア１２０は送信先からメッセージを受信する（５０ｃ）。この場合のタイムアウトとなる時間は、分散用ミドルウェア１２０のパラメータ４５の「配列１」４５ａに設定された３０秒である（図８（Ａ）参照）。そして、分散用ミドルウェア１２０は、メッセージの受信がタイムアウトとなった場合はリターンコードに「タイムアウト」を設定し、その他のエラーの場合はリターンコードに「その他のエラー」を設定する（５０ｄ）。また、分散用ミドルウェア１２０は、メッセージの送信（ｒ１）がタイムアウトとなった場合はリターンコードに「タイムアウト」を設定し、その他のエラーの場合はリターンコードに「その他のエラー」を設定する（５０ｅ）。
【００３８】
図９（Ａ）は、分散プロセス１２１のアプリスクリプト１２３のオブジェクト情報の一例を示したものである。図示するオブジェクト情報１２３は、オブジェクトＩＤ４１には「＃１３」が、オブジェクト種別４２には「アプリスクリプト」が、親オブジェクトＩＤ４３には分散プロセス１２１のオブジェクトＩＤである「＃１１」が、それぞれ設定されている。
【００３９】
また、アプリスクリプト１２３のオブジェクト情報には、図示するようなスクリプト５０が設定されている。すなわち、分散プロセス１２１は、メッセージを受信すると、ミドルスクリプト１２２をＣＡＬＬ（呼び出す）する（５１ａ）。そして、ミドルスクリプト１２２が正常に終了した場合、分散プロセス１２１は、リターンコードに「正常に終了しました」を設定する（５１ｂ）。そして、分散プロセス１２１は、ミドルスクリプト１２２の実行がタイムアウトとなった場合はリターンコードに「状態不明エラー（タイムアウト）」を設定し、その他のエラーの場合はリターンコードに「システムエラー（担当者コール）」を設定する（５１ｃ）。
【００４０】
次に、方式設計支援装置１の処理の流れを説明する。
【００４１】
図１０は、方式設計支援装置１の処理のフローチャートである。まず、モデル生成部１１は、入力手段９０４から入力された対象となるコンピュータシステムのシステム構成を受け付ける（Ｓ１００１）。すなわち、モデル生成部１１は、方式設計者が入力装置９０４から指示した上位階層のオブジェクト（ハードウェア）を、出力装置９０５に表示された入力画面の任意の位置に配置する。この場合、モデル生成部１１は、入力画面上に、製品情報記憶部２４にあらかじめ記憶されたハードウェア製品の一覧（製品ＩＤ、名称など）を表示する。そして、方式設計者は、この一覧から任意のハードウェア製品を選択し、入力画面上の任意の位置に設置する。モデル生成部１１は、この選択指示および設置指示を受け付けて、図４（Ａ）に示すハードウェアのオブジェクト情報を作成し、オブジェクト記憶部２１に記憶する。
【００４２】
次に、モデル生成部１１は、設置されたハードウェア製品各々について、ミドルウェア製品の選択指示を受け付ける。モデル生成部１１は、ハードウェア製品の設定と同様に、入力画面上に製品情報記憶部２４にあらかじめ記憶されたミドルウェア製品の一覧（製品名称、製品ＩＤなど）を表示する。なお、一覧表示されるミドルウェア製品は、対象のハードウェア製品上で動作可能なミドルウェアのみが表示されるものとする。そして、方式設計者は、この一覧から所望のミドルウェア製品を選択する。そして、モデル生成部１１は、選択されたミドルウェア各々に対してパラメータの入力を受け付ける。なお、パラメータには、例えばリトライ回数、タイムオーバ値などを設定する。また、パラメータの入力がない場合、モデル生成部１１は、各ミドルウェアのデフォルト（省略値）を設定する。モデル生成部１１は、一覧表示されたミドルウェアの選択指示およびパラメータの入力を受け付けて、図４（Ｂ）に示すミドルウェアのオブジェクト情報を作成し、オブジェクト記憶部２１に記憶する。なお、モデル生成部１１は、親オブジェクトＩＤに、対象となるハードウェアのオブジェクトＩＤを設定する。
【００４３】
次に、モデル生成部１１は、ミドルウェア各々について、当該ミドルウェアの機能に応じてプロセス、ＤＢ、キュー、ミドルスクリプトなどミドルウェアの下位の階層のオブジェクトの入力を受け付ける。また、モデル生成部１１は、プロセス各々について、プロセスの下位の階層のアプリクリプトの入力を受け付ける。そして、モデル生成部１１は、これらのオブジェクトの入力を受け付けて、オブジェクト情報を作成し、オブジェクト記憶部２１に記憶する。そして、モデル生成部１１は、グループの入力を受け付ける。たとえば、方式設計者は、入力装置９０４を用いてグルーピングするミドルウェアを図６に示すように点線の枠５００で囲む。
【００４４】
モデル生成部１１は、このような点線５００で囲まれたミドルウェアのグループを受け付けてグループのオブジェクト（図４（Ｄ））およびディレクトリ情報５１０を作成し、オブジェクト記憶部２１に記憶する。
【００４５】
そして、モデル生成部１１は、全てのオブジェクトの入力を受け付けて、図６に示すようなモデルを生成する（Ｓ１００２）。なお、以上説明したようにゼロからモデルを作成する以外に、既にモデル記憶部２２に既に記憶されているモデルを再利用してモデルを作成することもできる。一般的に、ミドルウェア製品などにより、標準的なモデルは固定されているため、モデル記憶部２２に記憶されているモデルを再利用することは可能である。方式設計者は、モデル記憶部２２に記憶されたモデルから、今回設計するシステムに最も適合するモデルを抽出し、今回設計するシステム構成に適合するように抽出したモデルを修正する。これにより、方式設計者の作業負荷を軽減することができる。
【００４６】
次に、障害ケース抽出部１２は、生成されたモデルにもとづいて、障害ケースを抽出する（Ｓ１００３）。この障害ケース抽出処理について、図１２を用いて以下に説明する。
【００４７】
図１２は障害抽出処理の処理フロー図である。障害ケース抽出部１２は、図６に示すモデルのいずれかの障害箇所を設定（特定）する（Ｓ１２０１）。すなわち、障害ケース抽出部１２は、モデル生成部１１が生成したモデルの各オブジェクトを障害箇所として設定する。具体的には、ＰＬサーバ１００、Ｗｅｂ用ミドルウェア１１０などを障害箇所として設定する。次に、障害ケース抽出部１２は、障害タイミングを設定（特定）する。障害タイミングは、障害が発生した時に行っていた処理の情報である。すなわち、障害が発生した時に、あるメッセージ（リクエスト）が、どのハードウェアのどのプロセスで処理を行っていたか、さらには処理対象のプロセス中のどのコマンドの実行中または実行前／実行後であったか、という情報である。障害ケース抽出部１２は、Ｓ１２０１で設定した障害箇所に所定の障害タイミングを設定する。そして、障害ケース抽出部１２は、障害箇所および障害ケースが設定された一件の障害ケースを出力し、実行結果記憶部２３に記憶する（Ｓ１２０３）。そして、障害ケース抽出部１２は、全ての障害タイミングを設定したか否かを判別する（Ｓ１２０４）。全ての障害タイミングを設定していない場合（Ｓ１２０４：ＮＯ）、障害ケース抽出部１２は、Ｓ１２０２に戻り、新たな障害タイミングを設定する。
【００４８】
一方、全ての障害タイミングを設定した場合（Ｓ１２０４：ＹＥＳ）、障害ケース抽出部１２は、全ての障害箇所を設定したか否かを判別する（Ｓ１２０５）。全ての障害箇所を設定していない場合（Ｓ１２０５：ＮＯ）、障害ケース抽出部１２は、Ｓ１２０１に戻り、新たな障害箇所を設定する。また、全ての障害箇所を設定した場合（Ｓ１２０５：ＹＥＳ）、障害ケース抽出部１２は、本処理（Ｓ１００３）を終了する。これにより、障害ケース抽出部１２は、生成されたモデルの全ての障害ケースを洗い出し、実行結果記憶部２３に記憶することができる。
【００４９】
次に、シミュレーション実行部１３は、モデル生成部１１が生成したモデル（図６参照）を用いて、Ｓ１００３で設定した障害ケース毎に各オブジェクトに障害を発生させて、障害時の動きについてシミュレーションする（Ｓ１００４）。すなわち、シミュレーション実行部１３は、モデル生成部１１が生成したモデル（図６参照）についてシミュレーションを実行している途中で、Ｓ１００３で設定したある障害ケースにおいて、当該障害ケースにおける障害タイミングで、当該障害ケースにおける障害箇所について、擬似的に障害を発生させ（障害中というステータスに変更し）、どのようなエラーが出力されるのか、あるいは、自動的なリカバリ処理が行われるかなどを検証する。シミュレーション実行部１３は、障害ケース抽出部１２で抽出した全ての障害ケースについて、このシミュレーションを行う。
【００５０】
シミュレーションは、図１に示す方式設計支援装置上で、オブジェクト記憶部２１に記憶された各ＡＰＬスクリプトおよび各ミドルスクリプト（図５（Ｂ）（Ｃ）参照）を、実行することにより行われる。ＡＰＬスクリプトおよびミドルスクリプトの実行は、シミュレーション実行部１３が有するスクリプトエンジンによって行われる。モデル（図６参照）に示された通信相手のオブジェクト（例えば、サーバ、プロセス）との通信を行うスクリプトの関数については、スクリプトエンジンは、通信相手のオブジェクトがシミュレーション実行部１３によって障害中というステータスにされているかどうかを確認し、障害中のステータスであればエラー応答する。このエラー応答を受けて、ＡＰＬスクリプト、及びミドルスクリプトはエラー時の処理を実行する。なお、通信を行うスクリプトの関数は、ｓｅｎｄ、ｒｅｃｖ、ｒｅｔｕｒｎ、ｒｅａｄ、ｗｒｉｔｅなどである。このように、シミュレーション実行部１３は、各障害ケースにおけるシステムの動きをシミュレーションする。尚、各障害ケースにおける障害箇所に相当するオブジェクトのステータスを、シミュレーション実行部１３が障害中のステータスに変更するタイミングは、シミュレーションの実行中に、障害ケースの障害タイミングに定められたタイミングで行われる。
【００５１】
図６に示すモデルにおいて、障害箇所が「ＢＬサーバ１号機２００」で、障害タイミングが「Ｗｅｂプロセス１１１の処理中」の障害ケースの場合を例に以下説明する。まず、シミュレーション実行部１３は、スクリプトエンジンを用いてＡＰＬスクリプト、及びミドルスクリプトを起動させ、シミュレーションを開始する。シミュレーション実行部１３は、ＡＰＬスクリプト、及びミドルスクリプトの実行を監視しており、Ｗｅｂプロセス１１１の実行中に、ＢＬサーバ１号機２００に相当するオブジェクトのステータスを障害中に変更する。ＡＰＬスクリプト、及びミドルスクリプトは、しばらくは処理を継続する。スクリプトエンジンが分散用ミドルウェア１２０のミドルスクリプト１２２のｓｅｎｄ関数（図８（Ｃ）５０ｂの箇所）を実行する際、ｓｅｎｄ関数は通信相手である受付プロセス２１１のステータス、及び受付プロセス２１１の親オブジェクト（上位階層全てのオブジェクト）のステータスを確認する。この例においては、親オブジェクトであるＢＬサーバ１号機２００が障害中のステータスである為、受付プロセス２１１についても障害中と判断し、ｓｅｎｄ関数はエラー応答する。ミドルスクリプト１２２はエラー応答を受け、スクリプトの記述５０ｂに従ってＢＬサーバ２号機３００への接続を行う。
シミュレーション実行部１３は、シミュレーションの実行終了後、障害ケースごとのシミュレーション結果（障害時の動き）を実行結果記憶部２３に記憶する。
【００５２】
次に、評価部１４は、シミュレーション実行部１３が実行した、障害ケース毎のシミュレーション結果について評価する（Ｓ１００５）。すなわち、評価部１４は、シミュレーション結果から問題点を抽出する。なお、抽出した問題点には、「警告エラー」、「重大エラー」などのレベルが設定される。以下に、評価部１４の処理を説明する。
【００５３】
図１１は、障害ケース毎の評価結果表の一例を示す図である。図示するように、評価結果表は、項番（＃）と、障害ケース１１１と、障害時の動き１１２と、問題点１１３と、備考１１４と、を有する。障害ケース１１１には、Ｓ１００３において抽出した全ての障害ケースが設定される。障害時の動き１１２には、Ｓ１００４においてシミュレーション実行部１３が検証した障害時の動きが設定される。具体的には、サービス停止（システムダウン）、サービス続行など設定される。問題点１１３には、障害時の動き１１２に応じて、評価部１４が判別した結果が設定される。例えば、「問題なし」、「警告エラー」、「重大エラー」などが設定される。まず、評価部１４は、障害時の動きにサービス停止が設定されている場合は、「問題あり」と判別する。また、評価部１４は、障害時の動きにサービス続行が設定されている場合は、「問題なし」と判別する。そして、「問題あり」と判別した場合は、さらに、当該障害ケースの障害箇所のオブジェクトにグループが設定されているか否かを判別する。グループが設定されているオブジェクトに障害が発生した場合、グルーピングされた他のオブジェクトに処理が振り分けられサービスは続行されるはずである。このような場合、評価部１４は、生成したモデルの構成が妥当でないと判別し、問題点に「重大エラー」を設定する。これ以外の「問題あり」の場合（モデル自体には不整合が生じていない場合）は、方式設計者の判断に委ねられる問題であるため、評価部１４は、問題点１１３に「警告エラー」を設定する。このように、評価部１４は、Ｓ１００２において作成したモデルが耐障害性の観点から問題があるか否かを判別する。また、評価部１４は、問題点に「重大エラー」またな「警告エラー」が設定された場合、備考１１４に、問題点で指摘したエラーを改善または回避するための方法を設定する。なお、備考１１４に設定される内容は、図示しない障害ケース回避データベースに記憶されているものとする。評価部１４は、このデータベースから当該障害ケースに対応する回避策を特定し、備考１１４に設定する。
【００５４】
例えば、図１１の＃1-1では、障害ケース１１１には「障害箇所：ＰＬサーバ、障害タイミング：分散用ミドルウェアにメッセージ送信後」が、障害時の動き１１２には「サービス停止」が、設定されている。この場合、評価部１４は、障害時の動き１１２がサービス停止となっているため、「問題あり」と判定する。そして、図６に示すモデルにおいて、ＰＬサーバ１００はグループ化されていないため、評価部１４は問題点１１３に「警告エラー」を設定する。そして、評価部１４は、備考１１４に障害ケース回避データベースから抽出した「バックアップ用のＰＬサーバを設置」を設定する。
【００５５】
また、図１１の＃3-1では、障害ケース１１１には「障害箇所：ＢＬサーバ１号機、障害タイミング：分散プロセスがメッセージを送信するとき」が、障害時の動き１１２には「サービス停止（システムエラー：担当者コール）」が、設定されている。この場合、評価部１４は、「サービス停止」とあるため、「問題あり」と判断する。そして、評価部１４は、図６に示すモデルを参照して、ＢＬサーバ１号機の業務用ミドルウェア２１０と同じグループの業務用ミドルウェア３１０が存在するか否かを判別する。そして、ＢＬサーバ１号機の業務用ミドルウェア２１０と同じグループの業務用ミドルウェア３１０が存在するため、評価部１４は、分散用ミドルウェア１２０のパラメータの設定ミスにより不具合が生じたものと判別する。このようなグループ化されたオブジェクトに障害が発生した場合、評価部１４は、問題点１１３に「重大エラー」を設定する。そして、評価部１４は、備考１１４にエラーの原因となったパラメータの修正内容を設定する。すなわち、現時点の分散用ミドルウェア１２０のオブジェクト情報のパラメータ配列２(送信する時に既に相手が障害になっていた場合のリトライ)は“しない”である（図８（Ａ）参照）。そのため、ＢＬサーバ１号機の障害時、分散用ミドルウェア１２０のミドルスクリプト（図８（Ｃ）参照）でエラーとなり、最終的に「システムエラー（担当者コール）」となる。しかしながら、分散用ミドルウェア１２０のパラメータ配列２(送信する時に既に相手が障害になっていた場合のリトライ)を“する”にしておけば、サービスを停止することなく、ＢＬサーバ２号機にメッセージを再送信する。したがって、評価部１４は、備考１１４に「分散用ミドルウェア１２０のパラメータ配列２を“（リトライ）する”に変更」を設定する。
【００５６】
なお、評価部１４は、障害ケース抽出部１２が設定した障害ケース以外にも、モデルの整合性エラーを検出することとしてもよい。図１１の＃N-1の示す例では、障害ケース１１１には「分散用ミドルウェアと業務用ミドルウェアのパラメータの不整合」が設定されている。具体的には、分散用ミドルウェア１２０のパラメータ配列１(タイムアウト値)は30秒で、業務用ミドルウェア２１０のパラメータのタイムアウト値が40秒で、かつ、ＤＢサーバ４００の処理時間が35秒を要する場合、ＢＬサーバ１号機２００の処理プロセス２１３は、35秒間待ってＤＢサーバ４００の処理結果を正しく受け取ることができる。しかしながら、ＰＬサーバ１００上の分散用ミドルウェア１２０では、30秒でタイムアウトとなり障害となってしまう。したがって、分散用ミドルウェア１２０のパラメータ配列１(タイムアウト値)は40秒以上に修正すべきである。そこで、評価部１４は、問題点１１３に「重大エラー」を設定し、備考１１４に「分散用ミドルウェアのパラメータ配列１を40秒以上にする。」を設定する。
【００５７】
また、評価部１４は、製品情報記憶部２４を参照して、各ミドルウェアのパラメータに設定された値の上限または下限チェックを行うこととしてもよい。図１１の＃N-2では、障害ケース１１１には「パラメータの設定エラー」が、障害時の動き１１２には「シンタックスエラー（文法エラー）」が設定されている。評価部１４は、たとえば、業務用ミドルウェア２１０のパラメータに“100”（リトライ回数）が設定されていて、製品情報記憶部２４に記憶された業務用ミドルウェア２１０のパラメータの設定可能回数は“1から99”とする。この場合、評価部１４は、問題点１１３に「重大エラー」を設定し、備考１１４に業務用ミドルウェアのパラメータの設定値の範囲を表示する。
【００５８】
評価部１４は、以上のようなモデルの評価を行い、評価結果表を実行結果記憶部２３に記憶する。
【００５９】
次に、出力部１５は、評価部１４が評価した評価結果表（図１１参照）を、出力装置９０５に出力する（Ｓ１００６）。なお、出力部１５は、図１１に示す評価結果のうち問題点１１３に警告エラーおよび重大エラーが設定された障害ケースのみを出力することしてもよい。そして、方式設計者は、出力装置９０５に出力された評価結果表にもとづいて、生成されたモデルおよびパラメータの設定を変更する必要があるか否かを判断する。
【００６０】
そして、入力装置９０４を介して変更指示を受け付けた場合（Ｓ１００７：ＹＥＳ）、モデル生成部はＳ１００１にもどり、再度、各オブジェクト情報の入力を受け付ける。なお、問題点を解消または改善するためには、例えば、ハードウェアまたはソフトウェアを他の製品に置き換える、ミドルウェアのパラメータを修正する、独自にミドルウェアを作成する、などが考えられる。なお、重大エラーに関しては、問題点の解決策が備考１１４に表示されているため、方式設計者からの指示を受け付けることなく、モデル生成部１１は備考に指定された修正を行うこととしてもよい。
【００６１】
一方、モデルの変更指示を受け付けない場合、すなわち、終了指示を受け付けた場合（Ｓ１００７：ＮＯ）、出力部１５は、オブジェクト記憶部２１に記憶された各オブジェクトの情報、モデル記憶部２２に記憶されたモデル、実行結果記憶部２３に記憶された評価結果表などの各種ドキュメントを、プリンタなどの出力装置９０５に出力（印刷）する（Ｓ１００８）。これにより、方式設計書を作成する作業負荷を解消することができる。また、実際にコンピュータシステムを構築する際に必要な、ミドルウェアのパラメータ設定に流用することができる。
【００６２】
このような方式設計支援装置を用いることにより、耐障害方式設計における属人性を排除し、充分な経験やスキルを有しない設計者であっても、容易に耐障害方式設計を行うことができる。
【００６３】
また、ハードウェア、ミドルウェア、プロセスなどをモデル化することにより、全ての障害ケースを抽出し、障害時の動きをシュミレーションすることができる。また、モデル化することで、アプリケーションの処理パターンと整合性のとれた耐障害方式設計を行うことができる。
【００６４】
また、障害ケース毎の問題点を提示し、モデルを修正していくことにより、より信頼性の高い耐障害方式設計を行うことができる。
【００６５】
また、処理パターンと方式設計との全体調整による手戻り作業がなくなるため、方式設計工程に要する時間を短縮することができる。
【００６６】
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、本実施形態では、オブジェクトの種類の１つとしてミドルウェアを用いて説明した。しかしながら本発明はこれに限定されず、ＯＳなどミドルウェア以外のソフトウェアを用いることとしてもよい。
【００６７】
また、本実施形態では、ミドルウェアのパラメータとして障害に関するパラメータ（タイムオーバ値など）を用いて説明した。しかしながら性能に関するパラメータ（たとえば、コネクションプールなど）を設定することにより、耐障害方式設計だけでなく性能設計も本方式設計支援装置１で行うこととしてもよい。
【図面の簡単な説明】
【００６８】
【図１】図１は、本発明の一実施形態が適用された方式設計支援装置の構成を示す図である。
【図２】図２は、方式設計支援装置のハードウェア構成例を示す図である。
【図３】図３は、オブジェクトの関連図である。
【図４】図４は、オブジェクトのデータ構造の一例を示す図である。
【図５】図５は、オブジェクトのデータ構造の一例を示す図である。
【図６】図６は、システム構成のモデルの一例を示す図である。
【図７】図７は、図６に示すモデルのオブジェクトの関連図である。
【図８】図８は、図６に示すモデルのオブジェクトのデータ構造を示す図である。
【図９】図９は、図６に示すモデルのオブジェクトのデータ構造を示す図である。
【図１０】図１０は、方式設計支援処理のフローチャートである。
【図１１】図１１は、評価結果表の一例を示す図である。
【図１２】図１２は、障害ケース抽出処理のフローチャートである。
【符号の説明】
【００６９】
１…方式設計支援装置、１１…モデル生成部、１２…障害ケース抽出部、１３…シミュレーション実行部、１４…評価部、１５…出力部、２１…オブジェクト記憶部、２２…モデル記憶部、２３…実行結果記憶部、２４…製品情報記憶部、１００…ＰＬサーバ、１１０…Ｗｅｂ用ミドルウェア、１２０…分散用ミドルウェア、２００…ＢＬサーバ１号機、２１０…業務用ミドルウェア、３００…ＢＬサーバ２号機、３１０…業務用ミドルウェア、４００…ＤＢサーバ、４１０…ＤＢ用ミドルウェア
【図１】
2005275749.tif 000003
【図２】
2005275749.tif 000004
【図３】
2005275749.tif 000005
【図４】
2005275749.tif 000006
【図５】
2005275749.tif 000007
【図６】
2005275749.tif 000008
【図７】
2005275749.tif 000009
【図８】
2005275749.tif 000010
【図９】
2005275749.tif 000011
【図１０】
2005275749.tif 000012
【図１１】
2005275749.tif 000013
【図１２】
2005275749.tif 000014