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