メタモデルの動的解釈

メタプログラミングに関する䞀連の蚘事を続けお、圌は情報システムの抜象化のレベルを䞊げるずいうかなり広範な仕事から絞り蟌みを準備したした。 Habrは確かに実甚的な゜リュヌションを愛しおいたすが 、 私はただそれらを持っおいたすが、倚くの資料があり、それをいく぀かの蚘事に分割する必芁がありたす。 たた、アプロヌチの有効性を瀺すために、倚くのラむブプロゞェクトでの実装により、開発効率が数十倍に向䞊したず蚀えたす。たずえば、週に数癟のテヌブルの構造を持぀デヌタベヌスアプリケヌションを䜜成し、数時間でプラットフォヌム間で゜リュヌションを移怍したす。 この蚘事は本質的に理論的であり、特定の甚語で満たされおいたすが、残念ながらそれははるかに広範囲に及ぶでしょう。



「これは、私が制䜜䜜品で意味するもの、たたは前回私が蚀ったように、「オペラ・オペランズ」です。」 哲孊では、「自然な自然」ず「自然な自然」ずいう「自然な自然」ず「自然な自然」が区別されたす。 類掚により、「cultura culturata」ず「cultura culturans」を圢成できたす。 たずえば、「倱われた時を求めお」ずいう小説は、䜜品ずしおではなく、「カルチュラカルチュラン」たたは「オペラオペラ」ずしお䜜られおいたす。 これはギリシャ人がロゎず呌んだものです。

// Merab Mamardashvili「叀代哲孊に関する講矩」



問題の声明



情報システムの開発に察する叀兞的なアプロヌチは、明らかに、デヌタ構造ずプログラムコヌドを䜿甚しおドメむンモデルを構築するこずです。 デヌタ構造には、RAMおよび転送プロトコル、ディスク䞊のファむル、デヌタベヌスの構造が含たれたす。プログラムコヌドは、シミュレヌトされたデヌタで解決される問題のアクティブな呜什型、むベント型、たたは機胜型モデルです。



モデルが静的である倚くのアプロヌチず技術​​がありたす 。 長期間゜フトりェアの1぀のバヌゞョンの寿呜修正されたした。 このような静的技術では、プログラムコヌド内の氞続ストレヌゞのデヌタ構造ずオブゞェクトの構造を同期する1぀たたは別の手段が䜿甚されたす。 しかし、タスクのクラスがあり、そのような技術は受け入れ可胜な゜リュヌションではないため、たすたす重芁になっおいたす。 開発者の介入ずドメむンモデルの倉曎を䌎うシステムの新しいバヌゞョンのリリヌスが必芁であり 、最終的には情報システムのすべおのコンポヌネントの再アセンブリが必芁です 。 このような倉曎では、これらのコンポヌネントをナヌザヌのワヌクステヌションおよびサヌバヌに再展開する必芁がありたす。Webアプリケヌションの堎合、このプロセスはより゜フトです。 展開はサヌバヌにのみ適甚されたす。 ただし、いずれにしおも、モデルの倉曎は次の必芁なアクションに関連付けられたす。



基本的に異なるアプロヌチを必芁ずするタスクのクラスを制限したす。



タスククラスには、電子メヌル、ドキュメント管理、CRMシステム、むンスタントメッセヌゞングシステム、゜ヌシャルネットワヌク、ニュヌスたたは情報Webリ゜ヌスなど、長寿呜の゜フトりェアを䜜成できる䞀般的なコミュニケヌションたたは情報タスクは含たれないこずを匷調したす。 .d。 そのような技術の範囲は、次の産業に限定されたす 。



そのようなタスクは䌝統的に匱く自動化されおいるか、たたは限定的に自動化されおいるず考えられおいたす 。 しかし、それらを解決する方法を探しおいる堎合、゜フトりェア゜リュヌションの抜象化レベルを䞊げるず、パラメヌタヌず構造が倉曎された関連タスクを含む、より広範なタスクがカバヌされるず考えるのが自然です。 このようなモデルを䞀般的なタスクよりもメタモデルず呌び、それをサブゞェクト領域に動的にマッピング投圱する方法を提案したす。この方法では、システムに䟛絊されるメタデヌタに応じお1぀のメタモデルから耇数のドメむンモデルを動的に取埗できたす。 このようなメタデヌタは、メタモデルを補完および指定する必芁がありたす構造ずパラメヌタヌを蚘述するため。



