見出し画像

Bridge Point で作成した概念モデルを In Memory で動作する C# アプリケーションライブラリに変換する

※ 本ドキュメントの利用は、https://github.com/kae-made/kae-made/blob/main/contents-license.md に記載のライセンスに従ってご利用ください。
※ 本稿は、Knowledge & Experience への許可なく、本稿のPDF、XPS、スクリーンショット等による電子文書化、紙への印刷等を行い、第三者に提供する行為は、一切禁止とさせていただきます。

https://github.com/kae-made/kae-made/blob/main/contents-license.md

はじめに

本稿は、BridgePoint で作成した概念モデルから、In Memory で実行可能な、C# で記述されたライブラリ生成する方法を、概念モデルを使った自動生成や、「Essence of Software Design」で解説しているソフトウェア開発に関する各種 Tips を交えながら解説します。
概念モデルについては、「Art of Conceptual Modeling」の解説を参照してください。サンプルは、「概念モデリングチュートリアル ~ ホテルのコインランドリ」で作成した概念モデルを使用します。

In Memory で動作するクラスライブラリ

本稿で紹介するような、モデルを作成して、それを元に開発を進めていく開発方法を、モデル駆動型開発(英語では MDD: Model Driven Development)と呼びます。「Art of Conceptual Modeling」で解説している概念モデリングで作成した概念モデルは、それだけでは、単なる絵とテキストにすぎません。実際のコンピューティング環境で動かすためには、ソフトウェア要件をを概念モデルに織り込んで作成したプログラムコードやビルド用のファイル、各種設定ファイルが必要です。これらは、概念モデルを構成する概念情報モデルをデータ構造に、概念振舞モデルをロジックに、様々な非機能要件を元に定義されたルールを元に、変換により自動生成することができます。

プログラムコードを作成する方法の基本概念は、「ドメインとITシステム構築」を参照してください。また、変換の為の自動生成技術は、「ソフトウェア開発成果物自動生成教本」で解説しているのでこちらも参照してください。

変換で使用するルールを変えることにより、様々な非機能要件に合致したプログラムコードを作ることができます。例えば、「BridgePoint で作成した概念モデルから DTDL 定義を自動生成する」で紹介している、ジェネレータで生成したオントロジースキーマを元にした Azure Digital Twins をデータストレージ、かつ、データ共有基盤としたプログラムコードや、ハードウェアリソースが厳しい小型組込み機器の制御用プログラムコード、等々の生成も可能です。
本稿は、様々なプラットフォーム向けの、変換による自動生成環境を構築する為の基本スキルを読者が習得すること目的としているので、一番簡単で、Windows、Linux のどちらでも実行可能な、.NET Core 上で動作する C# によるクラスライブラリ群の生成を扱います。簡単のため、実行終了時点に存在するインスタンス群のデータの永続的保存機能はなく、単にメモリ上(インメモリ)で実行するだけのものとします。一般的なソフトウェアシステムでは必須の、プログラム起動終了、ハードウェア電源オフオンによるデータ消失を防ぐ仕組みを持つプログラムコード生成については、別の場所で解説します。
また、BridgePoint の振舞モデルでは、OAL: Object Action Language を使って、概念情報モデルをベースにした具体的な振舞をデーターフローのセマンティクスに則って記述でき、実際にモデルを動かしてシミュレーションが可能ですが、本稿では、OAL の記述は変換の対象外とし、概念スのオペレーションも含め、自動生成した C# コードに手書きで実装レベルのプログラムロジックを記述することを前提として解説を進めていきます。

ここから先は

69,727字 / 34画像

¥ 3,300

この記事が気に入ったらサポートをしてみませんか?