JP6457732B2 - オブジェクトサイクルを有するモデルの管理 - Google Patents

オブジェクトサイクルを有するモデルの管理 Download PDF

Info

Publication number
JP6457732B2
JP6457732B2 JP2014079825A JP2014079825A JP6457732B2 JP 6457732 B2 JP6457732 B2 JP 6457732B2 JP 2014079825 A JP2014079825 A JP 2014079825A JP 2014079825 A JP2014079825 A JP 2014079825A JP 6457732 B2 JP6457732 B2 JP 6457732B2
Authority
JP
Japan
Prior art keywords
instantiable
model
subsequent
registry
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014079825A
Other languages
English (en)
Other versions
JP2014206976A (ja
Inventor
ウィリアム ディー. ケルシー,
ウィリアム ディー. ケルシー,
デーヴィッド エイチ. ジョーンズ,
デーヴィッド エイチ. ジョーンズ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Boeing Co
Original Assignee
Boeing Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Boeing Co filed Critical Boeing Co
Publication of JP2014206976A publication Critical patent/JP2014206976A/ja
Application granted granted Critical
Publication of JP6457732B2 publication Critical patent/JP6457732B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Development Economics (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • General Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Operations Research (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)
  • Architecture (AREA)
  • Software Systems (AREA)

Description

本発明は概してモデル駆動工学に関し、具体的にはオブジェクトサイクルを有するモデルの管理に関する。
情報モデルは、ときに本明細書ではデータモデルと言われることもあるが、多種多様な製品、構造及び設備の設計及び製造にますます利用されるようになっている。特定の製品、構造又は設備設計の複雑性及び変形が増加するにつれ、そのようなモデリングは、設計及び製造効率の促進を含む多くの恩恵を提供することができる。
例えば、航空機、船舶、海底石油掘削プラットフォーム、配電システム、コンピュータソフトウェアシステム、コンピュータによるゲノム構造のような非常に複雑な製品、構造又は設備は、通常、多数の個々のコンポーネント又はサブアセンブリを順に含む多くのアセンブリを使用して、組み立てられる。データモデル形式のそのようなアセンブリについてのデータを収集し管理することは、製品、構造又は設備の設計及び製造プロセスの合理化を促進する。また、そのようなデータを有することは、変形、改良点及び追加のサブシステムの設計を促進する。
さらに、そのようなデータの保存は、バーチャル環境で(例えば、コンピュータ上で)の製品設計及び検査、並びに製品をシミュレーションするために実行されるコンピュータ可読プログラムコードの自動生成を含む、バーチャル製品設計プロセスを促進する。バーチャル製品設計は、しばしば、製品の非常に高価な物理的プロトタイピング及び検査の削減を促進する。バーチャル製品設計環境は、所定の製品、機械又は設備を設計するために必要とされるかなりのコストと時間を節約することができる。
情報モデルは、オブジェクト指向の技術を使用して製品及びそのコンポーネントを記述することができる。モデルは、多数のモデルオブジェクトを含み、情報集合の交換だけではなく、情報集合の相互関係の交換をサポートする情報関係を記述することができる。情報モデルは、自動コード生成を目的として、グラフがノード(オブジェクト)間でサイクルを包含してはいけない、有向グラフとして表現される。図1及び図2に示されるように、豊富な情報モデルは、しばしば、単純な(A⇒B⇒A、ここでA及びBはオブジェクトとする)循環参照及び/又は複雑な(A⇒B⇒C⇒F⇒Z⇒Q⇒E⇒C、ここでA、B、C、F、Z、Q及びEはオブジェクトとする)循環参照を包含する。図3は、図1のオブジェクト間の有向グラフサイクルの破壊を示す。サイクルが除去された状態で得られるグラフは、有向非巡回グラフ(DAG)と見なされる。
DAGを生成するための対象とされる、実装固有の解決策が、これらのサイクルを包含するランタイムソフトウェアオブジェクトを可能にするために、これまで適用されてきている。自動コード生成ツールがオブジェクトインターフェース定義(例えば、IDL)を作成するために使用されるときに、サイクルは生成されたインスタンス化可能なオブジェクトに現れる。既存の解決策では、対象とされる言語についてのこれまでの方法においてサイクルを除去するために、モデル内のサイクルを除去すること、すなわち、自動生成されるインスタンス化可能なオブジェクトの実装されるデータオブジェクト又はカスタムリワークにおけるモデル及び表現度の本来の豊富さを失うことが要求される。
本発明の例示的な実施形態は、サイクルを有するモデルに基づきコンピュータ可読プログラムコード生成に関する問題に対処し、概して、オブジェクトサイクルを有するモデルを管理するためのシステム、対応する方法及びコンピュータ可読記憶媒体を対象とする。モデルオブジェクトの関連付けは、現在のところ、破棄されるか、ランタイムコードに組み入れるために広範囲に及ぶカスタマイズが要求されるかのどちらかである。本発明の例示的な実施形態は、豊富なモデル関係の保存とインスタンス化可能なコードとの間に折衷案を提供する;つまり、自動化された方式でこれらの関連付けを保存するだけではなく、プラットフォーム及び言語の間での可搬性のための手段をも提供する。例示的な実施形態は、生成されるインターフェースを多数のプラットフォーム及びコンパイラに移植するための機構を順に提供する、言語非依存技術を適用することができる。
情報モデルからのコードの自動生成は、かなりの時間の節約を提供することができる。情報モデルは、航空機、船舶、海底油田掘削プラットフォーム、配電システム、コンピュータソフトウェアシステム、コンピュータによるゲノム構造などのような、製品、構造又は設備(概して「製品」)の設計など、広範囲のカテゴリーにわたり実装される。情報モデルは、製品及びサービスを、多様な産業及び技術部門で、共同経営者、供給業者及び競合企業と大いに相互運用を可能にするインターフェースで生成される。配電に照らして、本発明の例示的な実施形態は、電器格子上の計測、センサー、データ取得などに関係するデータプロトコル変換及びデータ/情報管理を提供するために利用される。同様に、例示的な実施形態は、ユーティリティ送信及び分配の顧客に配電プロジェクトの共通の動作環境を提供することができる。他の例示的な使用事例は、電力品質の検査、保守、設備管理、分散型エネルギー(マイクログリッドの動作及び将来計画)、連合システム管理、蓄電、需要反応、高度な計量、電力輸送、分配管理及びマイクログリッド設計などを含む。
例示的な実施形態の一つの態様によれば、サイクルマップジェネレーター、オブジェクトレジストリジェネレーター及びランタイムコードジェネレーターを含むモデル管理システムが提供される。前記サイクルマップジェネレーターは、少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルをトラバースするように構成される。前記サイクルマップジェネレーターはまた、前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップを作成するように構成される。前記オブジェクトレジストリジェネレーターは、前記非支配的関連付けを識別し、前記それぞれの第二の又はその後のオブジェクトの第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップを作成するように構成される。
前記ランタイムコードジェネレーターは、前記情報モデル、サイクルマップ及びオブジェクトレジストリマップに基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリを生成するように構成される。前記インスタンス化可能な情報モデルの生成は、前記情報モデルのオブジェクトのそれぞれについて複数のインスタンス化可能なオブジェクトの生成を含む。これは、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される、包含される第一のインスタンス化可能なオブジェクトの代わりに、前記非支配的な関連付けについて、前記オブジェクトレジストリを通してインスタンス化される前記第一のオブジェクトの参照されるオブジェクトを識別するオブジェクト修飾子を含む、前記第二の又はその後のインスタンス化可能なオブジェクトの生成を含む。一つの例では、前記ランタイムコードジェネレーターは、前記包含される第一のインスタンス化可能なオブジェクトを含む前記第二の又はその後のインスタンス化可能なオブジェクトを生成し、次いで前記包含される第一のインスタンス化可能なオブジェクトを除去し、そのオブジェクトを前記オブジェクト修飾子と取り替えるように構成される。
一つの例では、前記モデル管理システムは、少なくともそのいくつかが重み付けされた先入先出技術により除去可能である一又は複数の情報モデルを記憶するように構成されるモデルレポジトリをさらに含む。この例では、前記マップジェネレーターは、前記情報を前記モデルレポジトリから受信するように構成される。
一つの例では、前記モデル管理システムは、前記情報モデルを複数の異なる形式のうちのいずれかから前記情報モデルがトラバースされる共通の形式へ変換するように構成されるアダプタコンポーネントをさらに含む。
一つの例では、前記ランタイムコードジェネレーターは、プロキシパターン及びファクトリメソッドパターンを含む複数のオブジェクト指向の設計パターンを使用して前記インスタンス化可能な情報モデルを生成するように構成される。この例では、前記ランタイムコードジェネレーターにより生成される前記オブジェクトレジストリは、前記参照されるオブジェクトのインスタンス化を管理するために、前記プロキシパターンを実装するように構成されるオブジェクトマネージャー、及び前記参照されるオブジェクトをインスタンス化するために、前記ファクトリメソッドパターンを実装するように構成されるオブジェクトファクトリを含むことができる。さらなる例では、前記オブジェクト指向の設計パターンはまた、シングルトンパターンを含むことができ、前記オブジェクトファクトリは、濃度値に従って前記参照されるパターンのインスタンスを限定するために、シングルトンパターンに従って前記ファクトリメソッドパターンを実装するように構成される。
一つの例では、前記第一のオブジェクトは、支配的な関連付けを通して前記第二のオブジェクトに関係付けられ、前記第二の又はその後のオブジェクトは、前記非支配的な関連付けを通して前記第一のオブジェクトに再び関係付けられる。この例では、前記インスタンス化可能なオブジェクトの生成は、前記支配的な関連付けについて、内部からのインスタンス化のための前記第二のインスタンス化可能なオブジェクトを包含する前記第一のインスタンス化可能なオブジェクトの生成を含むことができる。
例示的な実施形態の他の態様では、オブジェクトサイクルを有するモデルを管理するための方法及びコンピュータ可読記憶媒体が提供される。内部に記憶されるコンピュータ可読プログラムコード部分を含むコンピュータ可読記憶媒体が提供される。コンピュータ可読プログラムコードは、プロセッサによる実行に応じて、装置に、少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルを少なくともトラバースさせ、前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップ(808)を作成させ、かつ非支配的な関連付けを識別し、第二又はその後のオブジェクトそれぞれの第二又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップ(812)を作成させる。前記コンピュータ可読プログラムコードは、装置に、前記情報モデル、サイクルマップ(808)及びオブジェクトレジストリマップ(812)に基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリ(904)をさらに生成させる。次いで、前記インスタンス化可能な情報モデルの生成は、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される、包含される第一のインスタンス化可能なオブジェクトの代わりに、前記非支配的な関連付けについて、前記オブジェクトレジストリ(904)を通してインスタンス化される前記第一のオブジェクトの参照されるオブジェクトを識別するオブジェクト修飾子を含む、前記情報モデルの前記オブジェクトのそれぞれについての複数のインスタンス化可能なオブジェクト(902)の生成を含む。ここで説明される特性、機能及び利点は、本発明の種々の例示的な実施形態において単独で実現可能であるか、又はさらに別の例示的実施形態において組み合わせることができる。このような実施形態のさらなる詳細は、後述の説明及び添付図面に見ることができる。
本開示の例示的な実施形態は、一般的な用語で述べられており、ここで添付図面を参照するが、これらは必ずしも正確な縮尺で描かれているわけではない。
モデルの二つのオブジェクト間での双方向の関連付けからの循環オブジェクト参照を示す。 モデルの二つのオブジェクト間での双方向の関連付けからの二次サイクルを示す。 図1の二つのオブジェクト間の有向グラフの破壊を示す。 一つの例示的な実施形態によるモデル管理システムを示す。 一つの例示的な実施形態による平準化されたノードオブジェクトレジストリを示す。 一つの例示的な実施形態による、循環ノードを平準化する際の一つの例示的な状況を示す。 一つの例示的な実施形態による、循環ノードを平準化する際の一つの例示的な状況を示す。 一つの例示的な実施形態によるコード生成システムを示す。 一つの例示的な実施形態により生成されるランタイムモデルアーティファクトを示す。
本発明のいくつかの実施形態が、添付図面を参照して以下でより詳しく述べられるが、添付図面には本発明のすべての実施形態が示されているわけではない。実際、本発明の種々の実施形態は、多くの異なる形態で実施され、ここで説明される実施形態に限定されるものと解釈されるべきではなく、むしろ本発明が包括的で完全となるように、かつ当業者に本発明の範囲を十分に伝えるために、これらの実施形態が提供される。たとえば、特に明記されない限り、第一の、第二の、第三の、のような何かへの言及は、特定の順序を意味するもの、または「A」、「B」、「C」などの用語体系を意味するものと解釈されるべきではない。また、何か他のもの(特に明記されない限り)の上にあるとされるものがその代わりに下にあってもよく、逆もまた同様である。同じように、何か他の物の左にあるとされる物が代わりに右にあってもよく、逆もまた同様である。全体を通して、類似の参照番号は類似の要素を示している。
ここで図4を参照すると、モデル管理システム400が、本発明の例示的な実施形態に従って示される。このシステムは、一又は複数の機能又は動作を実行するための任意の数の異なるサブシステム(各々は個別のシステム)のいずれかを含むことができる。示されるように、例えば、システムは、製品の情報モデルを受信し、一又は複数のランタイムモデルアーティファクトを自動的に生成するように概して構成されるコード生成システム402を含むことができる。種々の例では、モデルは、航空機、船舶、海底油田掘削プラットフォーム、配電システム、コンピュータソフトウェアシステム、コンピュータによるゲノム構造など、物理的又は非物理的製品のためのものである。製品は、概して、複数のシステム、サブシステム、アセンブリ、サブアセンブリ、コンポーネント、部品など(各々は概して「コンポーネント」)から構成される。モデルは、ノードの階層的なブレークダウンの点から製品及びそのコンポーネントの機能記述を含むことができ、ノード間の接続又は関連付けにより種々のコンポーネント間の機能関係又は関連付けを反映することができる。一つの例では、次いで、ランタイムモデルアーティファクトは、例えば、その一つが製品の設計中にコンポーネント間の相互作用を検証できるように、バーチャル環境での(例えば、コンピュータ上での)実行(ソースコード)のために実行される(マシンコード)又はコンパイルされるコンピュータ可読プログラムコードを含むことができる。
種々の例示的な実施形態では、モデルは、オブジェクト指向の技術を使用して製品及びそのコンポーネントを記述することができる。ゆえに、モデルは、製品のそれぞれのコンポーネントについてのオブジェクトを含むことができ、製品の機能的性能を表すオブジェクトを含むことができる。ランタイムモデルアーティファクトは、モデルのそれぞれのオブジェクトについてのインスタンス化可能なオブジェクトを順に含むことができる、コンピュータ可読プログラムコードを含むことができる。情報モデルは、ゆえに、製品を記述することができ、製品の個々の物理的コンポーネント又はプロセスを記述する複数の「モデルオブジェクト」(又は単に「オブジェクト」)を含む。そして、「インスタンス化可能なオブジェクト」は、製品のそれぞれの物理的コンポーネント又はプロセスを表すソフトウェアオブジェクトを参照することができる。
先に示唆されたように、モデルの種々のオブジェクト(ノード)は、それぞれのオブジェクト間での関連付けを通して関係付けられる。種々の例では、一つのオブジェクトのもう一つのオブジェクトへの関連付けは、それらそれぞれのインスタンス化可能なオブジェクトに反映される。一つのオブジェクトについてのインスタンス化可能なオブジェクトは、他のオブジェクトについてのインスタンス化可能なオブジェクトを包含することができる(包含されるインスタンス化可能なオブジェクトは単に「包含オブジェクト」と言われることもある)。すなわち、一つのオブジェクトのもう一つのオブジェクトへの関連付けは、他のオブジェクトのインスタンス化可能なオブジェクトを包含する一つのオブジェクトのインスタンス化可能なオブジェクトに反映される。この構造において、一つのインスタンス化可能なオブジェクトは、包含オブジェクトに対する親と見なされ、そのオブジェクトは、その親内部からインスタンス化される。例えば、モデルが関連付けA⇒B及びB⇒Aを有するサイクルを包含するインスタンスでは、以下のインスタンス化可能なオブジェクトが生成される。

Figure 0006457732

上記において、bInstanceObject及びaInstanceObjectは、各々が親A及びBそれぞれの内部からインスタンス化される、包含オブジェクトと見なされる。
種々のインスタンスでは、情報モデルは、一又は複数のサイクルを含むことができる。各サイクルは、順に、少なくともそのうちの一つがもう一つのオブジェクトを参照し(照会し)、同一の他のオブジェクト(例えば、図1)又はさらなるオブジェクト(例えば、図2)により再び参照される一連の二以上の関係付けられたオブジェクトを含むことができる。サイクルにおいて、第一のオブジェクトは、前方への、支配的な関連付けを通して、第二のオブジェクトに関係付けられる。第二の又はその後の(例えば、第三の)オブジェクトは、次いで、後方への、非支配的な関連付けを通して、第一のオブジェクトに再び関係付けられる。例えば、オブジェクトAが、オブジェクトAを再び参照するもう一つのオブジェクトBを参照するサイクルを考察する。このインスタンスにおいて、A⇒B(オブジェクトAがオブジェクトBを参照する)は、支配的な関連付けを記述することができる一方で、B⇒A(オブジェクトBはオブジェクトAを参照する)は、非支配的な関連付けを記述することができる。種々の例では、非支配的な関連付け(例えば、B⇒A)は、逆相関と見なされ、参照されるオブジェクト(例えば、オブジェクトA)は逆のオブジェクト(ノード)と見なされる。そして先ほど示唆されたように、「第一の」「第二の」「第三の」などの用語は、コード内でそれぞれのオブジェクトの特定の順序を意味すると見なされるべきではない。
背景技術の部分で説明されたように、情報モデルの自動コード生成の既存の解決策では、モデル内のいずれかのサイクルの除去が必要とされる。同様に、例示的な実施形態のコード生成システム402は、情報モデルのいかなるサイクルをも識別し、そのようなインスタンスごとに、生成されるコードで持続される支配的な関連付けを決定するように構成される。しかし非支配的な関連付けを「取り除く(throw out)」のではなく、例示的な実施形態のコード生成システムは、プロキシを通して関係にアクセスするためのキーとして使用される一又は複数のオブジェクトプロパティを通して、関係を取得して再導入することができる。
例示的な実施形態によれば、コード生成システム402は、豊富なオブジェクト関係を維持するために情報モデルのオブジェクトを平坦化する、又は別の方法で平準化することができる一方で、ふさわしいコンピュータ可読プログラムコードをさらに自動的に生成することができる。先ほど示唆されたように、サイクルは、非支配的な関連付けを通して、第二のオブジェクト又はその後のオブジェクトが第一のオブジェクトに再び関係付けられた状態で、支配的な関連付けを通して、第二のオブジェクト(例えば、オブジェクトB)に関係付けられる第一のオブジェクト(例えば、オブジェクトA)を含むことができる。そして生成されるコード(インスタンス化可能な情報モデル)は、第一の及び第二のオブジェクトのそれぞれについてのインスタンス化可能な第一の及び第二のオブジェクト、及びおそらくその後のオブジェクトのその後のインスタンス化可能なオブジェクトをも含むことができる。
図5の例に示されるように、支配的な関連付けは、内部からのインスタンス化のための第一のインスタンス化可能なオブジェクトにより第二のインスタンス化可能なオブジェクトの包含を通して、生成されたコードに持続される。非支配的な関連付けがなければ、第二の又はその後のインスタンス化可能なオブジェクトは、第二の又はその後のインスタンス化可能なオブジェクトにより包含される第一のインスタンス化可能なオブジェクトの代わりに、第一のオブジェクトの参照されるインスタンス化可能なオブジェクト(又は単に「参照されるオブジェクト」)を識別するオブジェクト修飾子を含むことができる。オブジェクト修飾子は、次いで、ランタイムに共有されるオブジェクトレジストリを通して、参照されるオブジェクトにアクセスするためのキーとして使用される。参照されるオブジェクトは、第一のインスタンス化可能なオブジェクトに対応することがでるが、第二の又はその後のインスタンス化可能なオブジェクト(その親)内での代わりに、オブジェクトレジストリを通してインスタンス化されてもよい。本発明の例示的な実施形態は、第一のオブジェクトについての包含オブジェクトで第二の/その後のインスタンス化可能なオブジェクトを生成し、次いで第二の/その後のインスタンス化可能なオブジェクトからそれぞれの包含オブジェクトを除去し、そのオブジェクトをオブジェクト修飾子と取り替えるように構成されるコード生成システム402に照らして、より具体的に記述される。先の例では、非支配的な関連付けB⇒Aを考えると、包含オブジェクトaInstanceObjectは、除去されてオブジェクト修飾子と取り替えられる。しかしながら、コード生成システムは、第一のオブジェクトの包含オブジェクトの代わりに、オブジェクト修飾子で第二の/その後のインスタンス化可能なオブジェクトを単に生成するように同様に構成することができると理解されるべきである。
オブジェクト修飾子は、任意の数の異なる方法のいずれかにおいて構築することができる。たとえば、オブジェクト修飾子は、完全修飾参照オブジェクト、完全修飾包含オブジェクトネーム及びそれらの濃度を含むJava Script objection notation(JSON)のフォーマットされた文字列を含む。一つの例では、オブジェクト修飾子は、新たなグローバルUID(GUID)プロパティ(例えば、その最も単純なものは、クラスネームそれ自体である)のような、共有されるオブジェクトレジストリ内でのアクセスのために使用される、固有の識別子(UID)により参照されるオブジェクトを固有に識別することができる。
コード生成システム402は、オブジェクト修飾子に基づき、プロキシを通してランタイムのインスタンス化のオブジェクトUIDを包含するためのオブジェクトレジストリを構築することができる。種々の例では、コード生成システムは、レジストリパターン、プロキシパターン、ファクトリメソッドパターン、シングルトンパターンなど、任意の数のオブジェクト指向の設計パターンのいずれかを使用して、これを達成することができる。レジストリパターンは、他のオブジェクトがデータ、設定、値、及び他のオブジェクトにアクセスするために使用することができるオブジェクト(レジストリ)を定義する。プロキシパターンは、他のオブジェクトのサロゲートとしての機能を果たすプロキシオブジェクトを通して、オブジェクトへのメソッド呼び出しを間接的に発生させ、そのオブジェクトへのメソッド呼び出しを委譲する。ファクトリメソッドパターンは、そのパターンを実装するクラスに、どちらのクラスをインスタンス化すべきかを決定させるオブジェクトを作成するファクトリを定義し、クラスにサブクラスへのインスタンス化の延期を許可することができる。そして、シングルトンパターンは、クラスのインスタンス化を一つのオブジェクトに制限する。
オブジェクト定義は、逆オブジェクトの不透明な参照を通して、循環参照を可能にするために、UID及びレジストリアクセス機構(例えば、濃度に基づくシングルトンを使用するなどして、ファクトリメソッドに準拠するプロキシの委譲を包含する)を含むことができる。オブジェクトインターフェース定義を生成することに加え、コード生成システム402は、参照されるオブジェクトへのアクセスを促進するためにプロキシを含むオブジェクトレジストリを作成することができる。この手法のもとで、非支配的な関連付けについての包含オブジェクト(逆オブジェクト)は、除去され、それぞれの包含オブジェクトを固有に識別するオブジェクト修飾子と取り替えられる(例えば、クラス参照によって)。オブジェクトレジストリ及びプロキシは、次いで、これらの参照されるオブジェクトのインスタンス化を許可することができる。
例示的な実施形態のファクトリメソッドに基づく技術は、包含クラスのコンストラクターの参照されるオブジェクトのインスタンス化に基づき、クラスのインスタンス化を防止する循環参照を削除することができる。例示を目的として、一つのクラス(「A」)がもう一つのクラス(「B」)のオブジェクト参照を包含し、クラスBがクラスAのオブジェクト参照を包含し(明白な支配的方向のない双方向の関連付け)、各クラスがそのコンストラクターのオブジェクト参照をインスタンス化する場合に、メモリリークが生じるかもしれない。これを回避するために、クラスAは、GUID及び濃度基本型メンバー変数、並びに基本型オブジェクト修飾子メンバー変数を包含することができ、これらは、オブジェクト参照をインスタンス化するためにオブジェクトレジストリにより使用される先述のレジストリアクセス機構を提供する。オブジェクトレジストリは、ゆえに、オブジェクトモデルで作成される関連付けにより生成されるサイクルの性質(cyclic nature)を破壊する一方で、オブジェクト間の関係を維持することができる。
濃度値が設定されると、オブジェクトレジストリは、多数の関連付けられたオブジェクトを維持することができる。濃度は、包含オブジェクトのインスタンスがどのくらい存在するかを決定することができる。例えば、1対1の関連付けは、インスタンス化を一つのインスタンスに制限することができるのに対し、1対3の関連付けは、ランタイムに三つの別個のインスタンスを許可する。
図6及び図7は、二つの例示的な状況を表す。図6は、インスタンス化可能なオブジェクトAが包含オブジェクトBを包含し、包含オブジェクトを除去し、GUID、濃度及びオブジェクト修飾子を適用するためにコード生成システム402が処理できるインスタンスを示す。図7は、インスタンス化可能なオブジェクトCが包含オブジェクトを処理せず、ゆえに、オブジェクト修飾子を含まないが、GUID及び濃度を適用するためにコード生成システムが処理を行うことができるインスタンスを示す。種々の例では、この処理は、包含オブジェクト又はその子のうちの一つが逆相関を包含する場合のものである。それは、オブジェクトAを処理するオブジェクトBとして現れるかもしれないし、若しくは、より複雑(例えば、A⇒B⇒E⇒G⇒D⇒A)であり及び/又はマルチパス(A⇒B⇒C⇒A及びA⇒B⇒D⇒E⇒G⇒C⇒A)であるかもしれない。
既存の解決策では、モデルオブジェクトの関連付けの豊富さは、しばしば、破棄されるか、又はランタイムコードに組み入れるために広範囲に及ぶ手動カスタマイズを要求するかのどちらかである。例示的な実施形態の手法は、豊富なモデル関係の保存とインスタンス化可能なコードとの間に、自動化された方式でこれらの関連付けを保存するだけではなく、プラットフォームと言語との間での可搬性のための手段をも提供することができる折衷案を提供することができる。手法は、ランタイムでのオブジェクトモデルの関連付けの豊富さを維持する一方で、循環参照の障害の少なくともいくつかを回避する機構を提供することができる。そして付加される恩恵として、言語に依存しない技術は、生成されたインターフェースを多数のプラットフォーム及びコンパイラに移植するための機構を提供することができる。
レジストリパターンを用いる例では、狡猾な(insidious)ガーベジコレクションは、自動化されたソフトウェア生成がJavaのような言語で実装されるインスタンスを開発することができる。これらのインスタンスにおいて、スタックが成長して次に縮小するなら、スタックからポップされる(popped off)オブジェクト(及びこの廃止されたオブジェクトにより参照されるいずれかのオブジェクト)は、もはや参照されないときでさえも、ガーベジコレクションを取得することができないが、これは、廃止された参照をこれらのオブジェクトに維持するスタックに起因しうる。Javaの実装でこれを取り扱うために、オブジェクトレジストリは、想定外のオブジェクトの保存を回避するために、これらのオブジェクトを無効にすることができる。
図8は、一つの例において、図4のコード生成システム402に対応するコード生成システム800を示す。コード生成システムは、概して、その電子表示からインスタンス化可能な情報モデルを自動的に生成するように構成される。示されるように、コード生成システムは、モデルレポジトリ802、アダプタコンポーネント804、ランタイムサイクルマップジェネレーター806及び関連付けられるランタイムサイクルマップ808、オブジェクトレジストリジェネレーター810及び関連付けられるオブジェクトレジストリマップ812、並びにオブジェクト参照マネージャー814を含むことができる。さらに示されるように、コード生成システムは、ランタイムコードジェネレーター816を含むことができる。
モデルレポジトリ802は、持続性のためにマークされるがレポジトリから除去することもできる、一又は複数の製品についての一又は複数の情報モデルを記憶するように構成される。一つの例では、モデルは、古くなった持続性モデルを除去するための明白なユーザダイレクトコマンドに応じて除去される。もう一つの例では、モデルは、システムアドミニストレータにより構成可能である、リソース消費レベルに基づき、重み付けされた先入先出(FIFO)技術によるなどして、その満了により除去される。モデルの満了についての重み付けは、多変量であってもよい。付加的な重み付けが、モデル使用(頻度及び日付)並びにモデルの大きさに基づき提供されてもよい。そして、さらなる重み付けが、最適基準規則(SMR)構文(代数に関する)を使用するなどして、付加されてもよい。
アダプタコンポーネント804は、モデル翻訳のための一又は複数の拡張可能なアダプタを実装するように構成され、これにより多数の異なる形式の情報モデルを処理のための共通の形式に変換することができる。これらの形式は、例えば、インターフェース記述言語(IDL)、ウェブオントロジ言語(OWL)などを含むことができ、それらのいずれかは共通の形式(例えば、IDL)として使用される。この点で、アダプタコンポーネントは、多様な種類及び形式のモデルを取り込むための拡張できる手法、及び異なるターゲットコンパイラ及びランタイムのためのソースコードの作成を提供することができる。
先に示されたように、モデルは、階層的なブレークダウンの点で製品及びそのコンポーネントの機能記述を含むことができ、種々のコンポーネント間で機能関係又は関連付けを反映することができる。いったん共通の形式に変換されると、次いで、サイクルマップジェネレーター806は、モデル階層をトラバースし、モデル内で任意のサイクルを識別することができる。サイクルマップジェネレーターは、後に生成されるランタイムモデルアーティファクトで持続されるサイクルごとに支配的な関連付け、又は除去される非支配的な関連付けを決定することができる。いくつかのインスタンスにおいて、サイクルマップジェネレーターは、支配的な関連付け(これにより、非支配的な関連付け)を示すことができる、有向オブジェクト参照を識別するように構成される。他の例では、オブジェクト参照は、支配的な/非支配的な関連付けを導くために、濃度など、追加の属性又はプロパティを必要とする、非有向の(双方向の)関連付けから導かれる。例えば、一対多数の関連付け(例えば、「多数の」Bオブジェクトと関連付けられる「一つの」Aオブジェクト)において、A⇒Bの関連付けは、支配的な関連付けと見なされる。
さらに他のインスタンスでは、支配的な/非支配的な関連付けは、非支配的であり、すべての双方向のオブジェクト関係は、持続されることが要求される。これらの例では、任意の数の異なる手法がとられる。一つの手法によれば、割り当ては、オブジェクトの「人気度」(例えば、オブジェクト間の接続又は関連付けの数)、及びオブジェクトの複雑性(例えば、人気度/複雑性の低いオブジェクトは、逆オブジェクトと見なされうる)のような一般的要因に基づき、行われる。オブジェクトの複雑性は、オブジェクトのプロパティ及び関連付けの数並びに大きさにより、決定される。この手法を使用すると、人気度が決定的でないときに使用される二次的な重み付けをノードの複雑性が提供しつつ、最も人気度の高いオブジェクト(例えば、最も多い関連付けを有するオブジェクト)が支配的なオブジェクト(即ち、非支配的な関連付けにおける逆オブジェクトと関連付けられるオブジェクト)と見なされる。ときに支配の決定を助けるドメイン特化型プロパティが存在すると(例えば、シリアル番号、物理的資源を支配的なもととして接地すること、ゆえに支配的な/非支配的な関連付けのソースなどのプロパティの存在)、これは、一組のプログラム可能な規則を使用してドメインに対して調整される。
もう一つの手法によれば、又は先ほどの手法が支配的な/非支配的な関連付けを識別できない例においては、それぞれの関連付けは、無作為に割り当てられる。これは、例えば、濃度、人気及び複雑性(及びいかなるドメイン特化型識別子)が支配的な/非支配的な関連付けを決定することができないときに、発生しうる。若しくは別の例では、両方の関連付けは、後に生成されるランタイムモデルアーティファクトで破壊されてもよいが、非支配的な関連付けとして持続される。
サイクルマップジェネレーター806が情報モデルのサイクルにおいて支配性を決定する正確な方法にかかわらず、サイクルマップジェネレーターは、サイクルマップ808でそれを取得することができる。すなわち、サイクルマップジェネレーターは、情報モデルのサイクルごとに、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップを作成することができる。これらの非支配的な関連付けは、除去及びオブジェクト修飾子との取り替えのためのそれぞれの包含オブジェクトを含むことができる。
オブジェクトレジストリジェネレーター810は、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを(及びおそらく第二の又はその後のオブジェクトの情報モデルの一又は複数の他のオブジェクトへのいずれかの関連付けを)識別し、第二の又はその後のオブジェクトそれぞれについての第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含む、オブジェクトレジストリマップ812を作成することができる。これらのライフサイクルポリシーは、例えば、量及び/又はエージングポリシーにおける一又は複数の制約を含むことができる。これらのエージングポリシーは、必要でないときにはオブジェクトの最適な破壊のために使用され、作成(例えば、新たなオブジェクトを生成するための時間)、保守(例えば、メモリ)及び/又は破壊(例えば、ガーベジコレクション)を含むコンピュータによるペナルティに対して取引される。種々の例では、オブジェクトレジストリマップ812は、固有のオブジェクトUID(例えば、GUID)を維持することのみでき、これらの例において、オブジェクトレジストリマップはまた、固有のオブジェクトカウントを管理することもできる。オブジェクトUIDの複製インスタンスは、オブジェクト参照マネージャー814により管理される。
ランタイムコードジェネレーター816は、情報モデル、サイクルマップ808、オブジェクトレジストリマップ812、及びおそらくオブジェクト参照マネージャー814からの入力に基づき、情報モデルについてのランタイムモデルアーティファクトを生成することができる。ランタイムコードジェネレーターは、オブジェクトレジストリキーについてのオブジェクト修飾子を識別及び作成するために、サイクルマップに持続されるサイクルを使用して、モデルを事前に処理することができる。ランタイムモデルアーティファクトは、情報モデルのオブジェクトのそれぞれについての複数のインスタンス化可能なオブジェクトを有するインスタンス化可能な情報モデルを含むことができ、その種々のオブジェクトは、オブジェクト修飾子を含むことができる。ランタイムモデルアーティファクトはまた、オブジェクト修飾子に基づき、参照されるオブジェクトにアクセスするためのオブジェクトレジストリを含むことができる。オブジェクト参照マネージャーにより管理されるオブジェクトの複製インスタンスは、ランタイムコードジェネレーターに渡されるが、一つの例では、参照されるオブジェクトのインスタンスの数をふさわしい濃度値に従って制限することができる。
図9は、一つの例示的な実施形態によるランタイムモデルアーティファクト900を示す。示されるように、アーティファクトは、対象とされるコンパイル可能な又は実行可能な言語のインスタンス化可能なオブジェクト902、及びインスタンス化可能な情報モデル内で参照されるオブジェクトの管理及びインスタンス化に責任を負うオブジェクトレジストリ904を有する、インスタンス化可能な情報モデルを含むことができる。モデルのインスタンス化可能なオブジェクトの種々のオブジェクトは、オブジェクトレジストリに対するオブジェクト修飾子906を含むことができる。オブジェクトレジストリは、オブジェクトマネージャー908、ファクトリ910及びオブジェクトレジストリマップ912(例えば、オブジェクトレジストリマップ812)を含むことができる。
オブジェクトマネージャー908は、オブジェクトライフサイクル全体にわたり参照されるオブジェクトのインスタンスの維持に責任を負う、プロキシパターンを実装するように構成される。オブジェクトマネージャーは、オブジェクトのインスタンス化(作成)、オブジェクト間のアクセス(ライフ)及び破壊(デス)に責任を負う。主要なオブジェクト(サイクルを包含しないか支配的なオブジェクト/ノードとして指定されると決定されたオブジェクト)が非支配的なオブジェクトの作成をリクエストすると、オブジェクトマネージャーは、非支配的なオブジェクトの作成(又は再利用)を管理することができる。
ファクトリ910は、ファクトリメソッドパターンを実装するように構成され、参照されるオブジェクトのインスタンス化のためにオブジェクトマネージャー908により使用される。一つの例では、ファクトリは、濃度値に従って参照されるパターンのインスタンスを制限するために、シングルトンパターンに従ってファクトリメソッドパターンを実装するように構成される。そしてオブジェクトレジストリマップ912の使用を通して、オブジェクトマネージャーは、インスタンス化可能なオブジェクトライフサイクルポリシーを管理することができる―つまり、サイクルマップ808により命令される要求及び非支配的なオブジェクト識別及び平坦化を統制する規則に関して、作成、再利用及び/又は破壊を決定する。
非支配的な関連付けのオブジェクト修飾子906を有するインスタンス化可能なオブジェクト902は、それぞれの参照されるオブジェクトのインスタンスをリクエストするために、オブジェクト修飾子とともにマネージャーアクセス機構メソッドを使用することができる。参照されるオブジェクトが包含オブジェクト(既存の、インスタンス化可能な親オブジェクトのメンバー)としてインスタンス化される必要があるときには、既存の親オブジェクトは、オブジェクトマネージャーアクセス機構メソッドを使用することができる。この方法は、入力パラメータとしてオブジェクト修飾子を受け入れ、インスタンス化される、参照されるオブジェクトを戻すことができる。インスタンス化される、参照されるオブジェクトがすでに存在するなら、既存のインスタンス化される、参照されるオブジェクトは、戻される(濃度値は、インスタンス化される新たな参照されるオブジェクトの数に影響を与えうる)。
例示的な実施形態によれば、修正されるDAGがインスタンス化可能なモデルオブジェクト902の間で関連付けを表す必要があるインスタンスにおいては、ランタイムモデルアーティファクト900は、任意の数の異なる方法で通常の自動生成されるインスタンス化可能なモデルと異なってもよい。DAGに基づくモデルの作成で除去される循環モデル参照は、インスタンス化可能なモデルにおいて再構成され、文字列型(type string)のオブジェクト修飾子として表現される。オブジェクトレジストリの関連付けを有するオブジェクトは、GUID、及びおそらく濃度値も処理することができる。
ランタイムに、オブジェクトレジストリ904は、事前に計算された濃度値に基づき、非支配的な関連付け、及びオブジェクトレジストリ内に包含されるオブジェクトレジストリマップ912を管理することができる。インスタンス可能なオブジェクト902が参照されるオブジェクトへのアクセスをリクエストするインスタンスにおいて、それは、文字列(string)オブジェクトのオブジェクト修飾子を含むオブジェクトアクセス機構キーをオブジェクトレジストリに提示することができる。参照されるオブジェクトは、必要とされ、それぞれのインスタンス化可能なオブジェクトに戻されると、オブジェクトレジストリによりインスタンス化される。オブジェクトレジストリは、新たなオブジェクトをインスタンス化するのではなく、元のオブジェクトを戻すことにより、逆方向参照を管理することができる。このように、例示的な実施形態のランタイムモデルアーティファクト900は、後方への関連付け、すなわち逆ノードの除去を妥協により解決する必要がない。
本発明の実施形態によれば、モデル管理システム400、及びコード生成システムを含むそのサブシステムは、種々の手段により実装される。同様に、それぞれの要素の各々を含むコード生成システム800の例は、例示的な実施形態に従い種々の手段により実装される。システム、サブシステム及びそれぞれの要素を実装するための手段は、単独のハードウェア、或いは、コンピュータで読込可能な記憶媒体からの一又は複数のコンピュータプログラムコード命令、プログラム命令又は実行可能なコンピュータで読込可能なプログラムコード命令の指示下にあるハードウェアを備えることができる。
一つの例では、ここで図示され記述されるシステム、サブシステム、及びそれぞれの要素として機能する又はそうでなければそれらを実装するように構成される一又は複数の装置が提供される。複数の装置を含む例では、それぞれの装置は、有線又は無線ネットワークなどを介して直接的に又は間接的になど、任意の数の異なる方法で、互いに接続され、又はそうでなければ通信することができる。
概して、本発明の例示的実施形態の装置は、一又は複数の固定又は持ち運び可能な電子装置を備える、含む、又はそのような電子装置内において実施される。適する電子機器の例は、スマートフォン、タブレット型コンピュータ、ノート型コンピュータ、デスクトップコンピュータ、ワークステーションコンピュータ、サーバコンピュタなどを含む。装置は、メモリ(例えば、記憶装置)に接続されたプロセッサ(たとえば、プロセッサユニット)などの任意の数のコンポーネントそれぞれの一又は複数を備えることができる。
プロセッサは、概して、たとえば、データ、コンピュータ可読プログラムコード、命令(ソフトウェア、ファームウェアなど、概して「コンピュータプログラム」)などの情報、及び/又は他の適する電子情報を処理できる任意のハードウェアである。具体的には、例えば、プロセッサは、プロセッサに搭載された状態で記憶された又はそうでない場合はメモリ(同じ又は別の装置の)に記憶された、コンピュータプログラムを実行するように構成することができる。プロセッサは、特定の実施形態に応じて、任意の数のプロセッサ、マルチプロセッサコア、又は他の何らかの種類のプロセッサとしてもよい。さらに、プロセッサは、単一のチップ上に主要プロセッサと共に一つ以上の二次プロセッサが存在する任意の数の異種プロセッサシステムを使用して実装されてもよい。別の例示的な例として、プロセッサは同一形態の複数のプロセッサを含む対称型マルチプロセッサシステムであってもよい。さらに別の例では、プロセッサは、一又は複数の特定用途向け集積回路(ASIC)、フィールドプログラム可能なゲートアレイ(FPGA)などとして実施される、又はそうでなければそれらを含むことができる。ゆえに、プロセッサは一又は複数の機能を実行するためのコンピュータプログラムを実行できるが、種々の例のプロセッサは、コンピュータプログラムの補助がなくても一又は複数の機能を実行することができる。
メモリは、概して、一時的及び/又は恒久的に、データ、コンピュータプログラム及び/又は他の適切な情報などの情報を記憶できる任意のハードウェアである。メモリは、揮発性及び/又は不揮発性メモリを含み、固定されても取り外し可能でもよい。適切なメモリの例は、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、ハードドライブ、フラッシュメモリ、サムドライブ、取り外し可能なコンピュータディスケット、光ディスク、磁気テープ又はそれらの何らかの組み合わせを含む。光ディスクには、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)、及びDVDなどが含まれる。種々の例では、メモリは、情報を記憶できる永続的装置として、一つの場所から別の場所へ情報を伝送できる電子的な一時的信号などのコンピュータ可読伝送媒体と区別される、コンピュータ可読記憶媒体としてもよい。本明細書に記載されるコンピュータ可読媒体は、概して、コンピュータ可読記憶媒体又はコンピュータ可読伝送媒体を指している。
メモリに加えて、プロセッサは、情報を表示、送信及び/又は受信するための一又は複数のインターフェースに接続することもできる。インターフェースは、通信インターフェース(たとえば通信ユニット)及び/又は一又は複数のユーザインターフェースを含むことができる。通信インターフェースは、他の装置やネットワークへ及び/又はそれらから情報を送信及び/又は受信するように構成される。通信インターフェースは、物理的(有線)及び/又は無線通信リンクにより情報を送信及び/又は受信するように構成される。適切な通信インターフェースの例は、ネットワークインターフェースコントローラ(NIC)、無線NIC(WNIC)などを含む。
ユーザインターフェースは、ディスプレイ及び/又は一又は複数のユーザ入力インターフェース(例えば、入出力ユニット)を含むことができる。ディスプレイは、適する例として液晶ディスプレイ(LCD)、発光ダイオードディスプレイ(LED)、プラズマディスプレイパネル(PDP)などを含む、ユーザに情報を提示又は他の方法で表示するように構成される。ユーザ入力インターフェースは、有線であっても又は無線であってもよく、処理、記憶及び/又は表示用などの装置内にユーザから情報を受信するように構成される。ユーザ入力インターフェースの適する例は、マイク、画像又はビデオキャプチャー装置、キーボード又はキーパッド、ジョイスティック、タッチセンシティブサーフェス(タッチスクリーンとは別個の、又はタッチスクリーンに統合されたもの)、生物測定センサーなどを含む。ユーザインターフェースは、プリンタやスキャナなどの周辺機器と通信する一又は複数のインターフェースをさらに含むことができる。
上述のように、プログラムコード命令は、システム、サブシステム及びここで述べられるそれぞれの要素の機能を実装するために、メモリに記憶され、プロセッサで実行される。理解されるように、任意の適するプログラムコード命令は、コンピュータ可読記憶媒体からコンピュータ又はその他のプログラム可能な装置に読み込まれ、ここで特定される機能を実装する手段となるように特定のマシンが製造される。また、これらのプログラムコード命令は、コンピュータ、プロセッサ、又はその他のプログラム可能な装置を特定の方法で機能させることにより特定のマシン又は特定の製造品を生成する、コンピュータ可読記憶媒体に記憶される。コンピュータ可読記憶媒体に記憶された命令は、製造品を生産することができ、この製造品はここで述べられた機能を実装するための手段となる。プログラムコード命令は、コンピュータ可読記憶媒体から読み出され、コンピュータ、プロセッサ、または他のプログラム可能な装置に読み込まれて、コンピュータ、プロセッサ、または他のプログラム可能な装置において、またはそれらによって実施される動作を実行するようにコンピュータ、プロセッサ、または他のプログラム可能な装置を構成する。
一つの命令が一度に読み出され、読み込まれ、実行されるように、プログラムコード命令の読み出し、読み込み及び実行を連続して行われる。いくつかの例示的実施態様では、複数の命令をまとめて読み出し、読み込み、及び/又は実行するために、読み出し、読み込み、及び/又は実行を並行して行なうことができる。コンピュータ、プロセッサ、又はその他のプログラム可能な装置により実行される命令がここで述べられる機能を実装するための動作を提供するために、プログラムコード命令の実行により、コンピュータで実装されるプロセスが生成される。
プロセッサによる命令の実行、又はコンピュータで可読記憶媒体での命令の記憶により、特定の機能を実行するための動作の組み合わせがサポートされる。さらに、一又は複数の機能、及び機能の組み合わせは、専用ハードウェアに基づくコンピュータシステム及び/又は特定の機能を実行するプロセッサ、或いは専用ハードウェアとプログラムコード命令との組み合わせにより実装されることも理解されたい。
上述の説明及び関連する図面に提示された教示の恩恵を有するこのような発明に関連する当業者には、本発明の多数の変形例および他の実施形態が想起されるだろう。したがって、本発明は本明細書に開示した特定の例示的実施形態に限定されるものでなく、修正例及び他の実施形態が、特許請求の範囲に含まれると理解されたい。さらに、上述の説明及び添付図面は、要素及び/又は機能の特定の例示的組み合わせに照らして、例示的実施形態を説明しているが、当然のことながら、特許請求の範囲から逸脱せずに、別の実施形態によって要素及び/又は機能の異なる組み合わせを提供することができる。この点で、例えば、明確に先ほど述べられたものとは異なる、要素及び/又は機能の組み合わせも、特許請求の範囲の一部に明記されうるものと考えられる。ここでは特定の用語が用いられるが、それらは、一般的及び説明的な意味でのみ使用されており、限定を目的とするものではない。
400 モデル管理システム
800 コード生成システム
900 ランタイムモデルアーティファクト

Claims (10)

  1. コード生成システム(402)を備えるモデル管理システム(400)であって、
    少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルをトラバースするように構成されるサイクルマップジェネレーター(806)であって、前記サイクルマップジェネレーター(806)は、前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップ(808)を作成するように構成される、前記サイクルマップジェネレーター(806)、
    前記非支配的関連付けを識別し、前記二の又はその後のオブジェクトそれぞれについての第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップ(812)を作成するように構成される、オブジェクトレジストリジェネレーター(810)、並びに
    前記情報モデル、サイクルマップ(808)及びオブジェクトレジストリマップ(812)に基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリ(904)を生成するように構成される、ランタイムコードジェネレーター(816)
    を備え、
    前記インスタンス化可能な情報モデルの生成は、前記非支配的な関連付けについて、オブジェクト修飾子(906)を含む前記第二の又はその後のインスタンス化可能なオブジェクトの生成を含む、前記情報モデルの前記オブジェクトのそれぞれについて複数のインスタンス化可能なオブジェクト(902)の生成を含み、
    前記ランタイムコードジェネレーター(816)は、含される第一のインスタンス化可能なオブジェクトを含む前記第二の又はその後のインスタンス化可能なオブジェクトを生成し、次いで、前記包含される第一のインスタンス化可能なオブジェクトを除去し、そのオブジェクトを、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される前記包含される第一のインスタンス化可能なオブジェクトの代わりに、前記オブジェクトレジストリ(904)を通してインスタンス化される前記第一のオブジェクトについての参照ブジェクトを識別する前記オブジェクト修飾子(906)と取り替え、それにより、オブジェクト間の係を維持しながら、前記情報モデルで作成される前記関連付けにより生成される前記サイクルの性質を破壊するように構成される、モデル管理システム(400)。
  2. 前記オブジェクト修飾子(906)は、オブジェクトレジストリを通して前記参照ブジェクトにアクセスするためのキーとして使用される、請求項1に記載のモデル管理システム(400)。
  3. 前記第一のオブジェクトは、支配的な関連付けを通して前記第二のオブジェクトに関係付けられ、前記第二の又はその後のオブジェクトは、前記非支配的な関連付けを通して前記第一のオブジェクトに再び関係付けられ、及び
    前記インスタンス化可能なオブジェクト(902)の生成は、前記支配的な関連付けについて、内部からのインスタンス化のための前記第二のインスタンス化可能なオブジェクトを包含する前記第一のインスタンス化可能なオブジェクトの生成を含む、請求項1に記載のモデル管理システム(400)。
  4. 前記ランタイムコードジェネレーター(816)は、プロキシパターン及びファクトリ(910)メソッドパターンを含む複数のオブジェクト指向の設計パターンを使用して前記インスタンス化可能な情報モデルを生成するように構成され、及び
    前記ランタイムコードジェネレーター(816)により生成される前記オブジェクトレジストリ(904)は、前記参照ブジェクトのインスタンス化を管理するために、前記プロキシパターンを実装するように構成されるオブジェクトマネージャー(908)、及び前記参照ブジェクトをインスタンス化するために、前記ファクトリ(910)メソッドパターンを実装するように構成されるオブジェクトファクトリ(910)を含む、請求項1から3のいずれか一項に記載のモデル管理システム(400)。
  5. 前記オブジェクト指向の設計パターンは、シングルトンパターンをさらに含み、及び
    オブジェクトファクトリ(910)は、濃度値に従って前記参照オブジェクトのインスタンスを制限するために、前記シングルトンパターンに従って前記ファクトリ(910)メソッドパターンを実装するように構成される、請求項4に記載のモデル管理システム(400)。
  6. 少なくともそのいくつかが重み付けされた先入先出技術に従って除去できる一又は複数の情報モデルを記憶するように構成されるモデルレポジトリ(802)であって、前記サイクルマップジェネレーター(806)は、前記情報モデルを前記モデルレポジトリ(802)から受信するように構成される、前記モデルレポジトリ(802)をさらに備える、請求項1から5のいずれか一項に記載のモデル管理システム(400)。
  7. 前記情報モデルを、複数の異なる形式のいずれかから、前記情報モデルがトラバースされる共通の形式へ変換するように構成されるアダプタコンポーネント(804)をさらに備える、請求項1から6のいずれか一項に記載のモデル管理システム(400)。
  8. コード生成のための方法であって、
    少なくともそのいくつかがサイクルを形成する複数のオブジェクトを有する情報モデルをトラバースすること、及び前記サイクルについて、第二の又はその後のオブジェクトの第一のオブジェクトへの非支配的な関連付けを識別するサイクルマップ(808)を作成すること、
    前記非支配的な関連付けを識別し、前記二の又はその後のオブジェクトそれぞれについての第二の又はその後のインスタンス化可能なオブジェクトの一又は複数のライフサイクルポリシーを含むオブジェクトレジストリマップ(812)を作成すること、並びに
    前記情報モデル、サイクルマップ(808)及びオブジェクトレジストリマップ(812)に基づき、インスタンス化可能な情報モデル及びオブジェクトレジストリ(904)を生成すること
    を含み、
    前記インスタンス化可能な情報モデルの生成は、前記非支配的な関連付けについて、オブジェクト修飾子を含む前記第二の又はその後のインスタンス化可能なオブジェクトの生成を含む、前記情報モデルの前記オブジェクトのそれぞれについて複数のインスタンス化可能なオブジェクト(902)の生成を含み、
    前記インスタンス化可能な情報モデルを生成することは、含される第一のインスタンス化可能なオブジェクトを含む前記第二の又はその後のインスタンス化可能なオブジェクトを生成すること、次いで、前記包含される第一のインスタンス化可能なオブジェクトを除去すること、及びそのオブジェクトを、前記第二の又はその後のインスタンス化可能なオブジェクト内からインスタンス化される前記包含される第一のインスタンス化可能なオブジェクトの代わりに、前記オブジェクトレジストリ(904)を通してインスタンス化される前記第一のオブジェクトについての参照ブジェクトを識別する前記オブジェクト修飾子と取り替えること、それにより、オブジェクト間の係を維持しながら、前記情報モデルで作成される前記関連付けにより生成される前記サイクルの性質を破壊することを含む、コード生成のための方法。
  9. 前記オブジェクト修飾子(906)は、オブジェクトレジストリを通して前記参照ブジェクトにアクセスするためのキーとして使用される、請求項8に記載の方法。
  10. 前記第一のオブジェクトは、支配的な関連付けを通して前記第二のオブジェクトに関係付けられ、前記第二の又はその後のオブジェクトは、前記非支配的な関連付けを通して前記第一のオブジェクトに再び関係付けられ、及び
    前記インスタンス化可能なオブジェクト(902)の生成は、前記支配的な関連付けについて、内部からのインスタンス化のための前記第二のインスタンス化可能なオブジェクトを包含する前記第一のインスタンス化可能なオブジェクトの生成を含む、請求項8に記載の方法。
JP2014079825A 2013-04-11 2014-04-09 オブジェクトサイクルを有するモデルの管理 Active JP6457732B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/860,676 2013-04-11
US13/860,676 US20140309970A1 (en) 2013-04-11 2013-04-11 Managing a model having an object cycle

Publications (2)

Publication Number Publication Date
JP2014206976A JP2014206976A (ja) 2014-10-30
JP6457732B2 true JP6457732B2 (ja) 2019-01-23

Family

ID=50287867

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014079825A Active JP6457732B2 (ja) 2013-04-11 2014-04-09 オブジェクトサイクルを有するモデルの管理

Country Status (4)

Country Link
US (1) US20140309970A1 (ja)
EP (1) EP2790137A1 (ja)
JP (1) JP6457732B2 (ja)
CN (1) CN104102971B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8756614B2 (en) * 2013-06-05 2014-06-17 Splunk Inc. Central registry for binding features using dynamic pointers
US10061626B2 (en) 2013-06-05 2018-08-28 Splunk Inc. Application framework providing a registry for mapping names to component instances
US9594545B2 (en) 2013-06-05 2017-03-14 Splunk Inc. System for displaying notification dependencies between component instances
US10296314B2 (en) * 2016-11-01 2019-05-21 Facebook, Inc. Detecting and remedying memory leaks caused by object reference cycles
CN109634835B (zh) * 2017-10-09 2021-07-27 腾讯科技(深圳)有限公司 内存泄漏分析方法及相关装置
CN113534730B (zh) * 2021-06-29 2022-09-16 广东利元亨智能装备股份有限公司 基于模型的plc控制代码生成方法、系统、装置及存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5517645A (en) * 1993-11-05 1996-05-14 Microsoft Corporation Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager
US6473773B1 (en) * 1997-12-24 2002-10-29 International Business Machines Corporation Memory management in a partially garbage-collected programming system
JP2000039998A (ja) * 1998-07-23 2000-02-08 Nippon Telegr & Teleph Corp <Ntt> オブジェクト指向ソフトウェア部品変更支援方法及び装置及びオブジェクト指向ソフトウェア部品変更支援プログラムを格納した記憶媒体
US6721807B2 (en) * 2000-08-10 2004-04-13 International Business Machines Corporation Extensible and efficient double dispatch in single-dispatch object-oriented programming languages
US7069540B1 (en) * 2001-07-02 2006-06-27 Unisys Corporation COM persistence model
US6928316B2 (en) * 2003-06-30 2005-08-09 Siemens Medical Solutions Usa, Inc. Method and system for handling complex inter-dependencies between imaging mode parameters in a medical imaging system
US7584462B2 (en) * 2003-11-24 2009-09-01 Laszlo Systems, Inc. System for optimizing application start-up
JP2005222221A (ja) * 2004-02-04 2005-08-18 Hitachi Ltd 組込コントローラ開発ツール、組込コントローラ、及び組込コントローラ開発プロセス
US20070094219A1 (en) * 2005-07-14 2007-04-26 The Boeing Company System, method, and computer program to predict the likelihood, the extent, and the time of an event or change occurrence using a combination of cognitive causal models with reasoning and text processing for knowledge driven decision support
JP2006293437A (ja) * 2005-04-05 2006-10-26 Canon Inc プログラムコード生成装置及び生成方法
FR2906382B1 (fr) * 2006-09-25 2008-11-14 Canon Kk Procedes et dispositifs pour optimiser le traitement xml
US11049048B2 (en) * 2008-11-06 2021-06-29 International Business Machines Corporation Managing reusable business process modeling (BPM) assets
CN101464799A (zh) * 2009-01-16 2009-06-24 天津大学 基于可视化建模的mpi并行程序设计系统及框架代码自动生成方法
GB0907171D0 (en) * 2009-04-27 2009-06-10 Springsource Ltd Method and apparatus for automatically generating source code files in a storage unit
US8887142B2 (en) * 2010-03-10 2014-11-11 Microsoft Corporation Loop control flow diversion
US8381195B2 (en) * 2010-06-17 2013-02-19 Microsoft Corporation Implementing parallel loops with serial semantics
US9342274B2 (en) * 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US9032326B2 (en) * 2012-06-21 2015-05-12 Sap Se Late instantiation of dependent objects

Also Published As

Publication number Publication date
EP2790137A1 (en) 2014-10-15
JP2014206976A (ja) 2014-10-30
CN104102971A (zh) 2014-10-15
CN104102971B (zh) 2020-04-07
US20140309970A1 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
JP6457732B2 (ja) オブジェクトサイクルを有するモデルの管理
US7941309B2 (en) Modeling IT operations/policies
Miles et al. Prime: A methodology for developing provenance-aware applications
US7644377B1 (en) Generating a configuration of a system that satisfies constraints contained in models
US8745577B2 (en) End to end automation of application deployment
US20070174106A1 (en) Method for reducing implementation time for policy based systems management tools
US20150199378A1 (en) Method and apparatus for realizing a dynamically typed file or object system enabling a user to perform calculations over the fields associated with the files or objects in the system
US20110153610A1 (en) Temporal scope translation of meta-models using semantic web technologies
US9317258B2 (en) Dynamic validation of models using constraint targets
Igamberdiev et al. An integrated multi-level modeling approach for industrial-scale data interoperability
US20120102456A1 (en) System and Method of Annotating Class Models
US10581701B2 (en) Declarative service domain federation
US20090150472A1 (en) Method for non-disruptively associating applications and middleware components with information technology infrastructure
CA2759516A1 (en) Serialization of pre-initialized objects
Zanoni et al. Pattern detection for conceptual schema recovery in data‐intensive systems
US20090094577A1 (en) Generating data access operations based on a data model using a data services model
US8086997B2 (en) Detecting aspectual behavior in unified modeling language artifacts
Diepenbrock et al. An ontology-based approach for domain-driven design of microservice architectures
US20130326464A1 (en) SADL Consumption Service
US20210173641A1 (en) Generation of knowledge graphs based on repositories of code
Jekjantuk et al. Modelling and reasoning in metamodelling enabled ontologies
JP2009266231A (ja) コンピュータ・アプリケーションを開発するためのドメイン・モデル概念
De Carlos et al. MQT, an Approach for Run-Time Query Translation: From EOL to SQL.
Wenzel Ontology-driven application architectures with KOMMA
US20120011157A1 (en) Method and system for inferencing taxonomy topic concept objects using a metamodel instance model

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180320

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180619

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181127

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181221

R150 Certificate of patent or registration of utility model

Ref document number: 6457732

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250