(57)【特許請求の範囲】
【請求項１】
命令を格納する非一時的な装置可読記憶媒体であって、前記命令は実行されると1つまたは複数のプロセッサに、
グラフィカル状態遷移図モデルで構造的に非同一である2つ以上の再利用候補を識別させ、前記再利用候補が前記状態遷移図モデルで少なくとも1つの要素を含み、
前記再利用候補の正規化バージョンを選択させ、前記再利用候補の前記正規化バージョンは前記構造的に非同一である再利用候補の和集合を表現する一般化構造を備え、
前記再利用候補の前記正規化バージョンを、前記再利用候補の代わりに前記状態遷移図モデルに挿入させ、
前記再利用候補と前記正規化バージョンとの間にリンクを作成させ、前記リンクが、前記再利用候補に関連した意味論的情報を与えるようにパラメータ化されている、非一時的な装置可読記憶媒体。
【請求項２】
前記グラフィカル状態遷移図が階層的状態マシンのモデルを表す、請求項1に記載の媒体。
【請求項３】
各再利用候補は状態と該状態の階層とを含み、前記階層はゼロ個以上の子状態と、ゼロ個以上の子遷移と、ゼロ個以上の子ジャンクションとを含む、請求項2に記載の媒体。
【請求項４】
前記再利用候補の前記正規化バージョンが、
前記状態を表すプレースホルダー状態と、
前記ゼロ個以上の子状態を表すゼロ個以上のプレースホルダー子状態と、
前記ゼロ個以上の子遷移を表すゼロ個以上のプレースホルダー子遷移と、
前記ゼロ個以上の子ジャンクションを表すゼロ個以上のプレースホルダー子ジャンクションとを含む、請求項3に記載の媒体。
【請求項５】
2つ以上の再利用候補の識別が、2つの再利用候補間の類似性を表す類似性基準値の算出を含む、請求項1に記載の媒体。
【請求項６】
前記グラフィカル状態遷移図モデルが2つ以上の状態を含み、2つ以上の再利用候補の識別が、
再利用シグネチャを前記グラフィカル状態遷移図の2つ以上の状態に割り当てることと、
前記2つ以上の状態のうちの、一対の状態のシグナル距離を求めることと、
所定の閾値以下のシグナル距離を備えた2つ以上の再利用候補を選択することとを含む、請求項5に記載の媒体。
【請求項７】
前記再利用候補は名前を備え、前記再利用候補の前記正規化バージョンは、前記再利用候補の前記名前の代わりに再利用候補記号を含む、請求項1に記載の媒体。
【請求項８】
2つの再利用候補が意味論的に等価であれば、前記2つの再利用候補には同じ記号が割り当てられる、請求項7に記載の媒体。
【請求項９】
前記再利用候補の前記正規化バージョンの使用は、前記正規化バージョンの統一状態遷移図を表現するアトミックサブチャートの使用を含む、請求項1に記載の媒体。
【請求項１０】
前記正規化バージョンの使用は、再利用候補を前記アトミックサブチャートのインスタンスで置換することを含む、請求項9に記載の媒体。
【請求項１１】
前記グラフィカル状態遷移図モデルのコードを生成するための命令をさらに含む、請求項1に記載の媒体。
【請求項１２】
前記リンクは、それが前記再利用候補に関連した意味論的情報を与えるようにパラメータ化されている、請求項11に記載の媒体。
【請求項１３】
前記正規化バージョンを生成することをさらに含む、請求項1に記載の媒体。
【請求項１４】
電子装置実装方法であって、
グラフィカル状態遷移図で構造的に非同一である2つ以上の再利用候補を識別する段階であって、前記再利用候補が前記状態遷移図モデルで少なくとも1つの要素を含む、識別する段階と、
前記再利用候補の正規化バージョンを使用する段階であって、前記正規化バージョンが、
前記グラフィカル状態遷移図モデルにおいて前記2つ以上の再利用候補の代わりに使用され、
前記構造的に非同一である再利用候補の和集合を表現できる一般化構造を備えている、使用する段階と、
前記再利用候補のうちの少なくとも1つと前記正規化バージョンとの間にリンクを作成する段階であって、前記リンクが、前記再利用候補のうちの前記少なくとも1つに関連した意味論的情報を与えるようにパラメータ化されている、形成する段階とを含む、電子装置実装方法。
【請求項１５】
前記グラフィカル状態遷移図が階層的状態マシンのモデルを表す、請求項14に記載の方法。
【請求項１６】
前記グラフィカル状態遷移図モデルが2つ以上の状態を含み、2つ以上の再利用候補を識別する前記段階が、
再利用シグネチャを前記グラフィカル状態遷移図の2つ以上の状態に割り当てる段階と、
前記2つ以上の状態のうちの、一対の状態のシグナル距離を求める段階と、
所定の閾値以下のシグナル距離を備えた2つ以上の再利用候補を選択する段階とを含む、請求項14に記載の方法。
【請求項１７】
グラフィカル状態遷移図を格納するための記憶装置と、
1つまたは複数のプロセッサとを含むシステムであって、
該プロセッサが、
前記状態遷移図モデルにおいて構造的に非同一である2つ以上の再利用候補を識別させ、前記再利用候補が前記状態遷移図モデルで少なくとも1つの要素を含み、
前記再利用候補の正規化バージョンを前記グラフィカル状態遷移図モデルにおいて前記2つ以上の再利用候補の代わりに使用し、前記正規化バージョンは前記構造的に非同一である再利用候補の和集合を表現する一般化構造を備えており、
前記再利用候補のうちの少なくとも1つと前記正規化バージョンとの間にリンクを作成するようプログラミングされ、前記リンクが、前記再利用候補のうちの前記少なくとも1つに関連した意味論的情報を与えるようにパラメータ化されている、システム。
【請求項１８】
前記グラフィカル状態遷移図が階層的状態マシンのモデルを表す、請求項17に記載のシステム。
【請求項１９】
前記グラフィカル状態遷移図モデルが2つ以上の状態を含み、2つ以上の再利用候補の識別が、
再利用シグネチャを前記グラフィカル状態遷移図の2つ以上の状態に割り当てることと、
前記2つ以上の状態のうちの、一対の状態のシグナル距離を求めることと、
所定の閾値以下のシグナル距離を備えた2つ以上の再利用候補を選択することとを含む、請求項17に記載のシステム。
【請求項２０】
命令を格納する非一時的なコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサにより実行されると該1つまたは複数のプロセッサに、
1つまたは複数のグラフィカル状態遷移図の2つ以上の部分を選択させ、前記2つ以上の部分が第1部分と第2部分とを少なくとも含み、
前記1つまたは複数のプロセッサに、
前記第1部分の構造であって、1つまたは複数の状態または遷移を含む構造と、
前記第2部分の構造であって、1つまたは複数の状態または遷移を含む構造とを特定させ、
前記第1部分の前記構造が前記第2部分の前記構造とは異なり、
前記1つまたは複数のプロセッサに、
前記第1部分及び前記第2部分を表す正規化バージョンであって、前記第1部分の前記構造と前記第2部分の前記構造との和集合を含む正規化バージョンを生成させ、
前記正規化バージョンを記憶装置に格納させる、
非一時的なコンピュータ可読記憶媒体。
【請求項２１】
前記正規化バージョンが、1つまたは複数の条件に基づいて、前記第1部分または前記第2部分を前記1つまたは複数のグラフィカル状態遷移図で使用するための1つまたは複数の命令をさらに含む、請求項20に記載の媒体。
【請求項２２】
前記正規化バージョンの格納が、前記正規化バージョンをライブラリファイルに格納することを含む、請求項20に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、2009年12月9日付けで提出された米国特許仮出願第61/267,885号の優先権を主張する。上述の出願の内容は、本明細書に引用して援用する。
【背景技術】
【０００２】
状態遷移図モデリング環境は、ユーザが、状態マシンのグラフィカル表示を含むモデルを構築し、シミュレート可能とするツールを提供する。こうしたモデルは、モデル化されたエンティティが1つまたは複数のイベントに応答する場合のような幾つかの文脈で有用である。従来の状態遷移図モデリング環境には幾つかの限界があった。例えば、従来の状態遷移図は大きく嵩張ることがあり、その結果、編集及び/またはデバッグに支障を来すことがある。さらに、状態遷移図モデルの第1部分からの構成要素を、状態遷移図モデルの第2部分で(または異なる状態遷移図モデルで)再利用することが困難である場合がある。
【発明の概要】
【０００３】
幾つかの実施形態では、状態遷移図モデルを例えば状態遷移図環境で提供できる。前記状態遷移図モデルは、例えば、階層的状態マシンのモデルを表すグラフィカル状態遷移図でよい。
【０００４】
2つ以上の再利用候補を前記モデルで識別でき、それぞれの再利用候補は前記状態遷移図モデルの少なくとも1つの要素から構成されるものとすればよい。前記再利用候補を構成する要素の数、包含、及び連結性は、前記再利用候補の構造を記述できる。例えば、それぞれの再利用候補は、状態と、該状態の階層を含むことができる。状態の階層は、ゼロ個以上の子状態と、ゼロ個以上の子遷移と、ゼロ個以上の子ジャンクションとを含むことができる。
【０００５】
前記再利用候補の正規化バージョンは、前記2つ以上の再利用候補の代わりに使用できる。例えば、前記正規化バージョンは前記モデルにおいて前記再利用候補を置換できる。再利用候補の正準的な(canonical)または正規化(canonicalized)バージョンは、再利用候補の構造及び/または意味論の標準(standard)若しくは正規(normal)表現であり、これは前記再利用候補の意味論的詳細の一部を抽象化していることがある。前記正規化バージョンは、前記再利用候補の前記構造を表現する一般化構造を備えることができる。例えば、前記正規化バージョンは、前記再利用候補の前記状態を表すプレースホルダー状態と、前記再利用候補の前記ゼロ個以上の子状態を表すゼロ個以上のプレースホルダー子状態と、前記再利用候補の前記ゼロ個以上の子遷移を表すゼロ個以上のプレースホルダー子遷移と、前記再利用候補の前記ゼロ個以上の子ジャンクションを表すゼロ個以上のプレースホルダー子ジャンクションとを含むことができる。
【０００６】
幾つかの実施形態では、前記2つ以上の再利用候補は構造的に非同一でよい。従って、前記正規化バージョンは、前記構造的に非同一である再利用候補の和集合を表すことができる。
【０００７】
前記2つ以上の再利用候補は、2つの再利用候補間の類似性を表す類似性基準値の算出で識別すればよい。例えば、再利用シグネチャを前記グラフィカル状態遷移図の2つ以上の状態に割り当てることができ、さらに、前記2つ以上の状態のなかからの一対の状態に関してシグナル距離を求めればよい。2つ以上の状態を選択するのは、前記2つ以上の再利用候補が所定の閾値以下のシグナル距離を備えている場合のみにしてよい。
【０００８】
前記正規化バージョンは、前記再利用候補の名前、変数、及び定数(他の要素も存在するが)を、前記名前、変数、及び定数の正規化バージョンと置換できる。例えば、前記再利用候補に名前が付けられていれば、前記再利用候補の前記正規化バージョンは、前記再利用候補の前記名前の代わりに再利用候補記号を含むことができる。2つの再利用候補が意味論的に等価であれば、前記2つの再利用候補には同じ記号が割り当て可能である。
【０００９】
同様に、もし前記再利用候補が1つ若しくは複数の変数または定数を含んでいれば、前記正規化バージョンは正規化変数または定数を含むことができる。各再利用候補の前記変数及び定数を前記変数及び定数の正規化バージョンで表現するため、パラメータ化リンクを前記再利用候補と前記正規化バージョンとの間に設けることができる。前記リンクは、それが前記再利用候補に関連した意味論的情報を与えるようにパラメータ化できる。前記リンクが前記モデルでアクティブ状態にされると、前記変数及び定数の前記正規化バージョンは、前記再利用候補からの前記変数及び定数の適切なバージョンで置換されうる。
【００１０】
前記再利用候補の前記正規化バージョンは、前記正規化バージョンの統一状態遷移図を表現するアトミックサブチャートにより表現できる。前記正規化バージョンを使用するには、前記再利用候補は、前記状態遷移図モデルの前記アトミックサブチャートのインスタンスで置換すればよい。
【００１１】
さらに、前記グラフィカル状態遷移図モデルからコードを生成できる。前記再利用候補の1つまたは複数または前記正規化バージョンが変更され、前記コードが再生成された場合、新たなコードは、前記モデル全体でなく、前記変更された再利用候補または正規化バージョンに関してのみ生成される。
【００１２】
幾つかの実施形態では、前記正規化バージョンは、リポジトリまたはライブラリのような記憶装置に格納させる。幾つかの実施形態では、前記正規化バージョンが生成されるのは、前記正規化バージョンが何らかの手順のために要求されたとき(例えば、ユーザが1つまたは複数の再利用候補を正規化バージョンとを置換したいとき、またはコードが前記モデルに関して生成されるとき)とすればよい。
【００１３】
幾つかの実施形態では、前記正規化バージョンのプレビューを提供できる。このプレビューは、前記再利用候補を前記正規化バージョンで置換することなく前記ユーザに提示できる。望ましいまたは望ましくない正規化特性(例えば、構造的に非同一の候補の和集合から発生する望ましくない要素)を示すことにより、ユーザはこのプレビューへの変更を行うことができる。
【００１４】
グラフィカル状態遷移図の任意部分の正規化バージョンを生成するには、この部分を選択すればよい。前記部分の構造及び/または意味論を特定でき、前記構造は、1つ若しくは複数の状態または遷移、状態の包含、前記状態及び/または遷移の連結性により記述できる。前記意味論は、変数及び/または定数などの前記部分内のパラメータにより表現でき、かつ/または前記部分により参照できる。前記再利用候補の前記変数または定数のそれぞれの正規化バージョンが、前記正規化バージョンに関して生成できる。さらに、前記部分の前記正規化バージョンは、前記部分の構造と同じ構造を備えることができる。或いは、前記正規化バージョンの前記構造は、前記部分の前記構造と非同一でもよい。例えば、前記正規化バージョンは、異なる構造の和集合を表すことができる。特定種類の構造を使用するための1つまたは複数の命令を、前記正規化バージョンとともに記憶装置に格納できる。
【００１５】
小さなまたはトリビアルな正規化バージョンが生成されることを防ぐため、所定の閾値サイズ、値、範囲などを定義してもよい。前記グラフィカル状態遷移図の前記部分が選択されると、前記部分のサイズを前記所定の閾値サイズと比較できる。前記部分の前記サイズが前記所定の閾値サイズ以上であるかどうかによって、前記部分を正規化すればよい。さらに、前記正規化バージョンのシグネチャを求めて、該シグネチャは前記正規化バージョンとともに格納すればよい。
【００１６】
代表的な実施形態は、コンピュータなどの電子装置で動作可能な方法として実現できる。さらに、幾つかの実施形態は、命令を格納する1つまたは複数の非一時的な電子装置可読媒体で実施でき、これら命令は、1つまたは複数のプロセッサにより実行されると、前記プロセッサに一方法を実行させる。さらに、幾つかの実施形態は、一方法を実行するための命令を実行するようにプログラミングされたプロセッサを含むシステムで実現できる。
【図面の簡単な説明】
【００１７】
【図１】代表的な実施形態とともに使用するのに適した状態図を組み込んだブロック図の一例を示す。
【図２】(A)  図1の状態図で使用するための2つの再利用候補の一例を示す。  (B)  ジャンクションを含む状態図の一例を示す。
【図３】図2Aの再利用候補の正規化バージョンを示す。  図3Aの正規化アトミックサブチャートのリンクされた正規化バージョンを示す。
【図４】(A)  同じ正規化状態図により置換できる構造的に非同一の再利用候補を示す。  図4Aの構造的に非同一の再利用候補の正規化バージョンを示す。
【図５】状態図の正規化バージョンを生成するための代表的な手順を説明するフローチャートである。
【図６】再利用候補を状態図の正規化バージョンで置き換えるための代表的な手順を示すフローチャートである。
【図７】(A)  本明細書に記載された1つまたは複数の動作と使用するのに適した電子装置を示す。  (B)  本明細書に記載された1つまたは複数の実施形態と使用するのに適したモデリング環境を示す。
【図８】本明細書に記載された1つまたは複数の実施形態と使用するのに適したネットワーク実装を示す。
【発明を実施するための形態】
【００１８】
代表的な実施形態は、状態遷移図の部分(または状態遷移図全体)を正規化バージョンと置換する技法を提供する。正規化バージョンは、例えば、この状態遷移図の部分の一般化バージョンであって、意味論の詳細が正規化パラメータで置換されたものとすればよい。さらに、幾つかの代表的な実施形態は、状態遷移図における再利用するための部分を識別し、その部分の正規化バージョンを生成するための技法を提供する。
【００１９】
状態遷移図の置換される部分は、本明細書で「再利用候補」と呼ぶ。再利用候補の正準的な(canonical)または正規化(canonicalized)バージョンは、再利用候補の構造及び/または意味論の標準(standard)若しくは正規(normal)表現である。再利用候補の構造及び/または意味論の詳細の一部は正規化バージョンでは抽象化されているかもしれないが、こうした再利用候補の正規化バージョンは再利用候補を表現できる。幾つかの実施形態では、再利用候補の正規化バージョンはパラメータ化リンクを備えており、このリンクは、その再利用候補の構造及び/または意味論の詳細が状態遷移図で使用若しくは参照されたときに、これら構造及び/または意味論の詳細を正規化バージョンに再導入可能とする。こうした正規化バージョンは、状態遷移図のその部分の構造及び/または意味論を模倣するが、この正規化バージョンはその部分の構造または意味論に完全に一致している必要はない。
【００２０】
この正規化バージョンを使用すれば、状態遷移図の同一または類似した部分を再利用できる。従って、このモデルは単純化し、編集やデバッグを容易に行うことができる。さらに、ユーザは、正規化バージョンを一度編集すれば、変更点を、正規化部分に基づいて実現されたモデルの部分に自動的に反映させることができる。正規化バージョンに基づいたモデルの部分は共通のコード特性を備えているため、モデルに基づいたコード生成は単純となりうる。さらに、正規化バージョン(または正規化バージョンに基づいたモデルの部分)が変更されると、その正規化部分のコードだけを再生成すればよい。
【００２１】
上述のように、正規化バージョンは、グラフィカルモデリング環境で設計できる状態遷移図で使用可能である。幾つかの場合では、このグラフィカルモデリング環境により、グラフィカルモデルが実行またはシミュレーション可能となる。
【００２２】
グラフィカル状態遷移図モデル(「状態図」と呼ばれることもある)のようなグラフィカルモデルは、1つまたは複数のグラフィカル要素を含むことができる。これらグラフィカル要素は、全体として、その挙動が例えば時間の経過とともに漸進的に変化する動的システムを表すことができる。これら要素は1つまたは複数のノードを含むことができ、これらノードは1つまたは複数の線で連結できる(或いは、場合によっては、例えば図2A及び3Aに示すように、ノードは、別のノードに連結されていない線に連結してもよい)。グラフィカル状態遷移図モデルのノード及び線の一部または全部は、そのモデルで表現されるシステムで発生しうる1つまたは複数のイベントに応答できる。こうしたノードは、システム内の1つまたは複数の状態を表すことができ、線(矢印として表されることもある)は、例えばシステムにおける状態間の1つまたは複数の遷移を表すことができる。
【００２３】
それぞれの状態は、任意エンティティに対して実行される動作を表すことができる。さらに、グラフィカル状態遷移図モデルのような離散型イベントシステムにおける状態は、この離散型イベント駆動システムのモードを表すことができる。状態は、(1)有限状態マシンの一部または(2)有限状態マシンを表現可能な状態図となりうる。状態図内の線は、活動ステータスがノードからノードへ移行する状態間の遷移を表すことができる。状態または状態図は、時間ベースのブロック図モデルなどのブロック図モデルに埋め込みかつ/または参照できる。
【００２４】
状態、遷移、及びジャンクションを含む状態図の要素はソースモデル言語で表し、モデルファイルに格納できる。それぞれの要素は、例えばオブジェクトとして表現できる。幾つかの実施形態では、それぞれの要素はタイプ(例えば、状態、遷移、またはジャンクション)によって示し、その要素の構造及び意味論を記述した詳細がそれに続く。例えば、状態は、識別子、階層情報(親または子状態の識別など)、この状態がどの図に属するかを識別する情報(例えば、モデルが複数の状態図からなる場合)、パラメータ情報、初期パラメータ値、この状態によって取られる動作、この状態のチェックサムなどを備えることができる。遷移は、識別子、この遷移の起点状態、この遷移の行き先状態、この遷移の前、その最中、その後に取られる動作、図情報などを含むことができる。ジャンクションは、識別子、図情報、ジャンクションサブタイプ(例えば、連結ジャンクションまたは履歴ジャンクション)、このジャンクションによりリンクされるノード、このジャンクションがどのように動作するかを示す情報などを備えることができる。
【００２５】
ソースモデル言語の一例は、マサチューセッツ州ナティック所在のマスワークス社(MathWorks, Inc.)のStateflow(登録商標)である。Stateflowのモデルは、マサチューセッツ州ナティック所在のマスワークス社のSimulink(登録商標)による.mdlファイルに保存できる。
【００２６】
上述の説明から明らかなように、状態遷移図は、特定の構造において連結された一組の意味論的要素として記述できる。状態遷移図の意味論は、変数または定数などのパラメータ間の関係(例えば式)により表現されうる。こうしたパラメータは、1つまたは複数の遷移またはジャンクションにより結合される1つまたは複数の状態で用いることができる。状態、遷移、及びジャンクションの数、包含、並びに連結性は、この状態遷移図の構造を記述できる。
【００２７】
1つまたは複数の実施形態を、Stateflow(登録商標)環境(以降「Stateflow」と呼ぶ)で作成かつ実行されるグラフィカル状態遷移図モデルに関連して説明する。複数の実施形態は多数の異なる用途で実現可能であり、特定の用途において本明細書に記載した特定の実施形態に特に限定さるものではない。例えば、これら実施形態は状態遷移図モデルに限定されるものでなく、他の種類のモデルでも使用できる。幾つかの実施形態では、状態マシンを、例えば状態遷移マットリクスのような表として表現してもよい。さらに、これら実施形態は、本明細書に記載した特定の環境に限定されるものでなく、他の適切な環境でも使用できる。
【００２８】
図1は、代表的な実施形態での使用に適した状態図110を組み込んだブロック図100の一例を示す。状態図110は、ブロック図の1つのブロックとして表されている。このブロックは2つの入力パラメータ(「u1」と呼ぶ第1入力パラメータ112及び「u2」と呼ぶ第2入力パラメータ114)を受け取る。これら入力パラメータ112及び114は、それぞれ第1正弦波ブロック120及び第2正弦波ブロック130によって与えられる。
【００２９】
状態図110は、入力パラメータ112及び114を用いて1つまたは複数の計算を実行し、1つまたは複数の出力パラメータを生成できる。例えば、図1に示した状態図110は、2つの出力パラメータ(「y1」と呼ぶ第1出力パラメータ116及び「y2」とよぶ第2出力パラメータ118)を計算する。状態図110を含むブロックは、出力パラメータ116及び118をスコープブロック140に与える。
【００３０】
上述したように、状態図110は、多くの状態、遷移、及び/またはジャンクションを含むことができる。例えば、図2Aは、図1の状態図110に存在しうる状態を表す2つのアトミックサブチャート210及び230を示す。
【００３１】
「アトミックサブチャート」とは、状態図の一部分を密封すると共にその部分の状態、遷移、及び/またはジャンクションを単一のグラフィカル要素内で表現する、状態作図環境(state diagramming environment)で使用されるチャートである。アトミックサブチャートを使用すれば、図の詳細の一部を抽象化することによってモデル設計プロセスを単純化でき、ユーザが状態図の構造全体に集中できる。
【００３２】
アトミックサブチャートは正規化表現として使用するのに特に適しているが、それはアトミックサブチャートが、サブチャートの限定的バージョンを、そのサブチャートの再利用を可能とする様態で表すからである。この再利用度を実現するために、アトミックサブチャートの構造及び/または意味論に制限を課してその「アトミックな」性質を保持できる。例えば、アトミックサブチャートは、他の状態またはサブチャートに存在するデータまたはグラフィカル関数にアクセスすることを制限されるようにしてもよい。その場合、アトミックサブチャート内のデータは明示的に定義されていなくてはならず、アトミックサブチャートにより呼び出されるグラフィカル関数をエクスポートすることが要件となる場合もある。アトミックサブチャートは特定の種類のデータ(例えば型づけの強いデータ)に限定されることがある。幾つかの場合では、アトミックサブチャートは、そのアトミックサブチャートの範囲外であるイベントブロードキャストを参照しないし、そのアトミックサブチャートの境界を越えるスーパー遷移を利用しない。アトミックサブチャートは、連続時間状態図のような幾つかのタイプの状態図で使用できない。アトミックサブチャート内の入力動作がチャート入力またはデータ格納メモリへのアクセスを必要とする場合、このアトミックサブチャートは不正確な結果を出すことがある。従って、アトミックサブチャート内では初期化時実行挙動の使用は避けるべきである。
【００３３】
これら制約によって、アトミックサブチャートは、各文脈に存在しないかもしれないパラメータに依存することなく多くの異なる文脈で再利用できるようになる。ここに挙げた制約はすべてを網羅するものでなく、それ以外の挙動で、アトミックサブチャートに存在するとエラーの原因となったり、そのアトミックサブチャートが不正確な結果を出す原因となったりするものも存在する。アトミックサブチャートが、それが利用される様々な文脈で予想通りに動作することを保証するため、こうした挙動は避けるべきである。
【００３４】
第1アトミックサブチャートは、「Pos」と呼ぶ状態212(「第1正状態」)と、「Neg」と呼ぶ状態214(「第1負状態」)とを含む。第1遷移216は第1正状態212に入る条件を定義する(すなわち、第1入力パラメータ112が第1定数213より大きいとき、すなわち、言い換えればu1が0より大きいとき)。第2遷移218は、システムがいつ第1正状態212から第1負状態214へ遷移するか(すなわち、システムが第1正状態212であり、第1入力パラメータ112がゼロ未満であるとき)を定義する。第3遷移220は、システムがいつ第1負状態214から第1正状態212へ遷移するか(すなわち、システムが第1負状態214であり、第1入力パラメータ112がゼロより大きいとき)を定義する。さらに、第4遷移222は、システムがいつ第1負状態214に入るかを定義する。
【００３５】
同様に、第2アトミックサブチャート230は第2正状態232と第2負状態234に加え、第1遷移236と、第2遷移238と、第3遷移240と、第4遷移242とを含む。第1アトミックサブチャート210の構造と第2アトミックサブチャート230の構造とは、この場合は同一であることに注目すべきである。
【００３６】
すなわち、第1及び第2サブチャートはそれぞれ、同数の遷移によって同じ様態で接続された2つの状態であって、同じ様態で同数の遷移へと接続された2つの状態を含んでいる。第1アトミックサブチャート210と第2アトミックサブチャートとの唯一の違いは、(「A」及び「B」というそれぞれの名称は別として)状態及び遷移で使用される変数である。第1アトミックサブチャート210が第1入力パラメータ112及び第1出力パラメータ116を使用する一方、第2アトミックサブチャート230は第2入力パラメータ114及び第2出力パラメータ118を使用する。
【００３７】
さらに、第1及び第2アトミックサブチャート210及び230は、変数(例えば、第1及び第2入力パラメータ112及び116)を定数に関連付ける幾つかの式を含んでいる。例えば、第1アトミックサブチャートは第1定数213
(0)と、第2定数215 (1)と、第3定数217 (-1)とを含んでいる。第2アトミックサブチャート230も第1定数233 (0)と、第2定数235 (1)と、第3定数237
(-1)とを含んでいる。
【００３８】
状態遷移図によっては階層表現が可能なものも存在することにも注目すべきである。上述したように、状態遷移図内の状態はイベントの発生によってアクティブになり、アクティブである間に1つまたは複数の動作を行うことができる。階層的状態遷移図では、ある状態(「親状態」とよばれる)は、その動作の一部として他の状態(「子状態」と呼ばれる)を呼び出すことができる。従って、子状態が親状態の文脈におけるイベントの発生によってアクティブになりうるように、子状態を親状態にネストしてよい。状態遷移図は、任意数のレベルの階層を備えてよく、よって子状態はそれ自身の子状態を備えることができる。
【００３９】
例えば、第1アトミックサブチャート210が状態遷移図において状態として使用される場合、第1アトミックサブチャート210は親状態と考慮され、第1正状態212及び第1負状態214は子状態として考慮されることになる。
【００４０】
状態遷移図または状態遷移図の一部の構造を特定する際には、その状態遷移図またはその一部の階層を考慮してよい。例えば、状態の階層は、幾つかの子状態(ゼロ個以上)、子状態間における遷移の数、起点、及び行き先(ゼロ個以上)、並びに子状態及び遷移間のジャンクションの数を記述できる。ジャンクションは図2Bを参照して後に詳述する。
【００４１】
図2Bは、遷移の間にジャンクション252を含む状態図250を示す。図2Bのジャンクション252は、IF-THEN-ELSE構成体の一種を表している。状態図250の実行時に制御がジャンクション252に進めば、このジャンクションはシステムクロックを参照してシミュレーション時間などの時間を求める。この時間が2秒より前であれば、制御は「速い」状態に渡される。この時間が5秒より後であれば、制御は「遅い」状態に渡される。それ以外であれば、制御は「良い」状態に渡される。
【００４２】
ジャンクションは、単一の遷移に関して、異なる可能な遷移経路を表すことができる。連結ジャンクションを用いて、例えば次の特徴を表すことができる。
【００４３】
・連結ジャンクションから出る遷移の一部または全部に条件を指定することによるIF-THEN-ELSE判断構成体の変形
・出ていく遷移が何れも無効である場合の起点状態へ戻る自己ループ遷移
・自己ループ遷移を連結ジャンクションからそれ自身に戻すことによるforループ構成体の変形
・１つの共通起点から多数の行き先への遷移
・多数の起点から１つの共通行き先への遷移
・共通イベントに基づいた起点から行き先への遷移
【００４４】
別のタイプのジャンクションは履歴ジャンクションである。履歴ジャンクションは、状態図における履歴判定点を表す。これら判定点は、状態活動に関する履歴データに基づく。親状態に履歴ジャンクションを配置すると、次にアクティブになる状態を判定するために状態活動の履歴情報が使用されることを示す。
【００４５】
この技法によれば、状態図または状態図の一部が一般化されて、多数の文脈で再利用可能となる。例えば、状態図または状態図の一部の状態、遷移、及びジャンクションは、この状態図またはその一部の正規化バージョンを与えるため正規化できる。正規化される状態図または状態図の一部は、本明細書で「再利用候補」と呼ばれる。
【００４６】
例えば、図3Aは、図2Aのアトミックサブチャート210及び230によって表現される再利用候補の正規化バージョンを示す。図3Aに示したように、この正規化バージョンはアトミックサブチャート300として表現されている。アトミックサブチャート300は、第1プレースホルダー状態312と第2プレースホルダー314とを含んでいる。4つのプレースホルダー遷移316、318、320、及び322が、再利用候補の遷移を表現するために設けられている。この正規化バージョンは、再利用候補の状態を表すプレースホルダー状態と、再利用候補のゼロ個以上の子状態を表すゼロ個以上のプレースホルダー子状態と、再利用候補のゼロ個以上の子遷移を表すゼロ個以上のプレースホルダー子遷移と、再利用候補のゼロ個以上の子ジャンクションを表すゼロ個以上のプレースホルダー子ジャンクションとを含むことができる。
【００４７】
再利用候補には（図2Aの「A」及び「B」のような）名前を付けることができ、正規化バージョンは、再利用候補の名前の代わりに再利用候補の記号を使用してもよい。例えば、図3Aのアトミックサブチャート300はαと命名されている。幾つかの実施形態では、正規化バージョンの名前はその正規化バージョンの構造に基づいて計算すればよい。例えば、正規化バージョンの構造は(図5に関連して後に詳述するように)シグニチャとして表すことができ、正規化バージョンの名前はシグニチャまたはそのシグニチャのハッシュのようなシグニチャの変形でよい。こうすることで、再利用候補の適切な正規化バージョンは、その再利用候補のシグニチャを計算し、正規化バージョンの名前のシグニチャを見つけるため幾つかの正規化バージョンを探索することによってより迅速に発見できる。
【００４８】
さらに、再利用候補は、変数や定数などのパラメータを含むことができ、それらは単独でまたは式の中で参照される。こうした正規化バージョンは、パラメータ、変数、及び式の正規化バージョンを含むことができる。例えば、図2Aの第1アトミックサブチャート210により表される再利用候補は次の式を含んでいる。
【００４９】
【数１】
0005567682.tif 000002
【００５０】
一方、図2Aの第2アトミックサブチャート230により表される再利用候補は次の式を含んでいる。
【００５１】
【数２】
0005567682.tif 000003
【００５２】
図3Aのアトミックサブチャート300は、これら式を、第1正規化変数332(「v1」と命名)を第1正規化定数334(「c1」と命名)に関連付ける正規化式330で置換している。正規化変数332は、再利用候補からの変数(再利用候補A及びBのそれぞれu1及びu2)を表し、正規化定数334は再利用候補からの定数(例えば0)を表す。
【００５３】
同様に、第2正規化変数336(「v2」)がアトミックサブチャート300に与えられており、この場合、第1及び第2出力パラメータ116及び118を表している。第2正規化定数338(「c2」)は第2定数215及び235を表し、第3正規化定数340は第3定数217及び237を表す。
【００５４】
図3Aに示した例では、第2正規化定数338及び第3正規化定数340は、同じ定数を用いて表してもよいことにも注意すべきである。これは、再利用候補において、第3定数217及び237は、第1定数215及び235を負バージョンにしたものにすぎないからである(すなわち、1でなく-1)。従って、第2正規化定数338はこの場合「c2」として表すことも可能であり、第3正規化定数340は「-c2」として表すことも可能である。しかし、図3Aに示した正規化バージョンでは、第2及び第3正規化定数338及び340は、異なる識別子が割り当てられている。何れのアプローチも許容でき、それぞれには異なる利益/トレードオフがある。例えば、第2正規化定数336及び第3正規化定数340が、(図3Aでなされるように)異なる識別子を割り当てられていれば、同じ正規化バージョンによってより多くの再利用候補を表現できる。すなわち、図3Aに示した正規化バージョンは、その第2状態が「y2
= 7」という式を含む第3再利用候補を表すことが可能であり、それは、第3正規化定数340に単純に7を代入できるからである。第3正規化定数340を第2正規化定数338の負バージョンとして表す正規化バージョンではそうはならない。他方で、第3正規化定数を第2正規化定数の負バージョンとして表現すれば、必要とする定数及び変数の数が少なくなり、状態図を単純化する助けとなる。
【００５５】
別の実施形態では、正規化パラメータに関する値を使用できる。例えば、正規化定数334に関し、再利用候補210及び230は両方とも値0を用いており、値0が正規化定数334の代わりに使用できる。
【００５６】
図3Aに示した正規化バージョンは、再利用候補210及び230の代わりに使用できる。しかし、この正規化バージョンは、それが使用可能となる前にパラメータ化する必要がある。すなわち、再利用候補は具体的なパラメータ(例えば「u1」)を含むが、正規化バージョンは正規化パラメータ(例えば「v1」)を参照する。再利用候補の代わりに正規化バージョンを使用するためには、この正規化バージョンは、正規化パラメータが再利用候補によって使用されるパラメータで置換されることを要件とする。これは、再利用候補と正規化バージョンとの間にパラメータ化リンクを設けることで実現できる。
【００５７】
図3Bは、図3Aの正規化アトミックサブチャート300のリンクされた正規化バージョン350を示す。リンクされた正規化バージョン350はリンク352を含み、これによって、それぞれの再利用候補のパラメータがこの正規化バージョンで使用できるようになる。
【００５８】
リンク352は、再利用候補と、パラメータが取り込まれた正規化バージョンとの間の論理的結合を表現でき、再利用候補を正規化バージョンで置換できるようになる。リンク352は再利用候補の正規化バージョンとともに格納してもよいし、再利用候補が存在する状態図に格納してもよい。例えば、再利用候補が識別されており、正規化バージョンとして実装されている場合、リンク352は表の形式とすることができ、正規化バージョンはこの表を更新して、どの変数及び定数が正規化変数及び定数により置換されるかを指定できる。下記に図3Aの正規化バージョンのこうした表の一例を示す。
【００５９】
【表１】
0005567682.tif 000004
【００６０】
別の実施形態では、パラメータ化リンク352は、元々の状態図で再利用候補と共に格納してもよい。第1アトミックサブチャート210(第1再利用候補A)に適したリンクで使用される表の一例は、下記に示す。
【００６１】
【表２】
0005567682.tif 000005
【００６２】
表2に表したもののようなリンクを格納するメモリオーバーヘッドは、表1に関するオーバーヘッドよりも大きくなることがある。しかし、正規化バージョンが多くの再利用候補を表現できる大きな状態遷移図については、表2で表したようなリンクを使用すると、各再利用候補にそれぞれのパラメータがより迅速に発見できるので、処理の利益がメモリオーバーヘッドを上回ることもある。
【００６３】
上述の例では、正規化バージョンの構造は再利用候補の構造の正確に一致している。従って、それぞれの再利用候補210及び230は、同じ数の遷移によって同じ様態で接続された同じ数の状態を含んでいる。しかし、この構造的同一性は必須ではない。例えば、図4Aは、同じ正規化状態図により置換できる構造的に非同一の再利用候補を示す。
【００６４】
図4Aに示すように、第1再利用候補410は、第1状態412と第2状態414とを含む。さらに、第1再利用候補410は、第1遷移416と、第2遷移418と、第3遷移420と、第4遷移422とを含む。
【００６５】
第2再利用候補430は、第1状態432と、第2状態434と、第3状態との3つの状態を含む。第2再利用候補も、第1遷移436と、第2遷移438と、第3遷移440と、第4遷移444と、第5遷移446とを含む。
【００６６】
従って、第1及び2再利用候補410及び430には、幾らかの構造的類似点と幾らかの構造的相違点がある。例えば、第1再利用候補410の第1及び2状態412及び414は、構造的に第2再利用候補の第1及び2再利用候補432及び434と構造的に類似している。さらに、第1再利用候補410の第1、第2、及び第3遷移416、418、及び420は、第2再利用候補430の第1、第2、及び第3遷移436、438、及び440と類似している。他方で、第1再利用候補410の第4遷移422は、第2再利用候補430には存在しないし、第2再利用候補430の第3状態442並びに第4及び第5遷移444及び446は第1再利用候補410には存在しない。
【００６７】
第1及び2再利用候補410及び430を同じ正規化バージョンに含めるには、再利用候補410及び430の和集合を正規化すればよい。図4Bは、図4Aの構造的に非同一の再利用候補410及び430の正規化バージョン450を示す。
【００６８】
この正規化バージョンでは、第1状態452及び第2状態454は、第1再利用候補410及び第2再利用候補430に共通しており、表現されている。同様に、この正規化バージョンは、第1遷移456と、第2遷移458と、第3遷移460とを含み、これらの遷移は、第1再利用候補410と第2再利用候補430との両方に共通している。
【００６９】
さらに、この正規化バージョンは、第1再利用候補410だけに存在する第4遷移462(図4Aでは破線で示した)も含んでいる。同様に、この正規化バージョンは、第2再利用候補430の第3状態442に対応する第3状態464(点線で示した)と、第2再利用候補430の第4及び第5遷移444及び446にそれぞれ対応する第5及び第6遷移466及び468(こちらも点線で示した)を含む。
【００７０】
従って、この正規化バージョンは、第1及び2再利用候補410及び430の和集合を表している。再利用候補410及び430の代わりにこの正規化バージョンを使用するためには、この正規化バージョンは、破線で示した要素(すなわち第1再利用候補410のみに存在する要素)を使うのか、点線で示した要素(すなわち、第2再利用候補430のみに存在する要素)を使うのかを示す命令とあわせて格納する必要がある。例えば、この正規化バージョンは、それが第1再利用候補410を表現するように呼び出されると、第4遷移462を使用させる命令を含むことができる。これら命令は、さらに、この正規化バージョンが第2再利用候補430を表現するよう呼び出されると、第3状態464、及び第5並びに第6遷移466及び468が使用されることを指定すればよい。
【００７１】
別の実施形態では、正規化バージョンは、例えば、再利用候補の状態、ジャンクション、及び遷移をそれらの生成指令によって、表現できる。例えば、再利用候補は一組の類似の状態からなるものとすることができ、正規化バージョンは、リンク情報に基づいて必要な数の状態を自動生成すればよい。
【００７２】
図4Bは、構造的に非同一の再利用候補を模倣する正規化バージョンを示すが、類似の技法を用いて意味論的に非同一の再利用候補を表すこともできる。すなわち、変数、パラメータ、及び/または式の和集合は、それぞれの再利用候補の適切な意味論を表すための命令と共に格納できる。例えば、第1再利用候補410の第1状態412は次の式を含んでいる。
【００７３】
【数３】
0005567682.tif 000006
【００７４】
しかし、第2再利用候補430の第1状態432は次の式を含んでいる。
【００７５】
【数４】
0005567682.tif 000007
【００７６】
よって、正規化第1状態452は、これら両方の式を、正規化様態で(すなわち、変数及び定数が正規化バージョンで置換されている)格納されたパラメータと、どちらの再利用候補が置換されるかに従って適切な式を使用するための命令と、とともに含むことができる。
【００７７】
上述のように、幾つかの実施形態では、正規化バージョンは、正規化バージョンにより置換されるのに適した1つまたは複数の再利用候補に基づいて生成される。図5は、状態図の正規化バージョンを生成するための代表的な手順を説明するフローチャートである。
【００７８】
ステップ5１0で、グラフィカル状態遷移図の一部を再利用候補として選択できる。例えば、ユーザが繰り返されることが分かっている状態を備えた状態図を設計しているような場合では、ユーザがこの部分を、グラフィカルユーザインターフェースを介して選択すればよい。
他の実施形態では、この部分は、プロセッサを使用するなどしてプログラム的に選択してもよい。プロセッサは、例えば、状態図を分析しかつ反復されている構造及び/または意味論情報を識別することによってこの部分を選択すればよい。例えば、プロセッサは、モデル内の選択した階層の構造及び意味論または状態、遷移、及びジャンクションのグループの構造及び意味論を識別できる。
【００７９】
幾つかの実施形態では、再利用候補の構造及び意味論の識別には、これら再利用候補の1つまたは複数の要素のシグネチャの特定が含まれることがある。例えば、再利用候補はソースモデル言語で表現でき、多数の異なるモデルで再利用するのに適したライブラリファイルなどのモデルファイルに格納してよい。こうした再利用候補がソースモデル言語で表現されていれば、そのソースモデル言語の要素(または要素の部分)を用いて再利用候補のシグニチャを特定できる。例えば、もしこの再利用候補が2つの状態(それぞれ、「A」及び「B」の識別名を備えている)と、4つの遷移(それぞれ、「1」、「2」、「3」、及び「4」の識別名を備え、遷移1は状態Aで始まり状態Bで終了し;遷移2は状態Bで始まり状態Aで終了し;遷移3はこの再利用候補の外部で始まり状態Aで終了し;遷移3はこの再利用候補の外部で始まり状態Bで終了する)とを含む場合、シグネチャは、例えば、「{A,
B}; {A→B, B→A,→A,→B}」の何らかの変形であり、これはソースモデル言語またはモデルに関連した他のソースの情報に基づいてシグネチャを表現する幾つかの方法の1つである。遷移条件、ジャンクション情報、及びモデルのパラメータに関する意味論情報など他の情報もシグネチャで用いてよい。
【００８０】
可能性がある再利用候補のシグニチャを他の再利用候補のシグニチャと比較できる。類似のまたは互換性があるシグニチャを備えた再利用候補を、共通の正規化バージョンによって置換することを目的として選択してよい。
【００８１】
ステップ512で、この部分を所定のサイズ閾値と比較できる。所定のサイズ閾値はユーザが設定してもよいし、プログラム的に設定してもよいし、デフォルト値などとしてもよい。所定のサイズ閾値は、小さい正規化バージョンが生成されないようにする補助となりうる。例えば、所定のサイズ閾値は、当該部分が再利用候補として考慮されるためにその部分に存在していなければならない状態及び/または遷移の最低数に設定すればよい。
【００８２】
ステップ512で選択した部分が小さすぎると判定された場合、処理はステップ510に戻り、モデルの別の部分を潜在的な再利用候補として選択できる。一方、ステップ512で、当該部分が所定のサイズ閾値を満足するか超えていると判断されると、処理はステップ514に進む。
【００８３】
ステップ514において、再利用候補の構造及び意味論を識別できる。再利用候補の構造は、例えば、状態、遷移、及び/またはジャンクションの数並びに連結性でよい。この構造は、例えば、どの状態が遷移を用いて他の状態に連結しているかと遷移の方向とを記述した配列またはマットリクスを用いて表せばよい。この配列またはマットリクスを他の構造に関する配列またはマットリクスと比較して、2つの再利用候補が構造的にどのように似ているか(またはある再利用候補が正規化バージョンと構造的にどのように似ているか)を特定できる。実施形態によっては、再利用候補の構造及びまたは意味論は、ステップ510で上述したもののようなシグネチャを用いて特定すればよい。
【００８４】
再利用候補の意味論は、変数または定数などのパラメータの数及びタイプ並びにそれらパラメータを関連付ける式の記述により表すことができる。
【００８５】
ステップ516では、再利用候補のパラメータ、状態、及び遷移を正規化できる。一実施形態では、再利用候補の(複数の再利用候補の構造が存在すれば複数候補の)状態及び遷移が次の様態で正規化される。深さ優先探索(DFS)アルゴリズムを用いて各再利用候補の状態階層を移動しつつ探索できる。各状態は、階層におけるその位置に基づいて番号付けできる。
【００８６】
それぞれの状態は、その状態への遷移及びその状態からの遷移を記述する遷移フローグラフに関連付けてもよい。それぞれの状態を訪れる際に、ローカルDFSをその状態の遷移フローグラフに用いて遷移に番号付けできる。
【００８７】
状態及び遷移に番号が付けられると、状態の名前を、それら状態の名前の正規化バージョンを表す状態番号で置換できる。再利用候補の遷移は名前があってもなくてもよい。遷移が名前に関連付けられていれば、遷移の名前は、DFSで生成される遷移番号で置換できる。遷移番号は、遷移の名前の正規化バージョンを表現する。遷移が名前に関連付けられていなければ、遷移とDFSにおいて生成される番号との間に論理結合を形成できる。
【００８８】
さらに、再利用候補の状態及び遷移のパラメータも次の様態で正規化できる。DFSを用いて状態階層を訪れることができる。訪れた状態毎に、その状態が実行する動作で用いられる記号を識別し、それらが発見される順番に番号付けできる。
【００８９】
それぞれの状態について、ローカルDFSを実行してその状態に関連したそれぞれの遷移を訪問できる。それぞれの遷移について、遷移条件及び動作で用いられる記号を、それらが発見される順番に番号付けできる。
【００９０】
これら記号の番号付けが完了すると、これらシンボルはDFSで生成される記号番号に置換できる。記号番号は、パラメータ名の正規化バージョンを表現する。
【００９１】
ステップ518では、状態図の他の部分を正規化すべきか否かが判断される。例えば、ユーザがステップ510で状態遷移図の2つ以上の部分を選択するか、プロセッサが状態図に反復構造が存在すると判断すれば、状態遷移図の複数の部分を正規化できる。ステップ518の答えが「いいえ」であれば、処理はステップ526に直接進み、その部分の正規化バージョンを生成すればよい。
【００９２】
一方で、ステップ518の答えが「はい」であれば、ステップ520において第2再利用候補の構造及び意味論が特定される。ステップ522では、第2再利用候補のパラメータ、状態、及び遷移がステップ516と同様の様態でパラメータ化される。
【００９３】
ステップ524において、これら2つ以上の再利用候補は構造的に同一かどうかが判断される。例えば、これら構造がステップ514及び520において配列またはマットリクスを特定することにより、または再利用候補のシグネチャをその他の方法で計算することにより識別されていれば、配列、マットリクス、またはシグネチャを比較して、これら再利用候補が構造的に同一かどうかを特定できる。
【００９４】
ステップ524の答えが「はい」であれば、これら再利用候補の構造と同一の単一構造を備えた正規化バージョンが生成される。該当する場合は、この正規化バージョンは、ステップ516及び522で生成したパラメータ、状態、及び遷移を表現する正規化パラメータ、状態、及び遷移を含むことができる。
【００９５】
一方で、ステップ524の答えが「いいえ」であれば、処理はステップ528に進み、これら再利用候補の和集合が求められる。この和集合は単一の正規化バージョンとして格納され、ステップ530において命令が求められ格納される。これら命令は、例えば、この正規化バージョンが状態図で使用される文脈によって、正規化バージョンのどの部分がどの状況で使用されるべきかを指定する。
【００９６】
処理がステップ526へ進んでもステップ528へ進んでも、正規化バージョンの構造は幾つかの方法で確認できる。例えば、再利用候補の状態、遷移、及びジャンクションの数並びに連結性を確認できる。さらに、もしこの再利用候補が階層的状態遷移図に存在する場合は、再利用候補の階層の数及び連結性を求めることもできる。例えば、再利用候補は、ゼロ個以上の状態、ゼロ個以上の遷移、ゼロ個以上のジャンクション、ゼロ個以上の子状態、ゼロ個以上の子遷移、ゼロ個以上の子ジャンクションなどを備えることがある。こうした再利用候補の正規化バージョンは、状態を表すプレースホルダー状態と、遷移を表すゼロ個以上のプレースホルダー遷移と、ジャンクションを表すゼロ個以上のプレースホルダージャンクションと、ゼロ個以上の子状態を表すゼロ個以上のプレースホルダー子状態と、ゼロ個以上の子遷移を表すゼロ個以上のプレースホルダー子遷移と、ゼロ個以上の子ジャンクションを表すゼロ個以上のプレースホルダー子ジャンクションとを含むことができる。
【００９７】
幾つかの実施形態では、再利用候補の部分(または再利用候補全体)に名前を付けてもよい。再利用候補の正規化バージョンは、正規化バージョンのこれら部分またはその全体の名前を含むこともできる。再利用候補と正規化バージョンとの置換を容易にするため、それぞれの部分が意味論的に等価であれば、これら部分は同じまたは似た名前を割り当てればよい。例えば、両方の再利用候補が同一の正規化パラメータを使用して正規化できる式を含んでいれば、その式には正規化バージョンにおいて代表的な名前または記号を割り当てればよい。将来、可能性がある再利用候補が正規化用に考慮の対象となれば、その可能性がある再利用候補の正規化された意味論を特定することによって、適切な名前を生成し、正規化バージョンの意味論的名前と比較できる。これら2つが一致すれば、その可能性がある再利用候補は、正規化バージョンによって正規化でき、同じ意味論を維持できる。
【００９８】
ステップ520乃至530は、3つ以上の再利用候補に対応するため必要に応じて繰り返せばよい。オプションで、各再利用候補が正規化されると(例えば、ステップ516及び522)、こうした再利用候補の正規化バージョンを比較して、正規化バージョンが実際に同一かどうかを確かめるようにしてもよい。
【００９９】
ステップ532では、正規化バージョンのシグネチャを計算し、ステップ534で正規化バージョンとともに格納できる。このシグネチャは、例えば、特定の再利用候補の構造が分かっていれば、正規化バージョンを迅速に呼び戻し可能とする構造的シグネチャでよい。ステップ536で処理は終了する。
【０１００】
再利用候補の正規化バージョンが利用可能であれば、状態図は、この再利用候補を正規化バージョンで置き換えることによって単純化できる。図6は、再利用候補を状態図の正規化バージョンで置き換える代表的な手順を示すフローチャートである。
【０１０１】
ステップ610において、2つ以上の再利用候補を識別できる。こうした再利用候補は、例えばユーザまたはプロセッサによって識別できる。これら再利用候補は、それらの構造的及び/または意味論的類似性に基づいて識別できる。これら再利用候補は、状態、遷移、またはジャンクションのような、状態遷移図モデルにある少なくとも1つの要素を含むことができる。
【０１０２】
幾つかの実施形態では、再利用候補の識別には、2つの再利用候補間の類似性を表す類似性基準値の算出が含まれることがある。従って、一実施形態では、ステップ612で、再利用シグネチャをこれら再利用候補に割り当てることができる。これら再利用シグネチャは、再利用候補の構造及び/または意味論を表すことができる。例えば、再利用シグネチャは、再利用候補により取り込まれた任意の階層に加え再利用候補の状態、遷移、及びジャンクションの数並びに連結性を示すマットリクスまたは配列として表せばよい。2つの再利用候補が置換できる程類似しているかを確認するために類似性基準値を比較でき、これは、例えば、再利用シグネチャにおける差を所定の閾値と比較すればよい。
【０１０３】
ステップ612に替えてまたはそれに加え、ステップ614で、再利用候補において状態のペアのシグナル距離を求めることができる。シグナル距離は、2つの要素間の類似性を求めるための情報理論では周知の測定法である。例えば、再利用候補の構造及び/または意味論は列として表すことができ、2つの列間の差を求めることができる。ステップ616では、シグナル距離が所定閾値より小さい2つの候補を正規化候補として選択できる。
【０１０４】
再利用候補間の類似性を計算するのにどのような方法を用いるかに関わらず、ステップ618で、正規化の対象となるに十分なほど類似した(例えば、所定の類似性許容差以内)2つ以上の再利用候補を選択し、正規化できる。これらの再利用候補は、図5に関して上述したように正規化できる。正規化バージョンは、例えばアトミックサブチャートとして表現できる。
【０１０５】
ステップ620では、この正規化バージョンのパラメータ化リンクを生成できる。正規化バージョンの正規化パラメータをパラメータ化リンクで指定された情報で置換することによって、正規化パラメータを用いてすべての再利用候補を表すことができる。従って、ステップ622では、1つまたは複数の再利用候補をリンクされた正規化パラメータで置換できる。
【０１０６】
オプションで、ステップ624において、正規化バージョンを含む状態図のコードを生成できる。例えば、このコードは、電子装置実行可能命令を含むソースコードでよく、このソースコードは、実行すると状態図で表現された動的システムをシミュレートするシミュレーションを電子装置に実行させる。ステップ626では、正規化バージョンまたはパラメータ化リンクが修正される(従って、基礎をなす再利用候補の機能を変更する)場合、ステップ628でモデルのコードを再生成する必要があるかもしれない。しかし、正規化バージョンは状態図で使用されるため、正規化バージョン(または変更された再利用候補を個別に)のコードのみが再生成され、状態図の残り部分のコードは再生成されない。従って、再利用候補が徐々に変更されるときにモデル全体のコードを再生成する必要はない。
【０１０７】
上述の動作(act)の1つまたは複数は、処理論理回路が実行できるコンピュータ実行可能命令として符号化できる。これらコンピュータ実行可能命令は、1つまたは複数の非一時的コンピュータ可読媒体に格納できる。上述の動作の1つまたは複数は、適切にプログラムされた電子装置で実行できる。図7Aは、本明細書に記載された1つまたは複数の動作で使用するのに適した電子計算装置700を示す。
【０１０８】
計算装置700は、コンピュータ、ワークステーション、サーバ、ネットワークコンピュータ、量子コンピュータ、光コンピュータ、インターネット機器、モバイル装置、ページャ、タブレットコンピュータ、スマートセンサ、特定用途向け処理装置等を含むがそれらには限定されない様々な形式を取りうる。
【０１０９】
図7Aに示した計算装置700は例示的なものであって他の構成としてもよい。例えば、計算装置700の代替的な実装は、図7Aの構成に比べ少ない構成要素、多くの構成要素、または異なる様態で構成された構成要素を備えることができる。図7A及び/または本明細書に示した他の図の構成要素は、ハードウェア、ソフトウェアに基づく論理回路、及び/またはハードウェアとソフトウェアとに基づく論理回路の組合せである論理回路(すなわちハイブリッド論理回路)を用いて実装すればよく、従って、図7A及び/または他の図に示した構成要素は特定種類の論理回路に限定されるものではない。
【０１１０】
プロセッサ702は、計算装置700のために命令を実行するハードウェアまたはソフトウェアに基づく論理回路を含むことができる。一実装例では、プロセッサ702は、マイクロプロセッサのような1つまたは複数のプロセッサを含むことができる。一実装例では、プロセッサ702は、少なくともアプリケーションの一部を実行可能なデジタル信号プロセッサ(DSP)、書替え可能ゲートアレイ(FPGA)、グラフィック処理装置(GPU)、特定用途向けIC(ASIC)、汎用プロセッサ(GPP)等のハードウェアを含むことができる。別の実装例では、プロセッサ702は、メモリ704に格納されたソフトウェアまたは計算装置700を制御するための他のプログラムを実行するための単一のまたは複数のコア703を含むことができる。
【０１１１】
計算装置700は、本発明の1つまたは複数の実施形態を実装可能な1つまたは複数のコンピュータ実行可能命令またはソフトウェアを格納する1つまたは複数の有形の非一時的コンピュータ可読記憶媒体を含むことができる。メモリ704は、コンピュータシステムメモリ又はダイナミックRAM(DRAM)、スタティックRAM(SRAM)、イーディーオーRAM(EDO RAM)などのランダムアクセスメモリ(RAM)を含むことができる。メモリ804は、他の種類のメモリ又はそれらの組合せを含むこともできる。
【０１１２】
1つまたは複数のプロセッサ702は、メモリ704にロードされた命令を実行するための仮想計算機(VM)750を含むこともできる。仮想計算機750を含めるのは、多数のプロセッサで実行中のプロセスを処理して、そのプロセスが多数の計算リソースでなく単一の計算リソースのみを使用しているかのようにするためである。インフラストラクチャ及び計算装置700のリソースが動的に共有できるよう、仮想化をこの計算装置で使用してもよい。多数のVM705は単一のプロセッサ702に常駐させておいてもよい。
【０１１３】
ハードウェアアクセラレータ706は、ASIC、FPGA、または他の装置で実装できる。ハードウェアアクセラレータ706を用いて計算装置700の全体的な処理速度を高速化できる。
【０１１４】
更に、計算装置700は、標準電話回線、LAN又はWANリンク(例えば、T1、T3、56kb、X.25)、ブロードバンド接続(例えば、デジタル総合サービス網(ISDN)、フレームリレー、非同期転送モード(ATM)、ワイヤレス接続(例えば、802.11)、高速内部伝送路(例えば、InfiniBand、ギガビット・イーサネット（登録商標）、Myrinet)または上述のいずれかの組み合わせ或いは全てを介してローカルエリア・ネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはインターネットにインターフェースをとるネットワークインターフェース708を含むことができる。ネットワークインターフェース708は、内蔵式ネットワークアダプタ、ネットワーク・インターフェースカード、パーソナル・コンピュータ・メモリ・カード国際協会(PCMCIA)ネットワークカード、ユニバーサル・シリアルバス(USB)ネットワークアダプタ、モデム、またはこの計算装置700を任意タイプのネットワークにインターフェース接続するのに適した通信能力がありかつ上述の演算を実行できる他の任意装置を含むことができる。
【０１１５】
計算装置700は、例えばユーザからの入力を受信できるキーボード、マルチポイント・タッチインターフェース、ポインティングデバイス(例えばマウス)、ジャイロスコープ、加速度計、ハプティックデバイス、接触型装置、神経装置、マイクロフォン、またはカメラなどの1つまたは複数の入力装置710を含むことができる。計算装置700は、他の適切な入出力周辺装置を含んでもよいことは注目すべきである。
【０１１６】
入力装置710によって、ユーザは、視覚表示装置714に示される入力を与えることができる。グラフィカルユーザインターフェース（ＧＵＩ）716を表示装置714上に表示できる。
【０１１７】
記憶装置718をコンピュータ700に関連付けてもよい。記憶装置718は、例えば、ハードディスク、CD-ROM、DVD、ジップドライブ、テープ駆動機構、または情報を格納可能な他の適切な有形のコンピュータ可読記憶媒体でよい。記憶装置718は、モデリングアプリケーションまたは環境720(例えば、Simulink(登録商標)環境またはStateflow(登録商標)環境)のようなアプリケーション・ソフトウェア・プログラムを格納したり、リポジトリ724及びオペレーティングシステム(OS)を格納したりするのに有用となることがある。モデリング環境の例としては、例えば、マスワークスインク社(The
MathWorks, Inc.)から入手可能なStateflow(登録商標)内で見られるもののような状態マシン図環境や、統一モデリング言語(UML)図表記環境のような図表記環境(
diagramming environments)や、他のグラフィカルモデリング環境が含まれる。これらソフトウェアプログラムは、本発明の1つまたは複数の実施形態を実装するコンピュータ実行可能命令を含むことができる。
【０１１８】
計算装置700はオペレーティングシステム(OS)726を実行できる。OS726の例には、Microsoft(登録商標)のWindows(登録商標)オペレーティングシステム、Unix（登録商標）及びLinux（登録商標）オペレーティングシステム、Macintoshコンピュータ用のMacOS(登録商標)、Symbian
OSのような埋込オペレーティングシステム、リアルタイム・オペレーティングシステム、オープンソース・オペレーティングシステム、所有権を主張できるオペレーティングシステム、モバイル計算装置用のオペレーティングシステム、または当該計算装置上でラン可能かつ本明細書に記載する動作を実行可能な他のオペレーティングシステムが含まれる。このオペレーティングシステムはネイティブモードで実行しても、エミュレートモードで実行してもよい。
【０１１９】
本発明の1つまたは複数の実施形態は、1つまたは複数の非一時的コンピュータ可読媒体上で実施できるコンピュータ実行可能命令及び/またはデータを用いて実装できる。この媒体は、ハードディスク、コンパクトディスク、デジタル・ビデオ・ディスク、フラッシュメモリカード、プログラム可能読出し専用メモリ(PROM)、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、磁気抵抗ランダムアクセスメモリ(MRAM)、磁気テープ、または他のコンピュータ可読媒体でよいが、これらに限定されるものではない。
【０１２０】
本発明の1つまたは複数の実施形態は、任意のプログラミング言語で実装できる。使用可能な言語の幾つかの例としては、Python、C、C++、C#、SystemC,
Java（登録商標）, Java（登録商標）script、ハードウェア記述言語(HDL)、統一モデリング言語(UML)、及びプログラマブルロジックコントローラ(PLC)言語が含まれるが、それらに限定されるものではない。さらに、本発明の1つまたは複数の実施形態は、ハードウェア記述言語または計算を規定可能な他の言語で実装できる。本発明の1つまたは複数の実施形態は、オブジェクトコードとして1つまたは複数の媒体に格納できる。本発明の1つまたは複数の実施形態を実装する命令は、1つまたは複数のプロセッサによって実行できる。本発明の複数の部分は、プロセッサ以外の1つまたは複数のハードウェア構成要素で実行する命令としてよい。
【０１２１】
図7Bは、図7Aのモデリング環境720及びリポジトリ724をより詳細に示す。モデリング環境720は、ユーザが動的システムを表現するブロック図モデルを作成かつ修正可能とするエディタを含むことができる。
【０１２２】
さらに、モデリング環境720は、グラフィカル・エンティティに関連したデータのユーザによる作成及び格納も可能とする。このモデリング環境は、エディタとの対話を可能とする一組の命令をサポートするテキスト形式インターフェースを含むことができる。ユーザは、このテキスト形式インターフェースを用いて、モデルの図に自動編集処理を実行可能な特殊スクリプトを書くことができる。ユーザは、モデルのキャンバスとして機能できる1つまたは複数のウィンドウと対話できる。このモデルは、サブシステム及びサブチャートを使用することで多数の階層レベルに区分でき、このモデルの階層の異なるレベルは異なるキャンバスに表示できる。
【０１２３】
ユーザは、モデリング環境720内の1つまたは複数のインターフェースツールを用いて図モデルを作成できる。例えば、インターフェースツールは、パレット、結線ツール、注釈ツール、フォーマッティングツール、属性編集ツール、保存／ロードツール、及びパブリッシングツールを含むことができる。このパレットは、図を構築するためにユーザが使用可能な定義済みエンティティのライブラリである。ユーザはこのパレットをカスタマイズして、(a)エンティティをなんらかのカスタムフォーマットに再編成し、(b)1つまたは複数のエンティティを削除し、かつ/または(c)自分で設計した1つまたは複数のカスタムエンティティを追加したりできる。このパレットにより、人間とマシンと間の仲立ちをするインターフェース（例えばマウス又はキーボードなど）を用いて、1つまたは複数のエンティティをパレットからウィンドウに表示できるキャンバスにドラッグできる。
【０１２４】
モデリング環境720は、OS726などのオペレーティングシステムの制御下で実行すればよい。モデリング環境720は、例えば、ユーザによるシステムのモデル752の構築と実行を可能とするものである。モデリング環境720は、テキストベースのモデリング環境、グラフィカルモデリング環境、または他のモデリング環境を含むことができる。本発明の1つまたは複数の実施形態を実装できるモデリング環境の例には、マスワークスインク社(The MathWorks, Inc.)から入手可能なMATLAB(登録商標)及びSimulink(登録商標)、Stateflow(登録商標)、Simscape(商標)、並びにSimMechanics(商標);
ナショナルインスツルメンツ社(National Instruments, Inc.)から入手可能なLabVIEW(登録商標)またはMATRIXx; ウルフラム・リサーチ社（Wolfram Research, Inc.）から入手可能な Mathematica(登録商標); マスソフトエンジニアリング&エデュケーション社(Mathsoft
Engineering & Education Inc.)から入手可能なMathcad;
ウォータールーマップル社(Waterloo Maple Inc.)の事業部であるマップルソフト(Maplesoft)から入手可能なMaple(商標); ドイツ、ハンブルグのジェントルウェア・アーゲー社(Gentleware, AG)によるPoseidon
for UML; テキサス州プラノ所在のノーマジック社(NoMagic, Inc.)によるMagicDraw;
スウェーデンのコムソルAB社(Comsol AB)から入手可能なComsol;
フランス、ルシェスナイセデックス(Le
Chesnay Cedex)所在のフランス国立コンピュータ科学及び制御研究所(The French
National Institution for Research in Computer Science and Control) (INRIA)から入手可能なScilab(商標); グヌープロジェクト(GNU Project)から入手可能なGNU Octave;メジャーメント・コンピューティング社(Measurement Computing)から入手可能なSoftWIRE; ビジュアル・ソリューション社(Visual Solutions)から入手可能なVisSim; ダルサ・コレコ社(DALSA
Coreco)から入手可能なWiT; アグリエント社(Agilent)から入手可能なVEE Pro; ダイナミズムAB社(Dynasim AB)から入手可能なDymola;
イマジン・ザット社(Imagine That, Inc.)から入手可能なExtend; フランス国立コンピュータ科学及び制御研究所(INRIA)から入手可能なScicos;MSC.ソフトウェア社(MSC.Software Corporation)から入手可能なMSC.Adams(商標);
IBM社(International Business Machines Corporation)から入手可能なRhapsody(商標)及びRational(商標)
; アーティザン・ソフトウェア・ツール社(ARTiSAN Software Tools, Inc.)から入手可能なARTiSAN Studio; 及びエステレル・テクノロジーズ社(Esterel Technologies, Inc.)から入手可能なSCADE(商標)が含まれる。
【０１２５】
モデリング環境720では、モデル722の1つまたは複数の命令が生成される。こうした命令は、例えば、このモデルをシミュレートするため、または対象装置上でモデルを実行するためのソースコードや中間表現などでよい。生成された命令はリポジトリ724に格納すればよい。モデリング環境720は、リポジトリ724に以前に格納された命令を用いてモデル722の処理を可能とする。
【０１２６】
モデリング環境720は、リポジトリ724と通信できる。モデリング環境720は、モデル722の命令を生成し、リポジトリ724にそれらの命令を格納できる。これら命令は、例えば、関数756としてソフトウェアでリポジトリ724に格納できるこれら命令は、ハードウェアで実装したプロセスなど、リポジトリ724に別の形式で格納してもよい。リポジトリ724に格納された命令は、他のモデルを処理するためのメモリまたは他の要件を軽減するため、他のモデルの処理で共有してもよい。
【０１２７】
リポジトリ724は、メモリまたは記憶装置に格納できる情報の集まりを含むことができる。リポジトリ724は、例えば、関数のコードと1つまたは複数の関数のチェックサムとを備えたデータベースでよい。さらに、リポジトリ724は、チャートまたはチャートの部分の1つまたは複数の正規化バージョンを、例えばライブラリ764に格納できる。
【０１２８】
モデリング環境720は、ユーザインターフェース758及び実行エンジン760を含むことができる。モデリング環境720は、ユーザがユーザインターフェース758を用いてシステムのモデル722を構築可能とする。モデル722は、例えば、状態及び遷移を含むことができる。
【０１２９】
実行エンジン760は、モデル722をコンパイルかつリンクして、モデルを実行するための実行可能形式の命令を生成する。モデル722を実行してモデル722により表現されるシステムをシミュレートできる。モデル722をシミュレートすることにより、モデル722により表現されるシステムの挙動を確認できる。
【０１３０】
実行エンジン760は、モデルを実行可能形式に変換できる。この実行可能形式は、1つまたは複数の実行可能命令を含むことができる。実行エンジン760は、モデルをコンパイルかつリンクして実行可能形式のモデルを生成できる。この実行可能形式のモデルを実行してモデルの挙動を確認できる。コンパイルには、モデル内の1つまたは複数の構成要素接続(component
connections )の完全性及び妥当性の検査が含まれることがある。ここでは、実行エンジン760は、モデル内の1つまたは複数の構成要素を、1つまたは複数の構成要素方法実行(component
method execution)リストを生成するのに使用可能な階層リストにソートできる。モデルをリンクする際に、実行エンジン760は、モデルのコンパイルからの１つまたは複数の結果を用いて、例えば、この実行可能形式のモデルを実行するために必要となりうるメモリを割り当てることができる。リンクの実行には、この実行可能形式の実行に使用できる1つまたは複数の構成要素方法実行リストの生成も含まれうる。構成要素方法実行リストを生成する理由は、モデルの構成要素はサンプルヒットがあった時に、タイプごとに（構成要素ごとでなく）構成要素方法を実行するからである。実行エンジン760は、例えば、ユーザが指定する実行開始時刻から停止時刻までまたは実行が中断されるまで、連続的な時間ステップを介してこれら命令を反復的に実行できる。
【０１３１】
実行エンジン760は、モデルの一部または全部の解釈を実行可能である。同様に、実行エンジン760は、モデルの一部または全部のコンパイルまたは高速化された実行も可能である。解釈とコンパイルまたは高速化された実行との組合せも実行エンジン760により可能としてもよい。
【０１３２】
図8は、本発明の1つまたは複数の実施形態を実現するネットワーク実装を示す。システム800は、計算装置700と、ネットワーク812と、サービスプロバイダ813と、ターゲット環境814と、クラスター815とを含むことができる。図8の実施形態は例示的なものであって、他の実施形態はより多くの装置、少ない装置、または図8の構成とは異なる構成の装置を含むことができる。
【０１３３】
ネットワーク812はデータを起点から行き先まで移送できる。ネットワーク812の実施形態は、ルータ、スイッチ、ファイヤーウォール、及び/またはサーバ(図示しない)等のネットワーク装置並びに接続(例えばリンク)を使用してデータを移送できる。本明細書において「データ」は、1つまたは複数のネットワーク及び/または装置(例えば、計算装置700、サービスプロバイダ813など)における使用に適合した実質的に任意の形式を備えた任意タイプの機械可読情報を指すことがある。
データはデジタル情報またはアナログ状態を含むことができる。さらに、データはパケット化しかつ/またはパケット化しなくてもよい。
【０１３４】
ネットワーク812はワイヤード導体及び/または光ファイバを用いたハードワイヤードネットワークとしてもよいし、かつ/または自由空間光、無線周波数(RF)、かつ/若しくは音響透過路を用いたワイヤレスネットワークでもよい。一実装例では、ネットワーク812は、インターネットのような実質的に開放された公衆網でよい。別の実装例では、ネットワーク812は、企業仮想ネットワーク(corporate
virtual network)のようなより制限されたネットワークでもよい。ネットワーク812は、インターネット、ローカルエリア・ネットワーク（LAN）、ワイワドエリア・ネットワーク（WAN）、メトロポリタン地域ネットワーク(MAN)、ワイヤレスネットワーク(IEEE
802.11、Bluetooth（登録商標）などを用いたもの)などを含むことができる。ネットワーク912は、共通オブジェクト・リクエスト・ブローカ・アーキテクチャ(CORBA)または分散コンポーネント・オブジェクトモデル(DCOM)のようなミドルウェアを用いてもよい。本明細書に記載したネットワーク及び/またはネットワーク上で動作する装置の実装例は、特定のデータタイプ、プロトコル、アーキテクチャ/構成などに限定されるものではない。
【０１３５】
サービスプロバイダ813は、サービスを他の装置に利用可能とする装置を含むことができる。例えば、サービスプロバイダ813は、1つまたは複数のサービスを、サーバ及び/または他の装置を用いる行き先に提供するエンティティ(例えば、個人、企業、教育機関、政府機関など)を含む。サービスには、演算(例えば最適化演算)を行うため行き先によって実行される命令が含まれうる。代替的には、サービスには、行き先のために演算を行うため行き先に代わって実行される命令が含まれうる。
【０１３６】
ターゲット環境814は、ネットワーク812を介して情報を受信する装置を含むことができる。例えば、ターゲット環境814は、コンピュータ710からユーザ入力を受信する装置でよい。
【０１３７】
クラスター815は、複数の実行回路(UE)816を含み、コンピュータ800及び/またはサービスプロバイダ813などの他の装置に代わって処理を実行できる。例えば、クラスター815は、コンピュータ700から受信した演算を並列処理できる。クラスター815は、単一の装置若しくはチップまたは複数の装置若しくはチップに存在するUE816を含むことができる。
【０１３８】
実行回路(UE)816は、要求装置のような装置に代わって演算を行う処理装置を含むことができる。UEは、マイクロプロセッサ、利用者書き込み可能グリッド・アレイ(FPGA)、及び/またはその他の種類の処理装置でよい。UE816は、動作環境用のコードなどのコードを含むことができる。例えば、UEは並列処理動作に関わる動作環境の一部を実行できる。サービスプロバイダ813はクラスター815を動作させ、コンピュータ810に対して、加入に基づき(例えばウェブサービスを介して)対話型最適化機能を与えることができる。
【０１３９】
実行回路(UE)は、The MathWorks, Inc.社のMATLAB(登録商標)のような製品に遠隔/分散処理能力を与えることができる。ハードウェア実行回路は、並列プログラミング動作を実行かつ/またはそれに参加できる装置(例えば、ハードウェアリソース)を含むことができる。例えば、ハードウェア実行回路は、それが受け取った(例えば直接的にまたはプロキシを介して受け取った)要求及び/またはタスクに応答して、並列プログラミング動作を実行かつ/またはそれに参加できる。ハードウェア実行回路は、1つまたは複数の装置を使って、実質的に任意種類の並列プログラミング(例えば、タスク、データ、ストリーム処理など)を実行かつ/またはそれに参加できる。例えば、ハードウェア実行回路は、多数のコアまたは複数のプロセッサを含む単一の処理装置を含むことができる。さらに、ハードウェア実行回路は、書替え可能ゲートアレイ(FPGA)、特定用途向けIC(ASIC)、汎用プロセッサ(GPP)、または他のプログラム可能装置などのプログラム可能装置を含むことができる。ハードウェア実行回路で使用される装置は、格子状、環状、星状、または他の構成など多数の異なる構成(すなわちトポロジ)で配置できる。ハードウェア実行回路は、処理動作の実行時に1つまたは複数のスレッド(またはプロセス)をサポートできる。
【０１４０】
ソフトウェア実行回路は、1つまたは複数の並列プログラミング動作を実行かつ/またはそれに参加できるソフトウェアリソース(例えば、技術計算環境)を含むことができる。ソフトウェアェア実行回路は、プログラム及び/またはそのプログラムの1つまたは複数部分の受信に応答して、1つまたは複数の並列プログラミング動作を実行かつ/またはそれに参加できる。ソフトウェア実行回路は、1つまたは複数のハードウェア実行回路を用いた、異なる種類の並列プログラミングを実行かつ/またはそれに参加できる。ソフトウェア実行回路は、処理動作の実行時に、1つまたは複数のスレッド及び/またはプロセスをサポートできる。
【０１４１】
「並列プログラミング」という用語は、例えば、タスク並列プログラミング、データ並列プログラミング、及びストリーム並列プログラミングなど多くの種類の並列プログラミングを含むと理解してよい。並列プログラミングは、多数のリソース(例えば、ソフトウェア実行回路、ハードウェア実行回路、プロセッサ、マイクロプロセッサ、クラスター、及びラブ)にわたって分散可能な様々な種類の処理を含んでよく、同時に実行してもよい。
【０１４２】
例えば、並列プログラミングは、多くのタスクが多くのソフトウェア実行回路において同時に処理されるタスク並列プログラミングを含むことができる。タスク並列プログラミングでは、１つのタスクは、例えば、同時に実行中の他のタスクから独立して処理できる。
【０１４３】
並列プログラミングはデータ並列プログラミングを含むことができ、ここでは、データ(例えばデータセット)は、例えばソフトウェア実行回路を用いて並列に実行可能な複数の部分にパースできる。データ並列プログラミングでは、ソフトウェア実行回路及び/またはデータ部分は、処理が進行する過程で互いに通信できる。
【０１４４】
並列プログラミングは、ストリーム並列プログラミング(パイプライン並列プログラミングとも呼ばれる)を含むことができる。ストリーム並列プログラミングは、例えば、直列に(例えば連続して)配置された多くのソフトウェア実行回路を用いるもので、第1ソフトウェア実行回路が、第2ソフトウェア実行回路に与えられる第1の結果を生成し、第1の結果を与えられると第2ソフトウェア実行回路が第2の結果を生成する。ストリーム並列プログラミングは、タスク割り当てが無閉路有向グラフ(DAG)または環状グラフで表現できる状態を含むこともできる。
【０１４５】
他の並列プログラミング技法には、タスク、データ、及び/若しくはストリーム並列プログラミング技法のみを組み合せ、または他の処理技法と組み合わせてハイブリッド並列プログラミング技法を作り出すことが含まれることがある。
【０１４６】
本明細書に記載された技法及び実施形態は、ユーザに、再利用候補の正規化バージョンを生成しかつ多くの種類の使用シナリオで使用する機能を提供する。
【０１４７】
例えば、多人数が同一の状態遷移図に対して作業している場合、第1ユーザが正規化バージョンに施した変更が自動的に解決されうる。従って、この正規化バージョンまたはそれに基づいて実装された1つまたは複数の再利用候補と対話している第2ユーザには、状態遷移図の最新バージョンが提示される。さらに、こうした変更は異なるユーザ間で比較的迅速に伝播されるので、2名のユーザからの異種の変更が混ざり合うことはない。
【０１４８】
さらに、任意ユーザが複雑な状態遷移図に変更を施した場合、そのユーザは、この状態遷移図をシミュレートすることで変更を検査したいと望むこともあろう。シミュレーションの一部として、この状態遷移図をコンパイルしてよい。このユーザが状態遷移図の小さな部分にのみ変更を施せば、状態遷移図全体を再コンパイルできる。従って、このユーザは、各斬新的な変更に関して状態遷移図全体を再コンパイルしてもよいし、再コンパイルの前に多数の変更をバッチで行ってもよい。本発明に記載された正規化バージョンを用いれば、正規化バージョンだけが再コンパイルされるので、斬新的な変更は迅速に実装かつ検査されうる。
【０１４９】
状態遷移図の1つの状態への変更は、関連した状態に関して生成されたコードに影響を及ぼすことがある。従って、もしコードが状態遷移図に関して承認されていれば、そのコードの任意部分に軽微な変更がされたときには、そのコード全体を再承認すべき場合もある。本発明に記載された正規化バージョンは別個のライブラリまたはファイルに格納して、ある程度のモジュール性を確保してもよい。従って、状態遷移図の一状態に施した変更は、正規化バージョンに関して生成されたコードに影響を与えないこともあり、その正規化バージョンに関して生成されたコードを備えたファイルを再承認しなくてもよいこともある。
【０１５０】
また、ユーザは、モデル全体にわたって何度も利用される単一の状態または複数状態の集まりを含むコードを書いてもよい。本発明の正規化バージョンを用いれば、類似の状態が変数及び定数などの異なるパラメータを含んでいても、ユーザはそれら類似の状態を再利用できる。結果として、反復部分が少ないコードが、正規化バージョン(モデル全体にわたるこのコードの多数のコピーでなく)に基づいて生成されうる。
【０１５１】
上述の説明は、本発明の様々な実施形態を例示かつ記述するものだが、全体を網羅することを意図したものでなく、本発明を開示された通りの形式に限定することを意図したものでもない。修正及び変更は上述の教示を参照すれば可能であるし、本発明を実行することで発見されることもあろう。例えば、一連の動作を上述してきたが、これら動作の順番は、他の実現例では本発明の原理に一致するように修正してよい。さらに、非独立動作は並列で実行してもよい。
【０１５２】
さらに、本発明の原理と矛盾しない1つまたは複数の実現例も、図面に示しかつ本明細書に記載されたもの以外の1つまたは複数の装置及び/または構成を用いて、本発明の精神から逸脱することなく実現できる。具体的な導入様態及び/または用途によっては、1つ若しくは複数の装置及び/または構成要素を、図示した実現例に追加かつ/または削除してもよい。また、1つまたは複数の実現例はハードウェアの特定の組合せに限定されるものではない。
【０１５３】
さらに、本発明の幾つかの部分は、1つまたは複数の関数を実行する論理回路として実装してもよい。この論理回路は、ハードワイアード論理回路、特定用途向けＩＣ、書替え可能ゲートアレイ、及びマイクロプロセッサなどのハードウェア、ソフトウェア、並びにハードウェアとソフトウェアとの組合せを含むことができる。
【０１５４】
本発明の説明で使用されたいかなる要素、動作、命令も、特に明記されていなければ本発明に不可欠で必須であると解釈すべきではない。また、本明細書では、「１つの(原語：a)」という冠詞は、1つまたは複数の要素を含むことを意図している。1つの要素のみを意図する場合は、「単一の(原語:
a single)」または他の用語を使用する。さらに、本明細書では、「に基づいて」という用語は、特に明記されていなければ「少なくとも部分的には〜に基づいて」を意味するよう意図されている。また、本明細書では、「ユーザ」という用語は、そうでないと説明されていなければ、例えば計算装置(例えばワークステーション)または計算装置のユーザを含むよう広く解釈されることを意図している。
【０１５５】
本発明の範囲は特許請求の範囲とその等価物によって定義される。
【図１】
0005567682.tif 000008
【図２Ａ】
0005567682.tif 000009
【図２Ｂ】
0005567682.tif 000010
【図３Ａ】
0005567682.tif 000011
【図３Ｂ】
0005567682.tif 000012
【図４Ａ】
0005567682.tif 000013
【図４Ｂ】
0005567682.tif 000014
【図５】
0005567682.tif 000015
【図６】
0005567682.tif 000016
【図７Ａ】
0005567682.tif 000017
【図７Ｂ】
0005567682.tif 000018
【図８】
0005567682.tif 000019