メッセージシーケンス生成方法および装置
【目的】状態およびイベントに関する制約条件を容易に入力し、その制約条件を満足するメッセージシーケンスを生成するメッセージシーケンス生成方法および装置を提供することを目的とする。
【構成】通信ソフトウェアに関する状態遷移仕様を入力(102)させ、その状態遷移仕様に基づいて状態遷移表を生成して表示し、その状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力(104)させ、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成(105)するようにする。
【効果】内容把握の難しい状態遷移仕様に対して理解が容易なメッセージシーケンス図を提示できるため、仕様の検証、レビュー、および保守が容易になる。
【構成】通信ソフトウェアに関する状態遷移仕様を入力(102)させ、その状態遷移仕様に基づいて状態遷移表を生成して表示し、その状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力(104)させ、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成(105)するようにする。
【効果】内容把握の難しい状態遷移仕様に対して理解が容易なメッセージシーケンス図を提示できるため、仕様の検証、レビュー、および保守が容易になる。
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、メッセージシーケンスを生成する方法および装置に関し、詳しくは、状態遷移仕様で表現した通信ソフトウェアに関するメッセージシーケンスを自動的に作成するメッセージシーケンス生成方法および装置に関する。
【0002】
【従来の技術】従来、通信ソフトウェア仕様に関するメッセージシーケンス図を自動的に作成するメッセージシーケンス図生成方法に関しては、次に示すような三つの方法が知られている。
【0003】(1)第1の方法として、例えば、特開平3−91855号に記載の方法がある。これは、人間との会話形式により入力装置から初期の自局の状態および相手局からの受信メッセージを初期値として入力して、単一の状態遷移表仕様を解析し、初期値から自局が行う処理と相手局への送信メッセージおよび次に遷移する自局の状態を決定し、さらに相手局からの受信メッセージが入力されると次の動作を決定する、というような動作を行なってメッセージシーケンス図を生成する方法である。すなわち、人間との会話形式により、手作業で受信メッセージや送信メッセージを入力し、順次メッセージシーケンスを生成する方法である。
【0004】(2)第2の方法として、例えば、伊藤篤ほか著、通信ソフトウェア仕様の設計と解析のためのシーケンスチャートと状態遷移図の相互変換、電子情報通信学会技術研究報告、第91巻、第93号(1991年6月20日)第37頁から第46頁に記載の方法がある。これは、複数の状態遷移図仕様からプロセス対応最大到達遷移系列検証法に基づき、自動的にメッセージシーケンスを生成する方法である。
【0005】(3)さらに第3の方法として、例えば、森保健治ほか著、通信プロトコル設計におけるリバースエンジニアリング,1991年電子情報通信学会春季大会講演論文集、第3分冊、第98頁に記載の方法がある。これは、複数の状態遷移図仕様から到達可能解析に基づき、自動的にメッセージシーケンスを生成する方法であって、生成するメッセージシーケンスを特徴付ける制約条件を与えることによって、効率的にメッセージシーケンスを生成する方法である。その制約条件は、各状態遷移図に対応する部分メッセージシーケンスの積、和、補集合により定義している。
【0006】
【発明が解決しようとする課題】ところが、上記従来技術は、メッセージシーケンス生成方法および装置としては使い易いとはいえず、次に示すような問題があった。
【0007】まず従来方法(1)では、メッセージシーケンス毎に相手局からの受信メッセージをすべて手作業で入力する必要がある。したがって、入力に手間がかかり効率的でないという問題があった。
【0008】従来方法(2)は、メッセージシーケンスを自動的に生成する。しかし、可能性のあるすべてのメッセージシーケンスを生成するために多大な時間がかかるという問題がある。また、生成された多数のメッセージシーケンスの中から必要なメッセージシーケンスを選択することが容易でない。
【0009】従来方法(3)は、制約条件を入力して、その制約条件を満足するメッセージシーケンスを自動生成するようにしている。しかし、制約条件を数式で記述するため、その入力は容易でない。また、入力できる制約条件はイベントに関するものであり、状態に関する制約条件を与えることはできない。さらに、制約条件が緩い場合に従来方法(2)と同様に多数のメッセージシーケンスを生成する可能性があるという問題がある。
【0010】また、上述の従来方法すべてに共通する問題として、利用目的に合わせて表示するメッセージシーケンス図の詳細度を変更することができないという問題がある。すなわち、送受信メッセージや各種の動作などをすべて網羅したメッセージシーケンスが欲しい場合もあるし、逆に、送受信メッセージだけ表されていれば詳細な内部処理は不要の場合もある。従来方法では、このような利用目的に応じてメッセージシーケンス図の詳細度を変更することはできない。
【0011】さらに、状態遷移仕様の開発を複数の人間が異なる部署で行う場合、同一のメッセージに対して送信側と受信側で異なる名称を与える可能性がある。上述の従来方法ではこのような可能性は考慮されていないため、メッセージシーケンスを作成するときには、人手で同一のメッセージで異なる名称になっているものを探し、同一メッセージにするという作業を行なう必要がある。
【0012】本発明の第1の目的は、状態遷移仕様からメッセージシーケンスを生成する場合に、イベントに関する制約条件以外に、状態に関する制約条件をも指定可能であり、かつ制約条件の入力が容易なメッセージシーケンス生成方法および装置を提供することにある。
【0013】本発明の第2の目的は、利用目的に合わせて表示するメッセージシーケンス図の詳細度を変更することが可能なメッセージシーケンス生成方法および装置を提供することにある。
【0014】本発明の第3の目的は、設計者のチェック可能な限度を越える多数のメッセージシーケンスを生成しないようにすることのできるメッセージシーケンス生成方法および装置を提供することにある。
【0015】本発明の第4の目的は、同一のメッセージに対して送信側と受信側で異なる名称を与えられた状態遷移仕様に対しても処理が可能なメッセージシーケンス生成方法および装置を提供することにある。
【0016】
【課題を解決するための手段】上記の目的を達成するため、本発明に係るメッセージシーケンス生成方法および装置は、通信ソフトウェアに関する状態遷移仕様を入力させ、その状態遷移仕様に基づいて状態遷移表を生成して表示し、その状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力させ、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成することを特徴とする。
【0017】生成したメッセージシーケンスは、メッセージシーケンス図として対話用端末に表示するようにするとよい。また、メッセージシーケンス図の表示は、送受信されるメッセージ、メッセージの送受信により変化する状態、分岐条件、および内部処理の中から任意に組合せて指定された構成要素からなるメッセージシーケンス図を表示するようにするとよい。
【0018】状態遷移表は、例えば、遷移前の各状態と発生する各イベントとに応じてどのように状態が遷移するかを一覧表形式で表したものである。生成条件の入力では、状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンスの開始点となる初期状態および初期イベントの指定、並びに(ii)生成するメッセージシーケンスの終了点となる終端状態および/または終端イベントの指定を行なうようにする。さらに、状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンス中に必ず含まれる状態の指定、(ii)生成するメッセージシーケンス中に必ず含まれるイベントの指定、(iii) 生成するメッセージシーケンス中には必ず含まれない状態の指定、および/または、(iv)生成するメッセージシーケンス中には必ず含まれないイベントの指定を行なうようにしてもよい。
【0019】メッセージシーケンスの生成においては、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成するようにするとよい。また、生成されるメッセージシーケンスの最大個数を指定させるようにし、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了するようにしてもよい。
【0020】メッセージシーケンスの生成は、(i) 前記生成条件を満足するすべてのメッセージシーケンスを生成するか、(ii)前記生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成するか、または、(iii) 指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成するかを、指定することができ、指定された方法に従ってメッセージシーケンスを生成するようにしてもよい。
【0021】さらに、入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで付した名称を表示して利用者に確認させるようにしてもよい。また、同一のメッセージに対して送信側と受信側とで異なる名称が付与されている場合には、送信側名称と受信側名称とを関連付けるための対応関係情報を入力させるようにしてもよい。
【0022】
【作用】状態遷移仕様に基づき発生する可能性のあるすべてのメッセージシーケンスの中で、与えられた生成条件を満足するメッセージシーケンスを生成することができる。このとき、メッセージシーケンスを生成する場合のイベントおよび状態に関する制約条件として、表示された状態遷移表の中の各状態および各イベントに対して独立に初期条件、終端条件、通過条件、あるいは非通過条件などの区別を指定可能とすることにより、状態とイベントの組合せである特定の状態遷移に対する制約条件の指定を容易に行なうことができる。
【0023】また、メッセージシーケンスを構成する要素毎に表示の要否を指定させることにより、表示構成要素の任意の組合せを指定することができる。
【0024】さらに、生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成することもできる。これは、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成することにより実現できる。指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成することもできる。これは、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了することにより実現できる。
【0025】また、入力された状態遷移仕様に対して送信メッセージに対応する送信先が存在しない場合には送信先と送信先におけるメッセージ名称の入力を要求することにより、送信側メッセージ名称と受信側メッセージ名称が異なる場合の対応関係情報を入力させることができる。
【0026】
【実施例】以下、本発明の一実施例を、図面を用いて説明する。
【0027】図2に、本発明の一実施例に係るメッセージシーケンス生成方法を適用したメッセージシーケンス生成装置のハードウェア構成の一例を示す。このメッセージシーケンス生成装置は、利用者からのコマンド等を入力するキーボードおよびマウスからなる入力装置201、計算機内部の処理を行う処理装置202、データおよびプログラムを格納する記憶装置203、並びに、コマンドの実行結果、記憶しているデータの内容、および利用者に対するメッセージ等を表示する表示装置204を備えている。
【0028】図1に、本実施例のメッセージシーケンス生成方法を実現する装置の機能構成の一例を示す。この図は、図2の装置で、メッセージシーケンスを生成する際に実行される機能に着目したブロック図である。
【0029】実行制御機能101は、入力装置201からのコマンドを受け付けて、各機能を実行制御する。状態遷移仕様編集機能102は、利用者が状態遷移仕様を新規作成および修正することを支援し、状態遷移情報111を生成および修正する。入出力関係情報入力機能103は、モジュール毎に記述された状態遷移仕様のメッセージの送受信関係を表示し、利用者にそれらの関係を確認させ、あるいは利用者が修正や追加を行なうことを支援する。そして、修正や追加があった場合は、記憶装置203に記憶されている状態遷移情報111を更新する。
【0030】生成条件情報入力機能104は、利用者がメッセージシーケンス図生成のための条件を入力することを状態遷移情報111を利用して支援し、生成条件情報112を生成し記憶装置203に格納する。メッセージシーケンス生成機能105は、状態遷移情報111から生成条件情報112を満足するメッセージシーケンスを生成し、メッセージシーケンス情報113を生成する。メッセージシーケンス図表示機能106は、メッセージシーケンス情報113に基づくメッセージシーケンス図を表示装置204に表示する。
【0031】メッセージシーケンスの生成は、上記の各機能を順次実行することにより行なわれる。すなわち、まず状態遷移仕様編集機能102で、メッセージシーケンスを生成しようとする各モジュールの状態遷移仕様を入力する。そして、入出力関係情報入力機能103で状態遷移仕様のメッセージの送受信関係を修正確認する。次に、生成条件情報入力機能104でメッセージシーケンスを生成する際の条件を入力する。そして、その条件にしたがって、メッセージシーケンス生成機能105でメッセージシーケンスを生成し、メッセージシーケンス図表示機能106で表示する。
【0032】以下、状態遷移仕様が状態遷移表によって記述される場合の図1における手順の詳細を説明する。
【0033】図3は、1つのモジュールの状態遷移表の一例を示す。図3において、上端横列の各枠301、302はモジュールの取りうる状態を表し、左端縦列の各枠303、304は他のモジュールからのメッセージ受信を含む発生イベントを表す。状態とイベントの交差する枠には、その枠に対応する状態(S0〜Sn)においてその枠に対応するイベント(E1〜En)が発生した場合の処理が定義される。
【0034】例えば、枠305では、状態S0においてイベントEnが発生した場合の処理が定義される。各枠の処理として、該当処理を実行する条件、メッセージ送信を含む動作、および動作処理終了後の遷移先状態が記述される。例えば、図3の枠305では、条件1が成立する場合に実行する動作1a,1b,…とそれらの動作終了後の遷移先状態1などが記述されている。条件や条件に対する動作は0個または複数個でもよい。
【0035】本実施例の装置が起動されると、図1の実行制御機能101は、表示装置204に図4の起動初期画面を表示する。図4の画面において利用者がファイルメニュー401を選択すると、実行制御機能101は図5R>5に示すプルダウンメニュー501を表示する。
【0036】図5において、利用者が状態遷移表編集メニュー502を選択すると、実行制御機能101は図1の状態遷移仕様編集機能102を起動する。これにより、状態遷移仕様編集機能102を実行して、図3の状態遷移図のような状態遷移仕様の入力や編集を行なうことができる。
【0037】図5において、入出力関係情報入力メニュー503が選択されると、実行制御機能101は図1の入出力関係情報入力機能103を起動する。これにより、入出力関係情報入力機能103を実行して、各モジュール間のメッセージ送受信関係の確認、修正、あるいは追加を行なうことができる。
【0038】図5において、終了メニュー504が選択されると、実行制御機能101は起動初期画面の表示を取消し、すべての処理を終了する。
【0039】図4において、利用者が生成メニュー402を選択すると、実行制御機能101は図6に示すプルダウンメニュー601を表示する。図6において、利用者が生成条件情報入力メニュー602を選択すると、実行制御機能101は図1の生成条件情報入力機能104を起動する。これにより、生成条件情報入力機能104を実行して、メッセージシーケンス生成の際の条件を入力することができる。
【0040】図6において、シーケンス生成メニュー603が選択されると、実行制御機能101は図1のメッセージシーケンス生成機能105を起動する。これにより、メッセージシーケンス生成機能105を実行して、メッセージシーケンスを生成する処理を行なうことができる。
【0041】図4において、利用者が表示メニュー403を選択すると、実行制御機能101は図7に示すプルダウンメニュー701を表示する。図7において、利用者がシーケンス図メニュー702を選択すると、実行制御機能101は図1のメッセージシーケンス図表示機能106を起動する。これにより、メッセージシーケンス図表示機能106が実行され、生成されたメッセージシーケンス図が表示装置204に表示される。
【0042】図4において、利用者がオプションメニュー404を選択すると、実行制御機能101は図8に示すプルダウンメニュー801を表示する。図8において、利用者が表示形式メニュー802を選択すると、実行制御機能101は、後述するメッセージシーケンス図表示形式選択画面(図40)を表示する。図8において、利用者が解析条件メニュー803を選択すると、実行制御機能101は、後述する解析条件設定画面(図41R>1)を表示する。
【0043】なお、図4から図8あるいは後述する画面表示およびそのような画面表示の元での入力を実現する方式は、どのようなものでもよい。例えば、木下凌一著、X−Window Ver.11プログラミング、日刊工業新聞社(1989年)などにおいて述べられている従来より用いられている方式を用いればよい。
【0044】以下、図1の各機能102〜106について詳しく説明する。
【0045】図1の状態遷移仕様編集機能102には、図3のような状態遷移表の作成を直接支援する機能や状態遷移図から状態遷移表への変換を支援する機能等が含まれる。これらの機能については、例えば、特開平1−152576号、または特開平2−100444号において述べられているので、説明を省略する。
【0046】状態遷移仕様編集機能102によって生成される状態遷移情報111は、概念的には図3のような状態遷移表を表す情報ととらえてよいが、実際に装置内部では図9から図14に示す形式で記憶されている。
【0047】図9に示す状態遷移表リストのエントリ(以下、状態遷移表エントリと呼ぶ)900は、図3の状態遷移表対応に存在する。状態遷移表エントリ900は、装置側で割り当てる状態遷移表識別子901、利用者が入力する状態遷移表名称902、状態リスト(図10R>0)の記憶場所を示す状態リストポインタ903、イベントリスト(図11)の記憶場所を示すイベントリストポインタ904、処理が記述された枠305に対応する状態遷移リスト(図12)の記憶場所を示す状態遷移リストポインタ905、および次の状態遷移表エントリの記憶場所を示す次エントリポインタ906からなる。
【0048】図10に示す状態リストのエントリ(以下、状態エントリと呼ぶ)1000は、図3の状態遷移表の上端横列の状態301、302対応に存在する。状態エントリ1000は、装置側で割り当てる状態識別子1001、利用者が入力する状態名称1002、後述する最小遷移数1003、および次の状態エントリの記憶場所を示す次エントリポインタ1004からなる。
【0049】図11に示すイベントリストのエントリ(以下、イベントエントリと呼ぶ)1100は、図3の状態遷移表の左端縦列のイベント303、304対応に存在する。イベントエントリ1100は、装置側で割り当てるイベント識別子1101、利用者が入力するイベント名称1102、イベントが他の状態遷移表から受信したメッセージか否かを示すメッセージフラグ1103、イベントが受信メッセージである場合の送信元状態遷移表識別子1104、および次のイベントエントリの記憶場所を示す次エントリポインタ1105からなる。メッセージフラグ1103の初期値はオフとする。
【0050】図12に示す状態遷移リストのエントリ(以下、状態遷移エントリと呼ぶ)1200は、図3の状態遷移表において処理が記述された各枠305対応に存在する。状態遷移エントリ1200は、装置側で割り当てる状態遷移識別子1201、状態遷移処理に対応する状態エントリ1000の識別子1202、状態遷移処理に対応するイベントエントリ1100の識別子1203、状態遷移の処理に含まれる条件に対応する処理リスト(図13)の記憶場所を示す処理リストポインタ1204、後述する非通過フラグ1205と遷移実行カウンタ1206、および次の状態遷移エントリの記憶場所を示す次エントリポインタ1207からなる。
【0051】図13に示す処理リストのエントリ(以下、処理エントリと呼ぶ)1300は、図3の状態遷移表の枠305に含まれる各条件対応に存在する。処理エントリ1300は、装置側で割り当てる条件識別子1301、利用者が入力する条件名称1302、処理終了後の遷移先状態の識別子1303、処理に含まれる動作リスト(図14)の記憶場所を示す動作リストポインタ1304、および次の処理エントリの記憶場所を示す次エントリポインタ1305からなる。
【0052】図14に示す動作リストのエントリ(以下、動作エントリと呼ぶ)1400は、図3の状態遷移表の枠305に含まれる各動作対応に存在する。動作エントリ1400は、装置側で割り当てる動作識別子1401、利用者が入力する動作名称1402、動作が他の状態遷移表へのメッセージ送信か否かを示すメッセージフラグ1403、動作がメッセージ送信である場合の送信先状態遷移表識別子1404、送信先状態遷移表における送信メッセージに対応するイベント識別子1405、後述するチャネル識別子1406、および次の動作エントリの記憶場所を示す次エントリポインタ1407からなる。メッセージフラグの初期値はオフとする。
【0053】以上のように、図1の状態遷移仕様編集機能102によって、図9〜図14に示すような形式で状態遷移情報111が定義される。言い替えれば、モジュール毎の状態遷移表(図3)が入力されたこととなる。なお、上述の各リストにおいて、リストの最後のエントリの次エントリポインタの値は0とする。
【0054】次に、図1の入出力関係情報入力機能103について説明する。入出力関係情報入力機能103は、図5の入出力関係情報入力メニュー503が選択されると起動される。本機能は、動作とイベントの対応関係を推定する機能、および利用者に推定した関係を表示し、確認、修正させる機能からなる。
【0055】対応関係を推定する機能は、同一名称を持つ動作名称1402とイベント名称1102とを対応させる機能である。すなわち、動作名称1402とイベント名称1102とが同一である場合はこれらを送受信関係にあるメッセージとみなし、対応するイベントエントリ1100のメッセージフラグ1103と動作エントリ1400のメッセージフラグ1403とをオンにセットし、動作エントリ1400の送信先状態遷移表識別子1404と送信先イベント識別子1405を設定する。
【0056】推定した関係を表示して確認修正させる機能では、まず図16に示すような画面を表示する。図16R>6は、状態遷移表対応に画面が存在し、前表ボタン1601、次表ボタン1602を操作することにより他の状態遷移表の情報を表示させることができる。画面には、表示されている状態遷移表の名称1603、その状態遷移表のイベント名称1604、1605、および動作名称1606、1607が表示される。
【0057】利用者は、イベント名称1604、1605のイベントに対応する送信元状態遷移表名称を1608、1609のフィールドに、送信元状態遷移表における動作名称を1610、1611のフィールドに入力することができる。例えば、状態遷移表名称1608の状態遷移表の動作名称1610の動作が、現在着目している状態遷移表名称M1(フィールド1603)の状態遷移表のイベントE1(フィールド1604)に相当するということである。
【0058】また利用者は、動作名称1606、1607の動作に対応する送信先状態遷移表名称を1612、16139のフィールドに、送信先状態遷移表におけるイベント名称を1614、1615のフィールドに入力することができる。例えば、現在着目している状態遷移表名称M1の状態遷移表の動作A1(フィールド1606)が、状態遷移表名称1612の状態遷移表のイベント名称1614のイベントに相当するということである。
【0059】ただし、対応関係を推定する機能により関連付けられた動作とイベントについては推定結果を該当欄(フィールド1608〜1615)に表示する。したがって、対応する動作とイベントに関して同一の名称を使用している場合には利用者は表示を確認するだけでよく、これらのフィールドに名称を入力する必要はない。
【0060】イベントと動作数が多く1画面に表示できない場合には複数画面に分けて表示し、前頁ボタン1616および次頁ボタン1617等を設けて、これらのボタンにより画面を切り替えるようにする。利用者は、確認や修正が終わると終了ボタン1618により終了を指示する。これにより図16の画面表示が終了する。また、利用者による修正個所に対応するイベントエントリ1100のメッセージフラグ1103、並びに動作エントリ1400のメッセージフラグ1403、送信先状態遷移表識別子1404、および送信先イベント識別子1405が更新される。さらに、送受信関係のある状態遷移表間に単方向のチャネルが設定される。
【0061】図15は、設定されたチャネルを表すチャネルリストのエントリ(以下、チャネルエントリと呼ぶ)1500を示す。チャネルエントリ1500は、装置側で割り当てるチャネル識別子1501、送信元状態遷移表識別子1502、送信先状態遷移表識別子1503、および次のチャネルエントリの記憶場所を示す次エントリポインタ1504からなる。
【0062】チャネルエントリ1500は、メッセージフラグ1403がオンである動作エントリ1400を持つ状態遷移表エントリ900の識別子901と送信先状態遷移表識別子1404との組合せに対応する。すなわち、動作エントリ1400のメッセージフラグ1403がオンのときは、その動作エントリ1400を持つ状態遷移表エントリ900の識別子901が、チャネルエントリ1500の送信元状態遷移表識別子1502に設定される。また、その動作エントリ1400の送信先状態遷移表識別子1404が、チャネルエントリ1500の送信先状態遷移表識別子1503に設定される。動作エントリ1400のチャネル識別子1406には、対応するチャネルエントリ1500の識別子1501が設定される。
【0063】なお、図16において、イベントに対応する送信元状態遷移表1608、1609が空欄の場合には、該当イベントを内部発生イベントとみなす。内部発生イベントとは、当該モジュール(現在着目している状態遷移表のモジュール)の内部で生じるイベントのことである。同様に、図16において、動作に対応する送信先状態遷移表1612、1613が空欄の場合には、該当動作を当該モジュール内で実行される内部動作とみなす。
【0064】さらに、送信元および送信先状態遷移表欄1608、1609、1612、1613には、状態遷移表が定義されていないモジュール名称を入力することもできるようになっている。この場合、動作名称1610、1611およびイベント名称1613、1614は空欄とする。そして、状態遷移表が定義されていないモジュールに対応する状態遷移表エントリ900を作成し、状態リストポインタ903、イベントリストポインタ904、状態遷移リストポインタ905は0とする。また、対応するイベントエントリ1100のメッセージフラグ1103はオフとし、送信元状態遷移表識別子1104に該当状態遷移表の識別子を設定する。対応する動作エントリ1400のメッセージフラグ1403もオフとし、送信先状態遷移表識別子1404に該当する状態遷移表の識別子901を設定する。
【0065】以上のようにして、状態遷移仕様編集機能102と入出力関係情報入力機能103とによって、各モジュールの状態遷移表と各状態遷移間のメッセージ送受信関係とが、図9〜図15の形式で定義されたこととなる。
【0066】次に、図1の生成条件情報入力機能104について説明する。生成条件情報入力機能104は、図6R>6の生成条件情報入力メニュー602が選択されると起動される。本機能は、利用者によるメッセージシーケンス生成のための条件の入力を支援する。利用者によって入力された条件は、生成条件情報112として記憶装置203に格納する。
【0067】図17は、本機能における表示画面を示す。利用者は、この図に示す画面から生成条件を入力する。この画面は状態遷移表対応に存在し、前表ボタン1701、次表ボタン1702を操作することにより他の状態遷移表の情報を表示させることができる。1703は表示されている状態遷移表の名称、1704は状態遷移表、1705と1706は現在画面上に表示されている部分の状態遷移表全体における位置を示す縦と横のスクロールバーを示す。
【0068】利用者が状態遷移表1704中の状態名称(図中の「CLOSED」「WFNC」など)またはイベント名称(図中の「T−CON REQ」「T−CONRSP」など)を直接指定すると、その部分にポップアップメニューが表示される。1707は表示されたポップアップメニューを示す。このポップアップメニューを用いて、指定された状態またはイベントに対する生成条件を選択する。
【0069】ポップアップメニュー1707のうち、初期設定メニュー1708は、生成されるメッセージシーケンスの初期状態または初期イベントであることを指定する。終端設定メニュー1709は、生成されるメッセージシーケンスの終端状態またはイベントであることを指定する。通過設定メニュー1710は、生成されるメッセージシーケンスに必ず含まれる状態またはイベントであることを指定する。非通過設定メニュー1711は、生成されるメッセージシーケンスに決して含まれない状態またはイベントであることを指定する。設定解除メニュー1712は、指定された状態またはイベントを指定なしの状態にリセットする。
【0070】初期状態は、各状態遷移表に対して必ず1個指定しなければならない。初期イベントは、状態遷移仕様全体で1個必ず指定しなければならない。一方、終端状態の指定は終端イベントの指定がある場合には省略可能である。終端イベントの指定も終端状態の指定がある場合には省略可能である。通過設定および非通過設定は複数の状態またはイベントに対して指定できる。
【0071】なお、指定内容は状態遷移表の上端および左端に表示するようにしている。また、非通過指定に対応する状態の列およびイベントの行にある枠は白色で表示し、その他の枠は着色表示することにより、利用者が生成条件の指定内容を容易に確認できるようにしている。図では、網かけしていない部分(例えば状態「WFNC」)が白色表示された非通過指定されている状態を示し、その他の網かけしてある部分が着色表示されたその他の状態を示す。生成条件の入力が終わると、利用者は終了ボタン1713を指定する。これにより図17の画面表示が終了する。
【0072】上記のようにして入力された生成条件は、生成条件情報112(図1)として図18から図22に示す形式で記憶される。以下、これらの形式を説明する。
【0073】図18に示す生成条件リストのエントリ(以下、生成条件エントリと呼ぶ)1800は、図3の状態遷移表対応に存在する。すなわち、1つの状態遷移表に関する生成条件を図17の画面で作成すると、その状態遷移表に対応する生成条件エントリ1800が作成されることになる。生成条件エントリ1800は、状態遷移表識別子1801、初期状態識別子1802、初期イベント識別子1803、終端状態識別子1804、終端イベント識別子1805、通過状態リストポインタ1806、通過イベントリストポインタ1807、非通過状態リストポインタ1808、非通過イベントリストポインタ1809、次の生成条件エントリの記憶場所を示す次エントリポインタ1810からなる。
【0074】状態遷移表識別子1801は、当該生成条件エントリ1800に対応する状態遷移表の識別子である。初期状態識別子1802、初期イベント識別子1803、終端状態識別子1804、および終端イベント識別子1805は、それぞれ、図17で入力した初期状態、初期イベント、終端状態、および終端イベントの識別子である。終端状態や終端イベントが省略されている場合、対応する識別子1804、1805は0とする。
【0075】通過状態リストポインタ1806、通過イベントリストポインタ1807、非通過状態リストポインタ1808、および非通過イベントリストポインタ1809は、それぞれ、図19の通過状態リスト1900、図20の通過イベントリスト2000、図21の非通過状態リスト2100、および図22の非通過イベントリスト2200の記憶場所を示すポインタである。
【0076】図19に示す通過状態リストのエントリ(以下、通過状態エントリと呼ぶ)1900は、通過状態識別子1901、および次の通過状態エントリの記憶場所を示す次エントリポインタ1902からなる。図17R>7の画面において利用者が通過状態の指定をすると、その状態の識別子を通過状態識別子1901とする通過状態エントリが生成される。
【0077】図20に示す通過イベントリストのエントリ(以下、通過イベントエントリと呼ぶ)2000は、通過イベント識別子2001、および次の通過イベントエントリの記憶場所を示す次エントリポインタ2002からなる。図17の画面において利用者が通過イベントの指定をすると、そのイベントの識別子を通過イベント識別子2001とする通過イベントエントリが生成される。
【0078】図21に示す非通過状態リストのエントリ(以下、非通過状態エントリと呼ぶ)2100は、非通過状態識別子2101、および次の非通過状態エントリの記憶場所を示す次エントリポインタ2102からなる。図17の画面において利用者が非通過状態の指定をすると、その状態の識別子を非通過状態識別子2101とする非通過状態エントリが生成される。
【0079】図22に示す非通過イベントリストのエントリ(以下、非通過イベントエントリと呼ぶ)2200は、非通過イベント識別子2201、および次の非通過イベントエントリの記憶場所を示す次エントリポインタ2202からなる。図17の画面において利用者が非通過イベントの指定をすると、そのイベントの識別子を非通過イベント識別子2201とする非通過イベントエントリが生成される。
【0080】次に、図1のメッセージシーケンス生成機能105について説明する。メッセージシーケンス生成機能105は、図6のシーケンス生成メニュー603が選択されると起動される。本機能は、状態遷移情報111(図9〜15)に基づいて、生成条件情報112(図1818〜22))を満足するメッセージシーケンスを生成する。具体的には、メッセージシーケンス情報113を生成する。
【0081】図23は、本機能が起動されたとき表示される画面を示す。利用者は、この図に示す画面からメッセージシーケンスの生成方法を選択する。
【0082】ボタン2301を選択すると、生成条件を満足するすべてのメッセージシーケンスを生成する。ボタン2302を選択すると、生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成する。ボタン2303を選択すると、フィールド2304に指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成する。
【0083】実行ボタン2305を選択することにより、選択された方法によるメッセージシーケンスの生成が開始され、図24に示すメッセージシーケンス生成中画面が表示される。取消ボタン2306を選択することにより、メッセージシーケンス生成を行うことなく、図4R>4の起動初期画面に戻ることができる。
【0084】図24のメッセージシーケンス生成中画面では、生成されたメッセージシーケンスの個数をフィールド2401に更新表示する。メッセージシーケンスの生成が終了すると、図4の起動初期画面に戻る。生成数フィールド2401の初期値は0である。なお、取消ボタン2402を選択することによりメッセージシーケンス生成を中止して図4の起動初期画面に戻ることができる。
【0085】以下では、生成条件を満足するすべてのメッセージシーケンスを生成する手順(図23でボタン2301を選択した場合)について図25から図28に示すフローチャートを用いて説明する。
【0086】図25は、メッセージシーケンス生成処理の流れを示すフローチャートである。まず、初期化ブロック2501において各種の初期化を行なう。次に、終了条件チェックブロック2502で、シーケンス生成処理を終了するかどうか判別し、終了してもよい場合は処理を終了し、図24のメッセージシーケンス生成中表示画面の表示を取り消す。非終了の場合はシーケンス探索処理ブロック2503を実行し、ブロック2502に戻る。
【0087】ブロック2502の終了または非終了の判別は、具体的には、シーケンス生成候補リスト(図36R>6)が空か否かをチェックすることにより行なう。シーケンス生成候補リストおよびブロック2502の判別については、後述する。
【0088】図26は、図25の初期化ブロック2501の詳細な流れを示すフローチャートである。
【0089】初期化ブロック2501では、まず非通過フラグ設定ブロック2601により、生成条件エントリ1800(図18)が示す非通過状態または非通過イベントを含む状態遷移エントリ1200(図12)の非通過フラグ1205をオンに、非通過状態および非通過イベントを含まない状態遷移エントリ1200の非通過フラグ1205をオフに、それぞれ設定する。
【0090】次に、最小遷移数計算ブロック2602においては、各状態遷移表における状態をノード、非通過フラグがオフである状態遷移を距離1の有向枝とみなし、生成条件エントリ1800(図18)の初期状態1802から各状態への最短距離を計算する。計算結果は、最小遷移数として状態エントリ1000の最小遷移数1003に設定する。なお、初期状態から到達できない状態の最小遷移数は0とする。
【0091】生成シーケンス数初期設定ブロック2603においては、生成シーケンス数を0(初期値)に設定する。
【0092】次に、グローバル初期状態設定ブロック2604においては、図29に示すグローバル状態リストのエントリ(以下、グローバル状態エントリと呼ぶ)2900を生成し、初期値を設定する。
【0093】グローバル状態とは、チャネルを含めて各モジュールの状態を全体としてとらえた状態をいう。各モジュールの取り得る状態は、そのモジュールに対応する状態遷移表に表されているが、状態遷移表はモジュールに対応して複数あるので、1つの状態遷移表に着目して同じ状態であったとしても、他の状態遷移表の状態が異なるときは全体としては別の状態にあるといえる。メッセージシーケンスを生成する際には、複数の状態遷移表を考慮した全体としての状態を把握する必要があるため、図29〜図35のようにグローバル状態に関するリストを作成し、それらを用いてメッセージシーケンス生成を行なうようにしている。
【0094】図29を参照して、グローバル状態エントリ2900について説明する。グローバル状態エントリ2900は、グローバル状態識別子2901、ローカル状態リストポインタ2902、チャネル状態リストポインタ2903、通過条件レコードポインタ2904、最小遷移数2乗和2905、遷移元グローバル状態識別子2906、イベント発生状態遷移表識別子2907、イベント識別子2908、条件識別子2909、および次のグローバル状態エントリの記憶場所を示す次エントリポインタ2910からなる。
【0095】グローバル状態識別子2901は、装置側で割り当てるグローバル状態の識別子である。上述したように、まずグローバル初期状態設定ブロック2604においてグローバル状態エントリ2900が1つ生成される。
【0096】ローカル状態リストポインタ2902は、対象とする状態遷移表に対応するローカル状態リスト(図30)の記憶場所を示すポインタである。ローカル状態とは、各状態遷移表に示されている1つ1つの状態(例えば、図3の状態遷移表の状態S0,…,Sn)をいう。チャネル状態リストポインタ2903は、チャネルに対応するチャネル状態リスト(図31)の記憶場所を示すポインタである。
【0097】図30に、ローカル状態リストのエントリ(以下、ローカル状態エントリと呼ぶ)3000の内容を示す。ローカル状態エントリ3000は、状態遷移表識別子3001、ローカル状態識別子3002、および次のローカル状態エントリの記憶場所を示す次エントリポインタ3003からなる。図26のグローバル初期状態設定ブロック2604において、ローカル状態識別子3002には、初期値として生成条件リストの初期状態識別子1802が設定される。すなわち、すべての状態遷移表でそれぞれ設定された初期状態の組が、グローバル初期状態となる。
【0098】図31に、チャネル状態リストのエントリ(以下、チャネル状態エントリと呼ぶ)3100の内容を示す。チャネル状態エントリ3100は、チャネル識別子3101、チャネル上のメッセージの有無を示すチャネル状態3102、後述するメッセージリスト(図32R>2)の記憶場所を示すメッセージリストポインタ3103、および次のチャネル状態エントリの記憶場所を示す次エントリポインタ3104からなる。図26のグローバル初期状態設定ブロック2604においては、チャネル状態3102を「メッセージ無」に初期設定する。メッセージリストポインタ3103の初期値は0とする。
【0099】図32に、メッセージリストのエントリ(以下、メッセージエントリと呼ぶ)3200の内容を示す。メッセージエントリ3200は、送信先イベント識別子3201、および次のメッセージエントリの記憶場所を示す次エントリポインタ3202からなる。
【0100】再び図29を参照して、通過条件レコードポインタ2904は、グローバル状態エントリ2900毎に存在する生成条件の中の通過条件をチェックするための通過条件レコード(図33)の記憶場所を示すポインタである。通過条件に関する情報については図33から図35を参照して後述する。
【0101】最小遷移数2乗和2905は、当該グローバル状態を構成する各ローカル状態の最小遷移数1003の2乗和を記憶する領域である。ローカル状態間の最短経路はブロック2602で計算した最小遷移数が目安となるが、グローバル状態は複数のローカル状態の組み合わせであるため、何をもってグローバル状態間の最短経路を求めるかは適宜定義する必要がある。この実施例では、上記の最小遷移数2乗和2905により初期グローバル状態から当該グローバル状態への距離を表すようにしている。
【0102】遷移元グローバル状態識別子2906は、当該グローバル状態に到達する前のグローバル状態を示す識別子である。イベント発生状態遷移表識別子2907は、当該グローバル状態に到達するときに発生したイベントがどの状態遷移表からのものか、その状態遷移表の識別子を示す。イベント識別子2908は、当該グローバル状態に到達するときに発生したイベント発生状態遷移表識別子2907の状態遷移表のイベントを示すイベント識別子である。条件識別子2909は、当該グローバル状態に到達するときに発生したイベント中の条件(図3の枠305中の条件)を特定する。
【0103】言い替えると、遷移元グローバル状態識別子2906のグローバル状態において、イベント発生状態遷移表識別子2907の状態遷移表でイベント識別子2908のイベントが発生し、そのときに条件識別子2909の条件が成立している場合に、遷移元グローバル状態から当該グローバル状態に至るということになる。
【0104】図26のグローバル初期状態設定ブロック2604において、上述の最小遷移数2乗和2905は0に初期設定される。また、初期状態であるため、遷移元グローバル状態識別子2906、イベント発生状態遷移表識別子2907、イベント識別子2908、および条件識別子2909は、すべて0に初期設定される。
【0105】上記のようにグローバル初期状態設定を行なった後、通過条件レコード初期化ブロック2605において通過条件レコードなどの初期化を行なう。
【0106】図33は、通過条件レコード3300の内容を示す。通過条件レコード3300は、図29のグローバル状態エントリ2900の通過条件レコードポインタ2904で指し示されるレコードである。通過条件レコード3300は、通過状態チェックリスト(図34)の記憶場所を示す通過状態チェックリストポインタ3301、および通過イベントチェックリスト(図35)の記憶場所を示す通過イベントチェックリストポインタ3302からなる。
【0107】図34に、通過状態チェックリストのエントリ(以下、通過状態チェックエントリと呼ぶ)3400の内容を示す。通過状態チェックエントリ3400は、図19の通過状態エントリ1900に対応し、状態遷移表識別子3401、通過状態識別子3402、通過フラグ3403、および次の通過状態チェックエントリの記憶場所を示す次エントリポインタ3404からなる。
【0108】図35に、通過イベントチェックリストのエントリ(以下、通過イベントチェックエントリと呼ぶ)3500の内容を示す。通過イベントチェックエントリ3500は、図20の通過イベントエントリ2000に対応し、状態遷移表識別子3501、通過イベント識別子3502、通過フラグ3503、および次の通過イベントチェックエントリの記憶場所を示す次エントリポインタ3504からなる。
【0109】図26の通過条件レコード初期化ブロック2605においては、通過状態チェックエントリ3400および通過イベントチェックエントリ3400における通過フラグ3403および3503をオフに設定する。遷移実行カウンタ初期化ブロック2606においては、すべての状態遷移エントリ1200の遷移実行カウンタ1206を0に設定する。
【0110】次に、シーケンス生成候補リスト初期化ブロック2607について説明する。シーケンス生成候補リスト初期化ブロック2607では、シーケンス生成候補リストを生成する。
【0111】図36は、シーケンス生成候補リストのエントリ(以下、シーケンス生成候補エントリと呼ぶ)3600の内容を示す。シーケンス生成候補エントリ3600は、候補となるグローバル状態識別子3601、および次のシーケンス生成候補エントリの記憶場所を示す次エントリポインタ3602からなる。リストの最後のエントリにおける次エントリポインタは0とする。
【0112】図26のシーケンス生成候補リスト初期化ブロック2607においては、まずグローバル初期状態設定ブロック2604において生成したグローバル状態エントリ2900の複製を作成し、新たにグローバル状態識別子2901を割当てる。ここで、グローバル初期状態設定ブロック2604において生成したグローバル状態エントリ2900を第1番目のグローバル状態エントリと呼び、新たに作成した複製を第2番目のグローバル状態エントリと呼ぶものとする。第2番目のグローバル状態エントリ2900の遷移元グローバル状態識別子2906には、元のグローバル状態エントリ2900のグローバル状態識別子2901を設定する。また、初期イベント識別子1803が0でない生成条件エントリ1800に対応するイベント発生状態遷移表識別子2907およびイベント識別子2908を設定する。
【0113】そして、そのイベントに対応する状態遷移エントリ1200の非通過フラグ1205を参照する。非通過フラグ1205がオンならば、その状態遷移エントリ1200は非通過とするということであるから、生成したグローバル状態エントリ2900を廃棄し、初期化処理2607を終了する。
【0114】非通過フラグ1205がオフならば、生成したグローバル状態エントリの複製をさらに((条件数)−1)個作成し、それぞれに新たにグローバル状態識別子を割当てる。条件数とは、当該状態遷移エントリ1200の処理リストポインタ1204から辿ることのできる処理エントリ1300の数であり、言い替えれば、当該状態遷移エントリ1200に対応する図3の枠(例えば305)内に定義されている条件の数である。
【0115】((条件数)−1)個の複製は、第3番目〜第((条件数)+1)番目のグローバル状態エントリと呼ぶものとする。第2番目〜第((条件数)+1)番目の各グローバル状態エントリ2900(エントリ数は条件数)の条件識別子2909には、それぞれ、対応する処理エントリ1300の条件識別子1301を設定する。さらに、第2番目〜第((条件数)+1)番目の各グローバル状態エントリ2900のローカル状態リストポインタ2902が指し示すローカル状態エントリ3000のローカル状態識別子3002に、それぞれ、対応する処理エントリ1300の遷移先状態識別子1303を設定する。
【0116】次に、処理エントリ1300に対応する動作エントリ1400の中でメッセージフラグ1403がオンであるものについて、チャネル識別子1406と同じチャネル識別子3101を持つチャネル状態エントリ3100のチャネル状態3102を「メッセージ有」に設定する。また、図32に示すメッセージエントリ3200の送信先イベント識別子3201に送信先イベント識別子1405を設定し、メッセージエントリ3200のアドレスをメッセージリストポインタ3103に設定する。さらに最小遷移数2乗和2905を更新する。
【0117】次に、図36に示すシーケンス生成候補リストに初期グローバル状態を除く生成したグローバル状態をすべて加える。ブロック2607が終了すると初期化ブロック2501は終了する。
【0118】その後、図25の終了条件チェックブロック2502では図36のシーケンス生成候補リストが空か否かをチェックする。空ならばメッセージシーケンス生成処理を終了し、図24のメッセージシーケンス生成中表示画面の表示を取り消す。空でないならばシーケンス探索処理ブロック2503を実行し、ブロック2502に戻る。
【0119】シーケンス探索処理は、図36のシーケンス生成候補エントリ3600を1つずつ取出し、そのグローバル状態から遷移していくグローバル状態を順次探索し、遷移先のグローバル状態エントリ2900を生成していく。これは、生成条件として指定されている終端条件に至るまで行なわれる。結果は、図38のシーケンスリストに格納される。シーケンス探索処理の後は、図3838のシーケンスリストにエントリされているグローバル状態から遡って(遷移元グローバル状態識別子2906を用いる)、初期グローバル状態まで辿ることにより、1つのメッセージシーケンスが得られることとなる。
【0120】図27を参照して、シーケンス探索処理ブロック2503を詳細に説明する。まず、シーケンス生成候補選択ブロック2701では、シーケンス生成候補エントリ3600の中で最小遷移数2乗和2905が最も小さいものを選択する。以後、選択したシーケンス生成候補エントリ3600が示すグローバル状態からメッセージシーケンスを探索していく。選択したシーケンス生成候補エントリ3600は、シーケンス生成候補リストから取り除いておく。
【0121】最小遷移数2乗和2905が最も小さいものから選択するのは、重複の少ないメッセージシーケンスを優先的に生成するためにできるだけメッセージシーケンスの最初の方からシーケンスの探索を開始することを意図している。したがって、すべてのメッセージシーケンスを生成する場合には任意の候補を選択してもよい。
【0122】遷移候補リスト初期化ブロック2702では、図37に示す遷移候補リストを空にする。通過条件レコード更新ブロック2703では、選択されたグローバル状態の通過状態チェックリスト(図34)を更新する。すなわち、当該グローバル状態エントリ2900のイベント発生状態遷移表識別子2907、イベント識別子2908、および条件識別子2909から特定される遷移先状態識別子1303と一致する通過状態識別子3402を持つ通過状態チェックエントリ3400が存在すれば通過フラグ3403をオンに設定し、イベント発生状態遷移表識別子2907およびイベント識別子2908と一致する状態遷移表識別子3501および通過イベント識別子3502を持つ通過イベントチェックエントリが存在すれば通過フラグ3503をオンに設定する。
【0123】チャネル容量チェックブロック2704では、選択されたグローバル状態が、後述する解析条件設定画面(図41)により設定されたチャネル容量を越えていないかどうかをチェックする。すなわち、各チャネル状態エントリ3100に対応するメッセージリスト長がチャネル容量を越えるかどうかをチェックする。越える場合には、後述する遷移候補リストチェックブロック2709へ進む。越えない場合には、終端条件チェックブロック2705へ進む。
【0124】終端条件チェックブロック2705では、選択されたグローバル状態が生成条件の中の終端条件を満足するかどうかを調べる。終端条件を満足するのは、次の2つの場合である。まず第1は、選択されたグローバル状態に対応するすべてのローカル状態エントリ3000のローカル状態識別子3002が、それらのローカル状態エントリ3000に対応する生成条件エントリ1800の終端状態識別子1804に一致する場合である。第2は、イベント発生状態遷移表識別子2907およびイベント識別子2908に一致する状態遷移表識別子1801および終端イベント識別子1805を持つ生成条件エントリ1800が存在する場合である。
【0125】終端条件を満足する場合には、後述する通過条件チェックブロック2706へ進む。満足しない場合には、遷移候補リスト更新ブロック2708へ進む。
【0126】遷移候補リスト更新ブロック2708では、選択されたグローバル状態の次に起こり得るすべての遷移に対応するグローバル状態を求め、図37の遷移候補リストに追加する。次に起こり得る遷移には、チャネル上のメッセージの受信と内部発生イベントがある。
【0127】以下、遷移候補リスト更新ブロック2708における処理について説明する。
【0128】まず、選択されたグローバル状態エントリ2900に属し、チャネル状態3102が「メッセージ有」であるチャネル状態エントリ3100に対応して選択されたグローバル状態エントリの複製を作成し、新たにグローバル状態識別子を割当てる。そして、新たに作成したグローバル状態エントリの遷移元グローバル状態識別子2906に元のグローバル状態エントリのグローバル状態識別子を設定する。
【0129】また、チャネル状態3102が「メッセージ有」であるチャネル状態エントリ3100のチャネル識別子3101と一致するチャネル識別子1501を持つチャネルエントリ1500の送信先状態遷移表識別子1503をイベント発生状態遷移表識別子2907に設定し、チャネル状態エントリ3100に属するメッセージリスト3200の先頭エントリの送信先イベント識別子3201をイベント識別子2908に設定する。
【0130】さらに、メッセージリスト3200の先頭エントリを削除し、メッセージリスト3200が空になるならば、チャネル状態エントリ3100のチャネル状態3102を「メッセージ無」とする。イベント識別子2908に対応する状態遷移エントリ1200の非通過フラグ1205がオンならば、生成したグローバル状態エントリ2900を廃棄する。非通過フラグ1205がオフならば、さらに生成したグローバル状態エントリの複製を((条件数)−1)個作成し、それぞれに新たにグローバル状態識別子を割当てる。条件数とは、対応する状態遷移エントリ1200が含む処理エントリ数、すなわち当該状態遷移が含む条件の数(例えば図3の枠305内の条件数)である。これにより、条件数分のグローバル状態エントリが生成された。
【0131】次に、これら条件数分のグローバル状態エントリの各条件識別子2909に、状態遷移処理におけるそれぞれの条件に対応する処理エントリ1300の条件識別子1301を設定する。そして、処理エントリ1300の遷移先状態識別子1303を、対応するローカル状態エントリ3000のローカル状態識別子3002に設定する。
【0132】また、処理エントリ1300に対応する動作エントリ1400の中でメッセージフラグ1403がオンであるものについて、チャネル識別子1406と同じチャネル識別子3101を持つチャネル状態エントリ3100を探索し、そのチャネル状態3102が「メッセージ無」ならば「メッセージ有」に設定する。そして、送信先イベント識別子1405をメッセージエントリ3200の送信先イベント識別子3201に設定し、メッセージエントリ3200のアドレスをメッセージリストポインタ3103に設定する。チャネル状態3102が「メッセージ有」ならば、新たに、送信先イベント識別子1405を送信先イベント識別子3201に設定したメッセージエントリ3200を図32のメッセージリストに追加する。さらに、最小遷移数2乗和2905を更新する。
【0133】メッセージフラグ1103がオフであるイベントエントリ1100のイベント識別子1101と選択されたグローバル状態に属するローカル状態エントリ3000のローカル状態識別子3002とに対応する状態遷移エントリ1200が存在し、その非通過フラグ1205がオフであるならば、選択されたグローバル状態エントリの複製を作成し、新たにグローバル状態識別子を割当てる。そして、新たに生成したグローバル状態エントリの遷移元グローバル状態識別子2906に元のグローバル状態エントリのグローバル状態識別子を設定する。
【0134】そして、新たに生成したグローバル状態エントリのイベント発生状態遷移表識別子2907に、メッセージフラグ1103がオフであるイベントエントリ1100が属する状態遷移表エントリ900の状態遷移表識別子901を設定し、イベント識別子2908に、メッセージフラグ1103がオフであるイベントエントリのイベント識別子1101を設定する。
【0135】さらに、生成したグローバル状態エントリの複製を((条件数)−1)個作成し、それぞれに新たにグローバル状態識別子を割当てる。条件数とは、対応する状態遷移エントリ1200が含む処理エントリ数である。これにより、条件数分のグローバル状態エントリが生成された。
【0136】次に、これら条件数分のグローバル状態エントリの各条件識別子2909に、状態遷移処理におけるそれぞれの条件に対応する処理エントリ1300の条件識別子1301を設定する。そして、処理エントリ1300の遷移先状態識別子1303を、対応するローカル状態エントリ3000のローカル状態識別子3002に設定する。
【0137】また、処理エントリ1300に対応する動作エントリ1400の中でメッセージフラグ1403がオンであるものについて、チャネル識別子1406と同じチャネル識別子3101を持つチャネル状態エントリ3100を探索し、そのチャネル状態3102が「メッセージ無」ならば「メッセージ有」に設定する。そして、送信先イベント識別子1405をメッセージエントリ3200の送信先イベント識別子3201に設定し、メッセージエントリ3200のアドレスをメッセージリストポインタ3103に設定する。チャネル状態3102が「メッセージ有」ならば、新たに、送信先イベント識別子1405を送信先イベント識別子3201に設定したメッセージエントリ3200を図32のメッセージリストに追加する。さらに、最小遷移数2乗和2905を更新する。
【0138】次に、図37に示す遷移候補リストに、生成したグローバル状態を加える。ただし、グローバル状態リストの中のエントリ2900にローカル状態、メッセージリストを含むチャネル状態およびイベント識別子が一致するものがある生成したグローバル状態は廃棄する。
【0139】以上で、遷移候補リスト更新ブロック2708の処理が終了した。
【0140】ブロック2708の後、遷移候補リストチェックブロック2709へ進む。ブロック2709では、図37の遷移候補リストが空かどうかをチェックする。空ならば、シーケンス探索ブロック2503を終了する。空でないならば、遷移候補選択ブロック2710へ進む。
【0141】遷移候補選択ブロック2710では、図37R>7の遷移候補エントリ3700の中で、そのグローバル状態に対応する状態遷移エントリ1200の遷移実行カウンタ1206が最小のものを選択し、遷移候補リストから取り除く。その後、ブロック2703へ進む。ブロック2710は、重複の少ないメッセージシーケンスを優先的に生成するために未探索の状態遷移を先に探索することを意図している。したがって、すべてのメッセージシーケンスを生成する場合には任意の候補を選択してもよい。
【0142】通過条件チェックブロック2706では、選択されたグローバル状態に属する通過状態チェックリスト3400および通過イベントチェックリスト3500のすべての通過フラグ3403および3503がオンであるかどうかをチェックする。オンでないものがあれば、ブロック2709へ進む。オンであれば、シーケンス更新ブロック2707へ進む。
【0143】図28は、シーケンス更新ブロック2707の詳細な流れを示す。まず、生成シーケンス数更新ブロック2801では、生成シーケンス数を1増加させ、図24に示すシーケンス生成画面の生成数2401を更新する。シーケンス登録ブロック2802では、選択されたグローバル状態のグローバル状態識別子2901を図38に示すシーケンスリストに追加する。
【0144】遷移実行カウンタ更新ブロック2803では、選択されたグローバル状態から初期グローバル状態までの各グローバル状態に対応する状態遷移エントリ1200の遷移実行カウンタ1206を1増加させる。シーケンス生成候補リスト更新ブロック2804では、図3636のシーケンス生成候補リストに遷移候補リストを加える。
【0145】以上で、シーケンス更新ブロック2707が終了し、シーケンス探索ブロック2503が終了したことになる。
【0146】なお、生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成する方法は、ブロック2502において状態遷移リストの中の非通過フラグ1205がオフであるすべてのエントリについて遷移実行カウンタが非ゼロであるならば終了するという処理を追加することにより実現される。
【0147】また、指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成する方法は、ブロック2502において生成シーケンス数が指定された最大個数ならば終了するという処理を追加することにより実現される。
【0148】これらの方法はブロック2701および2719において、重複の少ないメッセージシーケンスを優先的に生成することを意図した処理が含まれているために実現可能となっている。
【0149】次に、図1のメッセージシーケンス図表示機能106について説明する。メッセージシーケンス図表示機能106は、図7のシーケンス図メニュー702が選択されると起動される。本機能は、メッセージシーケンス情報113に基づくメッセージシーケンス図を表示装置204に表示する。メッセージシーケンス情報113は、図38、および図29から図32に示す形式、並びに状態遷移情報111からなる。
【0150】図39は、本機能により表示装置204に画面表示されるメッセージシーケンス図の例を示す。この画面は、生成されたメッセージシーケンス対応に存在する。画面上には、前シーケンスボタン3901、および次シーケンスボタン3902が設けられており、これらを操作することにより他のメッセージシーケンス図を表示させることができる。また、画面表示を終了させるための終了ボタン3913が設けられている。
【0151】図において、3903はシーケンス番号、3904はメッセージシーケンス図、3905と3906はスクロールバーを示す。シーケンス番号3903は、表示されているメッセージシーケンス図の、生成されたメッセージシーケンス全体における相対的位置を示す。スクロールバー3905と3906は、現在画面上に表示されている部分のメッセージシーケンス図全体における位置を示す縦と横のスクロールバーである。
【0152】メッセージシーケンス図3904は、状態遷移表名称3907、状態名称3908、受信メッセージまたは内部発生イベントに対応するイベント名称3909、条件名称3910、内部動作に対応する動作名称3911、および送信メッセージに対応する動作名称3912からなる。なお、後述する表示形式選択画面(図4040)により状態名称、条件名称、および内部動作名称についての表示または不表示を選択できる。
【0153】メッセージシーケンスは、図38のシーケンスリストのエントリ3800に対応するグローバル状態を出発点として遷移元グローバル状態識別子2906を用いて順々に初期グローバル状態に到達するまで戻ることにより得られるグローバル状態の順序列で与えられる。
【0154】図8の表示形式メニュー802が選択されると、図40に示すメッセージシーケンス図表示形式選択画面を表示する。ボタン4001の選択は状態名称の表示を意味する。ボタン4002の選択は条件名称の表示を意味する。ボタン4003の選択は内部動作名称の表示を意味する。これらのボタンは任意の組合せで選択できる。ボタンによる選択がない場合には、送受信メッセージのみを表示する。なお、終了ボタン4004により画面表示を終了する。
【0155】図8の解析条件メニュー803が選択されると、図41に示す解析条件設定画面を表示する。フィールド4101には前述のチャネル容量チェックブロック2704におけるチャネル容量最大値を設定する。なお、終了ボタン4102により画面表示を終了する。
【0156】以上で説明した実施例では状態遷移仕様として状態遷移表が与えられる場合を仮定したが、状態遷移仕様として状態遷移図が与えられる場合でも、図17の表示画面を除いて本発明は適用可能である。
【0157】
【発明の効果】本発明によれば、次に示すような効果がある。
(1)状態遷移仕様からメッセージシーケンスを生成する場合の受信メッセージを含むイベントの制約条件以外に状態に関する制約条件も指定することができる。
(2)状態遷移表により制約条件を入力するので、制約条件の入力は非常に容易である。
(3)利用目的に合わせて表示するメッセージシーケンス図の詳細度を変更することが可能である。
(4)設計者のチェック可能な限度を越える多数のメッセージシーケンスを生成しないようにできる。
(5)同一のメッセージに対して送信側と受信側で異なる名称を与えられた状態遷移仕様に対しても処理することができる。
【0158】したがって、内容把握の難しい状態遷移仕様に対して理解が容易なメッセージシーケンス図の中で設計者が必要とするものだけを提示できるため、仕様の検証、レビュー、および保守が容易になるという効果がある。
【図面の簡単な説明】
【図1】図1は、本発明のメッセージシーケンス生成方法を実現する装置の機能構成の一例を示す図である。
【図2】図2は、本発明を適用したメッセージシーケンス生成装置のハードウェア構成の一例を示す図である。
【図3】図3は、状態遷移表の一例を示す図である。
【図4】図4は、起動初期画面の一例を示す図である。
【図5】図5は、ファイルメニューの一例を示す図である。
【図6】図6は、生成メニューの一例を示す図である。
【図7】図7は、表示メニューの一例を示す図である。
【図8】図8は、オプションメニューの一例を示す図である。
【図9】図9は、状態遷移表リストの一例を示す図である。
【図10】図10は、状態リストの一例を示す図である。
【図11】図11は、イベントリストの一例を示す図である。
【図12】図12は、状態遷移リストの一例を示す図である。
【図13】図13は、処理リストの一例を示す図である。
【図14】図14は、動作リストの一例を示す図である。
【図15】図15は、チャネルリストの一例を示す図である。
【図16】図16は、入出力関係情報表示画面の一例を示す図である。
【図17】図17は、生成条件入力画面の一例を示す図である。
【図18】図18は、生成条件リストの一例を示す図である。
【図19】図19は、通過状態リストの一例を示す図である。
【図20】図20は、通過イベントリストの一例を示す図である。
【図21】図21は、非通過状態リストの一例を示す図である。
【図22】図22は、非通過イベントリストの一例を示す図である。
【図23】図23は、メッセージシーケンス生成方法選択表示画面の一例を示す図である。
【図24】図24は、メッセージシーケンス生成中表示画面の一例を示す図である。
【図25】図25は、メッセージシーケンス生成方法の概要のフローチャートの一例を示す図である。
【図26】図26は、メッセージシーケンス生成方法の中の初期化処理のフローチャートの一例を示す図である。
【図27】図27は、メッセージシーケンス生成方法の中のシーケンス探索処理のフローチャートの一例を示す図である。
【図28】図28は、メッセージシーケンス生成方法の中のシーケンス更新処理のフローチャートの一例を示す図である。
【図29】図29は、グローバル状態リストの一例を示す図である。
【図30】図30は、ローカル状態リストの一例を示す図である。
【図31】図31は、チャネル状態リストの一例を示す図である。
【図32】図32は、メッセージリストの一例を示す図である。
【図33】図33は、通過条件レコードの一例を示す図である。
【図34】図34は、通過状態チェックリストの一例を示す図である。
【図35】図35は、通過イベントチェックリストの一例を示す図である。
【図36】図36は、シーケンス生成候補リストの一例を示す図である。
【図37】図37は、遷移候補リストの一例を示す図である。
【図38】図38は、シーケンスリストの一例を示す図である。
【図39】図39は、メッセージシーケンス図表示画面の一例を示す図である。
【図40】図40は、メッセージシーケンス図表示形式選択画面の一例を示す図である。
【図41】図41は、解析条件設定画面の一例を示す図である。
【符号の説明】
101…実行制御機能、102…状態遷移仕様編集機能、111…状態遷移情報、103…入出力関係情報入力機能、104…生成条件情報入力機能、112…生成条件情報、105…メッセージシーケンス生成機能、113…メッセージシーケンス情報、106…メッセージシーケンス図表示機能、201…入力装置、202…処理装置、203…記憶装置、204…表示装置。
【0001】
【産業上の利用分野】本発明は、メッセージシーケンスを生成する方法および装置に関し、詳しくは、状態遷移仕様で表現した通信ソフトウェアに関するメッセージシーケンスを自動的に作成するメッセージシーケンス生成方法および装置に関する。
【0002】
【従来の技術】従来、通信ソフトウェア仕様に関するメッセージシーケンス図を自動的に作成するメッセージシーケンス図生成方法に関しては、次に示すような三つの方法が知られている。
【0003】(1)第1の方法として、例えば、特開平3−91855号に記載の方法がある。これは、人間との会話形式により入力装置から初期の自局の状態および相手局からの受信メッセージを初期値として入力して、単一の状態遷移表仕様を解析し、初期値から自局が行う処理と相手局への送信メッセージおよび次に遷移する自局の状態を決定し、さらに相手局からの受信メッセージが入力されると次の動作を決定する、というような動作を行なってメッセージシーケンス図を生成する方法である。すなわち、人間との会話形式により、手作業で受信メッセージや送信メッセージを入力し、順次メッセージシーケンスを生成する方法である。
【0004】(2)第2の方法として、例えば、伊藤篤ほか著、通信ソフトウェア仕様の設計と解析のためのシーケンスチャートと状態遷移図の相互変換、電子情報通信学会技術研究報告、第91巻、第93号(1991年6月20日)第37頁から第46頁に記載の方法がある。これは、複数の状態遷移図仕様からプロセス対応最大到達遷移系列検証法に基づき、自動的にメッセージシーケンスを生成する方法である。
【0005】(3)さらに第3の方法として、例えば、森保健治ほか著、通信プロトコル設計におけるリバースエンジニアリング,1991年電子情報通信学会春季大会講演論文集、第3分冊、第98頁に記載の方法がある。これは、複数の状態遷移図仕様から到達可能解析に基づき、自動的にメッセージシーケンスを生成する方法であって、生成するメッセージシーケンスを特徴付ける制約条件を与えることによって、効率的にメッセージシーケンスを生成する方法である。その制約条件は、各状態遷移図に対応する部分メッセージシーケンスの積、和、補集合により定義している。
【0006】
【発明が解決しようとする課題】ところが、上記従来技術は、メッセージシーケンス生成方法および装置としては使い易いとはいえず、次に示すような問題があった。
【0007】まず従来方法(1)では、メッセージシーケンス毎に相手局からの受信メッセージをすべて手作業で入力する必要がある。したがって、入力に手間がかかり効率的でないという問題があった。
【0008】従来方法(2)は、メッセージシーケンスを自動的に生成する。しかし、可能性のあるすべてのメッセージシーケンスを生成するために多大な時間がかかるという問題がある。また、生成された多数のメッセージシーケンスの中から必要なメッセージシーケンスを選択することが容易でない。
【0009】従来方法(3)は、制約条件を入力して、その制約条件を満足するメッセージシーケンスを自動生成するようにしている。しかし、制約条件を数式で記述するため、その入力は容易でない。また、入力できる制約条件はイベントに関するものであり、状態に関する制約条件を与えることはできない。さらに、制約条件が緩い場合に従来方法(2)と同様に多数のメッセージシーケンスを生成する可能性があるという問題がある。
【0010】また、上述の従来方法すべてに共通する問題として、利用目的に合わせて表示するメッセージシーケンス図の詳細度を変更することができないという問題がある。すなわち、送受信メッセージや各種の動作などをすべて網羅したメッセージシーケンスが欲しい場合もあるし、逆に、送受信メッセージだけ表されていれば詳細な内部処理は不要の場合もある。従来方法では、このような利用目的に応じてメッセージシーケンス図の詳細度を変更することはできない。
【0011】さらに、状態遷移仕様の開発を複数の人間が異なる部署で行う場合、同一のメッセージに対して送信側と受信側で異なる名称を与える可能性がある。上述の従来方法ではこのような可能性は考慮されていないため、メッセージシーケンスを作成するときには、人手で同一のメッセージで異なる名称になっているものを探し、同一メッセージにするという作業を行なう必要がある。
【0012】本発明の第1の目的は、状態遷移仕様からメッセージシーケンスを生成する場合に、イベントに関する制約条件以外に、状態に関する制約条件をも指定可能であり、かつ制約条件の入力が容易なメッセージシーケンス生成方法および装置を提供することにある。
【0013】本発明の第2の目的は、利用目的に合わせて表示するメッセージシーケンス図の詳細度を変更することが可能なメッセージシーケンス生成方法および装置を提供することにある。
【0014】本発明の第3の目的は、設計者のチェック可能な限度を越える多数のメッセージシーケンスを生成しないようにすることのできるメッセージシーケンス生成方法および装置を提供することにある。
【0015】本発明の第4の目的は、同一のメッセージに対して送信側と受信側で異なる名称を与えられた状態遷移仕様に対しても処理が可能なメッセージシーケンス生成方法および装置を提供することにある。
【0016】
【課題を解決するための手段】上記の目的を達成するため、本発明に係るメッセージシーケンス生成方法および装置は、通信ソフトウェアに関する状態遷移仕様を入力させ、その状態遷移仕様に基づいて状態遷移表を生成して表示し、その状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力させ、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成することを特徴とする。
【0017】生成したメッセージシーケンスは、メッセージシーケンス図として対話用端末に表示するようにするとよい。また、メッセージシーケンス図の表示は、送受信されるメッセージ、メッセージの送受信により変化する状態、分岐条件、および内部処理の中から任意に組合せて指定された構成要素からなるメッセージシーケンス図を表示するようにするとよい。
【0018】状態遷移表は、例えば、遷移前の各状態と発生する各イベントとに応じてどのように状態が遷移するかを一覧表形式で表したものである。生成条件の入力では、状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンスの開始点となる初期状態および初期イベントの指定、並びに(ii)生成するメッセージシーケンスの終了点となる終端状態および/または終端イベントの指定を行なうようにする。さらに、状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンス中に必ず含まれる状態の指定、(ii)生成するメッセージシーケンス中に必ず含まれるイベントの指定、(iii) 生成するメッセージシーケンス中には必ず含まれない状態の指定、および/または、(iv)生成するメッセージシーケンス中には必ず含まれないイベントの指定を行なうようにしてもよい。
【0019】メッセージシーケンスの生成においては、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成するようにするとよい。また、生成されるメッセージシーケンスの最大個数を指定させるようにし、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了するようにしてもよい。
【0020】メッセージシーケンスの生成は、(i) 前記生成条件を満足するすべてのメッセージシーケンスを生成するか、(ii)前記生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成するか、または、(iii) 指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成するかを、指定することができ、指定された方法に従ってメッセージシーケンスを生成するようにしてもよい。
【0021】さらに、入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで付した名称を表示して利用者に確認させるようにしてもよい。また、同一のメッセージに対して送信側と受信側とで異なる名称が付与されている場合には、送信側名称と受信側名称とを関連付けるための対応関係情報を入力させるようにしてもよい。
【0022】
【作用】状態遷移仕様に基づき発生する可能性のあるすべてのメッセージシーケンスの中で、与えられた生成条件を満足するメッセージシーケンスを生成することができる。このとき、メッセージシーケンスを生成する場合のイベントおよび状態に関する制約条件として、表示された状態遷移表の中の各状態および各イベントに対して独立に初期条件、終端条件、通過条件、あるいは非通過条件などの区別を指定可能とすることにより、状態とイベントの組合せである特定の状態遷移に対する制約条件の指定を容易に行なうことができる。
【0023】また、メッセージシーケンスを構成する要素毎に表示の要否を指定させることにより、表示構成要素の任意の組合せを指定することができる。
【0024】さらに、生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成することもできる。これは、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成することにより実現できる。指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成することもできる。これは、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了することにより実現できる。
【0025】また、入力された状態遷移仕様に対して送信メッセージに対応する送信先が存在しない場合には送信先と送信先におけるメッセージ名称の入力を要求することにより、送信側メッセージ名称と受信側メッセージ名称が異なる場合の対応関係情報を入力させることができる。
【0026】
【実施例】以下、本発明の一実施例を、図面を用いて説明する。
【0027】図2に、本発明の一実施例に係るメッセージシーケンス生成方法を適用したメッセージシーケンス生成装置のハードウェア構成の一例を示す。このメッセージシーケンス生成装置は、利用者からのコマンド等を入力するキーボードおよびマウスからなる入力装置201、計算機内部の処理を行う処理装置202、データおよびプログラムを格納する記憶装置203、並びに、コマンドの実行結果、記憶しているデータの内容、および利用者に対するメッセージ等を表示する表示装置204を備えている。
【0028】図1に、本実施例のメッセージシーケンス生成方法を実現する装置の機能構成の一例を示す。この図は、図2の装置で、メッセージシーケンスを生成する際に実行される機能に着目したブロック図である。
【0029】実行制御機能101は、入力装置201からのコマンドを受け付けて、各機能を実行制御する。状態遷移仕様編集機能102は、利用者が状態遷移仕様を新規作成および修正することを支援し、状態遷移情報111を生成および修正する。入出力関係情報入力機能103は、モジュール毎に記述された状態遷移仕様のメッセージの送受信関係を表示し、利用者にそれらの関係を確認させ、あるいは利用者が修正や追加を行なうことを支援する。そして、修正や追加があった場合は、記憶装置203に記憶されている状態遷移情報111を更新する。
【0030】生成条件情報入力機能104は、利用者がメッセージシーケンス図生成のための条件を入力することを状態遷移情報111を利用して支援し、生成条件情報112を生成し記憶装置203に格納する。メッセージシーケンス生成機能105は、状態遷移情報111から生成条件情報112を満足するメッセージシーケンスを生成し、メッセージシーケンス情報113を生成する。メッセージシーケンス図表示機能106は、メッセージシーケンス情報113に基づくメッセージシーケンス図を表示装置204に表示する。
【0031】メッセージシーケンスの生成は、上記の各機能を順次実行することにより行なわれる。すなわち、まず状態遷移仕様編集機能102で、メッセージシーケンスを生成しようとする各モジュールの状態遷移仕様を入力する。そして、入出力関係情報入力機能103で状態遷移仕様のメッセージの送受信関係を修正確認する。次に、生成条件情報入力機能104でメッセージシーケンスを生成する際の条件を入力する。そして、その条件にしたがって、メッセージシーケンス生成機能105でメッセージシーケンスを生成し、メッセージシーケンス図表示機能106で表示する。
【0032】以下、状態遷移仕様が状態遷移表によって記述される場合の図1における手順の詳細を説明する。
【0033】図3は、1つのモジュールの状態遷移表の一例を示す。図3において、上端横列の各枠301、302はモジュールの取りうる状態を表し、左端縦列の各枠303、304は他のモジュールからのメッセージ受信を含む発生イベントを表す。状態とイベントの交差する枠には、その枠に対応する状態(S0〜Sn)においてその枠に対応するイベント(E1〜En)が発生した場合の処理が定義される。
【0034】例えば、枠305では、状態S0においてイベントEnが発生した場合の処理が定義される。各枠の処理として、該当処理を実行する条件、メッセージ送信を含む動作、および動作処理終了後の遷移先状態が記述される。例えば、図3の枠305では、条件1が成立する場合に実行する動作1a,1b,…とそれらの動作終了後の遷移先状態1などが記述されている。条件や条件に対する動作は0個または複数個でもよい。
【0035】本実施例の装置が起動されると、図1の実行制御機能101は、表示装置204に図4の起動初期画面を表示する。図4の画面において利用者がファイルメニュー401を選択すると、実行制御機能101は図5R>5に示すプルダウンメニュー501を表示する。
【0036】図5において、利用者が状態遷移表編集メニュー502を選択すると、実行制御機能101は図1の状態遷移仕様編集機能102を起動する。これにより、状態遷移仕様編集機能102を実行して、図3の状態遷移図のような状態遷移仕様の入力や編集を行なうことができる。
【0037】図5において、入出力関係情報入力メニュー503が選択されると、実行制御機能101は図1の入出力関係情報入力機能103を起動する。これにより、入出力関係情報入力機能103を実行して、各モジュール間のメッセージ送受信関係の確認、修正、あるいは追加を行なうことができる。
【0038】図5において、終了メニュー504が選択されると、実行制御機能101は起動初期画面の表示を取消し、すべての処理を終了する。
【0039】図4において、利用者が生成メニュー402を選択すると、実行制御機能101は図6に示すプルダウンメニュー601を表示する。図6において、利用者が生成条件情報入力メニュー602を選択すると、実行制御機能101は図1の生成条件情報入力機能104を起動する。これにより、生成条件情報入力機能104を実行して、メッセージシーケンス生成の際の条件を入力することができる。
【0040】図6において、シーケンス生成メニュー603が選択されると、実行制御機能101は図1のメッセージシーケンス生成機能105を起動する。これにより、メッセージシーケンス生成機能105を実行して、メッセージシーケンスを生成する処理を行なうことができる。
【0041】図4において、利用者が表示メニュー403を選択すると、実行制御機能101は図7に示すプルダウンメニュー701を表示する。図7において、利用者がシーケンス図メニュー702を選択すると、実行制御機能101は図1のメッセージシーケンス図表示機能106を起動する。これにより、メッセージシーケンス図表示機能106が実行され、生成されたメッセージシーケンス図が表示装置204に表示される。
【0042】図4において、利用者がオプションメニュー404を選択すると、実行制御機能101は図8に示すプルダウンメニュー801を表示する。図8において、利用者が表示形式メニュー802を選択すると、実行制御機能101は、後述するメッセージシーケンス図表示形式選択画面(図40)を表示する。図8において、利用者が解析条件メニュー803を選択すると、実行制御機能101は、後述する解析条件設定画面(図41R>1)を表示する。
【0043】なお、図4から図8あるいは後述する画面表示およびそのような画面表示の元での入力を実現する方式は、どのようなものでもよい。例えば、木下凌一著、X−Window Ver.11プログラミング、日刊工業新聞社(1989年)などにおいて述べられている従来より用いられている方式を用いればよい。
【0044】以下、図1の各機能102〜106について詳しく説明する。
【0045】図1の状態遷移仕様編集機能102には、図3のような状態遷移表の作成を直接支援する機能や状態遷移図から状態遷移表への変換を支援する機能等が含まれる。これらの機能については、例えば、特開平1−152576号、または特開平2−100444号において述べられているので、説明を省略する。
【0046】状態遷移仕様編集機能102によって生成される状態遷移情報111は、概念的には図3のような状態遷移表を表す情報ととらえてよいが、実際に装置内部では図9から図14に示す形式で記憶されている。
【0047】図9に示す状態遷移表リストのエントリ(以下、状態遷移表エントリと呼ぶ)900は、図3の状態遷移表対応に存在する。状態遷移表エントリ900は、装置側で割り当てる状態遷移表識別子901、利用者が入力する状態遷移表名称902、状態リスト(図10R>0)の記憶場所を示す状態リストポインタ903、イベントリスト(図11)の記憶場所を示すイベントリストポインタ904、処理が記述された枠305に対応する状態遷移リスト(図12)の記憶場所を示す状態遷移リストポインタ905、および次の状態遷移表エントリの記憶場所を示す次エントリポインタ906からなる。
【0048】図10に示す状態リストのエントリ(以下、状態エントリと呼ぶ)1000は、図3の状態遷移表の上端横列の状態301、302対応に存在する。状態エントリ1000は、装置側で割り当てる状態識別子1001、利用者が入力する状態名称1002、後述する最小遷移数1003、および次の状態エントリの記憶場所を示す次エントリポインタ1004からなる。
【0049】図11に示すイベントリストのエントリ(以下、イベントエントリと呼ぶ)1100は、図3の状態遷移表の左端縦列のイベント303、304対応に存在する。イベントエントリ1100は、装置側で割り当てるイベント識別子1101、利用者が入力するイベント名称1102、イベントが他の状態遷移表から受信したメッセージか否かを示すメッセージフラグ1103、イベントが受信メッセージである場合の送信元状態遷移表識別子1104、および次のイベントエントリの記憶場所を示す次エントリポインタ1105からなる。メッセージフラグ1103の初期値はオフとする。
【0050】図12に示す状態遷移リストのエントリ(以下、状態遷移エントリと呼ぶ)1200は、図3の状態遷移表において処理が記述された各枠305対応に存在する。状態遷移エントリ1200は、装置側で割り当てる状態遷移識別子1201、状態遷移処理に対応する状態エントリ1000の識別子1202、状態遷移処理に対応するイベントエントリ1100の識別子1203、状態遷移の処理に含まれる条件に対応する処理リスト(図13)の記憶場所を示す処理リストポインタ1204、後述する非通過フラグ1205と遷移実行カウンタ1206、および次の状態遷移エントリの記憶場所を示す次エントリポインタ1207からなる。
【0051】図13に示す処理リストのエントリ(以下、処理エントリと呼ぶ)1300は、図3の状態遷移表の枠305に含まれる各条件対応に存在する。処理エントリ1300は、装置側で割り当てる条件識別子1301、利用者が入力する条件名称1302、処理終了後の遷移先状態の識別子1303、処理に含まれる動作リスト(図14)の記憶場所を示す動作リストポインタ1304、および次の処理エントリの記憶場所を示す次エントリポインタ1305からなる。
【0052】図14に示す動作リストのエントリ(以下、動作エントリと呼ぶ)1400は、図3の状態遷移表の枠305に含まれる各動作対応に存在する。動作エントリ1400は、装置側で割り当てる動作識別子1401、利用者が入力する動作名称1402、動作が他の状態遷移表へのメッセージ送信か否かを示すメッセージフラグ1403、動作がメッセージ送信である場合の送信先状態遷移表識別子1404、送信先状態遷移表における送信メッセージに対応するイベント識別子1405、後述するチャネル識別子1406、および次の動作エントリの記憶場所を示す次エントリポインタ1407からなる。メッセージフラグの初期値はオフとする。
【0053】以上のように、図1の状態遷移仕様編集機能102によって、図9〜図14に示すような形式で状態遷移情報111が定義される。言い替えれば、モジュール毎の状態遷移表(図3)が入力されたこととなる。なお、上述の各リストにおいて、リストの最後のエントリの次エントリポインタの値は0とする。
【0054】次に、図1の入出力関係情報入力機能103について説明する。入出力関係情報入力機能103は、図5の入出力関係情報入力メニュー503が選択されると起動される。本機能は、動作とイベントの対応関係を推定する機能、および利用者に推定した関係を表示し、確認、修正させる機能からなる。
【0055】対応関係を推定する機能は、同一名称を持つ動作名称1402とイベント名称1102とを対応させる機能である。すなわち、動作名称1402とイベント名称1102とが同一である場合はこれらを送受信関係にあるメッセージとみなし、対応するイベントエントリ1100のメッセージフラグ1103と動作エントリ1400のメッセージフラグ1403とをオンにセットし、動作エントリ1400の送信先状態遷移表識別子1404と送信先イベント識別子1405を設定する。
【0056】推定した関係を表示して確認修正させる機能では、まず図16に示すような画面を表示する。図16R>6は、状態遷移表対応に画面が存在し、前表ボタン1601、次表ボタン1602を操作することにより他の状態遷移表の情報を表示させることができる。画面には、表示されている状態遷移表の名称1603、その状態遷移表のイベント名称1604、1605、および動作名称1606、1607が表示される。
【0057】利用者は、イベント名称1604、1605のイベントに対応する送信元状態遷移表名称を1608、1609のフィールドに、送信元状態遷移表における動作名称を1610、1611のフィールドに入力することができる。例えば、状態遷移表名称1608の状態遷移表の動作名称1610の動作が、現在着目している状態遷移表名称M1(フィールド1603)の状態遷移表のイベントE1(フィールド1604)に相当するということである。
【0058】また利用者は、動作名称1606、1607の動作に対応する送信先状態遷移表名称を1612、16139のフィールドに、送信先状態遷移表におけるイベント名称を1614、1615のフィールドに入力することができる。例えば、現在着目している状態遷移表名称M1の状態遷移表の動作A1(フィールド1606)が、状態遷移表名称1612の状態遷移表のイベント名称1614のイベントに相当するということである。
【0059】ただし、対応関係を推定する機能により関連付けられた動作とイベントについては推定結果を該当欄(フィールド1608〜1615)に表示する。したがって、対応する動作とイベントに関して同一の名称を使用している場合には利用者は表示を確認するだけでよく、これらのフィールドに名称を入力する必要はない。
【0060】イベントと動作数が多く1画面に表示できない場合には複数画面に分けて表示し、前頁ボタン1616および次頁ボタン1617等を設けて、これらのボタンにより画面を切り替えるようにする。利用者は、確認や修正が終わると終了ボタン1618により終了を指示する。これにより図16の画面表示が終了する。また、利用者による修正個所に対応するイベントエントリ1100のメッセージフラグ1103、並びに動作エントリ1400のメッセージフラグ1403、送信先状態遷移表識別子1404、および送信先イベント識別子1405が更新される。さらに、送受信関係のある状態遷移表間に単方向のチャネルが設定される。
【0061】図15は、設定されたチャネルを表すチャネルリストのエントリ(以下、チャネルエントリと呼ぶ)1500を示す。チャネルエントリ1500は、装置側で割り当てるチャネル識別子1501、送信元状態遷移表識別子1502、送信先状態遷移表識別子1503、および次のチャネルエントリの記憶場所を示す次エントリポインタ1504からなる。
【0062】チャネルエントリ1500は、メッセージフラグ1403がオンである動作エントリ1400を持つ状態遷移表エントリ900の識別子901と送信先状態遷移表識別子1404との組合せに対応する。すなわち、動作エントリ1400のメッセージフラグ1403がオンのときは、その動作エントリ1400を持つ状態遷移表エントリ900の識別子901が、チャネルエントリ1500の送信元状態遷移表識別子1502に設定される。また、その動作エントリ1400の送信先状態遷移表識別子1404が、チャネルエントリ1500の送信先状態遷移表識別子1503に設定される。動作エントリ1400のチャネル識別子1406には、対応するチャネルエントリ1500の識別子1501が設定される。
【0063】なお、図16において、イベントに対応する送信元状態遷移表1608、1609が空欄の場合には、該当イベントを内部発生イベントとみなす。内部発生イベントとは、当該モジュール(現在着目している状態遷移表のモジュール)の内部で生じるイベントのことである。同様に、図16において、動作に対応する送信先状態遷移表1612、1613が空欄の場合には、該当動作を当該モジュール内で実行される内部動作とみなす。
【0064】さらに、送信元および送信先状態遷移表欄1608、1609、1612、1613には、状態遷移表が定義されていないモジュール名称を入力することもできるようになっている。この場合、動作名称1610、1611およびイベント名称1613、1614は空欄とする。そして、状態遷移表が定義されていないモジュールに対応する状態遷移表エントリ900を作成し、状態リストポインタ903、イベントリストポインタ904、状態遷移リストポインタ905は0とする。また、対応するイベントエントリ1100のメッセージフラグ1103はオフとし、送信元状態遷移表識別子1104に該当状態遷移表の識別子を設定する。対応する動作エントリ1400のメッセージフラグ1403もオフとし、送信先状態遷移表識別子1404に該当する状態遷移表の識別子901を設定する。
【0065】以上のようにして、状態遷移仕様編集機能102と入出力関係情報入力機能103とによって、各モジュールの状態遷移表と各状態遷移間のメッセージ送受信関係とが、図9〜図15の形式で定義されたこととなる。
【0066】次に、図1の生成条件情報入力機能104について説明する。生成条件情報入力機能104は、図6R>6の生成条件情報入力メニュー602が選択されると起動される。本機能は、利用者によるメッセージシーケンス生成のための条件の入力を支援する。利用者によって入力された条件は、生成条件情報112として記憶装置203に格納する。
【0067】図17は、本機能における表示画面を示す。利用者は、この図に示す画面から生成条件を入力する。この画面は状態遷移表対応に存在し、前表ボタン1701、次表ボタン1702を操作することにより他の状態遷移表の情報を表示させることができる。1703は表示されている状態遷移表の名称、1704は状態遷移表、1705と1706は現在画面上に表示されている部分の状態遷移表全体における位置を示す縦と横のスクロールバーを示す。
【0068】利用者が状態遷移表1704中の状態名称(図中の「CLOSED」「WFNC」など)またはイベント名称(図中の「T−CON REQ」「T−CONRSP」など)を直接指定すると、その部分にポップアップメニューが表示される。1707は表示されたポップアップメニューを示す。このポップアップメニューを用いて、指定された状態またはイベントに対する生成条件を選択する。
【0069】ポップアップメニュー1707のうち、初期設定メニュー1708は、生成されるメッセージシーケンスの初期状態または初期イベントであることを指定する。終端設定メニュー1709は、生成されるメッセージシーケンスの終端状態またはイベントであることを指定する。通過設定メニュー1710は、生成されるメッセージシーケンスに必ず含まれる状態またはイベントであることを指定する。非通過設定メニュー1711は、生成されるメッセージシーケンスに決して含まれない状態またはイベントであることを指定する。設定解除メニュー1712は、指定された状態またはイベントを指定なしの状態にリセットする。
【0070】初期状態は、各状態遷移表に対して必ず1個指定しなければならない。初期イベントは、状態遷移仕様全体で1個必ず指定しなければならない。一方、終端状態の指定は終端イベントの指定がある場合には省略可能である。終端イベントの指定も終端状態の指定がある場合には省略可能である。通過設定および非通過設定は複数の状態またはイベントに対して指定できる。
【0071】なお、指定内容は状態遷移表の上端および左端に表示するようにしている。また、非通過指定に対応する状態の列およびイベントの行にある枠は白色で表示し、その他の枠は着色表示することにより、利用者が生成条件の指定内容を容易に確認できるようにしている。図では、網かけしていない部分(例えば状態「WFNC」)が白色表示された非通過指定されている状態を示し、その他の網かけしてある部分が着色表示されたその他の状態を示す。生成条件の入力が終わると、利用者は終了ボタン1713を指定する。これにより図17の画面表示が終了する。
【0072】上記のようにして入力された生成条件は、生成条件情報112(図1)として図18から図22に示す形式で記憶される。以下、これらの形式を説明する。
【0073】図18に示す生成条件リストのエントリ(以下、生成条件エントリと呼ぶ)1800は、図3の状態遷移表対応に存在する。すなわち、1つの状態遷移表に関する生成条件を図17の画面で作成すると、その状態遷移表に対応する生成条件エントリ1800が作成されることになる。生成条件エントリ1800は、状態遷移表識別子1801、初期状態識別子1802、初期イベント識別子1803、終端状態識別子1804、終端イベント識別子1805、通過状態リストポインタ1806、通過イベントリストポインタ1807、非通過状態リストポインタ1808、非通過イベントリストポインタ1809、次の生成条件エントリの記憶場所を示す次エントリポインタ1810からなる。
【0074】状態遷移表識別子1801は、当該生成条件エントリ1800に対応する状態遷移表の識別子である。初期状態識別子1802、初期イベント識別子1803、終端状態識別子1804、および終端イベント識別子1805は、それぞれ、図17で入力した初期状態、初期イベント、終端状態、および終端イベントの識別子である。終端状態や終端イベントが省略されている場合、対応する識別子1804、1805は0とする。
【0075】通過状態リストポインタ1806、通過イベントリストポインタ1807、非通過状態リストポインタ1808、および非通過イベントリストポインタ1809は、それぞれ、図19の通過状態リスト1900、図20の通過イベントリスト2000、図21の非通過状態リスト2100、および図22の非通過イベントリスト2200の記憶場所を示すポインタである。
【0076】図19に示す通過状態リストのエントリ(以下、通過状態エントリと呼ぶ)1900は、通過状態識別子1901、および次の通過状態エントリの記憶場所を示す次エントリポインタ1902からなる。図17R>7の画面において利用者が通過状態の指定をすると、その状態の識別子を通過状態識別子1901とする通過状態エントリが生成される。
【0077】図20に示す通過イベントリストのエントリ(以下、通過イベントエントリと呼ぶ)2000は、通過イベント識別子2001、および次の通過イベントエントリの記憶場所を示す次エントリポインタ2002からなる。図17の画面において利用者が通過イベントの指定をすると、そのイベントの識別子を通過イベント識別子2001とする通過イベントエントリが生成される。
【0078】図21に示す非通過状態リストのエントリ(以下、非通過状態エントリと呼ぶ)2100は、非通過状態識別子2101、および次の非通過状態エントリの記憶場所を示す次エントリポインタ2102からなる。図17の画面において利用者が非通過状態の指定をすると、その状態の識別子を非通過状態識別子2101とする非通過状態エントリが生成される。
【0079】図22に示す非通過イベントリストのエントリ(以下、非通過イベントエントリと呼ぶ)2200は、非通過イベント識別子2201、および次の非通過イベントエントリの記憶場所を示す次エントリポインタ2202からなる。図17の画面において利用者が非通過イベントの指定をすると、そのイベントの識別子を非通過イベント識別子2201とする非通過イベントエントリが生成される。
【0080】次に、図1のメッセージシーケンス生成機能105について説明する。メッセージシーケンス生成機能105は、図6のシーケンス生成メニュー603が選択されると起動される。本機能は、状態遷移情報111(図9〜15)に基づいて、生成条件情報112(図1818〜22))を満足するメッセージシーケンスを生成する。具体的には、メッセージシーケンス情報113を生成する。
【0081】図23は、本機能が起動されたとき表示される画面を示す。利用者は、この図に示す画面からメッセージシーケンスの生成方法を選択する。
【0082】ボタン2301を選択すると、生成条件を満足するすべてのメッセージシーケンスを生成する。ボタン2302を選択すると、生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成する。ボタン2303を選択すると、フィールド2304に指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成する。
【0083】実行ボタン2305を選択することにより、選択された方法によるメッセージシーケンスの生成が開始され、図24に示すメッセージシーケンス生成中画面が表示される。取消ボタン2306を選択することにより、メッセージシーケンス生成を行うことなく、図4R>4の起動初期画面に戻ることができる。
【0084】図24のメッセージシーケンス生成中画面では、生成されたメッセージシーケンスの個数をフィールド2401に更新表示する。メッセージシーケンスの生成が終了すると、図4の起動初期画面に戻る。生成数フィールド2401の初期値は0である。なお、取消ボタン2402を選択することによりメッセージシーケンス生成を中止して図4の起動初期画面に戻ることができる。
【0085】以下では、生成条件を満足するすべてのメッセージシーケンスを生成する手順(図23でボタン2301を選択した場合)について図25から図28に示すフローチャートを用いて説明する。
【0086】図25は、メッセージシーケンス生成処理の流れを示すフローチャートである。まず、初期化ブロック2501において各種の初期化を行なう。次に、終了条件チェックブロック2502で、シーケンス生成処理を終了するかどうか判別し、終了してもよい場合は処理を終了し、図24のメッセージシーケンス生成中表示画面の表示を取り消す。非終了の場合はシーケンス探索処理ブロック2503を実行し、ブロック2502に戻る。
【0087】ブロック2502の終了または非終了の判別は、具体的には、シーケンス生成候補リスト(図36R>6)が空か否かをチェックすることにより行なう。シーケンス生成候補リストおよびブロック2502の判別については、後述する。
【0088】図26は、図25の初期化ブロック2501の詳細な流れを示すフローチャートである。
【0089】初期化ブロック2501では、まず非通過フラグ設定ブロック2601により、生成条件エントリ1800(図18)が示す非通過状態または非通過イベントを含む状態遷移エントリ1200(図12)の非通過フラグ1205をオンに、非通過状態および非通過イベントを含まない状態遷移エントリ1200の非通過フラグ1205をオフに、それぞれ設定する。
【0090】次に、最小遷移数計算ブロック2602においては、各状態遷移表における状態をノード、非通過フラグがオフである状態遷移を距離1の有向枝とみなし、生成条件エントリ1800(図18)の初期状態1802から各状態への最短距離を計算する。計算結果は、最小遷移数として状態エントリ1000の最小遷移数1003に設定する。なお、初期状態から到達できない状態の最小遷移数は0とする。
【0091】生成シーケンス数初期設定ブロック2603においては、生成シーケンス数を0(初期値)に設定する。
【0092】次に、グローバル初期状態設定ブロック2604においては、図29に示すグローバル状態リストのエントリ(以下、グローバル状態エントリと呼ぶ)2900を生成し、初期値を設定する。
【0093】グローバル状態とは、チャネルを含めて各モジュールの状態を全体としてとらえた状態をいう。各モジュールの取り得る状態は、そのモジュールに対応する状態遷移表に表されているが、状態遷移表はモジュールに対応して複数あるので、1つの状態遷移表に着目して同じ状態であったとしても、他の状態遷移表の状態が異なるときは全体としては別の状態にあるといえる。メッセージシーケンスを生成する際には、複数の状態遷移表を考慮した全体としての状態を把握する必要があるため、図29〜図35のようにグローバル状態に関するリストを作成し、それらを用いてメッセージシーケンス生成を行なうようにしている。
【0094】図29を参照して、グローバル状態エントリ2900について説明する。グローバル状態エントリ2900は、グローバル状態識別子2901、ローカル状態リストポインタ2902、チャネル状態リストポインタ2903、通過条件レコードポインタ2904、最小遷移数2乗和2905、遷移元グローバル状態識別子2906、イベント発生状態遷移表識別子2907、イベント識別子2908、条件識別子2909、および次のグローバル状態エントリの記憶場所を示す次エントリポインタ2910からなる。
【0095】グローバル状態識別子2901は、装置側で割り当てるグローバル状態の識別子である。上述したように、まずグローバル初期状態設定ブロック2604においてグローバル状態エントリ2900が1つ生成される。
【0096】ローカル状態リストポインタ2902は、対象とする状態遷移表に対応するローカル状態リスト(図30)の記憶場所を示すポインタである。ローカル状態とは、各状態遷移表に示されている1つ1つの状態(例えば、図3の状態遷移表の状態S0,…,Sn)をいう。チャネル状態リストポインタ2903は、チャネルに対応するチャネル状態リスト(図31)の記憶場所を示すポインタである。
【0097】図30に、ローカル状態リストのエントリ(以下、ローカル状態エントリと呼ぶ)3000の内容を示す。ローカル状態エントリ3000は、状態遷移表識別子3001、ローカル状態識別子3002、および次のローカル状態エントリの記憶場所を示す次エントリポインタ3003からなる。図26のグローバル初期状態設定ブロック2604において、ローカル状態識別子3002には、初期値として生成条件リストの初期状態識別子1802が設定される。すなわち、すべての状態遷移表でそれぞれ設定された初期状態の組が、グローバル初期状態となる。
【0098】図31に、チャネル状態リストのエントリ(以下、チャネル状態エントリと呼ぶ)3100の内容を示す。チャネル状態エントリ3100は、チャネル識別子3101、チャネル上のメッセージの有無を示すチャネル状態3102、後述するメッセージリスト(図32R>2)の記憶場所を示すメッセージリストポインタ3103、および次のチャネル状態エントリの記憶場所を示す次エントリポインタ3104からなる。図26のグローバル初期状態設定ブロック2604においては、チャネル状態3102を「メッセージ無」に初期設定する。メッセージリストポインタ3103の初期値は0とする。
【0099】図32に、メッセージリストのエントリ(以下、メッセージエントリと呼ぶ)3200の内容を示す。メッセージエントリ3200は、送信先イベント識別子3201、および次のメッセージエントリの記憶場所を示す次エントリポインタ3202からなる。
【0100】再び図29を参照して、通過条件レコードポインタ2904は、グローバル状態エントリ2900毎に存在する生成条件の中の通過条件をチェックするための通過条件レコード(図33)の記憶場所を示すポインタである。通過条件に関する情報については図33から図35を参照して後述する。
【0101】最小遷移数2乗和2905は、当該グローバル状態を構成する各ローカル状態の最小遷移数1003の2乗和を記憶する領域である。ローカル状態間の最短経路はブロック2602で計算した最小遷移数が目安となるが、グローバル状態は複数のローカル状態の組み合わせであるため、何をもってグローバル状態間の最短経路を求めるかは適宜定義する必要がある。この実施例では、上記の最小遷移数2乗和2905により初期グローバル状態から当該グローバル状態への距離を表すようにしている。
【0102】遷移元グローバル状態識別子2906は、当該グローバル状態に到達する前のグローバル状態を示す識別子である。イベント発生状態遷移表識別子2907は、当該グローバル状態に到達するときに発生したイベントがどの状態遷移表からのものか、その状態遷移表の識別子を示す。イベント識別子2908は、当該グローバル状態に到達するときに発生したイベント発生状態遷移表識別子2907の状態遷移表のイベントを示すイベント識別子である。条件識別子2909は、当該グローバル状態に到達するときに発生したイベント中の条件(図3の枠305中の条件)を特定する。
【0103】言い替えると、遷移元グローバル状態識別子2906のグローバル状態において、イベント発生状態遷移表識別子2907の状態遷移表でイベント識別子2908のイベントが発生し、そのときに条件識別子2909の条件が成立している場合に、遷移元グローバル状態から当該グローバル状態に至るということになる。
【0104】図26のグローバル初期状態設定ブロック2604において、上述の最小遷移数2乗和2905は0に初期設定される。また、初期状態であるため、遷移元グローバル状態識別子2906、イベント発生状態遷移表識別子2907、イベント識別子2908、および条件識別子2909は、すべて0に初期設定される。
【0105】上記のようにグローバル初期状態設定を行なった後、通過条件レコード初期化ブロック2605において通過条件レコードなどの初期化を行なう。
【0106】図33は、通過条件レコード3300の内容を示す。通過条件レコード3300は、図29のグローバル状態エントリ2900の通過条件レコードポインタ2904で指し示されるレコードである。通過条件レコード3300は、通過状態チェックリスト(図34)の記憶場所を示す通過状態チェックリストポインタ3301、および通過イベントチェックリスト(図35)の記憶場所を示す通過イベントチェックリストポインタ3302からなる。
【0107】図34に、通過状態チェックリストのエントリ(以下、通過状態チェックエントリと呼ぶ)3400の内容を示す。通過状態チェックエントリ3400は、図19の通過状態エントリ1900に対応し、状態遷移表識別子3401、通過状態識別子3402、通過フラグ3403、および次の通過状態チェックエントリの記憶場所を示す次エントリポインタ3404からなる。
【0108】図35に、通過イベントチェックリストのエントリ(以下、通過イベントチェックエントリと呼ぶ)3500の内容を示す。通過イベントチェックエントリ3500は、図20の通過イベントエントリ2000に対応し、状態遷移表識別子3501、通過イベント識別子3502、通過フラグ3503、および次の通過イベントチェックエントリの記憶場所を示す次エントリポインタ3504からなる。
【0109】図26の通過条件レコード初期化ブロック2605においては、通過状態チェックエントリ3400および通過イベントチェックエントリ3400における通過フラグ3403および3503をオフに設定する。遷移実行カウンタ初期化ブロック2606においては、すべての状態遷移エントリ1200の遷移実行カウンタ1206を0に設定する。
【0110】次に、シーケンス生成候補リスト初期化ブロック2607について説明する。シーケンス生成候補リスト初期化ブロック2607では、シーケンス生成候補リストを生成する。
【0111】図36は、シーケンス生成候補リストのエントリ(以下、シーケンス生成候補エントリと呼ぶ)3600の内容を示す。シーケンス生成候補エントリ3600は、候補となるグローバル状態識別子3601、および次のシーケンス生成候補エントリの記憶場所を示す次エントリポインタ3602からなる。リストの最後のエントリにおける次エントリポインタは0とする。
【0112】図26のシーケンス生成候補リスト初期化ブロック2607においては、まずグローバル初期状態設定ブロック2604において生成したグローバル状態エントリ2900の複製を作成し、新たにグローバル状態識別子2901を割当てる。ここで、グローバル初期状態設定ブロック2604において生成したグローバル状態エントリ2900を第1番目のグローバル状態エントリと呼び、新たに作成した複製を第2番目のグローバル状態エントリと呼ぶものとする。第2番目のグローバル状態エントリ2900の遷移元グローバル状態識別子2906には、元のグローバル状態エントリ2900のグローバル状態識別子2901を設定する。また、初期イベント識別子1803が0でない生成条件エントリ1800に対応するイベント発生状態遷移表識別子2907およびイベント識別子2908を設定する。
【0113】そして、そのイベントに対応する状態遷移エントリ1200の非通過フラグ1205を参照する。非通過フラグ1205がオンならば、その状態遷移エントリ1200は非通過とするということであるから、生成したグローバル状態エントリ2900を廃棄し、初期化処理2607を終了する。
【0114】非通過フラグ1205がオフならば、生成したグローバル状態エントリの複製をさらに((条件数)−1)個作成し、それぞれに新たにグローバル状態識別子を割当てる。条件数とは、当該状態遷移エントリ1200の処理リストポインタ1204から辿ることのできる処理エントリ1300の数であり、言い替えれば、当該状態遷移エントリ1200に対応する図3の枠(例えば305)内に定義されている条件の数である。
【0115】((条件数)−1)個の複製は、第3番目〜第((条件数)+1)番目のグローバル状態エントリと呼ぶものとする。第2番目〜第((条件数)+1)番目の各グローバル状態エントリ2900(エントリ数は条件数)の条件識別子2909には、それぞれ、対応する処理エントリ1300の条件識別子1301を設定する。さらに、第2番目〜第((条件数)+1)番目の各グローバル状態エントリ2900のローカル状態リストポインタ2902が指し示すローカル状態エントリ3000のローカル状態識別子3002に、それぞれ、対応する処理エントリ1300の遷移先状態識別子1303を設定する。
【0116】次に、処理エントリ1300に対応する動作エントリ1400の中でメッセージフラグ1403がオンであるものについて、チャネル識別子1406と同じチャネル識別子3101を持つチャネル状態エントリ3100のチャネル状態3102を「メッセージ有」に設定する。また、図32に示すメッセージエントリ3200の送信先イベント識別子3201に送信先イベント識別子1405を設定し、メッセージエントリ3200のアドレスをメッセージリストポインタ3103に設定する。さらに最小遷移数2乗和2905を更新する。
【0117】次に、図36に示すシーケンス生成候補リストに初期グローバル状態を除く生成したグローバル状態をすべて加える。ブロック2607が終了すると初期化ブロック2501は終了する。
【0118】その後、図25の終了条件チェックブロック2502では図36のシーケンス生成候補リストが空か否かをチェックする。空ならばメッセージシーケンス生成処理を終了し、図24のメッセージシーケンス生成中表示画面の表示を取り消す。空でないならばシーケンス探索処理ブロック2503を実行し、ブロック2502に戻る。
【0119】シーケンス探索処理は、図36のシーケンス生成候補エントリ3600を1つずつ取出し、そのグローバル状態から遷移していくグローバル状態を順次探索し、遷移先のグローバル状態エントリ2900を生成していく。これは、生成条件として指定されている終端条件に至るまで行なわれる。結果は、図38のシーケンスリストに格納される。シーケンス探索処理の後は、図3838のシーケンスリストにエントリされているグローバル状態から遡って(遷移元グローバル状態識別子2906を用いる)、初期グローバル状態まで辿ることにより、1つのメッセージシーケンスが得られることとなる。
【0120】図27を参照して、シーケンス探索処理ブロック2503を詳細に説明する。まず、シーケンス生成候補選択ブロック2701では、シーケンス生成候補エントリ3600の中で最小遷移数2乗和2905が最も小さいものを選択する。以後、選択したシーケンス生成候補エントリ3600が示すグローバル状態からメッセージシーケンスを探索していく。選択したシーケンス生成候補エントリ3600は、シーケンス生成候補リストから取り除いておく。
【0121】最小遷移数2乗和2905が最も小さいものから選択するのは、重複の少ないメッセージシーケンスを優先的に生成するためにできるだけメッセージシーケンスの最初の方からシーケンスの探索を開始することを意図している。したがって、すべてのメッセージシーケンスを生成する場合には任意の候補を選択してもよい。
【0122】遷移候補リスト初期化ブロック2702では、図37に示す遷移候補リストを空にする。通過条件レコード更新ブロック2703では、選択されたグローバル状態の通過状態チェックリスト(図34)を更新する。すなわち、当該グローバル状態エントリ2900のイベント発生状態遷移表識別子2907、イベント識別子2908、および条件識別子2909から特定される遷移先状態識別子1303と一致する通過状態識別子3402を持つ通過状態チェックエントリ3400が存在すれば通過フラグ3403をオンに設定し、イベント発生状態遷移表識別子2907およびイベント識別子2908と一致する状態遷移表識別子3501および通過イベント識別子3502を持つ通過イベントチェックエントリが存在すれば通過フラグ3503をオンに設定する。
【0123】チャネル容量チェックブロック2704では、選択されたグローバル状態が、後述する解析条件設定画面(図41)により設定されたチャネル容量を越えていないかどうかをチェックする。すなわち、各チャネル状態エントリ3100に対応するメッセージリスト長がチャネル容量を越えるかどうかをチェックする。越える場合には、後述する遷移候補リストチェックブロック2709へ進む。越えない場合には、終端条件チェックブロック2705へ進む。
【0124】終端条件チェックブロック2705では、選択されたグローバル状態が生成条件の中の終端条件を満足するかどうかを調べる。終端条件を満足するのは、次の2つの場合である。まず第1は、選択されたグローバル状態に対応するすべてのローカル状態エントリ3000のローカル状態識別子3002が、それらのローカル状態エントリ3000に対応する生成条件エントリ1800の終端状態識別子1804に一致する場合である。第2は、イベント発生状態遷移表識別子2907およびイベント識別子2908に一致する状態遷移表識別子1801および終端イベント識別子1805を持つ生成条件エントリ1800が存在する場合である。
【0125】終端条件を満足する場合には、後述する通過条件チェックブロック2706へ進む。満足しない場合には、遷移候補リスト更新ブロック2708へ進む。
【0126】遷移候補リスト更新ブロック2708では、選択されたグローバル状態の次に起こり得るすべての遷移に対応するグローバル状態を求め、図37の遷移候補リストに追加する。次に起こり得る遷移には、チャネル上のメッセージの受信と内部発生イベントがある。
【0127】以下、遷移候補リスト更新ブロック2708における処理について説明する。
【0128】まず、選択されたグローバル状態エントリ2900に属し、チャネル状態3102が「メッセージ有」であるチャネル状態エントリ3100に対応して選択されたグローバル状態エントリの複製を作成し、新たにグローバル状態識別子を割当てる。そして、新たに作成したグローバル状態エントリの遷移元グローバル状態識別子2906に元のグローバル状態エントリのグローバル状態識別子を設定する。
【0129】また、チャネル状態3102が「メッセージ有」であるチャネル状態エントリ3100のチャネル識別子3101と一致するチャネル識別子1501を持つチャネルエントリ1500の送信先状態遷移表識別子1503をイベント発生状態遷移表識別子2907に設定し、チャネル状態エントリ3100に属するメッセージリスト3200の先頭エントリの送信先イベント識別子3201をイベント識別子2908に設定する。
【0130】さらに、メッセージリスト3200の先頭エントリを削除し、メッセージリスト3200が空になるならば、チャネル状態エントリ3100のチャネル状態3102を「メッセージ無」とする。イベント識別子2908に対応する状態遷移エントリ1200の非通過フラグ1205がオンならば、生成したグローバル状態エントリ2900を廃棄する。非通過フラグ1205がオフならば、さらに生成したグローバル状態エントリの複製を((条件数)−1)個作成し、それぞれに新たにグローバル状態識別子を割当てる。条件数とは、対応する状態遷移エントリ1200が含む処理エントリ数、すなわち当該状態遷移が含む条件の数(例えば図3の枠305内の条件数)である。これにより、条件数分のグローバル状態エントリが生成された。
【0131】次に、これら条件数分のグローバル状態エントリの各条件識別子2909に、状態遷移処理におけるそれぞれの条件に対応する処理エントリ1300の条件識別子1301を設定する。そして、処理エントリ1300の遷移先状態識別子1303を、対応するローカル状態エントリ3000のローカル状態識別子3002に設定する。
【0132】また、処理エントリ1300に対応する動作エントリ1400の中でメッセージフラグ1403がオンであるものについて、チャネル識別子1406と同じチャネル識別子3101を持つチャネル状態エントリ3100を探索し、そのチャネル状態3102が「メッセージ無」ならば「メッセージ有」に設定する。そして、送信先イベント識別子1405をメッセージエントリ3200の送信先イベント識別子3201に設定し、メッセージエントリ3200のアドレスをメッセージリストポインタ3103に設定する。チャネル状態3102が「メッセージ有」ならば、新たに、送信先イベント識別子1405を送信先イベント識別子3201に設定したメッセージエントリ3200を図32のメッセージリストに追加する。さらに、最小遷移数2乗和2905を更新する。
【0133】メッセージフラグ1103がオフであるイベントエントリ1100のイベント識別子1101と選択されたグローバル状態に属するローカル状態エントリ3000のローカル状態識別子3002とに対応する状態遷移エントリ1200が存在し、その非通過フラグ1205がオフであるならば、選択されたグローバル状態エントリの複製を作成し、新たにグローバル状態識別子を割当てる。そして、新たに生成したグローバル状態エントリの遷移元グローバル状態識別子2906に元のグローバル状態エントリのグローバル状態識別子を設定する。
【0134】そして、新たに生成したグローバル状態エントリのイベント発生状態遷移表識別子2907に、メッセージフラグ1103がオフであるイベントエントリ1100が属する状態遷移表エントリ900の状態遷移表識別子901を設定し、イベント識別子2908に、メッセージフラグ1103がオフであるイベントエントリのイベント識別子1101を設定する。
【0135】さらに、生成したグローバル状態エントリの複製を((条件数)−1)個作成し、それぞれに新たにグローバル状態識別子を割当てる。条件数とは、対応する状態遷移エントリ1200が含む処理エントリ数である。これにより、条件数分のグローバル状態エントリが生成された。
【0136】次に、これら条件数分のグローバル状態エントリの各条件識別子2909に、状態遷移処理におけるそれぞれの条件に対応する処理エントリ1300の条件識別子1301を設定する。そして、処理エントリ1300の遷移先状態識別子1303を、対応するローカル状態エントリ3000のローカル状態識別子3002に設定する。
【0137】また、処理エントリ1300に対応する動作エントリ1400の中でメッセージフラグ1403がオンであるものについて、チャネル識別子1406と同じチャネル識別子3101を持つチャネル状態エントリ3100を探索し、そのチャネル状態3102が「メッセージ無」ならば「メッセージ有」に設定する。そして、送信先イベント識別子1405をメッセージエントリ3200の送信先イベント識別子3201に設定し、メッセージエントリ3200のアドレスをメッセージリストポインタ3103に設定する。チャネル状態3102が「メッセージ有」ならば、新たに、送信先イベント識別子1405を送信先イベント識別子3201に設定したメッセージエントリ3200を図32のメッセージリストに追加する。さらに、最小遷移数2乗和2905を更新する。
【0138】次に、図37に示す遷移候補リストに、生成したグローバル状態を加える。ただし、グローバル状態リストの中のエントリ2900にローカル状態、メッセージリストを含むチャネル状態およびイベント識別子が一致するものがある生成したグローバル状態は廃棄する。
【0139】以上で、遷移候補リスト更新ブロック2708の処理が終了した。
【0140】ブロック2708の後、遷移候補リストチェックブロック2709へ進む。ブロック2709では、図37の遷移候補リストが空かどうかをチェックする。空ならば、シーケンス探索ブロック2503を終了する。空でないならば、遷移候補選択ブロック2710へ進む。
【0141】遷移候補選択ブロック2710では、図37R>7の遷移候補エントリ3700の中で、そのグローバル状態に対応する状態遷移エントリ1200の遷移実行カウンタ1206が最小のものを選択し、遷移候補リストから取り除く。その後、ブロック2703へ進む。ブロック2710は、重複の少ないメッセージシーケンスを優先的に生成するために未探索の状態遷移を先に探索することを意図している。したがって、すべてのメッセージシーケンスを生成する場合には任意の候補を選択してもよい。
【0142】通過条件チェックブロック2706では、選択されたグローバル状態に属する通過状態チェックリスト3400および通過イベントチェックリスト3500のすべての通過フラグ3403および3503がオンであるかどうかをチェックする。オンでないものがあれば、ブロック2709へ進む。オンであれば、シーケンス更新ブロック2707へ進む。
【0143】図28は、シーケンス更新ブロック2707の詳細な流れを示す。まず、生成シーケンス数更新ブロック2801では、生成シーケンス数を1増加させ、図24に示すシーケンス生成画面の生成数2401を更新する。シーケンス登録ブロック2802では、選択されたグローバル状態のグローバル状態識別子2901を図38に示すシーケンスリストに追加する。
【0144】遷移実行カウンタ更新ブロック2803では、選択されたグローバル状態から初期グローバル状態までの各グローバル状態に対応する状態遷移エントリ1200の遷移実行カウンタ1206を1増加させる。シーケンス生成候補リスト更新ブロック2804では、図3636のシーケンス生成候補リストに遷移候補リストを加える。
【0145】以上で、シーケンス更新ブロック2707が終了し、シーケンス探索ブロック2503が終了したことになる。
【0146】なお、生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成する方法は、ブロック2502において状態遷移リストの中の非通過フラグ1205がオフであるすべてのエントリについて遷移実行カウンタが非ゼロであるならば終了するという処理を追加することにより実現される。
【0147】また、指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成する方法は、ブロック2502において生成シーケンス数が指定された最大個数ならば終了するという処理を追加することにより実現される。
【0148】これらの方法はブロック2701および2719において、重複の少ないメッセージシーケンスを優先的に生成することを意図した処理が含まれているために実現可能となっている。
【0149】次に、図1のメッセージシーケンス図表示機能106について説明する。メッセージシーケンス図表示機能106は、図7のシーケンス図メニュー702が選択されると起動される。本機能は、メッセージシーケンス情報113に基づくメッセージシーケンス図を表示装置204に表示する。メッセージシーケンス情報113は、図38、および図29から図32に示す形式、並びに状態遷移情報111からなる。
【0150】図39は、本機能により表示装置204に画面表示されるメッセージシーケンス図の例を示す。この画面は、生成されたメッセージシーケンス対応に存在する。画面上には、前シーケンスボタン3901、および次シーケンスボタン3902が設けられており、これらを操作することにより他のメッセージシーケンス図を表示させることができる。また、画面表示を終了させるための終了ボタン3913が設けられている。
【0151】図において、3903はシーケンス番号、3904はメッセージシーケンス図、3905と3906はスクロールバーを示す。シーケンス番号3903は、表示されているメッセージシーケンス図の、生成されたメッセージシーケンス全体における相対的位置を示す。スクロールバー3905と3906は、現在画面上に表示されている部分のメッセージシーケンス図全体における位置を示す縦と横のスクロールバーである。
【0152】メッセージシーケンス図3904は、状態遷移表名称3907、状態名称3908、受信メッセージまたは内部発生イベントに対応するイベント名称3909、条件名称3910、内部動作に対応する動作名称3911、および送信メッセージに対応する動作名称3912からなる。なお、後述する表示形式選択画面(図4040)により状態名称、条件名称、および内部動作名称についての表示または不表示を選択できる。
【0153】メッセージシーケンスは、図38のシーケンスリストのエントリ3800に対応するグローバル状態を出発点として遷移元グローバル状態識別子2906を用いて順々に初期グローバル状態に到達するまで戻ることにより得られるグローバル状態の順序列で与えられる。
【0154】図8の表示形式メニュー802が選択されると、図40に示すメッセージシーケンス図表示形式選択画面を表示する。ボタン4001の選択は状態名称の表示を意味する。ボタン4002の選択は条件名称の表示を意味する。ボタン4003の選択は内部動作名称の表示を意味する。これらのボタンは任意の組合せで選択できる。ボタンによる選択がない場合には、送受信メッセージのみを表示する。なお、終了ボタン4004により画面表示を終了する。
【0155】図8の解析条件メニュー803が選択されると、図41に示す解析条件設定画面を表示する。フィールド4101には前述のチャネル容量チェックブロック2704におけるチャネル容量最大値を設定する。なお、終了ボタン4102により画面表示を終了する。
【0156】以上で説明した実施例では状態遷移仕様として状態遷移表が与えられる場合を仮定したが、状態遷移仕様として状態遷移図が与えられる場合でも、図17の表示画面を除いて本発明は適用可能である。
【0157】
【発明の効果】本発明によれば、次に示すような効果がある。
(1)状態遷移仕様からメッセージシーケンスを生成する場合の受信メッセージを含むイベントの制約条件以外に状態に関する制約条件も指定することができる。
(2)状態遷移表により制約条件を入力するので、制約条件の入力は非常に容易である。
(3)利用目的に合わせて表示するメッセージシーケンス図の詳細度を変更することが可能である。
(4)設計者のチェック可能な限度を越える多数のメッセージシーケンスを生成しないようにできる。
(5)同一のメッセージに対して送信側と受信側で異なる名称を与えられた状態遷移仕様に対しても処理することができる。
【0158】したがって、内容把握の難しい状態遷移仕様に対して理解が容易なメッセージシーケンス図の中で設計者が必要とするものだけを提示できるため、仕様の検証、レビュー、および保守が容易になるという効果がある。
【図面の簡単な説明】
【図1】図1は、本発明のメッセージシーケンス生成方法を実現する装置の機能構成の一例を示す図である。
【図2】図2は、本発明を適用したメッセージシーケンス生成装置のハードウェア構成の一例を示す図である。
【図3】図3は、状態遷移表の一例を示す図である。
【図4】図4は、起動初期画面の一例を示す図である。
【図5】図5は、ファイルメニューの一例を示す図である。
【図6】図6は、生成メニューの一例を示す図である。
【図7】図7は、表示メニューの一例を示す図である。
【図8】図8は、オプションメニューの一例を示す図である。
【図9】図9は、状態遷移表リストの一例を示す図である。
【図10】図10は、状態リストの一例を示す図である。
【図11】図11は、イベントリストの一例を示す図である。
【図12】図12は、状態遷移リストの一例を示す図である。
【図13】図13は、処理リストの一例を示す図である。
【図14】図14は、動作リストの一例を示す図である。
【図15】図15は、チャネルリストの一例を示す図である。
【図16】図16は、入出力関係情報表示画面の一例を示す図である。
【図17】図17は、生成条件入力画面の一例を示す図である。
【図18】図18は、生成条件リストの一例を示す図である。
【図19】図19は、通過状態リストの一例を示す図である。
【図20】図20は、通過イベントリストの一例を示す図である。
【図21】図21は、非通過状態リストの一例を示す図である。
【図22】図22は、非通過イベントリストの一例を示す図である。
【図23】図23は、メッセージシーケンス生成方法選択表示画面の一例を示す図である。
【図24】図24は、メッセージシーケンス生成中表示画面の一例を示す図である。
【図25】図25は、メッセージシーケンス生成方法の概要のフローチャートの一例を示す図である。
【図26】図26は、メッセージシーケンス生成方法の中の初期化処理のフローチャートの一例を示す図である。
【図27】図27は、メッセージシーケンス生成方法の中のシーケンス探索処理のフローチャートの一例を示す図である。
【図28】図28は、メッセージシーケンス生成方法の中のシーケンス更新処理のフローチャートの一例を示す図である。
【図29】図29は、グローバル状態リストの一例を示す図である。
【図30】図30は、ローカル状態リストの一例を示す図である。
【図31】図31は、チャネル状態リストの一例を示す図である。
【図32】図32は、メッセージリストの一例を示す図である。
【図33】図33は、通過条件レコードの一例を示す図である。
【図34】図34は、通過状態チェックリストの一例を示す図である。
【図35】図35は、通過イベントチェックリストの一例を示す図である。
【図36】図36は、シーケンス生成候補リストの一例を示す図である。
【図37】図37は、遷移候補リストの一例を示す図である。
【図38】図38は、シーケンスリストの一例を示す図である。
【図39】図39は、メッセージシーケンス図表示画面の一例を示す図である。
【図40】図40は、メッセージシーケンス図表示形式選択画面の一例を示す図である。
【図41】図41は、解析条件設定画面の一例を示す図である。
【符号の説明】
101…実行制御機能、102…状態遷移仕様編集機能、111…状態遷移情報、103…入出力関係情報入力機能、104…生成条件情報入力機能、112…生成条件情報、105…メッセージシーケンス生成機能、113…メッセージシーケンス情報、106…メッセージシーケンス図表示機能、201…入力装置、202…処理装置、203…記憶装置、204…表示装置。
【特許請求の範囲】
【請求項1】計算機および対話用端末を有する情報処理装置を用いて、通信ソフトウェアに関するメッセージシーケンスを生成する方法であって、該通信ソフトウェアに関する状態遷移仕様を入力する状態遷移仕様入力ステップと、該状態遷移仕様に基づいて、状態遷移表を生成し表示するステップと、該状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力する生成条件入力ステップと、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成するメッセージシーケンス生成ステップとを備えたことを特徴とするメッセージシーケンス生成方法。
【請求項2】さらに、前記生成したメッセージシーケンスに基づくメッセージシーケンス図を前記対話用端末に表示する表示ステップを備えた請求項1に記載のメッセージシーケンス生成方法。
【請求項3】前記メッセージシーケンス図の表示ステップは、送受信されるメッセージ、メッセージの送受信により変化する状態、分岐条件、および内部処理の中から任意に組合せて指定された構成要素からなるメッセージシーケンス図を表示する請求項2に記載のメッセージシーケンス生成方法。
【請求項4】前記状態遷移表は、遷移前の各状態と発生する各イベントとに応じてどのように状態が遷移するかを一覧表形式で表したものであり、前記生成条件入力ステップでは、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンスの開始点となる初期状態および初期イベントの指定、並びに(ii)生成するメッセージシーケンスの終了点となる終端状態および/または終端イベントの指定を行なう請求項1ないし3に記載のメッセージシーケンス生成方法。
【請求項5】さらに、前記生成条件入力ステップでは、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンス中に必ず含まれる状態の指定、(ii)生成するメッセージシーケンス中に必ず含まれるイベントの指定、(iii) 生成するメッセージシーケンス中には必ず含まれない状態の指定、および/または、(iv)生成するメッセージシーケンス中には必ず含まれないイベントの指定を行なう請求項4に記載のメッセージシーケンス生成方法。
【請求項6】前記メッセージシーケンス生成ステップは、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成する請求項1ないし5に記載のメッセージシーケンス生成方法。
【請求項7】前記メッセージシーケンス生成ステップは、生成されるメッセージシーケンスの最大個数を指定させるステップを含むとともに、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了する請求項1ないし6に記載のメッセージシーケンス生成方法。
【請求項8】前記メッセージシーケンス生成ステップは、(i) 前記生成条件を満足するすべてのメッセージシーケンスを生成するか、(ii)前記生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成するか、または、(iii) 指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成するかを、指定することができ、指定された方法に従ってメッセージシーケンスを生成する請求項1ないし7に記載のメッセージシーケンス生成方法。
【請求項9】さらに、前記状態遷移仕様入力ステップで入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで付した名称を表示するステップを備えた請求項1ないし8に記載のメッセージシーケンス生成方法。
【請求項10】さらに、前記状態遷移仕様入力ステップで入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで異なる名称が付与されている場合に、送信側名称と受信側名称とを関連付けるための対応関係情報を入力するステップを備えた請求項1ないし9に記載のメッセージシーケンス生成方法。
【請求項11】通信ソフトウェアに関するメッセージシーケンスを生成する装置であって、該通信ソフトウェアに関する状態遷移仕様を入力する状態遷移仕様入力手段と、該状態遷移仕様に基づいて、状態遷移表を生成し表示する手段と、該状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力する生成条件入力手段と、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成するメッセージシーケンス生成手段とを備えたことを特徴とするメッセージシーケンス生成装置。
【請求項12】さらに、前記生成したメッセージシーケンスに基づくメッセージシーケンス図を表示する手段を備えた請求項11に記載のメッセージシーケンス生成装置。
【請求項13】前記メッセージシーケンス図を表示する手段は、送受信されるメッセージ、メッセージの送受信により変化する状態、分岐条件、および内部処理の中から任意に組合せて指定された構成要素からなるメッセージシーケンス図を表示する請求項12に記載のメッセージシーケンス生成装置。
【請求項14】前記状態遷移表は、遷移前の各状態と発生する各イベントとに応じてどのように状態が遷移するかを一覧表形式で表したものであり、前記生成条件入力手段では、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンスの開始点となる初期状態および初期イベントの指定、並びに(ii)生成するメッセージシーケンスの終了点となる終端状態および/または終端イベントの指定を行なうことができる請求項11ないし13に記載のメッセージシーケンス生成装置。
【請求項15】さらに、前記生成条件入力手段では、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンス中に必ず含まれる状態の指定、(ii)生成するメッセージシーケンス中に必ず含まれるイベントの指定、(iii) 生成するメッセージシーケンス中には必ず含まれない状態の指定、および/または、(iv)生成するメッセージシーケンス中には必ず含まれないイベントの指定を行なうことができる請求項14に記載のメッセージシーケンス生成装置。
【請求項16】前記メッセージシーケンス生成手段は、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成する請求項11ないし15に記載のメッセージシーケンス生成装置。
【請求項17】前記メッセージシーケンス生成手段は、生成されるメッセージシーケンスの最大個数を指定させる手段を含むとともに、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了する請求項11ないし16に記載のメッセージシーケンス生成装置。
【請求項18】前記メッセージシーケンス生成手段では、(i) 前記生成条件を満足するすべてのメッセージシーケンスを生成するか、(ii)前記生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成するか、または、(iii) 指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成するかを、指定することができ、指定された方法に従ってメッセージシーケンスを生成する請求項11ないし17に記載のメッセージシーケンス生成装置。
【請求項19】さらに、前記状態遷移仕様入力手段で入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで付した名称を表示する手段を備えた請求項11ないし18に記載のメッセージシーケンス生成装置。
【請求項20】さらに、前記状態遷移仕様入力手段で入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで異なる名称が付与されている場合に、送信側名称と受信側名称とを関連付けるための対応関係情報を入力する手段を備えた請求項11ないし19に記載のメッセージシーケンス生成装置。
【請求項1】計算機および対話用端末を有する情報処理装置を用いて、通信ソフトウェアに関するメッセージシーケンスを生成する方法であって、該通信ソフトウェアに関する状態遷移仕様を入力する状態遷移仕様入力ステップと、該状態遷移仕様に基づいて、状態遷移表を生成し表示するステップと、該状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力する生成条件入力ステップと、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成するメッセージシーケンス生成ステップとを備えたことを特徴とするメッセージシーケンス生成方法。
【請求項2】さらに、前記生成したメッセージシーケンスに基づくメッセージシーケンス図を前記対話用端末に表示する表示ステップを備えた請求項1に記載のメッセージシーケンス生成方法。
【請求項3】前記メッセージシーケンス図の表示ステップは、送受信されるメッセージ、メッセージの送受信により変化する状態、分岐条件、および内部処理の中から任意に組合せて指定された構成要素からなるメッセージシーケンス図を表示する請求項2に記載のメッセージシーケンス生成方法。
【請求項4】前記状態遷移表は、遷移前の各状態と発生する各イベントとに応じてどのように状態が遷移するかを一覧表形式で表したものであり、前記生成条件入力ステップでは、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンスの開始点となる初期状態および初期イベントの指定、並びに(ii)生成するメッセージシーケンスの終了点となる終端状態および/または終端イベントの指定を行なう請求項1ないし3に記載のメッセージシーケンス生成方法。
【請求項5】さらに、前記生成条件入力ステップでは、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンス中に必ず含まれる状態の指定、(ii)生成するメッセージシーケンス中に必ず含まれるイベントの指定、(iii) 生成するメッセージシーケンス中には必ず含まれない状態の指定、および/または、(iv)生成するメッセージシーケンス中には必ず含まれないイベントの指定を行なう請求項4に記載のメッセージシーケンス生成方法。
【請求項6】前記メッセージシーケンス生成ステップは、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成する請求項1ないし5に記載のメッセージシーケンス生成方法。
【請求項7】前記メッセージシーケンス生成ステップは、生成されるメッセージシーケンスの最大個数を指定させるステップを含むとともに、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了する請求項1ないし6に記載のメッセージシーケンス生成方法。
【請求項8】前記メッセージシーケンス生成ステップは、(i) 前記生成条件を満足するすべてのメッセージシーケンスを生成するか、(ii)前記生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成するか、または、(iii) 指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成するかを、指定することができ、指定された方法に従ってメッセージシーケンスを生成する請求項1ないし7に記載のメッセージシーケンス生成方法。
【請求項9】さらに、前記状態遷移仕様入力ステップで入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで付した名称を表示するステップを備えた請求項1ないし8に記載のメッセージシーケンス生成方法。
【請求項10】さらに、前記状態遷移仕様入力ステップで入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで異なる名称が付与されている場合に、送信側名称と受信側名称とを関連付けるための対応関係情報を入力するステップを備えた請求項1ないし9に記載のメッセージシーケンス生成方法。
【請求項11】通信ソフトウェアに関するメッセージシーケンスを生成する装置であって、該通信ソフトウェアに関する状態遷移仕様を入力する状態遷移仕様入力手段と、該状態遷移仕様に基づいて、状態遷移表を生成し表示する手段と、該状態遷移表の中の各状態遷移に対してメッセージシーケンスを生成する際の生成条件を入力する生成条件入力手段と、前記状態遷移仕様から前記生成条件を満足するメッセージシーケンスを生成するメッセージシーケンス生成手段とを備えたことを特徴とするメッセージシーケンス生成装置。
【請求項12】さらに、前記生成したメッセージシーケンスに基づくメッセージシーケンス図を表示する手段を備えた請求項11に記載のメッセージシーケンス生成装置。
【請求項13】前記メッセージシーケンス図を表示する手段は、送受信されるメッセージ、メッセージの送受信により変化する状態、分岐条件、および内部処理の中から任意に組合せて指定された構成要素からなるメッセージシーケンス図を表示する請求項12に記載のメッセージシーケンス生成装置。
【請求項14】前記状態遷移表は、遷移前の各状態と発生する各イベントとに応じてどのように状態が遷移するかを一覧表形式で表したものであり、前記生成条件入力手段では、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンスの開始点となる初期状態および初期イベントの指定、並びに(ii)生成するメッセージシーケンスの終了点となる終端状態および/または終端イベントの指定を行なうことができる請求項11ないし13に記載のメッセージシーケンス生成装置。
【請求項15】さらに、前記生成条件入力手段では、前記状態遷移表の各状態および各イベントに対して、(i) 生成するメッセージシーケンス中に必ず含まれる状態の指定、(ii)生成するメッセージシーケンス中に必ず含まれるイベントの指定、(iii) 生成するメッセージシーケンス中には必ず含まれない状態の指定、および/または、(iv)生成するメッセージシーケンス中には必ず含まれないイベントの指定を行なうことができる請求項14に記載のメッセージシーケンス生成装置。
【請求項16】前記メッセージシーケンス生成手段は、既に生成したメッセージシーケンスとの状態遷移の重複が少ないメッセージシーケンスを優先的に生成する請求項11ないし15に記載のメッセージシーケンス生成装置。
【請求項17】前記メッセージシーケンス生成手段は、生成されるメッセージシーケンスの最大個数を指定させる手段を含むとともに、生成メッセージシーケンス数が指定された最大個数に達した場合に生成を終了する請求項11ないし16に記載のメッセージシーケンス生成装置。
【請求項18】前記メッセージシーケンス生成手段では、(i) 前記生成条件を満足するすべてのメッセージシーケンスを生成するか、(ii)前記生成条件を満足するメッセージシーケンスの中で非通過指定されたものを除くすべての状態遷移を網羅する組合せを生成するか、または、(iii) 指定された最大個数までで重複が少ないメッセージシーケンスの組合せを生成するかを、指定することができ、指定された方法に従ってメッセージシーケンスを生成する請求項11ないし17に記載のメッセージシーケンス生成装置。
【請求項19】さらに、前記状態遷移仕様入力手段で入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで付した名称を表示する手段を備えた請求項11ないし18に記載のメッセージシーケンス生成装置。
【請求項20】さらに、前記状態遷移仕様入力手段で入力された状態遷移仕様に関して、同一のメッセージに対して送信側と受信側とで異なる名称が付与されている場合に、送信側名称と受信側名称とを関連付けるための対応関係情報を入力する手段を備えた請求項11ないし19に記載のメッセージシーケンス生成装置。
【図2】
【図1】
【図4】
【図19】
【図20】
【図21】
【図3】
【図6】
【図5】
【図8】
【図7】
【図9】
【図10】
【図11】
【図13】
【図12】
【図14】
【図22】
【図31】
【図15】
【図16】
【図32】
【図33】
【図17】
【図23】
【図18】
【図24】
【図30】
【図25】
【図29】
【図26】
【図34】
【図35】
【図36】
【図37】
【図27】
【図38】
【図28】
【図40】
【図39】
【図41】
【図1】
【図4】
【図19】
【図20】
【図21】
【図3】
【図6】
【図5】
【図8】
【図7】
【図9】
【図10】
【図11】
【図13】
【図12】
【図14】
【図22】
【図31】
【図15】
【図16】
【図32】
【図33】
【図17】
【図23】
【図18】
【図24】
【図30】
【図25】
【図29】
【図26】
【図34】
【図35】
【図36】
【図37】
【図27】
【図38】
【図28】
【図40】
【図39】
【図41】
【公開番号】特開平6−152684
【公開日】平成6年(1994)5月31日
【国際特許分類】
【出願番号】特願平4−322430
【出願日】平成4年(1992)11月6日
【出願人】(000005108)株式会社日立製作所 (27,607)
【公開日】平成6年(1994)5月31日
【国際特許分類】
【出願日】平成4年(1992)11月6日
【出願人】(000005108)株式会社日立製作所 (27,607)
[ Back to top ]