(57)【特許請求の範囲】
【請求項１】
コンピュータデバイスにより、時間ベースの動的システムを表す実行可能なグラフィカルモデルを生成することであって、
前記グラフィカルモデルは、グラフィカルエンティティ間の関係を伴う前記グラフィカルエンティティを含み、
前記グラフィカルモデルは、状態遷移表によって記述される状態機械モデルを含み、前記状態遷移表は、
遷移元状態および遷移先状態を含み、
前記遷移元状態の各々は、前記状態機械モデルが前記遷移元状態から前記遷移先状態のうちの１つに遷移する条件を特定する条件フィールドと関連付けられ、
前記遷移元状態の各々は、前記遷移先状態のうちの前記１つを特定する遷移先フィールドと関連付けられ、
前記遷移元状態のうちの少なくとも２つが、同一である遷移先状態を特定する前記遷移先フィールドと関連付けられ、または前記遷移元状態のうちの少なくとも２つが、同一である条件を特定する前記条件フィールドと関連付けられることと、
フィールドをグルーピングし、前記状態機械モデルを表す表を表示することであって、
同一である前記遷移先状態を特定する前記遷移先フィールドと関連付けられた前記条件フィールドをグルーピングすること、および前記状態機械モデルを表す前記表を表示することであって、前記遷移元状態は前記表の列また行に表示され、前記遷移元状態が前記表の列に表示される場合、前記遷移先状態は前記表の行に表示され、前記遷移元状態が前記表の行に表示される場合、前記遷移先状態は前記表の列に表示され、前記条件は、条件フィールドの前記グルーピングに基づいて、前記遷移先状態が前記遷移先状態を含む前記行または前記列において反復されないように表示されること、または、
同一である前記条件を特定する前記条件フィールドと関連付けられた前記遷移先フィールドをグルーピングすること、および前記状態機械モデルを表す前記表を表示することであって、前記遷移元状態は前記表の列または行に表示され、前記遷移元状態が前記表の列に表示される場合、前記条件は前記表の行に表示され、前記遷移元状態が前記表の行に表示される場合、前記条件は前記表の列に表示され、前記遷移先状態は、前記遷移先フィールドの前記グルーピングに基づいて、前記条件が前記条件を表示する前記行または前記列において反復されないように表示されること、
を含むことと、
前記状態機械モデルを編集するためのユーザからの入力を受理することであって、
前記行または前記列に表示された前記遷移先状態のうちの１つを編集するための前記ユーザからの入力を受理することであって、前記遷移先状態のうちの前記１つは前記条件フィールドのうちの２つと関連付けられ、前記２つの条件フィールドの各々は異なる遷移元状態に対応すること、および前記２つの条件と関連付けられ、前記遷移元状態のうちの前記２つに対応する前記遷移先フィールドのうちの前記２つに前記編集された遷移先状態を格納すること、または、
前記行または前記列に表示された前記条件のうちの１つを編集するための前記ユーザからの入力を受理することであって、前記条件のうちの前記１つは２つの遷移先状態フィールドと関連付けられ、前記２つの遷移先状態フィールドの各々は異なる遷移元状態に対応すること、および前記遷移先フィールドと関連付けられ、前記２つの遷移元状態に対応する前記２つの条件フィールドに前記編集された条件を格納すること、
を含むことと、
前記状態機械モデルを評価することを含む、前記実行可能なグラフィカルモデルを評価することと、
を含む方法。
【請求項２】
前記状態機械モデルを評価することは、
各時点において前記遷移元状態と前記遷移先状態との間で遷移すべきかどうかを評価することを含み、前記各時点は、
周期的に、
式の値が変化する場合に、
事象が発生する場合に、または
条件が満たされる場合に、
発生する、請求項１に記載の方法。
【請求項３】
前記グラフィカルエンティティのうちの１つから入力変数を入力し、前記入力変数に基づいて前記状態機械モデルを評価すること、または前記グラフィカルエンティティのうちの１つに出力変数を出力し、前記出力変数に基づいて前記実行可能なグラフィカルモデルを評価すること、
をさらに含む、請求項２に記載の方法。
【請求項４】
前記状態機械モデルをパースすることと、
前記状態機械モデルの前記パースに基づいて、到達不能な前記遷移先状態のうちの１または複数の標識を記録し、または表示することと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記状態機械モデルの前記パースに基づいて、満たされ得ない条件を含む条件フィールドの標識を表示し、または記録することと、
前記状態機械モデルの前記パースに基づいて、どの遷移元状態も特定の遷移先状態を遷移先状態として規定していないと判定することによって、前記特定の遷移先状態が到達不能であると判定するための命令、または、
前記状態機械モデルの前記パースに基づいて、特定の遷移先状態を前記遷移先状態として規定する各遷移元状態が、前記特定の遷移先状態に遷移するための満たし得ない条件を含むと判定することによって、前記特定の遷移先状態が到達不能であると判定するための命令と、
をさらに含む、請求項４に記載の方法。
【請求項６】
前記遷移元状態の各々について、前記状態機械モデルが前記遷移元状態から複数の異なる遷移先状態のうちのそれぞれ１つに遷移する複数の条件を特定する複数の条件フィールドを格納することと、
前記状態機械モデルの前記パースに基づいて、前記複数の条件が同時に真となり得ると判定することと、
同時に満たされ得る条件と関連付けられる特定の遷移元状態の標識を記録し、または表示することと、
をさらに含む、請求項５に記載の方法。
【請求項７】
少なくとも１つのプロセッサによって実行可能な命令を格納するコンピュータ可読メモリデバイスであって、
遷移元状態および遷移先状態を含む状態機械モデルを記述するデータを格納するための命令と、
前記遷移元状態の各々について、前記状態機械モデルが前記遷移元状態から前記遷移先状態のうちの１つに遷移する条件を特定する条件フィールドを格納するための命令と、
前記遷移元状態の各々について、前記遷移先状態のうちの前記１つを特定する遷移先フィールドを格納するための命令であって、
前記遷移元状態のうちの少なくとも２つが、同一である遷移先状態を特定する前記遷移先フィールドと関連付けられ、または
前記遷移元状態のうちの少なくとも２つが、同一である条件を特定する前記条件フィールドと関連付けられる命令と、
フィールドをグルーピングし、テーブルを表示するための命令であって、
同一である前記遷移先状態を特定する前記遷移先フィールドと関連付けられた前記条件フィールドをグルーピングするための命令、および前記状態機械モデルを表す表を表示するための命令であって、前記遷移元状態は前記表の列または行に表示され、前記遷移元状態が前記表の列に表示される場合、前記遷移先状態は前記表の行に表示され、前記遷移元状態が前記表の行に表示される場合、前記遷移先状態は前記表の列に表示され、前記条件は、条件フィールドの前記グルーピングに基づいて、前記遷移先状態が前記遷移先状態を含む前記行または前記列において反復されないように表示される命令、または、
同一である前記条件を特定する前記条件フィールドと関連付けられた前記遷移先フィールドをグルーピングするための命令、および前記状態機械モデルを表す表を表示するための命令であって、前記遷移元状態は前記表の列または行に表示され、前記遷移元状態が前記表の列に表示される場合、前記条件は前記表の行に表示され、前記遷移元状態が前記表の行に表示される場合、前記条件は前記表の列に表示され、前記遷移先状態は、前記遷移先フィールドの前記グルーピングに基づいて、前記条件が前記条件を含む前記行または前記列において反復されないように表示される命令と、
を含む命令と、
を含むコンピュータ可読メモリデバイス。
【請求項８】
前記行または前記列に表示された前記遷移先状態のうちの１つを編集するためのユーザからの入力を受理するための命令であって、前記遷移先状態のうちの前記１つは前記条件フィールドのうちの２つと関連付けられ、前記２つの条件フィールドの各々は異なる遷移元状態に対応する命令と、
前記２つの条件と関連付けられ、前記遷移元状態のうちの前記２つに対応する前記遷移先フィールドのうちの前記２つに前記編集された遷移先状態を格納するための命令と、
をさらに含む、請求項７に記載のコンピュータ可読メモリデバイス。
【請求項９】
前記行または前記列に表示された前記条件のうちの１つを編集するためのユーザからの入力を受理するための命令であって、前記条件のうちの前記１つは２つの遷移先状態フィールドと関連付けられ、前記２つの遷移先状態フィールドの各々は異なる遷移元状態に対応する命令と、
前記遷移先フィールドと関連付けられ、前記２つの遷移元状態に対応する前記２つの条件フィールドに前記編集された条件を格納するための命令と、
をさらに含む、請求項７に記載のコンピュータ可読メモリデバイス。
【請求項１０】
前記状態機械モデルをパースするための命令と、
前記状態機械モデルの前記パース、すなわち、到達不能な前記遷移先状態のうちの１または複数に基づいて、前記状態機械モデルを記録し、または表示するための命令と、
をさらに含む、請求項７に記載のコンピュータ可読メモリデバイス。
【請求項１１】
前記状態機械モデルを表示し、または記録し、前記状態機械モデルの前記パースに基づいて、満たされ得ない条件を含む条件フィールドを示すための命令と、
前記状態機械モデルの前記パースに基づいて、どの遷移元状態も特定の遷移先状態を遷移先状態として規定していないと判定することによって、前記特定の遷移先状態が到達不能であると判定するための命令、または、
前記状態機械モデルの前記パースに基づいて、特定の遷移先状態を前記遷移先状態として規定する各遷移元状態が、前記特定の遷移先状態に遷移するための満たし得ない条件を含むと判定することによって、前記特定の遷移先状態が到達不能であると判定するための命令と、
をさらに含む、請求項１０に記載のコンピュータ可読メモリデバイス。
【請求項１２】
前記遷移元状態の各々について、前記状態機械モデルが前記遷移元状態から複数の異なる遷移先状態のうちのそれぞれ１つに遷移する複数の条件を特定する複数の条件フィールドを格納するための命令と、
前記状態機械モデルの前記パースに基づいて、前記複数の条件が同時に真となり得ると判定するための命令と、
同時に満たされ得る条件と関連付けられる特定の遷移元状態を記録し、または表示するための命令と、
をさらに含む、請求項１０に記載のコンピュータ可読メモリデバイス。
【請求項１３】
テクニカルコンピューティング環境におけるコンピューティングデバイスであって、
状態遷移表によって記述される状態機械モデルを格納するメモリであって、前記状態遷移表は、
遷移元状態および遷移先状態を含み、
前記遷移元状態の各々は、前記状態機械モデルが前記遷移元状態から前記遷移先状態のうちの１つに遷移する条件を特定する条件フィールドと関連付けられ、
前記遷移元状態の各々は、前記遷移先状態のうちの前記１つを特定する遷移先フィールドと関連付けられ、
前記遷移元状態のうちの少なくとも２つが、同一である遷移先状態を特定する前記遷移先フィールドと関連付けられ、または前記遷移元状態のうちの少なくとも２つが、同一である条件を特定する前記条件フィールドと関連付けられる、メモリと、
プロセッサであって、
時間ベースの動的システムを表す実行可能なグラフィカルモデルを生成し、前記グラフィカルモデルは、グラフィカルエンティティ間の関係を伴う前記グラフィカルエンティティを含み、前記グラフィカルモデルは、前記状態遷移表によって記述される状態機械モデルを含み、
前記状態機械モデルを表す表を表示するためにフィールドをグルーピングし、前記プロセッサは、
同一である遷移先状態を特定する前記遷移先フィールドと関連付けられた前記条件フィールドをグルーピングし、前記状態機械モデルを表す前記表を表示のために出力し、前記遷移元状態は前記表の列または行に表示され、前記遷移元状態が前記表の列に表示される場合、前記遷移先状態は前記表の行に表示され、前記遷移元状態が前記表の行に表示される場合、前記遷移先状態は前記表の列に表示され、前記条件は、条件フィールドの前記グルーピングに基づいて、前記遷移先状態が前記遷移先状態を含む前記行または前記列において反復されないように表示され、または、
同一である条件を特定する前記条件フィールドと関連付けられた前記遷移先フィールドをグルーピングし、前記状態機械モデルを表す前記表を表示のために出力し、前記遷移元状態は前記表の列または行に表示され、前記遷移元状態が前記表の列に表示される場合、前記条件は前記表の行に表示され、前記遷移元状態が前記表の行に表示される場合、前記条件は前記表の列に表示され、前記遷移先状態は、前記遷移先フィールドの前記グルーピングに基づいて、前記条件が前記条件を表示する前記行または前記列において反復されないように表示されるように構成され、
前記状態機械モデルを編集するためのユーザからの入力を受理し、前記プロセッサは、
前記行または前記列に表示された前記遷移先状態のうちの１つを編集するための前記ユーザからの入力を受理し、前記遷移先状態のうちの前記１つは前記条件フィールドのうちの２つと関連付けられ、前記２つの条件フィールドの各々は異なる遷移元状態に対応し、前記２つの条件と関連付けられ、前記遷移元状態のうちの前記２つに対応する前記遷移先フィールドのうちの前記２つに前記編集された遷移先状態を格納し、または、
前記行または前記列に表示された前記条件のうちの１つを編集するための前記ユーザからの入力を受理し、前記条件のうちの前記１つは２つの遷移先状態フィールドと関連付けられ、前記２つの遷移先状態フィールドの各々は異なる遷移元状態に対応し、前記遷移先フィールドと関連付けられ、前記２つの遷移元状態に対応する前記２つの条件フィールドに前記編集された条件を格納するように構成され、
前記実行可能なグラフィカルモデルを評価し、前記実行可能なグラフィカルモデルを評価することは前記状態機械モデルを評価することを含む
ように構成される前記プロセッサと、
前記表を示すためのディスプレイと、
を備えるコンピューティングデバイス。
【請求項１４】
前記プロセッサは、各時点において前記遷移元状態と前記遷移先状態との間で遷移すべきかどうかを評価するように構成され、前記各時点は、
周期的に、
式の値が変化する場合に、
事象が発生する場合に、または
条件が満たされる場合に、
発生する、請求項１３に記載のコンピューティングデバイス。
【請求項１５】
前記プロセッサは、前記グラフィカルエンティティのうちの１つから入力変数を受理し、前記入力変数に基づいて前記状態機械モデルを評価し、または前記グラフィカルエンティティのうちの１つに出力変数を出力し、前記出力変数に基づいて前記実行可能なグラフィカルモデルを評価するようにさらに構成される、請求項１３に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
有限状態機械（ＦＳＭ：ｆｉｎｉｔｅ−ｓｔａｔｅ  ｍａｃｈｉｎｅ）、または単に状態機械とは、特に、コンピュータプログラムおよびディジタル論理回路を設計するために使用される数学的モデルである。状態機械は、条件が満たされる場合、ある状態から別の状態に変化することができる。
【図面の簡単な説明】
【０００２】
【図１Ａ】状態機械モデルのための状態‐状態遷移表を記述するデータ構造を図示する。
【図１Ｂ】状態機械モデルのための状態‐イベント遷移表または状態‐条件遷移表を記述するデータ構造を図示する。
【図２Ｂ】本発明の実施形態および技法を実装するための代替の例示的システムを図示する。
【図２Ｃ】一実施形態によるコンピュータデバイスの例示的構成要素を示す図である。
【図３】本発明の各態様を実装するために使用され得るモデリング環境の例示的実装形態を図示する。
【図４Ａ】一実施形態における状態機械モデルのための状態機械遷移表を記述するデータ構造を図示する。
【図４Ｂ】別の実施形態における状態機械遷移表を記述するデータ構造を図示する。
【図４Ｃ】一実施形態における状態機械モデルを含むグラフィカルモデルを生成し、評価するための処理のフローチャートである。
【図５Ａ】図４Ａの統合状態遷移表に格納される情報を表示する状態‐状態遷移表を図示する。
【図５Ｂ】図５Ａの状態‐状態遷移表の編集を図示する。
【図５Ｃ】図５Ｂに示される編集の後の図４Ａの統合状態遷移表を図示する。
【図５Ｄ】統合状態遷移表における情報を編成し、表示するための処理のフローチャートである。
【図６Ａ】図４Ａの統合状態遷移表に格納される情報を表示する状態‐条件遷移表を図示する。
【図６Ｂ】図６Ａの状態‐条件遷移表の編集を図示する。
【図６Ｃ】図６Ｂに示される編集の後の図４Ａの統合状態遷移表を図示する。
【図６Ｄ】統合状態遷移表における情報を編成し、表示するための処理のフローチャートである。
【図７Ａ】図４Ａの統合状態遷移表に格納される情報を表示する状態‐アクション遷移表を図示する。
【図７Ｂ】図７Ａの状態‐アクション遷移表の編集を図示する。
【図７Ｃ】図７Ｂに示される編集の後の図４Ａの統合状態遷移表を図示する。
【図８Ａ】別の実施形態における状態遷移表を図示する。
【図８Ｂ】図８Ａの統合状態遷移表に格納される情報を表示するハイブリッド遷移表を図示する。
【図８Ｃ】別の実施形態における状態遷移表を図示する。
【図８Ｄ】図８Ｃの統合状態遷移表に格納される情報を表示するハイブリッド遷移表を図示する。
【図９Ａ】アクションのためのラベルを含む状態遷移表を図示する。
【図９Ｂ】編集およびラベル式を伴うポップアップボックスを示す図９Ａの状態遷移表を図示する。
【図９Ｃ】条件のためのラベルを含む状態遷移表を図示する。
【図９Ｄ】表示される図９Ｃの状態遷移表を図示する。
【図１０】相対位置キューおよび一時キューにより遷移先状態を特定する状態遷移表を図示する。
【図１１Ａ】相対位置キューおよび絶対位置キューにより遷移先状態を特定する状態遷移表を図示する。
【図１１Ｂ】編集後の図１１Ａの状態遷移表を図示する。
【図１２Ａ】実行されることがない、または満たされることがない条件を強調表示する状態遷移表を図示する。
【図１２Ｂ】実行されることがないコードを強調表示する状態遷移表を図示する。
【図１２Ｃ】実行されることがない、または満たされることがない条件を強調表示する状態図を図示する。
【図１２Ｄ】状態機械モデルの実行中の時間の関数として状態機械の状態を示すグラフである。
【図１２Ｅ】メッセージの受け渡しと共に時間の関数として２つの並列状態である子状態を示すグラフである。
【図１２Ｆ】状態機械モデルの実行中の現在の状態のアニメーションを図示する。
【図１３Ａ】連結点を含む遷移表を図示する。
【図１３Ｂ】連結状態であるデフォルト状態を含む遷移表を図示する。
【図１３Ｃ】連結点を含む状態図を図示する。
【図１４】状態機械モデルにおける状態間の接続性を示す表を図示する。
【図１５Ａ】退場連結点を伴う別の実施形態における統合状態遷移表を図示する。
【図１５Ｂ】退場連結点を伴う図１５Ａの状態遷移表と関連付けられる状態図を図示する。
【図１５Ｃ】子遷移表を伴う別の実施形態における統合状態遷移表を図示する。
【図１５Ｄ】子状態を伴う統合状態図を図示する。
【図１５Ｅ】図１５Ａの子状態の統合状態遷移表を含む図１５Ｃの統合状態遷移表を図示する。
【発明を実施するための形態】
【０００３】
図１Ａは、状態機械モデルのための状態‐状態遷移表１０２を記述するデータ構造を図示する。表１０２は、状態機械モデル（例えばＳ１やＳ２）の遷移元状態（例えば、状態の名称、状態と関連付けられるラベル、状態と関連付けられる注釈など）を格納する縦のフィールド列１０４（例えば表１０２の左に沿った）を含む。ここで、「Ｓ１」は状態の名称または状態と関連付けられるラベルである。同様に、「Ｓ２」も別の状態の名称または状態と関連付けられるラベルである。
【０００４】
表１０２は、状態機械モデルの遷移先状態（例えばＳ１やＳ２）を格納する横のフィールド行１０６（例えば表１０２の上に沿った）も含む。前述のように、「Ｓ１」は状態の名称であり、「Ｓ２」は別の状態の名称である。遷移元状態のうちの１つによって特定される行と遷移先状態のうちの１つによって特定される列との交点には、状態機械モデルが対応する遷移元状態から対応する遷移先状態に遷移する条件（またはイベント）（例えば条件Ｃ１１〜条件Ｃ２２）を格納する条件フィールドがある。表１０２によれば、例えば、状態機械が現在、遷移元状態Ｓ１にある場合に、条件Ｃ１２が満たされるときは、状態機械は状態Ｓ２に遷移し得る。条件Ｃ１１〜条件Ｃ２２は、例えば、ブール条件を含んでもよい。
【０００５】
条件と共に、表１０２は、対応する条件が満たされた場合に、および／または状態機械モデルが対応する遷移元状態から対応する遷移先状態に遷移する場合に、状態機械が取る（または実行する）アクション（例えばＡ１１〜Ａ２２）を格納するアクションフィールドを含む。表１０２によれば、例えば、状態機械が現在、遷移元状態Ｓ１にあり、条件Ｃ１２が満たされた場合には、状態機械は、それが状態Ｓ２に遷移するときにアクションＡ１２を取る。アクションＡ１１〜アクションＡ２２は、変数に値を割り当てる、イベントを生成する、などをし得る。一実施形態では、表１０２は、例えば、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。さらに、一実施形態では、表１０２内の１または複数のセルが、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外してもよい。例えば、表１０２は、条件が満たされるが、状態機械モデルが異なる状態に遷移しない場合に取られるアクションを規定し得る。
【０００６】
前述のように、行（例えば、遷移元状態の名称で特定される）と列（例えば、遷移先状態の名称で特定される）との交点には、条件フィールドおよび、おそらくは、アクションフィールドがある。便宜上、条件フィールドおよびそれに対応するアクションフィールドを、遷移元状態および遷移先状態に対応する「セル」とみなされ得る。前述のように、セルは、アクションフィールド、条件フィールド、または遷移先フィールドさえも含んでもよく、または含まなくてもよい。
【０００７】
以下の説明では、列を縦として、行を横として記述する。これらの用語（「列」、「行」、「縦」、「横」）は、フィールドセットの相対的関係（直交など）を示すために意図され、必ずしも特定の縦方向および／または横方向ではない。したがって、横の行の第１のフィールドセットおよび縦の列の第２のフィールドセットを記述し、および／または表示する実施形態は、同時に、縦の列の第１のフィールドセットおよび横の行の第２のフィールドセットを記述し、および／または表示する実施形態を開示するとも理解される。同様に、本明細書では、縦としてのライン、または横としてのラインと記述する。これらの用語（「ライン」、「縦」、「横」）は、ラインの相対的関係（直交など）を示すために意図され、必ずしも特定の縦方向および／または横方向ではない。したがって、第１の横のラインおよび第２の縦のラインを記述し、および／または表示する実施形態は、同時に、縦としての第１のラインおよび横としての第２のラインを記述し、および／または表示する実施形態を開示するとも理解される。
【０００８】
図１Ｂは、状態機械モデルのための状態‐条件（または状態‐イベント）表１１２を記述するデータ構造を図示する。表１０２と同様に、表１１２は、状態機械モデルの遷移元状態（例えば、状態の名称、状態と関連付けられるラベル、状態と関連付けられる注釈）を格納する縦のフィールド列１１４（例えば表１１２の左に沿った）を含む。表１０２とは異なり、表１１２は、条件またはイベントを格納する横のフィールド行１１６（例えば表１１２の上に沿った）を含む。遷移元状態のうちの１つによって特定される行と条件のうちの１つによって特定される列との交点には、対応する条件が満たされる場合に（または対応するイベントが発生する場合に、または対応するイベントが発生し、条件が満たされる場合に）状態機械が遷移し得る遷移先状態を格納する遷移先フィールドがある。表１１２によれば、例えば、状態機械が現在、遷移元状態Ｓ１にあり、条件Ｃ２が満たされる場合には、状態機械は状態Ｓ２に遷移し得る。表１０２と同様に、条件Ｃ１および条件Ｃ２は、例えば、ブール条件を含んでもよい。
【０００９】
条件と共に、表１１２は、対応する条件が満たされる場合に対応する遷移元状態にあるとき、対応するイベントが発生する場合、または対応するイベントが発生し、条件が満たされる場合に（例えば、状態機械モデルが対応する遷移先状態に遷移する場合に）、状態機械が取る（または実行する）アクション（例えばＡ１１〜Ａ２２）を格納するアクションフィールドを含む。表１１２によれば、例えば、状態機械が現在、遷移元状態Ｓ１にあり、条件Ｃ２が満たされる場合には、状態機械はアクションＡ１２を取る（例えば、それが状態Ｓ２に遷移する時点で）。アクションＡ１１〜アクションＡ２２は、変数を再定義する、などをし得る。一実施形態では、表１１２は、例えば、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。さらに、一実施形態では、表１１２内の１または複数のセルが、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外してもよい。
【００１０】
前述のように、行（すなわち、遷移元状態によって特定される）と列（すなわち、条件によって特定される）との交点には、遷移先フィールドおよび、おそらくは、アクションフィールドがある。便宜上、遷移先フィールドおよびそれに対応するアクションフィールドは、遷移元状態および条件に対応する「セル」とみなされ得る。セルは、アクションフィールド、条件フィールド、または遷移先フィールドさえも含んでもよく、または含まなくてもよい。
【００１１】
状態機械によってモデリングされるシステムに応じて、ユーザは状態機械を、状態‐状態遷移表によって、または状態‐条件遷移表によって記述するよう選択し得る。すなわち、ある場合には、状態‐状態遷移表を選択した方がより好都合となり、別の場合には、状態‐条件遷移表を選択した方がより好都合となる。
【００１２】
状態機械モデルが前述のように格納されることに加えて、状態機械モデルは、また図１Ａおよび図１Ｂに示されるように提示され（例えば表示され）得る。すなわち、ユーザは状態機械モデルを、ディスプレイ上の状態‐状態遷移表１０２として、またはディスプレイ上の状態‐条件遷移表１１２として見得る。
【００１３】
＜例示的モデリング環境＞
図２Ａは、例えば、状態図を生成するための方法およびシステムを実装するための例示的環境２００の図である。図２Ａに示すように、環境２００は、コンピュータデバイス２１０、ネットワーク２３０、ターゲット環境２４０、およびプロセッシングクラスタ２５０を含み得る。
【００１４】
コンピュータデバイス２１０は、例えば、パーソナルコンピュータ、ワークステーション、サーバデバイス、ブレードサーバ、メインフレーム、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、デスクトップコンピュータ、ラップトップ、タブレット、または、１もしくは複数のアクティビティを実行し、および／または１もしくは複数の結果を生成する命令を実行するデバイスといった別のタイプの計算デバイスもしくは通信デバイスなどの、１または複数のコンピュータデバイスを含み得る。コンピュータデバイス２１０は、処理動作、表示動作、通信動作などを実行するデバイスを含み得る。例えば、コンピュータデバイス２１０は、ユーザに代わってアクティビティの処理を実行し、および／または支援するために使用され得る、１または複数の処理デバイスやストレージデバイスといった論理回路（ｌｏｇｉｃ）を含み得る。
【００１５】
コンピュータデバイス２１０は、さらに、別のデバイス（図２Ｂには示されていない）にデータを送信し、または別のデバイスからデータを受信することによる通信動作を実行し得る。データは、１または複数のネットワークにおいて、および／または１または複数のデバイスと共に使用するために適合され得る、実質的にあらゆるフォーマットの任意のタイプの機械可読情報であってよい。データは、ディジタル情報を含んでもよく、アナログ情報を含んでもよい。データはさらに、パケット化されてもよく、および／またはパケット化されなくてもよい。アナログデータはディジタル化されてもよい。
【００１６】
コンピュータデバイス２１０は、モデリングシステム２２０を含んでもよい。モデリングシステム２２０は、動的システムを表すグラフィカルモデルの作成、変更、設計、および／またはシミュレーションを可能にする開発ツール（ソフトウェアアプリケーションなど）を含んでもよい。さらに、モデリングシステム２２０は、グラフィカルモデルに基づく実行可能なコードの自動生成を可能であり得る。モデリングシステム２２０は、動的モデルとコストと制約条件モデルとによって定義される軌道最適化問題を解くためのフレームワーク１００を提供するための機能を含んでもよい。
【００１７】
ネットワーク２３０は、コンピュータデバイス２１０が、ターゲット環境２４０および／またはプロセッシングクラスタ２５０といった、環境２００の他の構成要素と通信できるようにし得る。ネットワーク２２０は、１または複数の有線ネットワークおよび／または無線ネットワークを含み得る。例えば、ネットワーク２２０は、セルラネットワーク、公衆陸上移動網（ＰＬＭＮ：Ｐｕｂｌｉｃ  Ｌａｎｄ  Ｍｏｂｉｌｅ  Ｎｅｔｗｏｒｋ）、第２世代（２Ｇ）ネットワーク、第３世代（３Ｇ）ネットワーク、第４世代（４Ｇ）ネットワーク（ＬＴＥ（ｌｏｎｇ  ｔｅｒｍ  ｅｖｏｌｕｔｉｏｎ）ネットワークなど）、第５世代（５Ｇ）ネットワーク、符号分割多元接続（ＣＤＭＡ：ｃｏｄｅ  ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ）ネットワーク、ＧＳＭ（ｇｌｏｂａｌ  ｓｙｓｔｅｍ  ｆｏｒ  ｍｏｂｉｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）ネットワーク、ＧＰＲＳ（ｇｅｎｅｒａｌ  ｐａｃｋｅｔ  ｒａｄｉｏ  ｓｅｒｖｉｃｅｓ）ネットワーク、Ｗｉ‐Ｆｉネットワーク、イーサネットネットワーク、上記ネットワークの組み合わせ、および／または別のタイプの無線ネットワークを含んでもよい。加えて、または代替として、ネットワーク２３０はまた、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ：ｍｅｔｒｏｐｏｌｉｔａｎ  ａｒｅａ  ｎｅｔｗｏｒｋ）、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワーク（光ファイバ・サービス・ネットワークなど）、衛星ネットワーク、テレビネットワーク、および／またはこれらもしくは他のタイプのネットワークの組み合わせを含んでもよい。
【００１８】
ターゲット環境２４０は、モデリングシステム２２０内のグラフィカルモデルによって表される動的システムと関連付けられ得る１または複数のデバイスを含んでもよい。例えば、ターゲット環境２４０は、動的システムに対応する１組のセンサおよび／または１組のコントローラを含み得る。モデリングシステム２２０は、ターゲット環境２４０からデータを受信し、受信されるデータをグラフィカルモデルへの入力として使用し得る。さらに、ターゲット環境２４０は、モデリングシステム２２０から実行可能なコードを受信し得る。受信される実行可能なコードは、ターゲット環境２４０が、ターゲット環境２４０と関連付けられる動的システム上で１または複数の動作を実行できるようにし得る。ターゲット環境２４０は、例えば、組み込み処理デバイスを含んでもよい。
【００１９】
プロセッシングクラスタ２５０は、グラフィカルモデルと関連してモデリングシステム２２０によって使用され得る処理リソースを含み得る。例えば、プロセッシングクラスタ２５０は、プロセッシングユニット２５５‐Ａ〜プロセッシングユニット２５５‐Ｎ（本明細書ではまとめて「各プロセッシングユニット２５５」、個別に「プロセッシングユニット２５５」と称する）を含んでもよい。各プロセッシングユニット２５５は、コンピュータデバイス２１０に代わって動作を実行し得る。例えば、プロセッシングユニット２５５は、モデリングシステム２２０内のグラフィカルモデルにおいて並列処理を実行し得る。モデリングシステム２２０は、プロセッシングクラスタ２５０に実行されるべき動作を提供してもよく、プロセッシングクラスタ２５０は、各プロセッシングユニット２５５間で動作と関連付けられるタスクを分割してもよく、プロセッシングクラスタ２５０は、各プロセッシングユニット２５５から実行されたタスクの結果を受信し、動作の結果を生成し、動作の結果をモデリングシステム２２０に提供してもよい。
【００２０】
一実装形態では、プロセッシングユニット２５５は、グラフィックプロセッシングユニット（ＧＰＵ：ｇｒａｐｈｉｃ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を含んでもよい。ＧＰＵは、グラフィックス処理（例えば、ブロック画像転送動作、同時の画素単位動作など）に関連した動作を実行するための、および／または多数の動作を並列に実行するための専用回路を含む１または複数の装置を含んでもよい。別の例では、プロセッシングユニット２５５は、マルチコアプロセッサの１つのコアに対応してもよい。別の例では、プロセッシングユニット２５５は、例えば、コンピューティングクラウドの一部として動作する計算デバイスなど、コンピュータデバイスのクラスタの一部であるコンピュータデバイスを含んでもよい。
【００２１】
図２Ａには環境２００の例示的な構成要素が示されているが、他の実装形態では、環境２００は、図２Ａに示されるものと比べて、より少ない構成要素、異なった構成要素、異なった配置の構成要素、および／または追加的な構成要素を含んでもよい。代替として、または加えて、環境２００の１または複数の構成要素が、環境２００の１または複数の他の構成要素によって実行されるとして記述される１または複数のタスクを実行してもよい。
【００２２】
図２Ｂは、一実施形態を実施するための代替の例示的な環境２００’を図示する。環境２００’は、モデル用のコントローラを設計、実装し、および／または、例えば、コントローラ用のコードを生成するなど、モデルからコードを生成するための、１または複数のエンティティを含むモデル（状態機械モデルなど）を構築するために使用され得る。環境２００’は、コンピュータデバイス２１０、取得論理（ａｃｑｕｉｓｉｔｉｏｎ  ｌｏｇｉｃ）２１４、オペレーティングシステム２１２、モデリングシステム２２０、モデル２２２、入力デバイス２４０、表示デバイス２１６、モデル表現（ｍｏｄｅｌ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）２１８、およびプラント２４２を含んでもよい。図２Ｂのシステムは例示であり、環境２００’の他の実施形態は、より少ないデバイス、より多いデバイス、および／または図２Ｂの構成とは異なる構成のデバイスを含み得る。
【００２３】
コンピュータ２１０（図２Ｂの）は、おおむね、図２Ａを参照して前述したものと同様であり得る。取得論理２１４は、コンピュータデバイス２１０の外部のデバイスからデータを取得し得て、そのデータをコンピュータデバイス２１０に利用可能にし得る。例えば、取得論理２１４は、コンピュータデバイス２１０にデータを利用可能にするために使用される、アナログ・ディジタルコンバータ、ディジタル・アナログコンバータ、フィルタ、マルチプレクサなどを含んでもよい。コンピュータデバイス２１０は、モデリング操作、コントローラ設計アクティビティなどを実行するために、取得されるデータを使用し得る。
【００２４】
オペレーティングシステム２１２は、コンピュータデバイス２１０と関連付けられるハードウェアリソースおよび／またはソフトウェアリソースを管理し得る。例えば、オペレーティングシステム２１２は、ユーザ入力の受理、コンピューティング環境デバイス２１０の操作、メモリの割当て、システム要求の優先順位付けなどと関連付けられるタスクを管理し得る。一実施形態では、オペレーティングシステム２１２は、仮想オペレーティングシステムであってもよい。オペレーティングシステム２１２の実施形態は、Ｌｉｎｕｘ、Ｍａｃ  ＯＳ、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ、Ｓｏｌａｒｉｓ、ＵＮＩＸなどを含んでもよい。オペレーティングシステム２１２はさらに、コンピュータデバイス２１０によって提供され得る仮想マシン上で実行してもよい。
【００２５】
モデリングシステム２２０は、ユーザが、それだけに限らないが、数学、科学、工学、医学、商取引などといった分野に関連したシミュレーションタスクまたはモデリングタスクを実行することを可能にするコンピューティング環境を提供し得る。モデリングシステム２２０は、ユーザが実行可能なセマンティクスを有するモデルを構築することを可能にする命令を実行する１または複数のアプリケーションをサポートし得る。例えば、一実施形態では、モデリングシステム２２０は、ユーザが、実行可能なセマンティクスを有するフリーフォームモデル（例えば、１次、２次、３次、４次、５次などのオーダモデル）を作成することを可能にし得る。モデリングシステム２２０はさらに、時間ベース、イベントベースなどのモデリングアクティビティをサポートし得る。
【００２６】
モデル２２２は、実行可能なテキストモデルまたはグラフィカルモデルについての情報を含んでもよい。例えば、モデル２２２は、時間ベースのモデル、イベントベースのモデル、状態遷移モデル、データ・フロー・モデル、構成要素図、エンティティ・フロー・ダイアグラム、方程式ベースの言語図などであり得る、テキストモデルまたはグラフィカルモデムについての情報を含んでもよい。モデル２２２のグラフィカルな実施形態は、動作を実行するための実行可能なコードを表すエンティティ（例えば、ブロック、アイコンなど）を含んでもよい。モデルを用いてシミュレーションを実行するために、エンティティについてのコードが実行され得る。エンティティは、モデル内のあるエンティティと別のエンティティとの間でデータを共有するための経路を表すラインを用いて相互に接続され得る。
【００２７】
入力デバイス２４０はユーザ入力を受理し得る。例えば、入力デバイス２４０は、ユーザの動きまたは行為を、コンピュータデバイス２１０によって解釈され得る信号またはメッセージに変換し得る。入力デバイス２４０は、それだけに限らないが、キーボード、ポインティングデバイス、バイオメトリックデバイス、加速度計、マイクロフォン、カメラ、触覚デバイスなどを含み得る。
【００２８】
表示デバイス２１６は、ユーザに情報を表示し得る。表示デバイス２１６は、陰極線管（ＣＲＴ：ｃａｔｈｏｄｅ  ｒａｙ  ｔｕｂｅ）、プラズマ表示デバイス、発光ダイオード（ＬＥＤ：ｌｉｇｈｔ  ｅｍｉｔｔｉｎｇ  ｄｉｏｄｅ）表示デバイス、液晶ディスプレイ（ＬＣＤ：ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ）デバイスなどを含んでもよい。表示デバイス２１６の実施形態は、必要に応じてユーザ入力を受理する（例えばタッチスクリーンを介して）ように構成され得る。一実施形態では、表示デバイス２１６はユーザに１または複数のグラフィカル・ユーザ・インターフェース（ＧＵＩ：ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）を表示し得る。ＧＵＩは、モデル２４０および／または他のタイプの情報を含んでもよい。
【００２９】
モデル表現２１８は、モデル２２２の視覚表現および／またはモデル２２２によって提供される視覚表現、例えばプロットウィンドウなどを含んでもよい。例えば、モデル表現２１８は、ユーザに表示されてもよく、ラインで接続されるいくつかのエンティティを含んでもよい。
【００３０】
プラント２４２は、コンピュータデバイス２１０にデータを提供する１または複数のデバイスを含んでもよい。例えば、プラント２４２は、加速度計、サーモカップル、光電トランシーバ、ひずみ計などといったセンサを用いてモニタされるエンジンシステムを含んでもよい。一実施形態では、取得論理２１４は、アナログ形式またはディジタル形式でプラント２４２から信号を受理し得て、それらの信号を、コンピュータデバイス２１０での使用に適した形式に変換し得る。
【００３１】
＜例示的なコンピュータデバイス＞
図２Ｃは、一実施形態によるコンピュータデバイス２１０の例示的な構成要素を示す図である。図２Ｃに示されるように、コンピュータデバイス２１０は、バス２６０、プロセッサ２６５、メモリ２７０、入力デバイス２７５、出力デバイス２８０、および通信インターフェース２８５含み得る。
【００３２】
バス２６０は、コンピュータデバイス２１０の構成要素間の通信を可能にする経路を含んでもよい。プロセッサ２６５は、１もしくは複数のシングルコアプロセッサおよび／もしくはマルチコアプロセッサ、マイクロプロセッサ、ならびに／または命令を解釈し、実行することのできる処理論理（ｐｒｏｃｅｓｓｉｎｇ  ｌｏｇｉｃ）（例えば、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、ＡＲＭプロセッサなど）を含んでもよい。メモリ２７０は、情報およびプロセッサ２６５による実行のための命令を格納し得るＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）デバイスもしくは別のタイプの動的ストレージデバイス、プロセッサ２６５による使用のための静的情報および命令を格納し得るＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）デバイスもしくは別のタイプの静的ストレージデバイス、磁気記録メモリデバイスおよび／もしくは光記録メモリデバイスおよびこれに対応するドライブ、ならびに／またはフラッシュメモリといったリムーバブル形式のメモリを含んでもよい。
【００３３】
入力デバイス２７５は、例えば、キーパッド、キーボード、ボタン、またはキーパッドもしくはキーボードといった入力デバイスのための入力ジャック、カメラ、アナログ・ディジタルコンバータ（ＡＤＣ）、パルス幅変調（ＰＷＭ：ｐｕｌｓｅ−ｗｉｄｔｈ  ｍｏｄｕｌａｔｉｏｎ）入力など、オペレータがコンピュータデバイス２１０に情報を入力することを可能にするメカニズムを含み得る。出力デバイス２８０は、１または複数のライトインジケータ、スピーカ、ディジタル・アナログコンバータ（ＤＡＣ）、ＰＷＭ出力などを含む、オペレータに情報を出力するメカニズムを含み得る。
【００３４】
出力デバイス２８０は、ユーザに情報を表示する表示デバイスを含んでもよい。表示デバイスは、陰極線管（ＣＲＴ）、プラズマ表示デバイス、発光ダイオード（ＬＥＤ）表示デバイス、液晶ディスプレイ（ＬＣＤ）デバイスなどを含んでもよい。表示デバイスは、必要に応じてユーザ入力を受理する（例えばタッチスクリーンを介して）ように構成され得る。一実施形態では、表示デバイスはユーザに１または複数のグラフィカル・ユーザ・インターフェース（ＧＵＩ）を表示し得る。表示デバイスは、状態機械モデルを含むモデルの表現（例えば、状態‐状態遷移表、状態‐条件遷移表、状態‐イベント遷移表、および／または統合状態遷移表）を表示し得る。またモデル表現は、ラインで接続されるいくつかのエンティティも含んでもよい。
【００３５】
通信インターフェース２８５は、コンピュータデバイス２１０が他のデバイスおよび／またはシステムと通信できるようにする送受信機を含み得る。例えば、通信インターフェース２８５は、モデム、ネットワーク・インターフェース・カード、および／または無線インターフェースカードを含んでもよい。
【００３６】
以下で詳細に記述するように、コンピュータデバイス２１０は、軌道最適化問題の解を生成するためのフレームワークに関連したある動作を実行し得る。コンピュータデバイス２１０は、これらの動作を、プロセッサ２６５が、メモリ２７０といったコンピュータ可読媒体に格納されるソフトウェア命令を実行したことに応答して実行し得る。コンピュータ可読媒体は、非一時的メモリデバイスとして定義され得る。メモリは、単一の物理的メモリデバイス内のメモリ空間を含んでもよく、複数の物理的メモリデバイスにまたがって分散されてもよい。
【００３７】
ソフトウェア命令は、別のコンピュータ可読媒体から、または通信インターフェース２８５を介して別のデバイスからメモリ２７０に読み込まれ得る。メモリ２７０に含まれるソフトウェア命令は、プロセッサ２６５に、以下に記述するプロセスを実行させ得る。あるいは、本明細書に記述するプロセスを実装するために、配線回路をソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用されてもよい。よって、本明細書で記述する実装形態は、ハードウェア回路とソフトウェアとのいかなる特定の組み合わせにも限定されない。
【００３８】
図２Ｃにはコンピュータデバイス２１０の例示的な構成要素が示されているが、他の実装形態では、コンピュータデバイス２１０は、図２Ｃに示されるものと比べて、より少ない構成要素、異なった構成要素、追加的な構成要素、または異なった配置の構成要素を含んでもよい。加えて、または代替として、コンピュータデバイス２１０の１または複数の構成要素が、コンピュータデバイス２１０の１または複数の他の構成要素によって実行されるとして記述される１または複数のタスクを実行してもよい。
【００３９】
＜例示的なモデリングシステム＞
図３は、コンピュータデバイス２１０に含まれ得るモデリングシステム２２０の例示的な構成要素の図である。モデリングシステム２２０は、既存のソフトウェアコンポーネントをモデルの作成において使用されるようにし、モデルに基づく実行可能なコードの生成を可能にし得る開発ツールを含み得る。例えば、開発ツールは、数値コンピューティング環境のためのユーザインターフェースを提供するグラフィカル・モデリング・ツールまたはアプリケーションを含んでもよい。加えて、または代替として、開発ツールは、動的システムをモデリングし（例えば、微分方程式、差分方程式、代数方程式、離散事象、離散状態、確率関係などに基づいて）、シミュレートする（例えば、モデルを実行することによって）ためのユーザインターフェースを提供するグラフィカル・モデリング・ツールおよび／またはアプリケーションを含んでもよい。
【００４０】
動的システム（自然なものにせよ人工的なものにせよ）は、応答がいつでも、その入力刺激、その現在の状態、および現在時刻の関数であり得るシステムであり得る。そうしたシステムの範囲は、単純なシステムから高度に複雑なシステムにまでに及び得る。自然な動的システムには、例えば、落下物体、地球の自転、生体力学系（筋肉、関節など）、生化学系（遺伝子発現、タンパク質経路）、天気、および気候パターンシステム、ならびに／または任意の他の自然の動的システムが含まれ得る。人工的な、または工学技術で作られた動的システムには、例えば、弾むボール、一端に分銅が結び付けられたばね、自動車、航空機、主要な電気製品の制御システム、通信ネットワーク、オーディオ信号処理システム、および金融もしくは株式市場、ならびに／または任意の他の人工的な、もしくは工学技術で作られた動的システムが含まれ得る。
【００４１】
モデルによって表されるシステムは、モデルにおいて、ブロックと呼ばれることの多いモデリングエンティティの集合体として表され得る様々な実行セマンティクスを有し得る。ブロックは、一般には、モデルにおいて使用され得る機能の一部分をいう。ブロックは、グラフィカルに表され、テキストで表され、および／または何らかの形式の内部表現に格納され得る。また、例えばグラフィカルなブロック図においてブロックを表すために使用される特定の視覚的描写は設計上の選択であり得る。
【００４２】
ブロックは、ブロック自体がそのブロックを構成する１または複数のブロックを含み得るという点で、階層的であってよい。１または複数のブロック（サブブロック）を含むブロックは、サブシステムブロックと称され得る。サブシステムブロックは、モデルによって表される全体システムのサブシステムを表すように構成され得る。サブシステムブロックは、サブシステムブロックが含む要素によってのみ読取り可能、書き込み可能な変数を含む論理的な作業領域を有するように構成されるマスク・サブシステム・ブロックであってもよい。
【００４３】
グラフィカルモデル（機能モデルなど）は、エンティティ間の関係を伴うエンティティを含んでもよく、関係および／またはエンティティは、それらと関連付けられる属性を有していてもよい。エンティティは、ブロックおよび／またはポートといったモデル要素を含んでもよい。関係は、ライン（コネクタラインなど）および参照といったモデル要素を含んでもよい。属性は、属性と関連付けられるモデル要素の値情報およびメタ情報といったモデル要素を含んでもよい。グラフィカルモデルは、構成情報と関連付けられてもよい。構成情報は、モデル実行情報（例えば、数値積分スキーム、基本実行周期など）、モデル診断情報（例えば、代数ループをエラーとみなすべきか、それとも警告を生じさせるべきか）、モデル最適化情報（例えば、モデル要素が実行中にメモリを共有すべきかどうか）、モデル処理情報（例えば、共通機能をモデルのために生成されるコードにおいて共有すべきかどうか）などといったグラフィカルモデルについての情報を含んでもよい。
【００４４】
加えて、または代替として、グラフィカルモデルは、実行可能なセマンティクスを有してもよく、および／または実行可能であってもよい。実行可能なグラフィカルモデルは時間ベースのブロック図であってもよい。時間ベースのブロック図は、例えば、ライン（コネクタラインなど）で接続されたブロックで構成され得る。ブロックは、微分方程式系（例えば、連続時間の振る舞いを規定するための）、差分方程式系（例えば、離散時間の振る舞いを規定するための）、代数方程式（例えば、制約条件を規定するための）、状態遷移系（例えば、有限状態機械の振る舞いを規定するための）、イベントベースのシステム（例えば、離散事象の振る舞いを規定するための）などといった要素的な動的システムで構成され得る。ラインは、信号（例えば、ブロック間の入力／出力関係を規定するため、または関数呼び出しといったブロック間の実行依存関係を規定するための）、変数（例えば、ブロック間で共用される情報を規定するための）、物理的接続（例えば、電線、体積流量を有するパイプ、リジッドな機械的接続などを規定するための）などを表し得る。属性は、モデル要素と関連付けられた、サンプル時間、次元、複雑さ（値に対する虚数成分があるかどうか）、データ型などといったメタ情報で構成され得る。
【００４５】
時間ベースのブロック図では、ポートをブロックと関連付けられ得る。２つのポート間の関係は、２つのポート間のライン（コネクタラインなど）を接続することによって作成され得る。ラインは同様に、または代替として、例えば分岐点を作成することによって、他のラインに接続され得る。例えば、３つ以上のポートは、ラインを各ポートに接続し、各ポートをすべてのラインの共通分岐点に接続することによって接続され得る。物理的な接続を表すラインの共通分岐点は動的システム（例えば、あるタイプのすべての変数を合計して０にすること、またはあるタイプのすべての変数を同等にすることによって）であり得る。ポートは、入力ポート、出力ポート、イネーブルポート、トリガポート、関数呼び出しポート、パブリッシュポート、サブスクライブポート、例外ポート、エラーポート、物理ポート、エンティティ・フロー・ポート、データ・フロー・ポート、制御フローポートなどであり得る。
【００４６】
ブロック間の関係は、因果的であってもよく、および／または非因果的であってもよい。例えば、モデル（機能モデルなど）は、ライン（コネクタラインなど）を使用して連続時間積分ブロック（ｃｏｎｔｉｎｕｏｕｓ−ｔｉｍｅ  ｉｎｔｅｇｒａｔｉｏｎ  ｂｌｏｃｋ）の出力ポートをデータ・ログ・ブロック（ｄａｔａ  ｌｏｇｇｉｎｇ  ｂｌｏｃｋ）の入力ポートに接続することによってデータ・ログ・ブロックに因果的に関連させ得る連続時間積分ブロックを表すブロックを含み得る。さらに、モデルの実行中に、連続時間インテグレータによって格納される値は、実行の現在時刻が進むに従って変化し得る。連続時間インテグレータの状態の値は出力ポート上で利用可能であり得て、データ・ログ・ブロックの入力ポートとの接続は、この値をデータ・ログ・ブロックに利用可能にし得る。
【００４７】
一例では、ブロックは、非因果的モデリング関数または動作を含み、またはこれに対応してもよい。非因果的モデリング関数の一例は、１もしくは複数の入力、状況、および／もしくは条件に応じて異なって実行され得る関数、動作、または方程式を含み得る。言い換えると、非因果的モデリング関数または動作は、予め決定される因果関係を持たない関数、動作、または方程式を含み得る。例えば、非因果的モデリング関数は、他方の変数（例えば「Ｙ」）に対応する割り当てられた値を受理すると、方程式中の一方の変数（例えば「Ｘ」）の値を識別するために使用され得る方程式（例えば、Ｘ＝２Ｙ）を含み得る。同様に、他方の変数（例えば「Ｙ」）の値が提供された場合にも、方程式は、一方の変数（例えば「Ｘ」）を判定するために使用され得る。
【００４８】
方程式への因果関係の割り当ては、方程式中のどの変数がその方程式を用いて算出されるか判定することで構成され得る。因果関係の割り当ては、ガウス消去法といったソーティングアルゴリズムによって実行され得る。因果関係の割り当ての結果は、代数的サイクルまたはループを表す強く接続された成分を有するソートされた方程式を表す下三角ブロック行列であり得る。因果関係の割り当ては、モデルコンパイル（ｍｏｄｅｌ  ｃｏｍｐｉｌａｔｉｏｎ）の一部であり得る。
【００４９】
方程式はシンボリック形式で提供され得る。１組のシンボリック方程式は、例えば、より単純な形式の手続にシンボリック的に処理され得る。例を挙げると、２つの方程式Ｘ＝２Ｙ＋ＵおよびＹ＝３Ｘ−２Ｕの系が、１つの方程式５Ｙ＝−Ｕにシンボリック的に処理され得る。方程式のシンボリック的な処理はモデルコンパイルの一部であり得る。
【００５０】
したがって、非因果的モデリング関数は、例えば、有効な出力を生成し、またはそれ以外に意図されるように動作するために、ある入力または入力のタイプ（例えば、特定の変数の値）を要件としなくてもよい。実際、非因果的モデリング関数の動作は、例えば、その非因果的モデリング関数に対応する状況、条件、または入力に基づいて変動し得る。したがって、上記の記述はブロック間の方向的に一貫した信号フローを記述するが、他の実装形態では、ブロック間の相互作用は、必ずしも方向的に特有の、または一貫したものに限らなくてもよい。
【００５１】
一実施形態では、モデル内のコネクタラインは、２つの接続されたブロック間で共有される関連した変数を表し得る。それらの変数は、その組み合わせが電力を表すように関連され得る。例えば、コネクタラインは、電圧、電流、電力などを表し得る。加えて、または代替として、ブロック間の信号フローは、自動的に導出され得る。
【００５２】
ある実装形態では、１または複数のブロックは同様に、または代替として、それらのブロックが含まれるモデルに対応する１または複数の規則またはポリシーに従って動作し得る。例えば、モデルが、電子回路といった実際の物理的なシステムまたはデバイスとして振る舞うために意図されていた場合、ブロックは、例えば、物理学の法則（本明細書では「物理学に基づく規則」ともいう）内で動作することが要件とされ得る。これらの物理学の法則は、微分方程式および／または代数方程式（例えば制約条件など）として定式化され得る。微分方程式は、時間、距離、および／または他の量に関する導関数を含んでもよく、常微分方程式（ＯＤＥ：ｏｒｄｉｎａｒｙ  ｄｉｆｆｅｒｅｎｔｉａｌ  ｅｑｕａｔｉｏｎ）、偏微分方程式（ＰＤＥ：ｐａｒｔｉａｌ  ｄｉｆｆｅｒｅｎｔｉａｌ  ｅｑｕａｔｉｏｎ）、および／または微分代数方程式（ＤＡＥ：ｄｉｆｆｅｒｅｎｔｉａｌ  ａｎｄ  ａｌｇｅｂｒａｉｃ  ｅｑｕａｔｉｏｎ）であってもよい。モデルおよび／またはモデル成分がそうした規則またはポリシーに従って動作することを要件とすることは、例えば、そうしたモデルに基づくシミュレーションが意図されるように動作することを保証することに役立つ。
【００５３】
サンプル時間は、グラフィカルモデルの要素と関連付けられ得る。例えば、グラフィカルモデルは、入力値を実行時間の進捗に従って積分し得る連続時間積分ブロックといった連続サンプル時間を有するブロックを含み得る。この積分は、微分方程式によって規定され得る。実行中、連続時間の振る舞いは、数値ソルバーの一部である数値積分スキームによって近似され得る。数値ソルバーは実行時間を進めるために離散的ステップを取り得て、これらの離散的ステップは、実行中一定であってもよく（例えば固定ステップ積分）、または実行中に変動してもよい（例えば可変ステップ積分）。
【００５４】
イベントは、連続時間の振る舞いが特定の特性を示す場合に生成され得る。例えば、連続時間の振る舞いを近似する数値ソルバーの２つの離散的ステップの間で不等式がその真理値を変化させる場合に、イベントが生成され得る。イベントの時間には、２つの離散的ステップのどちらかの時間が割り当てられてもよく、真理値が変化する時間に最も近い、２つの離散的ステップの間の値であってもよい。２つの離散的時間ステップの間のこの時間は、規定された数値的正確さに見合う求根数値アルゴリズムに基づいて計算され得る。またイベントは関数呼び出しに関連され得る。すなわち、関数呼び出しは、例えば、条件の評価のためにモデルを「起動し」得るイベントであってもよい。
【００５５】
代替として、または加えて、グラフィカルモデルは、特定の遅延の後で対応する入力の値を出力し得る単位遅延ブロック（ｕｎｉｔ  ｄｅｌａｙ  ｂｌｏｃｋ）といった、離散サンプル時間を伴うブロックを含んでもよい。この遅延は時間間隔であってよく、この間隔は、ブロックのサンプル時間を判定し得る。実行中に、実行時間が、単位遅延ブロックの出力が変化し得る時点に到達する度に、単位遅延ブロックが評価され得る。これらの時点は、実行を開始する前に、グラフィカルモデルのスケジューリング解析に基づいて静的に判定され得る。
【００５６】
代替として、または加えて、グラフィカルモデルは、接続されたブロックが非周期的に評価されるようにスケジュールすることができる関数呼び出しジェネレータブロック（ｆｕｎｃｔｉｏｎ−ｃａｌｌ  ｇｅｎｅｒａｔｏｒ  ｂｌｏｃｋ）といった、非対称サンプル時間を伴うブロックを含んでもよい。実行中に、関数呼び出しジェネレータブロックは入力を評価し得て、実行時間がある時点に到達して入力が特定の値を獲得する場合、関数呼び出しジェネレータブロックは、接続されたブロックを、この時点であって実行時間を進める前に評価されるようにスケジュールし得る。
【００５７】
さらに、グラフィカルモデルの属性の値は、グラフィカルモデルの他の要素またはグラフィカルモデルの属性から推測され得る。推測はモデルコンパイルの一部であり得る。例えば、グラフィカルモデルは、ブロックのサンプル時間を規定する属性を有し得る、単位遅延ブロックといったブロックを含んでもよい。グラフィカルモデルが、基本実行周期を規定する実行属性を有する場合、単位遅延ブロックのサンプル時間は、この基本実行周期から推測され得る。
【００５８】
別の例として、グラフィカルモデルは、２つの単位遅延ブロックのうちの第１のブロックの出力が２つの単位遅延ブロックのうちの第２のブロックの入力に接続される２つの単位遅延ブロックを含んでもよい。第１の単位遅延ブロックのサンプル時間は、第２の単位遅延ブロックのサンプル時間から推測され得る。この推測は、第２の単位遅延ブロックのサンプル時間属性を評価した後で、第１の単位遅延ブロックのサンプル時間属性を評価することによってグラフ探索が継続するように、モデル要素属性の伝搬によって実行され得る。なぜならば、第１の単位遅延ブロックは第２の単位遅延ブロックに直接的に接続されているからである。
【００５９】
グラフィカルモデルの属性の値は、１または複数の継承された設定、１または複数のデフォルト設定などといった特性設定に設定され得る。例えば、ブロックと関連付けられた変数のデータ型は、ｄｏｕｂｌｅといったデフォルトに設定され得る。デフォルト設定により、グラフィカルモデルが含む要素の属性（例えば、接続されたブロックと関連付けられた変数のデータ型）および／またはグラフィカルモデルの属性に基づいて代替のデータ型（例えば、ｓｉｎｇｌｅ、ｉｎｔｅｇｅｒ、ｆｉｘｅｄ  ｐｏｉｎｔなど）が推測され得る。別の例として、ブロックのサンプル時間が継承されるように設定され得る。継承されるサンプル時間の場合には、グラフィカルモデルが含む要素の属性および／またはグラフィカルモデルの属性（例えば基本実行周期）に基づいて特定のサンプル時間が推測され得る。
【００６０】
別の例として、実行可能なグラフィカルモデルは、状態機械モデル（例えばグラフィカル状態機械モデル）を含んでもよい。状態機械モデルは、実行可能な時間ベースのモデルを含んでもよい。状態機械モデルは、ある時点におけるその遷移を評価する離散的状態遷移系を含んでもよい。これらの時点は周期的な（また離散的な）サンプル時間に基づいてもよく、式（例えば不等式）の真理値の変化に基づいてもよい。遷移系の評価はイベントの発生と関連付けられてもよく、評価は、ある状態からの遷移が可能であるかどうかを評価することからなっていてもよい。遷移は、関連付けられたイベント（１または複数の）が発生したとき、および関連付けられた条件（１または複数の）が満たされた場合に可能となり得る。状態遷移系は、グラフィカルモデル内の他のエンティティから獲得され、グラフィカルモデル内の他のエンティティに提供され得る入力変数および出力変数を有してもよい。上記のように、グラフィカルエンティティは、微分方程式系および差分方程式系といった時間ベースの動的システムを表し得る。別の実施形態では、グラフィカルモデルおよびグラフィカルエンティティは、多領域の動的システムを表し得る。各領域は、例えば、連続時間、離散時間、離散事象、状態遷移系、および／もしくは計算処理のモデルといった実行領域または振る舞いを含んでもよい。計算処理のモデルは、微分方程式、差分方程式、代数方程式、離散事象、離散状態、確率関係、データフロー、同期データフロー、制御フロー、プロセスネットワーク、および／または状態機械に基づいてもよい。
【００６１】
モデリングシステム２２０は、テクニカルコンピューティング環境（ＴＣＥ：ｔｅｃｈｎｉｃａｌ  ｃｏｍｐｕｔｉｎｇ  ｅｎｖｉｒｏｎｍｅｎｔ）を実装し得る。ＴＣＥは、ユーザが、それだけに限らないが、数学、科学、工学、医学、商取引などといった分野に関連したタスクを、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｊａｖａなどといった従来のプログラミング言語でユーザがコードを開発することを必要とする環境といった別のタイプの環境でそれらのタスクが実行された場合よりも、効率よく実行することを可能にするコンピューティング環境を提供する、ハードウェアおよび／またはソフトウェアベースの論理を含み得る。
【００６２】
一実装形態では、ＴＣＥは、当業者がよく知る数学的表記で問題および／または解を表現するために使用され得る動的型付け言語を含んでもよい。例えば、ＴＣＥは、基本要素として配列を使用してもよく、その場合、配列は次元化を要件としなくてもよい。加えて、ＴＣＥは、データ解析、データ視覚化、アプリケーション開発、シミュレーション、モデリング、アルゴリズム開発などに使用され得る行列および／またはベクトルの定式化を実行するように適合され得る。これらの行列および／またはベクトルの定式化は、統計、画像処理、信号処理、制御設計、生命科学モデリング、離散事象の解析および／または設計、状態ベースの解析および／または設計などといった、多くの分野で使用され得る。
【００６３】
ＴＣＥはさらに、数学的関数および／またはグラフィカルツール（例えば、プロット、面、画像、立体表現などを作成するための）を提供し得る。一実装形態では、ＴＣＥは、これらの関数および／またはツールを、ツールボックス（例えば、信号処理、画像処理、データプロット、並列処理などのためのツールボックス）を用いて提供し得る。別の実装形態では、ＴＣＥはこれらの関数をブロックセットとして提供し得る。別の実装形態では、ＴＣＥはこれらの関数を、ライブラリによってなど、別のやり方で提供し得る。ＴＣＥは、テキストベースの環境、グラフベースの環境、または、テキストおよびグラフの両方に基づくハイブリッド環境といった別のタイプの環境として実装され得る。
【００６４】
ＴＣＥは、それだけに限らないが、Ｔｈｅ  ＭａｔｈＷｏｒｋｓ，  Ｉｎｃ．によるＭＡＴＬＡＢ（登録商標）；Ｏｃｔａｖｅ；Ｐｙｔｈｏｎ；Ｃｏｍｓｏｌ  Ｓｃｒｉｐｔ；Ｎａｔｉｏｎａｌ  ＩｎｓｔｒｕｍｅｎｔｓのＭＡＴＲＩＸｘ；Ｗｏｌｆｒａｍ  Ｒｅｓｅａｒｃｈ，  Ｉｎｃ．のＭａｔｈｅｍａｔｉｃａ；Ｍａｔｈｓｏｆｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  ＆  Ｅｄｕｃａｔｉｏｎ  Ｉｎｃ．のＭａｔｈｃａｄ；ＭａｐｌｅｓｏｆｔのＭａｐｌｅ；Ｉｍａｇｉｎｅ  Ｔｈａｔ  Ｉｎｃ．のＥｘｔｅｎｄ；仏国のコンピュータサイエンスおよび制御の研究機関（ＩＮＲＩＡ）のＳｃｉｌａｂ；ＣａｄｅｎｃｅのＶｉｒｔｕｏｓｏ；Ｄａｓｓａｕｌｔ  ＳｙｓｔｅｍｅｓのＭｏｄｅｌｉｃａまたはＤｙｍｏｌａといった製品を用いて実装され得る。
【００６５】
代替の実施形態は、それだけに限らないが、Ｔｈｅ  ＭａｔｈＷｏｒｋｓ，  Ｉｎｃ．によるＳｉｍｕｌｉｎｋ（登録商標）、Ｓｔａｔｅｆｌｏｗ（登録商標）、ＳｉｍＥｖｅｎｔｓ（登録商標）など；Ｖｉｓｕａｌ  ＳｏｌｕｔｉｏｎｓによるＶｉｓＳｉｍ；Ｎａｔｉｏｎａｌ  ＩｎｓｔｒｕｍｅｎｔｓによるＬａｂＶｉｅｗ（登録商標）；Ｄａｓｓａｕｌｔ  ＳｙｓｔｅｍｅｓによるＤｙｍｏｌａ；Ｍｅａｓｕｒｅｍｅｎｔ  ＣｏｍｐｕｔｉｎｇによるＳｏｆｔＷＩＲＥ；ＤＡＬＳＡ  ＣｏｒｅｃｏによるＷｉＴ；ＡｇｉｌｅｎｔによるＶＥＥ  ＰｒｏまたはＳｙｓｔｅｍＶｕｅ；ＰＰＴ  ＶｉｓｉｏｎのＶｉｓｉｏｎ  Ｐｒｏｇｒａｍ  Ｍａｎａｇｅｒ；Ｋｈｏｒａｌ  ＲｅｓｅａｒｃｈのＫｈｏｒｏｓ；Ｇｅｄａｅ，  Ｉｎｃ．によるＧｅｄａｅ；（ＩＮＲＩＡ）のＳｃｉｃｏｓ；ＣａｄｅｎｃｅのＶｉｒｔｕｏｓｏ；ＩＢＭのＲａｔｉｏｎａｌ  Ｒｏｓｅ；ＴｅｌｅｌｏｇｉｃのＲｈｏｐｓｏｄｙまたはＴａｕ；カリフォルニア大学バークレー校のＰｔｏｌｅｍｙ；統一モデリング言語（ＵＭＬ：ｕｎｉｆｉｅｄ  ｍｏｄｅｌｉｎｇ  ｌａｎｇｕａｇｅ）またはＳｙｓＭＬ環境の諸態様といった製品を用いてＴＣＥをグラフベースのＴＣＥとして実装し得る。
【００６６】
別の実施形態は、上記のテキストベースのＴＣＥまたはグラフベースのＴＣＥの１またはは複数といったＴＣＥを含む製品と互換性のある言語で実装され得る。例えば、ＭＡＴＬＡＢ（登録商標）（テキストベースのＴＣＥ）は、第１のコマンドを使用してデータ配列を表し、第２のコマンドを使用して配列を転置することができる。別の製品は、ＴＣＥを含んでも含まなくてもよいが、ＭＡＴＬＡＢ（登録商標）互換であり、配列コマンド、配列転置コマンド、または他のＭＡＴＬＡＢ（登録商標）コマンドを使用することができる。例えば、別の製品は、モデル検査を実行するために、ＭＡＴＬＡＢ（登録商標）コマンドを使用し得る。
【００６７】
さらに、別の代替の実施形態は、テキストベースのＴＣＥおよびグラフベースのＴＣＥの特徴が組み合わさったハイブリッドＴＣＥで実装され得る。一実装形態では、一方のＴＣＥが他方のＴＣＥの上で動作することができる。例えば、テキストベースのＴＣＥ（ＭＡＴＬＡＢ（登録商標）など）が基礎として動作し、グラフベースのＴＣＥ（Ｓｉｍｕｌｉｎｋなど）がＭＡＴＬＡＢ（登録商標）の上で動作し得て、ユーザにグラフィカル・ユーザ・インターフェースおよびグラフィカル出力（例えば、データについてのグラフィカル表示、ダッシュボードなど）を提供するために、テキストベースの機能（コマンドなど）を利用し得る。
【００６８】
図３に示されるように、モデリングシステム２２０は、シミュレーションツール３１０、エンティティライブラリ３２０、インターフェース論理３３０、コンパイラ３４０、コントローラ論理３５０、オプティマイザ３６０、シミュレーションエンジン３７０、レポートエンジン３８０、およびコードジェネレータ３９０を含み得る。図３に示されるモデリングシステム２２０の実施形態は例示であり、モデリングシステム２２０の他の実施形態は、本発明の趣旨を逸脱することなく、より多数のエンティティまたはより少数のエンティティを含み得る。
【００６９】
シミュレーションツール３１０は、モデルを構築するためのアプリケーションを含んでもよい。シミュレーションツール３１０は、動的システムモデル１１０ならびに／またはコストおよび制約モデル１２０といった、実行可能なセマンティクスを有するテキストモデルまたはグラフィカルモデルを構築するために使用され得る。グラフィカルモデルの場合、シミュレーションツール３１０は、ユーザに、モデルエンティティおよび／または接続の作成、表示、変更、診断、注釈付け、削除、印刷などを行わせ得る。シミュレーションツール３１０は、ユーザ入力を受理し、モデルを実行し（例えばシミュレーションを獲得するために）、結果を表示させ、コードを生成するなどのために、図２または図３に示される他のエンティティとインタラクションし得る。シミュレーションツール３１０は、ユーザに、テキストモデルを構築し、もしくはテキストモデルとインタラクションするためのエディタ、および／またはグラフィカルモデルを作成し、もしくはグラフィカルモデルとインタラクションするためのＧＵＩを提供し得る。エディタは、ユーザに、例えば、モデルの指定、編集、注釈付け、保存、印刷、および／またはパブリッシュを行わせるように構成され得る。エディタとのインタラクションを可能にするテキストインターフェースが提供され得る。ユーザは、テキストインターフェースを用いてモデルに対する自動編集操作を実行するスクリプトを書き得る。例えば、テキストインターフェースは、モデルのキャンバスとして機能し得る１組のウィンドウを提供し得て、ユーザにモデルとインタラクションさせ得る。モデルは１または複数のウィンドウを含んでもよい。複数の階層レベルに分割されたモデルが別々のウィンドウとして異なる階層レベルを示し得る。
【００７０】
エンティティライブラリ３２０は、動的システムモデル１１０ならびに／またはコストおよび制約モデル１２０に追加される特定のブロックといった、グラフィカルモデル（例えばモデル表現２１８）を含む表示ウィンドウに、ユーザがドラッグ・アンド・ドロップすることができるコードモジュールまたはエンティティ（ブロック／アイコンなど）を含んでもよい。グラフィカルモデルの場合、ユーザはさらに、ターゲット環境１４０および／またはプラント２４２といった、システムのグラフィカルモデルを生成するために、接続を用いてエンティティを連結し得る。
【００７１】
インターフェース論理３３０は、モデリングシステム２２０に、デバイス（例えば、プラント２４２、ターゲット環境２４０、プロセッシングクラスタ２５０など）またはソフトウェアモジュール（例えば、関数、アプリケーション・プログラム・インターフェースなど）へ／からデータおよび／または情報を送信させ、または受信させ得る。一実施形態では、インターフェース論理３３０は、取得論理３１０とモデリングシステム２２０との間のインターフェースを提供し得る。
【００７２】
コンパイラ３４０は、動的システムモデル１１０、コストおよび制約モデル１２０、ならびに／またはインターフェースモデル１３０といったモデルをコンパイルして実行可能形式にし得る。コードジェネレータ３９０は、コンパイラ３４０によって生成されたコンパイル済みモデルからコードを生成し得る。生成されたコードは、モデル化の結果を生成するために、コンピュータデバイス２１０上で実行され得る。一実施形態では、コンパイラ３４０は、モデルと関連付けられたエラーを診断するためのデバッグ機能も提供し得る。コードジェネレータ３９０は、グラフィカルモデルの一部の実行可能なコードを生成し得る。次いで、実行可能なコードは、モデルの実行中に自動的に実行され得て、モデルの第１の部分は解釈済み実行として実行し、モデルの第２の部分はコンパイル済み実行として実行する。
【００７３】
コントローラ論理３５０は、グラフィカルモデルにおいてコントローラを作成し、実装するために使用され得る。例えば、コントローラ論理３５０は、グラフィカルモデルにおいてコントローラのタイプを表すエンティティについての機能を提供し得る。グラフィカルモデルが実行されると、コントローラ論理３５０は、グラフィカルモデル内のエンティティとインタラクションすることによってモデル上の制御動作を実行し得る。一実施形態では、コントローラ論理３５０は、例えば、フレームワーク１００と関連付けられた決定済みのＮＯＣゲインを含むフィードバック制御、「比例・積分・微分（ＰＩＤ：ｐｒｏｐｏｒｔｉｏｎａｌ−ｉｎｔｅｇｒａｌ−ｄｅｒｉｖａｔｉｖｅ）」制御、ゲインスケジューリング制御、Ｈ無限大制御、モデル予測制御（ＭＰＣ：ｍｏｄｅｌ  ｐｒｅｄｉｃｔｉｖｅ  ｃｏｎｔｒｏｌ）、動的反転制御、バング／バング制御、スライディングモード制御、デッドビート制御、および／または他のタイプの制御といった、グラフィカルモデルにおけるコントローラを実装する制御アルゴリズムを含んでもよい。コントローラ論理３５０の実施形態は、スタンドアロンの、または分散型の実装形態として動作するように構成され得る。
【００７４】
オプティマイザ３６０は、モデルについてのコード、パラメータ、性能（例えば、実行速度および／またはメモリ使用）などを最適化し得る。例えば、オプティマイザ３６０は、コードが最適化されずにコードが実行される場合よりも、例えば、コードが占有するメモリを少なくし、コードを効率よく実行させ、コードを高速で実行させるようにコードを最適化し得る。またオプティマイザ３６０は、例えば、コントローラのパラメータを最適化するために、コントローラ論理３５０の最適化を実行してもよい。一実施形態では、オプティマイザ３６０は、コンパイラ３４０、コントローラ論理３５０、コードジェネレータ３９０などと一緒に動作し得て、またはこれらに統合され得る。オプティマイザ３６０の実施形態は、例えば、オプティマイザ３６０が作用するデータを受理するための他のオブジェクト指向ソフトウェアとインタラクションするソフトウェアオブジェクトによって実装され得る。
【００７５】
シミュレーションエンジン３７０は、システムをシミュレートするモデルを実行するための動作を実行し得る。システムをシミュレートするモデルを実行することは、モデルをシミュレートすると称され得る。シミュレーションエンジン３７０は、ユーザ設定またはシステム設定に基づいて、スタンドアロンのシミュレーションまたはリモートシミュレーションを実行するように構成され得る。
【００７６】
レポートエンジン３８０は、モデリングシステム２２０内の情報に基づいてレポートを生成し得る。例えば、報告エンジン３８０は、コントローラが設計仕様を満たすかどうかを示すレポート、コントローラが安定して動作するかどうかを示すレポート、モデルが正しくコンパイルされているかどうかを示すレポートなどを生成し得る。レポートエンジン３８０の実施形態は、ディスプレイ（表示デバイス２１６など）上での表示のための電子形式で、ハードコピー形式で、および／または記憶デバイスにおける格納に適合された形式でレポートを生成することができる。
【００７７】
コードジェネレータ３９０は、コンパイラ３４０によって生成されたコンパイル済みモデルからコードを生成することができる。一実施形態では、コードジェネレータ３９０は、生成されたコードをコンパイルし、リンクさせてモデルの「メモリ内実行可能」バージョンを生成するように構成され得る。モデルのメモリ内実行可能バージョンは、例えば、モデルをシミュレートし、検証し、削減し、および／または線形化するために使用され得る。別の実施形態では、コードジェネレータ３９０は、モデルからコードを生成することができる。一実施形態では、コードジェネレータ３９０は、第１の形式のコードを受理し得て、そのコードを第１の形式から第２の形式へ変換し得る。一実施形態では、コードジェネレータ３９０は、モデルの少なくとも一部分から、ソースコード、アセンブリ言語コード、バイナリコード、インターフェース情報、コンフィグレーション情報、パフォーマンス情報、タスク情報などを生成することができる。例えば、コードジェネレータ３９０は、モデルから、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ、Ｊａｖａ、構造化テキスト、ハードウェア記述言語（ＨＤＬ：ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）などのコードを生成することができる。
【００７８】
コードジェネレータ３９０の実施形態はさらに、統一モデリング言語（ＵＭＬ）ベースの表現および／またはグラフィカルモデルの一部または全部からの拡張（例えば、ＳｙｓＭＬ（Ｓｙｓｔｅｍ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、ＭＡＲＴＥ（Ｍｏｄｅｌｉｎｇ  ａｎｄ  Ａｎａｌｙｓｉｓ  ｏｆ  Ｒｅａｌ  Ｔｉｍｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍ）、ＡＡＤＬ（Ａｒｃｈｉｔｅｃｔｕｒｅ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｄｅｓｉｇｎ  Ｌａｎｇｕａｇｅ）、ＨＤＬ、ＡＵＴＯＳＡＲ（Ａｕｔｏｍｏｔｉｖｅ  Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ）などを生成することができる。一実施形態では、オプティマイザ３６０は、パラメータ（例えば、メモリ使用、実行速度、多重処理など）に従って最適化されたコードを生成するために、コードジェネレータ３９０とインタラクションすることができる。本発明の原理と一致するモデリング環境の実施形態は、さらに、検証構成要素、妥当性検査構成要素などといった構成要素を含むことができる。
【００７９】
本発明の実施形態は、多変数フィードバック制御問題をインタラクティブに定式化し、ほとんどすべてのオーダおよび／または遅延の非線形モデルにおける使用のためのコントローラを設計するために使用され得る。各実施形態は、正確な線形化手法を使用して、非線形モデルの少なくとも一部分を表すことができる線形時不変モデルを生成するように構成され得る。図３にはモデリングシステム２２０の例示的な構成要素が示されているが、他の実装形態では、モデリングシステム２２０は、図３に示されるものと比べて、より少ない構成要素、異なった構成要素、異なった配置の構成要素、または追加的な構成要素を含んでもよい。加えて、または代替として、モデリングシステム２２０の１または複数の構成要素が、モデリングシステム２２０の１または複数の他の構成要素によって実行されると記載される１または複数のタスクを実行してもよい。
【００８０】
＜例示的なデータ構造＞
図４Ａは、一実施形態における状態機械モデルを記述する例示的なデータ構造４０２（または統合状態遷移表４０２）を図示する。表４０２は、状態機械モデルの遷移元状態を格納する縦のフィールド列４０４（例えば表４０２の左側に沿った）を含む。遷移元状態フィールドのうちの１または複数について、表４０２は、１または複数のセル４０６（個別には「セル４０６」または「セル４０６‐ｘ」）も含んでいてよい。セル４０６は、満たされる場合、状態機械モデルが対応する遷移元状態から遷移先状態に遷移し得る条件を特定する条件フィールドを含んでもよい。一実施形態では、条件フィールドは、それが発生する場合条件（例えば同じフィールド内の）を評価させるイベントを規定し得る。またイベントは関数呼び出しに関連させられ得る。すなわち、関数呼び出しは、例えば、条件の評価のためにモデルを「起動し」得るイベントであってもよい。
【００８１】
またセル４０６は、対応する条件（例えば同じセル内の）が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールドも含んでもよい。またセル４０６は、対応する条件（例えば同じセル内の）が満たされ、状態機械モデルが対応する遷移先状態（例えば同じセル内の）に遷移する場合に、状態機械モデルによって取られるアクションを特定するアクションフィールドも含んでもよい。一実施形態では、統合状態遷移表４０２は、例えば、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。さらに、一実施形態では、表４０２内の１または複数のセル４０６が、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外してもよい。条件フィールドがイベントを規定する実施形態では、アクションフィールドは、対応するイベントが発生し、対応する条件が満たされた場合に、状態機械モデルによって取られるべきアクションを特定する。便宜上、また理解しやすくするために、図４Ａの例示的な実施形態では、遷移表４０２内の条件フィールドがイベントを含まないとみなされている。遷移先フィールドが省かれる場合には、デフォルトの遷移（例えば、隣接するセルの遷移先状態、テンプレート行内のセルの遷移先状態など）が発生し得る。
【００８２】
前述の状態‐状態遷移表１０２および状態‐条件遷移表１１２内のセルとは異なり、表４０２内のセルは、条件フィールドおよび遷移先フィールドの両方を含む。例示的な表４０２には、３つの遷移元状態Ｓ１、Ｓ２、およびＳ３が示されている。遷移元状態Ｓ１は条件フィールド（セル４０６‐１の）に格納された条件ＣＡと関連付けられる。よって、表４０２、セル４０６‐１に記載されているように、状態機械モデルが遷移元状態Ｓ１にあり、条件ＣＡが満たされる場合、状態機械モデルは状態Ｓ３に遷移する。表４０２に示されるように、遷移元状態Ｓ２は、別のセルの条件フィールド（例えばセル４０６‐２）に格納された同じ条件ＣＡと関連付けられる。したがって、表４０２、セル４０６‐２に記載されているように、状態機械モデルが遷移元状態Ｓ２にあり、条件ＣＡが満たされる場合、状態機械モデルは状態Ｓ１に遷移する。よって、表４０２に示されるように、遷移元状態Ｓ１（セル４０６‐２の）に対応する条件フィールドは、遷移元状態Ｓ２に対応する条件フィールドと同一の条件（例えばＣＡ）を有する。言い換えると、表４０２は、例えば、状態‐条件遷移表１１２と比べて冗長な条件情報を格納し得る。一実施形態では、セル４０６‐２に冗長な条件情報を格納するのではなく、セル４０６‐２の条件フィールドは、セル４０６‐１の条件フィールドを参照し得る（例えば指し示す）。例えば、セル４０６‐２の条件フィールドは、＄１＄２（例えば、状態を規定する列がカウントされると仮定すると、行１の列２）を参照し得る。
【００８３】
さらに、表４０２、セル４０６‐３に記載されているように、遷移元状態Ｓ２は、遷移先フィールドに格納された遷移先状態Ｓ２および条件フィールドに格納された条件ＣＣと関連付けられる。よって、状態機械モデルが遷移元状態Ｓ２にあり、条件ＣＣが満たされる場合、状態機械モデルは状態Ｓ２に遷移する。セル４０６‐４で特定されるように、遷移元状態Ｓ３も、遷移先フィールドに格納された遷移先状態Ｓ２と関連付けられる。よって、状態機械モデルが遷移元状態Ｓ３にあり、条件ＣＢが満たされる場合、状態機械モデルは状態Ｓ２に遷移する。よって、表４０２に示されるように、遷移元状態Ｓ２（セル４０６‐３の）に対応する遷移先状態フィールドは、遷移元状態Ｓ３に対応する遷移先状態（セル４０６‐４の）と同一の遷移先状態（例えばＳ２）を有する。言い換えると、表４０２は、例えば、状態‐状態遷移表４０２と比べて冗長な遷移先状態情報を格納し得る。実際、セル４０６‐５も、遷移先状態Ｓ２（例えば、冗長な遷移先状態）のための条件ＣＢを特定する。セル４０６‐５で特定されるように、状態機械モデルが遷移元状態Ｓ１にあり、条件ＣＢが満たされる場合、状態機械モデルは遷移先状態Ｓ２に遷移し得る。一実施形態では、冗長な遷移先状態情報を格納する（例えばセル４０６‐４に）のではなく、遷移先フィールド（例えばセル４０６‐４の）は、別のセル（例えばセル４０６‐３）の遷移先フィールドを参照（例えば指し示す）し得る。例えば、セル４０６‐４の遷移先フィールドは、＄２＄３（例えば行２列３）を参照し得る。
【００８４】
遷移表４０２に示されるように、状態Ｓ２は、遷移先状態として複数回参照されており、「多参照状態」とみなされ得て、遷移先状態Ｓ２の特定は、表４０２において重複して格納され得る。さらに、表４０２に示されるように、条件ＣＡは条件として複数回規定されており、「多参照条件」とみなされ得て、条件ＣＡの特定は、表４０２において重複して格納され得る。
【００８５】
図４Ｂは、別の実施形態における状態機械モデルを記述する例示的なデータ構造４５２（または統合状態遷移表４５２）を図示する。表４５２は、表４０２と同様に、状態機械モデルの遷移元状態を格納する縦のフィールド列４５４を含む。遷移元状態フィールドのうちの１または複数について、表４５２は、１または複数のセル４５６も含んでもよい。セル４５６は、満たされる場合、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。
【００８６】
表４０２のセルと同様に、表４５２のセル４５６は、条件フィールドおよび遷移先フィールドの両方を含む。例示的な表４５２には、４つの遷移元状態Ｓ１、Ｓ２、Ｓ３、およびＳ４が示されている。もっと多くの遷移元状態が可能であるが、便宜上４つが示されている。さらに、３より多くのセル４５６を各遷移元状態と関連付けられ得るが、便宜上、遷移元状態ごとに３つのセル４５６が示されている。遷移元状態Ｓ１は、同じ遷移先状態（例えば遷移先状態Ｓ２）を特定する複数のセル４５６（例えばセル４５６‐１およびセル４５６‐２）と関連付けられる。この場合、状態機械モデルが遷移元状態Ｓ１にあり、かつ条件ＣＢ（セル４５６‐２で特定されている）が満たされ、または条件ＣＣ（セル４５６‐１で特定されている）が満たされる場合、状態機械モデルは状態Ｓ２に遷移する。前述のように、一実施形態では、あるセル（例えばセル４５６‐２）で規定される遷移先状態は、別のセル（例えばセル４５６‐１）を参照（例えば、セル４５６‐２の遷移先フィールドで＄１＄３を規定）し得る。さらに、遷移元状態Ｓ２は、同じ条件（例えば条件ＣＣ）を特定する複数のセル（例えばセル４５６‐３およびセル４５６‐４）と関連付けられる。一実施形態では、そうした状況をエラーとみなされ得る。別の実施形態では、そうした状況は、第２の条件（例えばセル４５６‐３の条件）が考慮されることなく、第１の条件（例えば、左から右へ、またはセル４５６‐４の条件）が考慮される結果となり得る。すなわち、状態機械モデルが遷移元状態Ｓ２にあり、条件ＣＣが満たされた場合には、状態機械モデルは、セル４５６‐４で特定される遷移先状態Ｓ２に遷移する。前述のように、一実施形態では、あるセル（例えばセル４５６‐４）で規定されている条件は、別のセル（例えばセル４５６‐３）を参照（例えば、セル４５６‐２の遷移先フィールドで＄２＄３を規定）し得る。
【００８７】
遷移表４５２に示されるように、状態Ｓ２は、遷移先状態として複数回参照されており、「多参照状態」とみなされ得て、遷移先状態Ｓ２の特定は、表４５２に重複して格納され得る。さらに、表４５２に示されるように、条件ＣＣは条件として複数回規定されており、「多参照条件」とみなされ得て、条件ＣＣの特定は、表４５２に重複して格納され得る。
【００８８】
図４Ａおよび図４Ｂは、表４０２の情報の例示的な表示も図示し得る。すなわち、表４０２または表４５２は、表示デバイス２１６の画面上に、ほぼ図４Ａに示される通りに表示され得る。後述するように、表４０２は別のやり方で、例えば、状態‐状態形式、状態‐条件形式、状態‐イベント形式、またはそのような形式の組み合わせで表示され得る。
【００８９】
図４Ｃは、一実施形態における状態機械モデルを含むグラフィカルモデルを生成し、評価するためのプロセスのフローチャートである。プロセス４８０は、コンピュータデバイス２１０によって実行され得る。プロセス４８０は、時間ベースの動的システムを表す実行可能なグラフィカルモデルを生成から始め得る（ブロック４８２）。前述のように、グラフィカルモデルは、グラフィカルエンティティ間の関係を伴うグラフィカルエンティティを含んでもよい。グラフィカルモデルは、遷移表４０２および／または遷移表４５２といった状態遷移表によって記述される状態機械モデル（例えば、複数の離散状態を有する時間ベースの実行可能な状態機械）を含んでもよい。
【００９０】
グラフィカルモデルは、評価され、および／またはシミュレートされ得る（ブロック４８４）。実行可能なグラフィカルモデルを評価することは、状態機械モデルを評価すること（ブロック４８６）を含んでもよい。前述のように、状態機械を評価することは、各時点において状態間で遷移すべきかどうかを評価することを含んでもよい。各時点は、例えば、周期的に、式の値が変化する場合に、イベントが発生する場合に、または条件が満たされる場合に発生し得る。一実施形態では、状態間で遷移すべきかどうかを評価することは、多参照状態を含む状態遷移表（例えば、遷移元状態のうちの複数から同一の遷移先状態に遷移することを記述する表）を評価することを含んでもよい。別の実施形態では、状態間で遷移すべきかどうかを評価することは、多参照条件を含む状態遷移表（例えば、遷移元状態のうちの複数から遷移すべき同一の条件を記述する表）を評価することを含んでもよい。
【００９１】
一実施形態では、状態機械モデルを評価することは、グラフィカルエンティティのうちの１つから変数（例えば入力変数）を入力すること（ブロック４８８）および入力変数に基づいて状態機械モデルを評価すること（ブロック４９０）を含んでもよい。別の実施形態では、グラフィカルモデルを評価することは、グラフィカルエンティティのうちの１つに変数（例えば出力変数）を出力すること（ブロック４９２）および出力変数に基づいてグラフィカルモデルを評価すること（ブロック４９４）を含んでもよい。
【００９２】
例えば、図５Ａは、状態‐状態遷移表形式の統合状態遷移表４０２の表示を図示する。状態‐状態遷移表１０２と同様に、表５０２は、状態機械モデルの遷移元状態を表示する縦のフィールド列５０４と、状態機械モデルの遷移先状態を表示する横のフィールド行４０６とを含む。遷移元状態のうちの１つによって特定される行と遷移先状態のうちの１つによって特定される列との交点には、状態機械モデルが対応する遷移元状態から対応する遷移先状態に遷移する条件を表示する条件フィールドがある。条件と共に、表５０２は、対応する条件が満たされた場合に、および／または状態機械モデルが対応する遷移元状態から対応する遷移先状態に遷移する場合に、状態機械が取る（または実行する）べきアクションを表示するアクションフィールドを含む。
【００９３】
統合状態遷移表４０２に格納された情報は、表５０２に示されるように編成し、表示され得る。図５Ｄは、統合状態遷移表内の情報を編成し、表示するためのプロセス５５０のフローチャートである。一実施形態では、同一の遷移先状態と関連付けられた表４０２の条件フィールドをグルーピングし得る（ブロック５５２）。例えば、図４Ａに示されるように、セル４０６‐４、セル４０６‐３、およびセル４０６‐５はすべて、同一の遷移先状態Ｓ２に遷移するための条件（それぞれ、ＣＢ、ＣＣ、およびＣＢ）を含む。これらの３つの条件（ＣＢ、ＣＣ、およびＣＢ）は、表５０２の１つの列５０８にグルーピングされ得て、その場合、列５０８は列の最上部に遷移先状態Ｓ２を含む。同様に、図４Ａに示されるように、セル４０６‐１およびセル４０６‐６は、どちらも遷移先状態Ｓ３に遷移するための条件（それぞれ、ＣＡおよびＣＤ）を含み得る。これら２つの条件（ＣＡおよびＣＤ）は、表５０２の１つの列５１０にグルーピングされ得て、その場合、列５１０は列の最上部に遷移先状態Ｓ３を含む。
【００９４】
よって、同一の遷移先状態と関連付けられた条件フィールドのグルーピング後、状態‐状態遷移表５０２は、状態機械モデルを表すように表示され得て（ブロック５５４）、遷移元状態は表５０２の列５０４に表示され、遷移先状態は表５０２の行５０６に表示され、各条件は、条件フィールドのグルーピングに基づき、遷移先状態が遷移先状態を表示する行５０６において反復されないように表示される。たとえデータが統合状態遷移表（例えば表４０２）として格納されたとしても、ユーザから見ると、状態機械モデルは状態‐状態遷移表（例えば表５０２）として表示される。別の実施形態では、各条件は、遷移先状態が遷移先状態を表す行５０６において反復され得るように表示される。
【００９５】
一実施形態では、ユーザは、表５０２に表示された情報を編集し得る。すなわち、表５０２は、統合状態遷移表４０２に格納された状態機械モデルへの変更、修正、および更新を受理するユーザインターフェースとして使用され得る。インターフェース論理３３０は、行５０６に表示された遷移先状態のうちの１つを編集するためのユーザからの入力を受理し得て（ブロック５５６）、編集された遷移先状態は２つの条件フィールドと関連付けられ、各条件フィールドは異なる遷移元状態に対応する。
【００９６】
例えば、図５Ｂにカーソル５１４で示されるように、ユーザは、表５０２の列５１０に格納された遷移先状態を「Ｓ１」に（「Ｓ３」から）なるように編集し得る。ユーザが編集を完了する場合、編集された遷移先状態は、表４０２の適切な遷移先フィールドに（例えば、遷移元状態に対応する条件と関連付けられた１もしくは複数のフィールドに）格納され得る（ブロック５５８）。よって、図５Ｃの編集された統合状態遷移表４０２’は、セル４０６‐１およびセル４０６‐６に遷移先状態Ｓ１（「Ｓ３」ではなく）を示している。後述するように、状態遷移表は、編集された情報と共に再表示され得て（ブロック５６０）、および／または新しい状態図は、編集された情報から、再生成され、表示され得る（ブロック５６２）。
【００９７】
図６Ａは、状態‐条件遷移表形式６０２の統合状態遷移表４０２の表示を図示する。状態‐条件遷移表１１２と同様に、表６０２は、状態機械モデルの遷移元状態を表示する縦のフィールド列６１４と、条件を表示する横のフィールド行６１６とを含む。遷移元状態のうちの１つによって特定される行と条件のうちの１つによって特定される列との交点には、対応する条件が満たされた場合に状態機械が遷移し得る遷移先状態を表示する遷移先フィールドがある。条件と共に、表６０２は、対応する条件が満たされた場合に対応する遷移元状態にあったときに（例えば、状態機械モデルが対応する遷移先状態に遷移するときに）、状態機械が取る（または実行する）べきアクションを表示するアクションフィールドを含む。
【００９８】
よって、統合状態遷移表４０２に格納された情報は、表６０２に示すように編成され、表示され得る。図６Ｄは、統合状態遷移表内の情報を編成し、表示するためのプロセス６５０のフローチャートである。一実施形態では、同一の条件と関連付けられた遷移先フィールドは、グルーピングされ得る（ブロック６５２）。例えば、図４Ａに示されるように、セル４０６‐１およびセル４０６‐２は同一の条件ＣＡと関連付けられた遷移先状態（それぞれＳ３およびＳ１）を含む。これら２つの遷移先状態（Ｓ３およびＳ１）は表６０２の１つの列６０８にグルーピングされ得て、その場合、列６０８は列の最上部に条件ＣＡを含む。同様に、図４Ａに示されるように、セル４０６‐５およびセル４０６‐４も、同一の条件ＣＢと関連付けられた遷移先状態（Ｓ２）を含む。これらの遷移先状態（Ｓ２）は表６０２の１つの列６１０にグルーピングされ得て、その場合、列６１０は列の最上部に条件ＣＢを含む。
【００９９】
したがって、同一の条件と関連付けられた遷移先状態フィールドのグルーピング後、状態‐条件遷移表６０２は、状態機械モデルを表すように表示され得て（ブロック６５４）、遷移元状態は表６０２の列６１４に表示され、条件は表６０２の行６１６に表示され、遷移先状態は、遷移先状態のグルーピングに基づき、条件が条件を表示する行において反復されないように表示される。たとえデータが統合状態遷移表（例えば表４０２）として格納されたとしても、ユーザから見ると、状態機械モデルは状態‐条件遷移表（例えば表６０２）として表示される。別の実施形態では、各遷移先状態は、条件が条件を表す行において反復され得るように表示される。
【０１００】
一実施形態では、ユーザは、表６０２に表示された情報を編集し得る。すなわち、表６０２は、統合状態遷移表に格納された状態機械モデルへの変更、修正、および更新を受理するユーザインターフェースとして使用され得る。インターフェース論理３３０は、行６１６に表示された条件のうちの１つを編集するためのユーザからの入力を受理し得て（ブロック６５６）、編集された条件は２つの遷移先状態フィールドと関連付けられ、各遷移先状態フィールドは異なる遷移元状態に対応する。例えば、図６Ｂにカーソル６１８で示されるように、ユーザは、表６０２の列６０８に格納された条件を「ＣＤ」になる（「ＣＡ」から）ように編集し得る。ユーザが編集を完了する場合、編集された条件は、遷移元状態に対応する遷移先と関連付けられた適切な遷移先フィールドに格納される（ブロック６５８）。よって、図６Ｃの編集された統合状態遷移表４０２’’は、セル４０６‐１およびセル４０６‐２に条件ＣＤを示す（「ＣＡ」ではなく）。
【０１０１】
図４Ａに示されるように、統合状態遷移表４０２は、セル４０６にアクションを格納するためのアクションフィールドを含む。特に、セル４０６‐５のアクションフィールドは、セル４０６‐２のアクションフィールドと同じアクション（例えばＡ１２）を格納する。さらに、セル４０６‐１のアクションフィールドは、セル４０６‐６のアクションフィールドと同じアクションを格納する。また、セル４０６‐３のアクションフィールドは、セル４０６‐４のアクションフィールドと同じアクションを格納する。後述するように、状態遷移表は、編集された情報と共に再表示され得て（ブロック６６０）、および／または新しい状態図が、編集された情報から、再生成され、表示され得る（ブロック６６２）。
【０１０２】
図７Ａは、状態‐アクション遷移表形式７０２の統合状態遷移表４０２の表示を図示する。状態‐条件遷移表６０２と同様に、状態‐アクション遷移表は、状態機械モデルの遷移元状態を表示する縦のフィールド列７１４と、アクションを表示する横のフィールド行７１６とを含む。遷移元状態のうちの１つによって特定される行と条件のうちの１つによって特定される列との交点には、対応する条件が満たされた場合に状態機械が遷移し得る遷移先状態を表示する遷移先フィールドおよび条件フィールドがある。表７０２の上に沿って表示されたアクションフィールドは、状態機械モデルがある遷移元状態にあり、適切な条件が満たされた場合に（例えば、状態機械モデルが対応する遷移先状態に遷移する場合に）、状態機械が取る（または実行する）べきアクションを示す。
【０１０３】
統合状態遷移表４０２に格納された情報は、表７０２に示されるように編成され、表示され得る。一実施形態では、同一のアクションと関連付けられた条件フィールドおよび／または遷移先フィールドがグルーピングされ得る。例えば、図４Ａに示されるように、セル４０６‐５およびセル４０６‐２は同一のアクションＡ１２と関連付けられた条件および遷移先状態を含む。これら２つの遷移先状態および条件は表７０２の１つの列７１０にグルーピングされ得て、その場合、列７１０は列の最上部にアクションＡ１２を含む。同様に、図４Ａに示されるように、セル４０６‐１およびセル４０６‐６は、同一のアクションＡ１１と関連付けられた遷移先状態および条件を含む。これらの遷移先状態および条件は表７０２の１つの列７０８にグルーピングされ得て、その場合、列７０８は列の最上部にアクションＡ１１を含む。最後に、図４Ａに示されるように、セル４０６‐３およびセル４０６‐４は、同一のアクションＡ２２と関連付けられた遷移先状態および条件を含む。これらの遷移先状態および条件は表７０２の１つの列７１２にグルーピングされ得て、その場合、列７１２は列の最上部にアクションＡ２２を含む。
【０１０４】
同一の条件と関連付けられた遷移先状態フィールドのグルーピング後、状態‐アクション遷移表７０２は、状態機械モデルを表すように表示され得て、遷移元状態は表７０２の列７１４に表示され、アクションは表７０２の行７１６に表示され、遷移先状態および条件は、アクションのグルーピングに基づき、アクションがアクションを表示する行において反復されないように表示される。たとえデータが統合状態遷移表（例えば表４０２）として格納されたとしても、ユーザから見ると、状態機械モデルは状態‐アクション遷移表（例えば表７０２）として表示される。別の実施形態では、遷移先状態および条件は、アクションがアクションを表す行において反復され得るように表示される。
【０１０５】
一実施形態では、ユーザは、表７０２に表示された情報を編集し得る。すなわち、表７０２は、統合状態遷移表に格納された状態機械モデルへの変更、修正、および更新を受理するユーザインターフェースとして使用され得る。インターフェース論理３３０は、行７１６に表示されたアクションのうちの１つを編集するためのユーザからの入力を受理し得て、編集された条件は２つの遷移先状態フィールドおよび／または２つの条件フィールドと関連付けられ、各遷移先フィールドおよび／または条件フィールドは異なる遷移元状態に対応する。例えば、図７Ｂにカーソル７１８で示されるように、ユーザは、表７０２の列７１０格納されたアクション（例えば「Ａ１２」）を「ＡＡ」になるように編集し得る。この例では、表示される状態‐アクション遷移表は、図７Ｂに示されるもの（すなわち表７０２’）であってもよい。ユーザが編集を完了する場合、編集されたアクションは、遷移元状態に対応する遷移先および／または条件と関連付けられた適切なアクションフィールドに格納される。よって、図７Ｃの編集された統合状態遷移表４０２’’は、セル４０６‐５およびセル４０６‐２にアクション「ＡＡ」を示す（「Ａ１２」ではなく）。
【０１０６】
図８Ａは、別の実施形態における統合状態遷移表８０２を図示する。表４０２と同様に、表８０２は、状態機械モデルの遷移元状態の名称を格納する縦のフィールド列８０４を含む。１または複数の遷移元状態フィールドについて、表８０２は、１または複数のセル８０６も含んでもよい。セル８０６は、満たされる場合、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。
【０１０７】
図８Ｂは、統合状態遷移表８０２に格納された情報をハイブリッド遷移表８２２に表示する別のやり方を図示する。表８２２は、表８２２の上に沿ったセル行８２４を含む。セル行８２４の各セルは、これらのセルの下の列にあるセルに格納されたフィールドのためのテンプレートとして振舞い得る。表８２２の場合、セル８０６内の上のフィールドは条件を規定し、中間のフィールドはアクションを規定し、下のフィールドは遷移先状態を規定する。行８２４の各セルのフィールドは、その列の下方の各フィールドの共通点を規定する。例えば、セル８０６‐１およびセル８０６‐２はどちらも、状態Ｓ２がセル８２４‐１で規定されているため、遷移先状態Ｓ２を規定している。別の例としてセル８０６‐３およびセル８０６‐４は、条件Ｃ３がセル８２４‐２で規定されているため、条件Ｃ３を規定している。別の例としてセル８０６‐５およびセル８０６‐６は、セル８２４‐３が条件Ｃ１およびアクションＡ１を規定しているため、条件Ｃ１およびアクションＡ１を規定している。セル８０６‐６の場合には、結果として得られるセルの条件は（Ｃ１およびＣ２）であり、結果として得られるアクションは（Ａ１およびＡ２３）である。言い換えると、表８２２内の各行のセルはどのように配置されてもよく、任意の列の共通要素は表８２２の上に沿って行８２４で表示され得る。行８２４の各セルはセル８０６と同じフィールドを有する。
【０１０８】
図８Ｃは、別の実施形態における統合状態遷移表８５２を図示する。表４０２と同様に、表８５２は、状態機械モデルの遷移元状態の名称を格納する縦のフィールド列８５４を含む。１または複数の遷移元状態フィールドについて、表８５２は、１または複数のセル８５６も含んでもよい。セル８５６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。
【０１０９】
図８Ｄは、状態遷移表８５２に格納された情報をハイブリッド遷移表８７２に表示する別のやり方を図示する。表８７２は、表８７２の上に沿った条件フィールド行８７４を含む。行８７４のセルは条件フィールドを表示している。行８７４の条件フィールドは、同じ列の下方のフィールドの共通条件を規定する。例えば、セル８５６‐１は、条件Ｃ１が行８７４のその上の条件フィールドで規定されているため、条件Ｃ１を規定している。しかし、行８７４は、表８５２内のすべての条件を規定するものではない。それどころか、行８７４は、条件のうちの一部を規定するに過ぎない。行８７４に表示された条件は、自動的に選択されてもよく、ユーザによって選択されてもよい。セルが自動的に選択される（例えばインターフェース論理３３０によって）状況では、選択は、共通条件を規定する表８５２内のセル８０６（図８Ｃ参照）の数に基づいてもよい。すなわち、当該条件を規定する表８５２内のセル８０６（図８Ｃ参照）が多いほど、その条件が行８７４に表示される可能性がより高い。行８７４で規定されていない条件について、それらの条件はセル８８６で規定され得る。例えば、一実施形態では、他のどんなセルとも共通の特性を有しない表８５２内のセル８０６（図８Ｃ参照）は、セル８８６でリストされ得る。
【０１１０】
図８Ｄは、共通の特性として条件が表示している。他の実施形態では、共通の特性は、例えば、遷移先状態やアクション（または、条件、アクション、および遷移先状態の任意の組み合わせ）であってもよい。
【０１１１】
図９Ａは、状態機械モデルを格納するための、アクションのラベルを含むデータ構造を図示する。表９０２は、前述の統合状態遷移表４０２と同様に構築されている。表９０２は、状態機械モデルの遷移元状態（オンおよびオフ）を格納する縦のフィールド列９０４（例えば、表９０２の左側に沿った）を含む。遷移元状態フィールドごとに、表９０２は、１または複数のセル９０６も含んでもよい。セル９０６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件（例えば同じセル内の）が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件（例えば同じセル内の）が満たされ、状態機械モデルが対応する遷移先状態（例えば同じセル内の）に遷移する場合に、状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。
【０１１２】
セル９０６‐１は、特定されたアクションのラベルも含む。例えば、表９０２に記述されているように、セル９０６‐１は（遷移元状態オフでは）条件「スイッチ入力＞０」、オンという遷移先状態、および「入力値＝１」というアクションを特定している。よって、状態機械モデルが遷移元状態オフにあり、条件「スイッチ入力＞０」が満たされる場合には、状態機械モデルはオン状態に遷移し得て、アクション「入力値＝１」を取られ得る。またセル９０６‐１は、アクション「入力値＝１」にラベル「スイッチチェック」を関連付けている。
【０１１３】
図９Ａで使用されるシンタックスは、例示としては「ラベル：アクション」であるが、他のシンタックスも使用され得る。セル９０６‐１におけるラベルの定義は、ラベルがセル９０６‐２（例えば、アクション式の略記特定として）のアクションフィールドで特定されたアクションに使用されることを可能にする。すなわち、セル９０６‐２のアクションフィールドで特定されたアクションは「スイッチチェック」であり、これは、セル９０６‐１のアクションフィールドで特定されたラベルを参照することによって特定される。よって、セル９０６‐２のアクションフィールドで特定されたアクションは、セル９０６‐１のアクションフィールドで特定されたアクションと同一である。前述のように、一実施形態では、あるセル（例えばセル９０６‐２）で規定されるアクションは、別のセル（例えばセル９０６‐１）を参照（例えば、セル４５６‐２の遷移先フィールドで＄１＄２を規定）し得る。
【０１１４】
図９Ｂは、ラベルを含む、統合状態遷移表９０２に格納された情報を表示する別の方法を図示する。図９Ｂに示されるように、表９０２に格納されたフィールドはディスプレイ上に表示される。ラベル「スイッチチェック」および関連付けられたアクション「入力値＝１」は、セル９０６‐１のアクションフィールドに表示される。さらに、カーソル（例えば矢印）がセル９０６‐２内のラベル「スイッチチェック」を表示するアクションフィールド上でホバリングする。一実施形態では、ラベル「スイッチチェック」は、アクションを表示することなく、セル９０６‐２のアクションフィールドに表示される。この実施形態では、ユーザは、アクションが別の場所で（例えばセル９０６‐２で）定義されていると理解する。他の実施形態では、関連付けられたアクション式は、セル９０６‐２のラベルの横に示され得る。セル９０６‐２はラベルを参照させるに過ぎないため、一実施形態では、アクションラベルに近接して（例えばその上で）カーソルをホバリングさせることによって、ラベルと関連付けられたアクションを表示するポップアップボックス９２２が生成される。ポップアップボックス９２２の表示は、例えば、ラベルとアクションを関連付けるアクションフィールドが同時にディスプレイ上に表示されない場合に特に有用である。
【０１１５】
一実施形態では、インターフェース論理３３０は、ユーザに、図９Ｂに示されるセル９０６‐２に表示されたアクションラベルを選択させ（例えば「クリックさせ」）得る。例えば、マウスを動かすことによってセル９０６‐２のアクションラベル上でカーソル矢印をホバリングさせた後で、ユーザは、「クリック」してマウス上のボタンを押下し得る。この場合には、ディスプレイの焦点を、アクション式がラベルと関連付けられるセル９０６‐１内のアクションフィールドに移動し得る。図９Ｂにおけるフォーカスは、表示されたセル９０６‐１のアクションフィールドの周りの太線のボックスとして示されている。この例では、ユーザは、例えばアクション式、すなわちラベルの名称を編集し得る。図９Ｂに示されるように、インターフェース論理３３０は、アクションラベルおよびアクション式を表示しているフィールドに別のカーソル９２４を表示し（例えばセル９０６‐１を呼び出し）、アクション式を編集するために、ユーザはタイプする（例えばキーボードで）ことができるようにし得る。
【０１１６】
インターフェース論理３３０は、編集されたアクション式を受理し、編集されたアクション式を表９０２内の適切なフィールドに格納し得る。よって、この実施形態では、ユーザは、アクション式を一度編集し得て、編集された式は、他のセルの他のアクションフィールド（例えばセル９０６‐２のアクションフィールド）に格納されたアクションラベルの各出現と関連付けられる。シミュレーションツール３１０は、編集された式を表９０２のセル９０６‐１のアクションフィールドに格納し得る。一実施形態では、インターフェース論理３３０は、ユーザに、アクションラベルを表示している任意のアクションフィールド内のアクション式を編集することを可能にする。別の実施形態では、インターフェース論理３３０は、ユーザに、表示されたアクションフィールドとは別個の場所（例えば、アクションラベルをアクション式と関連付ける表）にあるアクション式を編集することを可能にする。
【０１１７】
ラベルは、アクションフィールド以外のフィールドに使用され得る。例えば、ラベルは条件と関連付けられ得る。図９Ｃは、状態機械モデルを格納するための、条件のラベルを含むデータ構造を図示する。図９Ｃには、表９０２と同様の統合状態遷移表９４２が示されている。表９４２のセル９４６‐１は、条件フィールド内の条件のラベル「スイッチオン」を含む。ラベル「スイッチオン」は条件式「スイッチ入力＞０」と関連付けられている。条件のラベルは、セル９４６‐２の条件フィールドでも、すなわち「（スイッチオン）以外」として使用される。図９Ｄには、ディスプレイ上に表示される表９４２が示されている。図示のように、カーソル（例えば矢印）が、セル９４６‐２の条件フィールドのラベル「スイッチオン」上でホバリングする。この場合、インターフェース論理３３０は、ユーザからカーソルをラベル「スイッチオン」上で動かす（例えばマウスを用いて）ためのコマンドを受理していてもよい。これに応答して、インターフェース論理３３０は、ラベルと関連付けられた条件式（例えば「スイッチ入力＞０」）を表示し得る。一実施形態では、ユーザは、条件式を条件ラベル（例えばセル９４６‐１の）と関連付ける条件フィールドへフォーカスを変更させるために、マウス上のボタンを押下（例えば、条件ラベルを「クリック」）し得る。
【０１１８】
アクションラベルに関して前述したように、インターフェース論理３３０は、ユーザに、条件式および／または条件ラベルを編集するための別のカーソルを提示し得る。インターフェース論理３３０は、編集された条件式を受理し、編集された条件式を表９４２内の適切なフィールドに格納し得る。よって、この実施形態では、ユーザは、条件式を一度編集し得て、編集された式は、次いで、他のセルの他のアクションフィールド（例えばセル９４６‐２のアクションフィールド）に格納されたアクションラベルの各出現と関連付けられる。インターフェース論理３３０は、編集された式を表９４２のセル９４６‐１のアクションフィールドに格納し得る。一実施形態では、インターフェース論理３３０は、ユーザが、アクションラベルを表示している任意のアクションフィールド内のアクション式を編集することを可能にする。別の実施形態では、インターフェース論理３３０は、ユーザが、表示された条件フィールドとは別個の場所（例えば、条件ラベルを条件式と関連付ける表）にある条件式を編集することを可能にする。
【０１１９】
一実施形態では、インターフェース論理３３０は、ユーザに、遷移元状態のラベルを変更することを可能にし得る。例えば、図９Ｄに示されるように、ラベル「オフ」は「オフ１」であるように編集されている。すなわち、インターフェース論理３３０は、状態ラベルを編集するためのユーザからの入力を受理していた。この場合、インターフェース論理３３０はまた、その状態の参照を更新し得る（例えば自動的に）。よって、セル９４６‐２で規定された遷移先状態は、「オフ」から変更されて「オフ１」になる。複数のセル９４６が「オフ」とラベル付けされた遷移先状態の参照を含む場合、一実施形態では、セル９４６内のすべての参照が「オフ」から「オフ１」に変更され得る。別の実施形態では、セル内のすべての参照を「オフ」から「オフ１」に変更する前に、ユーザは警告され、または指示され得る。別の実施形態では、複数のセル９４６が「オフ」とラベル付けされた遷移先状態の参照を含む場合、ユーザは、ラベル「オフ」のどの出現を「オフ」から「オフ１」に変更すべきか選択し得る。
【０１２０】
図１０は、一実施形態における状態機械モデルを記述する例示的なデータ構造１００２（例えば、統合状態遷移表１００２）を図示する。表１００２は、状態機械モデルの遷移元状態を格納する縦のフィールド列１００４を含む。遷移元状態フィールドごとに、表１００２は、１または複数のセル１００６も含んでもよい。セル１００６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされ、状態機械モデルが対応する遷移先状態に遷移する場合に、状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。一実施形態では、統合状態遷移表１００２は、例えば、セル１００６内のアクションフィールドを除外し得る。また図１０には、表１００２内のデータをどのように表示するかも表されている。すなわち、表１００２内のデータは、図１０に示されるように表示され得る。
【０１２１】
一実施形態では、セル１００６は、対応する遷移元状態を特定する行の相対位置を規定することによって遷移先状態を規定し得る。例えば、図１０に示されるように、セル１００６‐１内の遷移先フィールドは「次」と規定されている。この場合には（セル１００６‐１で特定されているように）、状態機械モデルが遷移元状態Ｓ１にあり、条件ＣＡが満たされる場合、状態機械モデルは次の状態に、すなわち、データ構造で次に出現する（例えば、下方の、または下方向の）隣接する行（例えば、セル１００６‐２を含む行）によって特定されている状態に遷移する。図１０はデータをどのように表示し得るかも表しているため、「次」を規定している遷移先フィールドはまた、ディスプレイ上で（例えば、下方向における下方で）次に出現する隣接する行によって特定されている状態を規定し得る。一実施形態では、セル１００６の遷移先フィールドは、「次（Ｘ）」（例えばＸは整数である）を規定し得る。この場合、状態機械モデルが対応する遷移元状態にあり、対応する条件が満たされる場合、状態機械モデルは、対応する現在の遷移元状態のＸ行下方の状態に遷移する。例えば、「次（３）」はデータ構造における３行下を規定し得る。
【０１２２】
別の例として、セル１００６‐３の遷移先フィールドは、「前」を規定する。この場合には（セル１００６‐３で特定されているように）、状態機械モデルが遷移元状態Ｓ３にあり、条件ＣＣが満たされる場合、状態機械モデルは前の状態に、すなわち、データ構造で前に出現する（例えば、上方の、または上方向の）隣接する行（例えば、セル１００６‐２を含む行）によって特定されている状態に遷移する。図１０はデータをどのように表示し得るかも表しているため、「前」を規定している遷移先フィールドはまた、ディスプレイ上で（例えば、上方または上方向で）前に出現する隣接する行によって特定されている状態を規定し得る。一実施形態では、セル１００６の遷移先フィールドは、「前（Ｙ）」（例えばＹは整数である）を規定し得る。この場合、状態機械モデルが対応する遷移元状態にあり、対応する条件が満たされる場合、状態機械モデルは、対応する現在の遷移元状態のＹ行上方の状態に遷移する。例えば、「前（３）」はデータ構造における３行上方を規定し得る。
【０１２３】
遷移先状態を「前」または「次」として規定し得ることは、離散状態がおおむねその近隣の状態にのみ移動し、遠く離れた状態の遷移は規則ではなく例外である「列車のような」構造を有する有限状態機械のモデルには特に有用である。
【０１２４】
別の例として、セル１００６‐４の遷移先フィールドは「最後」を規定する。この場合には（セル１００６‐４で特定されているように）、状態機械モデルが状態Ｓ１にあり、条件ＣＢが満たされる場合、状態機械モデルは最後の状態または終了状態に、すなわち、データ構造で最後に出現する（例えば、下方向に最も離れた）最後の行（例えば、セル１００６‐３を含む行）によって特定されている状態に遷移する。図１０はデータがどのように表示され得るかも表しているため、「最後」を規定している遷移先フィールドはまた、表示される最後の行（例えば、ユーザが表示される表の最下部までスクロールする場合の最後の行）である状態を規定し得る。
【０１２５】
別の例として、セル１００６‐５の遷移先フィールドは「最初」を規定する。この場合には（セル１００６‐５で特定されているように）、状態機械モデルが状態Ｓ３にあり、条件ＣＢが満たされる場合、状態機械モデルは最初の状態または開始状態に、すなわち、データ構造で最初に出現する（例えば、上方向に最も離れた）最初の行（例えば、セル１００６‐１を含む行）によって特定されている状態に遷移する。図１０はデータがどのように表示され得るかも表しているため、「最初」を規定している遷移先フィールドはまた、表示される最初の行（例えば、ユーザが表示される表の最上部までスクロールする場合の最初の行）によって特定される状態を規定し得る。
【０１２６】
遷移先状態を「次」、「前」、「最後」および「最初」として規定することができることにより、状態遷移表（例えば表１００２）を、状態名変更または状態の再配置によって導入されるエラーの影響をより受けにくくさせ得る。すなわち、ユーザは、位置標識（例えば、「次」、「前」、「最後」または「最初」）がない場合に必要となるはずの余分なデータ入力を行うことを免れ得る。
【０１２７】
一実施形態では、表１００２といった状態遷移表は、遷移先状態を、対応する遷移元状態の振る舞い位置に対する、状態機械モデルの実行中の、振る舞いとして（例えば、時間的に実行され、またはシミュレートされる状態機械モデルの振る舞い）規定する遷移先フィールドを含んでもよい。例えば、セル１００６‐６は遷移先状態を「先」として特定している。この場合には、状態機械モデルの実行中に、状態機械モデルが状態Ｓ２にあり、条件ＣＣが満たされるときに、状態機械モデルは、状態アクティビティ振る舞いにおける先の状態に遷移し得る。この実施形態では、状態機械モデルは、状態機械モデルが実行中に前の状態に戻り得るように、状態アクティビティ振る舞いにおける前の状態、または状態アクティビティ振る舞いにおける前の状態数を格納し得る。
【０１２８】
図１１Ａは、一実施形態における統合状態遷移表１１０２の表示（例えば、データ構造１１０２の表示）を図示する。表１１０２は、状態機械モデルの遷移元状態の名称を格納する縦のフィールド列１１０４を含む。遷移元状態フィールドごとに、表１１０２は、１または複数のセル１１０６も含んでもよい。前述の表４０２の場合と同様に、セル１１０６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。一実施形態では、統合状態遷移表１１０２は、例えば、セル１１０６内のアクションフィールドを除外し得る。
【０１２９】
表１１０２の表示は行インデックス（例えばＲ１〜Ｒ３）の列１１２０を含む。表１１０２の各行は異なる行インデックスと関連付けられ、行インデックスは１から開始し、毎行１ずつ増加し得る。例えば、３行ではなく１０行あった場合には、行インデックスはＲ１から開始しＲ１０まで続き得る。ｘが行数であるＳ１〜Ｓｘといった他の行インデックスが使用され得る。
【０１３０】
表１１０２の表示は、列インデックス（Ａ〜Ｂ）の行１１２２を含む。表１１０２の各列は異なる列インデックスと関連付けられ、列インデックスはＡから開始するが、毎列１ずつ英字インデックスを増加し得る。例えば、２列ではなく１０列あった場合には、列インデックスはＡから開始してＪ（１０番目の文字）まで続き得る。ｙが列数であるＣ１〜Ｃｙといった他の列インデックスが使用され得る。
【０１３１】
図１１Ａ、セル１１０６‐１に示すように、遷移先は、遷移先状態の名称（例えば「状態３」）ではなく、またはこれに加えて行インデックス（例えば「Ｒ３」）の参照によって規定され得る。この実施形態では、行インデックスは、表１１０２のデータ構造におけるアドレスを規定する。一実施形態では、遷移先状態は、表１１０２内のセルの絶対位置によって（例えば絶対行インデックスを規定することによって）特定され得る。例えば、セル１１０６‐２は、遷移先状態を「＄Ｒ３」として規定している。この実施形態でも、絶対行インデックスは、表１１０２のデータ構造におけるアドレスを規定している。
【０１３２】
絶対行インデックスと非絶対行インデックスとの違いは、絶対行インデックスは、行が、挿入され、または表１１０２から削除される場合に自動的に更新され得ないことである。他方、非絶対行インデックスは、行が、挿入され、または表１１０２から削除される場合に、自動的に更新され得る。例えば、図１１Ｂは、表１１０２’
（編集された情報を伴う表１１０２である）を図示する。インターフェース論理３３０は、「状態２」（図１１Ａの行インデックスＲ２と関連付けられた）と名付けられた遷移先状態と、「状態３」（図１１Ａの行インデックスＲ３と関連付けられた）と名付けられた遷移先状態との間の状態を入力するためのユーザからの入力を受理し得る。この場合には、新しい遷移元状態が「状態２＿１」という名称と共に追加される。新しい状態の行インデックスは、状態２＿１が表１１０２’の第３行であるため、Ｒ３である。「状態３」（図１１Ｂの）という名称の遷移元状態は、表１１０２’の第４行になるため、Ｒ４の行インデックスと関連付けられる。状態３と名付けられた状態と関連付けられた行インデックスの変更により、セル１１０６‐１で特定された遷移先状態は、「Ｒ３」ではなく「Ｒ４」になるように更新される。しかし、セル１１０６‐２で特定された遷移先状態は、更新されず、＄Ｒ３のままであり、「＄」は、行インデックスが更新されるべきでないことを示している。表１１０２の絶対アドレスを示すために「＄」以外のインジケータが使用されてもよい。
【０１３３】
一実施形態では、行インデックス（および列インデックス）は、データ構造１１０２（表１１０２）自体に格納されなくてもよい。例えば、＄Ｒ３への参照は、表１１０２が表１１０２にラベル「Ｒ３」を格納することなく第３行を記述し得る。同様に、列「Ａ」への参照は、表１１０２がラベル「Ａ」を格納することなく、第１列（列１１２０以外の）を記述し得る。
【０１３４】
図１２Ａは、一実施形態における別の統合状態遷移表１２０２の表示を図示する。以下でより詳細に記述するように、表１２０２は、例えば、記述された状態機械モデルの実行中に実行されないモデルの部分をユーザに伝えるようなやり方で表示され得る。表４０２と同様に、表１２０２は、状態機械モデルの遷移元状態を格納する縦のフィールド列１２０４を含む。遷移元状態フィールドごとに、表１２０２は、１または複数のセル１２０６も含んでもよい。セル１２０６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。
【０１３５】
シミュレーションエンジン３７０は、表１２０２によって記述された状態機械モデルを実行し得る。一実施形態では、前述のように、表１２０２内の情報は実行可能なコードに変換され得る。コードの実行中に、シミュレーションエンジン３７０は、例えば、表１２０２によって記述される状態機械モデルのあらゆる可能な状態または結果をシミュレートするように、異なる入力変数をシミュレートし得る。さらに、コードの実行中に、シミュレーションエンジン３７０は、コードのどの部分（例えばどんな条件）が実行されず、または一度も満たされることがないのかを判定し得る。これらの結果は多種多様なやり方でユーザに表示され得る。例えば、セル１２０６‐１によって特定される条件が一度も満たされることがなく、および／またはアクションが一度も実行されない場合には、これは図１２Ａに示されるように強調表示され得る。言い換えると、表１２０２の表示は、モデルの実行の「範囲」を示し得る。当該範囲の表示は、ユーザが表１２０２によって記述される状態機械モデルをデバッグすることに役立つ。図１２Ａには統合状態遷移表が示されているが、当該範囲は、状態‐状態遷移表（例えば図１Ａに示されるような）または状態‐条件遷移表（例えば図１Ｂに示されるような）を伴うなどのように、他の表形式で表示され得る。よって、一度も実行されないアクションまたは一度も満たされることがない条件を特定する条件フィールドは、図１２Ａに示されるように表示され得る。
【０１３６】
さらに、図１２Ｂに示されるように、当該範囲は、コードジェネレータ３９０によって生成されたコンピュータコードにおいて表示され得る。図１２Ｂは、一度も実行されないコード（例えば、条件を特定する）または一度も満たされることがない条件を特定している（例えば強調表示する）。さらに、図１２Ｃに示されるように、当該範囲は、表１２０２に格納された情報から生成された状態図において表示され得る。図１２Ｃは、状態機械モデルにおいて一度も実行されないコードまたは一度も満たされることがなかった条件を強調表示している。当該範囲は、任意のコード（例えば、コードジェネレータ３９０によって生成されたものではなくユーザによって直接的に入力されたコード）について表示され得る。
【０１３７】
図１２Ａ、図１２Ｂ、および図１２Ｃでは、一度も実行されないコードまたは一度も満たされなかった条件が、強調表示といった技法を用いて特定され得る。強調表示は、予め決定される図形または色（赤など）で条件を強調表示することを含んでもよい。代替として、または加えて、一度も実行されない、または一度も満たされることがない条件を強調表示するのではなく、実際に実行されるコードおよび実行中に満たされる条件が強調表示されてもよい。この場合もやはり、実行されるコード（例えば、満たされる条件）は、予め決定される図形または色（緑など）で強調表示され得る。一度も実行されないコードまたは一度も満たされることがない条件に関する情報も、例えば、テキスト形式のレポートとして記録され得る。
【０１３８】
別の実施形態では、一度も実行されないアクションを特定するアクションフィールドも強調表示され得る。別の実施形態では、状態機械モデルは、セルの行および列を伴う表として図１２Ａに示されるように状態機械モデルの実行中に表示され得る。この実施形態では、現在実行されているセルが強調表示され得る。別の実施形態では、現在の状態が時間の関数として表示され得る。例えば、図１２Ｄは、表１２０２によって記述される状態機械モデルの実行中の時間の関数（例えば折れ線グラフにおける）として現在の状態を図示する。一実施形態では、状態機械モデルの実行は、ユーザによって特定される任意の時点において停止され得る。停止される場合、状態機械の実行がユーザによって特定された時点に停止されるときは、現在の状態および変数の値がユーザに示されてもよい。この実施形態では、ユーザは、対象となるコードのラインに沿った表のセルに直接的に中断点を入れることによって、遷移表をデバッグし得る。ユーザは、特定の状態の入場点で、特定の状態からの退場点で、アクションが取られる場合、および／または遷移条件が満たされる場合に、中断点を規定し得る。
【０１３９】
一実施形態では、複数の状態機械モデル（例えば並列状態の）は一度に実行し得る。この場合、異なる並列状態（例えば状態＿Ａおよび状態＿Ｂ）は相互にメッセージを送り得る。図１２Ｅは、状態機械モデル（状態＿Ａとして特定された）および状態機械モデル（状態＿Ｂとして特定された）の実行中の時間の関数（例えば折れ線グラフにおける）として現在の状態を図示する。この場合、状態＿Ａは、状態０、状態１、および状態２という子状態を含む。状態＿Ｂは、状態Ａ、状態Ｂ、および状態Ｃという子状態を含む。状態＿Ａのグラフは子状態を時間の関数として示している。状態＿Ｂのグラフは子状態を時間の関数として示している。さらに、状態＿Ａと状態＿Ｂ（親状態）との間で送られるメッセージは、ＥおよびＦとして図示され、および／または記録される。
【０１４０】
図１２Ｄに示されるグラフのように、折れ線グラフで現在の状態を表示するのではなく、現在の状態は、状態名の横に色を示すことによってアニメーション表示され得る。例えば、図１２Ｆは、状態機械モデルの実行中のアニメーションを図示する。図１２Ｆは、状態を記載した列１２０４を含む。状態機械モデルの実行中に、現在の状態の横のセルは強調表示され得る。例えば、図１２Ｆに示されている現在の状態は状態２（図１２Ｆにおいて濃いグレーで強調表示された）である。前の状態（例えば状態３）は、異なる色または異なる濃淡（図１２Ｆにおいて中間のグレーで強調表示された）で示され得る。前の前の状態（例えば状態１）は、異なる色または異なる濃淡（図１２Ｆにおいて薄いグレーで強調表示された）で示され得る。
【０１４１】
前述のように、シミュレーションエンジン３７０は、一度も実行されない条件または一度も満たされない条件を特定する条件フィールドを判定し、記録し、および強調表示するためにモデルを実行し得る。一実施形態では、コードジェネレータ３９０は、一度も実行されないアクション、一度も満たされなかった条件、および／または一度も到達しなかった状態を特定するためのコードを生成しない。この実施形態では、例えば、コードを生成することなく、状態機械モデルが解釈され得る（例えば、解釈済み実行および／またはシミュレーション）。別の実施形態では、到達不能な状態（一度も実行されない条件または一度も満たされなかった条件を含んでもよい）は、状態機械モデルを実行するのではなく状態機械モデルを記述する情報のパース（例えばパースエンジン）に基づいて判定され得る。例えば、パース論理は、ある状態に到達するための条件が一度も真にならない、または特定された状態が一度も到達されないと判定し得る。この場合、これらの状態は、図１２Ａ〜図１２Ｆで記述したように強調表示され得る。
【０１４２】
一実施形態では、状態機械モデルのパースに基づいて、満たされ得ない条件を含む条件フィールドが、記録され、または表示され得る。別の実施形態では、状態機械モデルのパースに基づいて、どの遷移元状態も特定の遷移先状態を遷移先状態として規定していないと判定することによって、当該特定の遷移先状態が到達不能であることが判定され得る。さらに、パースエンジンは、特定の遷移先状態を規定する各遷移元状態が、その特定の状態に遷移するための、満たされ得ない条件を含むと判定することによって、特定の遷移先状態が到達不能であると判定し得る。別の実施形態では、パースエンジンは、遷移元状態が、２つの異なる状態に遷移するための、同時に真となりうる２つの条件を含むと判定し得る。そうした状況は、表示され、または記録され得る。
【０１４３】
一実施形態では、表１２０２（および、例えば、表４０２といった他の表）に示される条件フィールドは変数を含んでもよい。各変数の型およびサイズは推測され得る（例えば、整数、行列、行列サイズなど）。前述のように、状態機械モデルの実行のために、状態機械モデルに基づいてコンピュータコードが生成され得る。さらに、生成されたコードは、ユーザによって特定される、人間が読取り可能な方式で自動的にフォーマットされ得る。コンピュータコードは、Ｃ、Ｃ＋＋、Ｃ＃、ＰＬＣ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｃｏｎｔｒｏｌｌｅｒ）言語、ＨＤＬ、Ａｄａ、Ｊａｖａ、および／またはＭＡＴＬＡＢ（登録商標）といったコンピュータ言語のものを含んでもよい。
【０１４４】
図１３Ａは、一実施形態における状態機械モデルを記述する例示的な統合状態遷移表１３０２の表示を図示する。表１３０２は、状態機械モデルの遷移元状態を格納する縦のフィールド列１３０４を含む。遷移元状態フィールドごとに、表１３０２は、１または複数のセル１３０６も含んでもよい。セル１３０６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を記述する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを記述するアクションフィールドを含んでもよい。一実施形態では、統合状態遷移表１３０２は、例えば、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。さらに、一実施形態では、表１３０２内の１または複数のセル１３０６が、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。例えば、表１３０２は、条件が満たされるが、状態機械モデルが異なる状態に遷移しない（例えば、遷移先フィールドで遷移先を規定していない）場合に取られるアクションを規定し得る。一実施形態では、対応する条件が満たされ、遷移が行われる場合に、状態機械モデルによってアクションが取られ得る。
【０１４５】
図１３Ａに示されるように、表１３０２は、ある状態を「連結点１」として特定している。連結点は、例えば、連結点名を特定するフィールドを取り囲む角丸を表示することによって、他の状態と区別される。連結点は、状態機械モデルがとどまらず、即座に別の状態に遷移する特定のタイプの状態とみなされ得る。言い換えると、連結点は、別の状態に退場するための１または複数の条件を特定する。例えば、表１３０２の連結点１は２つの条件、すなわち、ｕ＞０およびｕ≦０を特定している。連結点１の２つの条件のうちの１つは常に満たされ、状態機械モデルは、表１３０２に記載されるように、状態１または状態２に遷移する。言い換えると、連結点状態は、状態機械モデルが遷移先状態のうちの１つに遷移し、その連結点状態に止まらないことを保証する１または複数の条件と関連付けられる。
【０１４６】
一実施形態では、状態遷移表は、状態機械モデルがそこで開始すべき状態であるデフォルト状態を含んでもよい。この実施形態では、デフォルト状態は連結点状態であってよい。図１３Ｂは、状態機械モデルが実行される場合に最初に実行されるデフォルト状態（「デフォルト遷移行」）を含む統合状態遷移表１３４２を図示する。この例では、遷移元状態１３０４をリストする遷移表の列にリストされる最初の状態（例えば最上段の状態）は連結点状態であってもよい。パースエンジンは、状態機械モデルが連結点状態にとどまらないように条件のうちの１つが常に満たされることを保証し得る。この例では、シミュレーションエンジン３７０は状態機械モデルを実行し得て、連結点は実行される最初の状態である。図１３Ｃは、「デフォルト」と名付けられた連結点を伴う遷移表１３４２に対応する状態図を図示する。図１３Ｃには、楕円形の状態が示されており、遷移は状態間の矢印で示されている。条件は、遷移を表す関連付けられた矢印の横に示されている。条件は、対応するアクションおよびトランザクションの横の括弧内に示されている。この場合、状態機械モデルは、デフォルト状態（例えば、遷移表１３４２に記載された最初の状態）に入ることによって実行を開始し得る。状態機械モデルは、次いで、状態「状態１」または状態「状態２」のどちらかに即座に遷移し得る。よって、この実施形態では、ユーザは、状態機械モデルが実行を開始し次第、どちらの状態に入るべきか（例えば状態１かそれとも状態２か）を条件によって選択し得る。この実施形態では、条件は、遷移表１３４２で規定されるように左から右に実行され得る。
【０１４７】
前述のように、シミュレーションエンジン３７０は、統合状態遷移表といった状態遷移表によって記述される状態機械モデルを実行し得る。シミュレーションエンジン３７０は、２つの異なる状態間の接続性を測定し得る。例えば、状態機械モデルの実行中に、状態Ｓ１にある場合に、状態Ｓ３に遷移する可能性が非常に高いときには、状態Ｓ１と状態Ｓ３との間には高い接続性が存在するはずである。他方、例えば、状態機械モデルが実際に状態Ｓ２から状態Ｓ１に一度も遷移しなかった場合には、状態Ｓ２と状態Ｓ１との間の接続性は非常に低くなるはずである。これらの例では、接続性は方向を有していてもよい。すなわち、状態Ｓ３と状態Ｓ２との間の接続性は、状態Ｓ２と状態Ｓ３との間の接続性（例えば反対方向の）と同じでなくてよい。状態間の接続性は記録され得る。
【０１４８】
一実施形態では、ユーザは、状態図ビュー１３２２と状態遷移表１３４２ビューとを切り換え得る。一実施形態では、インターフェース論理３３０は、表１３０２が編集され生成される際に、統合状態遷移表１３０２から状態図１３２２を自動的に生成し得る（例えばバックグラウンドプロセスとして）。さらに、ユーザはまた、状態遷移表１３４２に格納された情報を、例えば、状態‐状態遷移表（例えば前に図５Ａで示され、記述されたような）として、状態‐条件遷移表（例えば前に図６Ａで示され、記述されたような）として、状態‐アクション遷移表（例えば前に図７Ａで示され、記述されたような）として格納し得る。
【０１４９】
ユーザは、任意のビュー（例えば状態図１３２２）として情報を編集し得て、編集された情報を、統合状態遷移表（例えば統合状態遷移表１３０２などの）に記録し得る。例えば、ユーザは、状態図１３２２の状態の名称を編集し得て、編集は、表１３４２において反映され得る。例えば、ユーザが状態図１３２２の楕円内の状態「状態１」の名称を「状態Ａ」に変更した場合には、この名称は、表１３４２の列１３０４、セル１３０６‐１、セル１３０６‐２、およびセル１３０６‐３でも変更されるはずである。ユーザは、状態図１３２２に示される条件および状態図１３２２に示されるアクションも編集し得て、そうした編集は表１３４２で反映されることになる。ユーザはまた、ある楕円から別の楕円へ矢印を移動させることによって遷移先状態を変更し得る。この場合もやはり、そうした編集は表１３４２において反映され得るはずである。
【０１５０】
図１３Ａは、連結点を、状態機械モデルで実行される最初の状態として特定している。他の実施形態では、連結点は、最初の状態以外の状態機械モデルの他の部分で出現してもよい。
【０１５１】
図１４に示されるように、状態間の接続性は、接続性表１４０２で表示され得る。一実施形態では、異なる色または濃淡を使用して異なる接続性を示し得る。接続性はまた、例えば、０から１０までの数字で表現され得る。表１４０２は、遷移元状態をリストする縦の列１４０４、および遷移先状態をリストする横の列１４０６を含む。任意の遷移元状態と任意の遷移先状態との接続性は、遷移元状態と遷移先状態との交点に（例えば対応するセルに）示され得る。接続性は、例えば、表示され、または記録され得る。
【０１５２】
一実施形態では、接続性は、対応する遷移元状態と対応する遷移先状態との間の、状態機械モデルの実行中の異なる経路の数に基づき得る。別の実施形態では、接続性は、対応する遷移元状態と対応する遷移先状態との間の、状態機械モデルの実行中の各経路に沿った状態の数に基づいてもよい。
【０１５３】
図１５Ａは、２つの退場連結点を伴う状態機械モデルを記述する統合状態遷移表１５０２を図示する。特に、表１５０２は、「状態Ｂ」と呼ばれる状態機械モデルを記述している。表１５０２は、状態機械モデルの遷移元状態を格納する縦のフィールド列１５０４を含む。遷移元状態フィールドごとに、表１５０２は、１または複数のセル１５０６を含んでもよい。セル１５０６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件の場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；満たされた場合、および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。表１５０２は、図１５Ｂに示される状態図１５２２として表示され得る。
【０１５４】
一実施形態では、統合状態遷移表１５０２は、例えば、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。さらに、一実施形態では、表１５０２内の１または複数のセル１５０６が、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。一実施形態では、条件フィールドはイベント（その発生時に条件が評価される）を規定し得る。この実施形態では、アクションフィールドは、対応するイベントが発生し、対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定し得る。便宜上、また理解しやすくするために、図１５Ａの例示的な実施形態では、遷移表１５０２内の条件フィールドがイベントを含まないものとみなされている。遷移先フィールドが省かれる場合には、デフォルトの遷移（例えば、隣接するセルの遷移先状態、テンプレート行内のセルの遷移先状態など）が発生し得る。
【０１５５】
図１５Ａに示されるように、表１５０２は、ある状態を「デフォルト」として特定している。このデフォルト連結点は、図１３Ａ〜図１３Ｃに関連して前に述べたように動作し得る。表１５０２のデフォルト連結点はまた、点を囲む円といった図記号１５０５によって指定され得る。表１５０２はさらに、退場点として２つの状態を特定している。一方の退場点は「ノーマル退場点」とラベル付けされ、例えば、エラーなしでの状態Ｂからの退場点を指定する。他方の退場点は「フォールト退場点」とラベル付けされ、フォールト状態Ｂからの退場点を指定する。表１５０２の退場点はまた、「Ｘ」を囲む円といった図記号１５０７によって指定され得る。
【０１５６】
以下でさらに記述するように、退場連結点は、「状態Ｂ」と呼ばれる状態機械モデルのインスタンス（表１５０２によって記述される）が別の状態機械モデルに埋め込まれることを可能にし得る。退場連結点は、例えば、連結点名を特定するフィールドを取り囲む角丸を表示することによって、他の状態と区別され得る。退場連結点は、状態機械モデルがとどまらず、即座に、この場合には、表１５０２によって記述される状態機械モデルから遷移して退場する特定のタイプの状態とみなされ得る。表１５０２によって記述される状態機械モデルを退場する場合に、退場点の名称（例えばラベル名）（ノーマル退場点やフォールト退場点など）は、例えば条件としての評価のためにその親状態に渡される。
【０１５７】
図１５Ｃは、別の状態機械モデルのインスタンスを呼び出す状態機械モデルを記述する統合状態遷移表１５４２を図示する。特に、表１５０２は、「状態Ｂ」と呼ばれる状態機械モデルを記述し、呼び出している。表１５４２は、状態機械モデルの遷移元状態の名称を格納する縦のフィールド列１５４４を含む。遷移元状態フィールドごとに、表１５４２は、１または複数のセル１５４６も含んでもよい。セル１５４６は、満たされる場合に、状態機械モデルが対応する遷移元状態から遷移先状態に遷移する条件を特定する条件フィールド；対応する条件が満たされた場合に状態機械モデルが遷移すべき遷移先状態を特定する遷移先フィールド；および対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定するアクションフィールドを含んでもよい。
【０１５８】
一実施形態では、統合状態遷移表１５４２は、例えば、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。さらに、一実施形態では、表１５４２内の１または複数のセル１５４６が、アクションフィールド、条件フィールド、および／または遷移先フィールドを除外し得る。一実施形態では、条件フィールドは、発生時に条件が評価されるイベントを規定し得る。この実施形態では、アクションフィールドは、対応するイベントが発生し、対応する条件が満たされた場合に状態機械モデルによって取られるべきアクションを特定し得る。便宜上、また理解しやすくするために、図１５Ａの例示的な実施形態では、遷移表１５４２内の条件フィールドがイベントを含まないものとみなされている。遷移先フィールドが省かれる場合には、デフォルトの遷移（例えば、隣接するセルの遷移先状態、テンプレート行内のセルの遷移先状態など）が発生し得る。
【０１５９】
表１５４２は、表１５０２によって記述される状態Ｂのインスタンスである遷移元状態「状態Ｂ’」を記述している。表１５４２は、やはり表１５０２によって特定される状態Ｂのインスタンスである遷移元状態「状態Ｂ’’」も特定している。状態「状態Ｂ’」および状態「状態Ｂ’’」は、それぞれ「親」状態とみなされ得て、それぞれ独自の「子遷移表」を伴う。その結果、状態図１５６２は、図１５Ｄに示されるように、状態「状態Ｂ’」および状態「状態Ｂ’’」を有する。
【０１６０】
しかし、状態「状態Ｂ」の各インスタンスは、デフォルトの遷移状態に影響を及ぼす異なる変数で開始され得る。さらに、状態「状態Ｂ」の各インスタンスは、その「親」において、終了し、異なる状態に遷移し得る。例えば、「状態Ｂ’」と呼ばれる状態「状態Ｂ」のインスタンスは、子状態からの退場連結点がノーマル退場点である（セル１５４６‐１）場合に、状態「状態１」に遷移する。さらに、「状態Ｂ’」と呼ばれる状態Ｂのインスタンスは、子状態からの退場連結点がフォールト退場点である（セル１５４６‐２）場合に、状態フォールトハンドラに遷移する。「状態Ｂ’’」と呼ばれる状態「状態Ｂ」のインスタンスは、子状態からの退場連結点がノーマル退場点である（セル１５４６‐３）場合に、状態「状態１」に遷移する。さらに、「状態Ｂ’’」と呼ばれる状態Ｂのインスタンスは、子状態からの退場連結点がフォールト退場点である（セル１５４６‐４）場合に、状態フォールトハンドラに遷移する。「子」から退場する場合に異なる遷移を特定することは、セル１５４６‐１およびセル１５４６‐２に起因する。例えば、セル１５４６‐１は遷移先状態「状態０」を特定し、セル１５４６‐２は遷移先状態「状態Ａ」を特定する。図１５Ｅは、表１５４２に埋め込まれた表１５０２を伴う表１５４２の表示の１つのやり方を図示する。表１５４２の下部分は、都合上、図示されていない。
【０１６１】
実行中に、状態機械モデルが状態「状態０」にあるときに、状態「状態Ｂ’」への（例えば、状態「状態１」または状態「状態２」のいずれかへの）遷移は、状態機械モデルが親状態から子状態（例えば、内部状態「状態１」に、または内部状態「状態２」に）遷移するため、「内部遷移」とみなされ得る。この例では、状態「状態１」および状態「状態２」は「内部状態」または「下位状態」とみなされ得て、状態「状態Ｂ’」および状態「状態Ｂ’’」は「上位状態」とみなされ得る。状態遷移表の階層は図１５Ｄおよび図１５Ｅに示されており、各図において状態「状態Ｂ’」および状態「状態Ｂ’’」は、状態「状態０」および状態「状態Ａ」を含む状態機械モデルより下位の階層にある状態機械モデルである。
【０１６２】
一実施形態では、退場連結点の代わりに、例えば、遷移表によって記述される「子」状態機械モデルの最後の状態は、その遷移先状態として「次」を規定し得る。この場合、次の状態は、「親」状態機械モデルでの次の状態、すなわち、子状態機械モデルの「おじ」であり得る。状態は「遷移元状態」または「遷移先状態」として記述されることもある。図１３Ｃにおいて言及したように、例えば、「遷移先状態」はまた「遷移元状態」であってもよい。
【０１６３】
一実施形態では、多参照状態または冗長な情報が状態図としてグラフで現れ得る。この実施形態では、多参照状態は、複数回、または重複して表示され得る。
【０１６４】
本出願は、整理番号第００８１‐０００９号、「Ｇｅｎｅｒａｔｉｎｇ  ａ  Ｓｔａｔｅ  Ｄｉａｇｒａｍ」という見出しの、２０１３年２月１５日に出願された、米国特許出願代１３／ＸＸＸ，ＸＸＸ号明細書を参照により加える。
【０１６５】
＜結論＞
本発明の例示的実施形態の以上の記述は例示および説明を提供するものであるが、網羅的であることも、本発明を開示通りの形態に限定することも意図するものではない。上記の教示に照らして変更および変形が可能であり、または本発明の実施により変更および変形を取得され得る。例えば、一連の動作が記述されているが、各動作の順番は、本発明の原理と整合性を有する他の実装形態において変更されてもよい。さらに、非依存の動作は並列に実行されてもよい。
【０１６６】
加えて、本発明の原理と整合性を有する実装形態は、本発明の趣旨を逸脱することなく、各図に例示され、本明細書で記述されているもの以外の装置および構成を用いて実装され得る。具体的な展開および／または適用に応じて、装置および／または構成要素が、図２Ａ、図２Ｂ、図２Ｃ、または図３の各実装形態に追加され、または各実装形態から削除され得る。さらに、開示の実装形態はいかなる特定のハードウェアの組み合わせにも限定されない。
【０１６７】
さらに、本発明のいくつかの部分は、１または複数の機能を果たす「論理」として実装され得る。この論理は、配線論理、特定用途向け集積回路、フィールド・プログラマブル・ゲート・アレイ、マイクロプロセッサ、またはハードウェアとソフトウェアとの組み合わせといったハードウェアを含んでもよい。本発明の記述で使用されるいかなる要素、動作、または命令も、特に明示しない限り、本発明にとって必要不可欠であると解釈すべきではない。また、本明細書で使用する場合、冠詞の「ａ」は１または複数の項目を含むことが意図されている。さらに、「〜に基づく（ｂａｓｅｄ  ｏｎ）」という句は、本明細書で使用する場合、特に明示しない限り、「〜に少なくとも一部は基づく（ｂａｓｅｄ，  ａｔ  ｌｅａｓｔ  ｉｎ  ｐａｒｔ，  ｏｎ」を意味する。
【０１６８】
本明細書で使用する見出しおよび小見出しは、本明細書を小区分に分割することによって読みやすくするためのものである。これらの見出しおよび小見出しは、本発明の範囲を限定するものとしても、本発明の特徴を定義するものとしても解釈すべきではない。
【図１Ａ】
0006038959.tif 000002
【図１Ｂ】
0006038959.tif 000003
【図２Ａ】
0006038959.tif 000004
【図２Ｂ】
0006038959.tif 000005
【図２Ｃ】
0006038959.tif 000006
【図３】
0006038959.tif 000007
【図４Ａ】
0006038959.tif 000008
【図４Ｂ】
0006038959.tif 000009
【図４Ｃ】
0006038959.tif 000010
【図５Ａ】
0006038959.tif 000011
【図５Ｂ】
0006038959.tif 000012
【図５Ｃ】
0006038959.tif 000013
【図５Ｄ】
0006038959.tif 000014
【図６Ａ】
0006038959.tif 000015
【図６Ｂ】
0006038959.tif 000016
【図６Ｃ】
0006038959.tif 000017
【図６Ｄ】
0006038959.tif 000018
【図７Ａ】
0006038959.tif 000019
【図７Ｂ】
0006038959.tif 000020
【図７Ｃ】
0006038959.tif 000021
【図８Ａ】
0006038959.tif 000022
【図８Ｂ】
0006038959.tif 000023
【図８Ｃ】
0006038959.tif 000024
【図８Ｄ】
0006038959.tif 000025
【図９Ａ】
0006038959.tif 000026
【図９Ｂ】
0006038959.tif 000027
【図９Ｃ】
0006038959.tif 000028
【図９Ｄ】
0006038959.tif 000029
【図１０】
0006038959.tif 000030
【図１１Ａ】
0006038959.tif 000031
【図１１Ｂ】
0006038959.tif 000032
【図１２Ａ】
0006038959.tif 000033
【図１２Ｂ】
0006038959.tif 000034
【図１２Ｃ】
0006038959.tif 000035
【図１２Ｄ】
0006038959.tif 000036
【図１２Ｅ】
0006038959.tif 000037
【図１３Ａ】
0006038959.tif 000038
【図１３Ｂ】
0006038959.tif 000039
【図１３Ｃ】
0006038959.tif 000040
【図１５Ａ】
0006038959.tif 000041
【図１５Ｂ】
0006038959.tif 000042
【図１５Ｃ】
0006038959.tif 000043
【図１５Ｄ】
0006038959.tif 000044
【図１５Ｅ】
0006038959.tif 000045
【図１２Ｆ】
0006038959.tif 000046
【図１４】
0006038959.tif 000047