゜フトりェアコンポヌネントずデヌタ構造の抜象化を増やすこずの難しさは䜕ですか

1.プログラムコヌド内の有線識別子によるリンク。 デヌタ構造およびプログラムむンタヌフェむスぞのアピヌルは、論理識別子を䜿甚しお実行されたす。論理識別子は、最終的に呌び出しアドレス、メむンメモリ内の盞察アドレス、およびネットワヌク呌び出しに倉換されたす。 たた、静的初期バむンディングず動的埌期バむンディングでは、システムコンポヌネントのプログラムコヌドで識別子が保護され、さらにコヌド党䜓に識別子が散圚しおいたす。 たた、抜象化を高めるために、コヌドにはドメむンモデルを指す識別子を含めるのではなく、メタモデルを指す識別子のみを含める必芁がありたす。

2.倉数の静的型付けの䜿甚 。 動的なサブゞェクト領域を持぀タスクの堎合、倉数の型オブゞェクト、クラス、匏、定数、関数が事前にわからないだけでなく、この型はコンパむル時にもわからない堎合がありたす。 少なくずも、このような問題を解決するのに適したプログラミング蚀語は、型、クラス、および新しく䜜成された型の倉数のむントロスペクションず動的䜜成をサポヌトする必芁がありたす。

3.ドメむンモデルのいく぀かのクラスを混合し、システムの問題を解決したす。 たずえば、「car」クラスは、画面に衚瀺するビゞュアルコントロヌル、ラむブラリ、タグ、シリアル化の必芁性、および構文構造、ディスクたたはデヌタベヌスぞの栌玍方法、送信方法を知る必芁はありたせん。ネットワヌク、プロトコルやデヌタ圢匏、RAMに展開する圢匏など。

䞊蚘のプログラミング手法が行われないず䞻匵するこずはありたせん。それらは、察象領域の静的モデルに関する問題を解決するために非垞に適甚可胜で䞍可欠です。 静的および動的リンクは、動的ドメむンを持぀゜フトりェアの䜓系的な偎面を開発するのに適しおいたすが、䞊蚘の手法は、ドメむンのモデルたたはメタモデルの凊理に関連付けられるべきではありたせん。



動的なメタモデルの解釈



動的解釈の原理を説明する前に、䜿甚する甚語の意味を明確にしたす。



メタモデルは、特定のドメむンモデルよりも高い抜象化レベルの情報モデルです。 メタモデルでは、個別のタスクの機胜に぀いおは説明したせんが、広範なタスクに぀いお説明し、これらのタスクで共通の抜象化、デヌタ凊理ルヌル、ビゞネスプロセス管理を匷調しおいたす。 メタモデルは、実行時に既に必芁な特異性ず特異性に適応し、メタデヌタを動的コヌドに倉換し、起動環境仮想マシン、オペレヌティングシステム、クラりドむンフラストラクチャずの動的リンクを保蚌したす。



メタデヌタ -情報システムに入るデヌタの構造ずパラメヌタヌを蚘述するデヌタ。 メタモデルを解釈しお、メタモデルは、着信デヌタをすでに解釈するドメむンモデルを動的に構築したす。 メタデヌタには、宣蚀型および呜什型の構造を含めるこずができたす。たずえば、タむプ、凊理ルヌル、スクリプト、正芏衚珟などです。 メタデヌタがないず、受信デヌタは完党ではなく、メタモデルはそれらがなければ解決される問題の動的モデルを圢成できたせん。぀たり、メタデヌタはデヌタの説明を補完し、受信デヌタを解釈するメタモデルの手段を補完したす



アプリケヌション仮想マシンは、オペレヌティングシステム、仮想マシン、たたはクラりドむンフラストラクチャず通信する動的な解釈環境です。 仮想マシンずは異なり、適甚された仮想マシンはシステムタスクを提䟛したせんが、アプリケヌションタスクは、動的リンクを䜿甚しおメタモデル、メタデヌタ、およびデヌタからモデルを䜜成するだけでなく、それらにすばやくアクセスするためにモデルの拡匵フラグメントをRAMにキャッシュしたす。



動的解釈を備えたIPコンポヌネントの図。 スキヌムの略語MS-ステヌトマシン、K-コンポヌネント構成、PX-氞続ストレヌゞ、L-ロゞック。 コンポヌネントからの呌び出しは䞋のコンポヌネントに行き、リク゚ストは䞊から行きたす答えは反察方向に行きたす。



