JP2005275749A - 方式設計支援方法および装置 - Google Patents
方式設計支援方法および装置 Download PDFInfo
- Publication number
- JP2005275749A JP2005275749A JP2004087351A JP2004087351A JP2005275749A JP 2005275749 A JP2005275749 A JP 2005275749A JP 2004087351 A JP2004087351 A JP 2004087351A JP 2004087351 A JP2004087351 A JP 2004087351A JP 2005275749 A JP2005275749 A JP 2005275749A
- Authority
- JP
- Japan
- Prior art keywords
- failure
- model
- middleware
- design
- fault
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】耐障害方式設計の属人性を排除し、耐障害方式設計の設計期間を短縮することにある。
【解決手段】耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成を受け付ける受け付けステップと、受け付けステップで受け付けたシステム構成にもとづいて、前記計算機システムのモデルを生成する生成ステップと、生成したモデルから、障害パターンを抽出する障害パターン抽出ステップと、障害パターン毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行ステップと、障害パターン毎のシミュレーション実行結果と、生成したモデルとにもとづいて、前記システム構成の評価を行う評価ステップと、評価ステップが行った評価結果を出力する出力ステップと、を有する。
【選択図】 図6
【解決手段】耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成を受け付ける受け付けステップと、受け付けステップで受け付けたシステム構成にもとづいて、前記計算機システムのモデルを生成する生成ステップと、生成したモデルから、障害パターンを抽出する障害パターン抽出ステップと、障害パターン毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行ステップと、障害パターン毎のシミュレーション実行結果と、生成したモデルとにもとづいて、前記システム構成の評価を行う評価ステップと、評価ステップが行った評価結果を出力する出力ステップと、を有する。
【選択図】 図6
Description
本発明は、方式設計を支援する技術に関し、特に耐障害方式設計を支援する技術に関する。
コンピュータシステムの方式設計には、性能設計、耐障害方式設計、運用方式設計など基盤面から方式を設計する基盤方式設計と、機能面から処理方式(処理パターン)を設計する処理方式設計とがある。特許文献1には、シミュレーションによる方式設計支援方法が記載されている。
一般的に、方式設計の方法論は確立されておらず、方式設計を行うには高度なスキル(経験と勘など)が要求される。すなわち、基盤方式設計を行うには、全ての処理パターンについて考慮し、全ての処理パターンの整合性を確保しつつ、設計を行う必要がある。たとえば、印刷処理方式を検討する際に、ある特定の機能を用いるためにA社の印刷用ソフトウェアを選択する。そして、A社の印刷用ソフトウェアが稼働する前提条件がB社のWebサーバ製品であるため、B社のWebサーバ製品を選択する。しかしながら、B社のWebサーバ製品で印刷処理とともにオンライン処理を実行した場合、障害時の処理および性能に問題が発生する場合がある。このように、機能面と基盤面との全体的な調整が必要とされるため、方式設計は高度なスキルを有する技術者のみが行う属人性の高いものである。また、機能面の処理方式設計と、基盤方式設計との全体調整には、さまざまな手戻り作業が発生し、方式設計工程が長期化する傾向にある。なお、上記特許文献1のシステム設計支援方法は、性能設計のみの支援方法であって、耐障害方式設計について考慮されていない。
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、耐障害方式設計の属人性を排除し、耐障害方式設計の設計工程を短縮化することにある。
上記課題を解決するために、本発明では、方式設計の対象となるシステム構成の入力を受け付けて、当該システム構成のモデルを生成し、障害時の動きをシュミレーションする。
例えば、本発明の方式設計支援方法は、耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成を受け付ける受け付けステップと、受け付けステップで受け付けたシステム構成にもとづいて、前記計算機システムのモデルを生成する生成ステップと、生成したモデルから障害パターンを抽出する障害パターン抽出ステップと、障害パターン毎に障害を発生させて障害時の動きをシミュレーションするシミュレーション実行ステップと、障害パターン毎のシミュレーション実行結果と、生成したモデルとにもとづいて、前記システム構成の評価を行う評価ステップと、評価ステップが行った評価結果を出力する出力ステップと、を有する。
以下、本発明の実施の形態について説明する。
図1は、本発明の一実施形態が適用された方式設計支援装置1の機能を示すブロック図である。本実施形態の方式設計支援装置1は、コンピュータシステムの障害時の動きをシュミレーションし、耐障害方式設計の支援を行うための装置である。この方式設計支援装置1は、図示するように、モデル生成部11と、障害ケース抽出部12と、シミュレーション実行部13と、評価部14と、出力部15と、を有する。また、方式設計支援装置1は、オブジェクト記憶部21と、モデル記憶部22と、実行結果記憶部23と、製品情報記憶部24と、を有する。
モデル生成部11は、図示しない入力装置により、耐障害方式設計を行うコンピュータシステムのハードウェアおよびミドルウェアなどのシステム構成を受け付け、後述するコンピュータシステムのモデルを生成する。障害ケース抽出部12は、生成されたモデルの障害ケース(障害パターン)を抽出する。シミュレーション実行部13は、抽出した全ての障害ケース各々について障害時の動きをシミュレーションにより検証する。評価部14は、シミュレーションの実行結果にもとづいて、生成したモデルの問題点を抽出する。出力部15は、評価部14が評価した結果などを、図示しない出力装置に出力する。
また、オブジェクト記憶部21には、ハードウェア、ミドルウェアなどモデルを構成する各オブジェクトの情報が記憶される。なお、オブジェクトの情報については後述する。モデル記憶部22には、モデル生成部12により生成された後述するモデルが記憶される。実行結果記憶部23には、後述する障害ケース毎の評価結果が記憶される。製品情報記憶部24には、あらかじめ、各社のハードウェアの製品情報およびミドルウェアの製品情報が記憶されている。製品情報には、例えば、当該製品を識別するための製品ID(型名)、製品名、設定可能なパラメータ情報、前提となるソフトウェア(またはハードウェア)などが含まれている。
上記構成の方式設計支援装置1は、例えば図2に示すようなCPU901と、メモリ902と、HDD等の外部記憶装置903と、キーボードやマウスなどの入力装置904と、モニタやプリンタなどの出力装置905と、これらの各装置を接続するバス906と、を備えた汎用的なコンピュータにおいて、CPU901がメモリ902上にロードされた所定のプログラムを実行することで実現される。この場合、オブジェクト記憶部21、モデル記憶部22、実行結果記憶部23、および製品情報記憶部24には、メモリ902または外部記憶装置903が用いられる。
次に、オグジェクト記憶部21に記憶されているオブジェクトについて説明する。
図3は、各オブジェクトの関連図を示したものである。オブジェクトは、後述するモデルを構成する要素である。そして、オブジェクトの種類には、ハードウェア31、ミドルウェア32、グループ38、プロセス33、DB(データベース)34、キュー35、ミドルスクリプト36、アプリスクリプト37がある。そして、これらのオブジェクトは、階層構造を有している。すなわち、図示するように、ハードウェア31の下位階層にミドルウェア32が設定されている。また、ミドルウェア32の下位階層にプロセス33、DB34、キュー35、ミドルスクリプト36が設定されている。また、プロセス33の下位階層に、アプリスクリプト37が設定されている。また、グループ38の下位階層にプロセス33が設定されている。このような階層構造により、たとえば、上位の階層であるハードウェアが障害の場合は、このハードウェアより下位の階層に属する全てのオブジェクトは動作しない(障害となる)ことを表している。
なお、ミドルウェア32は、OS(Operating System)上で動作し、アプリケーションソフトウェアに対して、特定の機能を提供するソフトウェアである。具体的なミドルウェアとしては、データベースを管理するミドルウェアや、トランザクション処理を行うミドルウェアなどがある。グループ38は、複数のミドルウェア32をグルーピングし、グループ内での処理の振り分けを可能とする範囲を示すものである。プロセス33は、プログラムを実行する上での処理の最小単位である。なお、本実施形態では、プロセスを使用しているが、プロセスをさらに分割したスレッドを用いることとしてもよい。キュー35は、メッセージ(リクエスト)を一時的に蓄積するためのファイルである。ミドルスクリプト36は、ミドルウェア32が行う処理を記述したものである。アプリスクリプト37は、プロセス33が行う処理を記述したものである。
図4および図5は、各オブジェクトのデータ構造の一例を示したものである。
図4(A)は、ハードウェアのオブジェクトのデータ構造の一例を示したものである。図示するように、ハードウェアのオブジェクトは、オブジェクトを一意に識別するためのオブジェクトID41と、オブジェクトの種別を識別するための種別ID42と、当該オブジェクトの上位階層に位置する親オブジェクトを一意に識別するための親オブジェクトID43と、オブジェクト名称44と、を有する。オブジェクト名称44には、製品情報記憶部24に記憶されている各種のハードウェア製品と対応付けるための製品ID(型名など)あるいは、製品名が設定される。また、オブジェクト種別42には、ハードウェアまたはハードウェアを意味する識別子が設定される。また、親オブジェクID43は、配列構造を有し、複数の親オブジェクトの指定が可能である。ハードウェアのオブジェクトの場合は、最も上位の階層であるため親オブジェクトID43にはスペースが設定される。
図4(B)は、ミドルウェアのオブジェクトのデータ構造の一例を示したものである。図示するように、ミドルウェアのオブジェクトは、オブジェクトID41と、種別ID42と、親オブジェクトID43と、オブジェクト名称44と、さらに、パラメータ45と、を有する。パラメータ45は、当該ミドルウェアを実行するときに設定するオプション情報である。パラメータ45は、配列構造を有し、例えば、タイムアウトの値、リトライ回数などの複数のパラメータを設定することができる。なお、オブジェクト名称44には、製品情報記憶部24に記憶されている各種のミドルウェア製品と対応付けるための製品ID(型名など)あるいは、製品名が設定される。また、オブジェクト種別42には、ミドルウェアまたはミドルウェアを意味する識別子が設定される。また、親オブジェクトID43には、ミドルウェアの上位階層のハードウェアのオブジェクトIDが設定される。
図4(C)は、プロセスのオブジェクトのデータ構造の一例を示したものである。図示するように、プロセスのオブジェクトは、オブジェクトID41と、種別ID42と、親オブジェクトID43と、オブジェクト名称44と、を有する。なお、オブジェクト種別42には、プロセスまたはプロセスを意味する識別子が設定される。また、親オブジェクトID43には、プロセスの上位階層のミドルウェアのオブジェクトIDが設定される。
図4(D)は、グループのオブジェクトのデータ構造の一例を示したものである。図示するように、グループのオブジェクトは、オブジェクトID41と、種別ID42と、親オブジェクトID43と、オブジェクト名称44と、を有する。なお、オブジェクト種別42には、グループまたはグループを意味する識別子が設定される。また、グループのオブジェクトの場合は、最も上位の階層であるため、親オブジェクトID43には、スペースが設定される。
図4(E)は、DBのオブジェクトのデータ構造の一例を示したものである。図示するように、DBのオブジェクトは、オブジェクトID41と、種別ID42と、親オブジェクトID43と、オブジェクト名称44と、DBライトデータ46と、DBリードデータ47と、を有する。DBライトデータ46には、DBに書き込むデータが設定される。また、DBリードデータ47には、DBから読み込むデータが設定される。また、DBライトデータ46およびDBリードデータ47は、それぞれ配列構造を有し、複数のデータを設定することができる。なお、オブジェクト種別42には、DBまたはDBを意味する識別子が設定される。また、親オブジェクトID43には、DBの上位階層のミドルウェアのオブジェクトIDが設定される。
図5(A)は、キューのオブジェクトのデータ構造の一例を示したものである。図示するように、キューのオブジェクトは、オブジェクトID41と、種別ID42と、親オブジェクトID43と、オブジェクト名称44と、キュータイプ48と、キューイングデータ49と、を有する。キュータイプ48には、キューの種別(メモリ902上のキューファイル、または、外部記憶装置903上のキューファイル)が設定される。またキューイングデータ49には、キューイングされるデータが設定される。なおキューイングデータ49は配列構造を有し、複数のキューイングデータを設定することができる。なお、オブジェクト種別42には、キューまたはキューを意味する識別子が設定される。また、親オブジェクトID43には、キューの上位階層のミドルウェアのオブジェクトIDが設定される。
図5(B)は、ミドルスクリプトのオブジェクトのデータ構造の一例を示したものである。図示するように、ミドルスクリプトのオブジェクトは、オブジェクトID41と、種別ID42と、親オブジェクトID43と、オブジェクト名称44と、スクリプト50と、を有する。スクリプト50には、ミドルウェアが行う処理が記憶される。
図5(C)は、アプリスクリプトのオブジェクトのデータ構造の一例を示したものである。図示するように、アプリスクリプトのオブジェクトは、オブジェクトID41と、種別ID42と、親オブジェクトID43と、オブジェクト名称44と、スクリプト50と、を有する。スクリプト50には、プロセスが行う処理が記憶される。
次に、モデル記憶部22に記憶されるコンピュータシステムのモデルについて説明する。モデル生成部12は、前述の各オブジェクトを組合せることにより、コンピュータシステムのモデルを生成する。
図6は、モデルの一例を示したものである。図示するモデルは、ハードウェアのオブジェクトとして、プレゼンテーションサーバ(以下、「PLサーバ」)100と、ビジネスロジックサーバ1号機(以下、「BLサーバ1号機」)200と、ビジネスロジックサーバ2号機(以下、「BLサーバ2号機」)300と、DBサーバ400と、BLサーバ1号機200およびBLサーバ2号機300をグルーピングしたグループ500と、を有する。
そして、プレゼンテーションサーバ100は、クライアントとデータを送受信するためのWeb用ミドルウェア110と、分散オブジェクト環境を実現するための分散用ミドルウェア120と、を有する。そして、Web用ミドルウェア110は、3つのWebプロセス111を有する。また、分散用ミドルウェア120は、Web用ミドルウェア110から送信(send)されたメッセージを処理する3つの分散プロセス121と、を有する。
そして、プレゼンテーションサーバ100は、クライアントとデータを送受信するためのWeb用ミドルウェア110と、分散オブジェクト環境を実現するための分散用ミドルウェア120と、を有する。そして、Web用ミドルウェア110は、3つのWebプロセス111を有する。また、分散用ミドルウェア120は、Web用ミドルウェア110から送信(send)されたメッセージを処理する3つの分散プロセス121と、を有する。
また、ビジネスロジックサーバ1号機200は、トランザクション処理を行うための業務用ミドルウェア210を有する。そして、業務用ミドルウェア210は、分散用ミドルウェア120から受信(recv)したメッセージを受け付ける受付プロセス211と、メッセージを一時的に蓄積するキュー212と、キューに蓄積されたメッセージを処理する処理プロセス213と、を有する。なお、ビジネスロジックサーバ2号機300は、ビジネスロジックサーバ1号機200と同様の構成である。また、DBサーバ400は、DBを管理するためのDB用ミドルウェア410を有する。そして、DB用ミドルウェア410はDB411を有する。
また、グループ500は、ディレクトリ情報510を有する。ディレクトリ情報510は、グルーピングされた複数のミドルウェアの情報(この場合は、BLサーバ1号機200とBLサーバ2号機300のオブジェクトIDなど)、が記憶されている。分散用ミドルウェア120の図示しないミドルスクリプトは、ディレクトリ情報510を参照することにより、グルーピングされたミドルウェア間で処理の振り分けをすることができる。
また、分散用ミドルウェア120の分散プロセス121、業務用ミドルウェア210、310の受付プロセス211、311および処理プロセス213、313は、それぞれ図示しないアプリスクリプトを有する。アプリスクリプトは、コマンドと一般的なプログラミング言語を用いて、プロセスの動作を簡単に記述したものである。図示するモデルには、プロセス間のメッセージの通信をモデル化するために、各アプリスクリプトに記述されたコマンドが表示されている。コマンドには、他のプロセスへのメッセージを送信するsendコマンド、他のプロセスからメッセージを受信するrecvコマンド、sendメッセージを受信したプロセスが送信元へ制御(及びメッセージ)を戻すreturnコマンド、DBやキューからデータを読み込むreadコマンド、DBやキューにデータを書き込むwriteコマンド、などがある。モデルにこのようなコマンドを表示することにより、処理パターンとの整合性を確保しつつ、耐障害方式設計を行うことができる。
また、分散用ミドルウェア120および業務用ミドルウェア210、310は、それぞれ図示しないミドルスクリプトを有する。ミドルスクリプトについても、アプリスクリプトと同様に、上記コマンドと一般的なプログラミング言語を用いて、ミドルウェアの動作を簡単に記述することができる。
図7に、図6に示すモデルの各オブジェクトの関連図を示す。前述したように、上位の階層のオブジェクトであるハードウェアとして、PLサーバ100と、BLサーバ1号機200と、BLサーバ2号機300と、DBサーバ400と、を有する。そして、これらのハードウェアのオブジェクトの下位階層には、図6で説明したように、それぞれミドルウェア、プロセス、ミドルスクリプト、アプリスクリプト等が設定されている。
また、図8および図9に、図6に示すモデルの分散用ミドルウェア120、分散プロセス121、ミドルスクリプト122、および、アプリスクリプト123のオブジェクト情報を示す。
図8(A)は、分散用ミドルウェア120のオブジェクト情報の一例を示したものである。図示するオブジェクト情報120は、オブジェクトID41には「#10」が、オブジェクト種別42には「ミドルウェア」が、親オブジェクトID43にはPLサーバ100のオブジェクトIDである「#1」が、オブジェクト名称44にはミドルウェアの製品名である「分散用ミドルウェア」が、パラメータ45の「配列1」45aにはタイムアウト値である「30秒」が、パラメータ45の「配列2」45bには送信時に送信先が既に障害となっていた場合のリトライの有無を示す「リトライ無し」が、それぞれ設定されている。
図8(B)は、分散プロセス121のオブジェクト情報の一例を示したものである。図示するオブジェクト情報121は、オブジェクトID41には「#11」が、オブジェクト種別42には「プロセス」が、親オブジェクトID43には分散用ミドルウェア120のオブジェクトIDである「#10」が、それぞれ設定されている。
図8(C)は、分散用ミドルウェア120のミドルスクリプト122のオブジェクト情報の一例を示したものである。図示するオブジェクト情報122は、オブジェクトID41には「#12」が、オブジェクト種別42には「ミドルスクリプト」が、親オブジェクトID43には分散用ミドルウェア120のオブジェクトIDである「#10」が、それぞれ設定されている。
また、ミドルスクリプト122のオブジェクト情報には、図示するようなスクリプト50が設定されている。すなわち、分散用ミドルウェア120は、まずディレクトリ情報510を参照してグルーピングされたミドルウェアのいずれかを特定し、特定したミドルウェアを宛先としてメッセージを送信する(50a)。この場合のタイムアウトとなる時間は、分散用ミドルウェア120のパラメータ45の「配列1」45aに設定された30秒である(図8(A)参照)。そして、メッセージの送信が送信エラーの場合、分散用ミドルウェア120は、ディレクトリ情報510を参照して、グルーピングされたミドルウェアの中から前記特定したミドルウェア以外のミドルウェアを宛先として設定する。そして、分散用ミドルウェア120は、分散用ミドルウェア120のパラメータ配列2の値が、「リトライする」の場合は、新たに設定したミドルウェアを宛先として、メッセージを送信する(50b)。
一方、メッセージの送信が正常に行われた場合、分散用ミドルウェア120は送信先からメッセージを受信する(50c)。この場合のタイムアウトとなる時間は、分散用ミドルウェア120のパラメータ45の「配列1」45aに設定された30秒である(図8(A)参照)。そして、分散用ミドルウェア120は、メッセージの受信がタイムアウトとなった場合はリターンコードに「タイムアウト」を設定し、その他のエラーの場合はリターンコードに「その他のエラー」を設定する(50d)。また、分散用ミドルウェア120は、メッセージの送信(r1)がタイムアウトとなった場合はリターンコードに「タイムアウト」を設定し、その他のエラーの場合はリターンコードに「その他のエラー」を設定する(50e)。
図9(A)は、分散プロセス121のアプリスクリプト123のオブジェクト情報の一例を示したものである。図示するオブジェクト情報123は、オブジェクトID41には「#13」が、オブジェクト種別42には「アプリスクリプト」が、親オブジェクトID43には分散プロセス121のオブジェクトIDである「#11」が、それぞれ設定されている。
また、アプリスクリプト123のオブジェクト情報には、図示するようなスクリプト50が設定されている。すなわち、分散プロセス121は、メッセージを受信すると、ミドルスクリプト122をCALL(呼び出す)する(51a)。そして、ミドルスクリプト122が正常に終了した場合、分散プロセス121は、リターンコードに「正常に終了しました」を設定する(51b)。そして、分散プロセス121は、ミドルスクリプト122の実行がタイムアウトとなった場合はリターンコードに「状態不明エラー(タイムアウト)」を設定し、その他のエラーの場合はリターンコードに「システムエラー(担当者コール)」を設定する(51c)。
次に、方式設計支援装置1の処理の流れを説明する。
図10は、方式設計支援装置1の処理のフローチャートである。まず、モデル生成部11は、入力手段904から入力された対象となるコンピュータシステムのシステム構成を受け付ける(S1001)。すなわち、モデル生成部11は、方式設計者が入力装置904から指示した上位階層のオブジェクト(ハードウェア)を、出力装置905に表示された入力画面の任意の位置に配置する。この場合、モデル生成部11は、入力画面上に、製品情報記憶部24にあらかじめ記憶されたハードウェア製品の一覧(製品ID、名称など)を表示する。そして、方式設計者は、この一覧から任意のハードウェア製品を選択し、入力画面上の任意の位置に設置する。モデル生成部11は、この選択指示および設置指示を受け付けて、図4(A)に示すハードウェアのオブジェクト情報を作成し、オブジェクト記憶部21に記憶する。
次に、モデル生成部11は、設置されたハードウェア製品各々について、ミドルウェア製品の選択指示を受け付ける。モデル生成部11は、ハードウェア製品の設定と同様に、入力画面上に製品情報記憶部24にあらかじめ記憶されたミドルウェア製品の一覧(製品名称、製品IDなど)を表示する。なお、一覧表示されるミドルウェア製品は、対象のハードウェア製品上で動作可能なミドルウェアのみが表示されるものとする。そして、方式設計者は、この一覧から所望のミドルウェア製品を選択する。そして、モデル生成部11は、選択されたミドルウェア各々に対してパラメータの入力を受け付ける。なお、パラメータには、例えばリトライ回数、タイムオーバ値などを設定する。また、パラメータの入力がない場合、モデル生成部11は、各ミドルウェアのデフォルト(省略値)を設定する。モデル生成部11は、一覧表示されたミドルウェアの選択指示およびパラメータの入力を受け付けて、図4(B)に示すミドルウェアのオブジェクト情報を作成し、オブジェクト記憶部21に記憶する。なお、モデル生成部11は、親オブジェクトIDに、対象となるハードウェアのオブジェクトIDを設定する。
次に、モデル生成部11は、ミドルウェア各々について、当該ミドルウェアの機能に応じてプロセス、DB、キュー、ミドルスクリプトなどミドルウェアの下位の階層のオブジェクトの入力を受け付ける。また、モデル生成部11は、プロセス各々について、プロセスの下位の階層のアプリクリプトの入力を受け付ける。そして、モデル生成部11は、これらのオブジェクトの入力を受け付けて、オブジェクト情報を作成し、オブジェクト記憶部21に記憶する。そして、モデル生成部11は、グループの入力を受け付ける。たとえば、方式設計者は、入力装置904を用いてグルーピングするミドルウェアを図6に示すように点線の枠500で囲む。
モデル生成部11は、このような点線500で囲まれたミドルウェアのグループを受け付けてグループのオブジェクト(図4(D))およびディレクトリ情報510を作成し、オブジェクト記憶部21に記憶する。
そして、モデル生成部11は、全てのオブジェクトの入力を受け付けて、図6に示すようなモデルを生成する(S1002)。なお、以上説明したようにゼロからモデルを作成する以外に、既にモデル記憶部22に既に記憶されているモデルを再利用してモデルを作成することもできる。一般的に、ミドルウェア製品などにより、標準的なモデルは固定されているため、モデル記憶部22に記憶されているモデルを再利用することは可能である。方式設計者は、モデル記憶部22に記憶されたモデルから、今回設計するシステムに最も適合するモデルを抽出し、今回設計するシステム構成に適合するように抽出したモデルを修正する。これにより、方式設計者の作業負荷を軽減することができる。
次に、障害ケース抽出部12は、生成されたモデルにもとづいて、障害ケースを抽出する(S1003)。この障害ケース抽出処理について、図12を用いて以下に説明する。
図12は障害抽出処理の処理フロー図である。障害ケース抽出部12は、図6に示すモデルのいずれかの障害箇所を設定(特定)する(S1201)。すなわち、障害ケース抽出部12は、モデル生成部11が生成したモデルの各オブジェクトを障害箇所として設定する。具体的には、PLサーバ100、Web用ミドルウェア110などを障害箇所として設定する。次に、障害ケース抽出部12は、障害タイミングを設定(特定)する。障害タイミングは、障害が発生した時に行っていた処理の情報である。すなわち、障害が発生した時に、あるメッセージ(リクエスト)が、どのハードウェアのどのプロセスで処理を行っていたか、さらには処理対象のプロセス中のどのコマンドの実行中または実行前/実行後であったか、という情報である。障害ケース抽出部12は、S1201で設定した障害箇所に所定の障害タイミングを設定する。そして、障害ケース抽出部12は、障害箇所および障害ケースが設定された一件の障害ケースを出力し、実行結果記憶部23に記憶する(S1203)。そして、障害ケース抽出部12は、全ての障害タイミングを設定したか否かを判別する(S1204)。全ての障害タイミングを設定していない場合(S1204:NO)、障害ケース抽出部12は、S1202に戻り、新たな障害タイミングを設定する。
一方、全ての障害タイミングを設定した場合(S1204:YES)、障害ケース抽出部12は、全ての障害箇所を設定したか否かを判別する(S1205)。全ての障害箇所を設定していない場合(S1205:NO)、障害ケース抽出部12は、S1201に戻り、新たな障害箇所を設定する。また、全ての障害箇所を設定した場合(S1205:YES)、障害ケース抽出部12は、本処理(S1003)を終了する。これにより、障害ケース抽出部12は、生成されたモデルの全ての障害ケースを洗い出し、実行結果記憶部23に記憶することができる。
次に、シミュレーション実行部13は、モデル生成部11が生成したモデル(図6参照)を用いて、S1003で設定した障害ケース毎に各オブジェクトに障害を発生させて、障害時の動きについてシミュレーションする(S1004)。すなわち、シミュレーション実行部13は、モデル生成部11が生成したモデル(図6参照)についてシミュレーションを実行している途中で、S1003で設定したある障害ケースにおいて、当該障害ケースにおける障害タイミングで、当該障害ケースにおける障害箇所について、擬似的に障害を発生させ(障害中というステータスに変更し)、どのようなエラーが出力されるのか、あるいは、自動的なリカバリ処理が行われるかなどを検証する。シミュレーション実行部13は、障害ケース抽出部12で抽出した全ての障害ケースについて、このシミュレーションを行う。
シミュレーションは、図1に示す方式設計支援装置上で、オブジェクト記憶部21に記憶された各APLスクリプトおよび各ミドルスクリプト(図5(B)(C)参照)を、実行することにより行われる。APLスクリプトおよびミドルスクリプトの実行は、シミュレーション実行部13が有するスクリプトエンジンによって行われる。モデル(図6参照)に示された通信相手のオブジェクト(例えば、サーバ、プロセス)との通信を行うスクリプトの関数については、スクリプトエンジンは、通信相手のオブジェクトがシミュレーション実行部13によって障害中というステータスにされているかどうかを確認し、障害中のステータスであればエラー応答する。このエラー応答を受けて、APLスクリプト、及びミドルスクリプトはエラー時の処理を実行する。なお、通信を行うスクリプトの関数は、send、recv、return、read、writeなどである。このように、シミュレーション実行部13は、各障害ケースにおけるシステムの動きをシミュレーションする。尚、各障害ケースにおける障害箇所に相当するオブジェクトのステータスを、シミュレーション実行部13が障害中のステータスに変更するタイミングは、シミュレーションの実行中に、障害ケースの障害タイミングに定められたタイミングで行われる。
図6に示すモデルにおいて、障害箇所が「BLサーバ1号機200」で、障害タイミングが「Webプロセス111の処理中」の障害ケースの場合を例に以下説明する。まず、シミュレーション実行部13は、スクリプトエンジンを用いてAPLスクリプト、及びミドルスクリプトを起動させ、シミュレーションを開始する。シミュレーション実行部13は、APLスクリプト、及びミドルスクリプトの実行を監視しており、Webプロセス111の実行中に、BLサーバ1号機200に相当するオブジェクトのステータスを障害中に変更する。APLスクリプト、及びミドルスクリプトは、しばらくは処理を継続する。スクリプトエンジンが分散用ミドルウェア120のミドルスクリプト122のsend関数(図8(C)50bの箇所)を実行する際、send関数は通信相手である受付プロセス211のステータス、及び受付プロセス211の親オブジェクト(上位階層全てのオブジェクト)のステータスを確認する。この例においては、親オブジェクトであるBLサーバ1号機200が障害中のステータスである為、受付プロセス211についても障害中と判断し、send関数はエラー応答する。ミドルスクリプト122はエラー応答を受け、スクリプトの記述50bに従ってBLサーバ2号機300への接続を行う。
シミュレーション実行部13は、シミュレーションの実行終了後、障害ケースごとのシミュレーション結果(障害時の動き)を実行結果記憶部23に記憶する。
シミュレーション実行部13は、シミュレーションの実行終了後、障害ケースごとのシミュレーション結果(障害時の動き)を実行結果記憶部23に記憶する。
次に、評価部14は、シミュレーション実行部13が実行した、障害ケース毎のシミュレーション結果について評価する(S1005)。すなわち、評価部14は、シミュレーション結果から問題点を抽出する。なお、抽出した問題点には、「警告エラー」、「重大エラー」などのレベルが設定される。以下に、評価部14の処理を説明する。
図11は、障害ケース毎の評価結果表の一例を示す図である。図示するように、評価結果表は、項番(#)と、障害ケース111と、障害時の動き112と、問題点113と、備考114と、を有する。障害ケース111には、S1003において抽出した全ての障害ケースが設定される。障害時の動き112には、S1004においてシミュレーション実行部13が検証した障害時の動きが設定される。具体的には、サービス停止(システムダウン)、サービス続行など設定される。問題点113には、障害時の動き112に応じて、評価部14が判別した結果が設定される。例えば、「問題なし」、「警告エラー」、「重大エラー」などが設定される。まず、評価部14は、障害時の動きにサービス停止が設定されている場合は、「問題あり」と判別する。また、評価部14は、障害時の動きにサービス続行が設定されている場合は、「問題なし」と判別する。そして、「問題あり」と判別した場合は、さらに、当該障害ケースの障害箇所のオブジェクトにグループが設定されているか否かを判別する。グループが設定されているオブジェクトに障害が発生した場合、グルーピングされた他のオブジェクトに処理が振り分けられサービスは続行されるはずである。このような場合、評価部14は、生成したモデルの構成が妥当でないと判別し、問題点に「重大エラー」を設定する。これ以外の「問題あり」の場合(モデル自体には不整合が生じていない場合)は、方式設計者の判断に委ねられる問題であるため、評価部14は、問題点113に「警告エラー」を設定する。このように、評価部14は、S1002において作成したモデルが耐障害性の観点から問題があるか否かを判別する。また、評価部14は、問題点に「重大エラー」またな「警告エラー」が設定された場合、備考114に、問題点で指摘したエラーを改善または回避するための方法を設定する。なお、備考114に設定される内容は、図示しない障害ケース回避データベースに記憶されているものとする。評価部14は、このデータベースから当該障害ケースに対応する回避策を特定し、備考114に設定する。
例えば、図11の#1-1では、障害ケース111には「障害箇所:PLサーバ、障害タイミング:分散用ミドルウェアにメッセージ送信後」が、障害時の動き112には「サービス停止」が、設定されている。この場合、評価部14は、障害時の動き112がサービス停止となっているため、「問題あり」と判定する。そして、図6に示すモデルにおいて、PLサーバ100はグループ化されていないため、評価部14は問題点113に「警告エラー」を設定する。そして、評価部14は、備考114に障害ケース回避データベースから抽出した「バックアップ用のPLサーバを設置」を設定する。
また、図11の#3-1では、障害ケース111には「障害箇所:BLサーバ1号機、障害タイミング:分散プロセスがメッセージを送信するとき」が、障害時の動き112には「サービス停止(システムエラー:担当者コール)」が、設定されている。この場合、評価部14は、「サービス停止」とあるため、「問題あり」と判断する。そして、評価部14は、図6に示すモデルを参照して、BLサーバ1号機の業務用ミドルウェア210と同じグループの業務用ミドルウェア310が存在するか否かを判別する。そして、BLサーバ1号機の業務用ミドルウェア210と同じグループの業務用ミドルウェア310が存在するため、評価部14は、分散用ミドルウェア120のパラメータの設定ミスにより不具合が生じたものと判別する。このようなグループ化されたオブジェクトに障害が発生した場合、評価部14は、問題点113に「重大エラー」を設定する。そして、評価部14は、備考114にエラーの原因となったパラメータの修正内容を設定する。すなわち、現時点の分散用ミドルウェア120のオブジェクト情報のパラメータ配列2(送信する時に既に相手が障害になっていた場合のリトライ)は“しない”である(図8(A)参照)。そのため、BLサーバ1号機の障害時、分散用ミドルウェア120のミドルスクリプト(図8(C)参照)でエラーとなり、最終的に「システムエラー(担当者コール)」となる。しかしながら、分散用ミドルウェア120のパラメータ配列2(送信する時に既に相手が障害になっていた場合のリトライ)を“する”にしておけば、サービスを停止することなく、BLサーバ2号機にメッセージを再送信する。したがって、評価部14は、備考114に「分散用ミドルウェア120のパラメータ配列2を“(リトライ)する”に変更」を設定する。
なお、評価部14は、障害ケース抽出部12が設定した障害ケース以外にも、モデルの整合性エラーを検出することとしてもよい。図11の#N-1の示す例では、障害ケース111には「分散用ミドルウェアと業務用ミドルウェアのパラメータの不整合」が設定されている。具体的には、分散用ミドルウェア120のパラメータ配列1(タイムアウト値)は30秒で、業務用ミドルウェア210のパラメータのタイムアウト値が40秒で、かつ、DBサーバ400の処理時間が35秒を要する場合、BLサーバ1号機200の処理プロセス213は、35秒間待ってDBサーバ400の処理結果を正しく受け取ることができる。しかしながら、PLサーバ100上の分散用ミドルウェア120では、30秒でタイムアウトとなり障害となってしまう。したがって、分散用ミドルウェア120のパラメータ配列1(タイムアウト値)は40秒以上に修正すべきである。そこで、評価部14は、問題点113に「重大エラー」を設定し、備考114に「分散用ミドルウェアのパラメータ配列1を40秒以上にする。」を設定する。
また、評価部14は、製品情報記憶部24を参照して、各ミドルウェアのパラメータに設定された値の上限または下限チェックを行うこととしてもよい。図11の#N-2では、障害ケース111には「パラメータの設定エラー」が、障害時の動き112には「シンタックスエラー(文法エラー)」が設定されている。評価部14は、たとえば、業務用ミドルウェア210のパラメータに“100”(リトライ回数)が設定されていて、製品情報記憶部24に記憶された業務用ミドルウェア210のパラメータの設定可能回数は“1から99”とする。この場合、評価部14は、問題点113に「重大エラー」を設定し、備考114に業務用ミドルウェアのパラメータの設定値の範囲を表示する。
評価部14は、以上のようなモデルの評価を行い、評価結果表を実行結果記憶部23に記憶する。
次に、出力部15は、評価部14が評価した評価結果表(図11参照)を、出力装置905に出力する(S1006)。なお、出力部15は、図11に示す評価結果のうち問題点113に警告エラーおよび重大エラーが設定された障害ケースのみを出力することしてもよい。そして、方式設計者は、出力装置905に出力された評価結果表にもとづいて、生成されたモデルおよびパラメータの設定を変更する必要があるか否かを判断する。
そして、入力装置904を介して変更指示を受け付けた場合(S1007:YES)、モデル生成部はS1001にもどり、再度、各オブジェクト情報の入力を受け付ける。なお、問題点を解消または改善するためには、例えば、ハードウェアまたはソフトウェアを他の製品に置き換える、ミドルウェアのパラメータを修正する、独自にミドルウェアを作成する、などが考えられる。なお、重大エラーに関しては、問題点の解決策が備考114に表示されているため、方式設計者からの指示を受け付けることなく、モデル生成部11は備考に指定された修正を行うこととしてもよい。
一方、モデルの変更指示を受け付けない場合、すなわち、終了指示を受け付けた場合(S1007:NO)、出力部15は、オブジェクト記憶部21に記憶された各オブジェクトの情報、モデル記憶部22に記憶されたモデル、実行結果記憶部23に記憶された評価結果表などの各種ドキュメントを、プリンタなどの出力装置905に出力(印刷)する(S1008)。これにより、方式設計書を作成する作業負荷を解消することができる。また、実際にコンピュータシステムを構築する際に必要な、ミドルウェアのパラメータ設定に流用することができる。
このような方式設計支援装置を用いることにより、耐障害方式設計における属人性を排除し、充分な経験やスキルを有しない設計者であっても、容易に耐障害方式設計を行うことができる。
また、ハードウェア、ミドルウェア、プロセスなどをモデル化することにより、全ての障害ケースを抽出し、障害時の動きをシュミレーションすることができる。また、モデル化することで、アプリケーションの処理パターンと整合性のとれた耐障害方式設計を行うことができる。
また、障害ケース毎の問題点を提示し、モデルを修正していくことにより、より信頼性の高い耐障害方式設計を行うことができる。
また、処理パターンと方式設計との全体調整による手戻り作業がなくなるため、方式設計工程に要する時間を短縮することができる。
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、本実施形態では、オブジェクトの種類の1つとしてミドルウェアを用いて説明した。しかしながら本発明はこれに限定されず、OSなどミドルウェア以外のソフトウェアを用いることとしてもよい。
また、本実施形態では、ミドルウェアのパラメータとして障害に関するパラメータ(タイムオーバ値など)を用いて説明した。しかしながら性能に関するパラメータ(たとえば、コネクションプールなど)を設定することにより、耐障害方式設計だけでなく性能設計も本方式設計支援装置1で行うこととしてもよい。
1…方式設計支援装置、11…モデル生成部、12…障害ケース抽出部、13…シミュレーション実行部、14…評価部、15…出力部、21…オブジェクト記憶部、22…モデル記憶部、23…実行結果記憶部、24…製品情報記憶部、100…PLサーバ、110…Web用ミドルウェア、120…分散用ミドルウェア、200…BLサーバ1号機、210…業務用ミドルウェア、300…BLサーバ2号機、310…業務用ミドルウェア、400…DBサーバ、410…DB用ミドルウェア
Claims (5)
- コンピュータを用いて、耐障害性方式設計を支援する方式設計支援方法であって、
前記コンピュータの演算装置は、
耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成を受け付け、当該受け付けたシステム構成を有する前記計算機システムのモデルを生成する生成ステップと、
前記生成したモデルの障害ケースを設定する障害ケース抽出ステップと、
前記障害ケース毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行ステップと、
前記障害ケース毎のシミュレーション実行結果に応じて、前記生成したモデルの問題点を抽出する評価ステップと、
前記モデルの問題点を出力する出力ステップと、を行うこと
を特徴とする方式設計支援方法。 - 請求項1記載の方式設計支援方法であって、
前記生成したモデルには、処理の単位を示すプロセスと、当該プロセスの動きが設定されていること
を特徴とする方式設計支援方法。 - 請求項1記載の方式設計支援方法であって、
前記評価ステップは、前記抽出した問題点にレベルを設定すること
を特徴とする方式設計支援方法。 - 耐障害性方式設計を支援する方式設計支援装置であって、
耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成の構成を受け付け、当該受け付けたシステム構成を有する前記計算機システムのモデルを生成する生成手段と、
前記生成したモデルの障害ケースを設定する障害ケース抽出手段と、
前記障害ケース毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行手段と、
前記障害ケース毎のシミュレーション実行結果に応じて、前記生成したモデルの問題点を抽出する評価手段と、
前記モデルの問題点を出力する出力手段と、を有すること
を特徴とする方式設計支援装置。 - 耐障害性方式設計を支援する方式設計支援装置において動作するプログラムであって、
前記プログラムは、前記方式設計支援装置に、
耐障害方式設計の対象となる計算機システムのハードウェア、ソフトウェアを含むシステム構成の構成を受け付け、当該受け付けたシステム構成を有する前記計算機システムのモデルを生成する生成手段、
前記生成したモデルの障害ケースを設定する障害ケース抽出手段、
前記障害ケース毎に、障害を発生させて障害時の動きをシミュレーションするシミュレーション実行手段、
前記障害ケース毎のシミュレーション実行結果に応じて、前記生成したモデルの問題点を抽出する評価手段、および、
前記モデルの問題点を出力する出力手段、として機能させること
を特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004087351A JP2005275749A (ja) | 2004-03-24 | 2004-03-24 | 方式設計支援方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004087351A JP2005275749A (ja) | 2004-03-24 | 2004-03-24 | 方式設計支援方法および装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005275749A true JP2005275749A (ja) | 2005-10-06 |
Family
ID=35175370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004087351A Pending JP2005275749A (ja) | 2004-03-24 | 2004-03-24 | 方式設計支援方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005275749A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8103914B2 (en) | 2008-05-30 | 2012-01-24 | Fujitsu Limited | Test file generation device and test file generation method |
-
2004
- 2004-03-24 JP JP2004087351A patent/JP2005275749A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8103914B2 (en) | 2008-05-30 | 2012-01-24 | Fujitsu Limited | Test file generation device and test file generation method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601449B2 (en) | Cross-platform application framework | |
KR101122862B1 (ko) | 테스트 자동화 스택 계층화 | |
CN107220172B (zh) | 通过模型驱动技术进行自动用户界面(ui)测试的方法和系统 | |
US20150100829A1 (en) | Method and system for selecting and executing test scripts | |
US20110145643A1 (en) | Reproducible test framework for randomized stress test | |
US20150100832A1 (en) | Method and system for selecting and executing test scripts | |
US20150100830A1 (en) | Method and system for selecting and executing test scripts | |
JP2008021111A (ja) | 業務システム構成変更方法、管理コンピュータ、および、業務システム構成変更方法のプログラム | |
JP2008276690A (ja) | 開発システム、開発システムのサーバ、開発方法 | |
US20150100831A1 (en) | Method and system for selecting and executing test scripts | |
JP2012221380A (ja) | 自動プログラム生成装置、方法及びコンピュータプログラム | |
CN110727575B (zh) | 一种信息处理方法、系统、装置、以及存储介质 | |
CN1728700B (zh) | 基于struts框架的web电信网管系统及其方法 | |
CN113704110A (zh) | 用户界面的自动化测试方法及装置 | |
US9026997B2 (en) | Systems and methods for executing object-oriented programming code invoking pre-existing objects | |
US20150234732A1 (en) | Executable software specification generation | |
US8448133B2 (en) | Software development, deployment and evolution system, method and program product | |
US8448190B2 (en) | Methods, systems, and computer readable media for high reliability downloading of background assets using a manifest in a virtual world application | |
JP4696744B2 (ja) | プログラムテスト装置、方法、及び、プログラム | |
KR20100056338A (ko) | 재활용도를 높일 수 있는 gui 테스트 자동화 시스템 및 그 방법 | |
WO2011125280A1 (ja) | デバッグ支援装置、デバッグ支援方法及びデバッグ支援プログラム | |
JP2005275749A (ja) | 方式設計支援方法および装置 | |
JP5119765B2 (ja) | 仕様書作成支援装置および支援方法 | |
KR101798867B1 (ko) | 업무 시스템 개발 방법 및 장치 | |
CN114035786A (zh) | 一种基于依赖的微前端兼容迁移方法及系统 |