(57)【要約】      （修正有）【課題】サイクルを持つ情報モデルからのコード生成で、モデルオブジェクトの関連付けを保存し、かつ、プラットフォームや言語間で可搬性も提供する。【解決手段】コード生成システム８００において、サイクルマップジェネレーター８０６は、複数オブジェクトを持つモデルのサイクルについて、第二のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップ８０８を作成、オブジェクトレジストリジェネレーター８１０は、オブジェクトレジストリマップ８１２を作成、ランタイムコードジェネレーター８１６は、モデルとマップに基づきインスタンス化可能な情報モデルとオブジェクトレジストリを生成する。このとき非支配的な関連付けについては、オブジェクトレジストリを通してインスタンス化される第一のオブジェクトの参照されるオブジェクトを識別するオブジェクト修飾子を含む複数のインスタンス化可能なオブジェクトを生成する。【選択図】図８
2014206976.tif 000002
【特許請求の範囲】
【請求項１】
コード生成システム（４０２）を備えるモデル管理システム（４００）であって、
少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルをトラバースするように構成されるサイクルマップジェネレーター（８０６）であって、前記サイクルマップジェネレーター（８０６）は、前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップ（８０８）を作成するように構成される、前記サイクルマップジェネレーター（８０６）、
前記非支配的関連付けを識別し、前記それぞれの第二の又はその後のオブジェクトの第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップ（８１２）を作成するように構成される、オブジェクトレジストリジェネレーター（８１０）、並びに
前記情報モデル、サイクルマップ（８０８）及びオブジェクトレジストリマップ（８１２）に基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリ（９０４）を生成するように構成される、ランタイムコードジェネレーター（８１６）
を備え、 
前記インスタンス化可能な情報モデルの生成は、前記非支配的な関連付けについて、オブジェクト修飾子（９０６）を含む前記第二の又はその後のインスタンス化可能なオブジェクトの生成を含む、前記情報モデルの前記オブジェクトのそれぞれについて複数のインスタンス化可能なオブジェクト（９０２）の生成を含み、 
前記ランタイムコードジェネレーター（８１６）は、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される、包含される第一のインスタンス化可能なオブジェクトの代わりに、包含される第一のインスタンス化可能なオブジェクトを含む前記第二の又はその後のインスタンス化可能なオブジェクトを生成し、次いで、前記包含される第一のインスタンス化可能なオブジェクトを除去し、そのオブジェクトを、前記オブジェクトレジストリ（９０４）を通してインスタンス化される前記第一のオブジェクトについての参照されるオブジェクトを識別する前記オブジェクト修飾子（９０６）と取り替え、それにより、オブジェクト間の前記関係を維持しながら、前記モデルで作成される前記関連付けにより生成される前記サイクルの性質を破壊するように構成される、モデル管理システム（４００）。 
【請求項２】
前記オブジェクト修飾子（９０６）は、オブジェクトレジストリを通して前記参照されるオブジェクトにアクセスするためのキーとして使用される、請求項１に記載のモデル管理システム（４００）。
【請求項３】
前記第一のオブジェクトは、支配的な関連付けを通して前記第二のオブジェクトに関係付けられ、前記第二の又はその後のオブジェクトは、前記非支配的な関連付けを通して前記第一のオブジェクトに再び関係付けられ、及び
前記インスタンス化可能なオブジェクト（９０２）の生成は、前記支配的な関連付けについて、内部からのインスタンス化のための前記第二のインスタンス化可能なオブジェクトを包含する前記第一のインスタンス化可能なオブジェクトの生成を含む、請求項１に記載のモデル管理システム（４００）。
【請求項４】
前記ランタイムコードジェネレーター（８１６）は、プロキシパターン及びファクトリ（９１０）メソッドパターンを含む複数のオブジェクト指向の設計パターンを使用して前記インスタンス化可能な情報モデルを生成するように構成され、及び
前記ランタイムコードジェネレーター（８１６）により生成される前記オブジェクトレジストリ（９０４）は、前記参照されるオブジェクトのインスタンス化を管理するために、前記プロキシパターンを実装するように構成されるオブジェクトマネージャー（９０８）、及び前記参照されるオブジェクトをインスタンス化するために、前記ファクトリ（９１０）メソッドパターンを実装するように構成されるオブジェクトファクトリ（９１０）を含む、請求項１から３のいずれか一項に記載のモデル管理システム（４００）。
【請求項５】
前記オブジェクト指向の設計パターンは、シングルトンパターンをさらに含み、及び
オブジェクトファクトリ（９１０）は、濃度値に従って前記参照されるパターンのインスタンスを制限するために、前記シングルトンパターンに従って前記ファクトリ（９１０）メソッドパターンを実装するように構成される、請求項４に記載のモデル管理システム（４００）。
【請求項６】
少なくともそのいくつかが重み付けされた先入先出技術に従って除去できる一又は複数の情報モデルを記憶するように構成されるモデルレポジトリ（８０２）であって、前記サイクルマップジェネレーター（８０６）は、前記情報モデルを前記モデルレポジトリ（８０２）から受信するように構成される、前記モデルレポジトリ（８０２）をさらに備える、請求項１から５のいずれか一項に記載のモデル管理システム（４００）。
【請求項７】
前記情報モデルを、複数の異なる形式のいずれかから、前記情報モデルがトラバースされる共通の形式へ変換するように構成されるアダプタコンポーネント（８０４）をさらに備える、請求項１から６のいずれか一項に記載のモデル管理システム（４００）。
【請求項８】
コード生成のための方法であって、  
少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルをトラバースすること、及び前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップ（８０８）を作成すること、
前記非支配的な関連付けを識別し、前記それぞれの第二の又はその後のオブジェクトの第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップ（８１２）を作成すること、並びに
前記情報モデル、サイクルマップ（８０８）及びオブジェクトレジストリマップ（８１２）に基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリ（９０４）を生成すること
を含み、 
前記インスタンス化可能な情報モデルの生成は、前記非支配的な関連付けについて、オブジェクト修飾子を含む前記第二の又はその後のインスタンス化可能なオブジェクトの生成を含む、前記情報モデルの前記オブジェクトのそれぞれについて複数のインスタンス化可能なオブジェクト（９０２）の生成を含み、 
前記インスタンス化可能な情報モデルを生成することは、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される、包含される第一のインスタンス化可能なオブジェクトの代わりに、前記包含される第一のインスタンス化可能なオブジェクトを含む前記第二の又はその後のインスタンス化可能なオブジェクトを生成すること、次いで、前記包含される第一のインスタンス化可能なオブジェクトを除去すること、及びそのオブジェクトを、前記オブジェクトレジストリ（９０４）を通してインスタンス化される前記第一のオブジェクトについての参照されるオブジェクトを識別する前記オブジェクト修飾子と取り替えること、それにより、オブジェクト間の前記関係を維持しながら、前記モデルで作成される前記関連付けにより生成される前記サイクルの性質を破壊することを含む、コード生成のための方法。
【請求項９】
前記オブジェクト修飾子（９０６）は、オブジェクトレジストリを通して前記参照されるオブジェクトにアクセスするためのキーとして使用される、請求項８に記載の方法。
【請求項１０】
前記第一のオブジェクトは、支配的な関連付けを通して前記第二のオブジェクトに関係付けられ、前記第二の又はその後のオブジェクトは、前記非支配的な関連付けを通して前記第一のオブジェクトに再び関係付けられ、及び
前記インスタンス化可能なオブジェクト（９０２）の生成は、前記支配的な関連付けについて、内部からのインスタンス化のための前記第二のインスタンス化可能なオブジェクトを包含する前記第一のインスタンス化可能なオブジェクトの生成を含む、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してモデル駆動工学に関し、具体的にはオブジェクトサイクルを有するモデルの管理に関する。  
【背景技術】
【０００２】
情報モデルは、ときに本明細書ではデータモデルと言われることもあるが、多種多様な製品、構造及び設備の設計及び製造にますます利用されるようになっている。特定の製品、構造又は設備設計の複雑性及び変形が増加するにつれ、そのようなモデリングは、設計及び製造効率の促進を含む多くの恩恵を提供することができる。    
【０００３】
例えば、航空機、船舶、海底石油掘削プラットフォーム、配電システム、コンピュータソフトウェアシステム、コンピュータによるゲノム構造のような非常に複雑な製品、構造又は設備は、通常、多数の個々のコンポーネント又はサブアセンブリを順に含む多くのアセンブリを使用して、組み立てられる。データモデル形式のそのようなアセンブリについてのデータを収集し管理することは、製品、構造又は設備の設計及び製造プロセスの合理化を促進する。また、そのようなデータを有することは、変形、改良点及び追加のサブシステムの設計を促進する。
【０００４】
さらに、そのようなデータの保存は、バーチャル環境で（例えば、コンピュータ上で）の製品設計及び検査、並びに製品をシミュレーションするために実行されるコンピュータ可読プログラムコードの自動生成を含む、バーチャル製品設計プロセスを促進する。バーチャル製品設計は、しばしば、製品の非常に高価な物理的プロトタイピング及び検査の削減を促進する。バーチャル製品設計環境は、所定の製品、機械又は設備を設計するために必要とされるかなりのコストと時間を節約することができる。  
【０００５】
情報モデルは、オブジェクト指向の技術を使用して製品及びそのコンポーネントを記述することができる。モデルは、多数のモデルオブジェクトを含み、情報集合の交換だけではなく、情報集合の相互関係の交換をサポートする情報関係を記述することができる。情報モデルは、自動コード生成を目的として、グラフがノード（オブジェクト）間でサイクルを包含してはいけない、有向グラフとして表現される。図１及び図２に示されるように、豊富な情報モデルは、しばしば、単純な（Ａ⇒Ｂ⇒Ａ、ここでＡ及びＢはオブジェクトとする）循環参照及び／又は複雑な（Ａ⇒Ｂ⇒Ｃ⇒Ｆ⇒Ｚ⇒Ｑ⇒Ｅ⇒Ｃ、ここでＡ、Ｂ、Ｃ、Ｆ、Ｚ、Ｑ及びＥはオブジェクトとする）循環参照を包含する。図３は、図１のオブジェクト間の有向グラフサイクルの破壊を示す。サイクルが除去された状態で得られるグラフは、有向非巡回グラフ（ＤＡＧ）と見なされる。 
【０００６】
ＤＡＧを生成するための対象とされる、実装固有の解決策が、これらのサイクルを包含するランタイムソフトウェアオブジェクトを可能にするために、これまで適用されてきている。自動コード生成ツールがオブジェクトインターフェース定義（例えば、ＩＤＬ）を作成するために使用されるときに、サイクルは生成されたインスタンス化可能なオブジェクトに現れる。既存の解決策では、対象とされる言語についてのこれまでの方法においてサイクルを除去するために、モデル内のサイクルを除去すること、すなわち、自動生成されるインスタンス化可能なオブジェクトの実装されるデータオブジェクト又はカスタムリワークにおけるモデル及び表現度の本来の豊富さを失うことが要求される。 
【発明の概要】
【課題を解決するための手段】
【０００７】
本発明の例示的な実施形態は、サイクルを有するモデルに基づきコンピュータ可読プログラムコード生成に関する問題に対処し、概して、オブジェクトサイクルを有するモデルを管理するためのシステム、対応する方法及びコンピュータ可読記憶媒体を対象とする。モデルオブジェクトの関連付けは、現在のところ、破棄されるか、ランタイムコードに組み入れるために広範囲に及ぶカスタマイズが要求されるかのどちらかである。本発明の例示的な実施形態は、豊富なモデル関係の保存とインスタンス化可能なコードとの間に折衷案を提供する；つまり、自動化された方式でこれらの関連付けを保存するだけではなく、プラットフォーム及び言語の間での可搬性のための手段をも提供する。例示的な実施形態は、生成されるインターフェースを多数のプラットフォーム及びコンパイラに移植するための機構を順に提供する、言語非依存技術を適用することができる。
【０００８】
情報モデルからのコードの自動生成は、かなりの時間の節約を提供することができる。情報モデルは、航空機、船舶、海底油田掘削プラットフォーム、配電システム、コンピュータソフトウェアシステム、コンピュータによるゲノム構造などのような、製品、構造又は設備（概して「製品」）の設計など、広範囲のカテゴリーにわたり実装される。情報モデルは、製品及びサービスを、多様な産業及び技術部門で、共同経営者、供給業者及び競合企業と大いに相互運用を可能にするインターフェースで生成される。配電に照らして、本発明の例示的な実施形態は、電器格子上の計測、センサー、データ取得などに関係するデータプロトコル変換及びデータ／情報管理を提供するために利用される。同様に、例示的な実施形態は、ユーティリティ送信及び分配の顧客に配電プロジェクトの共通の動作環境を提供することができる。他の例示的な使用事例は、電力品質の検査、保守、設備管理、分散型エネルギー（マイクログリッドの動作及び将来計画）、連合システム管理、蓄電、需要反応、高度な計量、電力輸送、分配管理及びマイクログリッド設計などを含む。
【０００９】
例示的な実施形態の一つの態様によれば、サイクルマップジェネレーター、オブジェクトレジストリジェネレーター及びランタイムコードジェネレーターを含むモデル管理システムが提供される。前記サイクルマップジェネレーターは、少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルをトラバースするように構成される。前記サイクルマップジェネレーターはまた、前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップを作成するように構成される。前記オブジェクトレジストリジェネレーターは、前記非支配的関連付けを識別し、前記それぞれの第二の又はその後のオブジェクトの第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップを作成するように構成される。  
【００１０】
前記ランタイムコードジェネレーターは、前記情報モデル、サイクルマップ及びオブジェクトレジストリマップに基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリを生成するように構成される。前記インスタンス化可能な情報モデルの生成は、前記情報モデルのオブジェクトのそれぞれについて複数のインスタンス化可能なオブジェクトの生成を含む。これは、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される、包含される第一のインスタンス化可能なオブジェクトの代わりに、前記非支配的な関連付けについて、前記オブジェクトレジストリを通してインスタンス化される前記第一のオブジェクトの参照されるオブジェクトを識別するオブジェクト修飾子を含む、前記第二の又はその後のインスタンス化可能なオブジェクトの生成を含む。一つの例では、前記ランタイムコードジェネレーターは、前記包含される第一のインスタンス化可能なオブジェクトを含む前記第二の又はその後のインスタンス化可能なオブジェクトを生成し、次いで前記包含される第一のインスタンス化可能なオブジェクトを除去し、そのオブジェクトを前記オブジェクト修飾子と取り替えるように構成される。
【００１１】
一つの例では、前記モデル管理システムは、少なくともそのいくつかが重み付けされた先入先出技術により除去可能である一又は複数の情報モデルを記憶するように構成されるモデルレポジトリをさらに含む。この例では、前記マップジェネレーターは、前記情報を前記モデルレポジトリから受信するように構成される。
【００１２】
一つの例では、前記モデル管理システムは、前記情報モデルを複数の異なる形式のうちのいずれかから前記情報モデルがトラバースされる共通の形式へ変換するように構成されるアダプタコンポーネントをさらに含む。
【００１３】
一つの例では、前記ランタイムコードジェネレーターは、プロキシパターン及びファクトリメソッドパターンを含む複数のオブジェクト指向の設計パターンを使用して前記インスタンス化可能な情報モデルを生成するように構成される。この例では、前記ランタイムコードジェネレーターにより生成される前記オブジェクトレジストリは、前記参照されるオブジェクトのインスタンス化を管理するために、前記プロキシパターンを実装するように構成されるオブジェクトマネージャー、及び前記参照されるオブジェクトをインスタンス化するために、前記ファクトリメソッドパターンを実装するように構成されるオブジェクトファクトリを含むことができる。さらなる例では、前記オブジェクト指向の設計パターンはまた、シングルトンパターンを含むことができ、前記オブジェクトファクトリは、濃度値に従って前記参照されるパターンのインスタンスを限定するために、シングルトンパターンに従って前記ファクトリメソッドパターンを実装するように構成される。
【００１４】
一つの例では、前記第一のオブジェクトは、支配的な関連付けを通して前記第二のオブジェクトに関係付けられ、前記第二の又はその後のオブジェクトは、前記非支配的な関連付けを通して前記第一のオブジェクトに再び関係付けられる。この例では、前記インスタンス化可能なオブジェクトの生成は、前記支配的な関連付けについて、内部からのインスタンス化のための前記第二のインスタンス化可能なオブジェクトを包含する前記第一のインスタンス化可能なオブジェクトの生成を含むことができる。
【００１５】
例示的な実施形態の他の態様では、オブジェクトサイクルを有するモデルを管理するための方法及びコンピュータ可読記憶媒体が提供される。内部に記憶されるコンピュータ可読プログラムコード部分を含むコンピュータ可読記憶媒体が提供される。コンピュータ可読プログラムコードは、プロセッサによる実行に応じて、装置に、少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルを少なくともトラバースさせ、前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップ（８０８）を作成させ、かつ非支配的な関連付けを識別し、第二又はその後のオブジェクトそれぞれの第二又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップ（８１２）を作成させる。前記コンピュータ可読プログラムコードは、装置に、前記情報モデル、サイクルマップ（８０８）及びオブジェクトレジストリマップ（８１２）に基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリ（９０４）をさらに生成させる。次いで、前記インスタンス化可能な情報モデルの生成は、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される、包含される第一のインスタンス化可能なオブジェクトの代わりに、前記非支配的な関連付けについて、前記オブジェクトレジストリ（９０４）を通してインスタンス化される前記第一のオブジェクトの参照されるオブジェクトを識別するオブジェクト修飾子を含む、前記情報モデルの前記オブジェクトのそれぞれについての複数のインスタンス化可能なオブジェクト（９０２）の生成を含む。ここで説明される特性、機能及び利点は、本発明の種々の例示的な実施形態において単独で実現可能であるか、又はさらに別の例示的実施形態において組み合わせることができる。このような実施形態のさらなる詳細は、後述の説明及び添付図面に見ることができる。
【００１６】
本開示の例示的な実施形態は、一般的な用語で述べられており、ここで添付図面を参照するが、これらは必ずしも正確な縮尺で描かれているわけではない。
【図面の簡単な説明】
【００１７】
【図１】モデルの二つのオブジェクト間での双方向の関連付けからの循環オブジェクト参照を示す。
【図２】モデルの二つのオブジェクト間での双方向の関連付けからの二次サイクルを示す。
【図３】図１の二つのオブジェクト間の有向グラフの破壊を示す。
【図４】一つの例示的な実施形態によるモデル管理システムを示す。
【図５】一つの例示的な実施形態による平準化されたノードオブジェクトレジストリを示す。
【図６】一つの例示的な実施形態による、循環ノードを平準化する際の一つの例示的な状況を示す。
【図７】一つの例示的な実施形態による、循環ノードを平準化する際の一つの例示的な状況を示す。
【図８】一つの例示的な実施形態によるコード生成システムを示す。
【図９】一つの例示的な実施形態により生成されるランタイムモデルアーティファクトを示す。
【発明を実施するための形態】
【００１８】
本発明のいくつかの実施形態が、添付図面を参照して以下でより詳しく述べられるが、添付図面には本発明のすべての実施形態が示されているわけではない。実際、本発明の種々の実施形態は、多くの異なる形態で実施され、ここで説明される実施形態に限定されるものと解釈されるべきではなく、むしろ本発明が包括的で完全となるように、かつ当業者に本発明の範囲を十分に伝えるために、これらの実施形態が提供される。たとえば、特に明記されない限り、第一の、第二の、第三の、のような何かへの言及は、特定の順序を意味するもの、または「Ａ」、「Ｂ」、「Ｃ」などの用語体系を意味するものと解釈されるべきではない。また、何か他のもの（特に明記されない限り）の上にあるとされるものがその代わりに下にあってもよく、逆もまた同様である。同じように、何か他の物の左にあるとされる物が代わりに右にあってもよく、逆もまた同様である。全体を通して、類似の参照番号は類似の要素を示している。
【００１９】
ここで図４を参照すると、モデル管理システム４００が、本発明の例示的な実施形態に従って示される。このシステムは、一又は複数の機能又は動作を実行するための任意の数の異なるサブシステム（各々は個別のシステム）のいずれかを含むことができる。示されるように、例えば、システムは、製品の情報モデルを受信し、一又は複数のランタイムモデルアーティファクトを自動的に生成するように概して構成されるコード生成システム４０２を含むことができる。種々の例では、モデルは、航空機、船舶、海底油田掘削プラットフォーム、配電システム、コンピュータソフトウェアシステム、コンピュータによるゲノム構造など、物理的又は非物理的製品のためのものである。製品は、概して、複数のシステム、サブシステム、アセンブリ、サブアセンブリ、コンポーネント、部品など（各々は概して「コンポーネント」）から構成される。モデルは、ノードの階層的なブレークダウンの点から製品及びそのコンポーネントの機能記述を含むことができ、ノード間の接続又は関連付けにより種々のコンポーネント間の機能関係又は関連付けを反映することができる。一つの例では、次いで、ランタイムモデルアーティファクトは、例えば、その一つが製品の設計中にコンポーネント間の相互作用を検証できるように、バーチャル環境での（例えば、コンピュータ上での）実行（ソースコード）のために実行される（マシンコード）又はコンパイルされるコンピュータ可読プログラムコードを含むことができる。
【００２０】
種々の例示的な実施形態では、モデルは、オブジェクト指向の技術を使用して製品及びそのコンポーネントを記述することができる。ゆえに、モデルは、製品のそれぞれのコンポーネントについてのオブジェクトを含むことができ、製品の機能的性能を表すオブジェクトを含むことができる。ランタイムモデルアーティファクトは、モデルのそれぞれのオブジェクトについてのインスタンス化可能なオブジェクトを順に含むことができる、コンピュータ可読プログラムコードを含むことができる。情報モデルは、ゆえに、製品を記述することができ、製品の個々の物理的コンポーネント又はプロセスを記述する複数の「モデルオブジェクト」（又は単に「オブジェクト」）を含む。そして、「インスタンス化可能なオブジェクト」は、製品のそれぞれの物理的コンポーネント又はプロセスを表すソフトウェアオブジェクトを参照することができる。
【００２１】
先に示唆されたように、モデルの種々のオブジェクト（ノード）は、それぞれのオブジェクト間での関連付けを通して関係付けられる。種々の例では、一つのオブジェクトのもう一つのオブジェクトへの関連付けは、それらそれぞれのインスタンス化可能なオブジェクトに反映される。一つのオブジェクトについてのインスタンス化可能なオブジェクトは、他のオブジェクトについてのインスタンス化可能なオブジェクトを包含することができる（包含されるインスタンス化可能なオブジェクトは単に「包含オブジェクト」と言われることもある）。すなわち、一つのオブジェクトのもう一つのオブジェクトへの関連付けは、他のオブジェクトのインスタンス化可能なオブジェクトを包含する一つのオブジェクトのインスタンス化可能なオブジェクトに反映される。この構造において、一つのインスタンス化可能なオブジェクトは、包含オブジェクトに対する親と見なされ、そのオブジェクトは、その親内部からインスタンス化される。例えば、モデルが関連付けＡ⇒Ｂ及びＢ⇒Ａを有するサイクルを包含するインスタンスでは、以下のインスタンス化可能なオブジェクトが生成される。
2014206976.tif 000003
上記において、ｂＩｎｓｔａｎｃｅＯｂｊｅｃｔ及びａＩｎｓｔａｎｃｅＯｂｊｅｃｔは、各々が親Ａ及びＢそれぞれの内部からインスタンス化される、包含オブジェクトと見なされる。
【００２２】
種々のインスタンスでは、情報モデルは、一又は複数のサイクルを含むことができる。各サイクルは、順に、少なくともそのうちの一つがもう一つのオブジェクトを参照し（照会し）、同一の他のオブジェクト（例えば、図１）又はさらなるオブジェクト（例えば、図２）により再び参照される一連の二以上の関係付けられたオブジェクトを含むことができる。サイクルにおいて、第一のオブジェクトは、前方への、支配的な関連付けを通して、第二のオブジェクトに関係付けられる。第二の又はその後の（例えば、第三の）オブジェクトは、次いで、後方への、非支配的な関連付けを通して、第一のオブジェクトに再び関係付けられる。例えば、オブジェクトＡが、オブジェクトＡを再び参照するもう一つのオブジェクトＢを参照するサイクルを考察する。このインスタンスにおいて、Ａ⇒Ｂ（オブジェクトＡがオブジェクトＢを参照する）は、支配的な関連付けを記述することができる一方で、Ｂ⇒Ａ（オブジェクトＢはオブジェクトＡを参照する）は、非支配的な関連付けを記述することができる。種々の例では、非支配的な関連付け（例えば、Ｂ⇒Ａ）は、逆相関と見なされ、参照されるオブジェクト（例えば、オブジェクトＡ）は逆のオブジェクト（ノード）と見なされる。そして先ほど示唆されたように、「第一の」「第二の」「第三の」などの用語は、コード内でそれぞれのオブジェクトの特定の順序を意味すると見なされるべきではない。  
【００２３】
背景技術の部分で説明されたように、情報モデルの自動コード生成の既存の解決策では、モデル内のいずれかのサイクルの除去が必要とされる。同様に、例示的な実施形態のコード生成システム４０２は、情報モデルのいかなるサイクルをも識別し、そのようなインスタンスごとに、生成されるコードで持続される支配的な関連付けを決定するように構成される。しかし非支配的な関連付けを「取り除く（ｔｈｒｏｗ  ｏｕｔ）」のではなく、例示的な実施形態のコード生成システムは、プロキシを通して関係にアクセスするためのキーとして使用される一又は複数のオブジェクトプロパティを通して、関係を取得して再導入することができる。
【００２４】
例示的な実施形態によれば、コード生成システム４０２は、豊富なオブジェクト関係を維持するために情報モデルのオブジェクトを平坦化する、又は別の方法で平準化することができる一方で、ふさわしいコンピュータ可読プログラムコードをさらに自動的に生成することができる。先ほど示唆されたように、サイクルは、非支配的な関連付けを通して、第二のオブジェクト又はその後のオブジェクトが第一のオブジェクトに再び関係付けられた状態で、支配的な関連付けを通して、第二のオブジェクト（例えば、オブジェクトＢ）に関係付けられる第一のオブジェクト（例えば、オブジェクトＡ）を含むことができる。そして生成されるコード（インスタンス化可能な情報モデル）は、第一の及び第二のオブジェクトのそれぞれについてのインスタンス化可能な第一の及び第二のオブジェクト、及びおそらくその後のオブジェクトのその後のインスタンス化可能なオブジェクトをも含むことができる。
【００２５】
図５の例に示されるように、支配的な関連付けは、内部からのインスタンス化のための第一のインスタンス化可能なオブジェクトにより第二のインスタンス化可能なオブジェクトの包含を通して、生成されたコードに持続される。非支配的な関連付けがなければ、第二の又はその後のインスタンス化可能なオブジェクトは、第二の又はその後のインスタンス化可能なオブジェクトにより包含される第一のインスタンス化可能なオブジェクトの代わりに、第一のオブジェクトの参照されるインスタンス化可能なオブジェクト（又は単に「参照されるオブジェクト」）を識別するオブジェクト修飾子を含むことができる。オブジェクト修飾子は、次いで、ランタイムに共有されるオブジェクトレジストリを通して、参照されるオブジェクトにアクセスするためのキーとして使用される。参照されるオブジェクトは、第一のインスタンス化可能なオブジェクトに対応することがでるが、第二の又はその後のインスタンス化可能なオブジェクト（その親）内での代わりに、オブジェクトレジストリを通してインスタンス化されてもよい。本発明の例示的な実施形態は、第一のオブジェクトについての包含オブジェクトで第二の／その後のインスタンス化可能なオブジェクトを生成し、次いで第二の／その後のインスタンス化可能なオブジェクトからそれぞれの包含オブジェクトを除去し、そのオブジェクトをオブジェクト修飾子と取り替えるように構成されるコード生成システム４０２に照らして、より具体的に記述される。先の例では、非支配的な関連付けＢ⇒Ａを考えると、包含オブジェクトａＩｎｓｔａｎｃｅＯｂｊｅｃｔは、除去されてオブジェクト修飾子と取り替えられる。しかしながら、コード生成システムは、第一のオブジェクトの包含オブジェクトの代わりに、オブジェクト修飾子で第二の／その後のインスタンス化可能なオブジェクトを単に生成するように同様に構成することができると理解されるべきである。 
【００２６】
オブジェクト修飾子は、任意の数の異なる方法のいずれかにおいて構築することができる。たとえば、オブジェクト修飾子は、完全修飾参照オブジェクト、完全修飾包含オブジェクトネーム及びそれらの濃度を含むＪａｖａ  Ｓｃｒｉｐｔ  ｏｂｊｅｃｔｉｏｎ  ｎｏｔａｔｉｏｎ（ＪＳＯＮ）のフォーマットされた文字列を含む。一つの例では、オブジェクト修飾子は、新たなグローバルＵＩＤ（ＧＵＩＤ）プロパティ（例えば、その最も単純なものは、クラスネームそれ自体である）のような、共有されるオブジェクトレジストリ内でのアクセスのために使用される、固有の識別子（ＵＩＤ）により参照されるオブジェクトを固有に識別することができる。 
【００２７】
コード生成システム４０２は、オブジェクト修飾子に基づき、プロキシを通してランタイムのインスタンス化のオブジェクトＵＩＤを包含するためのオブジェクトレジストリを構築することができる。種々の例では、コード生成システムは、レジストリパターン、プロキシパターン、ファクトリメソッドパターン、シングルトンパターンなど、任意の数のオブジェクト指向の設計パターンのいずれかを使用して、これを達成することができる。レジストリパターンは、他のオブジェクトがデータ、設定、値、及び他のオブジェクトにアクセスするために使用することができるオブジェクト（レジストリ）を定義する。プロキシパターンは、他のオブジェクトのサロゲートとしての機能を果たすプロキシオブジェクトを通して、オブジェクトへのメソッド呼び出しを間接的に発生させ、そのオブジェクトへのメソッド呼び出しを委譲する。ファクトリメソッドパターンは、そのパターンを実装するクラスに、どちらのクラスをインスタンス化すべきかを決定させるオブジェクトを作成するファクトリを定義し、クラスにサブクラスへのインスタンス化の延期を許可することができる。そして、シングルトンパターンは、クラスのインスタンス化を一つのオブジェクトに制限する。
【００２８】
オブジェクト定義は、逆オブジェクトの不透明な参照を通して、循環参照を可能にするために、ＵＩＤ及びレジストリアクセス機構（例えば、濃度に基づくシングルトンを使用するなどして、ファクトリメソッドに準拠するプロキシの委譲を包含する）を含むことができる。オブジェクトインターフェース定義を生成することに加え、コード生成システム４０２は、参照されるオブジェクトへのアクセスを促進するためにプロキシを含むオブジェクトレジストリを作成することができる。この手法のもとで、非支配的な関連付けについての包含オブジェクト（逆オブジェクト）は、除去され、それぞれの包含オブジェクトを固有に識別するオブジェクト修飾子と取り替えられる（例えば、クラス参照によって）。オブジェクトレジストリ及びプロキシは、次いで、これらの参照されるオブジェクトのインスタンス化を許可することができる。
【００２９】
例示的な実施形態のファクトリメソッドに基づく技術は、包含クラスのコンストラクターの参照されるオブジェクトのインスタンス化に基づき、クラスのインスタンス化を防止する循環参照を削除することができる。例示を目的として、一つのクラス（「Ａ」）がもう一つのクラス（「Ｂ」）のオブジェクト参照を包含し、クラスＢがクラスＡのオブジェクト参照を包含し（明白な支配的方向のない双方向の関連付け）、各クラスがそのコンストラクターのオブジェクト参照をインスタンス化する場合に、メモリリークが生じるかもしれない。これを回避するために、クラスＡは、ＧＵＩＤ及び濃度基本型メンバー変数、並びに基本型オブジェクト修飾子メンバー変数を包含することができ、これらは、オブジェクト参照をインスタンス化するためにオブジェクトレジストリにより使用される先述のレジストリアクセス機構を提供する。オブジェクトレジストリは、ゆえに、オブジェクトモデルで作成される関連付けにより生成されるサイクルの性質（ｃｙｃｌｉｃ  ｎａｔｕｒｅ）を破壊する一方で、オブジェクト間の関係を維持することができる。
【００３０】
濃度値が設定されると、オブジェクトレジストリは、多数の関連付けられたオブジェクトを維持することができる。濃度は、包含オブジェクトのインスタンスがどのくらい存在するかを決定することができる。例えば、１対１の関連付けは、インスタンス化を一つのインスタンスに制限することができるのに対し、１対３の関連付けは、ランタイムに三つの別個のインスタンスを許可する。  
【００３１】
図６及び図７は、二つの例示的な状況を表す。図６は、インスタンス化可能なオブジェクトＡが包含オブジェクトＢを包含し、包含オブジェクトを除去し、ＧＵＩＤ、濃度及びオブジェクト修飾子を適用するためにコード生成システム４０２が処理できるインスタンスを示す。図７は、インスタンス化可能なオブジェクトＣが包含オブジェクトを処理せず、ゆえに、オブジェクト修飾子を含まないが、ＧＵＩＤ及び濃度を適用するためにコード生成システムが処理を行うことができるインスタンスを示す。種々の例では、この処理は、包含オブジェクト又はその子のうちの一つが逆相関を包含する場合のものである。それは、オブジェクトＡを処理するオブジェクトＢとして現れるかもしれないし、若しくは、より複雑（例えば、Ａ⇒Ｂ⇒Ｅ⇒Ｇ⇒Ｄ⇒Ａ）であり及び／又はマルチパス（Ａ⇒Ｂ⇒Ｃ⇒Ａ及びＡ⇒Ｂ⇒Ｄ⇒Ｅ⇒Ｇ⇒Ｃ⇒Ａ）であるかもしれない。  
【００３２】
既存の解決策では、モデルオブジェクトの関連付けの豊富さは、しばしば、破棄されるか、又はランタイムコードに組み入れるために広範囲に及ぶ手動カスタマイズを要求するかのどちらかである。例示的な実施形態の手法は、豊富なモデル関係の保存とインスタンス化可能なコードとの間に、自動化された方式でこれらの関連付けを保存するだけではなく、プラットフォームと言語との間での可搬性のための手段をも提供することができる折衷案を提供することができる。手法は、ランタイムでのオブジェクトモデルの関連付けの豊富さを維持する一方で、循環参照の障害の少なくともいくつかを回避する機構を提供することができる。そして付加される恩恵として、言語に依存しない技術は、生成されたインターフェースを多数のプラットフォーム及びコンパイラに移植するための機構を提供することができる。
【００３３】
レジストリパターンを用いる例では、狡猾な（ｉｎｓｉｄｉｏｕｓ）ガーベジコレクションは、自動化されたソフトウェア生成がＪａｖａのような言語で実装されるインスタンスを開発することができる。これらのインスタンスにおいて、スタックが成長して次に縮小するなら、スタックからポップされる（ｐｏｐｐｅｄ  ｏｆｆ）オブジェクト（及びこの廃止されたオブジェクトにより参照されるいずれかのオブジェクト）は、もはや参照されないときでさえも、ガーベジコレクションを取得することができないが、これは、廃止された参照をこれらのオブジェクトに維持するスタックに起因しうる。Ｊａｖａの実装でこれを取り扱うために、オブジェクトレジストリは、想定外のオブジェクトの保存を回避するために、これらのオブジェクトを無効にすることができる。
【００３４】
図８は、一つの例において、図４のコード生成システム４０２に対応するコード生成システム８００を示す。コード生成システムは、概して、その電子表示からインスタンス化可能な情報モデルを自動的に生成するように構成される。示されるように、コード生成システムは、モデルレポジトリ８０２、アダプタコンポーネント８０４、ランタイムサイクルマップジェネレーター８０６及び関連付けられるランタイムサイクルマップ８０８、オブジェクトレジストリジェネレーター８１０及び関連付けられるオブジェクトレジストリマップ８１２、並びにオブジェクト参照マネージャー８１４を含むことができる。さらに示されるように、コード生成システムは、ランタイムコードジェネレーター８１６を含むことができる。 
【００３５】
モデルレポジトリ８０２は、持続性のためにマークされるがレポジトリから除去することもできる、一又は複数の製品についての一又は複数の情報モデルを記憶するように構成される。一つの例では、モデルは、古くなった持続性モデルを除去するための明白なユーザダイレクトコマンドに応じて除去される。もう一つの例では、モデルは、システムアドミニストレータにより構成可能である、リソース消費レベルに基づき、重み付けされた先入先出（ＦＩＦＯ）技術によるなどして、その満了により除去される。モデルの満了についての重み付けは、多変量であってもよい。付加的な重み付けが、モデル使用（頻度及び日付）並びにモデルの大きさに基づき提供されてもよい。そして、さらなる重み付けが、最適基準規則（ＳＭＲ）構文（代数に関する）を使用するなどして、付加されてもよい。
【００３６】
アダプタコンポーネント８０４は、モデル翻訳のための一又は複数の拡張可能なアダプタを実装するように構成され、これにより多数の異なる形式の情報モデルを処理のための共通の形式に変換することができる。これらの形式は、例えば、インターフェース記述言語（ＩＤＬ）、ウェブオントロジ言語（ＯＷＬ）などを含むことができ、それらのいずれかは共通の形式（例えば、ＩＤＬ）として使用される。この点で、アダプタコンポーネントは、多様な種類及び形式のモデルを取り込むための拡張できる手法、及び異なるターゲットコンパイラ及びランタイムのためのソースコードの作成を提供することができる。
【００３７】
先に示されたように、モデルは、階層的なブレークダウンの点で製品及びそのコンポーネントの機能記述を含むことができ、種々のコンポーネント間で機能関係又は関連付けを反映することができる。いったん共通の形式に変換されると、次いで、サイクルマップジェネレーター８０６は、モデル階層をトラバースし、モデル内で任意のサイクルを識別することができる。サイクルマップジェネレーターは、後に生成されるランタイムモデルアーティファクトで持続されるサイクルごとに支配的な関連付け、又は除去される非支配的な関連付けを決定することができる。いくつかのインスタンスにおいて、サイクルマップジェネレーターは、支配的な関連付け（これにより、非支配的な関連付け）を示すことができる、有向オブジェクト参照を識別するように構成される。他の例では、オブジェクト参照は、支配的な／非支配的な関連付けを導くために、濃度など、追加の属性又はプロパティを必要とする、非有向の（双方向の）関連付けから導かれる。例えば、一対多数の関連付け（例えば、「多数の」Ｂオブジェクトと関連付けられる「一つの」Ａオブジェクト）において、Ａ⇒Ｂの関連付けは、支配的な関連付けと見なされる。
【００３８】
さらに他のインスタンスでは、支配的な／非支配的な関連付けは、非支配的であり、すべての双方向のオブジェクト関係は、持続されることが要求される。これらの例では、任意の数の異なる手法がとられる。一つの手法によれば、割り当ては、オブジェクトの「人気度」（例えば、オブジェクト間の接続又は関連付けの数）、及びオブジェクトの複雑性（例えば、人気度／複雑性の低いオブジェクトは、逆オブジェクトと見なされうる）のような一般的要因に基づき、行われる。オブジェクトの複雑性は、オブジェクトのプロパティ及び関連付けの数並びに大きさにより、決定される。この手法を使用すると、人気度が決定的でないときに使用される二次的な重み付けをノードの複雑性が提供しつつ、最も人気度の高いオブジェクト（例えば、最も多い関連付けを有するオブジェクト）が支配的なオブジェクト（即ち、非支配的な関連付けにおける逆オブジェクトと関連付けられるオブジェクト）と見なされる。ときに支配の決定を助けるドメイン特化型プロパティが存在すると（例えば、シリアル番号、物理的資源を支配的なもととして接地すること、ゆえに支配的な／非支配的な関連付けのソースなどのプロパティの存在）、これは、一組のプログラム可能な規則を使用してドメインに対して調整される。
【００３９】
もう一つの手法によれば、又は先ほどの手法が支配的な／非支配的な関連付けを識別できない例においては、それぞれの関連付けは、無作為に割り当てられる。これは、例えば、濃度、人気及び複雑性（及びいかなるドメイン特化型識別子）が支配的な／非支配的な関連付けを決定することができないときに、発生しうる。若しくは別の例では、両方の関連付けは、後に生成されるランタイムモデルアーティファクトで破壊されてもよいが、非支配的な関連付けとして持続される。 
【００４０】
サイクルマップジェネレーター８０６が情報モデルのサイクルにおいて支配性を決定する正確な方法にかかわらず、サイクルマップジェネレーターは、サイクルマップ８０８でそれを取得することができる。すなわち、サイクルマップジェネレーターは、情報モデルのサイクルごとに、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップを作成することができる。これらの非支配的な関連付けは、除去及びオブジェクト修飾子との取り替えのためのそれぞれの包含オブジェクトを含むことができる。  
【００４１】
オブジェクトレジストリジェネレーター８１０は、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを（及びおそらく第二の又はその後のオブジェクトの情報モデルの一又は複数の他のオブジェクトへのいずれかの関連付けを）識別し、第二の又はその後のオブジェクトそれぞれについての第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含む、オブジェクトレジストリマップ８１２を作成することができる。これらのライフサイクルポリシーは、例えば、量及び／又はエージングポリシーにおける一又は複数の制約を含むことができる。これらのエージングポリシーは、必要でないときにはオブジェクトの最適な破壊のために使用され、作成（例えば、新たなオブジェクトを生成するための時間）、保守（例えば、メモリ）及び／又は破壊（例えば、ガーベジコレクション）を含むコンピュータによるペナルティに対して取引される。種々の例では、オブジェクトレジストリマップ８１２は、固有のオブジェクトＵＩＤ（例えば、ＧＵＩＤ）を維持することのみでき、これらの例において、オブジェクトレジストリマップはまた、固有のオブジェクトカウントを管理することもできる。オブジェクトＵＩＤの複製インスタンスは、オブジェクト参照マネージャー８１４により管理される。 
【００４２】
ランタイムコードジェネレーター８１６は、情報モデル、サイクルマップ８０８、オブジェクトレジストリマップ８１２、及びおそらくオブジェクト参照マネージャー８１４からの入力に基づき、情報モデルについてのランタイムモデルアーティファクトを生成することができる。ランタイムコードジェネレーターは、オブジェクトレジストリキーについてのオブジェクト修飾子を識別及び作成するために、サイクルマップに持続されるサイクルを使用して、モデルを事前に処理することができる。ランタイムモデルアーティファクトは、情報モデルのオブジェクトのそれぞれについての複数のインスタンス化可能なオブジェクトを有するインスタンス化可能な情報モデルを含むことができ、その種々のオブジェクトは、オブジェクト修飾子を含むことができる。ランタイムモデルアーティファクトはまた、オブジェクト修飾子に基づき、参照されるオブジェクトにアクセスするためのオブジェクトレジストリを含むことができる。オブジェクト参照マネージャーにより管理されるオブジェクトの複製インスタンスは、ランタイムコードジェネレーターに渡されるが、一つの例では、参照されるオブジェクトのインスタンスの数をふさわしい濃度値に従って制限することができる。 
【００４３】
図９は、一つの例示的な実施形態によるランタイムモデルアーティファクト９００を示す。示されるように、アーティファクトは、対象とされるコンパイル可能な又は実行可能な言語のインスタンス化可能なオブジェクト９０２、及びインスタンス化可能な情報モデル内で参照されるオブジェクトの管理及びインスタンス化に責任を負うオブジェクトレジストリ９０４を有する、インスタンス化可能な情報モデルを含むことができる。モデルのインスタンス化可能なオブジェクトの種々のオブジェクトは、オブジェクトレジストリに対するオブジェクト修飾子９０６を含むことができる。オブジェクトレジストリは、オブジェクトマネージャー９０８、ファクトリ９１０及びオブジェクトレジストリマップ９１２（例えば、オブジェクトレジストリマップ８１２）を含むことができる。  
【００４４】
オブジェクトマネージャー９０８は、オブジェクトライフサイクル全体にわたり参照されるオブジェクトのインスタンスの維持に責任を負う、プロキシパターンを実装するように構成される。オブジェクトマネージャーは、オブジェクトのインスタンス化（作成）、オブジェクト間のアクセス（ライフ）及び破壊（デス）に責任を負う。主要なオブジェクト（サイクルを包含しないか支配的なオブジェクト／ノードとして指定されると決定されたオブジェクト）が非支配的なオブジェクトの作成をリクエストすると、オブジェクトマネージャーは、非支配的なオブジェクトの作成（又は再利用）を管理することができる。
【００４５】
ファクトリ９１０は、ファクトリメソッドパターンを実装するように構成され、参照されるオブジェクトのインスタンス化のためにオブジェクトマネージャー９０８により使用される。一つの例では、ファクトリは、濃度値に従って参照されるパターンのインスタンスを制限するために、シングルトンパターンに従ってファクトリメソッドパターンを実装するように構成される。そしてオブジェクトレジストリマップ９１２の使用を通して、オブジェクトマネージャーは、インスタンス化可能なオブジェクトライフサイクルポリシーを管理することができる―つまり、サイクルマップ８０８により命令される要求及び非支配的なオブジェクト識別及び平坦化を統制する規則に関して、作成、再利用及び／又は破壊を決定する。  
【００４６】
非支配的な関連付けのオブジェクト修飾子９０６を有するインスタンス化可能なオブジェクト９０２は、それぞれの参照されるオブジェクトのインスタンスをリクエストするために、オブジェクト修飾子とともにマネージャーアクセス機構メソッドを使用することができる。参照されるオブジェクトが包含オブジェクト（既存の、インスタンス化可能な親オブジェクトのメンバー）としてインスタンス化される必要があるときには、既存の親オブジェクトは、オブジェクトマネージャーアクセス機構メソッドを使用することができる。この方法は、入力パラメータとしてオブジェクト修飾子を受け入れ、インスタンス化される、参照されるオブジェクトを戻すことができる。インスタンス化される、参照されるオブジェクトがすでに存在するなら、既存のインスタンス化される、参照されるオブジェクトは、戻される（濃度値は、インスタンス化される新たな参照されるオブジェクトの数に影響を与えうる）。
【００４７】
例示的な実施形態によれば、修正されるＤＡＧがインスタンス化可能なモデルオブジェクト９０２の間で関連付けを表す必要があるインスタンスにおいては、ランタイムモデルアーティファクト９００は、任意の数の異なる方法で通常の自動生成されるインスタンス化可能なモデルと異なってもよい。ＤＡＧに基づくモデルの作成で除去される循環モデル参照は、インスタンス化可能なモデルにおいて再構成され、文字列型（ｔｙｐｅ  ｓｔｒｉｎｇ）のオブジェクト修飾子として表現される。オブジェクトレジストリの関連付けを有するオブジェクトは、ＧＵＩＤ、及びおそらく濃度値も処理することができる。  
【００４８】
ランタイムに、オブジェクトレジストリ９０４は、事前に計算された濃度値に基づき、非支配的な関連付け、及びオブジェクトレジストリ内に包含されるオブジェクトレジストリマップ９１２を管理することができる。インスタンス可能なオブジェクト９０２が参照されるオブジェクトへのアクセスをリクエストするインスタンスにおいて、それは、文字列（ｓｔｒｉｎｇ）オブジェクトのオブジェクト修飾子を含むオブジェクトアクセス機構キーをオブジェクトレジストリに提示することができる。参照されるオブジェクトは、必要とされ、それぞれのインスタンス化可能なオブジェクトに戻されると、オブジェクトレジストリによりインスタンス化される。オブジェクトレジストリは、新たなオブジェクトをインスタンス化するのではなく、元のオブジェクトを戻すことにより、逆方向参照を管理することができる。このように、例示的な実施形態のランタイムモデルアーティファクト９００は、後方への関連付け、すなわち逆ノードの除去を妥協により解決する必要がない。
【００４９】
本発明の実施形態によれば、モデル管理システム４００、及びコード生成システムを含むそのサブシステムは、種々の手段により実装される。同様に、それぞれの要素の各々を含むコード生成システム８００の例は、例示的な実施形態に従い種々の手段により実装される。システム、サブシステム及びそれぞれの要素を実装するための手段は、単独のハードウェア、或いは、コンピュータで読込可能な記憶媒体からの一又は複数のコンピュータプログラムコード命令、プログラム命令又は実行可能なコンピュータで読込可能なプログラムコード命令の指示下にあるハードウェアを備えることができる。 
【００５０】
一つの例では、ここで図示され記述されるシステム、サブシステム、及びそれぞれの要素として機能する又はそうでなければそれらを実装するように構成される一又は複数の装置が提供される。複数の装置を含む例では、それぞれの装置は、有線又は無線ネットワークなどを介して直接的に又は間接的になど、任意の数の異なる方法で、互いに接続され、又はそうでなければ通信することができる。
【００５１】
概して、本発明の例示的実施形態の装置は、一又は複数の固定又は持ち運び可能な電子装置を備える、含む、又はそのような電子装置内において実施される。適する電子機器の例は、スマートフォン、タブレット型コンピュータ、ノート型コンピュータ、デスクトップコンピュータ、ワークステーションコンピュータ、サーバコンピュタなどを含む。装置は、メモリ（例えば、記憶装置）に接続されたプロセッサ（たとえば、プロセッサユニット）などの任意の数のコンポーネントそれぞれの一又は複数を備えることができる。  
【００５２】
プロセッサは、概して、たとえば、データ、コンピュータ可読プログラムコード、命令（ソフトウェア、ファームウェアなど、概して「コンピュータプログラム」）などの情報、及び／又は他の適する電子情報を処理できる任意のハードウェアである。具体的には、例えば、プロセッサは、プロセッサに搭載された状態で記憶された又はそうでない場合はメモリ（同じ又は別の装置の）に記憶された、コンピュータプログラムを実行するように構成することができる。プロセッサは、特定の実施形態に応じて、任意の数のプロセッサ、マルチプロセッサコア、又は他の何らかの種類のプロセッサとしてもよい。さらに、プロセッサは、単一のチップ上に主要プロセッサと共に一つ以上の二次プロセッサが存在する任意の数の異種プロセッサシステムを使用して実装されてもよい。別の例示的な例として、プロセッサは同一形態の複数のプロセッサを含む対称型マルチプロセッサシステムであってもよい。さらに別の例では、プロセッサは、一又は複数の特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）などとして実施される、又はそうでなければそれらを含むことができる。ゆえに、プロセッサは一又は複数の機能を実行するためのコンピュータプログラムを実行できるが、種々の例のプロセッサは、コンピュータプログラムの補助がなくても一又は複数の機能を実行することができる。
【００５３】
メモリは、概して、一時的及び／又は恒久的に、データ、コンピュータプログラム及び／又は他の適切な情報などの情報を記憶できる任意のハードウェアである。メモリは、揮発性及び／又は不揮発性メモリを含み、固定されても取り外し可能でもよい。適切なメモリの例は、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、ハードドライブ、フラッシュメモリ、サムドライブ、取り外し可能なコンピュータディスケット、光ディスク、磁気テープ又はそれらの何らかの組み合わせを含む。光ディスクには、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）、及びＤＶＤなどが含まれる。種々の例では、メモリは、情報を記憶できる永続的装置として、一つの場所から別の場所へ情報を伝送できる電子的な一時的信号などのコンピュータ可読伝送媒体と区別される、コンピュータ可読記憶媒体としてもよい。本明細書に記載されるコンピュータ可読媒体は、概して、コンピュータ可読記憶媒体又はコンピュータ可読伝送媒体を指している。
【００５４】
メモリに加えて、プロセッサは、情報を表示、送信及び／又は受信するための一又は複数のインターフェースに接続することもできる。インターフェースは、通信インターフェース（たとえば通信ユニット）及び／又は一又は複数のユーザインターフェースを含むことができる。通信インターフェースは、他の装置やネットワークへ及び／又はそれらから情報を送信及び／又は受信するように構成される。通信インターフェースは、物理的（有線）及び／又は無線通信リンクにより情報を送信及び／又は受信するように構成される。適切な通信インターフェースの例は、ネットワークインターフェースコントローラ（ＮＩＣ）、無線ＮＩＣ（ＷＮＩＣ）などを含む。 
【００５５】
ユーザインターフェースは、ディスプレイ及び／又は一又は複数のユーザ入力インターフェース（例えば、入出力ユニット）を含むことができる。ディスプレイは、適する例として液晶ディスプレイ（ＬＣＤ）、発光ダイオードディスプレイ（ＬＥＤ）、プラズマディスプレイパネル（ＰＤＰ）などを含む、ユーザに情報を提示又は他の方法で表示するように構成される。ユーザ入力インターフェースは、有線であっても又は無線であってもよく、処理、記憶及び／又は表示用などの装置内にユーザから情報を受信するように構成される。ユーザ入力インターフェースの適する例は、マイク、画像又はビデオキャプチャー装置、キーボード又はキーパッド、ジョイスティック、タッチセンシティブサーフェス（タッチスクリーンとは別個の、又はタッチスクリーンに統合されたもの）、生物測定センサーなどを含む。ユーザインターフェースは、プリンタやスキャナなどの周辺機器と通信する一又は複数のインターフェースをさらに含むことができる。
【００５６】
上述のように、プログラムコード命令は、システム、サブシステム及びここで述べられるそれぞれの要素の機能を実装するために、メモリに記憶され、プロセッサで実行される。理解されるように、任意の適するプログラムコード命令は、コンピュータ可読記憶媒体からコンピュータ又はその他のプログラム可能な装置に読み込まれ、ここで特定される機能を実装する手段となるように特定のマシンが製造される。また、これらのプログラムコード命令は、コンピュータ、プロセッサ、又はその他のプログラム可能な装置を特定の方法で機能させることにより特定のマシン又は特定の製造品を生成する、コンピュータ可読記憶媒体に記憶される。コンピュータ可読記憶媒体に記憶された命令は、製造品を生産することができ、この製造品はここで述べられた機能を実装するための手段となる。プログラムコード命令は、コンピュータ可読記憶媒体から読み出され、コンピュータ、プロセッサ、または他のプログラム可能な装置に読み込まれて、コンピュータ、プロセッサ、または他のプログラム可能な装置において、またはそれらによって実施される動作を実行するようにコンピュータ、プロセッサ、または他のプログラム可能な装置を構成する。
【００５７】
一つの命令が一度に読み出され、読み込まれ、実行されるように、プログラムコード命令の読み出し、読み込み及び実行を連続して行われる。いくつかの例示的実施態様では、複数の命令をまとめて読み出し、読み込み、及び／又は実行するために、読み出し、読み込み、及び／又は実行を並行して行なうことができる。コンピュータ、プロセッサ、又はその他のプログラム可能な装置により実行される命令がここで述べられる機能を実装するための動作を提供するために、プログラムコード命令の実行により、コンピュータで実装されるプロセスが生成される。
【００５８】
プロセッサによる命令の実行、又はコンピュータで可読記憶媒体での命令の記憶により、特定の機能を実行するための動作の組み合わせがサポートされる。さらに、一又は複数の機能、及び機能の組み合わせは、専用ハードウェアに基づくコンピュータシステム及び／又は特定の機能を実行するプロセッサ、或いは専用ハードウェアとプログラムコード命令との組み合わせにより実装されることも理解されたい。  
【００５９】
上述の説明及び関連する図面に提示された教示の恩恵を有するこのような発明に関連する当業者には、本発明の多数の変形例および他の実施形態が想起されるだろう。したがって、本発明は本明細書に開示した特定の例示的実施形態に限定されるものでなく、修正例及び他の実施形態が、特許請求の範囲に含まれると理解されたい。さらに、上述の説明及び添付図面は、要素及び／又は機能の特定の例示的組み合わせに照らして、例示的実施形態を説明しているが、当然のことながら、特許請求の範囲から逸脱せずに、別の実施形態によって要素及び／又は機能の異なる組み合わせを提供することができる。この点で、例えば、明確に先ほど述べられたものとは異なる、要素及び／又は機能の組み合わせも、特許請求の範囲の一部に明記されうるものと考えられる。ここでは特定の用語が用いられるが、それらは、一般的及び説明的な意味でのみ使用されており、限定を目的とするものではない。 
【符号の説明】
【００６０】
４００  モデル管理システム
８００  コード生成システム
９００  ランタイムモデルアーティファクト
【図１】
2014206976.tif 000004
【図２】
2014206976.tif 000005
【図３】
2014206976.tif 000006
【図４】
2014206976.tif 000007
【図５】
2014206976.tif 000008
【図６】
2014206976.tif 000009
【図７】
2014206976.tif 000010
【図８】
2014206976.tif 000011
【図９】
2014206976.tif 000012
【外国語明細書】
2014206976000001.pdf
2014206976000002.pdf
2014206976000003.pdf
2014206976000004.pdf