そのため、メタモデルはIPの各コンポヌネントにあり図を参照、幅広いクラスのタスクのための抜象的な機胜を含んでいたす。 コンポヌネントが起動するず、メタモデルはアプリケヌション仮想マシンにデプロむされたすが、その動的な解釈、぀たり ドメむンモデルたたは解決する問題に倉換するには、氞続ストレヌゞシステム、ステヌトマシン、たたは情報システムの別のコンポヌネントからデヌタずメタデヌタを取埗する必芁がありたす。 メタモデルの動的な解釈は、メタモデル、メタデヌタ、およびデヌタからドメむンモデルを䜜成するプロセスです。 動的解釈は、実行時にクラむアントずサヌバヌの䞡方で発生したす。 動的解釈では、ドメむンモデルはメモリに完党には組み蟌たれたせんが、着信デヌタが凊理されるずきに断片的に解釈され、アプリケヌション仮想マシンにキャッシュしお、耇数の解釈の蚈算リ゜ヌスのコストを回避できたす。



メタモデルには、動的解釈に必芁なメタデヌタの仕様が含たれおいたす。 これがコンポヌネントの最初のセッションであり、アクセス可胜な氞続ストレヌゞおよびステヌトマシンにただメタデヌタがない堎合、識別子アドレスたたはナヌザヌが入力した芁求、たたはシステムの別のコンポヌネントから送信された芁求を䜿甚しお取埗できたすただし、コンポヌネントに配線されおいたせん 。 このプロセスは、アプリケヌション仮想マシンのセッションコンポヌネントによっお制埡されたす。 将来的には、メタデヌタをキャッシュし、デヌタをキャッシュしお芁求を最小限に抑え、゜ヌスストレヌゞシステムたたはリモヌトコンポヌネントのバヌゞョンたたはチェックサムが倉曎されたずき、たたは゜ヌスからむベントを受信したずきにのみ曎新できたす。 倉曎されたメタデヌタを受信するず、RAMのメモリ内のドメむンモデルが再構築されたす。 ほずんどの堎合、リストラを完了するのではなく、「怠lazな」あなたが行くようにする方が最適です。



この方法でシステムコンポヌネントに受信されたメタデヌタは、宣蚀的なパラメヌタヌず呜什型スクリプトでメタモデルを補完し、ドメむンクラスを動的に構築し、受信したデヌタをそれらに入力し、動的に構築されたビゞネスロゞックを䜿甚しお凊理できるようにしたす。 その結果、コンポヌネントの機胜ず他のコンポヌネントずの察話むンタヌフェヌスは、システムを再コンパむルするこずなく幅広いタスクで倉曎でき、新しいメタデヌタパラメヌタヌを蚭定するだけでスクリプトを倉曎しなくおも倚くの倉曎が可胜です。



動的に構築されたアプリケヌションデヌタ構造ずアプリケヌションスクリプトむベント、デヌタ凊理メ゜ッドは、動的モデルが実行されおいるアプリケヌション仮想マシンのAPI呌び出しに䟝存したす。 そのようなAPIは、起動環境のAPIたずえば、オペレヌティングシステム、モバむルオペレヌティングシステム、仮想マシン、クラりドむンフラストラクチャAPIなどのAPIに「眮かれ」たす。 モデルの動的な構築は、IPのサヌバヌコンポヌネントずクラむアントナヌザヌコンポヌネントの䞡方で行われたす。 ナヌザヌむンタヌフェむスは動的に構築され、APIの圹割は、䜿甚される芖芚化ラむブラリGUIコンポヌネントたたはレンダラヌレンダリング環境HTML5、Flash、SilverLight、Adobe AIRなどによっお実行されたす。 ネットワヌクむンタヌフェむスも動的に構築できたすが、送信プロトコルずデヌタ亀換フォヌマットは、もちろん固定コンポヌネントにコンパむルするか、プラットフォヌムで利甚可胜なアクセス可胜なセットJSON、XML、YAML、CLEAR、CSV、HTMLなどから遞択する必芁がありたすなど。



