JP2016146022A - モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラム - Google Patents

モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラム Download PDF

Info

Publication number
JP2016146022A
JP2016146022A JP2015021950A JP2015021950A JP2016146022A JP 2016146022 A JP2016146022 A JP 2016146022A JP 2015021950 A JP2015021950 A JP 2015021950A JP 2015021950 A JP2015021950 A JP 2015021950A JP 2016146022 A JP2016146022 A JP 2016146022A
Authority
JP
Japan
Prior art keywords
model
metamodel
flow
data
processing
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.)
Pending
Application number
JP2015021950A
Other languages
English (en)
Inventor
ユカ 田中
Yuka Tanaka
ユカ 田中
功作 木村
Kosaku Kimura
功作 木村
佳秀 野村
Yoshihide Nomura
佳秀 野村
英俊 栗原
Hidetoshi Kurihara
英俊 栗原
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015021950A priority Critical patent/JP2016146022A/ja
Publication of JP2016146022A publication Critical patent/JP2016146022A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】実行形式のファイルへの変換用のテンプレートの記述量を削減する。
【解決手段】記憶部11は、データと処理の依存関係を表すフローモデル11aと、フローモデル11aに示される処理の定義方法を示すメタモデル11bと、処理の実行形式のファイルへの変換用テンプレート11dとを記憶する。演算部12は、メタモデル11b,11cに、メタモデル11b,11cを識別するメタモデル識別子を設定すると共に、フローモデル11aからの実行形式のファイルの生成要求に応じて、メタモデル識別子をフローモデル11aに設定する。次に演算部12は、フローモデル11aに設定されたメタモデル識別子に基づいてメタモデル11bを参照し、メタモデル11bに示される処理の定義方法に従って、変換用テンプレート11d内の記述をフローモデル11aに応じて変換する。
【選択図】図1

Description

