(57)【要約】【課題】評価対象システムを精度よく評価する。【解決手段】動作モデル記憶部１１０は、評価対象システムを構成する構成要素が実行する１以上のアクションそれぞれについて、動作モデルを記憶する。模擬実行部１３０は、動作モデル記憶部１１０が記憶した動作モデルに基づいて、システム動作を模擬する。障害発生判定部１４１は、模擬実行部１３０が模擬したシステム動作に基づいて、障害発生時刻を判定する。復旧判定部１４２は、模擬実行部１３０が模擬したシステム動作に基づいて、復旧時刻を判定する。可用性算出部１４９は、障害発生判定部１４１が判定した障害発生時刻と、復旧判定部１４２が判定した復旧時刻とに基づいて、可用性評価値を算出する。【選択図】図５
2011022774.tif 000002
【特許請求の範囲】
【請求項１】
１以上の構成要素により構成される評価対象システムの動作を模擬することにより、上記評価対象システムを評価する可用性評価装置において、
データを記憶する記憶装置と、データを処理する処理装置と、動作モデル記憶部と、模擬実行部と、障害発生判定部と、復旧判定部と、可用性算出部と、評価結果出力部とを有し、
上記動作モデル記憶部は、上記評価対象システムを構成する構成要素が実行する１以上のアクションそれぞれについて、上記記憶装置を用いて動作モデルを記憶し、上記動作モデルは、実行条件と実行時間と実行結果との組を含み、上記実行条件は、上記アクションの実行を開始する条件を表わし、上記実行時間は、上記アクションの実行にかかる時間を表わし、上記実行結果は、上記アクションを実行した結果を表わし、
上記模擬実行部は、上記動作モデル記憶部が記憶した動作モデルに基づいて、上記処理装置を用いてシステム動作を模擬し、上記システム動作は、上記評価対象システムの動作であり、
上記障害発生判定部は、上記模擬実行部が模擬したシステム動作に基づいて、上記処理装置を用いて障害発生時刻を判定し、上記障害発生時刻は、上記評価対象システムに障害が発生する時刻であり、
上記復旧判定部は、上記模擬実行部が模擬したシステム動作に基づいて、上記処理装置を用いて復旧時刻を判定し、上記復旧時刻は、上記評価対象システムが上記障害から復旧する時刻であり、
上記可用性算出部は、上記障害発生判定部が判定した障害発生時刻と、上記復旧判定部が判定した復旧時刻とに基づいて、上記処理装置を用いて可用性評価値を算出し、上記可用性評価値は、上記評価対象システムが正常に動作している時間の割合を表わす数値であり、
上記評価結果出力部は、上記処理装置を用いて可用性評価結果を出力し、上記可用性評価結果は、上記評価対象システムを評価した結果を表わし、上記可用性算出部が算出した可用性評価値を含むことを特徴とする可用性評価装置。
【請求項２】
上記可用性評価装置は、更に、平均動作時間算出部と、平均修復時間算出部とを有し、
上記平均動作時間算出部は、上記障害発生判定部が判定した障害発生時刻と、上記復旧判定部が判定した復旧時刻とに基づいて、上記処理装置を用いて平均動作時間を算出し、上記平均動作時間は、上記評価対象システムが正常に動作している時間の平均値であり、
上記平均修復時間算出部は、上記障害発生判定部が判定した障害発生時刻と、上記復旧判定部が判定した復旧時刻とに基づいて、上記処理装置を用いて平均修復時間を算出し、上記平均修復時間は、上記評価対象システムに障害が発生している時間の平均値であり、
上記可用性算出部は、上記平均動作時間算出部が算出した平均動作時間と、上記平均修復時間算出部が算出した平均修復時間とに基づいて、上記処理装置を用いて上記可用性評価値を算出し、上記可用性評価値は、上記平均動作時間を合計平均時間で割った商であり、上記合計平均時間は、上記平均動作時間と上記平均修復時間とを合計した和であることを特徴とする請求項１に記載の可用性評価装置。
【請求項３】
上記可用性評価装置は、更に、機能制約条件記憶部を有し、
上記機能制約条件記憶部は、上記記憶装置を用いて１以上の機能制約条件を記憶し、上記機能制約条件は、上記評価対象システムを構成する構成要素によるアクションの実行を制約する条件を表わし、
上記模擬実行部は、上記動作モデル記憶部が記憶した動作モデルと、上記機能制約条件記憶部が記憶した機能制約条件とに基づいて、上記処理装置を用いてシステム動作を模擬することを特徴とする請求項１または請求項２に記載の可用性評価装置。
【請求項４】
上記可用性評価装置は、更に、機能制約違反判定部を有し、
上記機能制約違反判定部は、上記模擬実行部が模擬したシステム動作に基づいて、上記処理装置を用いて機能制約違反を判定し、上記機能制約違反は、上記機能制約条件に対する違反を表わし、
上記評価結果出力部が出力する可用性評価結果は、上記機能制約違反判定部が判定した機能制約違反を含むことを特徴とする請求項３に記載の可用性評価装置。
【請求項５】
上記可用性評価装置は、更に、性能制約条件記憶部と、性能制約違反判定部とを有し、
上記性能制約条件記憶部は、上記記憶装置を用いて１以上の性能制約条件を記憶し、上記性能制約条件は、上記評価対象システムを構成する構成要素がアクションを実行した結果が満たすべき性能に関する条件を表わし、
上記性能制約違反判定部は、上記模擬実行部が模擬したシステム動作に基づいて、上記処理装置を用いて性能制約違反を判定し、上記性能制約違反は、上記性能制約条件に対する違反を表わし、
上記評価結果出力部が出力する可用性評価結果は、上記性能制約違反判定部が判定した性能制約違反を含むことを特徴とする請求項１乃至請求項４のいずれかに記載の可用性評価装置。
【請求項６】
上記動作モデル記憶部が記憶した実行条件は、要素状態と取得イベントとの組であり、上記要素状態は、上記構成要素の状態を表わし、上記取得イベントは、上記評価対象システムに発生するイベントを表わし、上記実行条件は、上記構成要素の状態が上記要素状態であるときに上記取得イベントが発生したことが、上記アクションを開始する条件であることを表わし、
上記動作モデル記憶部が記憶した実行結果は、遷移状態と結果イベントとの組であり、上記遷移状態は、上記構成要素の状態を表わし、上記結果イベントは、上記評価対象システムに発生するイベントを表わし、上記実行結果は、上記アクションを実行した結果として、上記構成要素の状態が上記遷移状態に遷移し、上記結果イベントが発生することを表わすことを特徴とする請求項１乃至請求項５のいずれかに記載の可用性評価装置。
【請求項７】
上記可用性評価装置は、更に、パラメータ条件記憶部を有し、
上記パラメータ条件記憶部は、上記記憶装置を用いて１以上のパラメータ条件を記憶し、上記パラメータ条件は、上記動作モデル記憶部が記憶した実行条件について、上記実行条件の取得イベントが表わすイベントのパラメータが満たすべき条件を表わし、上記取得イベントのパラメータが上記パラメータ条件を満たすことが、上記アクションを開始する条件であることを表わし、
上記模擬実行部は、上記動作モデル記憶部が記憶した動作モデルと、上記パラメータ条件記憶部が記憶したパラメータ条件とに基づいて、上記処理装置を用いてシステム動作を模擬することを特徴とする請求項６に記載の可用性評価装置。
【請求項８】
上記可用性評価装置は、更に、順序条件記憶部を有し、
上記順序条件記憶部は、上記記憶装置を用いて１以上の順序条件を記憶し、上記順序条件は、上記動作モデル記憶部が記憶した実行条件について、上記実行条件の取得イベントが表わすイベントが発生する順序に関する条件を表わし、上記取得イベントが発生する順序が上記順序条件を満たすことが、上記アクションを開始する条件であることを表わし、
上記模擬実行部は、上記動作モデル記憶部が記憶した動作モデルと、上記順序条件記憶部が記憶した順序条件とに基づいて、上記処理装置を用いてシステム動作を模擬することを特徴とする請求項６または請求項７に記載の可用性評価装置。
【請求項９】
上記可用性評価装置は、更に、処理時間条件記憶部と、処理時間違反判定部とを有し、
上記処理時間条件記憶部は、上記記憶装置を用いて処理時間条件を記憶し、上記処理時間条件は、上記動作モデル記憶部が記憶した動作モデルについて、上記評価対象システムに発生する２つのイベントの間隔が満たすべき条件を表わし、
上記処理時間違反判定部は、上記模擬実行部が模擬したシステム動作に基づいて、上記処理装置を用いて処理時間違反を判定し、上記処理時間違反は、上記処理時間条件に対する違反を表わし、
上記評価結果出力部が出力する可用性評価結果は、上記処理時間違反判定部が判定した処理時間違反を含むことを特徴とする請求項６乃至請求項８のいずれかに記載の可用性評価装置。
【請求項１０】
上記可用性評価装置は、更に、入力イベント記憶部を有し、
上記入力イベント記憶部は、上記記憶装置を用いて１以上の入力イベントを記憶し、上記入力イベントは、発生イベントと発生時刻との組を含み、上記発生イベントは、上記評価対象システムに発生するイベントを表わし、上記発生時刻は、上記システム動作の模擬における時刻を表わし、上記入力イベントは、上記発生時刻に上記発生イベントが発生することを表わし、
上記模擬実行部は、上記動作モデル記憶部が記憶した動作モデルと、上記入力イベント記憶部が記憶した入力イベントとに基づいて、上記処理装置を用いて上記システム動作を模擬することを特徴とする請求項６乃至請求項９のいずれかに記載の可用性評価装置。
【請求項１１】
上記可用性評価装置は、更に、キューモデル記憶部を有し、
上記キューモデル記憶部は、上記評価対象システムを構成する構成要素それぞれについて、上記記憶装置を用いてキューモデルを記憶し、上記キューモデルは、上記評価対象システムに発生したイベントを処理する順序に関する規則を表わし、
上記模擬実行部は、上記動作モデル記憶部が記憶した動作モデルと、上記キューモデル記憶部が記憶したキューモデルとに基づいて、上記処理装置を用いてシステム動作を模擬することを特徴とする請求項６乃至請求項１０のいずれかに記載の可用性評価装置。
【請求項１２】
データを記憶する記憶装置と、データを処理する処理装置とを有するコンピュータが実行することにより、上記コンピュータが請求項１乃至請求項１１のいずれかに記載の可用性評価装置として機能することを特徴とするコンピュータプログラム。
【請求項１３】
データを記憶する記憶装置と、データを処理する処理装置とを有する可用性評価装置が、１以上の構成要素により構成される評価対象システムの動作を模擬することにより、上記評価対象システムを評価する可用性評価方法において、
上記評価対象システムを構成する構成要素が実行する１以上のアクションそれぞれについて、上記記憶装置が動作モデルを記憶し、上記動作モデルは、実行条件と実行時間と実行結果との組であり、上記実行条件は、上記アクションの実行を開始する条件を表わし、上記実行時間は、上記アクションの実行にかかる時間を表わし、上記実行結果は、上記アクションを実行した結果を表わし、
上記記憶装置が記憶した動作モデルに基づいて、上記処理装置がシステム動作を模擬し、上記システム動作は、上記評価対象システムの動作であり、
上記処理装置が模擬したシステム動作に基づいて、上記処理装置が障害発生時刻を判定し、上記障害発生時刻は、上記評価対象システムに障害が発生する時刻であり、
上記処理装置が模擬したシステム動作に基づいて、上記処理装置が復旧時刻を判定し、上記復旧時刻は、上記評価対象システムが上記障害から復旧する時刻であり、
上記処理装置が判定した障害発生時刻と、上記復旧判定部が判定した復旧時刻とに基づいて、上記処理装置が可用性評価値を算出し、上記可用性評価値は、上記評価対象システムが正常に動作している時間の割合を表わす数値であり、
上記処理装置が可用性評価結果を出力し、上記可用性評価結果は、上記評価対象システムを評価した結果を表わし、上記可用性算出部が算出した可用性評価値を含むことを特徴とする可用性評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、評価対象であるシステムを模擬実行することによりシステムの可用性を評価する可用性評価装置に関する。
【背景技術】
【０００２】
制御システムなどのシステムの開発において、ソフトウェアやハードウェアを開発する前に、システムの動作仕様を定義するシステム設計モデルを用いて可用性要求を実現できるか評価することが行われる。制御システムのように外部からの入力に対してリアルタイムに応答を返すシステムの場合、システム設計モデルとして状態遷移モデルが適しており、この状態遷移モデルを用いて可用性を計算する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１２７４６４号公報
【特許文献２】特開２００５−３１６６９６号公報
【特許文献３】特開２００７−２９９０８１号公報
【特許文献４】特開２００７−１２２６３９号公報
【特許文献５】特開２００５−２７５７４９号公報
【特許文献６】特開２００６−９９３０８号公報
【非特許文献】
【０００４】
【非特許文献１】当麻喜弘「フォールトトレラントシステム論」１８５〜２００ページ、電子情報通信学会、１９９０年６月。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の可用性評価方式では、定常時の値を計算してシステムの可用性を評価する。このため、負荷の動的な変動など運用時における実際の値を考慮することができず、可用性評価の精度が低かった。
この発明は、例えば上記のような課題を解決するためになされたものであり、評価対象システムを精度よく評価することを目的とする。
【課題を解決するための手段】
【０００６】
この発明にかかる可用性評価装置は、１以上の構成要素により構成される評価対象システムの動作を模擬することにより、上記評価対象システムを評価する可用性評価装置において、
データを記憶する記憶装置と、データを処理する処理装置と、動作モデル記憶部と、模擬実行部と、障害発生判定部と、復旧判定部と、可用性算出部と、評価結果出力部とを有し、
上記動作モデル記憶部は、上記評価対象システムを構成する構成要素が実行する１以上のアクションそれぞれについて、上記記憶装置を用いて動作モデルを記憶し、上記動作モデルは、実行条件と実行時間と実行結果との組を含み、上記実行条件は、上記アクションの実行を開始する条件を表わし、上記実行時間は、上記アクションの実行にかかる時間を表わし、上記実行結果は、上記アクションを実行した結果を表わし、
上記模擬実行部は、上記動作モデル記憶部が記憶した動作モデルに基づいて、上記処理装置を用いてシステム動作を模擬し、上記システム動作は、上記評価対象システムの動作であり、
上記障害発生判定部は、上記模擬実行部が模擬したシステム動作に基づいて、上記処理装置を用いて障害発生時刻を判定し、上記障害発生時刻は、上記評価対象システムに障害が発生する時刻であり、
上記復旧判定部は、上記模擬実行部が模擬したシステム動作に基づいて、上記処理装置を用いて復旧時刻を判定し、上記復旧時刻は、上記評価対象システムが上記障害から復旧する時刻であり、
上記可用性算出部は、上記障害発生判定部が判定した障害発生時刻と、上記復旧判定部が判定した復旧時刻とに基づいて、上記処理装置を用いて可用性評価値を算出し、上記可用性評価値は、上記評価対象システムが正常に動作している時間の割合を表わす数値であり、
上記評価結果出力部は、上記処理装置を用いて可用性評価結果を出力し、上記可用性評価結果は、上記評価対象システムを評価した結果を表わし、上記可用性算出部が算出した可用性評価値を含むことを特徴とする。
【発明の効果】
【０００７】
この発明にかかる可用性評価装置によれば、動作モデル記憶部が記憶した動作モデルに基づいて、模擬実行部が評価対象システムの動作を模擬し、障害発生判定部が判定した障害発生時刻と、復旧判定部が判定した復旧時刻とに基づいて、可用性算出部が可用性評価値を算出するので、可用性評価値として理論上の数値ではなく、実際の運用時に近い数値を算出することができ、評価対象システムを精度よく評価することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１における設計システム８００の全体構成の一例を示すシステム構成図。
【図２】評価対象システム７００の全体構成の一例を示す図。
【図３】実施の形態１における可用性評価装置１００の外観の一例を示す斜視図。
【図４】実施の形態１における可用性評価装置１００のハードウェア資源の一例を示す図。
【図５】実施の形態１における可用性評価装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図６】評価対象システム７００を構成する各構成要素の状態遷移の一例を示す図。
【図７】実施の形態１における構成要素データ６１０の一例を示す図。
【図８】実施の形態１における状態データ６１５の一例を示す図。
【図９】実施の形態１におけるアクションデータ６２０の一例を示す図。
【図１０】実施の形態１におけるイベントデータ６３０の一例を示す図。
【図１１】実施の形態１における実行条件データ６４０の一例を示す図。
【図１２】実施の形態１における状態遷移データ６４６の一例を示す図。
【図１３】実施の形態１における入力イベントデータ６５０の一例を示す図。
【図１４】実施の形態１におけるキューデータ６５５の一例を示す図。
【図１５】実施の形態１における取得イベントデータ６６０の一例を示す図。
【図１６】順序条件の一例を示す図。
【図１７】実施の形態１における順序条件データ６６５の一例を示す図。
【図１８】実施の形態１における処理時間条件データ６７０の一例を示す図。
【図１９】実施の形態１における障害検出条件データ６８０の一例を示す図。
【図２０】実施の形態１における可用性評価処理Ｓ３００の流れの一例を示すフローチャート図。
【図２１】実施の形態１における模擬実行処理Ｓ３１０の流れの一例を示すフローチャート図。
【図２２】実施の形態１における可用性算出処理Ｓ３７０の流れの一例を示すフローチャート図。
【図２３】実施の形態１における模擬実行部１３０が評価対象システム７００の動作を模擬する様子を示す模式図。
【図２４】入り口アクション・出口アクションが記述された状態遷移モデルの一例を示す図。
【図２５】モデル変換装置が変換した状態遷移モデルの一例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
実施の形態１について、図１〜図２５を用いて説明する。
【００１０】
図１は、この実施の形態における設計システム８００の全体構成の一例を示すシステム構成図である。
設計システム８００は、システム（以下「設計対象システム」と呼ぶ。）を設計するシステムである。設計システム８００は、例えば、システムモデル設計装置８１０、可用性評価装置１００、システム詳細設計装置８２０を有する。
システムモデル設計装置８１０は、設計対象システムの概要を設計し、設計した設計対象システムの概要を表わすモデル（以下「システムモデル」と呼ぶ。）を生成する。
可用性評価装置１００は、システムモデル設計装置８１０が生成したシステムモデルを評価対象システムとして、評価対象システムの動作を模擬（シミュレート）する。可用性評価装置１００は、評価対象システムを模擬した結果に基づいて、評価対象システムを評価する。可用性評価装置１００は、評価対象システムを評価した結果（以下「可用性評価結果」と呼ぶ。）を出力する。
可用性評価結果は、システムモデル設計装置８１０にフィードバックされる。可用性評価結果が設計対象システムに要求される水準を満たしていない場合、システムモデル設計装置８１０は、可用性評価結果に基づいて、システムモデルを修正する。
可用性評価結果が設計対象システムに要求される水準を満たしている場合、システム詳細設計装置８２０が、システムモデルに基づいて、システムの詳細を設計する。
【００１１】
図２は、評価対象システム７００の全体構成の一例を示す図である。
評価対象システム７００は、可用性評価装置１００が評価の対象とするシステムである。評価対象システム７００は、設計対象システムをモデル化したものであり、システムモデル設計装置８１０が生成したシステムモデルによって表わされる。この段階において、設計対象システムは、設計段階であり、実在している必要はない。
評価対象システム７００は、例えば、２つのセンサ７０１，７０２、センサ処理プログラム７０３、制御処理プログラム７０４、監視処理プログラム７０５、駆動処理プログラム７０６、アクチュエータ７０７など１以上の構成要素により構成される。構成要素とは、それぞれが独立して動作する装置・部品・プログラムなどである。構成要素は、互いに情報をやり取りすることにより連携して動作し、全体として１つのシステムを構成する。構成要素は、センサ７０１，７０２やアクチュエータ７０７のようなハードウェア要素であってもよいし、センサ処理プログラム７０３のようなソフトウェア要素であってもよい。
【００１２】
図３は、この実施の形態における可用性評価装置１００の外観の一例を示す斜視図である。
可用性評価装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。
【００１３】
図４は、この実施の形態における可用性評価装置１００のハードウェア資源の一例を示す図である。
可用性評価装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信装置９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信装置９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００１４】
通信装置９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信装置９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０或いはＩＳＤＮ等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００１５】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１６】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００１７】
図５は、この実施の形態における可用性評価装置１００の機能ブロックの構成の一例を示すブロック構成図である。
可用性評価装置１００は、動作モデル記憶部１１０、入力イベント記憶部１２１、キューモデル記憶部１２２、順序条件記憶部１２３、処理時間条件記憶部１２４、障害検出条件記憶部１２５、模擬実行部１３０、障害発生判定部１４１、復旧判定部１４２、動作時間算出部１４３、修復時間算出部１４４、動作時間記憶部１４５、修復時間記憶部１４６、平均動作時間算出部１４７、平均修復時間算出部１４８、可用性算出部１４９、処理時間違反判定部１５１、処理時間違反記憶部１５２、機能制約違反記憶部１５３、評価結果出力部１５４を有する。
【００１８】
動作モデル記憶部１１０は、磁気ディスク装置９２０を用いて、動作モデルを記憶する。動作モデルは、システムモデル設計装置８１０が生成したシステムモデルの動作を表わす。システムモデルの動作は、例えば、構成要素の状態遷移によって表わされる。すなわち、評価対象システム７００を構成する各構成要素は、１以上の状態を有する。各構成要素の状態は、何らかの条件を満たすことにより遷移する。各構成要素は、状態の遷移の際、何らかのアクションを実行する。
動作モデル記憶部１１０が記憶する動作モデルには、例えば、アクションを実行する条件（実行条件）、アクションの実行にかかる時間（実行時間）、アクションを実行した結果（実行結果）などを表わすデータが含まれる。
動作モデル記憶部１１０は、構成要素記憶部１１１、状態記憶部１１２、アクション記憶部１１３、イベント記憶部１１４、実行条件記憶部１１５、状態遷移記憶部１１６を有する。
【００１９】
構成要素記憶部１１１は、磁気ディスク装置９２０を用いて、構成要素データを記憶する。構成要素データは、評価対象システム７００を構成する各構成要素を表わす。構成要素データは、１以上の構成要素それぞれについて、例えば、その構成要素の名前、その構成要素の初期状態などを表わす。
【００２０】
状態記憶部１１２は、磁気ディスク装置９２０を用いて、状態データを記憶する。状態データは、評価対象システム７００を構成する各構成要素が取り得る状態を表わす。それぞれの構成要素は、１以上の状態を取り得る。状態データは、１以上の状態それぞれについて、例えば、その状態の名前、その状態を取る構成要素などを表わす。
【００２１】
アクション記憶部１１３は、磁気ディスク装置９２０を用いて、アクションデータを記憶する。アクションデータは、評価対象システム７００を構成する各構成要素が実行するアクションを表わす。それぞれの構成要素は、１以上のアクションを実行する。アクションデータは、１以上のアクションそれぞれについて、例えば、そのアクションの名前、そのアクションを実行する構成要素、そのアクションを実行するのにかかる時間（実行時間）、そのアクションの内容（実行結果）などを表わす。
【００２２】
イベント記憶部１１４は、磁気ディスク装置９２０を用いて、イベントデータを記憶する。イベントデータは、評価対象システム７００に発生するイベントを表わす。イベントは、例えば、構成要素がアクションを実行することにより発生する。構成要素は、例えば、発生したイベントを取得することにより、アクションを実行する。このように、各構成要素は、イベントを介して、情報のやり取りをする。イベントは、パラメータを有していてもよい。各構成要素は、イベントのパラメータを介して、更に詳細な情報のやり取りをする。イベントデータは、１以上のイベントそれぞれについて、そのイベントの名前、そのイベントを発生させる構成要素、そのイベントを発生させるアクション（実行結果）などを表わす。
【００２３】
実行条件記憶部１１５は、磁気ディスク装置９２０を用いて、実行条件データを記憶する。実行条件データは、評価対象システム７００を構成する各構成要素が各アクションを実行する条件（実行条件）を表わす。実行条件は、例えば、状態とイベントとからなり、その構成要素の状態がその状態のときにそのイベントを取得することが、そのアクションを実行する条件であることを表わす。また、イベントがパラメータを有する場合、実行条件は、そのイベントのパラメータが満たすべき条件（パラメータ条件）を含む構成であってもよい。その場合、その構成要素の状態がその状態のときに、そのパラメータ条件を満たすイベントを取得することが、そのアクションを実行する条件であることを表わす。
【００２４】
状態遷移記憶部１１６は、磁気ディスク装置９２０を用いて、状態遷移データを記憶する。状態遷移データは、実行条件を満たした場合に各構成要素が実行するアクションや、そのアクションの実行後の動作などを表わす。構成要素は、実行条件を満たした場合、１つのアクションを実行してもよいし、複数のアクションを続けて実行してもよい。いずれの場合も、構成要素は、アクションの実行が終わったのち、元の状態あるいは別の状態に遷移する。また、構成要素は、実行条件を満たした場合、アクションを実行せずに、別の状態に遷移するだけであってもよい。状態遷移データは、構成要素が、あるアクションを実行したのちに実行する別のアクションや遷移する状態（実行結果）などを表わす。
【００２５】
入力イベント記憶部１２１は、磁気ディスク装置９２０を用いて、入力イベントデータを記憶する。入力イベントデータは、外部から入力するイベント（入力イベント）を表わす。すなわち、入力イベントデータが表わすイベントは、評価対象システム７００を構成する構成要素がアクションを実行することにより発生するイベントではなく、何らかの外的な要因に基づいて発生するイベントである。これにより、評価対象システム７００に対する外部からの入力を模擬する。入力イベントデータは、例えば、イベントと、そのイベントが発生する時刻とを表わす。あるいは、入力イベントデータは、イベントと、そのイベントが発生する確率や条件を表わすものであってもよい。
【００２６】
キューモデル記憶部１２２は、磁気ディスク装置９２０を用いて、キューモデルデータを記憶する。キューモデルデータは、評価対象システム７００を構成する各構成要素のイベントキューの構成を表わす。イベントキューの構成とは、その構成要素が複数のイベントを取得した場合の処理手順である。例えば、構成要素がアクションを実行中にイベントを取得した場合、アクションの実行が終わって構成要素ががいずれかの状態に遷移するまで、そのイベントは処理されない。まだ処理されないイベントが残っているとき、構成要素が更に別のイベントを取得すると、構成要素がいずれかの状態に遷移したとき、どちらのイベントを先に処理するかを決定する必要がある。イベントキューの構成には、例えば、先入れ先出し（ＦＩＦＯ）、先入れ後出し（ＦＩＬＯ）、優先付きキュー（ＰＱ）、重み付きキュー（ＷＦＱ）などがある。ＦＩＦＯとは、イベントを取得した順番にしたがって先に取得したイベントを先に処理する処理手順である。ＦＩＬＯとは、ＦＩＦＯとは逆に、新しいイベントのほうを先に処理する処理手順である。ＰＱとは、イベントに優先度を設け、優先度の高いイベントから先に処理する処理手順である。ＷＦＱとは、ＰＱと同様、イベントに優先度を設け、優先度の高いイベントを優先的に処理するが、例えば、優先度の高いイベントを２つ処理したら次は優先度の低いイベントを処理するなど、優先度の高いイベントが残っていても優先度の低いイベントの処理をする処理手順である。
【００２７】
順序条件記憶部１２３は、磁気ディスク装置９２０を用いて、順序条件データを記憶する。順序条件データは、評価対象システム７００を構成する各構成要素が処理するイベントの順序に関する条件（順序条件）を表わす。各構成要素は、あらかじめ想定された順序でイベントを処理するよう設計されているため、想定外の順序でイベントを取得した場合、そのイベントを処理できない。順序条件は、構成要素がイベントを取得した順序が想定内であるか否かを判定するための条件である。順序条件に対する違反を検出することにより、構成要素が想定外の順序でイベントを取得したことを検出することができる。これにより、評価対象システム７００の評価が所期の水準に達しない場合、その原因を突き止めることができる。
【００２８】
処理時間条件記憶部１２４は、磁気ディスク装置９２０を用いて、処理時間条件データを記憶する。処理時間条件データは、評価対象システム７００において発生する２つのイベントの間隔に関する条件（処理時間条件）を表わす。あるイベントが発生すると、そのイベントを処理する構成要素がアクションを実行し、別のイベントを発生させる。したがって、この２つのイベントの間隔は、そのイベントの処理にかかった時間を意味する。また、その構成要素が発生させたイベントに対して、別の構成要素がアクションを実行し、更に別のイベントを発生させる。したがって、最初のイベントと最後のイベントとの間隔は、最初のイベントに起因する一連の処理にかかった時間を意味する。このように、イベントの発生間隔から、イベントの処理にかかった時間を知ることができる。処理時間条件は、例えば、イベントの処理にかかる時間として想定される時間の上限や下限、その平均値の上限や下限、標準偏差の上限、確率分布などである。処理時間条件に対する違反を検出することにより、イベントの処理に想定外の時間がかかっていることを検出することができる。これにより、評価対象システム７００の評価が所期の水準に達しない場合、その原因を突き止めることができる。
【００２９】
障害検出条件記憶部１２５は、磁気ディスク装置９２０を用いて、障害検出条件データを記憶する。障害検出条件データは、評価対象システム７００が正常に動作しているか、障害が発生しているかを判定するための条件（障害検出条件）を表わす。例えば、制御システムにおける制御イベントのように、周期的に発生させることが予定されているイベントがある場合、そのイベントの発生間隔が所定の間隔より長くなった場合に、評価対象システム７００に障害が発生していると判定する。逆に、そのイベントの発生間隔が所定の間隔より短ければ、評価対象システム７００が正常に動作していると判定する。また、入力に対して何らかの応答をするシステムのように、入力イベントの発生から所定の時間以内に応答イベントを発生させることが予定されている場合、入力イベントと応答イベントとの間隔が所定の間隔より長い場合に、評価対象システム７００に障害が発生していると判定する。障害検出条件は、例えば、２つのイベントの間隔として予定される時間の範囲を表わす。
【００３０】
模擬実行部１３０は、動作モデル記憶部１１０が記憶した動作モデルに基づいて、ＣＰＵ９１１を用いて、評価対象システム７００の動作（システム動作）を模擬する。
模擬実行部１３０は、状態模擬記憶部１３１、実行条件判定部１３２、状態遷移模擬部１３３、アクション模擬部１３４、イベント模擬部１３５、キュー模擬部１３６を有する。
【００３１】
状態模擬記憶部１３１は、模擬実行部１３０が模擬している評価対象システム７００の各構成要素について、ＲＡＭ９１４を用いて、その構成要素のその時点における状態を表わすデータ（以下「状態模擬データ」と呼ぶ。）を記憶する。状態模擬記憶部１３１は、例えば、状態記憶部１１２が記憶した状態データに基づいて、状態模擬データを記憶する。
【００３２】
実行条件判定部１３２は、模擬実行部１３０が模擬している評価対象システム７００の各構成要素について、ＣＰＵ９１１を用いて、その構成要素がアクションを実行する条件が満たされているか否かを判定する。実行条件判定部１３２は、例えば、状態模擬記憶部１３１が記憶した状態模擬データと、後述する順序条件違反判定部１３７が順序条件に違反していないと判定したイベントとに基づいて、実行条件記憶部１１５が記憶した実行条件データが表わす実行条件が満たされているか否かを判定する。実行条件判定部１３２は、ＣＰＵ９１１を用いて、判定した結果を表わすデータを出力する。
また、実行条件にパラメータ条件が含まれている場合、他の条件を満たしているにもかかわらず、パラメータ条件に対する違反があるために、実行条件を満たさないと実行条件判定部１３２が判定する場合がある。その場合、実行条件判定部１３２は、そのことを表わすデータを出力する。
【００３３】
状態遷移模擬部１３３は、ＣＰＵ９１１を用いて、実行条件判定部１３２が出力したデータを入力し、実行条件判定部１３２の判定結果を取得する。実行条件が満たされていると実行条件判定部１３２が判定した場合、状態遷移模擬部１３３は、ＣＰＵ９１１を用いて、その構成要素が実行するアクションと、その構成要素の状態を遷移させる遷移先の状態とを判定する。状態遷移模擬部１３３は、例えば、構成要素記憶部１１１が記憶した構成要素データと、状態遷移記憶部１１６が記憶した状態遷移データと、実行条件判定部１３２が出力したデータとに基づいて、構成要素が実行するアクションと、遷移先の状態とを判定する。状態遷移模擬部１３３は、ＣＰＵ９１１を用いて、判定した結果を表わすデータを出力する。
状態模擬記憶部１３１は、ＣＰＵ９１１を用いて、状態遷移模擬部１３３が出力したデータを入力し、状態遷移模擬部１３３が判定した遷移先の状態を取得する。状態模擬記憶部１３１は、ＲＡＭ９１４を用いて、取得した遷移先の状態を、その構成要素の状態として記憶する。
【００３４】
アクション模擬部１３４は、ＣＰＵ９１１を用いて、状態遷移模擬部１３３が出力したデータを入力し、状態遷移模擬部１３３が判定したアクションを取得する。アクション模擬部１３４は、ＣＰＵ９１１を用いて、その構成要素が実行するアクションを模擬する。アクション模擬部１３４は、例えば、アクション記憶部１１３が記憶したアクションデータに基づいて、構成要素が実行するアクションを模擬する。アクション模擬部１３４は、ＣＰＵ９１１を用いて、アクションを実行した結果を表わすデータを出力する。
【００３５】
イベント模擬部１３５は、ＣＰＵ９１１を用いて、イベントの発生を模擬する。イベント模擬部１３５は、例えば、イベント記憶部１１４が記憶したイベントデータと、入力イベント記憶部１２１が記憶した入力イベントデータと、アクション模擬部１３４が出力したデータとに基づいて、アクションを実行した結果として発生するイベントや、外部から入力するイベントを発生させる。イベント模擬部１３５は、ＣＰＵ９１１を用いて、発生させたイベントを表わすデータを出力する。
【００３６】
キュー模擬部１３６は、ＣＰＵ９１１を用いて、イベントキューを模擬する。キュー模擬部１３６は、ＣＰＵ９１１を用いて、イベント模擬部１３５が出力したデータを入力し、イベント模擬部１３５が発生させたイベントを取得する。キュー模擬部１３６は、そのイベントを取得する構成要素ごとに、ＲＡＭ９１４を用いて、取得したイベントを記憶する。キュー模擬部１３６は、順序条件違反判定部１３７からイベント取り出しの要求を受け、キューモデル記憶部１２２が記憶したキューモデルデータが表わすイベントの処理手順にしたがった順序で、ＣＰＵ９１１を用いて、記憶したイベントを取り出す。
【００３７】
順序条件違反判定部１３７は、ＣＰＵ９１１を用いて、キュー模擬部１３６が記憶したイベントを取り出す。順序条件違反判定部１３７は、取り出したイベントに基づいて、ＣＰＵ９１１を用いて、順序条件記憶部１２３が記憶した順序条件データが表わす順序条件に対する違反があるか否かを判定する。順序条件違反判定部１３７は、ＣＰＵ９１１を用いて、取り出したイベントと、判定した結果とを表わすデータを出力する。
実行条件判定部１３２は、ＣＰＵ９１１を用いて、順序条件違反判定部１３７が出力したデータを入力し、順序条件違反判定部１３７がキュー模擬部１３６から取り出したイベントと、順序条件違反判定部１３７の判定結果とを取得する。順序条件に対する違反がないと順序条件違反判定部１３７が判定した場合、実行条件判定部１３２は、取得したイベントに基づいて、実行条件が満たされているか否かを判定する。
【００３８】
障害発生判定部１４１は、ＣＰＵ９１１を用いて、イベント模擬部１３５が出力したデータを入力し、イベント模擬部１３５が発生させたイベントを取得する。障害発生判定部１４１は、取得したイベントと、障害検出条件記憶部１２５が記憶した障害検出条件データが表わす障害検出条件とに基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬している評価対象システム７００に障害が発生したか否かを判定する。障害発生判定部１４１は、判定した結果に基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬している評価対象システム７００に障害が発生した時刻を判定する。障害発生判定部１４１は、ＣＰＵ９１１を用いて、判定した結果を表わすデータを出力する。
【００３９】
復旧判定部１４２は、ＣＰＵ９１１を用いて、イベント模擬部１３５が出力したデータを入力し、イベント模擬部１３５が発生させたイベントを取得する。復旧判定部１４２は、取得したイベントと、障害検出条件記憶部１２５が記憶した障害検出条件データが表わす障害検出条件とに基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬している評価対象システム７００が障害から復旧して正常に動作しているか否かを判定する。障害発生判定部１４１は、判定した結果に基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬している評価対象システム７００が障害から復旧した時刻を判定する。復旧判定部１４２は、ＣＰＵ９１１を用いて、判定した結果を表わすデータを出力する。
【００４０】
動作時間算出部１４３は、ＣＰＵ９１１を用いて、障害発生判定部１４１が出力したデータと、復旧判定部１４２が出力したデータとを入力し、模擬実行部１３０が模擬している評価対象システム７００に障害が発生した時刻と、障害から復旧した時刻とを取得する。動作時間算出部１４３は、取得した時刻に基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬している評価対象システム７００の動作時間を算出する。動作時間とは、評価対象システム７００が正常に動作を始めてから、評価対象システム７００に障害が発生するまで、評価対象システム７００が連続して正常に動作していた時間である。模擬実行部１３０が模擬している評価対象システム７００に障害が発生するたび、動作時間算出部１４３は、動作時間を算出する。動作時間算出部１４３は、ＣＰＵ９１１を用いて、算出した動作時間を表わすデータを出力する。
【００４１】
動作時間記憶部１４５は、ＣＰＵ９１１を用いて、動作時間算出部１４３が出力したデータを入力する。動作時間記憶部１４５は、磁気ディスク装置９２０を用いて、入力したデータを記憶する。動作時間記憶部１４５は、模擬実行部１３０が評価対象システム７００の模擬を開始してから終了するまでの間に動作時間算出部１４３が算出した動作時間を表わすデータをすべて蓄積して記憶する。
【００４２】
平均動作時間算出部１４７は、ＣＰＵ９１１を用いて、動作時間記憶部１４５が記憶したデータを入力し、模擬実行部１３０が模擬した評価対象システム７００の動作時間をすべて取得する。平均動作時間算出部１４７は、取得した動作時間に基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬した評価対象システム７００の平均動作時間を算出する。平均動作時間とは、模擬実行部１３０が評価対象システム７００の模擬を開始してから終了するまでの間におけるすべての動作時間の平均値である。平均動作時間算出部１４７は、ＣＰＵ９１１を用いて、算出した平均動作時間を表わすデータを出力する。
【００４３】
修復時間算出部１４４は、ＣＰＵ９１１を用いて、障害発生判定部１４１が出力したデータと、復旧判定部１４２が出力したデータとを入力し、模擬実行部１３０が模擬している評価対象システム７００に障害が発生した時刻と、障害から復旧した時刻とを取得する。修復時間算出部１４４は、取得した時刻に基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬している評価対象システム７００の修復時間を算出する。修復時間とは、評価対象システム７００に障害が発生してから、評価対象システム７００が障害から復旧して正常に動作を開始するまで、評価対象システム７００が正常に動作していなかった時間である。模擬実行部１３０が模擬している評価対象システム７００が障害から復旧するたび、修復時間算出部１４４は、修復時間を算出する。修復時間算出部１４４は、ＣＰＵ９１１を用いて、算出した修復時間を表わすデータを出力する。
【００４４】
修復時間記憶部１４６は、ＣＰＵ９１１を用いて、修復時間算出部１４４が出力したデータを入力する。修復時間記憶部１４６は、磁気ディスク装置９２０を用いて、入力したデータを記憶する。修復時間記憶部１４６は、模擬実行部１３０が評価対象システム７００の模擬を開始してから終了するまでの間に修復時間算出部１４４が算出した修復時間を表わすデータをすべて蓄積して記憶する。
【００４５】
平均修復時間算出部１４８は、ＣＰＵ９１１を用いて、修復時間記憶部１４６が記憶したデータを入力し、模擬実行部１３０が模擬した修復時間をすべて取得する。平均修復時間算出部１４８は、取得した修復時間に基づいて、ＣＰＵ９１１を用いて、模擬実行部１３０が模擬した評価対象システム７００の平均修復時間を算出する。平均修復時間とは、模擬実行部１３０が評価対象システム７００の模擬を開始してから終了するまでの間におけるすべての修復時間の平均値である。平均修復時間算出部１４８は、ＣＰＵ９１１を用いて、算出した平均修復時間を表わすデータを出力する。
【００４６】
可用性算出部１４９は、ＣＰＵ９１１を用いて、平均動作時間算出部１４７が出力したデータと、平均修復時間算出部１４８が出力したデータとを入力し、平均動作時間と平均修復時間とを取得する。可用性算出部１４９は、取得した平均動作時間と平均修復時間とに基づいて、ＣＰＵ９１１を用いて、可用性評価値を算出する。可用性評価値とは、模擬実行部１３０が模擬した評価対象システム７００が正常に動作している時間の割合を表わす数値である。例えば、可用性算出部１４９は、ＣＰＵ９１１を用いて、平均動作時間と平均修復時間との和を算出し、算出した和で平均動作時間を割った商を算出し、算出した商を可用性評価値とする。可用性算出部１４９は、ＣＰＵ９１１を用いて、算出した可用性評価値を表わすデータを出力する。
なお、可用性算出部１４９は、可用性評価値として、例えば、総動作時間を総模擬時間で割った商を算出する構成であってもよい。ここで、総模擬時間とは、模擬実行部１３０が模擬した評価対象システム７００の時間の総合計であり、総動作時間とは、そのうち、評価対象システム７００が正常に動作していると判定された時間の総合計である。
【００４７】
処理時間違反判定部１５１は、ＣＰＵ９１１を用いて、イベント模擬部１３５が出力したデータを入力し、イベント模擬部１３５が発生させたイベントを取得する。処理時間違反判定部１５１は、取得したイベントに基づいて、ＣＰＵ９１１を用いて、処理時間条件記憶部１２４が記憶した処理時間条件に対する違反があるか否かを判定する。処理時間条件に対する違反があると判定した場合、処理時間違反判定部１５１は、ＣＰＵ９１１を用いて、処理時間条件に対する違反が発生した時刻、処理時間条件に違反したイベントなどを表わすデータを出力する。
【００４８】
処理時間違反記憶部１５２は、ＣＰＵ９１１を用いて、処理時間違反判定部１５１が出力したデータを入力する。処理時間違反記憶部１５２は、磁気ディスク装置９２０を用いて、入力したデータを記憶する。処理時間違反記憶部１５２は、模擬実行部１３０が評価対象システム７００の模擬を開始してから終了するまでの間に処理時間違反判定部１５１が判定した処理時間条件違反に関するデータをすべて蓄積して記憶する。
【００４９】
機能制約違反記憶部１５３は、ＣＰＵ９１１を用いて、順序条件違反判定部１３７が出力したデータを入力し、順序条件違反判定部１３７がキュー模擬部１３６から取り出したイベントと、順序条件違反判定部１３７の判定結果とを取得する。順序条件に対する違反があると順序条件違反判定部１３７が判定した場合、機能制約違反記憶部１５３は、磁気ディスク装置９２０を用いて、順序条件に対する違反が発生した時刻、取得したイベントなどを表わすデータを記憶する。
また、機能制約違反記憶部１５３は、ＣＰＵ９１１を用いて、実行条件判定部１３２が出力したデータを入力し、実行条件判定部１３２の判定結果を取得する。パラメータ条件に対する違反があると実行条件判定部１３２が判定した場合、機能制約違反記憶部１５３は、磁気ディスク装置９２０を用いて、パラメータ条件に対する違反が発生した時刻、パラメータ条件に違反するイベントなどを表わすデータを記憶する。
機能制約違反記憶部１５３は、模擬実行部１３０が評価対象システム７００の模擬を開始してから終了するまでの間に順序条件違反判定部１３７が判定した順序条件違反や実行条件判定部１３２が判定したパラメータ条件違反に関するデータをすべて蓄積して記憶する。
【００５０】
評価結果出力部１５４は、ＣＰＵ９１１を用いて、可用性算出部１４９が出力したデータと、処理時間違反記憶部１５２が記憶したデータと、機能制約違反記憶部１５３が記憶したデータとを入力し、可用性算出部１４９が算出した可用性評価値と、処理時間違反・順序条件違反・パラメータ条件違反に関する情報とを取得する。評価結果出力部１５４は、ＣＰＵ９１１を用いて、取得した可用性評価値や、処理時間違反・順序条件違反・パラメータ条件違反に関する情報を含む可用性評価結果を外部に出力する。可用性評価結果とは、可用性評価装置１００が評価対象システム７００を評価した結果である。
【００５１】
以下、具体例を用いて説明する。
【００５２】
図６は、評価対象システム７００を構成する各構成要素の状態遷移の一例を示す図である。
上述したように、設計システム８００において、評価対象システム７００の動作は、各構成要素の状態遷移と、構成要素間でやり取りされるイベントとによって表される。
【００５３】
評価対象システム７００を構成する構成要素には、図２に示したように、センサ７０１，７０２、センサ処理プログラム７０３、制御処理プログラム７０４、監視処理プログラム７０５、駆動処理プログラム７０６、アクチュエータ７０７があるものとする。
センサ７０１は、３つの状態（センサ動作状態７１１・センサ故障状態７１２・センサ待機状態７１３）を有し、３つのアクション（初期化アクション７３１・観測アクション７３２・修理アクション７３３）を実行する。
センサ７０２も同様に、３つの状態（センサ動作状態７１４・センサ故障状態７１５・センサ待機状態７１６）を有し、３つのアクション（初期化アクション７３４・観測アクション７３５・修理アクション７３６）を実行する。
センサ処理プログラム７０３は、２つの状態（観測待ち状態７１７，７１８）を有し、４つのアクション（センサ処理アクション７３７，７３９、切替アクション７３８，７４１）を実行する。
制御処理プログラム７０４は、１つの状態（制御状態７１９）を有し、２つのアクション（制御アクション７４２、応答アクション７４３）を実行する。
監視処理プログラム７０５は、２つの状態（監視状態７２１、応答待ち状態７２２）を有し、２つのアクション（報告要求アクション７４４、応答処理アクション７４５）を実行する。
駆動処理プログラム７０６は、１つの状態（制御待ち状態７２３）を有し、１つのアクション（駆動アクション７４６）を実行する。
アクチュエータ７０７は、１つの状態（駆動待ち状態７２４）を有し、１つのアクション（動作アクション７４７）を実行する。
【００５４】
観測結果イベント７５１は、センサ７０１で発生し、センサ処理プログラム７０３の動作に影響する。観測結果イベント７５２は、センサ７０２で発生し、センサ処理プログラム７０３の動作に影響する。切替イベント７５３，７５４は、センサ処理プログラム７０３で発生し、センサ７０１，７０２の動作に影響する。処理結果イベント７５５は、センサ処理プログラム７０３で発生し、制御処理プログラム７０４の動作に影響する。報告要求イベント７５６は、監視処理プログラム７０５で発生し、制御処理プログラム７０４の動作に影響する。応答イベント７５７は、制御処理プログラム７０４で発生し、監視処理プログラム７０５の動作に影響する。制御指示イベント７５８は、制御処理プログラム７０４で発生し、駆動処理プログラム７０６の動作に影響する。駆動イベント７５９は、駆動処理プログラム７０６で発生し、アクチュエータ７０７の動作に影響する。
【００５５】
状態遷移条件７７１〜７９１は、それぞれの構成要素がそれぞれの状態のときそれぞれのイベントを取得すると、アクションの実行や状態の遷移をすることを表わす。
【００５６】
例えば、センサ７０１は、動作開始時に初期化アクション７３１と観測アクション７３２とを実行し、センサ動作状態７１１に遷移する。センサ７０１は、センサ動作状態７１１で時間経過イベントを取得すると、観測アクション７３２を実行してセンサ動作状態７１１に戻る。また、センサ７０１は、センサ動作状態７１１で故障イベントを取得すると、アクションを実行せずにセンサ故障状態７１２に遷移する。センサ７０１は、センサ故障状態７１２で切替イベント７５３を取得すると、修理アクション７３３を実行してセンサ待機状態７１３に遷移する。センサ７０１は、センサ待機状態７１３で切替イベント７５４を取得すると、最初に戻り、初期化アクション７３１と観測アクション７３２とを実行してセンサ動作状態７１１に遷移する。
【００５７】
次に、この具体例における評価対象システム７００の動作が、動作モデル記憶部１１０が記憶する動作モデルにおいてどのように表されるかを説明する。なお、以下に説明する具体例における動作モデルの表現形式は一例であり、動作モデル記憶部１１０は、他の表現形式によって表わされる動作モデルを記憶する構成であってもよい。
【００５８】
図７は、この実施の形態における構成要素データ６１０の一例を示す図である。
構成要素記憶部１１１が記憶する構成要素データ６１０は、構成要素ＩＤ６１１、構成要素名６１２、初期動作ＩＤ６１３を含む。１つの構成要素は、一組の構成要素ＩＤ６１１・構成要素名６１２・初期動作ＩＤ６１３によって表わされる。構成要素データ６１０は、構成要素ＩＤ６１１・構成要素名６１２・初期動作ＩＤ６１３の組を、評価対象システム７００を構成する構成要素の数と同じ数含む。
構成要素ＩＤ６１１は、その構成要素を一意に識別するための文字列データである。構成要素名６１２は、その構成要素の名前を表わす文字列データである。初期動作ＩＤ６１３は、その構成要素が最初に実行するアクションを表わす文字列データである。初期動作ＩＤ６１３は、後述する状態ＩＤ６１６もしくは状態遷移ＩＤ６４７のいずれかと一致している。初期動作ＩＤ６１３が状態ＩＤ６１６と一致している場合、その構成要素は、最初にアクションを実行せず、一致する状態ＩＤ６１６が表わす状態に遷移することを表わす。初期動作ＩＤ６１３が状態遷移ＩＤ６４７と一致している場合、その構成要素は、一致する状態遷移ＩＤ６４７が表わす１以上のアクションを最初に実行することを表わす。
【００５９】
図８は、この実施の形態における状態データ６１５の一例を示す図である。
状態記憶部１１２が記憶する状態データ６１５は、状態ＩＤ６１６、状態名６１７、所属要素ＩＤ６１８を含む。１つの状態は、一組の状態ＩＤ６１６・状態名６１７・所属要素ＩＤ６１８によって表わされる。状態データ６１５は、状態ＩＤ６１６・状態名６１７・所属要素ＩＤ６１８の組を、評価対象システム７００を構成する構成要素の状態の数の総合計と同じ数含む。
状態ＩＤ６１６は、その状態を一意に識別するための文字列データである。状態名６１７は、その状態の名前を表わす文字列データである。所属要素ＩＤ６１８は、その状態を有する構成要素を表わす文字列データである。所属要素ＩＤ６１８は、構成要素ＩＤ６１１のいずれかと一致している。所属要素ＩＤ６１８は、一致する構成要素ＩＤ６１１によって識別される構成要素が、その状態を有することを表わす。
【００６０】
図９は、この実施の形態におけるアクションデータ６２０の一例を示す図である。
アクション記憶部１１３が記憶するアクションデータ６２０は、アクションＩＤ６２１、アクション名６２２、実行要素ＩＤ６２３、実行時間６２４、実行内容６２５を含む。１つのアクションは、一組のアクションＩＤ６２１・アクション名６２２・実行要素ＩＤ６２３・実行時間６２４・実行内容６２５によって表わされる。構成要素データ６１０は、アクションＩＤ６２１・アクション名６２２・実行要素ＩＤ６２３・実行時間６２４・実行内容６２５の組を、評価対象システム７００を構成する構成要素が実行するアクションの数の総合計と同じ数含む。
アクションＩＤ６２１は、そのアクションを一意に識別するための文字列データである。アクション名６２２は、そのアクションの名前を表わす文字列データである。実行要素ＩＤ６２３は、そのアクションを実行する構成要素を表わす文字列データである。実行要素ＩＤ６２３は、構成要素ＩＤ６１１のいずれかと一致している。実行要素ＩＤ６２３は、一致する構成要素ＩＤ６１１によって識別される構成要素が、そのアクションを実行することを表わす。実行時間６２４は、そのアクションの実行にかかる実行時間を表わす数値データである。実行時間６２４は、例えば、秒・ミリ秒など実時間を単位とするものであってもよいし、模擬実行部１３０による評価対象システム７００の模擬実行における単位時間を単位とするものであってもよい。実行内容６２５は、そのアクションの実行内容を表わす文字列データである。アクション模擬部１３４は、実行内容６２５に基づいて、構成要素が実行するアクションを模擬する。実行内容６２５は空欄であってもよい。
【００６１】
図１０は、この実施の形態におけるイベントデータ６３０の一例を示す図である。
イベント記憶部１１４が記憶するイベントデータ６３０は、イベントＩＤ６３１、イベント名６３２、発生アクションＩＤ６３３、遅延時間６３４を含む。１つのイベントは、一組のイベントＩＤ６３１・イベント名６３２・発生アクションＩＤ６３３・遅延時間６３４によって表わされる。イベントデータ６３０は、イベントＩＤ６３１・イベント名６３２・発生アクションＩＤ６３３・遅延時間６３４の組を、評価対象システム７００において発生するイベントの総数と同じ数含む。
イベントＩＤ６３１は、そのイベントを一意に識別するための文字列データである。イベント名６３２は、そのイベントの名前を表わす文字列データである。発生アクションＩＤ６３３は、そのイベントを発生させるアクションを表わす文字列データである。発生アクションＩＤ６３３は、アクションＩＤ６２１のいずれかと一致している。発生アクションＩＤ６３３は、一致するアクションＩＤ６２１によって識別されるアクションの実行が終わったのちに、そのイベントが発生することを表わす。遅延時間６３４は、発生アクションＩＤ６３３が表わすアクションの実行が終わってからそのイベントが発生するまでの遅延時間を表わす数値データである。なお、外部から入力するイベントなど、そのイベントを発生させるアクションが存在しない場合、発生アクションＩＤ６３３及び遅延時間６３４は空欄であってもよい。
【００６２】
図１１は、この実施の形態における実行条件データ６４０の一例を示す図である。
実行条件記憶部１１５が記憶する実行条件データ６４０は、実行条件ＩＤ６４１、条件状態ＩＤ６４２、条件イベントＩＤ６４３、遷移先ＩＤ６４４、パラメータ条件６４５を含む。１つの実行条件は、一組の実行条件ＩＤ６４１・条件状態ＩＤ６４２・条件イベントＩＤ６４３・遷移先ＩＤ６４４・パラメータ条件６４５によって表わされる。実行条件データ６４０は、実行条件ＩＤ６４１・条件状態ＩＤ６４２・条件イベントＩＤ６４３・遷移先ＩＤ６４４・パラメータ条件６４５の組を、評価対象システム７００を構成する構成要素がアクションを実行する実行条件の総数と同じ数含む。
実行条件ＩＤ６４１は、その実行条件を一意に識別するための文字列データである。条件状態ＩＤ６４２は、その実行条件のうち、構成要素の状態を表わす文字列データである。条件状態ＩＤ６４２は、状態ＩＤ６１６のいずれかと一致している。条件イベントＩＤ６４３は、その実行条件のうち、構成要素が取得するイベントを表わす文字列データである。条件イベントＩＤ６４３は、イベントＩＤ６３１のいずれかと一致している。条件状態ＩＤ６４２及び条件イベントＩＤ６４３は、構成要素の状態が、条件状態ＩＤ６４２と一致する状態ＩＤ６１６によって識別される状態であり、その構成要素が、条件イベントＩＤ６４３と一致するイベントＩＤ６３１によって識別されるイベントを取得することが、実行条件となることを表わす。遷移先ＩＤ６４４は、その実行条件を満たした場合に実行するアクションを表わす文字列データである。遷移先ＩＤ６４４は、状態ＩＤ６１６もしくは後述する状態遷移ＩＤ６４７のいずれかと一致している。遷移先ＩＤ６４４が状態ＩＤ６１６と一致している場合、その構成要素は、その実行条件が満たされた場合、アクションを実行せず、一致する状態ＩＤ６１６によって識別される状態に遷移することを表わす。遷移先ＩＤ６４４が状態遷移ＩＤ６４７と一致している場合、その構成要素は、その実行条件が満たされた場合、一致する状態遷移ＩＤ６４７によって識別される１以上のアクションを実行することを表わす。パラメータ条件６４５は、その実行条件に含まれるパラメータ条件を表わす文字列データである。その実行条件がパラメータ条件を含まない場合、パラメータ条件６４５は空欄であってもよい。パラメータ条件６４５は空欄でない場合、条件イベントＩＤ６４３と一致するイベントＩＤ６３１によって識別されるイベントのパラメータが、パラメータ条件６４５が表わすパラメータ条件を満たすことが、実行条件となることを表わす。
【００６３】
図１２は、この実施の形態における状態遷移データ６４６の一例を示す図である。
状態遷移記憶部１１６が記憶する状態遷移データ６４６は、状態遷移ＩＤ６４７、実行アクションＩＤ６４８、遷移先ＩＤ６４９を含む。１つの遷移は、一組の状態遷移ＩＤ６４７・実行アクションＩＤ６４８・遷移先ＩＤ６４９によって表わされる。ここでいう遷移には、状態から状態への遷移だけでなく、状態からアクションへの遷移や、アクションから状態への遷移も含む。例えば、状態遷移の途中で２つのアクションを実行する場合、１つの状態遷移は、状態から最初に実行するアクションへの遷移、最初に実行するアクションから次に実行するアクションへの遷移、次に実行するアクションから状態への遷移の３つに分解されて表わされる。
状態遷移ＩＤ６４７は、その遷移を一意に識別するための文字列データである。実行アクションＩＤ６４８は、その遷移によって実行されるアクションを表わす文字列データである。実行アクションＩＤ６４８は、アクションＩＤ６２１のいずれかと一致している。実行アクションＩＤ６４８は、その遷移において、一致するアクションＩＤ６２１によって識別されるアクションを実行することを表わす。遷移先ＩＤ６４９は、実行アクションＩＤ６４８が表わすアクションを実行したのちに遷移する状態あるいはアクションを表わす文字列データである。遷移先ＩＤ６４９は、状態ＩＤ６１６もしくは状態遷移ＩＤ６４７のいずれかと一致している。遷移先ＩＤ６４９が状態ＩＤ６１６と一致している場合、実行アクションＩＤ６４８が表わすアクションを実行したのち、遷移先ＩＤ６４９が一致する状態ＩＤ６１６によって識別される状態へ遷移して、状態遷移が完了することを表わす。遷移先ＩＤ６４９が状態遷移ＩＤ６４７と一致している場合、実行アクションＩＤ６４８が表わすアクションを実行したのち、遷移先ＩＤ６４９と一致する状態遷移ＩＤ６４７によって識別される遷移をして、その実行アクションＩＤ６４８が表わすアクションを実行することを表わす。このように、遷移先ＩＤ６４９が状態ＩＤ６１６のいずれかと一致するまで遷移を辿ることにより、その状態遷移において実行する一連のアクションが表わされる。
【００６４】
図１３は、この実施の形態における入力イベントデータ６５０の一例を示す図である。
入力イベント記憶部１２１が記憶する入力イベントデータ６５０は、入力イベントＩＤ６５１、入力時刻６５２を含む。１つの入力イベントは、一組の入力イベントＩＤ６５１・入力時刻６５２によって表わされる。入力イベントデータ６５０は、入力イベントＩＤ６５１・入力時刻６５２の組を、評価対象システム７００が外部から入力する入力イベントの総数と同じ数含む。
入力イベントＩＤ６５１（発生イベント）は、外部から入力するイベントを表わす文字列データである。入力イベントＩＤ６５１は、イベントＩＤ６３１のいずれかと一致している。入力イベントＩＤ６５１は、一致するイベントＩＤ６３１によって識別されるイベントを外部から入力することを表わす。入力時刻６５２（発生時刻）は、入力イベントＩＤ６５１が表わすイベントを入力する時刻を表わす数値データである。
【００６５】
図１４は、この実施の形態におけるキューデータ６５５の一例を示す図である。
キューモデル記憶部１２２が記憶するキューモデルデータは、キューデータ６５５と取得イベントデータ６６０とを含む。キューデータ６５５は、評価対象システム７００を構成する各構成要素が有するキューを表わす。構成要素が有するキューが１つの場合、その構成要素が取得するイベントは、ＦＩＦＯやＦＩＬＯなどの処理手順にしたがって処理される。構成要素が有するキューが複数の場合、その構成要素が取得するイベントは、複数のキューのいずれかに分類され、それぞれのキューが有する優先度に応じて、ＰＱやＷＦＱなどの処理手順にしたがって処理される。
キューデータ６５５は、キューＩＤ６５６、取得要素ＩＤ６５７、取得方式６５８、優先度６５９を含む。１つのキューは、一組のキューＩＤ６５６・取得要素ＩＤ６５７・取得方式６５８・優先度６５９によって表わされる。キューデータ６５５は、キューＩＤ６５６・取得要素ＩＤ６５７・取得方式６５８・優先度６５９の組を、評価対象システム７００を構成する各構成要素が有するキューの数の総合計と同じ数含む。
キューＩＤ６５６は、そのキューを一意に識別するための文字列データである。取得要素ＩＤ６５７は、そのキューを有する構成要素を表わす文字列データである。取得要素ＩＤ６５７は、構成要素ＩＤ６１１のいずれかと一致している。取得要素ＩＤ６５７は、一致する構成要素ＩＤ６１１によって識別される構成要素が、そのキューを有することを表わす。取得方式６５８は、そのキューに分類されたイベントの処理手順を表わす文字列データである。優先度６５９は、１つの構成要素が複数のキューを有する場合において、そのキューの優先度を表わす数値データである。１つの構成要素が１つのキューしか有しない場合、優先度６５９は空欄であってもよい。優先度６５９は、例えば、ＰＱにおけるそのキューの優先順位を表わし、優先度６５９の数値が大きいほどそのキューの優先順位が高いことを意味する。あるいは、優先度６５９は、ＷＦＱにおけるそのキューの重み付けを表わす。
【００６６】
図１５は、この実施の形態における取得イベントデータ６６０の一例を示す図である。
取得イベントデータ６６０は、構成要素が取得するイベントを分類するキューを表わす。取得イベントデータ６６０は、取得キューＩＤ６６１、取得イベントＩＤ６６２を含む。取得イベントデータ６６０は、取得キューＩＤ６６１・取得イベントＩＤ６６２の組を、評価対象システム７００を構成する構成要素が取得するイベントの数の総合計と同じ数含む。
取得キューＩＤ６６１は、取得イベントＩＤ６６２が表わすイベントを分類するキューを表わす文字列データである。取得キューＩＤ６６１は、キューＩＤ６５６のいずれかと一致している。取得イベントＩＤ６６２は、取得キューＩＤ６６１が表わすキューに分類されるイベントを表わす文字列データである。取得イベントＩＤ６６２は、イベントＩＤ６３１のいずれかと一致している。取得キューＩＤ６６１・取得イベントＩＤ６６２の組は、取得イベントＩＤ６６２と一致するイベントＩＤ６３１によって識別されるイベントが、取得キューＩＤ６６１と一致するキューＩＤ６５６によって識別されるキューに分類されることを表わす。
【００６７】
図１６は、順序条件の一例を示す図である。
この図において、順序条件は、状態遷移図の形式で表わされている。順序条件は、動作モデルからアクションを取り除き、状態及び状態遷移のみを抽出したものである。
例えば、センサ７０１は、センサ動作状態７１１において、時間経過イベントと故障イベントとを受け付けるが、それ以外のイベントは受け付けない。
【００６８】
図１７は、この実施の形態における順序条件データ６６５の一例を示す図である。
順序条件記憶部１２３が記憶する順序条件データ６６５は、順序条件ＩＤ６６６、条件状態ＩＤ６６７、条件イベントＩＤ６６８、遷移先ＩＤ６６９を含む。１つの順序条件は、一組の順序条件ＩＤ６６６・条件状態ＩＤ６６７・条件イベントＩＤ６６８・遷移先ＩＤ６６９によって表わされる。順序条件違反判定部１３７は、構成要素が取得したイベントがいずれかの順序条件に当てはまる場合、そのイベントが順序条件を満たすと判定し、構成要素が取得したイベントがいずれかの順序条件にも当てはまらない場合、そのイベントが順序条件違反であると判定する。
順序条件ＩＤ６６６は、その順序条件を一意に識別するための文字列データである。条件状態ＩＤ６６７は、その順序条件のうち、構成要素の状態を表わす文字列データである。条件状態ＩＤ６６７は、構成要素ＩＤ６１１のいずれかと一致している。条件イベントＩＤ６６８は、その順序条件のうち、構成要素が取得するイベントを表わす文字列データである。条件イベントＩＤ６６８は、イベントＩＤ６３１のいずれかと一致している。遷移先ＩＤ６６９は、その順序条件を満たした場合に構成要素が遷移する遷移先の状態を表わす。遷移先ＩＤ６６９は、構成要素ＩＤ６１１のいずれかと一致している。条件状態ＩＤ６６７・条件イベントＩＤ６６８・遷移先ＩＤ６６９は、構成要素の状態が、条件状態ＩＤ６６７と一致する構成要素ＩＤ６１１によって識別される状態であり、その構成要素が、条件イベントＩＤ６６８と一致するイベントＩＤ６３１によって識別されるイベントを取得した場合に、遷移先ＩＤ６６９と一致する構成要素ＩＤ６１１によって識別される状態へ遷移することを表わす。
【００６９】
図１８は、この実施の形態における処理時間条件データ６７０の一例を示す図である。
処理時間条件記憶部１２４が記憶する処理時間条件データ６７０は、処理時間条件ＩＤ６７１、先行イベントＩＤ６７２、後続イベントＩＤ６７３、間隔下限６７４、間隔上限６７５を含む。１つの処理時間条件は、一組の処理時間条件ＩＤ６７１・先行イベントＩＤ６７２・後続イベントＩＤ６７３・間隔下限６７４・間隔上限６７５によって表わされる。処理時間条件データ６７０は、処理時間条件ＩＤ６７１・先行イベントＩＤ６７２・後続イベントＩＤ６７３・間隔下限６７４・間隔上限６７５の組を、評価対象システム７００に設定する処理時間条件の数と同じ数含む。
処理時間条件ＩＤ６７１は、処理時間条件を一意に識別するための文字列データである。先行イベントＩＤ６７２は、第一のイベントを表わす文字列データである。後続イベントＩＤ６７３は、第二のイベントを表わす文字列データである。先行イベントＩＤ６７２及び後続イベントＩＤ６７３は、イベントＩＤ６３１のいずれかと一致している。先行イベントＩＤ６７２及び後続イベントＩＤ６７３は、その処理時間条件が、先行イベントＩＤ６７２と一致するイベントＩＤ６３１によって識別されるイベントの発生から、後続イベントＩＤ６７３と一致するイベントＩＤ６３１によって識別されるイベントの発生までの間隔についての条件であることを表わす。なお、先行イベントＩＤ６７２と後続イベントＩＤ６７３とは、同じであってもよい。間隔下限６７４は、２つのイベントの発生間隔の下限を表わす数値データである。間隔上限６７５は、２つのイベントの発生間隔の上限を表わす数値データである。処理時間違反判定部１５１は、先行イベントＩＤ６７２が表わすイベントの発生から後続イベントＩＤ６７３が表わすイベントの発生までの間隔が、間隔下限６７４が表わす間隔より短い場合や、間隔上限６７５が表わす間隔より長い場合に、処理時間違反であると判定する。なお、間隔下限６７４または間隔上限６７５を設定しない場合は、間隔下限６７４または間隔上限６７５は空欄であってもよい。
【００７０】
図１９は、この実施の形態における障害検出条件データ６８０の一例を示す図である。
障害検出条件記憶部１２５が記憶する障害検出条件データ６８０は、障害検出条件ＩＤ６８１、先行イベントＩＤ６８２、後続イベントＩＤ６８３、間隔下限６８４、間隔上限６８５を含む。１つの障害検出条件は、一組の障害検出条件ＩＤ６８１・先行イベントＩＤ６８２・後続イベントＩＤ６８３・間隔下限６８４・間隔上限６８５によって表わされる。障害検出条件データ６８０は、障害検出条件ＩＤ６８１・先行イベントＩＤ６８２・後続イベントＩＤ６８３・間隔下限６８４・間隔上限６８５の組を、評価対象システム７００に設定する障害検出条件の数と同じ数含む。
障害検出条件ＩＤ６８１は、障害検出条件を一意に識別するための文字列データである。先行イベントＩＤ６８２は、第一のイベントを表わす文字列データである。後続イベントＩＤ６８３は、第二のイベントを表わす文字列データである。先行イベントＩＤ６８２及び後続イベントＩＤ６８３は、イベントＩＤ６３１のいずれかと一致している。先行イベントＩＤ６８２及び後続イベントＩＤ６８３は、その障害検出条件が、先行イベントＩＤ６８２と一致するイベントＩＤ６３１によって識別されるイベントの発生から、後続イベントＩＤ６８３と一致するイベントＩＤ６３１によって識別されるイベントの発生までの間隔についての条件であることを表わす。なお、先行イベントＩＤ６８２と後続イベントＩＤ６８３とは、同じであってもよい。間隔下限６８４は、２つのイベントの発生間隔の下限を表わす数値データである。間隔上限６８５は、２つのイベントの発生間隔の上限を表わす数値データである。障害発生判定部１４１は、先行イベントＩＤ６８２が表わすイベントが発生したのち間隔下限６８４が表わす時間が経過する前に、後続イベントＩＤ６８３が表わすイベントが発生した場合、評価対象システム７００に障害が発生したと判定する。また、障害発生判定部１４１は、先行イベントＩＤ６８２が表わすイベントが発生したのち間隔上限６８５が表わす時間が経過しても、後続イベントＩＤ６８３が表わすイベントが発生しない場合、評価対象システム７００に障害が発生したと判定する。復旧判定部１４２は、先行イベントＩＤ６８２が表わすイベントが発生し、間隔上限６８５が表わす時間が経過したのちに、後続イベントＩＤ６８３が表わすイベントが発生した場合、評価対象システム７００が障害から復旧したと判定する。なお、間隔下限６８４または間隔上限６８５を設定しない場合は、間隔下限６８４または間隔上限６８５は空欄であってもよい。
【００７１】
図２０は、この実施の形態における可用性評価処理Ｓ３００の流れの一例を示すフローチャート図である。
可用性評価処理Ｓ３００において、可用性評価装置１００は、評価対象システム７００の可用性を評価する。可用性評価処理Ｓ３００は、初期化工程Ｓ３０１、模擬実行処理Ｓ３１０、可用性算出処理Ｓ３７０、評価結果出力工程Ｓ３０４を有する。
【００７２】
初期化工程Ｓ３０１において、可用性評価装置１００は、ＣＰＵ９１１を用いて、評価対象システム７００を評価するための準備をする。例えば、可用性評価装置１００は、システムモデル設計装置８１０が生成したシステムモデルを入力し、動作モデル記憶部１１０・入力イベント記憶部１２１・キューモデル記憶部１２２・順序条件記憶部１２３・処理時間条件記憶部１２４・障害検出条件記憶部１２５が、それぞれ、動作モデル・入力イベントデータ６５０・キューモデルデータ・順序条件データ６６５・処理時間条件データ６７０・障害検出条件データ６８０を記憶する。また、動作時間記憶部１４５・修復時間記憶部１４６・処理時間違反記憶部１５２・機能制約違反記憶部１５３は、記憶した内容を初期化して消去する。
【００７３】
模擬実行処理Ｓ３１０において、模擬実行部１３０は、ＣＰＵ９１１を用いて、評価対象システム７００の動作を模擬する。模擬実行部１３０が模擬した結果に基づいて、順序条件違反判定部１３７・処理時間違反判定部１５１が、それぞれ、順序条件違反・処理時間違反を判定する。
【００７４】
可用性算出処理Ｓ３７０において、可用性評価装置１００は、ＣＰＵ９１１を用いて、可用性評価値を算出する。
【００７５】
評価結果出力工程Ｓ３０４において、可用性算出部１４９は、ＣＰＵ９１１を用いて、可用性算出処理Ｓ３７０で算出した可用性評価値や模擬実行処理Ｓ３１０で判定した順序条件違反や処理時間違反などを含む可用性評価結果を出力する。
【００７６】
図２１は、この実施の形態における模擬実行処理Ｓ３１０の流れの一例を示すフローチャート図である。
模擬実行処理Ｓ３１０は、時計初期化工程Ｓ３１１、イベント初期化工程Ｓ３１２、構成要素選択工程Ｓ３１３、初期動作判定工程Ｓ３１４、初期状態設定工程Ｓ３１５、初期アクション模擬工程Ｓ３１６、時計進行工程Ｓ３２１、イベント模擬工程Ｓ３２２、処理時間違反判定工程Ｓ３２３、障害発生判定工程Ｓ３２４、復旧判定工程Ｓ３２５、状態遷移模擬工程Ｓ３３１、順序条件判定工程Ｓ３３２、順序条件違反記憶工程Ｓ３３３、実行条件判定工程Ｓ３３４、パラメータ条件違反記憶工程Ｓ３３５、アクション模擬工程Ｓ３３６を有する。
【００７７】
時計初期化工程Ｓ３１１において、状態遷移模擬部１３３は、ＣＰＵ９１１を用いて、模擬する評価対象システム７００の時計を０に初期化する。
イベント初期化工程Ｓ３１２において、キュー模擬部１３６は、ＣＰＵ９１１を用いて、記憶した内容を初期化して、イベントを消去する。また、イベント模擬部１３５は、入力イベント記憶部１２１が記憶した入力イベントデータ６５０に基づいて、ＣＰＵ９１１を用いて、評価対象システム７００が外部から入力するイベントが発生する時刻（以下「イベント発生時刻」と呼ぶ。）を予約する。
【００７８】
構成要素選択工程Ｓ３１３において、状態遷移模擬部１３３は、構成要素記憶部１１１が記憶した構成要素データ６１０に基づいて、ＣＰＵ９１１を用いて、未処理の構成要素を一つずつ順に選択する。すべての構成要素が選択済であり、選択すべき構成要素がない場合、時計進行工程Ｓ３２１へ進む。未選択の構成要素を選択した場合、初期動作判定工程Ｓ３１４へ進む。
初期動作判定工程Ｓ３１４において、状態遷移模擬部１３３は、構成要素選択工程Ｓ３１３で選択した構成要素について、ＣＰＵ９１１を用いて、構成要素記憶部１１１が記憶した構成要素ＩＤ６１１・構成要素名６１２・初期動作ＩＤ６１３の組を取得する。状態遷移模擬部１３３は、ＣＰＵ９１１を用いて、取得した初期動作ＩＤ６１３が、状態ＩＤ６１６のいずれかと一致するか、状態遷移ＩＤ６４７のいずれかと一致するかを判定する。初期動作ＩＤ６１３が状態ＩＤ６１６と一致する場合は、その構成要素が最初にアクションを実行しないことを表わすので、初期状態設定工程Ｓ３１５へ進む。初期動作ＩＤ６１３が状態遷移ＩＤ６４７と一致する場合は、その構成要素が最初にアクションを実行することを表わすので、初期アクション模擬工程Ｓ３１６へ進む。
【００７９】
初期状態設定工程Ｓ３１５において、状態模擬記憶部１３１は、構成要素選択工程Ｓ３１３で状態遷移模擬部１３３が選択した構成要素の状態として、ＲＡＭ９１４を用いて、初期動作判定工程Ｓ３１４で状態遷移模擬部１３３が取得した初期動作ＩＤ６１３を記憶する。
その後、構成要素選択工程Ｓ３１３に戻る。
【００８０】
初期アクション模擬工程Ｓ３１６において、アクション模擬部１３４は、状態遷移記憶部１１６が記憶した状態遷移データ６４６のなかから、ＣＰＵ９１１を用いて、初期動作判定工程Ｓ３１４で状態遷移模擬部１３３が取得した初期動作ＩＤ６１３と、状態遷移ＩＤ６４７が一致する状態遷移ＩＤ６４７・実行アクションＩＤ６４８・遷移先ＩＤ６４９の組を取得する。状態模擬記憶部１３１は、アクション記憶部１１３が記憶したアクションデータ６２０のなかから、ＣＰＵ９１１を用いて、取得した実行アクションＩＤ６４８と、アクションＩＤ６２１が一致するアクションＩＤ６２１・アクション名６２２・実行要素ＩＤ６２３・実行時間６２４・実行内容６２５の組を取得する。アクション模擬部１３４は、構成要素選択工程Ｓ３１３で状態遷移模擬部１３３が選択した構成要素について、ＣＰＵ９１１を用いて、取得した実行内容６２５が表わすアクションの実行を模擬する。また、アクション模擬部１３４は、ＣＰＵ９１１を用いて、取得した実行時間６２４に基づいて、そのアクションの実行が終了する時刻（以下「遷移時刻」と呼ぶ。）を算出する。アクション模擬部１３４は、構成要素選択工程Ｓ３１３で状態遷移模擬部１３３が選択した構成要素について、ＣＰＵ９１１を用いて、算出した遷移時刻を予約する。
その後、構成要素選択工程Ｓ３１３に戻る。
【００８１】
時計進行工程Ｓ３２１において、状態遷移模擬部１３３は、予約されたイベント発生時刻及び遷移時刻に基づいて、ＣＰＵ９１１を用いて、最も早く到来するイベント発生時刻または遷移時刻を取得する。状態遷移模擬部１３３は、ＣＰＵ９１１を用いて、取得したイベント発生時刻または遷移時刻まで、模擬する評価対象システム７００の時計を進める。
イベント発生時刻まで時計を進めた場合、イベント模擬工程Ｓ３２２へ進む。
遷移時刻まで時計を進めた場合、状態遷移模擬工程Ｓ３３１へ進む。
遷移時刻もイベント発生時刻も予約されていない場合は、評価対象システム７００の模擬が終わったことになる。模擬実行部１３０は、模擬実行処理Ｓ３１０を終了する。
なお、模擬終了時刻をあらかじめ定めておき、模擬する評価対象システム７００の時計が模擬終了時刻を過ぎた場合に、模擬実行処理Ｓ３１０を終了する構成としてもよい。
【００８２】
イベント模擬工程Ｓ３２２において、イベント模擬部１３５は、ＣＰＵ９１１を用いて、予約されたイベントを発生させる。キュー模擬部１３６は、ＲＡＭ９１４を用いて、イベント模擬部１３５が発生させたイベントを記憶する。
処理時間違反判定工程Ｓ３２３において、処理時間違反判定部１５１は、処理時間条件記憶部１２４が記憶した処理時間条件データ６７０に基づいて、ＣＰＵ９１１を用いて、イベント模擬工程Ｓ３２２で処理時間違反判定部１５１が発生させたイベントが処理時間条件違反であるか否かを判定する。処理時間条件違反であると処理時間違反判定部１５１が判定した場合、処理時間違反記憶部１５２は、磁気ディスク装置９２０を用いて、その処理時間違反に関するデータを記憶する。
障害発生判定工程Ｓ３２４において、障害発生判定部１４１は、障害検出条件記憶部１２５が記憶した障害検出条件データ６８０に基づいて、ＣＰＵ９１１を用いて、評価対象システム７００に障害が発生したか否かを判定する。障害発生判定部１４１は、障害が発生したと判定した場合、ＣＰＵ９１１を用いて、障害が発生した障害発生時刻を算出する。障害発生判定部１４１は、磁気ディスク装置９２０を用いて、算出した障害発生時刻を記憶する。
復旧判定工程Ｓ３２５において、復旧判定部１４２は、障害検出条件記憶部１２５が記憶した障害検出条件データ６８０に基づいて、ＣＰＵ９１１を用いて、評価対象システム７００が障害から復旧したか否かを判定する。復旧判定部１４２は、障害から復旧したと判定した場合、ＣＰＵ９１１を用いて、障害から復旧した復旧時刻を算出する。復旧判定部１４２は、磁気ディスク装置９２０を用いて、算出した復旧時刻を記憶する。その後、順序条件判定工程Ｓ３３２へ進む。
【００８３】
状態遷移模擬工程Ｓ３３１において、状態遷移模擬部１３３は、状態遷移記憶部１１６が記憶した状態遷移データ６４６に基づいて、ＣＰＵ９１１を用いて、アクションの実行が終了した構成要素が、次のアクションを実行するか、状態に遷移して状態遷移を完了するかを判定する。次のアクションを実行すると判定した場合、アクション模擬工程Ｓ３３６へ進む。状態遷移を完了すると判定した場合、状態模擬記憶部１３１は、そのアクションを実行した構成要素の状態として、ＲＡＭ９１４を用いて、遷移先ＩＤ６４９を記憶する。その後、順序条件判定工程Ｓ３３２へ進む。
【００８４】
順序条件判定工程Ｓ３３２において、順序条件違反判定部１３７は、状態遷移模擬工程Ｓ３３１で状態が変化した構成要素あるいはイベント模擬工程Ｓ３２２で新たに発生したイベントを取得する構成要素について、ＣＰＵ９１１を用いて、キュー模擬部１３６からイベントを取得する。順序条件違反判定部１３７は、順序条件記憶部１２３が記憶した順序条件データ６６５に基づいて、取得したイベントが順序条件に違反しているか否かを判定する。違反していると判定した場合、順序条件違反記憶工程Ｓ３３３へ進む。順序条件を充足していると判定した場合、実行条件判定工程Ｓ３３４へ進む。
【００８５】
順序条件違反記憶工程Ｓ３３３において、機能制約違反記憶部１５３は、磁気ディスク装置９２０を用いて、順序条件判定工程Ｓ３３２で順序条件違反判定部１３７が判定した順序条件違反に関するデータを記憶する。その後、時計進行工程Ｓ３２１に戻る。
【００８６】
実行条件判定工程Ｓ３３４において、実行条件判定部１３２は、実行条件記憶部１１５が記憶した実行条件データ６４０に基づいて、ＣＰＵ９１１を用いて、実行条件が満たされているか否かを判定する。
実行条件が満たされていると判定した場合、アクション模擬工程Ｓ３３６へ進む。
パラメータ条件以外の実行条件は満たされているが、パラメータ条件に違反していると判定した場合、パラメータ条件違反記憶工程Ｓ３３５へ進む。
パラメータ条件以外の実行条件が満たされていないと判定した場合、時計進行工程Ｓ３２１に戻る。
【００８７】
パラメータ条件違反記憶工程Ｓ３３５において、機能制約違反記憶部１５３は、磁気ディスク装置９２０を用いて、実行条件判定工程Ｓ３３４で実行条件判定部１３２が判定したパラメータ条件違反に関するデータを記憶する。その後、時計進行工程Ｓ３２１に戻る。
【００８８】
アクション模擬工程Ｓ３３６において、アクション模擬部１３４は、アクション記憶部１１３が記憶したアクションデータ６２０に基づいて、ＣＰＵ９１１を用いて、アクションの実行を模擬する。また、アクション模擬部１３４は、そのアクションの実行が終了する遷移時刻を算出する。アクション模擬部１３４は、ＣＰＵ９１１を用いて、算出した遷移時刻を予約する。その後、時計進行工程Ｓ３２１に戻る。
【００８９】
図２２は、この実施の形態における可用性算出処理Ｓ３７０の流れの一例を示すフローチャート図である。
可用性算出処理Ｓ３７０は、障害発生時刻取得工程Ｓ３７１、動作時間算出工程Ｓ３７２、復旧時刻取得工程Ｓ３７３、修復時間算出工程Ｓ３７４、平均動作時間算出工程Ｓ３７５、平均修復時間算出工程Ｓ３７６、可用性評価値算出工程Ｓ３７７を有する。
【００９０】
障害発生時刻取得工程Ｓ３７１において、動作時間算出部１４３は、ＣＰＵ９１１を用いて、障害発生判定部１４１が記憶した障害発生時刻を早いものから順に１つずつ取得する。すべての障害発生時刻が取得済であり、取得すべき障害発生時刻がない場合、平均動作時間算出工程Ｓ３７５へ進む。未取得の障害発生時刻を取得した場合、動作時間算出工程Ｓ３７２へ進む。
【００９１】
動作時間算出工程Ｓ３７２において、動作時間算出部１４３は、前回の復旧時刻と、障害発生時刻取得工程Ｓ３７１で取得した障害発生時刻とに基づいて、ＣＰＵ９１１を用いて、動作時間を算出する。動作時間記憶部１４５は、磁気ディスク装置９２０を用いて、動作時間算出部１４３が算出した動作時間を記憶する。
【００９２】
復旧時刻取得工程Ｓ３７３において、修復時間算出部１４４は、ＣＰＵ９１１を用いて、復旧判定部１４２が記憶した復旧時刻を早いものから順に１つずつ取得する。すべての復旧時刻が取得済であり、取得すべき復旧時刻がない場合、平均動作時間算出工程Ｓ３７５へ進む。未取得の復旧時刻を取得した場合、修復時間算出工程Ｓ３７４へ進む。
【００９３】
修復時間算出工程Ｓ３７４において、修復時間算出部１４４は、動作時間算出工程Ｓ３７２で動作時間算出部１４３が取得した障害発生時刻と、復旧時刻取得工程Ｓ３７３で取得した復旧時刻とに基づいて、ＣＰＵ９１１を用いて、修復時間を算出する。修復時間記憶部１４６は、磁気ディスク装置９２０を用いて、修復時間算出部１４４が算出した修復時間を記憶する。その後、障害発生時刻取得工程Ｓ３７１に戻る。
【００９４】
平均動作時間算出工程Ｓ３７５において、平均動作時間算出部１４７は、動作時間記憶部１４５が記憶した動作時間に基づいて、ＣＰＵ９１１を用いて、平均動作時間を算出する。
平均修復時間算出工程Ｓ３７６において、平均修復時間算出部１４８は、修復時間記憶部１４６が記憶した修復時間に基づいて、ＣＰＵ９１１を用いて、平均修復時間を算出する。
可用性評価値算出工程Ｓ３７７において、可用性算出部１４９は、平均動作時間算出工程Ｓ３７５で平均動作時間算出部１４７が算出した平均動作時間と、平均修復時間算出工程Ｓ３７６で平均修復時間算出部１４８が算出した平均修復時間とに基づいて、ＣＰＵ９１１を用いて、可用性評価値を算出する。
【００９５】
なお、この例では、模擬実行処理Ｓ３１０のなかで処理時間違反の判定をしているが、イベント模擬部１３５が発生させたイベントとその時刻を記憶しておき、可用性算出処理Ｓ３７０のなかで、処理時間違反の判定をする構成であってもよい。同様に、可用性算出処理Ｓ３７０のなかで、障害発生時刻や復旧時刻の判定をする構成であってもよい。逆に、模擬実行処理Ｓ３１０のなかで、動作時間や修復時間の算出をする構成であってもよい。
【００９６】
図２３は、この実施の形態における模擬実行部１３０が評価対象システム７００の動作を模擬する様子を示す模式図である。
なお、可用性評価装置１００の各記憶部は、図７〜図１５及び図１７〜図１９に示した各データを記憶しているものとする。
ここで、「ｅ１」〜「ｅ７」は、構成要素ＩＤ６１１であり、模擬実行部１３０が模擬するセンサ７０１，７０２、センサ処理プログラム７０３、制御処理プログラム７０４、監視処理プログラム７０５、駆動処理プログラム７０６、アクチュエータ７０７などの構成要素を表わす。
【００９７】
時刻「０」において、各構成要素は、初期動作をする。構成要素ＩＤ６１１が「ｅ１」である構成要素（センサ７０１）は、状態遷移ＩＤ６４７が「ｔ１１」である遷移にしたがって、アクションＩＤ６２１が「ａ１１」であるアクション（初期化アクション７３１）を実行する。アクション「ａ１１」の実行時間は、「８」である。構成要素「ｅ５」（監視処理プログラム７０５）は、遷移「ｔ５１」にしたがって、実行時間「３」のアクション「ａ５１」（報告要求アクション７４４）を実行する。それ以外の構成要素は、最初にアクションを実行せず、最初の状態に遷移する。
【００９８】
時刻「３」において、アクション「ａ５１」の実行が終了し、構成要素「ｅ５」は、イベント「ｖ５１」（報告要求イベント７５６）を発生する。構成要素「ｅ５」は、遷移「ｔ５１」にしたがって、状態「ｓ５２」（応答待ち状態７２２）に遷移する。構成要素「ｅ５」のキュー「ｑ５１」は空なので、構成要素「ｅ５」は、状態「ｓ５２」のまま、イベントを取得するのを待つ。
構成要素「ｅ４」（制御処理プログラム７０４）のキュー「ｑ４２」は、イベント「ｖ５１」を受け取る。キュー「ｑ４２」は空だったので、構成要素「ｅ４」は、すぐにイベント「ｖ５１」を取得する。構成要素「ｅ４」は、状態「ｓ４１」（制御状態７１９）であり、イベント「ｖ５１」を取得したので、順序条件「ｏ４２」を充足し、実行条件「ｃ４２」が示す遷移「ｔ４２」にしたがって、実行時間「９」のアクション「ａ４２」（応答アクション７４３）を実行する。
【００９９】
時刻「８」において、アクション「ａ１１」の実行が終了する。構成要素「ｅ１」は、遷移「ｔ１１」が示す次の遷移「ｔ１２」にしたがって、実行時間「２」の次のアクション「ａ１２」（観測アクション７３２）を実行する。
【０１００】
時刻「１０」において、アクション「ａ１２」の実行が終了し、構成要素「ｅ１」は、イベント「ｖ１１」（観測結果イベント７５１）を発生する。また、構成要素「ｅ１」は、「１８」単位時間後である時刻「２８」にイベント「ｖ１２」（時間経過イベント）を発生する。なお、イベント「ｖ１２」は、構成要素「ｅ１」自身が取得するイベントなので、図示していない。構成要素「ｅ１」は、遷移「ｔ１２」にしたがって、状態「ｓ１１」（センサ動作状態７１１）に遷移する。構成要素「ｅ１」のキュー「ｑ１１」は空なので、構成要素「ｅ１」は、状態「ｓ１１」のまま、イベントを取得するのを待つ。
構成要素「ｅ３」（センサ処理プログラム７０３）のキュー「ｑ３１」は、イベント「ｖ１１」を受け取る。キュー「ｑ３１」は空だったので、構成要素「ｅ３」は、すぐにイベント「ｖ１１」を取得する。構成要素「ｅ３」は、状態「ｓ３１」（観測待ち状態７１７）であり、イベント「ｖ１１」を取得したので、順序条件「ｏ３１」を充足し、実行条件「ｃ３１」が示す遷移「ｔ３１」にしたがって、実行時間「５」のアクション「ａ３１」（センサ処理アクション７３７）を実行する。
【０１０１】
このように、模擬実行部１３０は、評価対象システム７００を構成する各構成要素の状態、アクション、キューなどを模擬することにより、評価対象システム７００の動作を模擬する。
【０１０２】
時刻「１０」にイベント「ｖ１１」が発生したことを受け、処理時間違反判定部１５１は、処理時間条件「ｐ１」に対する違反がないか判定する。時刻「１０」の後、最初にイベント「ｖ３１」が発生したのは時刻「１５」である。処理時間違反判定部１５１は、２つのイベントの間隔が「５」であることを算出し、間隔上限６７５「１０」以下であるから、処理時間条件「ｐ１」を充足していると判定する。
同様に、時刻「１２４」にイベント「ｖ３１」が発生したことを受け、処理時間違反判定部１５１は、処理時間条件「ｐ２」に対する違反がないか判定する。時刻「１２４」の後、最初にイベント「ｖ４１」が発生したのは時刻「１３８」である。処理時間違反判定部１５１は、２つのイベントの間隔が「１４」であることを算出し、間隔上限６７５「１２」を超えているから、処理時間条件「ｐ２」に違反していると判定する。
【０１０３】
このように、先行イベントＩＤ６７２が表わすイベントが発生するたび、処理時間違反判定部１５１は、それより後で最初に後続イベントＩＤ６７３が表わすイベントが発生した時刻を求め、２つのイベントの間隔を算出して、処理時間違反がないかを判定する。
【０１０４】
時刻「４５」にイベント「ｖ７１」が発生したことを受け、これがイベント「ｖ７１」が発生した最初であることから、復旧判定部１４２は、障害検出条件「ｂ１」に基づいて、評価対象システム７００が障害（初期化処理）から復旧して、正常に動作を始めたと判定する。
時刻「６５」にイベント「ｖ７１」が発生したことを受け、前回のイベント「ｖ７１」との間隔が「２０」であることから、障害発生判定部１４１は、障害検出条件「ｂ１」に該当せず、評価対象システム７００が正常に動作を続けていると判定する。
同様に、時刻「８５」、時刻「１０５」にもイベント「ｖ７１」が発生したことを受け、障害発生判定部１４１は、評価対象システム７００が正常に動作を続けていると判定する。
時刻「１２７」において、前回のイベント「ｖ７１」の発生から、間隔上限６８５「２２」が経過したにもかかわらず、まだ次のイベント「ｖ７１」が発生していないことから、障害発生判定部１４１は、障害検出条件「ｂ１」に該当し、評価対象システム７００に障害が発生したと判定する。
時刻「１６５」において、ようやくイベント「ｖ７１」が発生したことから、復旧判定部１４２は、障害検出条件「ｂ１」に基づいて、評価対象システム７００が障害から復旧して、正常に動作を始めたと判定する。
【０１０５】
このように、障害発生判定部１４１及び復旧判定部１４２は、先行イベントＩＤ６８２や後続イベントＩＤ６８３が表わすイベントが発生するたび、障害の発生や障害からの復旧を判定する。
【０１０６】
この例において、動作時間算出部１４３は、時刻「１２７」から時刻「４５」を差し引いた差である「８２」を算出して、一回目の動作時間とする。また、修復時間算出部１４４は、時刻「１６５」から時刻「１２７」を差し引いた差である「３８」を算出して、一回目の修復時間とする。
なお、動作時間算出部１４３は、一回目の修復時間として、最初にイベント「ｖ７１」が発生するまでの時間「４５」を数える構成であってもよい。
【０１０７】
模擬実行部１３０による評価対象システム７００の動作の模擬が終わったのち、平均動作時間算出部１４７は、動作時間算出部１４３が算出したすべての動作時間を合計して、動作時間算出部１４３が算出した動作時間の数で割り、平均動作時間を算出する。また、平均修復時間算出部１４８は、修復時間算出部１４４が算出したすべての修復時間を合計して、修復時間算出部１４４が算出した修復時間の数で割り、平均修復時間を算出する。可用性算出部１４９は、平均動作時間算出部１４７が算出した平均動作時間と、平均修復時間算出部１４８が算出した平均修復時間とに基づいて、可用性評価値を算出する。
【０１０８】
入力イベント記憶部１２１が記憶する入力イベントデータ６５０が表わす入力イベントは、評価対象システム７００に対する外部からの入力を表わす。例えば、評価対象システム７００に対する負荷が大きければ、評価対象システム７００に対する外部からの入力が多くなる。したがって、入力イベントの間隔を変えた複数の入力イベントデータ６５０を用いて、評価対象システム７００の動作を模擬することにより、実際のシステムにおける負荷の変動を模擬することができ、評価対象システム７００に対する負荷の変動が、評価対象システム７００の可用性に対して与える影響を計ることができる。
【０１０９】
また、可用性評価装置１００は、可用性評価結果として、可用性評価値だけでなく、順序条件違反やパラメータ条件違反などの機能制約違反や、処理時間違反に関する情報を出力するので、評価対象システム７００の可用性が低い場合にこれを分析することにより、その原因を探ることができる。
【０１１０】
この実施の形態における可用性評価装置１００は、１以上の構成要素（センサ７０１など）により構成される評価対象システム７００の動作を模擬することにより、上記評価対象システム７００を評価する。
可用性評価装置１００は、データを記憶する記憶装置（磁気ディスク装置９２０、ＲＡＭ９１４など）と、データを処理する処理装置（ＣＰＵ９１１）と、動作モデル記憶部１１０と、模擬実行部１３０と、障害発生判定部１４１と、復旧判定部１４２と、可用性算出部１４９と、評価結果出力部１５４とを有する。
上記動作モデル記憶部１１０は、上記評価対象システム７００を構成する構成要素が実行する１以上のアクション（初期化アクション７３１など）それぞれについて、上記記憶装置を用いて動作モデルを記憶する。上記動作モデルは、実行条件と実行時間と実行結果との組を含む。上記実行条件は、上記アクションの実行を開始する条件を表わす。上記実行時間は、上記アクションの実行にかかる時間を表わす。上記実行結果は、上記アクションを実行した結果を表わす。
上記模擬実行部１３０は、上記動作モデル記憶部１１０が記憶した動作モデルに基づいて、上記処理装置を用いてシステム動作を模擬する。上記システム動作は、上記評価対象システム７００の動作である。
上記障害発生判定部１４１は、上記模擬実行部１３０が模擬したシステム動作に基づいて、上記処理装置を用いて障害発生時刻を判定する。上記障害発生時刻は、上記評価対象システム７００に障害が発生する時刻である。
上記復旧判定部１４２は、上記模擬実行部１３０が模擬したシステム動作に基づいて、上記処理装置を用いて復旧時刻を判定する。上記復旧時刻は、上記評価対象システム７００が上記障害から復旧する時刻である。
上記可用性算出部１４９は、上記障害発生判定部１４１が判定した障害発生時刻と、上記復旧判定部１４２が判定した復旧時刻とに基づいて、上記処理装置を用いて可用性評価値を算出する。上記可用性評価値は、上記評価対象システム７００が正常に動作している時間の割合を表わす数値である。
上記評価結果出力部１５４は、上記処理装置を用いて可用性評価結果を出力する。上記可用性評価結果は、上記評価対象システムを評価した結果を表わし、上記可用性算出部１４９が算出した可用性評価値を含む。
【０１１１】
この実施の形態における可用性評価装置１００によれば、動作モデル記憶部１１０が記憶した動作モデルに基づいて、模擬実行部１３０が評価対象システム７００の動作を模擬し、障害発生判定部１４１が判定した障害発生時刻と、復旧判定部１４２が判定した復旧時刻とに基づいて、可用性算出部１４９が可用性評価値を算出するので、可用性評価値として理論上の数値ではなく、実際の運用時に近い数値を算出することができ、評価対象システム７００を精度よく評価することができる。
【０１１２】
この実施の形態における可用性評価装置１００は、更に、平均動作時間算出部１４７と、平均修復時間算出部１４８とを有する。
上記平均動作時間算出部１４７は、上記障害発生判定部１４１が判定した障害発生時刻と、上記復旧判定部１４２が判定した復旧時刻とに基づいて、上記処理装置を用いて平均動作時間を算出する。上記平均動作時間は、上記評価対象システム７００が正常に動作している時間の平均値である。
上記平均修復時間算出部１４８は、上記障害発生判定部１４１が判定した障害発生時刻と、上記復旧判定部１４２が判定した復旧時刻とに基づいて、上記処理装置を用いて平均修復時間を算出する。上記平均修復時間は、上記評価対象システム７００に障害が発生している時間の平均値である。
上記可用性算出部１４９は、上記平均動作時間算出部１４７が算出した平均動作時間と、上記平均修復時間算出部１４８が算出した平均修復時間とに基づいて、上記処理装置を用いて上記可用性評価値を算出する。上記可用性評価値は、上記平均動作時間を合計平均時間で割った商である。上記合計平均時間は、上記平均動作時間と上記平均修復時間とを合計した和である。
【０１１３】
この実施の形態における可用性評価装置１００によれば、平均動作時間と平均修復時間との和で、平均動作時間を割った商を、可用性評価値とするので、評価対象システム７００の実際の稼働率に近い値を可用性評価値とすることができ、評価対象システム７００を精度よく評価することができる。
【０１１４】
この実施の形態における可用性評価装置１００は、更に、機能制約条件記憶部（順序条件記憶部１２３、実行条件記憶部１１５）を有する。
上記機能制約条件記憶部は、上記記憶装置を用いて１以上の機能制約条件（順序条件、パラメータ条件）を記憶する。上記機能制約条件は、上記評価対象システム７００を構成する構成要素によるアクションの実行を制約する条件を表わす。
上記模擬実行部１３０は、上記動作モデル記憶部１１０が記憶した動作モデルと、上記機能制約条件記憶部が記憶した機能制約条件とに基づいて、上記処理装置を用いてシステム動作を模擬する。
【０１１５】
この実施の形態における可用性評価装置１００によれば、機能制約条件を考慮して評価対象システム７００の動作を模擬するので、実際の動作に近い模擬をすることができ、評価対象システム７００を精度よく評価することができる。
【０１１６】
この実施の形態における可用性評価装置１００は、更に、機能制約違反判定部（順序条件違反判定部１３７、実行条件判定部１３２）を有する。
上記機能制約違反判定部は、上記模擬実行部１３０が模擬したシステム動作に基づいて、上記処理装置を用いて機能制約違反を判定する。上記機能制約違反は、上記機能制約条件に対する違反を表わす。
上記評価結果出力部１５４が出力する可用性評価結果は、上記機能制約違反判定部が判定した機能制約違反を含む。
【０１１７】
この実施の形態における可用性評価装置１００によれば、可用性評価結果が機能制約違反を含むので、評価対象システム７００の可用性評価値が低い場合に、その原因を解明し、評価対象システム７００を改良する助けとなる。
【０１１８】
この実施の形態における可用性評価装置１００は、更に、性能制約条件記憶部（処理時間条件記憶部１２４）と、性能制約違反判定部（処理時間違反判定部１５１）とを有する。
上記性能制約条件記憶部は、上記記憶装置を用いて１以上の性能制約条件（処理時間条件）を記憶する。上記性能制約条件は、上記評価対象システム７００を構成する構成要素がアクションを実行した結果が満たすべき性能に関する条件を表わす。
上記性能制約違反判定部は、上記模擬実行部１３０が模擬したシステム動作に基づいて、上記処理装置を用いて性能制約違反を判定する。上記性能制約違反は、上記性能制約条件に対する違反を表わす。
上記評価結果出力部１５４が出力する可用性評価結果は、上記性能制約違反判定部が判定した性能制約違反を含む。
【０１１９】
この実施の形態における可用性評価装置１００によれば、可用性評価結果が性能制約違反を含むので、評価対象システム７００の可用性評価値が低い場合に、その原因を解明し、評価対象システム７００を改良する助けとなる。
【０１２０】
この実施の形態における可用性評価装置１００において、上記動作モデル記憶部１１０が記憶した実行条件は、要素状態（条件状態ＩＤ６４２）と取得イベント（条件イベントＩＤ６４３）との組である。上記要素状態は、上記構成要素の状態を表わす。上記取得イベントは、上記評価対象システムに発生するイベントを表わす。上記実行条件は、上記構成要素の状態が上記要素状態であるときに上記取得イベントが発生したことが、上記アクションを開始する条件であることを表わす。
上記動作モデル記憶部１１０が記憶した実行結果は、遷移状態（遷移先ＩＤ６４４）と結果イベント（イベントデータ６３０）との組である。上記遷移状態は、上記構成要素の状態を表わす。上記結果イベントは、上記評価対象システムに発生するイベントを表わす。上記実行結果は、上記アクションを実行した結果として、上記構成要素の状態が上記遷移状態に遷移し、上記結果イベントが発生することを表わす。
【０１２１】
この実施の形態における可用性評価装置１００によれば、状態遷移モデルを用いて評価対象システム７００の動作モデルを表わすので、評価対象システム７００の動作モデルを容易に構築することができ、評価対象システム７００を精度よく評価することができる。
【０１２２】
この実施の形態における可用性評価装置１００は、更に、パラメータ条件記憶部（実行条件記憶部１１５）を有する。
上記パラメータ条件記憶部は、上記記憶装置を用いて１以上のパラメータ条件６４５を記憶する。上記パラメータ条件は、上記動作モデル記憶部１１０が記憶した実行条件について、上記実行条件の取得イベントが表わすイベントのパラメータが満たすべき条件を表わし、上記取得イベントのパラメータが上記パラメータ条件を満たすことが、上記アクションを開始する条件であることを表わす。
上記模擬実行部１３０は、上記動作モデル記憶部１１０が記憶した動作モデルと、上記パラメータ条件記憶部が記憶したパラメータ条件とに基づいて、上記処理装置を用いてシステム動作を模擬する。
【０１２３】
この実施の形態における可用性評価装置１００によれば、イベントのパラメータについての条件を、実行条件の一部とするので、実際の動作に近い模擬をすることができ、評価対象システム７００を精度よく評価することができる。
【０１２４】
この実施の形態における可用性評価装置１００は、更に、順序条件記憶部１２３を有する。
上記順序条件記憶部１２３は、上記記憶装置を用いて１以上の順序条件（順序条件データ６６５）を記憶する。上記順序条件は、上記動作モデル記憶部１１０が記憶した実行条件について、上記実行条件の取得イベントが表わすイベントが発生する順序に関する条件を表わし、上記取得イベントが発生する順序が上記順序条件を満たすことが、上記アクションを開始する条件であることを表わす。
上記模擬実行部１３０は、上記動作モデル記憶部１１０が記憶した動作モデルと、上記順序条件記憶部１２３が記憶した順序条件とに基づいて、上記処理装置を用いてシステム動作を模擬する。
【０１２５】
この実施の形態における可用性評価装置１００によれば、イベントの順序についての条件を、実行条件の一部とするので、実際の動作に近い模擬をすることができ、評価対象システム７００を精度よく評価することができる。
【０１２６】
この実施の形態における可用性評価装置１００は、更に、処理時間条件記憶部１２４と、処理時間違反判定部１５１とを有する。
上記処理時間条件記憶部１２４は、上記記憶装置を用いて処理時間条件（処理時間条件データ６７０）を記憶する。上記処理時間条件は、上記動作モデル記憶部１１０が記憶した動作モデルについて、上記評価対象システム７００に発生する２つのイベントの間隔が満たすべき条件を表わす。
上記処理時間違反判定部１５１は、上記模擬実行部１３０が模擬したシステム動作に基づいて、上記処理装置を用いて処理時間違反を判定する。上記処理時間違反は、上記処理時間条件に対する違反を表わす。
上記評価結果出力部１５４が出力する可用性評価結果は、上記処理時間違反判定部１５１が判定した処理時間違反を含む。
【０１２７】
この実施の形態における可用性評価装置１００によれば、可用性評価結果が処理時間違反を含むので、評価対象システム７００の可用性評価値が低い場合に、その原因を解明し、評価対象システム７００を改良する助けとなる。
【０１２８】
この実施の形態における可用性評価装置１００は、更に、入力イベント記憶部１２１を有する。
上記入力イベント記憶部１２１は、上記記憶装置を用いて１以上の入力イベント（入力イベントデータ６５０）を記憶する。上記入力イベントは、発生イベント（入力イベントＩＤ６５１）と発生時刻（入力時刻６５２）との組を含む。上記発生イベントは、上記評価対象システム７００に発生するイベントを表わす。上記発生時刻は、上記システム動作の模擬における時刻を表わす。上記入力イベントは、上記発生時刻に上記発生イベントが発生することを表わす。
上記模擬実行部１３０は、上記動作モデル記憶部１１０が記憶した動作モデルと、上記入力イベント記憶部１２１が記憶した入力イベントとに基づいて、上記処理装置を用いて上記システム動作を模擬する。
【０１２９】
この実施の形態における可用性評価装置１００によれば、入力イベントに基づいて評価対象システム７００の動作を模擬するので、評価対象システム７００の負荷の変動による可用性への影響を測定できるなど、評価対象システム７００を更に精度よく評価することができる。
【０１３０】
なお、上述したように、入力イベント記憶部１２１は、イベントが発生する時刻を記憶するのではなく、イベントが発生する条件や、イベントが発生する確率などを記憶する構成であってもよい。例えば、入力イベント記憶部１２１は、センサ７０１などのハードウェア要素について故障率を記憶する。イベント模擬部１３５は、入力イベント記憶部１２１が記憶した故障率に基づいて、そのハードウェア要素の故障イベントを発生させる。
このような構成とすれば、ハードウェアの故障を精度よく模擬することができ、評価対象システム７００を更に精度よく評価することができる。
【０１３１】
この実施の形態における可用性評価装置１００は、更に、キューモデル記憶部１２２を有する。
上記キューモデル記憶部１２２は、上記評価対象システム７００を構成する構成要素それぞれについて、上記記憶装置を用いてキューモデル（キューデータ６５５、取得イベントデータ６６０）を記憶する。上記キューモデルは、上記評価対象システム７００に発生したイベントを処理する順序に関する規則を表わす。
上記模擬実行部１３０は、上記動作モデル記憶部１１０が記憶した動作モデルと、上記キューモデル記憶部１２２が記憶したキューモデルとに基づいて、上記処理装置を用いてシステム動作を模擬する。
【０１３２】
この実施の形態における可用性評価装置１００によれば、キューモデルに基づいて評価対象システム７００の動作を模擬するので、複数のイベントが輻輳した場合の処理手順を、実際のシステムと同じように模擬することができ、評価対象システム７００を精度よく評価することができる。
【０１３３】
この実施の形態における可用性評価装置１００は、データを記憶する記憶装置と、データを処理する処理装置とを有するコンピュータと、上記コンピュータを可用性評価装置１００として機能させるコンピュータプログラムとを用いて、上記コンピュータが上記コンピュータプログラムを実行することにより実現することができる。
【０１３４】
この実施の形態における可用性評価装置１００を実現するコンピュータプログラムによれば、動作モデル記憶部１１０が記憶した動作モデルに基づいて、模擬実行部１３０が評価対象システム７００の動作を模擬し、障害発生判定部１４１が判定した障害発生時刻と、復旧判定部１４２が判定した復旧時刻とに基づいて、可用性算出部１４９が可用性評価値を算出するので、可用性評価値として理論上の数値ではなく、実際の運用時に近い数値を算出することができ、評価対象システム７００を精度よく評価することができる可用性評価装置１００を実現することができる。
【０１３５】
この実施の形態における可用性評価装置１００が、１以上の構成要素により構成される評価対象システム７００の動作を模擬することにより、上記評価対象システム７００を評価する可用性評価方法は、以下の工程を有する。
上記評価対象システム７００を構成する構成要素が実行する１以上のアクションそれぞれについて、上記記憶装置が動作モデルを記憶する。
上記記憶装置が記憶した動作モデルに基づいて、上記処理装置がシステム動作を模擬する。
上記処理装置が模擬したシステム動作に基づいて、上記処理装置が障害発生時刻を判定する。
上記処理装置が模擬したシステム動作に基づいて、上記処理装置が復旧時刻を判定する。
上記処理装置が判定した障害発生時刻と、復旧時刻とに基づいて、上記処理装置が可用性評価値を算出する。
上記処理装置が可用性評価結果を出力する。
【０１３６】
この実施の形態における可用性評価方法によれば、記憶装置が記憶した動作モデルに基づいて、処理装置が評価対象システム７００の動作を模擬し、判定した障害発生時刻と、復旧時刻とに基づいて、可用性評価値を算出するので、可用性評価値として理論上の数値ではなく、実際の運用時に近い数値を算出することができ、評価対象システム７００を精度よく評価することができる。
【０１３７】
以上説明した設計システム８００は、開発対象の制御システム（評価対象システム７００）の可用性が要求を満たしているかを計算する可用性計算装置である。
可用性計算装置は、制御システムに入力されることを想定したイベント列を作成する作成部（システムモデル設計装置８１０）と、制御システムの動作仕様とイベントキューと処理時間を定義する状態遷移モデルを作成する作成部（システムモデル設計装置８１０）と、状態遷移モデルの機能制約を記述する記述部（システムモデル設計装置８１０）と、状態遷移モデルの性能制約を記述する記述部（システムモデル設計装置８１０）と、イベントの入力により状態遷移モデルを実行する実行部（模擬実行部１３０）と、状態遷移モデルの実行結果から可用性計算値を出力する出力部（可用性算出部１４９）と、状態遷移モデルの実行結果から機能制約違反を検出する検出部（順序条件違反判定部１３７、実行条件判定部１３２）と、状態遷移モデルの実行結果から性能制約違反を検出する検出部（処理時間違反判定部１５１）と、制御システムが可用性要求を満たすか評価する評価部（システムモデル設計装置８１０）とを備える。
また、可用性計算装置は、制御システムに入力されることを想定したイベント列を、事前に確定的に作成したり、または計算時に確率分布を用いて作成したりする。
また、可用性計算装置は、状態遷移モデルの機能制約を、インタフェースに対する入出力制約（パラメータ条件）、ポートに対する順序制約（順序条件）、またはこれらの組み合わせで記述する。
また、可用性計算装置は、状態遷移モデルの性能制約を、イベントキューでの待ち時間と遷移アクションの処理時間に対する動作時間制約（処理時間条件）で記述する。
また、可用性計算装置は、制御システムが可用性要求を満たすか評価する方法として、可用性計算値を分子、可用性要求値を分母とした比率である要求達成度を計算する。
【０１３８】
以上説明した可用性計算装置は、システム運用時の週・月・年単位といった期間で発生する動的な負荷変動を考慮することができるので、動的な負荷変動が発生する場合でも可用性評価結果の精度が高い。また、運用時負荷に関して、構成要素と実行環境に対する制約を正確に表現することができる。
これにより、ハードウェアの故障率に加えて、構成要素と実行環境のインタフェースの入出力／順序制約、および状態遷移の動作時間制約を考慮することができ、可用性評価結果の精度を高くすることができる。
【０１３９】
可用性計算モデル作成部（システムモデル設計装置８１０）は、制御システムの可用性評価に利用する可用性計算モデルを作成する。可用性計算モデルは状態遷移モデル、機能制約、性能制約、および故障率から構成される。状態遷移モデル作成部（システムモデル設計装置８１０）は、制御システムの動作仕様を定義する状態遷移モデルを作成する。機能制約作成部（システムモデル設計装置８１０）は、状態遷移モデルのインタフェースとポートに対する制約を記述する。性能制約作成部（システムモデル設計装置８１０）は、状態遷移の実行に対する性能制約を記述する。故障率作成部（システムモデル設計装置８１０）は、制御対象のハードウェアの故障率を記述する。
【０１４０】
可用性計算部（可用性評価装置１００）は、状態遷移モデル実行部（模擬実行部１３０）、瞬時可用性計算部（可用性算出部１４９）、制約違反検出部（実行条件判定部１３２、順序条件違反判定部１３７、処理時間違反判定部１５１）から構成される。状態遷移モデル実行部では、入力イベントに対応する状態遷移を特定し、イベントキューでの待ち時間と遷移アクションの処理時間を計算し、遷移アクションを実行し、次状態に遷移させる。瞬時可用性計算部では、入力イベントに対応する応答イベントが正常に出力されている時間を動作時間として積算する。また、システム運用時に構成要素と実行環境にかかる動的な負荷変動やハードウェアの故障検出・切替により、入力イベントに対応する応答イベントが途絶えてから再び出力されるまでの時間を修復時間として積算する。例えば、周期処理の場合、アクチュエータなどの構成要素からの周期的出力がされなくなった時点で障害発生と判断する。また、ユーザからの入力に対応する処理など周期処理でない場合、仕様で決められている入力に対する出力がされなかったときに障害発生と判断する。つまり、システムの仕様として想定する出力がされなかったときに障害発生と判断する。
可用性計算部は、運用時の動作時間の平均値と修復時間の平均値の比率から瞬時可用性計算値（可用性評価値）を出力する。瞬時可用性の計算式を以下に示す。
瞬時可用性＝平均動作時間／（平均動作時間＋平均修復時間）。
ここで、平均動作時間と平均修復時間は運用時の値である。「運用時」とは、システムが現実に運用される期間中（例えば週・月・年などの単位）のことであり、瞬時可用性は、運用時にありうる値である。
制約違反検出部では、状態遷移モデルを実行した結果が機能制約および性能制約に違反するかどうか検出してその結果を出力する。機能制約違反および性能制約違反は、可用性の計算結果が出て要求を満たせないことが分かったときに、その原因を特定するための情報として利用される。
【０１４１】
可用性計算モデル（動作モデル）は、例えば以下のような構成を有する。可用性計算モデルは、制御システムに搭載されるソフトウェア（制御ソフト、監視ソフト）やデバイスドライバ（センサ処理、駆動処理）といった構成要素と、構成要素を実行するためのＯＳやミドルウェアといった実行環境の振舞いを状態遷移モデルで定義する。この状態遷移モデルにインタフェースとポートの機能制約、状態遷移の性能制約、および制御対象であるセンサやアクチュエータといったハードウェアの故障率を記述する記法を定義する。また、状態遷移モデルのイベントキューと処理時間を記述する記法を定義する。構成要素と実行環境には、入力イベントを格納しておく一つ以上のイベントキューおよび一つ以上のポートを定義し、このイベントキューおよびポートを通してお互いにイベントをやり取りする。
【０１４２】
状態遷移モデルは、例えば以下のような記法で記述する。機能制約は、インタフェースとポートでの情報のやり取りに対して成り立つ条件である。性能制約は、状態遷移と遷移アクションに関する時間に対して成り立つ条件である。また、イベントキューは受信イベントを格納するキューの本数と大きさと取り出し規則、処理時間は遷移アクションの実行にかかる処理時間である。
状態遷移モデルは、図の形式で表現されるものであってもよい。例えば、制御システムの動作は開始状態（黒丸）から始まり、状態Ｓ（Ｓ１、Ｓ２など）でイベントｅｖｔ（ｅｖｔ１、ｅｖｔ２など）を受信すると、遷移アクションａｃｔ（ａｃｔ１、ａｃｔ２など）を実行して、次状態に遷移する。状態Ｓに対して性能制約（性能制約１、性能制約２など）を記述する。遷移アクションａｃｔの実行にかかる時間を、括弧内に処理時間（処理時間１、処理時間２など）として記述する。一つの状態遷移モデルの中での共通事項として、機能制約とイベントキューを記述する。制御システムの動作の最後には終了状態（二重黒丸）に遷移して、動作が停止する。
【０１４３】
可用性計算装置における可用性計算処理について説明する。
まず、イベント列作成部が作成したイベント列を、可用性計算部（可用性評価装置１００）が入力する。そして、可用性計算部の中の状態遷移モデル実行部（模擬実行部１３０）が、入力したイベント列の先頭から順にイベントを読み出して対応する状態遷移を特定し、イベントキューでの待ち時間と遷移アクションの処理時間を計算する。そして、遷移アクションの記述に従って、他の構成要素へのイベント出力処理などを実行する。このとき発生したイベントは、最初に入力されたイベント列に追加され、状態遷移モデル実行部でのイベント読み出し処理の対象となる。
そして、すべてのイベントの処理が完了して読み出すイベントがなくなったら、瞬時可用性計算部が、待ち時間と処理時間の計算結果から瞬時可用性を計算して、その値を出力する。
そして、制約違反検出部が、入出力されたイベントが機能制約に違反しているかどうか検出し、イベントキューでの待ち時間と遷移アクションの処理時間が性能制約に違反しているかどうか検出し、その結果を出力する。
そして、可用性要求値と瞬時可用性計算値を比較して、制御システムが可用性要求を満たしているか評価し、可用性評価結果を出力する。
【０１４４】
状態遷移モデル実行部は、制御システムの構成要素（例えば、制御ソフト、監視ソフト、センサ処理、駆動処理）の振舞いを定義した状態遷移モデルを直接実行し、構成要素間でイベントをやり取りする。状態遷移モデルにイベントを入力（例えば周期的入力）すると、ある構成要素がイベントを受信し、イベントを受信した時点で既にイベントキューに入っているすべてのイベントから待ち時間（例えば監視処理時間）を計算し、受信したイベントに対応する遷移アクションにかかる処理時間（例えばセンサ処理時間）を計算し、受信イベントに対応する遷移アクションを実行する。遷移アクションには別の構成要素へのイベント出力処理などが記述されており、この記述に従って別の構成要素がイベントを受信し、同様に待ち時間と処理時間を計算する。そして、待ち時間と処理時間の計算結果を基に、入力イベント（例えば周期的入力）に対応する応答イベント（例えば周期的出力）が正常に出力されている時間を動作時間として積算する。また、ハードウェアの故障率を基に故障検出・切替を擬似的に発生させ（例えば故障検出、故障切替）、待ち時間と処理時間の計算結果も加えて、入力イベントに対応する応答イベントが途絶えてから再び出力されるまでの時間（例えばアクチュエータの障害発生から障害回復）を修復時間として積算する。以上の動作を運用期間に相当する時間だけ実行する。
瞬時可用性計算部は、システム運用時の動作時間の平均値と修復時間の平均値の比率から瞬時可用性を計算する。
制約違反検出部は、イベントキューでの待ち時間と遷移アクションの処理時間が性能制約に違反していることを検出し（例えばセンサ処理の性能制約違反）、その結果を出力する。
この出力結果に基づいて、可用性要求値と瞬時可用性計算値を比較して、制御システムが可用性要求を満たしているか評価する。
【０１４５】
これにより、以下の効果を得ることができる。
ハードウェアの故障率に加えて、構成要素と実行環境の機能制約、および状態遷移の性能制約を考慮することで、可用性評価結果の精度を高くすることができる。
制御システムの動作仕様を定義する状態遷移モデルを直接実行することで、ソフトウェアやハードウェアの開発前に可用性要求の未達成を発見することが可能になり、システム設計での不具合混入を防止することができる。
【０１４６】
なお、可用性計算処理の中のイベント列作成および入力処理において、イベント列は、システム稼動実績や開発者の経験から、事前にイベント列を確定的に作成するものであってもよい。イベント列は、イベント種別、入力順序、および入力時間の組で作成する。入力時間は、ある時刻からの相対的な時間で記述してもよいし、絶対的な時刻で記述してもよい。
また、システム稼動実績が乏しい場合や、今後のシステム稼動状況を予測しづらい場合などにおいて、イベント列は、指数分布などの確率分布を用いて記述し、計算時にイベント列を作成するものであってもよい。この場合、状態遷移モデル実行部は、各イベントの入力時間の間隔を、確率分布を用いて計算する。確率分布を用いて作成したイベント列は、入力時間が確率分布に従った値になったものである。
イベント列として、負荷変動を表すイベント列を作成することにより、動的な負荷変動を考慮した瞬時可用性を計算することができる。
【０１４７】
状態遷移モデルのインタフェースとポートに対する機能制約には、例えば、インタフェースに対する入出力制約、ポートに対する順序制約、またはこれらの組み合わせなどがある。
インタフェースに対する入出力制約とは、入出力されるイベントのパラメータ値とその間に成り立つ条件である。例えば、入力イベントのパラメータ値に許容される範囲などである。入出力制約違反は、例えばセンサやアクチュエータなどのハードウェアが故障して異常値を出力することで発生する。
ポートに対する順序制約とは、入力イベントの順序に対して成り立つ条件である。例えば、２組のイベントそれぞれに対して許容される入力順序などである。状態遷移モデルは、これらの順序制約を満たすように作成する。順序制約違反は、例えばセンサ処理、駆動処理、制御ソフトなどの個々の要素の状態遷移モデルは正しいが、これらを接続して組み合わせて並行動作させたときに想定外の矛盾が起きることで発生する。
【０１４８】
状態遷移モデルの実行に対する性能制約には、例えば、イベントキューでの待ち時間と遷移アクションの処理時間に対する動作時間制約などがある。
動作時間制約とは、イベントを受信した時点からこのイベントに対応する遷移アクションの実行が完了するまでの時間、すなわち待ち時間と処理時間の合計値に対して成り立つ条件である。例えば、最小値、最大値、平均値、標準偏差、確率分布などで条件を指定する。待ち時間と処理時間の合計値に許容される最小値と最大値を動作時間制約とする場合、制約違反検出部は、個々の遷移アクションの実行に対して、動作時間制約違反であるか否かを判定する。また、待ち時間と処理時間の合計値に許容される平均値・標準偏差・確率分布の範囲などを動作時間制約とする場合、制約違反検出部は、複数回の遷移アクションの実行に対して、平均値・標準偏差・確率分布などを算出し、それが所定の範囲（例えば±５％）から外れているかを判定することにより、動作時間制約違反であるか否かを判定する。
このような性能制約違反は、例えばセンサ処理、駆動処理、制御ソフトなどの個々の要素を接続して組み合わせて並行動作させたときに、一つの要素で複数のイベントに対応する処理が衝突して余計な待ち時間がかかることで発生する。
【０１４９】
可用性計算装置は、瞬時可用性計算値（可用性評価値）をそのまま出力するのではなく、制御システムが可用性要求を満たすか評価する評価値を計算して出力してもよい。例えば、可用性計算装置は、可用性計算値を分子、可用性要求値を分母とした比率である要求達成度を計算して出力する。
要求達成度の計算式を以下に示す。
瞬時可用性の要求達成度＝（瞬時可用性計算値／可用性要求値）×１００［％］。
例えば、瞬時可用性計算値が０．９９、可用性要求値が０．９９９であるとすると、可用性計算装置は、瞬時可用性の要求達成度を０．９９／０．９９９×１００＝９９．１％と計算する。
【０１５０】
状態遷移モデルの記法には、いくつかの変種がある。例えば、状態遷移モデルの各状態に入るときに実行される入り口（Ｅｎｔｒｙ）アクション、および各状態から出るときに実行される出口（Ｅｘｉｔ）アクションを記述する方式がある。
【０１５１】
図２４は、入り口アクション・出口アクションが記述された状態遷移モデルの一例を示す図である。
この例において、「状態２」には、入り口アクションとして「処理Ｃ」、出口アクションとして「処理Ｄ」が記述されている。
【０１５２】
システムモデル設計装置８１０が、システムモデルとして、例えばこのような形式で記述される状態遷移モデルを生成する場合、可用性評価装置１００は、モデル変換装置を有する構成であってもよい。
モデル変換装置は、このような形式で記述される状態遷移モデルを、入り口アクションや出口アクションのない形式で記述される状態遷移モデルに変換する。モデル変換装置は、入り口アクション及び出口アクションを、遷移アクションに変換した状態遷移モデルを生成する。
入り口アクションは、これが記述されている状態に入ってくるすべての状態遷移に共通の処理なので、すべての入ってくる状態遷移の遷移アクションに引き続きＥｎｔｒｙアクションを実行するように変換する。出口アクションは、これが記述されている状態から出て行くすべての状態遷移に共通の処理なので、すべての出て行く状態遷移の遷移アクションの前に出口アクションを実行するように変換する。
【０１５３】
図２５は、モデル変換装置が変換した状態遷移モデルの一例を示す図である。
この例において、モデル変換装置は、「処理Ｃ」を「処理Ａ」の後および「処理Ｆ」の後に実行される遷移アクションに変換し、「処理Ｄ」を「処理Ｂ」の前および「処理Ｅ」の前に実行される遷移アクションに変換して、入り口アクション・出口アクションを含まない状態遷移モデルを生成する。
【０１５４】
以上説明した可用性計算装置は、状態遷移モデルの各状態に入るときに実行される入り口（Ｅｎｔｒｙ）アクション、および各状態から出るときに実行される出口（Ｅｘｉｔ）アクションを遷移アクションに変換して、可用性を計算する。
これにより、制御システムの動作仕様を定義する状態遷移モデルに、入り口アクションや出口アクションが記述されている場合でも、可用性を評価することができる。
【符号の説明】
【０１５５】
１００  可用性評価装置、１１０  動作モデル記憶部、１１１  構成要素記憶部、１１２  状態記憶部、１１３  アクション記憶部、１１４  イベント記憶部、１１５  実行条件記憶部、１１６  状態遷移記憶部、１２１  入力イベント記憶部、１２２  キューモデル記憶部、１２３  順序条件記憶部、１２４  処理時間条件記憶部、１２５  障害検出条件記憶部、１３０  模擬実行部、１３１  状態模擬記憶部、１３２  実行条件判定部、１３３  状態遷移模擬部、１３４  アクション模擬部、１３５  イベント模擬部、１３６  キュー模擬部、１３７  順序条件違反判定部、１４１  障害発生判定部、１４２  復旧判定部、１４３  動作時間算出部、１４４  修復時間算出部、１４５  動作時間記憶部、１４６  修復時間記憶部、１４７  平均動作時間算出部、１４８  平均修復時間算出部、１４９  可用性算出部、１５１  処理時間違反判定部、１５２  処理時間違反記憶部、１５３  機能制約違反記憶部、１５４  評価結果出力部、６１０  構成要素データ、６１１  構成要素ＩＤ、６１２  構成要素名、６１３  初期動作ＩＤ、６１５  状態データ、６１６  状態ＩＤ、６１７  状態名、６１８  所属要素ＩＤ、６２０  アクションデータ、６２１  アクションＩＤ、６２２  アクション名、６２３  実行要素ＩＤ、６２４  実行時間、６２５  実行内容、６３０  イベントデータ、６３１  イベントＩＤ、６３２  イベント名、６３３  発生アクションＩＤ、６３４  遅延時間、６４０  実行条件データ、６４１  実行条件ＩＤ、６４２  条件状態ＩＤ、６４３  条件イベントＩＤ、６４４  遷移先ＩＤ、６４５  パラメータ条件、６４６  状態遷移データ、６４７  状態遷移ＩＤ、６４８  実行アクションＩＤ、６４９  遷移先ＩＤ、６５０  入力イベントデータ、６５１  入力イベントＩＤ、６５２  入力時刻、６５５  キューデータ、６５６  キューＩＤ、６５７  取得要素ＩＤ、６５８  取得方式、６５９  優先度、６６０  取得イベントデータ、６６１  取得キューＩＤ、６６２  取得イベントＩＤ、６６５  順序条件データ、６６６  順序条件ＩＤ、６６７  条件状態ＩＤ、６６８  条件イベントＩＤ、６６９  遷移先ＩＤ、６７０  処理時間条件データ、６７１  処理時間条件ＩＤ、６７２  先行イベントＩＤ、６７３  後続イベントＩＤ、６７４  間隔下限、６７５  間隔上限、６８０  障害検出条件データ、６８１  障害検出条件ＩＤ、６８２  先行イベントＩＤ、６８３  後続イベントＩＤ、６８４  間隔下限、６８５  間隔上限、７００  評価対象システム、７０１，７０２  センサ、７０３  センサ処理プログラム、７０４  制御処理プログラム、７０５  監視処理プログラム、７０６  駆動処理プログラム、７０７  アクチュエータ、７１１，７１４  センサ動作状態、７１２，７１５  センサ故障状態、７１３，７１６  センサ待機状態、７１７，７１８  観測待ち状態、７１９  制御状態、７２１  監視状態、７２２  応答待ち状態、７２３  制御待ち状態、７２４  駆動待ち状態、７３１，７３４  初期化アクション、７３２，７３５  観測アクション、７３３，７３６  修理アクション、７３７，７３９  センサ処理アクション、７３８，７４１  切替アクション、７４２  制御アクション、７４３  応答アクション、７４４  報告要求アクション、７４５  応答処理��クション、７４６  駆動アクション、７４７  動作アクション、７５１，７５２  観測結果イベント、７５３，７５４  切替イベント、７５５  処理結果イベント、７５６  報告要求イベント、７５７  応答イベント、７５８  制御指示イベント、７５９  駆動イベント、７６１  動作イベント、７７１〜７９１  状態遷移条件、８００  設計システム、８１０  システムモデル設計装置、８２０  システム詳細設計装置、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2011022774.tif 000003
【図２】
2011022774.tif 000004
【図３】
2011022774.tif 000005
【図４】
2011022774.tif 000006
【図５】
2011022774.tif 000007
【図６】
2011022774.tif 000008
【図７】
2011022774.tif 000009
【図８】
2011022774.tif 000010
【図９】
2011022774.tif 000011
【図１０】
2011022774.tif 000012
【図１１】
2011022774.tif 000013
【図１２】
2011022774.tif 000014
【図１３】
2011022774.tif 000015
【図１４】
2011022774.tif 000016
【図１５】
2011022774.tif 000017
【図１６】
2011022774.tif 000018
【図１７】
2011022774.tif 000019
【図１８】
2011022774.tif 000020
【図１９】
2011022774.tif 000021
【図２０】
2011022774.tif 000022
【図２１】
2011022774.tif 000023
【図２２】
2011022774.tif 000024
【図２３】
2011022774.tif 000025
【図２４】
2011022774.tif 000026
【図２５】
2011022774.tif 000027