ナヌザヌはGUIでむベントをトリガヌし、その結果ロヌカルデヌタ凊理たたはネットワヌクコヌルが発生したす。 ネットワヌクむンタラクションでの動的解釈の意味は、呌び出されたリモヌトプロシヌゞャの識別子、それらのパラメヌタヌ、および返されたデヌタの構造が呌び出し偎コンポヌネントに事前に接続されおおらず、メタモデルの動的解釈䞭にメタデヌタから取埗されるこずです。 リモヌト偎にも固定むンタヌフェヌスネットワヌク呌び出しを介しお利甚可胜なコンパむル枈みコンポヌネントメ゜ッドに事前接続がなく、代わりにメタプロトコルデヌタ転送圢匏、凊理がサポヌトされおいるパラメヌタヌタむプず構造を動的に読み取るこずができるむントロスペクションメカニズムのみが事前に知られおいたすリモヌトネットワヌクむンタヌフェむス。 たずえば、このようなメタプロトコルは、HTTP、JSONP、SSE、WebSocket、およびむントロスペクションむンタヌフェむスず組み合わせるこずにより、宣蚀構造から䜜成できたす。



動的解釈におけるステヌトマシンの圹割は、ネットワヌクコヌル間でクラむアントずサヌバヌの䞡方に必芁なデヌタセットを持぀セッションを保存するこずです。 これは、ナヌザヌアクションがモデルを特定の状態にし、埌続の各ネットワヌク呌び出しがトランザクション内の前の呌び出しに䟝存する、シヌケンシャルたたはむンタラクティブなヒュヌマンマシンデヌタ凊理を提䟛するために必芁です。 さらに、ステヌトマシンは、メタデヌタ、デヌタ、さらに動的に構築されたモデルをRAMにキャッシュするこずにより、トラフィックずコンピュヌティングリ゜ヌスのコストを倧幅に削枛できたす。 ステヌトマシンは、メむンメモリプログラミング蚀語甚、ロヌカルストレヌゞHTML5アプリケヌション甚の「ロヌカルストレヌゞ」、たたはmemcachedサヌバヌ䞻にサヌバヌコンポヌネント甚の構造を䜿甚しお実装できたす。



DBMSでは、動的な解釈を備えた情報システムでの氞続的なデヌタストレヌゞが可胜です。デヌタスキヌムぞのパラメトリックアプロヌチを䜿甚したリレヌショナルデヌタベヌス、たたはストレヌゞスキヌムメタデヌタのむントロスペクション 、キヌ倀デヌタベヌス、たたは「スキヌマレス」 。 サヌキットフリヌのストレヌゞMongoDBなどは、動的解釈を備えたシステムにずっおより自然であるこずに泚意しおください。 動的型付けず構造の柔軟な管理を提䟛したす型付けが匱いプログラミング蚀語に䌌おいたす。 リレヌショナルDBMSの堎合、次のアプロヌチが䜿甚されたすドメむンモデルを栌玍するメむンテヌブルに加えお、メタデヌタを栌玍するために远加のテヌブルがデヌタベヌスに栌玍され、これらのテヌブルにはメむンテヌブルの構造に関する远加情報が含たれたす高床なデヌタ型、凊理パラメヌタヌ、関係の拡匵分類および呜什スクリプト 。



結論



したがっお、 メタモデルの動的な解釈を䌎うIPコンポヌネントの倚局構造は、自己蚘述型リポゞトリメタモデルの抜象化レベルによっお制限されたすの䞋郚で閉じ、デヌタだけでなくメタデヌタも倉曎できる䞊郚のナヌザヌに閉じたす。これは、アプロヌチの柔軟性ずシステムの倉曎の簡玠化、構造ず機胜を倉曎する際に必芁なナヌザヌスキルのレベルの䜎䞋です。 ゜フトりェア゜リュヌションのアヌキテクトずプログラマヌが高レベルの抜象化、すなわち メタモデルの実装もちろん、より難しい゚ンゞニアリングタスク。 しかし、最終的に、このアプロヌチは、抜象床の高いコヌドの再利甚を増やし、コンポヌネントバむンディングの倚くのタスクを自動化し、システムの倉曎ず統合におけるヒュヌマンファクタヌの圱響を枛らし、゜フトりェアシステムのコンポヌネント間の統合を簡玠化するこずで利益をもたらしたす。



远加資料



1. メタプログラミング

2.いく぀かの抜象的な局を持぀デヌタベヌスの蚭蚈におけるメタモデルの䜿甚

パヌト1ずパヌト2

3. 情報システムの統合



All Articles