本発明は、モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラムに関する。
大量データを効率的に処理する様々な技術が開発されている。そのうちの一つに、大量データの分析処理と複合イベント処理を統合的に扱える開発・実行環境がある。これらの開発・実行環境では、「データ」と「処理」の依存関係を定義したデータフロー図から、実行環境向けの実行形式の情報が記述されたファイル(実行定義ファイル)を自動生成することができる。
実行形式の情報の自動生成に関連する技術としては、例えば、コンピュータ実行可能アプリケーションを構成するためのユーザ・インターフェースに関する技術がある。また、ネットワーク上に分散したサービスを構成する要素サービスを連携させてサービスを実行する際に、広くユーザが用いる連携シナリオの作成を支援する技術もある。さらに、バッチ処理かリアルタイム処理かの違いを意識することなく容易にプログラムを作成する技術もある。
特表2013−513864号公報 特開2008−21095号公報 特開2012−247955号公報
実行定義ファイルの自動生成には、例えば変換テンプレートが用いられる。例えば作業者が、編集画面上で、処理やデータに対応するオブジェクトを組み合わせてデータフロー図を作成すると、そのデータフロー図に応じたフローのモデルが、予め用意されたフローのメタモデルに従って生成される。フローのメタモデルには、例えば処理やデータなどのインスタンスの関係と、処理やデータなどの定義の仕方とが、分けて定義されている。フローに含まれる処理には、処理の定義の仕方などが具体的に記述された処理のモデルが用意されている。そして、処理のモデルに従った処理の実行定義ファイルを生成するための変換テンプレートが用意される。変換テンプレートは、例えば所定の値を置き換えることで、対応する処理の実行定義ファイルとなるように記述されたデータである。変換テンプレートは、例えばシステムのプラットフォームを提供するプラットフォーム提供事業者によって作成される。プラットフォーム提供事業者は、新しい処理が増えるごとに、その処理のモデルを作成し、そこから実行形式に変換する変換テンプレートを作成することとなる。
しかし、従来は、処理のモデルに処理の定義の仕方が含まれるため、処理のモデルで示された処理の実行定義ファイルを生成するための変換テンプレートにも、処理の定義の仕方に関する記述が含まれてしまう。その結果、変換テンプレートの記述量が多くなり、変換テンプレートの作成作業が煩雑となっている。
1つの側面では、本件は、実行形式のファイルへの変換用のテンプレートの記述量を削減することを目的とする。
1つの案では、記憶部と演算部とを有するモデルベース開発支援装置が提供される。記憶部は、データと処理の依存関係を表すフローモデルと、フローモデルに示される処理の定義方法を示すメタモデルと、処理の実行形式のファイルへの変換用テンプレートとを記憶する。演算部は、メタモデルに、メタモデルを識別するメタモデル識別子を設定すると共に、メタモデル識別子をフローモデルに設定する。そして演算部は、実行形式のファイルの生成要求に応じて、フローモデルに設定されたメタモデル識別子に基づいてメタモデルを参照し、メタモデルに示される処理の定義方法に従って、変換用テンプレート内の記述をフローモデルに応じて変換する。
1態様によれば、実行形式のファイルへの変換用のテンプレートの記述量を削減できる。
第1の実施の形態に係るモデルベース開発支援装置の構成例を示す図である。 第2の実施の形態のモデルベース開発支援システムの構成例を示す図である。 サーバのハードウェアの一構成例を示す図である。 サーバの機能を示すブロック図である。 各モデルと変換テンプレートとの関係を示す図である。 フローに「処理」のインスタンスを配置する処理手順を示すシーケンス図である。 フローに「データ」のインスタンスを配置する処理手順を示すシーケンス図である。 メタモデル識別子の追加とインスタンスの配置例を示す図である。 実行定義ファイル生成処理の手順を示すシーケンス図である。 実行定義ファイルを作成するフローの一例を示す図である。 フローのモデルの一例を示す図である。 「処理」のメタモデルの一例を示す図である。 「データ」のメタモデルの一例を示す図である。 変換テンプレートの一例を示す図である。 モデル変換処理の手順を示すフローチャートである。 比較対象技術における各モデルと変換テンプレートとの関係の例を示す図である。 処理のメタモデルを用いた変換テンプレートと「処理」のモデルを用いた変換テンプレートとの比較例を示す図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
コンピュータシステムにおけるデータの流れは、データフロー図で表すことができる。データフロー図は、処理のインスタンスやデータのインスタンスを表すオブジェクトを組み合わせて作成できる。以下、データフロー図に含まれる処理やデータについては、括弧で囲い「処理」・「データ」と表すことで、モデルベース開発支援のための処理やデータと区別する。
図1は、第1の実施の形態に係るモデルベース開発支援装置の構成例を示す図である。モデルベース開発支援装置10は、記憶部11と演算部12とを有している。
記憶部11は、フローモデル11a、「処理」のメタモデル11b、「データ」のメタモデル11c、および変換用テンプレート11dを記憶する。フローモデル11aは、データと処理の依存関係を表したものである。フローモデル11aは、例えばデータフロー図1に基づいて作成される。またフローモデル11aには、「処理」を実行する際に使用する設定値2が設定される。「処理」のメタモデル11bは、フローモデル11aに示される「処理」の、実行形式である実行定義ファイル3での定義方法を示す情報である。「処理」の定義方法には、例えば「処理」のプロパティに設定する値の型(文字か数値かなど)などが含まれる。「データ」のメタモデル11cは、フローモデル11aに示される「データ」の、実行形式の実行定義ファイル3での定義方法を示す情報である。変換用テンプレート11dは、「処理」の実行形式のファイルへの変換用のテンプレートである。変換用テンプレート11dには、例えば、所定の部分を置換すれば、実行形式のファイルである実行定義ファイル3となるように、記述されている。
演算部12は、メタモデル11b,11cに、メタモデル11b,11cを識別するメタモデル識別子を設定すると共に、それらのメタモデル識別子をフローモデル11aに設定する(ステップS1)。これにより、メタモデル11b,11cが、フローモデル11aに関連付けられる。また演算部12は、実行形式のファイルの生成要求に応じて、フローモデル11aに設定されたメタモデル識別子に基づいてメタモデル11b,11cを参照する(ステップS2)。そして演算部12は、「処理」のメタモデル11bに示される「処理」の定義方法や、「データ」のメタモデル11cに示される「データ」の定義方法に従って、変換用テンプレート11d内の記述をフローモデル11aに応じて変換する(ステップS3)。その結果、実行定義ファイル3が生成される。
このようなモデルベース開発支援装置10によれば、「処理」の定義方法がメタモデル11bで示されており、フローモデル11aの実行定義ファイル3を生成する際に、メタモデル11bを参照して、変換用テンプレート11d内の記述が変換される。例えば、「処理」のメタモデル11bにおいて、プロパティの値の型が定義されているとき、変換用テンプレート11d内のプロパティの値の設定箇所に、定義した型でプロパティの値が設定される。このように、抽象度が高いメタモデル11bにおいて「処理」の定義方法を定めておき、メタモデル11bを参照して実行定義ファイル3を生成することで、変換用テンプレート11d内には、「処理」の定義方法に関する詳細は記述を含めずにすむ。その結果、変換用テンプレート11dを記載量の削減が可能となる。
記憶部11は、フローモデル11aにおける「データ」と「処理」との関係を定義したフローメタモデルをさらに記憶している場合もある。この場合、演算部12は、データフロー図1に基づいて、フローメタモデルに従ったフローモデル11aを作成することができる。この際、演算部12は、例えば、データフロー図1の作成画面において「処理」を示すオブジェクトが配置されると、その「処理」に対応するメタモデルのメタモデル識別子を、フローモデル11aに設定する。同様に、演算部12は、データフロー図1に「データ」を示すオブジェクトが配置されると、その「データ」に対応するメタモデル11cのメタモデル識別子を、フローモデル11aに設定することもできる。このようにして、データフロー図1に基づくフローモデル11a作成時に、フローモデル11aを、メタモデル11b,11cに自動で関連付けることができる。
また、演算部12は、例えばモデルベース開発支援装置10が有するプロセッサにより実現することができる。また、記憶部11は、例えばモデルベース開発支援装置10が有するメモリにより実現することができる。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、複合イベント処理を統合的に扱えるモデルベース開発支援システムの例である。
図2は、第2の実施の形態のモデルベース開発支援システムの構成例を示す図である。ネットワーク20を介して複数のサーバ100,200,300が接続されている。サーバ100は、複合イベント処理を統合的に扱えるシステムの開発環境が構築されたコンピュータである。例えばサービス提供者が端末装置31を用いてサーバ100にアクセスし、システムの開発作業を行う。
サーバ200は、複合イベント処理における個々の「処理」の開発環境が構築されたコンピュータである。例えばプラットフォーム提供事業者が端末装置32を介してサーバ200にアクセスし、「処理」の開発作業を行う。サーバ300は、複合イベント処理を実行するための実行環境が構築されたコンピュータである。
モデルベース開発支援システムを使用するのは、サービス提供者とプラットフォーム提供事業者である。モデルベース開発支援システムでは、実行方式に依存しない実行定義を使って、クラウド、IoT(Internet of Things)など、次々と登場する新たな実行環境で動作するサービスを、サービス提供者自らが構築できることをめざしている。例えば、サービス提供者は、開発環境を有するサーバ100上で既存の「処理」を組み合わせ、提供するサービスを構築する。プラットフォーム提供事業者は、新しい実行環境や処理ロジックを利用可能にする。 例えばプラットフォーム提供事業者は、これまで使用してきたものとは異なる新たな実行環境での「処理」が必要になると、「処理」の定義と、「処理」向けの変換テンプレートなどを作成する。
なおサーバ100は、実行定義ファイルを自動生成することができる。実行定義ファイルの生成には、例えば、データフロー図などの設計図から実装コードを自動生成するMDA(Model Driven Architecture)と呼ばれるシステム開発手法を用いることができる。MDAは、プラットフォーム独立モデル(ビジネスの業務要件を表現するモデル)から、プラットフォーム特化モデル(技術に依存したモデル)への変換を経て、実装コードを得るものである。
また各種モデルの生成には、EMF(Eclipse Modeling Framework)を用いることができる。EMFは、Eclipse用のモデリング・フレームワークである。EMFのコアとなるフレームワークには、モデルとそのモデルのランタイム・サポートを記述するためのメタモデル(Ecore)が組み込まれている。このメタモデルには、XMI(XML Metadata Interchange)によるシリアライズを使った永続化機能や、EMFオブジェクトを一般的に操作するためのリフレクションAPI(Application Programming Interface)が含まれる。リフレクションAPIは、フィールドやメソッドなどの情報を取得するAPIである。Ecoreモデルで定義したモデルが、開発者がアプリケーション・データを管理するために使用するモデルの構造を定義する。Ecoreモデルは、定義済みクラスに関する情報(EClass, EAttribute, EFeference, EDataTypeなど)を含んでいる。
動的EMFを使うこともできる。動的EMFでは、「処理」の実行時にプログラムによってメモリ内にコア・モデルが構築されて、コア・モデルのインスタンスが動的に作成される。インスタンスには、EMFのリフレクションAPIを使ってアクセスできる。このとき、例えばメタモデルであるEPackageのnsURI属性の値としてメタモデル識別子を設定して、EPackageが一意に識別できるようにすることができる。
第2の実施の形態に係るモデルベース開発支援システムでは、動的EMFを利用した仕組みにより、少ない記述量の変換テンプレートにより、実用可能な実行定義ファイルを生成できるようにする。例えばモデルベース開発支援システムのサーバ100は、「処理」と「データ」を参照で結ぶ、フローのメタモデルを定義し、フローのメタモデル中の「処理」のメタモデルを定義し管理する。そしてサーバ100は、「処理」の定義の仕方として、処理型・プロパティ・入出力データ数等を持つ従来の「処理」のモデルより抽象度が高い「処理」のメタモデルを、変換テンプレートと関連付ける。サーバ100は、変換テンプレートを用いて実行定義ファイルを生成する際には、関連付けられた「処理」のメタモデルを参照する。
「処理」のメタモデルは「処理」のモデルよりも抽象度が高い。そのため、変換テンプレートにおける「処理」に関する記述も、高い抽象度のままで記述することができ、変換テンプレートの記述量が削減され、変換テンプレート作成時の煩雑さが減る。
次に、サーバのハードウェア構成について説明する。
図3は、サーバのハードウェアの一構成例を示す図である。サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、サーバ100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置(SSD:Solid State Drive)を使用することもできる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。他のサーバ200,300や端末装置31,32も、サーバ100と同様のハードウェアによって実現できる。なお、第1の実施の形態に示したモデルベース開発支援装置10も、図3に示したサーバ100と同様のハードウェアにより実現することができる。
サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、サーバ100に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またサーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、少ない記述量の変換テンプレートを用いた実行定義ファイルの生成を可能とするための、サーバの機能について説明する。
図4は、サーバの機能を示すブロック図である。開発環境が構築されたサーバ100は、リポジトリ110、フローエディタ120、モデル管理部130、モデル変換部140、および実行定義管理部150を有する。
リポジトリ110は、システムの開発に用いる情報を記憶する。例えばリポジトリ110には、フローのメタモデル111、「データ」のメタモデル112、「処理」のメタモデル113、フローのモデル114、「データ」のモデル115、変換テンプレート116、および実行定義ファイル117が格納される。フローのメタモデル111は、複合イベント処理を実施するためのフローのモデルを定義する情報である。フローのメタモデル111には、「処理」と「データ」を参照で結ぶことで、「処理」のインスタンスと「データ」のインスタンスとの関係が定義される。「データ」のメタモデル112は、取り扱われる「データ」を抽象的に定義する情報である。「処理」のメタモデル113は、「処理」を抽象的に定義する情報である。フローのモデル114は、複合イベント処理において実行する「処理」のフローを定義する情報である。「データ」のモデル115は、フローで使用する「データ」を定義する情報である。変換テンプレート116は、フローのモデル114から実行定義ファイル117を生成するためのテンプレートである。実行定義ファイル117は、フローのモデル114に示された「処理」を、実行環境のサーバ300が実行できるようなデータ形式で記載した情報である。
フローエディタ120は、ユーザからの操作入力に応じてデータフロー図を作成し、作成されたデータフロー図に対応するフローのモデル114を生成する。フローエディタ120は、例えば「データ」のメタモデル編集部121とフローのモデル編集部122とを有する。「データ」のメタモデル編集部121は、入力に応じて「データ」のメタモデル112を生成する。例えば「データ」のメタモデル編集部121は、「データ」のメタモデル生成用の画面を表示し、その画面内に入力された内容に応じた「データ」のメタモデル112を生成する。フローのモデル編集部122は、フローのモデル114を生成する。例えばフローのモデル編集部122は、「データ」を表すオブジェクトと「処理」を表すオブジェクトを操作する入力に応じて、画面上にデータフロー図を生成する。フローのモデル編集部122は、データフロー図作成完了の入力に応じ、データフロー図に表されたフローを示すフローのモデルを生成する。フローエディタ120は、生成した「データ」のメタモデル112やフローのモデル114を、リポジトリ110に格納する。
モデル管理部130は、リポジトリ110に格納された各種のモデルを管理する。モデル管理部130は、メタモデル識別子管理部131と処理管理部132とを有する。
メタモデル識別子管理部131は、「データ」のメタモデル112やフローのメタモデル111に与えられるメタモデル識別子を管理する。例えばメタモデル識別子管理部131は、与えられたメタモデル識別子とメタモデルとの対応関係を登録し、参照要求があると登録されているメタモデル識別子を検索する。そしてメタモデル識別子管理部131は、検索によって得られたメタモデル識別子に対応するメタモデルを、参照要求に対する応答として出力する。
処理管理部132は、フローのメタモデル112を継承して作成された「処理」のメタモデル113を管理する。例えば処理管理部132は、「処理」のメタモデル113に、メタモデル識別子管理部131により与えられたメタモデル識別子を登録する。そして処理管理部132は、参照要求があると、「処理」のメタモデル113から、登録されている「処理」のメタモデル識別子を検索する。
モデル変換部140は、フローエディタ120から起動される。モデル変換部140は、フローのモデル114を入力とし、フローのモデル114に含まれるメタモデル識別子から、該当する「処理」のメタモデル113を参照し、変換テンプレート116を利用して、実行定義ファイル117を生成する。
実行定義管理部150は、実行定義ファイル117を、実行環境のサーバ300に送信する。するとサーバ300において、実行定義ファイル117に示された「処理」が実行される。
「処理」の開発環境が構築されたサーバ200は、「処理」のメタモデル編集部210と変換テンプレート編集部220とを有している。「処理」のメタモデル編集部210は、ユーザからの操作入力に応じて、新たに追加する「処理」のメタモデル113を作成する。「処理」のメタモデル編集部210は、作成した「処理」のメタモデル113を、サーバ100のリポジトリ110に格納する。変換テンプレート編集部220は、ユーザからの操作入力に応じて、新たに追加する「処理」の変換テンプレート116を作成する。変換テンプレート編集部220は、作成した変換テンプレート116を、サーバ100のリポジトリ110に格納する。
なお、図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、各モデルと変換テンプレートとの関係を説明する。
図5は、各モデルと変換テンプレートとの関係を示す図である。フローのメタモデル111には、処理(Process)やデータ(Data)のインスタンス間の関係が、示されている。図5の例では、関係のあるインスタンスの要素間が、線で接続されている。データフロー図41に基づいて作成されたフローのモデル114は、フローのメタモデル111に示されている定義に従っている。フローのモデル114に含まれる「データ」は、「データ」のモデル115の定義に従っている。また「データ」のモデル115は、「データ」のメタモデル112に示される定義に従っている。
「処理」のメタモデル113には、フローのメタモデル111における「処理」を継承して定義されている。変換テンプレート116は、「処理」の実行定義ファイル117を作成するためのテンプレートである。「処理」のメタモデル113は、従来の「処理」のモデルよりも抽象度が高い。そのため、変換テンプレート116においても、抽象的に記述(例えば「If」や「field」)できることにより、「処理」のメタモデル113内の定義内容との対応関係を特定できる。
「データ」のメタモデル112や「処理」のメタモデル113には、メタモデル識別子42,43が含まれている。メタモデル識別子42,43によって、システム内で各メタモデルが一意に特定される。
次に、サーバ100における処理について具体的に説明する。サーバ100の処理は、大別して、フローエディタでのフロー編集時の処理と実行定義ファイル生成時の処理とに分けられる。フロー編集時の処理としては、例えばフローに「処理」のインスタンスを配置してプロパティを設定しフローを保存する処理と、フローに「データ」のインスタンスを配置する処理がある。
図6は、フローに「処理」のインスタンスを配置してプロパティを設定し、フローを保存する処理手順を示すシーケンス図である。なお、図6の処理において、各種情報へのアクセスは、識別子を用いて行われる。例えばフローのメタモデル111へのアクセスは、フローのメタモデル識別子を用いて行われる。フローのモデル114へのアクセスは、フローのモデル識別子を用いて行われる。フローのモデル識別子とは、フローのモデルを一意に特定するものである。「処理」のメタモデル113へのアクセスは、「処理」のメタモデル識別子を用いて行われる。
フローエディタ120のフローのモデル編集部122は、フローを開く操作入力を受け付ける(ステップS101)と、その操作入力に応じて、モデル管理部130へ、フローのメタモデル111の参照を指示する。モデル管理部130では、メタモデル識別子管理部131が、フローのメタモデル識別子を管理しており、そのメタモデル識別子によりリポジトリ110内のフローのメタモデル111を参照する(ステップS102)。メタモデル識別子管理部131は、参照したフローのメタモデル111の内容を、フローエディタ120に送信する。
フローのモデル編集部122は、フローのメタモデル111に従ったフローのデータフロー図作成用の画面に表示する。そして、フローのモデル編集部122は、ユーザから、フローへの「処理」の配置およびプロパティの設定入力を受け付ける(ステップS103)。例えばフローのモデル編集部122は、ユーザの操作に応じて、使用できる「処理」に対応するオブジェクトを、データフロー図の作成画面内に配置する。またフローのモデル編集部122は、ユーザが入力したプロパティを取得し、配置されたオブジェクトに対応する「処理」のプロパティとして設定する。そしてフローのモデル編集部122は、モデル管理部130に、「処理」のメタモデルの参照を指示する。
モデル管理部130では、処理管理部132が「処理」のメタモデル識別子に基づいて、「処理」のメタモデル113を参照する(ステップS104)。処理管理部132は、参照した「処理」のメタモデル113の内容を、フローエディタ120に送信する。
フローのモデル編集部122は、フローのモデル114に、「処理」のメタモデル識別子を追加する(ステップS105)。さらにフローのモデル編集部122は、フローのモデル114に「処理」のインスタンスを追加する(ステップS106)。その後、フローのモデル編集部122は、ユーザから、フローの保存を示す操作入力を受け付ける(ステップS107)。するとフローのモデル編集部122は、フローのモデル114のリポジトリ110への保存処理を行う(ステップS108)。例えばフローのモデル編集部122は、フローのモデル114をメモリ102に読み込んでステップS105,S106の処理を行い、フローの保存指示により、メモリ102内のフローのモデル114をリポジトリ110に保存する。
次に、フローに「データ」のインスタンスを配置する処理について説明する。
図7は、フローに「データ」のインスタンスを配置する処理手順を示すシーケンス図である。なお、図7の処理において、各種情報へのアクセスは、識別子を用いて行われる。例えばフローのメタモデル111へのアクセスは、フローのメタモデル識別子を用いて行われる。フローのモデル114へのアクセスは、フローのモデル識別子を用いて行われる。「データ」のメタモデル112へのアクセスは、「データ」のメタモデル識別子を用いて行われる。「データ」のモデル115へのアクセスは、「データ」の識別子を用いて行われる。
フローエディタ120の「データ」のメタモデル編集部121は、ユーザからの、データ登録の入力を受け付ける(ステップS111)。「データ」のメタモデル編集部121は、入力されたデータを、モデル管理部130に送信する。モデル管理部130のメタモデル識別子管理部131は、入力されたデータに関する定義を、リポジトリ110内の「データ」のメタモデル112に追加する(ステップS112)。
フローエディタ120のフローのモデル編集部122は、登録されたデータに関する「データ」のモデル115を、リポジトリ110に保存する(ステップS113)。その後、フローのモデル編集部122は、ユーザから、フローへの「データ」の配置の入力を受け付ける(ステップS114)。例えばフローのモデル編集部122は、ユーザの操作に応じて、使用できる「データ」に対応するオブジェクトを、データフロー図の作成画面内に配置する。
フローのモデル編集部122は、配置した「データ」のインスタンスを作成する(ステップS115)。そして、フローのモデル編集部122は、フローのモデル114に「データ」のインスタンスを追加する(ステップS116)。モデル管理部130のメタモデル識別子管理部131は、「データ」のメタモデルを参照する(ステップS117)。参照した「データ」のメタモデル112の内容は、フローのモデル編集部122に送信される。フローエディタ120のフローのモデル編集部122は、「データ」のメタモデル112に示された定義に従って、フローのモデル114に「データ」の識別子を追加する(ステップS118)。
このようにして、「データ」と「処理」とのインスタンスを配置したフローのモデルが生成され、保存される。
図8は、図6に示した処理におけるメタモデル識別子の追加とインスタンスの配置例を示す図である。フローのメタモデル111には、「nsURI」に、「platform:/resource/aaa/dataflow.ecore」というメタモデル識別子44が設定されている。 「処理」のメタモデル113には、「nsURI」に、「platform:/resource/xxx/general.ecore」というメタモデル識別子42が設定されている。フローのモデル114には、「xmlns:general」に、配置した「処理」のメタモデル113を示すメタモデル識別子42が設定されている。またフローのモデル114には、「xmlns:dataflow」に、フローのモデル114が従っているフローのメタモデル111を示すメタモデル識別子44が設定されている。さらに、フローのモデル114内には、「データ」のインスタンス45と「処理」のインスタンス46とが設定されている。
次に、実行定義ファイル生成時の処理について説明する。
図9は、フローを保存してから実行定義ファイルを生成する処理の手順を示すシーケンス図である。なお、図9の処理において、各種情報へのアクセスは、識別子を用いて行われる。例えばフローのメタモデル111へのアクセスは、フローのメタモデル識別子を用いて行われる。フローのモデル114へのアクセスは、フローのモデル識別子を用いて行われる。「処理」のメタモデル113へのアクセスは、「処理」のメタモデル識別子を用いて行われる。
フローエディタ120のフローのモデル編集部122は、フローのモデル114に対する編集作業後に、ユーザからの、フローの保存指示の入力を受け付ける(ステップS121)。フローのモデル編集部122は、フローのモデル114をリポジトリ110に保存する(ステップS122)。その後、フローのモデル編集部122は、ユーザからの、実行定義ファイル生成の操作入力を受け付ける(ステップS123)。フローのモデル編集部122は、実行定義ファイル生成の操作入力に応じて、モデル変換部140に実行定義ファイル117の生成を指示する。
モデル変換部140は、フローのモデル114をリポジトリ110から取得する(ステップS124)。次にメタモデル識別子管理部131が、フローのメタモデル111を参照する(ステップS125)。参照したフローのメタモデル111の内容は、モデル変換部140に送信される。モデル変換部140は、フローのメタモデル111に基づいてフローのモデル114の構造を解釈し、フローのモデル114内の「処理」を取得する(ステップS126)。処理管理部132は、「処理」のメタモデル113を参照する(ステップS127)。取得した「処理」のメタモデル113の内容は、モデル変換部140に送信される。モデル変換部128は、「処理」のメタモデル113に示された「処理」の定義に従って、ステップS126で取得した「処理」を、変換テンプレート116を用いて実行定義ファイル117に変換する(ステップS128)。
次に、モデル変換処理について詳細に説明する。
図10は、実行定義ファイルを作成するフローの一例を示す図である。図10の例では、フローエディタ120を用いて、家電イベントからTV操作イベントを検知する“Filtering ”の「処理」を行うデータフロー図51が作成されている。このデータフロー図51で表されるフローのモデルに対して、プロパティの設定値52が設定されている。ここで、変換テンプレートを用いて、EPL(イベント処理言語)文の実行定義ファイル53を出力する場合を考える。
図11は、フローのモデルの一例を示す図である。フローのモデル60には、「処理」のメタモデルを示すメタモデル識別子61が設定されている。またフローのモデル60には、データフロー図51で配置された「処理」62が記述されている。「処理」62には、プロパティの設定値52(図10参照)が設定されている。
図12は、「処理」のメタモデルの一例を示す図である。「処理」のメタモデル70には、メタモデル識別子71が設定されている。また「処理」のメタモデル70には、「処理」に設定する値を定義する設定値定義72が含まれる。設定値定義72には、例えばプロパティの設定値の型(例えば文字なのか数値なのか)などが定義されている。
図13は、「データ」のメタモデルの一例を示す図である。「データ」のメタモデル80には、メタモデル識別子81が設定されている。また「データ」のメタモデル80には、入力データ82や出力データ83に関する定義が設定されている。
図14は、変換テンプレートの一例を示す図である。変換テンプレート90には、例えば、複数の「処理」それぞれについて、実行定義ファイルへの変換用のテンプレートが記載されている。図14には、Filteringの変換テンプレート部91が示されている。Filteringの変換テンプレート部91には、モデル変換時の置換部91a〜91dが含まれている。置換部91a〜91dは、例えば"[ /]"という記載部分である。
図15は、モデル変換処理の手順を示すフローチャートである。
[ステップS131]モデル変換部140は、フローのモデル60を読み込む。例えばモデル変換部140は、フロー識別子を指定して、リポジトリ110からフローのモデル60を取得する。
[ステップS132]モデル変換部140は、取得したフローのモデル60から、フローに登場する「処理」62を取得する。
[ステップS133]モデル変換部140は、出力ファイルを作成し、その出力ファイルを開く。
[ステップS134]モデル変換部140は、フローに登場する「処理」が終了したか否かを判断する。例えばモデル変換部140は、フローのモデル60の先頭から順にフローに登場する「処理」を選択して、ステップS136以降の処理を実行する。モデル変換部140は、すべての「処理」が選択済みとなったとき、フローに登場する「処理」が終了したと判断する。フローに登場する「処理」が終了した場合、「処理」がステップS143に進められる。フローに登場する「処理」が終了していなければ、「処理」を選択して、処理をステップS135に進める。
[ステップS135]モデル変換部140は、「処理」のメタモデル70を参照する。例えばモデル変換部140は、フローのモデル60からメタモデル識別子61を取得する。モデル変換部140は、取得したメタモデル識別子61が合致するメタモデル識別子が設定された「処理」のメタモデル70を、リポジトリ110から取得する。
[ステップS136]モデル変換部140は、「処理」に対応する変換テンプレートを取得する。例えばモデル変換部140は、変換テンプレート90内のFilteringの変換テンプレート部91の記述を取得する。
[ステップS137]モデル変換部140は、取得した変換テンプレートの1行を、先頭から順に読み込む。
[ステップS138]モデル変換部140は、変換テンプレートが終了したか否かを判断する。例えばモデル変換部140は、ステップS137における読み込みにおいて、取得した変換テンプレート内に読み込む行がない場合、変換テンプレートが終了したと判断する。変換テンプレートが終了した場合、処理がステップS139に進められる。変換テンプレートが終了しなければ、処理がステップS140に進められる。
[ステップS139]モデル変換部140は、フローに登場する次の「処理」を取得する。その後、処理がステップS134に進められる。
[ステップS140]モデル変換部140は、読み込んだ行に[/]で囲まれた部分があるか否かを判断する。該当する部分があれば、処理がステップS141に進められる。該当する部分がなければ、処理がステップS142に進められる。
[ステップS141]モデル変換部140は、[/]で囲まれた部分を置換する。例えば、フローのモデル60中の「処理」62において、「inEventData」の値を示す変数「#dddd001」に、データフロー図51において入力データとされている「HEvent」が設定されているものとする。さらに、「outEventData」の値を示す変数「#dddd002」に、データフロー図51において入力データとされている「TVControl」が設定されているものとする。このときモデル変換部140は、Filteringの変換テンプレート部91における[inEventData.name/]の置換部91bの記載を「HEvent」に置換する。同様に、モデル変換部140は、Filteringの変換テンプレート部91における[outEventData.name/]の置換部91aの記載を「TVControl」に置換する。
またモデル変換部140は、Filteringの変換テンプレート部91における[aProcess.targetPropertyName/]の置換部91cの記載を、フローのモデル60の「処理」62において「targetPropertyName」に設定されている値“category”に置換する。さらに、モデル変換部140は、Filteringの変換テンプレート部91における[aProcess.targetPropertyValue/]の置換部91dの記載を、フローのモデル60の「処理」62において「targetPropertyName」に設定されている値“’Television’”に置換する。
なおモデル変換部140は、“[/]”で囲まれた部分を置換する際に、置換後の値の属性などは、「処理」のメタモデル70における設定値定義72の定義に従う。すなわちモデル変換部140は、フローのモデル60に示されるメタモデル識別子61に基づいて、「処理」のメタモデル70を参照し、設定値定義72に従った値に、置換を行う。
[ステップS142]モデル変換部140は、変換した行を、出力ファイルに書き出す。その後、処理がステップS137に進められる。
このようにして、図14に示すような簡単な記載の変換テンプレート90により、図10に示したような実行定義ファイル53が生成できる。すなわち、第2の実施の形態では、フローのメタモデルに「処理」の定義の仕方が含まれておらず、「処理」のモデルよりも抽象度が高い「処理」のメタモデルを用いて、実行定義ファイル53を生成できる。
以下、比較対象として、フローのメタモデルに「処理」の定義の仕方などの情報を含めた場合における。「処理」のモデルを用いた変換テンプレートの記載例について説明する。
図16は、比較対象技術における各モデルと変換テンプレートとの関係の例を示す図である。図16の例では、フローのメタモデル410に、「処理」のインスタンス411を示す要素以外に、「処理」の定義の仕方412やプロパティの定義の仕方413を示す要素が含まれている。「処理」の定義の仕方412の具体的な内容は、「処理」のモデル420内に記載されている。またプロパティの定義の仕方413の具体的な内容も、「処理」のモデル420に記載されている。
ここで、データフロー図430に基づいてフローのモデル440が作成されたとき、フローのモデル440に示される「処理」の実行定義ファイルを作成するため、変換テンプレート450が作成される。変換テンプレート450は、「処理」のモデル420に従った実行定義ファイルが生成できるように、具体的に記載される。例えば、図16の例では、変換テンプレート450内に、「処理」のモデル420を指定する記述451やプロパティの定義の仕方413を特定するための記述454が含まれている。
図16の例では、フローのメタモデル410において、「処理」や「データ」などのインスタンスの関係と、「処理」や「データ」などの定義の仕方が分けて定義されている。「処理」の定義の仕方が定義されていることで、「処理」の定義に書ける範囲が限定され、信頼性の高い実行定義ファイルを生成できる。ここで、「処理」の定義の仕方は、システム内で固定であり、「処理」の定義の仕方により、例えば処理型・プロパティ・入出力データ数などが定義される。
以下、図16に示した比較対象の技術の例と、図5に示す第2の実施の形態の例とを比較する。第2の実施の形態では、フローのメタモデル111の定義が、「処理」と「データ」を参照で結ぶメタモデルに変更され、フローのメタモデル111中の「処理」を継承するような「処理」のメタモデル113が定義されている。フローのメタモデル111中の「処理」が、「処理」のモデルではなく、「処理」のメタモデル113で定義されていることで、モデルの抽象度が上がっている。
変換テンプレートから参照するモデルの抽象度が上がることにより、モデルと変換テンプレートの対応が変わり、変換テンプレートの「処理」に関する記述量を少なくできる。その結果、変換テンプレートの煩雑さ・冗長さを減らすことができる。
図17は、「処理」のメタモデルを用いた変換テンプレートと「処理」のモデルを用いた変換テンプレートとの比較例を示す図である。図17には、「処理」のモデルを利用して実行定義ファイルを生成するための変換テンプレート450と、「処理」のメタモデルを利用した実行定義ファイルを生成するための変換テンプレート116とが示されている。
変換テンプレート450と変換テンプレート116とを比較すると、参照先のモデルの指定が、「(aProcess :Process) ?(aProcess.definition.name=‘If’)」という記述451から、「(aProcess : If)」という記述116aに簡略化されている。また、出力データを指定するための「[aProcess.getOutputPort()->select(definition.name=‘out’->first.data.name/]」という記述452が、「[out.name/]」という記述116bに簡略化されている。変換テンプレート450内の他の記述453〜455も、変換テンプレート116内の対応する記述116c〜116eに簡略化されている。
このように、第2の実施の形態によれば、抽象度の高い動作レベルでの設計で記述量を少なくでき、変換テンプレートの冗長さが減る。
また第2の実施の形態では、動的EMFを利用した仕組みにより、「処理」のメタモデルをプラグイン化することで 、フローエディタにてユーザ定義の「データ」や「処理」の描画画面上への追加や、プロパティ定義の追加といった拡張が可能になる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 データフロー図
2 設定値
3 実行定義ファイル
10 モデルベース開発支援装置
11 記憶部
11a フローモデル
11b,11c メタモデル
11d 変換用テンプレート
12 演算部

Claims (4)

  1. データと処理の依存関係を表すフローモデルと、前記フローモデルに示される前記処理の定義方法を示すメタモデルと、前記処理の実行形式のファイルへの変換用テンプレートとを記憶する記憶部と、
    前記メタモデルに、前記メタモデルを識別するメタモデル識別子を設定すると共に、前記メタモデル識別子を前記フローモデルに設定し、前記実行形式のファイルの生成要求に応じて、前記フローモデルに設定された前記メタモデル識別子に基づいて前記メタモデルを参照し、前記メタモデルに示される処理の定義方法に従って、前記変換用テンプレート内の記述を前記フローモデルに応じて変換する演算部と、
    を有するモデルベース開発支援装置。
  2. 前記演算部は、さらに、データフロー図の作成画面において前記処理を示すオブジェクトが配置されると、前記処理に対応する前記メタモデルの前記メタモデル識別子を、前記フローモデルに設定する、
    請求項1記載のモデルベース開発支援装置。
  3. コンピュータが、
    データと処理の依存関係を表すフローモデルに示される前記処理の定義方法を示すメタモデルに、前記メタモデルを識別するメタモデル識別子を設定すると共に、前記メタモデル識別子を前記フローモデルに設定し、
    実行形式のファイルの生成要求に応じて、前記フローモデルに設定された前記メタモデル識別子に基づいて前記メタモデルを参照し、前記メタモデルに示される処理の定義方法に従って、前記処理の実行形式のファイルへの変換用テンプレート内の記述を、前記フローモデルに応じて変換する、
    モデルベース開発支援方法。
  4. コンピュータに、
    データと処理の依存関係を表すフローモデルに示される前記処理の定義方法を示すメタモデルに、前記メタモデルを識別するメタモデル識別子を設定すると共に、前記メタモデル識別子を前記フローモデルに設定し、
    実行形式のファイルの生成要求に応じて、前記フローモデルに設定された前記メタモデル識別子に基づいて前記メタモデルを参照し、前記メタモデルに示される前記処理の定義方法に従って、前記処理の実行形式のファイルへの変換用テンプレート内の記述を、前記フローモデルに応じて変換する、
    処理を実行させるモデルベース開発支援プログラム。
JP2015021950A 2015-02-06 2015-02-06 モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラム Pending JP2016146022A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015021950A JP2016146022A (ja) 2015-02-06 2015-02-06 モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015021950A JP2016146022A (ja) 2015-02-06 2015-02-06 モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラム

Publications (1)

Publication Number Publication Date
JP2016146022A true JP2016146022A (ja) 2016-08-12

Family

ID=56685491

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015021950A Pending JP2016146022A (ja) 2015-02-06 2015-02-06 モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラム

Country Status (1)

Country Link
JP (1) JP2016146022A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114115835A (zh) * 2022-01-27 2022-03-01 广州庚亿信息科技有限公司 自动编码执行流程构建方法、装置、存储介质及智能终端
CN114816389A (zh) * 2022-07-01 2022-07-29 北京远舢智能科技有限公司 一种基于元模型的管理系统搭建方法、装置、设备及介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114115835A (zh) * 2022-01-27 2022-03-01 广州庚亿信息科技有限公司 自动编码执行流程构建方法、装置、存储介质及智能终端
CN114115835B (zh) * 2022-01-27 2022-05-17 广州庚亿信息科技有限公司 自动编码执行流程构建方法、装置、存储介质及智能终端
CN114816389A (zh) * 2022-07-01 2022-07-29 北京远舢智能科技有限公司 一种基于元模型的管理系统搭建方法、装置、设备及介质
CN114816389B (zh) * 2022-07-01 2022-10-11 北京远舢智能科技有限公司 一种基于元模型的管理系统搭建方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
US10620933B2 (en) Techniques for efficient application configuration patching
US20180173606A1 (en) Hybrid testing automation engine
US8789015B2 (en) Integrated application localization
EP3188009A1 (en) Development, delivery, deployment and operation of an application
US20160292206A1 (en) Validating coherency between multiple data sets between database transfers
US11797273B2 (en) System and method for enhancing component based development models with auto-wiring
US11093222B2 (en) Generating interfaces from annotated entity definitions for developing applications
US10901804B2 (en) Apparatus and method to select services for executing a user program based on a code pattern included therein
US10606450B2 (en) Method and system for visual requirements and component reuse driven rapid application composition
US20210073054A1 (en) Flexible event ingestion framework in an event processing system
US20160055043A1 (en) Pattern analysis for triaging memory leaks
JP2013003664A (ja) 情報処理装置および方法
US8413109B2 (en) Systems and methods for metamodel transformation
US8296723B2 (en) Configurable unified modeling language building blocks
US20160253157A1 (en) Software refactoring
US10417234B2 (en) Data flow modeling and execution
US11194602B2 (en) Runtime execution of entities and services in an application object runtime environment
US10552233B2 (en) Application convergence method and apparatus
JP2016146022A (ja) モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラム
US11093220B2 (en) Generating interfaces from data and service definitions for developing applications
US11163538B2 (en) Package conversions for procedural language extensions
US10769183B2 (en) Identifying resources in user interfaces for feedback
JP5279767B2 (ja) 統括プログラム
CN117453713A (zh) 多类型数据库的sql语句生成方法、设备和存储介质
JP2014241011A (ja) ソースプログラム生成装置およびソースプログラム生成プログラム