モデルベースソフトウェア開発
TRANSCRIPT
モデルベースソフトウェア開発
Xtext による自動生成+α
ビューファイブ LLC田中
2015年2月7日
あらすじ
• 内容アウトライン
– モデルベースソフトウェア開発の主な要素
– Xtext + Spring Bootサンプルの紹介
– 商用製品を使ったサンプルの紹介
– 最後に
主な要素
• モデル: 何らかの対象をある観点からみて抽象化し本質的な情報の集まりにしたもの
– 観点(視点): どのような立ち位置からその対象をモデルとして捉えるか
• モデル変換・コード生成: モデルからモデルへの書き換え、モデルからテキストへの書き換え、を行うこと
• ソフトウェア(ソースコード): モデルから生成された、あるプラットフォーム上で実行可能なコード
– プラットフォーム: ソフトウェアの実行環境
モデルと観点の例
• モデルの例
– エンタプライズ系・組み込み系モデル
– 構造型・振る舞い型モデル
– アーキテクチャモデル
– セキュリティモデル
– ビジネスプロセスモデル
– サービスモデル
– UMLモデル
– ドメインモデル
– データモデル
– 要求モデル
– メタモデル
– メタメタモデル
– オブジェクト・インスタンスモデル
• 観点の例
– システム発注者の観点
– システム設計者の観点
– 情報(データ)設計者の観点
– 機能設計者の観点
– 分散・ネットワーク設計者の観点
– セキュリティ設計者の観点
– システム管理者の観点
– システム運用者の観点
– 調達者の観点
– コンプライアンスの観点
– 輸出入管理者の観点
– 予算管理者の観点
– プロジェクト管理者の観点
ソフトウェアとプラットフォームの例
• ソフトウェアの例
– オペレーティングシステム
– コンパイラ
– データベース
– 通信ソフトウェア
– ミドルウェア・フレームワーク
– ブラウザ
– クラウド(IaaS, PaaS, SaaS etc.)
– コラボレーションアプリケーション
– モバイルアプリケーション
– 業務用アプリケーション
– ゲームソフトウェア
• プラットフォームの例
– Windows, Linux, MacOS, …
– JVM etc.
– Spring等フレームワーク
– Web API
– ブラウザ (JavaScript実行環境)
– クラウド (AWS等)
– アプリケーション (Excel 等)
– モバイル端末
– 自動車
モデル変換
• モデルベースソフトウェア開発– どの観点から見た
– どんなモデルを
– どのプラットフォーム上で動作する
– どんなソフトウェア に変換・実行したいのでしょう
• 会場におられる方々が、それぞれ違うもの(組み合わせ)をイメージしていて不思議ではありません
• 私の話は次のような組み合わせで説明します– 情報設計者と機能設計者の観点
– エンタプライズ系業務モデル(単純データモデル)
– Springフレームワーク
– 業務アプリケーション
XTEXT + SPRING BOOT
Xtext(http://www.eclipse.org/Xtext/)
(http://www.beta-publish.com)
STS & Spring Boot(http://projects.spring.io/spring-boot/)
STS : Spring Frameworkで動作するアプリケーション開発のための eclipseベース IDESpring Boot : Springアプリケーションを容易に構築できるようにする仕組み
(https://spring.io/tools/sts)
モデル駆動開発のサンプル
• 準備として以下を用意します– STS (Spring Tool Suite™) に Eclipse/Xtext をインストール または
– Eclipse IDE for Java and DSL Developers に STS をインストール
• 具体例に基づき検討することにします
– モデル: Xtextのサンプルの一つである Xbase版 DomainModel(UML Class 図のサブセット相当)を使います
– 観点・視点: 業務情報設計
– モデル変換: モデルから直接コード変換することにします
– プラットフォーム: Spring Boot (実体はSpring MVC) つまりWeb アプリケーションとします
– 念のためですが、本サンプルはプロトタイプ実装です
Domainmodelの具体例
グラフィカル表現(UML Class図、Ecore図)
テキスト型表現(Xtext)
• Xtext + Spring Boot Demo
補足
• Spring Boot アプリケーションのため、例えば Pivotal Web Service のようなPaaS に Deploy 可能(Spring が動作する環境なら良いはず)
• GUI 上表現されていませんが、Operation を Xtend 言語(Xtextとセットになっている言語)で記述することで対応する Java code を生成しています(総額計算箇所など):[ Xtext のサンプルコード流用 ]
• Xtext はテキスト型と認識しながらも、やはり最後に図が欲しいとの声があったため、簡易なダイアグラム生成の仕組みを組み込みました
• CRUD アプリケーション部分については、書籍「Spring 3 入門」の第6章Spring MVC のサンプルコードを参考にさせてもらいました
MENDIX
Mendix
• 商用製品Mendix (Business Modeler) の例
– 欧州中心に実績のあるシステムで、エンタプライズ系業務システムに必要な多くの機能を備えています
– モデル: エンタプライズ系業務モデル = Entity モデル + GUI モデル + ロジックモデル
– 観点・視点: Business Engineer (情報設計者と機能設計者の観点)
– モデル変換: モデル解釈実行
– プラットフォーム: 独自 PaaS及び On-premise 独自プラットフォーム
– ソフトウェア: エンタプライズ系業務アプリケーション
– URL http://www.mendix.com/
• Mendix Business Modeler Demo
補足
• 商用製品のためモデルベースソフトウェア開発の観点から特徴的な箇所を抜き出して紹介しました
– ある範囲のエンタプライズ系業務アプリケーションについて、モデルベース開発をそれなりに実現している事例
– 本コミュニティー活動で商用製品・ツール等の扱いをどうするかについては最後のディスカッションでお願いします
最後に
• ご紹介した2例のように、かつてMDA が話題になっていた頃と比べ、
モデルベース開発の関連技術(実装)は、広がり・深み・実用性が増しており、利用出来るツールも増えています。
• DevOpsでの自動化とも合わせ、改めて取り組むべき話題ではないでしょうか。
• コミュニティー活動として何をすれば良いのか、じっくり検討する必要がありそうです。
ご静聴どうもありがとうございました