(57)【特許請求の範囲】
【請求項１】
仕様に基づいて状態遷移図の基になる状態配置図を出力する設計仕様作成支援装置において、
上記仕様に規定される２つの状態が同時に有効になる状態並行性情報を成情報、及び同時には有効にならないという状態排他性情報を否情報として、上記２つの状態が交わった点での成否情報で表した順列リストとして入力し、上記成情報で示される状態を抜出してゆき、該抜出した成情報の数だけ並行状態があるとし、上記否情報で示される状態を抜出してゆき、該抜出した否情報の状態は上記並行状態とは排他する関係を示す状態分割情報を出力する状態分割手段を備えて、
上記状態分割情報を基に状態配置図を得ることを特徴とする設計仕様作成支援装置。
【請求項２】
複数の状態間の優先順位情報を基に、状態分割手段が出力する状態分割情報の並行状態に、上記優先順位情報に基づいて階層化情報を加えて状態配置図を出力する状態階層化手段を備えた、ことを特徴とする請求項１記載の設計仕様作成支援装置。
【請求項３】
順列リストは、ありうる状態の組合わせをマトリクスの縦と横の欄に展開して、該縦と横との交点に２つの状態が同時に有効になるか、有効にならないかを表す成否情報を記入した状態決定用マトリクスとし、
状態分割手段は、上記状態決定用マトリクスの各欄を順次調べることを特徴とする請求項１記載の設計仕様作成支援装置。
【請求項４】
状態分割手段は、並行状態にあると判定した対象状態を取出し、該取出した対象状態を他の並行状態と比較して独立した並行状態であるかを調べて、並行状態を確定するようにしたことを特徴とする請求項１記載の設計仕様作成支援装置。
【請求項５】
順列リストは、ありうる状態の組合わせをマトリクスの縦と横の欄に展開して、該縦と横との交点に２つの状態が同時に有効になり得るという状態並行性情報、状態が排他的に有効になるという状態排他性情報、１つの情報が有効になると他方も必ず有効になるという状態包含性情報、のいずれかを表す状態情報を記入した状態決定用マトリクスとし、
状態分割手段は、上記状態決定用マトリクスに記入された上記状態情報が所定の条件を満足する正規形マトリクスである場合は、該正規形マトリクスに対応する状態配置図を出力することを特徴とする請求項１記載の設計仕様作成支援装置。
【請求項６】
正規形マトリクスを、状態排他性情報のみが記入された独立正規形、状態並行性情報のみが記入された並行正規形、状態包含性情報のみが記入された階層正規形、に分類して、
状態分割手段は、上記の分類された各正規形マトリクスに対応してそれぞれ、排他的な独立関係を示す状態配置図、並行関係を示す状態配置図、階層関係を示す階層配置図、を出力することを特徴とする請求項５記載の設計仕様作成支援装置。
【請求項７】
状態分割手段は、状態決定用マトリクスに示される任意の順番にある縦と横の状態を、別の縦と横の位置に移して挿入する並べ替えアルゴリズムを用いて状態決定用マトリクスの縦と横の順番の並べ替えを行って正規形マトリクスを生成することを特徴とする請求項５記載の設計仕様作成支援装置。
【請求項８】
状態分割手段は、状態決定用マトリクスの縦と横の交点に記入された状態情報の一部を仮に他の状態情報に置換えて得られる正規形マトリクスに基づいて状態配置図を出力し、
上記仮に他の状態情報に変更した元の２つの状態間に優先順位を適用して上記状態分割手段が出力した状態配置図に階層情報を加えて変更する状態階層化手段、を備えたことを特徴とする請求項５記載の設計仕様作成支援装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、製品の設計仕様を記述する状態遷移図を得るための設計仕様作成支援装置に関するものである。
【０００２】
【従来の技術】
製品制作の順序としては、
（１）設計仕様の記述、
（２）仕様の正しさの検証、
（３）仕様に基づくハードウェア、ソフトウェアの開発、
（４）システム試験、
を経て最終製品が確定する。この間に上述の工程間で手戻りがあり、この手戻りを出来るだけ初期のまたは上流の段階で減らすことが高品質の製品を短時間で生み出すのに大切なこととされている。
ところで、設計仕様を、計算機シミュレーションが出来るためによく用いられるようになった状態遷移図で表現することが知られている。状態遷移図で記述された対象は、容易にシミュレーションが行われ、従ってその過程で上流に対するフィードバックがされるので、実物によるシステム試験を待たずに記述された仕様を検証し、初期の段階で設計が確定する。
【０００３】
この状態遷移図に並行性と階層性を持たせた手法として、ＳＴＡＴＥＣＨＡＲＴがある。これはオブジェクト指向方法論の１つで、ＯＭＴ法と呼ばれる手法の中の動的モデルを用いた方法である。ＳＴＡＴＥＣＨＡＲＴは、例えば、David  Harel and A.Naamad:The STATEMATE Semantics of Statecharts,submitted for  publication.(Revised version of“The Semantics of Statecharts”,Tech.Report,i-Logix,Inc. (1989))の文献で紹介されていて、ＳＴＡＴＥＭＡＴＥという商品として実装されている。
このＳＴＡＴＥＣＨＡＲＴは、従来の遷移図に並行性と階層性の概念を取り入れているので、大規模なシステムの記述を状態遷移図で表すことも出来るようになった。またその文法や、意味論に関しても研究が進んでいる。
上述の各方法は一旦、遷移図の状態で記述が出来ると、以後の分析とフィードバックは容易であるが、遷移図を作成するまでは系統だった手法が確立しておらず、そのほとんどを人が経験を頼りに１つ１つの項目を人手で配置するしかなかった。設計対象の製品が大規模になると、この作業は困難を極め、多大の労力と、製品に対する経験が要求される。また、出来上がった状態遷移図を以後のシミュレーションで検証して正していくのに多くの試行錯誤の時間がいる。
制御仕様を形式的に記述する方法が特開平２−１０９１２７号公報で示されている。しかしこの方法は、入力の制御仕様を専門知識情報と関係付けてドキュメント情報として整理して出力するものであり、設計仕様を状態遷移図で表現して出力するものではない。
【０００４】
【発明が解決しようとする課題】
従来のＳＴＡＴＥＣＨＡＲＴであれ状態遷移図であれ、各状態をどのような関係でどのような優先度で配置していくかについては確立された方法がなく、熟練者の経験と時間が要求されるという課題があった。
【０００５】
この発明は上記の課題を解消するためになされたもので、制御仕様に記述される個別機能についてそれらに対応する状態が同時に有効になるかならないかの状態の並行性情報及び排他性の情報と、１つの状態が有効になったとき、他の状態も必ず有効になるという包含性情報と、更に必要に応じてそれらの状態の優先順位情報を入力するだけで状態遷移図の前段階の状態配置図を得ることを目的とする。
【０００６】
【課題を解決するための手段】
この発明に係る設計仕様作成支援装置は、仕様に規定される状態が同時に有効になるかならないかという状態並行性情報及び状態排他性情報を基に、状態遷移図における並行または排他状態を割り付けていく状態分割手段を備えて、
状態遷移図用に状態を割り付けられた分割状態配置図を出力するようにした。
【０００７】
また更に、仕様に規定される１つの状態が有効になると他の状態も必ず有効になるという状態包含性情報を基に、状態遷移図における階層状態を割り付けていく状態分割手段を備えて、
状態遷移図用に、上記状態を割り付けられた分割状態配置図を出力するようにした。
【０００８】
また更に、複数の状態間の優先順位情報を基に、排他的に有効になる状態の階層配置を行う状態配置手段を備えて、
状態遷移図用に、階層を表現したあり得る階層状態配置図を出力するようにした。
【０００９】
また更に、仕様に規定される状態が同時に有効になるかまたは同時に有効にならないかを決定用マトリクスで記述し、
状態分割手段は、決定用マトリクスを基に並行または排他状態を割り付けるようにした。
【００１０】
また更に、状態分割手段は、位置付けが曖昧かどうかを検査する位置曖昧状態検索アルゴリズムを付加して、並行状態の割付出力に際しては位置割付の曖昧さの状態も出力するようにした。
【００１１】
また更に、仕様に規定される状態が同時に有効になり得るという状態並行性情報、状態が排他的に有効になるという状態排他性情報、１つの状態が有効になると他方も必ず有効になるという状態包含性情報を表現する状態位置決定用マトリクスで記述し、
状態分割手段は、並べ替えアルゴリズムを用いて状態位置決定用マトリクス中の状態の順番を並べ替えて完全正規形マトリクスを出力するようにした。
【００１２】
また更に、仕様に規定される状態が同時に有効になり得るという状態並行性情報、状態が排他的に有効になるという状態排他性情報、１つの状態が有効になると他方も必ず有効になるという状態包含性情報を表現する状態位置決定用マトリクスで記述し、
状態分割手段は、変形化アルゴリズムを用いて状態位置決定用マトリクスの一部の要素を変更して条件付き正規形マトリクスを出力するようにした。
【００１３】
また更に、状態分割手段は、状態分割アルゴリズムを用いて状態位置決定用マトリクスを細分化状態に分解可能な正規形マトリクスに変形処理をし、
正規形マトリクスを基に細分化された分割状態配置図を出力するようにした。
【００１４】
【発明の実施の形態】
実施の形態１．
本発明の仕様に規定される状態が同時に有効かまたは同時には有効にならないかの状態並行性及び状態排他性の情報を基にして、また更に、複数の状態間の優先順位情報を基にして、階層も表現したあり得る階層並行状態配置図を得る、設計仕様作成支援装置を説明する。
図１は、この実施の形態における設計仕様作成支援装置の構成図である。
図において、１は設計仕様作成支援装置と対話して情報を入力したり、条件を提示したりする入出力装置で、２は設計仕様作成支援装置であり、以下の要素から構成される。即ち、３の仕様に規定される状態が同時に有効かまたは同時には有効にならないかの状態並行性及び状態排他性の情報を基にして並行に存在し得る状態を割り付けていく状態分割手段と、４の複数の状態間の優先順位情報を基にして並行に存在しうる状態の階層割付を行う状態階層化手段と、５の設計仕様の状態並行性及び状態排他性を含んだ状態関係情報ファイルと、６の状態間の優先順位情報ファイルと、７の一旦得られたあり得る状態配置図で表される状態分割情報ファイルと、８のＳＴＡＴＥＣＨＡＲＴ状態配置情報（階層並行状態配置図）ファイルとで構成される。
図２は、ＳＴＡＴＥＣＨＡＲＴで表現される階層並行状態配置図の例を示す図であり、図３は、より明確に状態の優先順位を階層並行状態配置図で表した例を示す図であり、共にＳＴＡＴＥＣＨＡＲＴの概念を説明する図である。
【００１５】
図４は、図１の状態分割手段３の動作を示すフローチャートである。また図５は、同じく状態分割手段３が付加的に行う、位置付けが曖昧かどうかを検査する位置曖昧状態検索アルゴリズムのフローチャートである。
図６は、状態階層化手段４の動作を示すフローチャートである。
図７は、状態分割手段３への入力として、状態並行性及び状態排他性情報を状態位置決定用マトリクスとして与える場合の入力マトリクスの例を示す図で、図８は、状態分割手段３に図７に示す入力があった場合の、状態分割手段３が図４の動作に基づいて出力する並行状態配置図である。
また図９は、更に状態階層化手段４が図６の動作に基づいて出力する階層並行状態配置図である。
また図１０は、最終的に完成されるＳＴＡＴＥＣＨＡＲＴで表現した状態遷移図であり、本実施の形態における設計仕様作成支援装置２との関係を説明するための図である。
【００１６】
図１の構成と図４ないし図６に示す手段を持つ設計仕様作成支援装置の動作を説明する。
まず、並行記述と階層性記述を含む状態遷移図、つまりＳＴＡＴＥＣＨＡＲＴの概念を説明する。図２の状態において、外側の状態を親状態、内側の状態を子状態とする。図２の例では、子状態１と子状態２とは相反する排他的関係にあり、親状態と子状態とは同時に起こり得る関係にある。また子状態２は、並行状態１と並行状態２とを持ち、これらの並行状態１と並行状態２は共に更に細分化されて互いに独立して状態遷移が起こり得る並行状態１＿１，１＿２と、並行状態２＿１，２＿２を持つことを意味している。また図３は、「運転停止」が「正常運転」及び「異常運転」の両者よりも優先順位が高いことを意味し、正常運転、異常運転のいずれかの状態であっても、運転停止条件が満たされると運転停止に転移することを「運転停止」を上位に配置して階層を示した状態遷移図で表現している。
一旦このＳＴＡＴＥＣＨＡＲＴが出来上がれば、以降のシミュレーションは問題はない。しかし、従来はこの状態配置図の作成を全て人手で機能を配置して行なっていたのを、本実施の形態では設計仕様作成支援装置が階層並行状態配置図、つまりＳＴＡＴＥＣＨＡＲＴ状態配置情報の出力動作を行うことになる。
【００１７】
状態並行性及び排他性情報は、制御仕様の個別機能に対応した状態を１つ１つ取り上げて、それを他の個別機能に対応する状態と同時に有効になるかならないかを記述していってもよいが、これらを複数記述して矛盾がないか、正しいかを検査するのは無駄が多いので、状態位置決定用マトリクスで与える。これは図７にその例を示すように、制御状態リスト内の状態を縦と横の欄に展開したマトリクスを作り、これらの状態が交わる枡目に、その枡目の各状態が同時に有効になり得る場合は○、同時には有効にならない場合は×を記入したものである。
状態分割手段３は、上述の状態位置決定用マトリクスを入力として、図４の動作を行う。図４中のＮは状態関係情報に含まれる状態の数、「検査状態」「対象状態」は状態位置決定用マトリクスの枡目が交わるところでの○×の検索を意味している。
図４のステップ（以後、ステップの記述は省略する）４０１では、状態に対応する１〜Ｎの全ての順列リストを作成し、検査対象となる検査順列リストに上記で生成した順列リストの最初のリストを代入する。
４０２では、検査順列リストの先頭を検査する状態を意味する検査状態という変数に代入する。
４０３では、最終的な並行状態の数を意味する並行状態数という変数に初期値１を代入し、各並行状態に含まれる状態を格納する並行状態リストの初期のリスト、並行状態リスト［１］に１，２，・・・，Ｎを代入する。
４０４では、並行状態リストのインデックス用の変数を意味するリスト番号に初期値１を代入する。
【００１８】
４０５では、並行状態リスト［リスト番号］に検査状態が含まれるかを判定し、含まれる場合は、この検査状態に対してこの並行状態リストに並行状態が含まれるかを判定するために、４０６〜４１２の処理を行う。含まれていない場合は、４１３でリスト番号を１増加させ、４１４でリスト番号が並行状態数以下の場合は、４０５に戻って次の並行状態リストに関して処理を続ける。
４０６では、検査状態と比較の対象になる対象状態という変数に初期値１を代入する。
４０７では、検査状態と対象状態が並行状態にあるかどうかを状態位置決定用マトリクスで判定し、検査状態と対象状態が交わったマス、状態位置決定用マトリクス［検査状態］［対象状態］が○の場合は、この２つの状態は並行状態のため、別の並行状態リストに存在しないといけないため、４０８において、検査状態を並行状態リスト［リスト番号］から削除し、並行状態リスト［リスト番号＋１］に追加する。
４０９において、リスト番号と並行状態が等しい場合は、並行状態数を１増やす必要があるため、この処理を４１０で行う。
【００１９】
４０７で状態位置決定用マトリクス［検査状態］［対象状態］が○でない場合は、４１１に移り対象状態を１増やし、４１２で対象状態が状態の数Ｎ以下の場合は、４０５に戻り処理を続ける。
４１５では、検査順列リストの次の要素を検査状態に代入して検査状態を更新し、４１６で全ての検査順列リストに含まれる検査状態を処理したかを判定して、した場合は４１７に進み、していない場合は４０３に戻り処理を続ける。
４１７では、１〜Ｎまでの１つの順列の並びに対して、評価が終わったことになるので、ここでの並行状態リストの内容、並行状態数を記録し、別の１〜Ｎの順列の並びに対して同様の評価を行うため検査順列リストを更新する。
４１８では、全ての１〜Ｎの順列の並びに対して評価が完了したかを判定し、完了していれば終了し、していなければ４０２に戻って評価を続ける。
アルゴリズム中の４１７で記録された並行状態リストの内容が各並行状態に配置された状態であり、並行状態数が並行状態の数である。
図４の動作フローでは、４０７ないし４１２が重要な部分であり、決定用マトリクスに記入された状態の関係が検査されて状態の並行、相反する関係の配置記述に置き換えられる。
【００２０】
しかし、上述のアルゴリズムでは、複数の並行状態に入る可能性のある位置が曖昧な状態が並行状態リストに入ったままである。このような位置が曖昧な状態は、位置が曖昧であるということを明示しておいた方が好ましい。
位置が曖昧な状態を検出するアルゴリズムで記述すると、その流れは図５に示すフローチャートになる。この処理は、図４のアルゴリズム中の４１７で求められた並行状態リスト毎に行う。
５０１では、位置付けが曖昧かどうかの対象となる状態を意味する検査状態という変数に初期値１を代入する。
５０２では、検査対象となる検査状態のある並行状態リストの番号を検査リスト番号に代入する。
５０３では、並行状態リストのインデックス用の変数を意味するリスト番号に初期値１を代入する。
５０４では、リスト番号と検査リスト番号を比較し、番号が異なる場合のみ検査状態が他の並行状態リストに入る可能性があるため、５０５〜５０９の処理を行う。同じ場合は、５１０でリスト番号を１増加させ、５１１でリスト番号が並行状態数以下の場合は、５０４に戻って次の並行状態リストに関して処理を続ける。
５０５では、リスト内の状態の位置を意味するリスト位置という変数に初期値１を代入する。
【００２１】
５０６では、曖昧な状態を判定するための対象状態を並行状態リスト［リスト番号］のリスト位置から取り出す。
５０７では、検査状態と対象状態が並行であるかを調べ、並行であれば位置付けが曖昧でないので、５１３の処理に移る。並行でなければ５０８でリスト位置を１増やし、５０９で並行状態リスト［リスト番号］の全ての状態に対して並行性を評価したかを判定し、全て評価していれば５１０へ移り、していなければ５０６に戻る。
５０７で、１つも並行性がなかった検査状態は位置付けが曖昧な状態なので、５１２において、この検査状態を曖昧状態リストに追加し、並行状態リスト［検査リスト番号］から位置付けが曖昧な検査状態を削除する。
５１３では、検査状態を増やし、検査状態が状態数Ｎ以下の場合は５０２に戻って処理を続け、それ以外の場合は終了する。
但し、このアルゴリズムでは、複数の組み合わせの並行状態リストが作成される可能性がある。この場合、並行状態数が少ない方の並行状態リストを採用する。また、並行状態が最小の並行状態リストが複数存在した場合は、仕様の内容から作業者が適切な状態配置を選択する必要がある。
【００２２】
こうして得られた並行状態配置図に、状態の優先順位を指定して階層表現を取り入れる。図１の状態階層化手段は、状態分割手段が出力した並行状態情報、つまりまだ並行状態だけが記述された並行状態配置図に、図６に示す動作を行って階層関係を決める。
図６の６０１で、各並行状態毎にその並行状態内の全ての状態を状態リストに入れる。
６０２で、最上位の状態として空の状態を作成する。
６０３では、状態リストを調べて、入力された状態の優先順位の中で最も優先順位の高い状態を取り出す。もし、同じ優先順位の状態が複数ある場合は、これら複数を同時に取り出す。
６０４では、取り出した状態を最上位の状態として配置する。
６０５は、状態リストが空かを判定し、空であれば６０７に、空でなければ６０６で最上位の状態として空の状態を作成して、この状態を新たに最上位の状態として６０３以降を繰り返す。
６０７では、６０２で最初に作成した最上位の状態を削除し、状態配置の動作を終える。
【００２３】
以下に具体的な「空調機」について、階層並行状態配置図を得る動作を説明する。
この空調機の制御仕様が、製品機能、目的、有効条件、内容、終了条件として示される。しかし、それらの相互間の関係は、単に１つ１つを自然言語で記述するだけでは判らない。例えば、異常呼出（異呼）、製品初期化（製）、停止（停）、異常処理（異処）、冷房運転（冷）、店頭展示処理（店）について状態が示されても、相互間の並行性及び排他性が判らない。図７は、この例における相互の状態間の並行性、排他性の関係を定めた状態位置決定用マトリクスであり、上述の状態は図７では括弧内のように省略記述されている。
これを図１の設計仕様作成支援装置２の状態関係情報５として入力すると、まず状態分割手段３が図４と図５のアルゴリズムにより、図８の並行状態配置図を状態分割情報ファイル７に出力する。
この例では、状態間の優先順位情報として各並行状態に関して以下の優先順位が与えられているとする。
並行状態１：冷房運転＜異常処理＜停止
並行状態２：通常モード＜店頭展示モード＜異常呼出モード、製品初期化モード
これらの優先順位情報を状態優先順位情報６として入力すると、状態階層化手段４が図６のアルゴリズムにより、図９の階層並行状態配置図をＳＴＡＴＥＣＨＡＲＴ状態配置情報８として出力する。
【００２４】
図９は、そのままではＳＴＡＴＥＣＨＡＲＴにはならない。しかし配置情報が与えられると、それから図１０のＳＴＡＴＥＣＨＡＲＴを完成するのは人手でやるとしても容易な作業である。即ち、どのような指示、トリガにより運転が移るのか、モードが移るのかが容易に記入できる。
【００２５】
実施の形態２．
実施の形態１で述べたように、仕様の個別機能と状態をもれと重複を防いで相互関係として整理するには、状態位置決定用マトリクスの作成が有効である。またこのマトリクスは、所定の形式を満足すると分割することができて、分割された小さなマトリクス対応で状態配置図を出力することができる。
本実施の形態では、複雑な仕様の記述を変形していって状態配置図を出力するまでのマトリクスの変形処理を説明する。
図１１は、状態位置決定用マトリクスの例を示す図で、マトリクス中の記号の意味を説明するものである。図１２ないし図１４は、各種のマトリクスと状態配置図との対応を示す図で、図１５は、図１における状態分割手段３が持つ状態分割アルゴリズムが行う動作フローチャートである。
以下、各種のマトリクスの意味の説明と、所定の形式として完全正規形マトリクスの意味と特徴を述べる。
図１の状態関係情報ファイル５に入力される仕様として、状態が同時に有効になりうるという状態並行性情報、１つの状態が有効になると他方は必ず無効になるという、状態が排他的に有効になる状態排他性情報、１つが有効になると他方も必ず有効になるという状態包含性情報の３種からなる入力がある。この入力情報を、例えば、図１１に示す状態位置決定用マトリクスで表現し、これが完全正規形であれば、分割された状態配置図に変換できる。
【００２６】
最初に、本実施の形態における拡張された状態位置決定用マトリクスの生成方法を記号の意味と共に図１１を用いて述べる。
（１−１）まず、仕様として与えられる存在しうる状態を縦と横のＡないしＤの欄に列記する。
（１−２）作成された状態欄の交点における状態間の相互関係が同時に有効になることはないという排他的関係にある場合は、×印を記入する。例えば、状態Ａと状態ＢないしＤとがこの関係にある。
（１−３）交点における状態の相互関係が、一方が有効になっている場合に他方の状態も有効になることがあるという並行関係にある場合は、○印を記入する。例えば、状態Ｃと状態Ｄとがこの関係にある。
（１−４）交点における状態の相互関係が、一方が有効になると他方の状態も必ず有効になるという包含関係にある場合は、二重丸を記入する。状態ＣまたはＤと状態Ｂとがこの関係にある。
【００２７】
ｎ×ｎのマトリクスに関して、マトリクスの縦、横の状態の順番が同じで、かつ、同じ印がマトリクスの右上、ｋ（縦）×（ｎ−ｋ）（横）の矩形に集中しているマトリクスを正規形の状態位置決定用マトリクス（以下、正規形マトリクスと省略する）と定義する。正規形マトリクスには次の３種類があり、それぞれ状態が構造的に整理される。
以下に、３種類の正規形マトリクスを、それらの図１２ないし図１４を用いて説明する。
各図に示す正規形マトリクス中の“＊”は、×，二重丸，○のうちの任意の印であってよいことを意味する。また、各図の右に示す状態配置図は、正規形マトリクスによって分割処理されて得られ、破線とその中に記入されている状態は、破線中にこの状態が存在することを意味する。
（２−１）独立正規形
右上、ｋ×（ｎ−ｋ）の矩形に×が集中しているマトリクス（図１２の状態Ａ，Ｂと状態Ｃ、Ｄが交差している欄）。
このマトリクスは、縦に記入されている１〜ｋ番目の状態の集合と（ｋ＋１）〜ｎ番目の状態の集合の２つに分割できる。この場合、分割された２つの状態の集合は、排他的な独立状態の関係になる。
【００２８】
（２−２）並行正規形
右上、ｋ×（ｎ−ｋ）の矩形に○が集中しているマトリクス（図１３の状態Ａ，Ｂと状態Ｃ、Ｄが交差している欄）。
このマトリクスは、縦に記入されている１〜ｋ番目の状態の集合と（ｋ＋１）〜ｎ番目の状態の集合の２つに分割できる。この場合、分割された２つの状態の集合は、並行状態の関係になる。
（２−３）階層正規形
右上、１×（ｎ−１）の矩形に二重丸が集中しているマトリクス（図１４の状態Ａと状態Ｂ，Ｃ，Ｄが交差している欄）。
このマトリクスは、縦に記入されている１番目の親状態と２〜ｎ番目の子供の状態の集合の２つに分割できる。この場合、分割された親状態と子供の状態の集合は、階層状態の関係になる。
【００２９】
状態位置決定用マトリクスが以下の性質を満たす場合、このマトリクスを完全正規形マトリクスと定義する。完全正規形マトリクスに記述されている状態は、分割することが可能である。
完全正規形マトリクスの定義：
（３−１）状態を１つしか持たない状態位置決定用マトリクス。
（３−２）状態位置決定用マトリクスが正規形マトリクスであり、正規形によって分割された２つの状態の集合に関しての状態位置決定用マトリクスが両者とも完全正規形マトリクスである状態位置決定用マトリクス。
【００３０】
完全正規形マトリクスに含まれる状態の分割は、図１の状態分割手段３が図１５の状態分割アルゴリズムによって以下のように実行する。
（４−１）完全正規形マトリクスは、独立正規形、並行正規形、階層正規形のいずれかの正規形マトリクスであるため、各正規形に含まれる状態の集合をそれぞれ独立状態関係、並行状態関係、階層状態関係にある２つの状態の集合に分割する（ステップ７０７〜７１１）。
（４−２）分割された個々の状態の集合に関しての状態位置決定用マトリクスも、完全正規形マトリクスであるため、分割された個々の状態の集合の要素が全て１つになるまで分割を繰り返す。
なお、図１５で、Ｓ［］は、状態位置決定用マトリクスによって分割を行なう対象の状態の集合を保存するための変数データである。ｉｎｄｅｘは、Ｓ［］に保存する位置を操作するための変数データである。
【００３１】
図１６に、状態位置決定用マトリクスが完全正規形マトリクスである場合の例を示す。
この図のマトリクスは、以下の手順からマトリクスの分割が行なえ、最終的には、図１７の状態配置図が得られる。
（５−１）状態Ａ〜状態Ｄに関しての状態位置決定用マトリクスは、並行正規形であるため、状態Ａとそれ以外の状態Ｂ〜Ｄは、並行的位置関係にある状態に分割できる。
即ち、自身の交点を結ぶ左上から右下への対角線Ｌと、右上隅の角（図１６では、状態ＡとＤの交点）と、この対角線Ｌに接する交点とで形成する四辺形内の印が○であれば、並行的位置関係に分割できる。
（５−２）状態Ｂ〜Ｄに関しての状態位置決定用マトリクスは、階層正規形であるため、状態はＢと状態Ｃ〜Ｄは、状態Ｂが親状態で状態Ｃ〜Ｄが子の状態集合である階層的位置関係にある状態に分割できる。
（５−３）状態Ｃ〜Ｄに関しての状態位置決定用マトリクスは、独立正規形であるため、状態Ｃと状態Ｄは、独立的位置関係にある状態に分割できる。
【００３２】
一般的には、仕様として示される状態の関係をマトリクスで整理して表現すると、正規形にはならない。しかし、状態位置決定用マトリクスは、マトリクスの縦、横の状態の順番を同じように入れ替えることで、完全正規形マトリクスにできる場合がある。以下に、この並べ替えアルゴリズムを説明する。
完全正規形への並べ替えアルゴリズムをフローチャートで記述した図を、図１８ないし図２１に示す。
ここで、図１８は、並べ替えのメイン処理のアルゴリズムを、図１９は、並べ替えアルゴリズム中のステップ８１８の状態配置探索アルゴリズムの詳細を、図２０，２１は、並べ替えアルゴリズム中のステップ８１５の探索リストへの挿入アルゴリズムの詳細を示す。
【００３３】
この並べ替えアルゴリズムでは、３つのリスト、即ち、順序リスト、探索リスト、正規リストを使用する。これらはみな状態のリストである。順序リストは、状態挿入アルゴリズムによって挿入される状態の順序を保持する。状態配置探索アルゴリズムは、順序リストに含まれている状態の順番を入れ換えながら、挿入アルゴリズムを適用することによって、さまざまな挿入順序を試行し、正規化された状態位置決定用マトリクスの状態並びを決定する。探索リストは、状態配置探索アルゴリズムによって作成されている途中の状態位置決定用マトリクスの状態並びを表す。リストの並びは、リストの先頭から末尾に向かって、状態位置決定用マトリクス上の左から右（または上から下）方向の状態並びを表す。正規リストは、正規化された状態位置決定用マトリクスの状態並びを表す。状態配置探索アルゴリズムが最終的に成功した時に、探索リストの内容が正規リストへコピーされる。
【００３４】
並べ替えメイン処理のアルゴリズムを説明する。
（６−１）順序リストの要素がマトリクスに現れる状態だけからなり、かつ、各状態を１つずつ含むように初期化する。フローチャートでは、リストのｉ番目の要素を状態ｉとしているが、初期化時のリストの並び方には意味がないので、これ以外の並び方でも良い。
（６−２）探索リストを空にする（８０４）。
（６−３）ｉｎｄｅｘを１に設定する（８０５）。ｉｎｄｅｘは、探索の深さを表す指標として使われる。
（６−４）状態配置探索を開始する（８０６）。
【００３５】
状態配置探索アルゴリズムを説明する。
このステップ８０６の詳細を構成するアルゴリズムでは、再帰的な処理によって順序リスト上にリスト要素の順列組合せを生成しながら、完全正規形の探索を行なう。
（７−１）ｉｎｄｅｘが状態数を越えているかどうかを調べる（８１１）。越えている場合、１から状態数までの各ｉｎｄｅｘ値に対し、順序リストに示された全ての状態の挿入が成功したことを表す。このとき、挿入された結果は、探索リストに入っており、完全正規形のマトリクスを表している。探索リストの内容を正規リストにコピーした後（８１２）、探索成功として、アルゴリズムの実行を終了する。
（７−２）順序リストのｉｎｄｅｘ番目から最後までの各要素について、探索リストへの挿入を試みる。このとき、何番目の要素について処理を行なうかを表すために、ｃｏｕｎｔ［ｉｎｄｅｘ］を用いる。また、再帰呼び出しによって順列組合せを生成するために、順序リストのｉｎｄｅｘ番目の要素とｃｏｕｎｔ［ｉｎｄｅｘ］番目の要素を交換する（８１４）。
【００３６】
（７−３）挿入に成功した場合、順序リストのｉｎｄｅｘ＋１番目以降の要素について処理を行なうため、ｉｎｄｅｘを１増加させてから（８１７）、状態配置探索を呼び出し（８１８）、戻ってきたらｉｎｄｅｘを１減ずる（８１９）。探索に成功した場合は、そのまま探索成功としてアルゴリズムを終了する。失敗した場合は、先ほど追加した探索リストに追加した順序リストの要素を、リストから削除する（８２１）。
（７−４）先ほど交換した順序リストの要素を元に戻し（８２３）、ｃｏｕｎｔ［ｉｎｄｅｘ］を１増加する（８２４）。ｃｏｕｎｔ［ｉｎｄｅｘ］が状態数以下ならば、まだ挿入を試みていない要素があるので、前に戻り処理を続行する（８１４以降）。そうでなければ、探索失敗として、アルゴリズムの実行を終了する。
【００３７】
探索リストへの挿入アルゴリズムを説明する。
このステップ８１５の詳細を構成する挿入アルゴリズムでは、順序リストのｉｎｄｅｘ番目の要素として指定される状態（以下では、状態ｓと呼ぶ）を、探索リストの適切な位置に挿入できるかどうかを調べ（８５２）、可能な場合は挿入する。
マトリクスの状態によって、挿入可能な条件が以下の５つ考えられる。条件の優先順位としては（８−１）が最も高く、（８−５）が最も低い。そこで、これらの条件に当てはまるかどうかを（８−１）から（８−５）の順に１つずつ調べていく。完全正規形を維持しながら状態を追加するためには、適切な挿入位置を選ぶ必要があるが、そのための指標として挿入位置ガイドを用いる。以下の説明では、アルゴリズム実行開始時の挿入位置ガイドの値をｋと呼ぶ。
【００３８】
（８−１）探索リストが空の場合、状態ｓを探索リストの先頭に挿入し、挿入位置ガイドを０にする（８５３）。挿入成功としてアルゴリズムの実行を終える。
（８−２）マトリクス中の状態ｓの行において、探索リストに含まれる各状態に対応する項目がすべて二重丸であれば（８５５）、状態ｓを探索リストの先頭に挿入し、挿入位置ガイドを０にする（８５３）。挿入成功として、アルゴリズムの実行を終える。
（８−３）マトリクス中の状態ｓの行において、探索リストの先頭からｋ−１番目までに含まれる各状態に対応する項目が全て×で、かつ、探索リストのｋ番目から最後までに含まれる各状態に対応する項目が全て○（８５６）、となる場合、挿入を行なえる。挿入を行なう前に、マトリクスの項目のうち、探索リストｋ番目の状態に対応する行で、探索リストｋ−１番目の状態に対応する列の内容が○であれば、挿入位置ガイドを１増加させる（８５９）。そして、探索リストのｋ番目に状態ｓを挿入し（８６０）、挿入成功として、アルゴリズムの実行を終える。なお、ｋ＜１のときは、この条件は成立しないものとする。
【００３９】
（８−４）マトリクス中の状態ｓの行において、探索リストの先頭からｋ−１番目までに含まれる各状態に対応する項目が全て○で、かつ、探索リストのｋ番目から最後までに含まれる各状態に対応する項目が全て×（８６１）、となる場合、挿入を行なえる。挿入を行なう前に、マトリクスの項目のうち、探索リストｋ番目の状態に対応する行で、探索リストｋ−１番目の状態に対応する列の内容が×であれば、挿入位置ガイドを１増加させる。そして、探索リストのｋ番目に状態ｓを挿入し（８６５）、挿入成功として、アルゴリズムの実行を終える。なお、ｋ＜１のときは、この条件は成立しないものとする。
（８−５）マトリクス中の状態ｓの行において、探索リストに含まれる各状態に対応する項目が全て○または全て×ならば（８６６）、状態ｓを探索リストの最後に追加し、挿入位置ガイドをｉｎｄｅｘにする（８６８）。挿入成功として、アルゴリズムの実行を終える。
（８−６）（８−１）から（８−５）のいずれの条件にも当てはまらなかった場合は、挿入失敗として、アルゴリズムの実行を終える。
【００４０】
状態位置決定用マトリクスが完全正規形マトリクスの場合、上述したように、そのマトリクスに記述されている状態を分割することが可能である。しかし、状態位置決定用マトリクスの中には、図２２に示される例のように、完全正規形マトリクスに変形不可能なマトリクスも存在する。この場合、本来、同時に有効になり得ない状態同士を一部、並行状態に配置することで、解決することができる。即ち、マトリクスの中の要素の×を一部○に変更することで、並行正規形への変形を行う。
しかし、この場合、仕様で同時に有効にならない状態が配置の上では有効になってしまう。そこで、状態遷移の条件の中で、同時に有効になることを防ぐ条件を追加する必要がある。
実は、図２２の例の場合、任意の×を１つを○に変更することで、完全正規形マトリクスに変形することができる。例えば、状態Ｂと状態Ｃの関係を×から○に変更することで、完全正規形マトリクスになり、マトリクス中の状態は、図２３のように分割することが可能となる。この場合、状態Ｂと状態Ｃの関係を×から○に変更したことによって、状態Ａと状態Ｂは同時に有効にならないという制約が生じる。
【００４１】
×を○に変更することにって、状態位置決定用マトリクスを完全正規形へ変換する変形アルゴリズムをフローチャートで記述した図が、図２４ないし図２７である。
ここで、図２４は、変形メイン処理のアルゴリズムを、図２５は、変形化アルゴリズム中のステップ９０６の状態配置探索アルゴリズムを、図２６は、変形化アルゴリズム中のステップ９１８の探索リストへの挿入アルゴリズムを示す。
このアルゴリズムは、前記の完全正規形マトリクスへの変形アルゴリズムに類似しているが、必要に応じて状態間の関係を×から○に変更する点が異なっている。このアルゴリズムを使用すれば、仕様の状態を記述したマトリクスがそのままでは完全正規形に変形できないマトリクスとして表現されても、マトリクスの内容の一部が変更された条件付完全正規形マトリクスを得ることが可能である。以下では、アルゴリズムによって変更を指定されて生じた○を●と表記して、もとから存在した○と区別する。
【００４２】
この条件付への変形化アルゴリズムでは、３つのリスト、即ち、順序リスト、探索リスト、正規リストを使用する。これらは、みな状態リストであり、先の並べ替えアルゴリズムでのリストと同様の役割を果たす。即ち、順序リストは、状態の順序を保持する。状態配置探索アルゴリズムは、順序リストに含まれている状態の順番を入れ換えながら、挿入アルゴリズムを適用することによって、さまざまな挿入順序を試行し、状態並びを決定する。探索リストは、状態配置探索アルゴリズムによって作成されている途中のマトリクスの状態並びを表す。正規リストは、正規化されたマトリクスの状態並びを表す。状態配置探索アルゴリズムが最終的に成功した時、または、探索の途中でそれまでの最善の解が得られた時、探索リストの内容が正規リストへコピーされる。
【００４３】
変形化メイン処理のアルゴリズムを説明する。
（９−１）順序リストの要素がマトリクスに現れる状態だけからなり、かつ、各状態を１つずつ含むように初期化する。フローチャートでは、リストのｉ番目の要素を状態ｉとしているが、初期化時のリストの並び方には意味がないので、これ以外の並び方でも良い。
（９−２）探索リストを空にする。最良補正値に十分大きな値（ここでは、（状態数−１）×（状態数−２）÷２）を設定する（９０４）。最良補正値は、完全正規形へ変形させるために、必要となった●の数のうち、最小の値を保持する。
（９−３）ｉｎｄｅｘを１に設定する（９０５）。ｉｎｄｅｘは、探索の深さを表す指標として使われる。
（９−４）状態配置探索を開始する（９０６）。
【００４４】
状態配置探索アルゴリズムを説明する。
このステップ９０６の詳細を構成するアルゴリズムでは、再帰的な処理によって順序リスト上にリスト要素の順列組合せを生成しながら、完全正規形の探索を行なう。
（１０−１）ｉｎｄｅｘが状態数を越えているかどうかを調べる（９１１）。越えている場合、１から状態数までの各ｉｎｄｅｘ値に対し、順序リストに示された全ての状態の挿入が成功したことを表す。このとき、挿入された結果は、探索リストに入っており、完全正規形のマトリクスを表している。ここで、マトリクス中の●の数が最良補正値よりも小さいならば、より良い配置が見つかったことを意味するので、探索リストの内容を正規リストにコピーし（９１３）、最良補正値を●の数で更新する（９１４）。更に、●の数が０の場合、マトリクスの変更なしに完全正規形への変形が行なわれたことを意味するため、探索成功としてアルゴリズムの実行を終了する。この探索成功により、全ての探索が終了する。●の数が０でない場合は、今後より良い配置が見つかる可能性があることから、探索を継続させるため探索失敗として、アルゴリズムの実行を終了する。
【００４５】
（１０−２）順序リストのｉｎｄｅｘ番目から最後までの各要素について、探索リストへの挿入を試みる（９１６）。このとき、何番目の要素について処理を行なうかを表すために、ｃｏｕｎｔ［ｉｎｄｅｘ］を用いる。また、再帰呼び出しによって順列組合せを生成するために、順序リストのｉｎｄｅｘ番目の要素とｃｏｕｎｔ［ｉｎｄｅｘ］番目の要素を交換する（９１７）。
（１０−３）挿入に成功した場合、順序リストのｉｎｄｅｘ＋１番目以降の要素について処理を行なうため、ｉｎｄｅｘを１増加させてから（９２０）、状態配置探索を呼び出し（９２１）、戻ってきたらｉｎｄｅｘを１減ずる（９２２）。探索に成功した場合は、そのまま探索成功として、アルゴリズムを終了する。失敗した場合は、先ほど追加した探索リストに追加した順序リストの要素を、リストから削除する（９２４）。
（１０−４）先ほど交換した順序リストの要素を元に戻し（９２５）、ｃｏｕｎｔ［ｉｎｄｅｘ］を１増加する（９２６）。ｃｏｕｎｔ［ｉｎｄｅｘ］が状態数以下ならば、まだ挿入を試みていない要素があるので、前に戻り処理を続行する（９１７以降）。そうでなければ、探索失敗として、アルゴリズムの実行を終了する。
【００４６】
探索リストへの挿入アルゴリズムを説明する。
このステップ９１８の詳細を構成する挿入アルゴリズムでは、順序リストのｉｎｄｅｘ番目の要素として指定される状態ｓを、探索リストの適切な位置に挿入できるかどうかを調べ（９５２）、可能な場合は挿入する。
このとき、必要であれば、×を●に変えることによって挿入を可能にする。ただし、マトリクスに含まれる●の数は、最良補正値よりも小さくなければならない。この条件を満たせない場合は、●への変更は行なわない。マトリクスの状態によって、挿入可能な条件が以下の６つ考えられる。条件の優先順位としては、（１１−１）が最も高く、（１１−６）が最も低い。そこで、これらの条件に当てはまるかどうかを（１１−１）から（１１−６）の順に１つずつ調べていく。完全正規形を維持しながら状態を追加するためには、適切な挿入位置を選ぶ必要があるが、そのための指標として、その値をｋとする挿入位置ガイドを用いる。
【００４７】
（１１−１）探索リストが空の場合、状態ｓを探索リストの先頭に挿入し、挿入位置ガイドを０にする（９５３）。挿入成功として、アルゴリズムの実行を終える。
（１１−２）マトリクス中の状態ｓの行において、探索リストに含まれる各状態に対応する項目が全て二重丸であれば（９５４）、状態ｓを探索リストの先頭に挿入し、挿入位置ガイドを０にする（９５３）。挿入成功としてアルゴリズムの実行を終える。
（１１−３）マトリクス中の状態ｓの行において、探索リストに含まれる各状態に対応する全項目が全て×ならば、状態ｓを探索リストの最後に追加し、挿入位置ガイドをｉｎｄｅｘにする。挿入成功として、アルゴリズムの実行を終える。
（１１−４）マトリクス中の状態ｓの行において、探索リストの先頭からｋ−１番目までに含まれる各状態に対応する項目が全て×で、かつ、探索リストのｋ番目から最後までに含まれる各状態に対応する項目が○または●となるような●が存在する場合（９５６）、挿入を行なえる。挿入を行なう前に、マトリクスの項目のうち、探索リストｋ番目の状態に対応する行で、探索リストｋ−１番目の状態に対応する列の内容が○であれば、挿入位置ガイドを１増加させる（９５９）。そして、探索リストのｋ番目に状態ｓを挿入し（９６０）、挿入成功として、アルゴリズムの実行を終える。なお、ｋ＜１のときは、この条件は成立しないものとする。
【００４８】
（１１−５）マトリクス中の状態ｓの行において、探索リストの先頭からｋ−１番目までに含まれる各状態に対応する項目が○または●で、かつ、探索リストのｋ番目から最後までに含まれる各状態に対応する項目が全て×となるような●が存在する場合（９６１）、挿入を行なえる。挿入を行なう前に、マトリクスの項目のうち、探索リストｋ番目の状態に対応する行で、探索リストｋ−１番目の状態に対応する列の内容が×であれば、挿入位置ガイドを１増加させる（９６４）。そして、探索リストのｋ番目に状態ｓを挿入し（９６５）、挿入成功として、アルゴリズムの実行を終える。なお、ｋ＜１のときは、この条件は成立しないものとする。
（１１−６）マトリクス中の状態ｓの行において、探索リストに含まれる各状態に対応する項目が○または●から成っているならば（９６６）、状態ｓを探索リストの最後に追加し、挿入位置ガイドをｉｎｄｅｘにする（９６８）。
（１１−７）（１１−１）から（１１−６）のいずれの条件にも当てはまらなかった場合は、挿入失敗として、アルゴリズムの実行を終える。
【００４９】
状態位置決定用マトリクスを変形して完全正規形マトリクスとして状態の分割を行った後、状態の関係が全て独立である場合、以下のように抽象的な状態を作成することで、状態を階層化することができる。この優先順位に基づいて、状態階層化手段４が行う状態階層化アルゴリズムを以下に説明する。
（１２−１）排他的で独立な状態（Ｓ＿１，．．．，Ｓ＿ｎ）に関して、優先順位が低い順に、Ｐ＿１≦Ｐ＿２≦．．．≦Ｐ＿ｎという優先順位があるとする。
（１２−２）Ｐ＿１＝．．．＝Ｐ＿ｉ＜Ｐ＿（ｉ＋１）（１≦ｉ≦ｎ−１）の場合、Ｓ＿１，．．．，Ｓ＿ｉを包含する抽象的な状態Ｓ＿ｉ’を作成する。Ｓ＿ｉ’の優先順位は、Ｐ＿ｉと等しい。
（１２−３）Ｓ＿ｉ’，Ｓ＿（ｉ＋１），．．．，Ｓ＿ｎ関して同様に、Ｐ＿ｉ＋１とＰ＿ｎが等しくなるまで、抽象的な状態を作成していく。
これは、優先順位ｉ番目より低い状態を含む抽象状態Ｓ＿ｉ’からはＳ＿（ｉ＋１）が有効になるイベントＥ＿ｉが発生すれば、ｉ＋１より優先順位が低い状態を含むＳ＿ｉに遷移する必要があるためである。図２８は、この関係を示し、このように抽象状態を作成して状態を階層構造にすることで、優先順位が状態遷移図上で表現可能になる。
【００５０】
以下に、上述した状態分割手段３と状態階層化手段４が上述の各アルゴリズムに基づいて行う動作を、具体的な「空調機」について階層並行状態配置図を得るまでの過程によって説明する。
この空調機の制御仕様が、製品機能、目的、各相互の状態、有効条件、内容、終了条件として示される。しかし、それらの相互間の関係は、単に１つ１つを自然言語で記述するだけでは明確ではない。例えば、停止（停）、運転（運）、店頭展示処理（店）、冷房運転（冷）、異常処理（異処）、異常呼出（異呼）、マルチスタンバイ（マ）、製品初期化（製）について状態が示されても（（）内は略記した記述である）、これを階層並行状態配置図上にどのように配置すれば良いかわからない。しかし、各状態が同時に有効になるか、ならないかなどの状態間の同時有効性は、仕様から簡単に抽出できる。
【００５１】
図２９は、この例における機能関係情報を記入した状態位置決定用マトリクスであり、上述の状態は、図２９では縦横の状態欄のように、省略記述されている。
これを図１の設計仕様作成支援装置２の状態関係情報５として入力すると、まず、状態分割手段３が図２９として完全正規形にならないことを出力する。この時、図２９の完全正規形でない状態位置決定用マトリクスを完全正規形の状態位置決定用マトリクスに変形するため、マトリクスの×を○に変更するという条件付きで、完全正規形の状態位置決定用マトリクスに変形する方法を上述の変形化アルゴリズムを用いて出力する。この場合は、以下の箇所を×から○に変更する。
マ×店−＞○
マ×製−＞○
異呼×店−＞○
異呼×製−＞○
【００５２】
条件に従って、一部の同時有効性情報を修正した完全正規形の状態位置決定用マトリクスを、図３０に示す。
この図では、条件に従って変更した同時有効性情報の部分を●で示してある。
図３０の完全正規形の状態位置決定用マトリクスからは、図３１のように、階層並行状態配置図として、状態の分割が行なわれる。
【００５３】
図３１のように、状態が分割された後、新たな状態が必要であることが仕様から判明した。そこで、次の２つの状態を追加した。
（１３−１）通常モードを店頭展示と製品初期化の階層に追加する。
（１３−２）異常呼出なしを異常呼出の階層に追加する。
追加した状態も含めて、これまで抽出した状態には、以下のような優先順位が仕様中に存在する。
冷房運転＜マルチスタンバイ＜異常処理
通常モード＜店頭展示＜製品初期化
この優先順位情報を状態優先順位情報６として入力すると、状態階層化手段４が優先順位に基づく状態の階層化アルゴリズムにより、図３２の階層状態配置図をＳＴＡＴＥＣＨＡＲＴ状態配置図用として、ＳＴＡＴＥＣＨＡＲＴ状態配置情報ファイル８に出力する。
図３２に示される階層並行状態配置図が出力されれば、以降の状態遷移図を作成することは容易である。
【００５４】
【発明の効果】
以上説明したようにこの発明によれば、状態分割手段と、必要により状態階層化手段を備えたので、状態関係情報と、必要により状態優先順位情報を入力するのみで階層並行状態配置図が得られて、状態遷移図の作成が容易になる効果がある。
【００５５】
また更に、状態位置決定用マトリクスを用いて状態関係情報を与えるようにしたので、より正確な階層並行状態配置図が得られて、状態遷移図の作成が容易になる効果がある。
【００５６】
また更に、位置曖昧状態検索アルゴリズムを付加したので、より正確な階層並行状態配置図が得られて、状態遷移図の作成が容易になる効果がある。
【００５７】
また更に、状態の並行性情報、状態の排他性情報、状態の包含性情報を状態位置決定用マトリクスを用いて得られるようにしたので、より正確な階層並行状態配置図が得られて、状態遷移図の作成が容易になる効果がある。
【００５８】
また更に、状態位置決定用マトリクスを正規形に並べ替える並べ替えアルゴリズムを用いたので、より容易に階層並行状態配置図が得られて、状態遷移図のの作成が容易になる効果がある。
【００５９】
また更に、一部の状態関係を変更指示する変形化アルゴリズムを用いたので、より容易に階層並行状態配置図が得られて、状態遷移図の作成が容易になる効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１における設計仕様作成支援装置の構成図である。
【図２】  ＳＴＡＴＥＣＨＡＲＴで表現される階層並行状態配置図の例を示す図である。
【図３】  機能の優先順位を階層並行状態配置図で表した例を示す図である。
【図４】  実施の形態１における状態分割手段の動作を示すフローチャートの図である。
【図５】  実施の形態１の状態分割手段が行う位置曖昧状態検索アルゴリズムのフローチャートの図である。
【図６】  実施の形態１における状態階層化手段の動作を示すフローチャートの図である。
【図７】  実施の形態１における入力マトリクスの例を示す図である。
【図８】  実施の形態１の状態分割手段が出力する並行状態配置図の例を示す図である。
【図９】  実施の形態１の状態階層化手段が出力する階層並行状態配置図の例を示す図である。
【図１０】  状態遷移図と設計仕様作成支援装置の出力との関係を説明するための図である。
【図１１】  実施の形態２における状態位置決定用マトリクスの例を示す図である。
【図１２】  実施の形態２における独立正規形マトリクスの例を示す図である。
【図１３】  実施の形態２における並行正規形マトリクスの例を示す図である。
【図１４】  実施の形態２における階層正規形マトリクスの例を示す図である。
【図１５】  実施の形態２における状態分割手段の状態分割アルゴリズムによる動作を示すフローチャート図である。
【図１６】  実施の形態２における完全正規形マトリクスの例を示す図である。
【図１７】  実施の形態２における完全正規形マトリクスによって分割された状態の例を示す図である。
【図１８】  実施の形態２における完全正規形マトリクスに並べ替える並べ替えアルゴリズムによるメイン処理動作を示すフローチャート図である。
【図１９】  実施の形態２における並べ替えアルゴリズムでの状態配置探索アルゴリズムの動作を示すフローチャート図である。
【図２０】  実施の形態２における並べ替えアルゴリズムでの挿入アルゴリズムの動作を示すフローチャート図である。
【図２１】  実施の形態２における並べ替えアルゴリズムでの挿入アルゴリズムの動作を示すフローチャート図である。
【図２２】  実施の形態２における完全正規形マトリクスに変形不可能な状態位置決定用マトリクスの例を示す図である。
【図２３】  実施の形態２における状態配置図の例を示す図である。
【図２４】  実施の形態２における条件付完全正規形マトリクスに変形する変形化アルゴリズムによるメイン処理動作を示すフローチャート図である。
【図２５】  実施の形態２における変形化アルゴリズムでの状態配置探索アルゴリズムの動作示すフローチャート図である。
【図２６】  実施の形態２における変形化アルゴリズムでの挿入アルゴリズムの動作示すフローチャート図である。
【図２７】  実施の形態２における変形化アルゴリズムでの挿入アルゴリズムの動作示すフローチャート図である。
【図２８】  実施の形態２における制約付きで分割された階層並行状態配置図の例を示す図である。
【図２９】  実施の形態２における空調機の状態位置決定用マトリクスの例を示す図である。
【図３０】  実施の形態２における条件付完全正規形に変形後の空調機の状態位置決定用マトリクスの例を示す図である。
【図３１】  実施の形態２における空調機の分割された状態配置図の例を示す図である。
【図３２】  実施の形態２における最終的に得られた空調機の状態配置図の例を示す図である。
【符号の説明】
１  入出力装置、２  設計仕様作成支援装置、３  状態分割手段、４  状態階層化手段、５  設計仕様の状態並行性、状態排他性、状態階層性を含んだ状態関係情報ファイル、６  状態間の優先順位情報ファイル、７  状態分割情報ファイル、８  ＳＴＡＴＥＣＨＡＲＴ状態配置情報ファイル。
【図１】
0003801343.tif 000002
【図２】
0003801343.tif 000003
【図３】
0003801343.tif 000004
【図４】
0003801343.tif 000005
【図５】
0003801343.tif 000006
【図６】
0003801343.tif 000007
【図７】
0003801343.tif 000008
【図８】
0003801343.tif 000009
【図９】
0003801343.tif 000010
【図１０】
0003801343.tif 000011
【図１１】
0003801343.tif 000012
【図１２】
0003801343.tif 000013
【図１３】
0003801343.tif 000014
【図１４】
0003801343.tif 000015
【図１５】
0003801343.tif 000016
【図１６】
0003801343.tif 000017
【図１７】
0003801343.tif 000018
【図１８】
0003801343.tif 000019
【図１９】
0003801343.tif 000020
【図２０】
0003801343.tif 000021
【図２１】
0003801343.tif 000022
【図２２】
0003801343.tif 000023
【図２３】
0003801343.tif 000024
【図２４】
0003801343.tif 000025
【図２５】
0003801343.tif 000026
【図２６】
0003801343.tif 000027
【図２７】
0003801343.tif 000028
【図２８】
0003801343.tif 000029
【図２９】
0003801343.tif 000030
【図３０】
0003801343.tif 000031
【図３１】
0003801343.tif 000032
【図３２】
0003801343.tif 000033