(57)【要約】【課題】本発明は、各アクティビティ毎の所要時間等の確率情報に基づき、プロセス実行時のプロセス全体の所要時間等の予測統計情報を、シミュレーションによって取得することを目的とするものである。【解決手段】プロセス定義の各アクティビティ毎に記憶された所要時間や遷移先アクティビティ等の確率分布情報と、乱数とによって、所要時間・遷移先アクティビティ等を決定し、決定した所要時間・遷移先アクティビティ等を記録し、決定した遷移先アクティビティを新たな処理対象アクティビティとする処理を、プロセスの最初のアクティビティから始めて、プロセスが終了するまで繰り返し実行するシミュレーションを、多数回実行することにより、所要時間等の予測統計情報を取得する。【選択図】図１
2009122874.tif 000002
【特許請求の範囲】
【請求項１】
プロセス定義の各アクティビティ毎に、アクティビティの所要時間の確率分布の情報と、遷移先アクティビティの確率分布の情報とを記憶した確率情報記憶手段と、
乱数発生手段と、
前記確率情報記憶手段から取得した確率情報と、前記乱数発生手段から取得した乱数とによって、所要時間・遷移先アクティビティを決定し、決定した所要時間を記録し、決定した遷移先アクティビティを新たな処理対象アクティビティとする処理を、プロセスの最初のアクティビティから始めて、プロセスが終了するまで繰り返し実行する、シミュレーション処理・結果記憶手段と、
前記シミュレーション処理・結果記憶手段を多数回実行した結果の統計情報を表示する統計処理・情報表示手段とからなることを特徴とする、
プロセスシミュレーションシステム。
【請求項２】
プロセス定義の各アクティビティ毎に、アクティビティの所要時間の確率分布の情報と、アクティビティ実行により混入される不具合の個数の確率分布の情報と、既に混入された不具合を発見する確率の情報とを記憶した確率情報記憶手段と、
乱数発生手段と、
前記確率情報記憶手段から取得した確率情報と、前記乱数発生手段から取得した乱数と、不具合混入元情報（混入済みの各不具合がどのアクティビティで混入されたかの情報）とによって、所要時間・遷移先アクティビティ・新たに混入される不具合の個数を決定し、不具合混入元情報を更新し、決定した所要時間を記録し、決定した遷移先アクティビティを新たな処理対象アクティビティとする処理を、プロセスの最初のアクティビティから始めて、プロセスが終了するまで繰り返し実行する、シミュレーション処理・結果記憶手段と、
前記シミュレーション処理・結果記憶手段を多数回実行した結果の統計情報を表示する統計処理・情報表示手段とからなることを特徴とする、
プロセスシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセスシミュレーションシステムに関するものである。
【背景技術】
【０００２】
近年、業務のプロセスを、コンピュータシステムの支援によって設計・運用することにより、業務の生産性を上げる取り組みが、多くの企業でなされており、ワークフローの設計・運用ソフトウエアも多く発売されている。ワークフローは、ＷｆＭＣ（Workflow Management Coalition）（http://www.wfmc.org）によって、標準化が推進されている。
【０００３】
定型業務以外であっても、ソフトウエア開発のプロジェクト等では、アローダイアグラムやガントチャート図等を用いた進捗計画を立て、プロジェクトはその進捗計画に基づいて業務を実行するべきであるとされている。この進捗計画は、プロセス定義の一種であると言える。
【０００４】
業務プロセスをあらかじめ定義して実行することは、業務を制御し改善していくために有効である。しかし、あらかじめ定義した手順自体に問題があると、現場業務に混乱をきたすこともあるため、プロセス定義は、実際の作業内容をふまえ、問題がないかを十分に検討して設計されなくてはならない。
【０００５】
なお、本発明における「プロセス」「プロセス定義」「アクティビティ」の用語の意味はＷｆＭＣの定義に従う。
【０００６】
また、アクティビティ間で引き継がれる文書・情報・タスク等の欠陥、瑕疵、問題点等を「不具合」と呼び、不具合の発見により文書・情報・タスク等の引き継ぎが中断され、以前に実行したアクティビティへ戻されることを「差し戻し」と呼ぶこととする。
【特許文献１】特開２０００−２５０９６７号公報
【特許文献２】特開２００７−１０９０６８号公報
【特許文献３】特開平８−１９０５８７号公報
【非特許文献１】Workflow Management Coalition Terminology & Glossary （１９９９年２月）(http://www.wfmc.org)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
プロセス定義は、実際の作業内容をふまえ、問題がないかを十分に検討して設計されなくてはならない。しかし、実際の作業内容を把握しても、それを業務プロセスの設計に反映させるのは困難である。たとえば、プロジェクト管理において全体納期等を見積もるためにＰＥＲＴという手法が知られているが、プロセス実行時の条件によって複数のアクティビティから１つを選択して実行する場合や、差し戻しが発生する場合について手法を適用することはできない。また、各アクティビティの所要時間は、業務の難易度や担当者のスキルによってばらつくが、そのバラツキ具合の情報を反映させることができない。
【０００８】
このため、プロセス定義の最適化や改善は、プロセス定義設計者の主観、経験、技量に頼る部分が大きいのが現状である。
【０００９】
また、プロセス運用後の結果によって、プロセス定義の良し悪しを判断することも難しい。なぜなら、プロセス運用後の結果には、担当者のスキルや士気など、プロセス定義以外の要因が多く含まれているためである。全く同じ条件で複数のプロセスの結果を客観的な数値によって比較することができない限り、純粋にプロセス定義の良し悪しを判断することはできない。
【００１０】
本発明は、各アクティビティ毎の所要時間等の確率情報に基づき、プロセス実行時のプロセス全体の所要時間等の予測統計情報を、シミュレーションによって取得することを目的とするものである。
【課題を解決するための手段】
【００１１】
この課題を解決するための請求項１〜２の発明は、図１のように構成されるシステムである。
【００１２】
請求項１に記載の発明では、１は確率情報記憶手段であり、プロセス定義の各アクティビティ毎に、アクティビティの所要時間の確率分布の情報と、遷移先アクティビティの確率分布の情報とを記憶する。
【００１３】
２は乱数発生手段であり、乱数、または、疑似乱数を発生する。
【００１４】
３はシミュレーション処理・結果記憶手段であり、確率情報記憶手段１から取得した確率情報と、乱数発生手段２から取得した乱数とによって、所要時間・遷移先アクティビティを決定し、決定した所要時間を記録し、決定した遷移先アクティビティを新たな処理対象アクティビティとする処理を、プロセスの最初のアクティビティから始めて、プロセスが終了するまで繰り返し実行する。
【００１５】
４は統計処理・情報表示手段であり、シミュレーション処理・結果記憶手段３を多数回実行した結果の統計情報を表示する。
【００１６】
請求項２に記載の発明では、１は確率情報記憶手段であり、プロセス定義の各アクティビティ毎に、アクティビティの所要時間の確率分布の情報と、アクティビティ実行により混入される不具合の個数の確率分布の情報と、既に混入された不具合を発見する確率の情報とを記憶する。
【００１７】
２は乱数発生手段であり、乱数、または、疑似乱数を発生する。
【００１８】
３はシミュレーション処理・結果記憶手段であり、確率情報記憶手段１から取得した確率情報と、乱数発生手段２から取得した乱数と、不具合混入元情報（混入済みの各不具合がどのアクティビティで混入されたかの情報）とによって、所要時間・遷移先アクティビティ・新たに混入される不具合の個数を決定し、不具合混入元情報を更新し、決定した所要時間を記録し、決定した遷移先アクティビティを新たな処理対象アクティビティとする処理を、プロセスの最初のアクティビティから始めて、プロセスが終了するまで繰り返し実行する。
【００１９】
４は統計処理・情報表示手段であり、シミュレーション処理・結果記憶手段３を多数回実行した結果の統計情報を表示する。
【発明の効果】
【００２０】
本発明により、各アクティビティ毎の所要時間等の確率情報に基づき、プロセス実行時のプロセス全体の所要時間等の予測統計情報を、シミュレーションによって取得することができる。
【００２１】
これにより、アクティビティの選択実行や差し戻しが発生するプロセスであっても、それらの確率を設定することにより、プロセス実行結果の予測統計情報を得ることができる。また、各アクティビティの所要時間のバラツキ具合を、予測統計情報に反映させることができる。さらに、複数のプロセス定義の生産性を、全く同じ条件下で、客観的な数値によってシミュレーション比較することが可能である。
【００２２】
このシステムをワークフロー作成・運用ソフトや、プロジェクト進捗計画・管理ソフトなどに組み込むことにより、作成したプロセス定義を実際に運用する前に、プロセスの生産性を評価することが可能である。生産性に問題があれば、プロセス定義の一部を変更し、再度シミュレーションして効果を確認し、生産性が改善したらそれを採用するというトライ＆エラーの手法によって、運用前にプロセスの完成度を上げることができる。
【００２３】
さらに、たとえば、ウオーターフォールモデルとスパイラルモデルではどちらが品質・コスト・納期面でそれぞれ優れているか、といった開発プロセスの問題を、個別のプロジェクトの特性に応じて検討することが可能である。各開発プロセスについてプロセス定義データを作成し、各アクティビティの確率情報を過去のプロジェクトの実績値を元に見積もり、本発明のシステムを実行することにより、各開発プロセス毎の品質・コスト・納期の平均・分散を得ることができる。たとえば、納期の平均が小さく分散が大きい場合、平均して短納期だが納期遅延のリスクが高い開発プロセスである、という評価をすることができる。
【００２４】
さらに、請求項２の発明では、経過時間毎の不具合数の平均・標準偏差（σ）を取得することも可能である。プロジェクト計画時に予想不具合数の平均、および、平均±１σの推移をグラフとして作成し、プロジェクト実行時に実際の不具合数が±１σより外れた場合に原因を調査するというようにして、プロジェクト管理のモニタリング指標として使用するといった応用方法が考えられる。
【発明を実施するための最良の形態】
【００２５】
本発明の実施の形態を以下の実施例１〜３に説明する。
【実施例１】
【００２６】
以下、第一の発明の実施形態を、図２〜図５に基づいて説明する。図２は本発明の実施の形態の構成図、図３はプロセス定義データの例、図４は確率情報記憶手段に記憶された情報の例、図５はシミュレーション処理・結果記憶手段がプロセス終了時に記録する情報の例である。
【００２７】
図２において、１は確率情報記憶手段、２は乱数発生手段、３はシミュレーション処理・結果記憶手段、４は統計処理・情報表示手段、５はプロセス定義データ記憶手段である。プロセス定義データ記憶手段５は、例えば、図３のＵＭＬアクティビティ図で示すような、プロセスの開始と終了、各アクティビティの実行順序、並列実行（フォーク／ジョイン）、選択実行（デシジョン／マージ）などの情報を記憶する。実際のシステム内部では、配列等のデータ構造で記憶するが、詳細なデータ構造の説明は省略する。
【００２８】
確率情報記憶手段１は、各アクティビティ毎に、「所要時間の平均・分散」と、「各アクティビティへ遷移する確率」の情報を記憶する。
【００２９】
これらの確率情報は、プロセス定義データ、および、過去の類似作業の統計データや経験による推測値などから、あらかじめ算出・決定し、確率情報記憶手段１に記憶させておく。全ての数値をユーザーに入力させる方法のほか、プロセス定義データから自動的に決まる部分はシステムにより自動的に計算して記憶し、必要な部分のみユーザーに入力させる方法、ユーザーに手入力させる代わりに過去の統計データをそのまま入力させ、本システムが使用するフォーマットに変換する方法、いくつかの確率情報パターンのうちから一つをユーザーに選択させる方法、ワークフロー運用ツールの運用結果の統計データを使用する方法等が考えられる。
【００３０】
図４は確率情報記憶手段１に記憶された情報の例である。図３のプロセス定義の例について、アクティビティ毎に、「所要時間の平均・分散」と、「各アクティビティへ遷移する確率」の情報を記憶している。
【００３１】
たとえば、図３のプロセス定義の例では、アクティビティ２実行後、アクティビティ３かアクティビティ４を選択実行する定義となっている。この情報と、過去の統計データ等を用いて、「各アクティビティへ遷移する確率」を決定する。図４の例では、過去の類似作業の統計データから、アクティビティ２実行後、アクティビティ３へ遷移する確率が４０％、アクティビティ４へ遷移する確率が５０％、不具合が発見され差し戻される確率が１０％であると判断した場合を想定し、アクティビティ１へ遷移する確率を０．１、アクティビティ３へ遷移する確率を０．４、アクティビティ４へ遷移する確率を０．５とした。
【００３２】
遷移先のアクティビティが並列実行である、とプロセス定義データに定義されている場合は、並列実行する全てのアクティビティについてそのアクティビティへ遷移する確率を同じ確率とする。図３において、アクティビティ１実行後アクティビティ２とアクティビティ５を並列実行する定義となっているため、図４では、アクティビティ２へ遷移する確率とアクティビティ５へ遷移する確率がともに１．０となっている。
【００３３】
アクティビティ終了後プロセスが終了する、とプロセス定義データに定義されている場合は、終了以外の確率（以前のアクティビティへの差し戻しの確率）のみを各アクティビティへ遷移する確率に記憶させる。図３において、アクティビティ６実行後プロセス終了と定義されているため、図４では、アクティビティ１〜５へ遷移する確率をそれぞれ０．１としている。１．０からこれらの和を引いた値（０．５）が、終了する確率となる。
【００３４】
乱数発生手段２は、シミュレーション処理・結果記憶手段３からの指示に従って、都度、０．０以上１．０以下の乱数値を生成する。
【００３５】
シミュレーション処理・結果記憶手段３は、確率情報記憶手段１から取得した確率情報と、乱数発生手段２から取得した乱数とによって、所要時間・遷移先アクティビティを決定し、決定した所要時間を記録し、決定した遷移先アクティビティを新たな処理対象アクティビティとする処理を、プロセスの最初のアクティビティから始めて、プロセスが終了するまで繰り返し実行する。具体的手順を、以下に説明する。
【００３６】
まず、シミュレーション処理・結果記憶手段３は、プロセス定義データ記憶手段５からプロセスの最初のアクティビティの番号の情報を取得し、それを「現在のアクティビティの番号」として記憶する（手順１）。
【００３７】
次に、シミュレーション処理・結果記憶手段３は、確率情報記憶手段１から「現在のアクティビティの番号」の行の確率情報を取得する（手順２）。
【００３８】
そして、シミュレーション処理・結果記憶手段３は、確率情報記憶手段１から取得した「所要時間の平均・分散」の情報と、乱数発生手段２とから取得した乱数値とによって、所要時間を決定する（手順３）。決定方法は次の通りである。「所要時間の平均・分散」の情報から、所要時間をｔとしたときの累積分布関数Ｆ（ｔ）を作成する。また、乱数発生手段２から乱数値ａを取得する。Ｆ（ｔ）について、ｔを０．０から始めて、０．１ずつ進め、Ｆ（ｔ）が初めて乱数値ａを超えたときのｔを所要時間として決定する。なお、本例では、ｔを０．０から始めて、０．１ずつ進めているが、所要時間の単位や求められる精度によって、値をユーザーがカスタマイズできるようにする。また、本例では所要時間は正規分布に従うと想定しているが、他の分布を用いても良く、ユーザーが設定により選択できるようにするのが望ましい。また、「所要時間の平均・分散」の代わりに、過去の統計データをそのまま分布情報として使用することも可能である。Ｆ（ｔ）は必ずしも数式で表される必要はなく、入力ｔに対してその累積分布を出力するプログラムとして表現できればよい。
【００３９】
また、シミュレーション処理・結果記憶手段３は、確率情報記憶手段１から取得した「各アクティビティへ遷移する確率」の情報と、乱数発生手段２とから取得した乱数とによって、遷移先アクティビティ番号を決定する（手順４）。決定方法は次の通りである。「各アクティビティへ遷移する確率」の情報から、遷移先アクティビティ番号をｎとしたときの累積分布関数Ｇ（ｎ）を作成する。また、乱数発生手段２から乱数値ｂを取得する。Ｇ（ｎ）について、ｎを１から始めて、最後のアクティビティ番号まで、１ずつ進め、Ｇ（ｎ）が初めて乱数値ｂを超えたときのｎを遷移先アクティビティ番号として決定する。最後までＧ（ｎ）が乱数値を超えなかったときは、プロセスが終了するものとみなす。
【００４０】
ただし、遷移先が並列に実行される場合は、番号が小さい方のアクティビティへ遷移する確率のみを累積分布関数Ｇ（ｎ）に反映し、それ以外のアクティビティへ遷移する確率は０．０とみなしてＧ（ｎ）を作成する。遷移先が並列に実行されるか否かの情報は、プロセス定義データ記憶手段５から取得する。
【００４１】
最後に、「現在のアクティビティの番号」と、前記（手順３）で決定した所要時間とを記録し、前記（手順４）で決定した遷移先アクティビティ番号を「現在のアクティビティの番号」として記憶した後、前記（手順２）から処理を繰り返す。ただし、前記（手順４）でプロセス終了と決定した時は、終了する。
【００４２】
遷移先が並列に実行される場合は、並列に実行されるべきアクティビティの番号を「並列実行アクティビティ」として記憶した後、「並列実行アクティビティ」のうちいずれか１つのアクティビティの番号を取得してそれを「現在のアクティビティの番号」に設定し、前記（手順２）からの処理を繰り返す。そして、並列実行の結合点に到達したら、記憶しておいた「並列実行アクティビティ」から未実行のアクティビティの番号を取得してそれを「現在のアクティビティの番号」に設定し、前記（手順２）からの処理を繰り返す。これを全ての「並列実行アクティビティ」について繰り返す。
【００４３】
並列実行中、遷移先アクティビティが、並列に分岐する以前のアクティビティとなった場合は、記憶しておいた「並列実行アクティビティ」の情報を削除してから、遷移先アクティビティに遷移させる。これは、並列実行中、何らかの問題により差し戻された場合、全ての並行処理を中止して、前のアクティビティに戻る、という業務手順の場合を想定している。並列実行中、いずれかのアクティビティでのみ問題が発見された場合の業務手順は、業務の分野やユーザーによって異なると思われるため、分野やユーザーによって処理手順をカスタマイズできるようにする。他の業務手順としては、並行処理はそのまま進めつつ、差し戻しが発生したルートのみやり直す、という業務手順などが考えられる。また、業務手順を現場のその時々の判断に任せざるをえない場合は、いくつかの処理手順の中から、あらかじめ設定した確率情報と乱数とによって、採用する処理手順を決定するというオプションも選択できるようにする。
【００４４】
遷移先アクティビティが、以前に実行したアクティビティであり、かつ、そのアクティビティは並列実行されていたアクティビティであったときは、他の並列実行されていたアクティビティを再実行することはせず既に実行済みであると見なし、遷移先アクティビティからのルートのみを再実行する。これも、業務分野やユーザーによって業務手順が異なると思われるため、業務分野やユーザーによって処理手順をカスタマイズできたり、確率情報と乱数によって処理手順を決定したりするようにする。
【００４５】
以前実行したアクティビティに差し戻され、一度通ったルートを再度やり直す場合、各アクティビティの所要時間は最初に通る場合よりも少ないことが考えられる。これを考慮して、一度通ったルートを再度通る場合は、前記（手順３）の手順で求めた値から８０％引きした値を所要時間とするなど、あらかじめ設定したルールにしたがって減らす。業務分野やユーザーによって、処理手順をカスタマイズできるようにする。
【００４６】
また、以前実行したアクティビティに差し戻される場合、差し戻しが発生するアクティビティ（問題を発見したアクティビティ）は、差し戻しを行わず普通にプロセスが進行する場合に比べて、所要時間が異なることが考えられる。たとえば、差し戻し理由を説明するための文書を作成することにより所要時間が増加したり、そのアクティビティで実行すべき処理を実行しないために所要時間が減少したりする。これを考慮して、前記（手順３）の手順で求めた値から５０％引きした値を所要時間とするなど、あらかじめ設定したルールにしたがって増減させる。また、遷移先アクティビティ毎に所要時間の確率分布情報を記憶し、遷移先決定後に、その遷移先に従って所要時間を決定する、という方法もある。業務分野やユーザーによって、処理手順をカスタマイズできるようにする。
【００４７】
以上の手順の結果として、プロセスを最初から最後まで実行したときの、アクティビティの番号とその所要時間とをその実行順に記録した情報が得られる。これは、プロセスの運用結果の可能性の１つである。
【００４８】
シミュレーション処理・結果記憶手段３がプロセス終了時に記録する情報の例を図５に示す。この記録情報の例は、図３のプロセス定義について、次のようなルートをたどったときの結果の例である。まず、最初のアクティビティは１であるため、アクティビティ１を実行し記録番号１に記録する。次は、アクティビティ２とアクティビティ５の並列実行である。まず、アクティビティ２を実行し記録番号２に記録する。さらにアクティビティ３を実行し記録番号３に記録する。次に、アクティビティ２、アクティビティ３と並列実行されるべきアクティビティである、アクティビティ５を実行し、記録番号４に記録する。アクティビティ５において、遷移先がアクティビティ１であると決定されたため、確率情報と乱数から決定した所要時間を５０％引きして記録番号４に記録した後、アクティビティ１へ遷移する。さらにアクティビティ１から処理を繰り返すが、差し戻しであるため確率情報と乱数から決定した所要時間を８０％引きして記録番号５に記録する。以降、プロセスが終了するまで記録されるが、説明は省略する。なお、統計処理・情報表示手段４においてより詳細な統計情報を作成するため、図５のように、「開始時の経過時刻」などの付加情報を適宜追加する。
【００４９】
統計処理・情報表示手段４は、シミュレーション処理・結果記憶手段３を多数回（例えば１００万回）実行し、その結果の統計情報を表示する。統計情報とは、たとえば、プロセス全体の所要時間の分布、各アクティビティ毎の累積所要時間の分布、各アクティビティ毎の実行回数の分布、総コストの分布、平均コストの推移などである。
【実施例２】
【００５０】
実施例１では、同時に実行されるプロセスインスタンスは１つしかない。つまり、たとえば、文書の作成・レビュー・承認のプロセスを考えたとき、同時に複数の文書を処理することは考えられていない。しかし、現実には、複数の文書を同時に処理することも多く、この場合、ボトルネックとなるアクティビティの処理能力によって、プロセス全体の処理能力が決まってくる。よって、複数のプロセスインスタンスを同時進行するシミュレーションができた方が良い。以下、第二の発明の実施形態として、複数のプロセスインスタンスを同時進行するシミュレーションの実施例を図６に基づいて説明する。図６は本発明の実施の形態の構成図である。
【００５１】
図６における１〜５の説明は、実施例１に示したものと同様である。ただし、シミュレーション処理・結果記憶手段３は、同時に実行されうるプロセスインスタンスの個数以上用意する。６は時刻情報記憶手段であり、シミュレーション上の現在時刻を記憶する。７はプロセスインスタンス発生確率情報記憶手段であり、プロセスインスタンスの発生確率の情報と、「プロセスインスタンスの内容量」（たとえば文書の枚数）の平均・分散の情報とを記憶する。たとえば、プロセスインスタンスの発生はポアソン分布にしたがい平均到着率（λ）が０．３であり、「プロセスインスタンスの内容量」の平均は１０．３、分散は３．５である、といった情報を記憶する。８はリソース使用状況記憶手段であり、各アクティビティ毎に、その最大リソース数および使用中リソース数が記憶されている。最大リソース数とは、そのアクティビティが同時に処理できるプロセスインスタンスの数であり、例えば担当者の人数である。あるプロセスインスタンスがアクティビティを開始すると、そのアクティビティの使用中リソース数を＋１し、アクティビティが終了すると使用中リソース数を−１する。使用中リソース数が最大リソース数と同じ場合、アクティビティの開始は、他のプロセスインスタンスがリソースを解放するまで、待たされることとなる。
【００５２】
まず、統計処理・情報表示手段４は、時刻情報記憶手段６の時刻情報を０に設定する。
【００５３】
以後、統計処理・情報表示手段４は、時刻情報記憶手段６の時刻情報に０．１を加算する処理を繰り返し、加算する処理を実行するたびに、時刻更新の情報をシミュレーション処理・結果記憶手段３に伝達する。
【００５４】
また、統計処理・情報表示手段４は、時刻情報更新のたびに、前回のプロセスインスタンス発生時刻からの経過時間と、プロセスインスタンス発生確率情報記憶手段７に記憶されたプロセスインスタンス発生確率の情報、乱数発生手段２から取得した乱数とによって、プロセスインスタンスを発生させるか否かを決定する。プロセスインスタンスを発生させる場合は、さらに、プロセスインスタンス発生確率情報記憶手段７に記憶された「プロセスインスタンスの内容量」の平均・分散の情報、乱数発生手段２から取得した乱数とによって、「プロセスインスタンスの内容量」を決定する。そして、プロセスインスタンス実行中でないシミュレーション処理・結果記憶手段３に対し、プロセスの実行を指示する。
【００５５】
シミュレーション処理・結果記憶手段３の処理手順は実施例１と同様であるが、アクティビティの遷移については、アクティビティの所要時間・遷移先アクティビティを決定、記録した後、すぐに遷移させる代わりに、「アクティビティの開始時刻」を記憶しておき、次回以降に統計処理・情報表示手段４から時刻情報更新を伝達されたタイミングで、「アクティビティの開始時刻」と、記録されたアクティビティの所要時間との和が現在時刻以降となったかどうかを判定し、現在時刻以降であれば遷移させる。また、並列実行については、「現在のアクティビティの番号」を複数記憶できるようにし、統計処理・情報表示手段４から時刻情報更新を伝達されたタイミングで、並列実行中のアクティビティそれぞれについて遷移させるかどうかの判定を行うことにより、時刻情報記憶手段６の時刻情報に従って並列に実行させる。
【００５６】
また、所要時間は、実施例１に記述した決定方法で決定した時間に、「プロセスインスタンスの内容量」の値を乗じた値を用いる。
【００５７】
また、シミュレーション処理・結果記憶手段３は、アクティビティ遷移時に、リソース使用状況記憶手段８を参照し、使用中リソース数が最大リソース数と同じ場合、アクティビティ実行を開始せず、次回以降に統計処理・情報表示手段４から時刻情報更新を伝達されたタイミングで、リソース使用状況記憶手段８を参照してリソース数の判定を行い、使用中リソース数が最大リソース数未満となったら、アクティビティ実行を開始する。また、アクティビティ開始時に使用中リソース数を＋１し、終了時に−１する。
【００５８】
シミュレーション処理・結果記憶手段３はプロセスが終了したら、統計処理・情報表示手段４へ結果を通知する。統計処理・情報表示手段４はその結果を統計情報に反映させる。
【００５９】
以上の処理を多数回実行し、その結果の統計情報を表示する。
【実施例３】
【００６０】
以下、第三の発明の実施形態を、図２，図７〜図８に基づいて説明する。図２は本発明の実施の形態の構成図、図７は確率情報記憶手段１に記憶された情報の例、図８は不具合混入元情報の例である。
【００６１】
図２において、１は確率情報記憶手段、２は乱数発生手段、３はシミュレーション処理・結果記憶手段、４は統計処理・情報表示手段、５はプロセス定義データ記憶手段である。
【００６２】
確率情報記憶手段１は、各アクティビティ毎に、「所要時間の平均・分散」と、「混入される不具合の個数の平均・分散」と、「既に混入された不具合を発見する確率」の情報を記憶する。
【００６３】
図７は確率情報記憶手段１に記憶された情報の例である。図３のプロセス定義の例について、アクティビティ毎に、「所要時間の平均・分散」と、「混入される不具合の個数の平均・分散」と、「既に混入された不具合を発見する確率」の情報を記憶している。これらの確率情報は、プロセス定義、および、過去の類似作業の統計データや経験による推測値などから、あらかじめ算出・決定し、確率情報記憶手段１に記憶させておく。
【００６４】
たとえば、アクティビティ２の行は、アクティビティ２の実行により、その成果物に不具合を平均３．５個混入し、その分散は５．０であることを示している。また、アクティビティ２を開始した時点で混入されていた不具合を発見する確率が０．６であることを示している。これは、アクティビティ２を開始した時点で混入されていた不具合が５個であれば、アクティビティ２の実行によって平均３個を発見するということを意味している。
【００６５】
乱数発生手段２は、シミュレーション処理・結果記憶手段３からの指示に従って、都度、０．０以上１．０以下の乱数値を生成する。
【００６６】
シミュレーション処理・結果記憶手段３は、確率情報記憶手段１から取得した確率情報と、乱数発生手段２から取得した乱数と、不具合混入元情報（混入済みの各不具合がどのアクティビティで混入されたかの情報）とによって、所要時間・遷移先アクティビティ・新たに混入される不具合の個数を決定し、不具合混入元情報を更新し、決定した所要時間・遷移先アクティビティを記録し、決定した遷移先アクティビティを新たな処理対象アクティビティとする処理を、プロセスの最初のアクティビティから始めて、プロセスが終了するまで繰り返し実行する。具体的手順を、以下に説明する。
【００６７】
まず、シミュレーション処理・結果記憶手段３は、プロセス定義データ記憶手段５からプロセスの最初のアクティビティの番号の情報を取得し、それを「現在のアクティビティの番号」として記憶する（手順１）。
【００６８】
次に、シミュレーション処理・結果記憶手段３は、「現在のアクティビティの番号」の行の確率情報を確率情報記憶手段１から取得する（手順２）。
【００６９】
そして、シミュレーション処理・結果記憶手段３は、確率情報記憶手段１から取得した「所要時間の平均・分散」の情報と、乱数発生手段２とから取得した乱数とによって、所要時間を決定する（手順３）。決定方法は実施例１と同じである。
【００７０】
また、シミュレーション処理・結果記憶手段３は、「不具合混入元情報」と、確率情報記憶手段１から取得した「既に混入された不具合を発見する確率」の情報と、乱数発生手段２とから取得した乱数と、プロセス定義データ記憶手段５から取得した通常の遷移先の情報とによって、遷移先アクティビティを決定する（手順４）。「不具合混入元情報」とは、混入済みの各不具合についてその不具合がどのアクティビティで混入されたかの情報であり、シミュレーション処理・結果記憶手段３が「不具合混入元情報」を記憶する。プロセス開始時には「不具合混入元情報」は空である。また、遷移先アクティビティに遷移する前に、アクティビティの番号・所要時間とともに現在の「不具合混入元情報」を記録する。「不具合混入元情報」の例を図８に示す。
【００７１】
遷移先アクティビティの決定方法は次の通りである。現在の「不具合混入元情報」の各不具合について、乱数発生手段２から乱数を取得し、取得した乱数が、確率情報記憶手段１から取得した、「既に混入された不具合を発見する確率」以上であった場合、その不具合が現在のアクティビティで発見されるものとみなす。発見された不具合のうち、混入したアクティビティの番号がもっとも小さいものを遷移先のアクティビティ番号として決定する。
【００７２】
不具合が１つも発見されなかった場合は、プロセス定義データ記憶手段５から通常の遷移先の情報を取得し、それを遷移先のアクティビティ番号として決定する。遷移先を選択する必要がある場合は、確率を均等に割り振り、乱数によって決定する。実施例１と同様に、遷移先アクティビティ番号の確率情報を確率情報記憶手段１に含め、確率情報と乱数によって遷移先を決定するという方法もある。
【００７３】
さらに、シミュレーション処理・結果記憶手段３は、確率情報記憶手段１から取得した「混入される不具合の個数の平均・分散」の情報と、乱数発生手段２とから取得した乱数とによって、混入される不具合の個数を決定する（手順５）。決定方法は次の通りである。「混入される不具合の個数の平均・分散」から、不具合の個数をｍとしたときの累積分布関数Ｈ（ｍ）を作成する。また、乱数発生手段２から乱数値ｃを取得する。Ｈ（ｍ）について、ｍを０から始めて、１ずつ進め、Ｈ（ｍ）が初めて乱数値ｃを超えたときのｍを不具合の個数として決定する。なお、本例では不具合個数は正規分布に従うと想定しているが、他の分布を用いても良く、ユーザーが設定により選択できるようにするのが望ましい。また、過去の統計データをそのまま分布情報として使用することも可能である。Ｈ（ｍ）は必ずしも数式で表される必要はなく、入力ｍに対してその累積分布を出力するプログラムとして表現できればよい。
【００７４】
ただし、そのアクティビティを実行するのが２回目以降の場合は、混入される不具合の個数は上記で求めた不具合の個数より減らす。たとえば、ｋ回目の実行であれば、上記で求めた不具合の個数×（（０．２）のｋ乗）（小数点以下切り捨て）を不具合の個数とする。これは、差し戻されて再度同じアクティビティを実行する場合は、さらに新たに混入する不具合は最初よりも少ないと考えられるためである。
【００７５】
そして、シミュレーション処理・結果記憶手段３は、現在の「不具合混入元情報」から前記（手順４）で発見された不具合情報を削除し、前記（手順５）で決定した不具合個数分だけ不具合情報を追加する（手順６）。たとえば、「不具合混入元情報」にアクティビティ１で発生した５個の不具合の情報が記載されており、アクティビティ２でそのうちの２つを発見し、新たに不具合が３個混入されたのであれば、更新された「不具合混入元情報」は図８のようになる。６個の不具合の情報が記載され、混入元アクティビティ番号は、それぞれ、１，１，１，２，２，２となる。
【００７６】
最後に、「現在のアクティビティの番号」と、前記（手順３）で決定した所要時間と、前記（手順６）で更新された「不具合混入元情報」とを記録し、前記（手順４）で決定した遷移先アクティビティ番号を「現在のアクティビティの番号」として記憶した後、前記（手順２）から処理を繰り返す。ただし、前記（手順４）でプロセス終了と決定した時は、終了する。
【００７７】
遷移先が並列に実行される場合の処理手順は、実施例１と同様である。
【００７８】
差し戻された場合の処理手順についても、実施例１と同様である。さらに、不具合を発見しても差し戻さず修正作業と通常ルートの作業を並行作業するなどの業務手順も考えられるため、できる限り様々な業務手順を考慮し、現実の業務に即した処理手順をユーザーが選択できるようにする。また、差し戻されたときに同時に発見された不具合の個数に従って、再実行するアクティビティの所要時間を増減させる。例えば、（１回目の実行の場合の所要時間）＊０．０３＊（同時に発見された不具合の個数）を所要時間とする。
【００７９】
不具合については、発見しても重要度が低ければ修正しないということも考えられる。これを考慮して、不具合毎に重要度を確率情報と乱数とから決定し、重要度が低いものは差し戻さずそのままにするといったオプションをユーザーが選択できるようにする。
【００８０】
また、不具合を発見した場合、関連する不具合を同時に発見する可能性が高いことを考慮し、前記（手順４）の不具合発見の決定手順において、発見不具合１つごとに一定の確率でもう１つの不具合を発見不具合に追加するオプションをユーザーが選択できるようにする。
【００８１】
以上の手順の結果として、プロセスを最初から最後まで実行したときの、アクティビティの番号とその所要時間と不具合混入元情報とをその実行順に記録した情報が得られる。これは、プロセスの運用結果の可能性の１つである。
【００８２】
統計処理・情報表示手段４は、シミュレーション処理・結果記憶手段３を多数回（例えば１００万回）実行し、その結果の統計情報を表示する。統計情報とは、たとえば、プロセス全体の所要時間の分布、各アクティビティの累積所要時間の分布、各アクティビティの実行回数の分布、不具合数の推移、最終的に残存する不具合数の分布などである。
【００８３】
なお、実施例２と同様にして、実施例３について複数のプロセスインスタンスが同時進行する場合のシミュレーションを行うことができる。この場合、混入される不具合数は、前記（手順５）に記述した決定方法で決定した数に、「プロセスインスタンスの内容量」を乗じた値を用いる。
【図面の簡単な説明】
【００８４】
【図１】本発明の原理構成図である。
【図２】本発明の実施の形態の構成図である。（実施例１、３）
【図３】プロセス定義データの例である。
【図４】確率情報記憶手段に記憶された情報の例である。（実施例１）
【図５】シミュレーション処理・結果記憶手段がプロセス終了時に記録する情報の例である。（実施例１）
【図６】本発明の実施の形態の構成図である。（実施例２）
【図７】確率情報記憶手段に記憶された情報の例である。（実施例３）
【図８】不具合混入元情報の例である。（実施例３）
【符号の説明】
【００８５】
１    確率情報記憶手段
２    乱数発生手段
３    シミュレーション処理・結果記憶手段
４    統計処理・情報表示手段
５    プロセス定義データ記憶手段
６    時刻情報記憶手段
７    プロセスインスタンス発生確率情報記憶手段
８    リソース使用状況記憶手段
【図１】
2009122874.tif 000003
【図２】
2009122874.tif 000004
【図３】
2009122874.tif 000005
【図４】
2009122874.tif 000006
【図５】
2009122874.tif 000007
【図６】
2009122874.tif 000008
【図７】
2009122874.tif 000009
【図８】
2009122874.tif 000010