(57)【要約】【課題】実行形式のファイルへの変換用のテンプレートの記述量を削減する。【解決手段】記憶部１１は、データと処理の依存関係を表すフローモデル１１ａと、フローモデル１１ａに示される処理の定義方法を示すメタモデル１１ｂと、処理の実行形式のファイルへの変換用テンプレート１１ｄとを記憶する。演算部１２は、メタモデル１１ｂ，１１ｃに、メタモデル１１ｂ，１１ｃを識別するメタモデル識別子を設定すると共に、フローモデル１１ａからの実行形式のファイルの生成要求に応じて、メタモデル識別子をフローモデル１１ａに設定する。次に演算部１２は、フローモデル１１ａに設定されたメタモデル識別子に基づいてメタモデル１１ｂを参照し、メタモデル１１ｂに示される処理の定義方法に従って、変換用テンプレート１１ｄ内の記述をフローモデル１１ａに応じて変換する。【選択図】図１
2016146022.tif 000002
【特許請求の範囲】
【請求項１】
データと処理の依存関係を表すフローモデルと、前記フローモデルに示される前記処理の定義方法を示すメタモデルと、前記処理の実行形式のファイルへの変換用テンプレートとを記憶する記憶部と、
前記メタモデルに、前記メタモデルを識別するメタモデル識別子を設定すると共に、前記メタモデル識別子を前記フローモデルに設定し、前記実行形式のファイルの生成要求に応じて、前記フローモデルに設定された前記メタモデル識別子に基づいて前記メタモデルを参照し、前記メタモデルに示される処理の定義方法に従って、前記変換用テンプレート内の記述を前記フローモデルに応じて変換する演算部と、
を有するモデルベース開発支援装置。
【請求項２】
前記演算部は、さらに、データフロー図の作成画面において前記処理を示すオブジェクトが配置されると、前記処理に対応する前記メタモデルの前記メタモデル識別子を、前記フローモデルに設定する、
請求項１記載のモデルベース開発支援装置。
【請求項３】
コンピュータが、
データと処理の依存関係を表すフローモデルに示される前記処理の定義方法を示すメタモデルに、前記メタモデルを識別するメタモデル識別子を設定すると共に、前記メタモデル識別子を前記フローモデルに設定し、
実行形式のファイルの生成要求に応じて、前記フローモデルに設定された前記メタモデル識別子に基づいて前記メタモデルを参照し、前記メタモデルに示される処理の定義方法に従って、前記処理の実行形式のファイルへの変換用テンプレート内の記述を、前記フローモデルに応じて変換する、
モデルベース開発支援方法。
【請求項４】
コンピュータに、
データと処理の依存関係を表すフローモデルに示される前記処理の定義方法を示すメタモデルに、前記メタモデルを識別するメタモデル識別子を設定すると共に、前記メタモデル識別子を前記フローモデルに設定し、
実行形式のファイルの生成要求に応じて、前記フローモデルに設定された前記メタモデル識別子に基づいて前記メタモデルを参照し、前記メタモデルに示される前記処理の定義方法に従って、前記処理の実行形式のファイルへの変換用テンプレート内の記述を、前記フローモデルに応じて変換する、
処理を実行させるモデルベース開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデルベース開発支援装置、モデルベース開発支援方法、およびモデルベース開発支援プログラムに関する。
【背景技術】
【０００２】
大量データを効率的に処理する様々な技術が開発されている。そのうちの一つに、大量データの分析処理と複合イベント処理を統合的に扱える開発・実行環境がある。これらの開発・実行環境では、「データ」と「処理」の依存関係を定義したデータフロー図から、実行環境向けの実行形式の情報が記述されたファイル（実行定義ファイル）を自動生成することができる。
【０００３】
実行形式の情報の自動生成に関連する技術としては、例えば、コンピュータ実行可能アプリケーションを構成するためのユーザ・インターフェースに関する技術がある。また、ネットワーク上に分散したサービスを構成する要素サービスを連携させてサービスを実行する際に、広くユーザが用いる連携シナリオの作成を支援する技術もある。さらに、バッチ処理かリアルタイム処理かの違いを意識することなく容易にプログラムを作成する技術もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１３−５１３８６４号公報
【特許文献２】特開２００８−２１０９５号公報
【特許文献３】特開２０１２−２４７９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実行定義ファイルの自動生成には、例えば変換テンプレートが用いられる。例えば作業者が、編集画面上で、処理やデータに対応するオブジェクトを組み合わせてデータフロー図を作成すると、そのデータフロー図に応じたフローのモデルが、予め用意されたフローのメタモデルに従って生成される。フローのメタモデルには、例えば処理やデータなどのインスタンスの関係と、処理やデータなどの定義の仕方とが、分けて定義されている。フローに含まれる処理には、処理の定義の仕方などが具体的に記述された処理のモデルが用意されている。そして、処理のモデルに従った処理の実行定義ファイルを生成するための変換テンプレートが用意される。変換テンプレートは、例えば所定の値を置き換えることで、対応する処理の実行定義ファイルとなるように記述されたデータである。変換テンプレートは、例えばシステムのプラットフォームを提供するプラットフォーム提供事業者によって作成される。プラットフォーム提供事業者は、新しい処理が増えるごとに、その処理のモデルを作成し、そこから実行形式に変換する変換テンプレートを作成することとなる。
【０００６】
しかし、従来は、処理のモデルに処理の定義の仕方が含まれるため、処理のモデルで示された処理の実行定義ファイルを生成するための変換テンプレートにも、処理の定義の仕方に関する記述が含まれてしまう。その結果、変換テンプレートの記述量が多くなり、変換テンプレートの作成作業が煩雑となっている。
【０００７】
１つの側面では、本件は、実行形式のファイルへの変換用のテンプレートの記述量を削減することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、記憶部と演算部とを有するモデルベース開発支援装置が提供される。記憶部は、データと処理の依存関係を表すフローモデルと、フローモデルに示される処理の定義方法を示すメタモデルと、処理の実行形式のファイルへの変換用テンプレートとを記憶する。演算部は、メタモデルに、メタモデルを識別するメタモデル識別子を設定すると共に、メタモデル識別子をフローモデルに設定する。そして演算部は、実行形式のファイルの生成要求に応じて、フローモデルに設定されたメタモデル識別子に基づいてメタモデルを参照し、メタモデルに示される処理の定義方法に従って、変換用テンプレート内の記述をフローモデルに応じて変換する。
【発明の効果】
【０００９】
１態様によれば、実行形式のファイルへの変換用のテンプレートの記述量を削減できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係るモデルベース開発支援装置の構成例を示す図である。
【図２】第２の実施の形態のモデルベース開発支援システムの構成例を示す図である。
【図３】サーバのハードウェアの一構成例を示す図である。
【図４】サーバの機能を示すブロック図である。
【図５】各モデルと変換テンプレートとの関係を示す図である。
【図６】フローに「処理」のインスタンスを配置する処理手順を示すシーケンス図である。
【図７】フローに「データ」のインスタンスを配置する処理手順を示すシーケンス図である。
【図８】メタモデル識別子の追加とインスタンスの配置例を示す図である。
【図９】実行定義ファイル生成処理の手順を示すシーケンス図である。
【図１０】実行定義ファイルを作成するフローの一例を示す図である。
【図１１】フローのモデルの一例を示す図である。
【図１２】「処理」のメタモデルの一例を示す図である。
【図１３】「データ」のメタモデルの一例を示す図である。
【図１４】変換テンプレートの一例を示す図である。
【図１５】モデル変換処理の手順を示すフローチャートである。
【図１６】比較対象技術における各モデルと変換テンプレートとの関係の例を示す図である。
【図１７】処理のメタモデルを用いた変換テンプレートと「処理」のモデルを用いた変換テンプレートとの比較例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
コンピュータシステムにおけるデータの流れは、データフロー図で表すことができる。データフロー図は、処理のインスタンスやデータのインスタンスを表すオブジェクトを組み合わせて作成できる。以下、データフロー図に含まれる処理やデータについては、括弧で囲い「処理」・「データ」と表すことで、モデルベース開発支援のための処理やデータと区別する。
【００１２】
図１は、第１の実施の形態に係るモデルベース開発支援装置の構成例を示す図である。モデルベース開発支援装置１０は、記憶部１１と演算部１２とを有している。
記憶部１１は、フローモデル１１ａ、「処理」のメタモデル１１ｂ、「データ」のメタモデル１１ｃ、および変換用テンプレート１１ｄを記憶する。フローモデル１１ａは、データと処理の依存関係を表したものである。フローモデル１１ａは、例えばデータフロー図１に基づいて作成される。またフローモデル１１ａには、「処理」を実行する際に使用する設定値２が設定される。「処理」のメタモデル１１ｂは、フローモデル１１ａに示される「処理」の、実行形式である実行定義ファイル３での定義方法を示す情報である。「処理」の定義方法には、例えば「処理」のプロパティに設定する値の型（文字か数値かなど）などが含まれる。「データ」のメタモデル１１ｃは、フローモデル１１ａに示される「データ」の、実行形式の実行定義ファイル３での定義方法を示す情報である。変換用テンプレート１１ｄは、「処理」の実行形式のファイルへの変換用のテンプレートである。変換用テンプレート１１ｄには、例えば、所定の部分を置換すれば、実行形式のファイルである実行定義ファイル３となるように、記述されている。
【００１３】
演算部１２は、メタモデル１１ｂ，１１ｃに、メタモデル１１ｂ，１１ｃを識別するメタモデル識別子を設定すると共に、それらのメタモデル識別子をフローモデル１１ａに設定する（ステップＳ１）。これにより、メタモデル１１ｂ，１１ｃが、フローモデル１１ａに関連付けられる。また演算部１２は、実行形式のファイルの生成要求に応じて、フローモデル１１ａに設定されたメタモデル識別子に基づいてメタモデル１１ｂ，１１ｃを参照する（ステップＳ２）。そして演算部１２は、「処理」のメタモデル１１ｂに示される「処理」の定義方法や、「データ」のメタモデル１１ｃに示される「データ」の定義方法に従って、変換用テンプレート１１ｄ内の記述をフローモデル１１ａに応じて変換する（ステップＳ３）。その結果、実行定義ファイル３が生成される。
【００１４】
このようなモデルベース開発支援装置１０によれば、「処理」の定義方法がメタモデル１１ｂで示されており、フローモデル１１ａの実行定義ファイル３を生成する際に、メタモデル１１ｂを参照して、変換用テンプレート１１ｄ内の記述が変換される。例えば、「処理」のメタモデル１１ｂにおいて、プロパティの値の型が定義されているとき、変換用テンプレート１１ｄ内のプロパティの値の設定箇所に、定義した型でプロパティの値が設定される。このように、抽象度が高いメタモデル１１ｂにおいて「処理」の定義方法を定めておき、メタモデル１１ｂを参照して実行定義ファイル３を生成することで、変換用テンプレート１１ｄ内には、「処理」の定義方法に関する詳細は記述を含めずにすむ。その結果、変換用テンプレート１１ｄを記載量の削減が可能となる。
【００１５】
記憶部１１は、フローモデル１１ａにおける「データ」と「処理」との関係を定義したフローメタモデルをさらに記憶している場合もある。この場合、演算部１２は、データフロー図１に基づいて、フローメタモデルに従ったフローモデル１１ａを作成することができる。この際、演算部１２は、例えば、データフロー図１の作成画面において「処理」を示すオブジェクトが配置されると、その「処理」に対応するメタモデルのメタモデル識別子を、フローモデル１１ａに設定する。同様に、演算部１２は、データフロー図１に「データ」を示すオブジェクトが配置されると、その「データ」に対応するメタモデル１１ｃのメタモデル識別子を、フローモデル１１ａに設定することもできる。このようにして、データフロー図１に基づくフローモデル１１ａ作成時に、フローモデル１１ａを、メタモデル１１ｂ，１１ｃに自動で関連付けることができる。
【００１６】
また、演算部１２は、例えばモデルベース開発支援装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えばモデルベース開発支援装置１０が有するメモリにより実現することができる。
【００１７】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、複合イベント処理を統合的に扱えるモデルベース開発支援システムの例である。
【００１８】
図２は、第２の実施の形態のモデルベース開発支援システムの構成例を示す図である。ネットワーク２０を介して複数のサーバ１００，２００，３００が接続されている。サーバ１００は、複合イベント処理を統合的に扱えるシステムの開発環境が構築されたコンピュータである。例えばサービス提供者が端末装置３１を用いてサーバ１００にアクセスし、システムの開発作業を行う。
【００１９】
サーバ２００は、複合イベント処理における個々の「処理」の開発環境が構築されたコンピュータである。例えばプラットフォーム提供事業者が端末装置３２を介してサーバ２００にアクセスし、「処理」の開発作業を行う。サーバ３００は、複合イベント処理を実行するための実行環境が構築されたコンピュータである。
【００２０】
モデルベース開発支援システムを使用するのは、サービス提供者とプラットフォーム提供事業者である。モデルベース開発支援システムでは、実行方式に依存しない実行定義を使って、クラウド、ＩｏＴ（Internet of Things）など、次々と登場する新たな実行環境で動作するサービスを、サービス提供者自らが構築できることをめざしている。例えば、サービス提供者は、開発環境を有するサーバ１００上で既存の「処理」を組み合わせ、提供するサービスを構築する。プラットフォーム提供事業者は、新しい実行環境や処理ロジックを利用可能にする。 例えばプラットフォーム提供事業者は、これまで使用してきたものとは異なる新たな実行環境での「処理」が必要になると、「処理」の定義と、「処理」向けの変換テンプレートなどを作成する。
【００２１】
なおサーバ１００は、実行定義ファイルを自動生成することができる。実行定義ファイルの生成には、例えば、データフロー図などの設計図から実装コードを自動生成するＭＤＡ（Model Driven Architecture）と呼ばれるシステム開発手法を用いることができる。ＭＤＡは、プラットフォーム独立モデル（ビジネスの業務要件を表現するモデル）から、プラットフォーム特化モデル（技術に依存したモデル）への変換を経て、実装コードを得るものである。
【００２２】
また各種モデルの生成には、ＥＭＦ（Eclipse Modeling Framework）を用いることができる。ＥＭＦは、Eclipse用のモデリング・フレームワークである。ＥＭＦのコアとなるフレームワークには、モデルとそのモデルのランタイム・サポートを記述するためのメタモデル（Ecore）が組み込まれている。このメタモデルには、ＸＭＩ（XML Metadata Interchange）によるシリアライズを使った永続化機能や、ＥＭＦオブジェクトを一般的に操作するためのリフレクションＡＰＩ（Application Programming Interface）が含まれる。リフレクションＡＰＩは、フィールドやメソッドなどの情報を取得するＡＰＩである。Ecoreモデルで定義したモデルが、開発者がアプリケーション・データを管理するために使用するモデルの構造を定義する。Ecoreモデルは、定義済みクラスに関する情報（EClass, EAttribute, EFeference, EDataTypeなど）を含んでいる。
【００２３】
動的ＥＭＦを使うこともできる。動的ＥＭＦでは、「処理」の実行時にプログラムによってメモリ内にコア・モデルが構築されて、コア・モデルのインスタンスが動的に作成される。インスタンスには、ＥＭＦのリフレクションＡＰＩを使ってアクセスできる。このとき、例えばメタモデルであるEPackageのnsURI属性の値としてメタモデル識別子を設定して、EPackageが一意に識別できるようにすることができる。
【００２４】
第２の実施の形態に係るモデルベース開発支援システムでは、動的ＥＭＦを利用した仕組みにより、少ない記述量の変換テンプレートにより、実用可能な実行定義ファイルを生成できるようにする。例えばモデルベース開発支援システムのサーバ１００は、「処理」と「データ」を参照で結ぶ、フローのメタモデルを定義し、フローのメタモデル中の「処理」のメタモデルを定義し管理する。そしてサーバ１００は、「処理」の定義の仕方として、処理型・プロパティ・入出力データ数等を持つ従来の「処理」のモデルより抽象度が高い「処理」のメタモデルを、変換テンプレートと関連付ける。サーバ１００は、変換テンプレートを用いて実行定義ファイルを生成する際には、関連付けられた「処理」のメタモデルを参照する。
【００２５】
「処理」のメタモデルは「処理」のモデルよりも抽象度が高い。そのため、変換テンプレートにおける「処理」に関する記述も、高い抽象度のままで記述することができ、変換テンプレートの記述量が削減され、変換テンプレート作成時の煩雑さが減る。
【００２６】
次に、サーバのハードウェア構成について説明する。
図３は、サーバのハードウェアの一構成例を示す図である。サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００２７】
メモリ１０２は、サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に利用する各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００２８】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００２９】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、サーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。
【００３０】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３１】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３２】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３３】
機器接続インタフェース１０７は、サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３４】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３５】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。他のサーバ２００，３００や端末装置３１，３２も、サーバ１００と同様のハードウェアによって実現できる。なお、第１の実施の形態に示したモデルベース開発支援装置１０も、図３に示したサーバ１００と同様のハードウェアにより実現することができる。
【００３６】
サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、サーバ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またサーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００３７】
次に、少ない記述量の変換テンプレートを用いた実行定義ファイルの生成を可能とするための、サーバの機能について説明する。
図４は、サーバの機能を示すブロック図である。開発環境が構築されたサーバ１００は、リポジトリ１１０、フローエディタ１２０、モデル管理部１３０、モデル変換部１４０、および実行定義管理部１５０を有する。
【００３８】
リポジトリ１１０は、システムの開発に用いる情報を記憶する。例えばリポジトリ１１０には、フローのメタモデル１１１、「データ」のメタモデル１１２、「処理」のメタモデル１１３、フローのモデル１１４、「データ」のモデル１１５、変換テンプレート１１６、および実行定義ファイル１１７が格納される。フローのメタモデル１１１は、複合イベント処理を実施するためのフローのモデルを定義する情報である。フローのメタモデル１１１には、「処理」と「データ」を参照で結ぶことで、「処理」のインスタンスと「データ」のインスタンスとの関係が定義される。「データ」のメタモデル１１２は、取り扱われる「データ」を抽象的に定義する情報である。「処理」のメタモデル１１３は、「処理」を抽象的に定義する情報である。フローのモデル１１４は、複合イベント処理において実行する「処理」のフローを定義する情報である。「データ」のモデル１１５は、フローで使用する「データ」を定義する情報である。変換テンプレート１１６は、フローのモデル１１４から実行定義ファイル１１７を生成するためのテンプレートである。実行定義ファイル１１７は、フローのモデル１１４に示された「処理」を、実行環境のサーバ３００が実行できるようなデータ形式で記載した情報である。
【００３９】
フローエディタ１２０は、ユーザからの操作入力に応じてデータフロー図を作成し、作成されたデータフロー図に対応するフローのモデル１１４を生成する。フローエディタ１２０は、例えば「データ」のメタモデル編集部１２１とフローのモデル編集部１２２とを有する。「データ」のメタモデル編集部１２１は、入力に応じて「データ」のメタモデル１１２を生成する。例えば「データ」のメタモデル編集部１２１は、「データ」のメタモデル生成用の画面を表示し、その画面内に入力された内容に応じた「データ」のメタモデル１１２を生成する。フローのモデル編集部１２２は、フローのモデル１１４を生成する。例えばフローのモデル編集部１２２は、「データ」を表すオブジェクトと「処理」を表すオブジェクトを操作する入力に応じて、画面上にデータフロー図を生成する。フローのモデル編集部１２２は、データフロー図作成完了の入力に応じ、データフロー図に表されたフローを示すフローのモデルを生成する。フローエディタ１２０は、生成した「データ」のメタモデル１１２やフローのモデル１１４を、リポジトリ１１０に格納する。
【００４０】
モデル管理部１３０は、リポジトリ１１０に格納された各種のモデルを管理する。モデル管理部１３０は、メタモデル識別子管理部１３１と処理管理部１３２とを有する。
メタモデル識別子管理部１３１は、「データ」のメタモデル１１２やフローのメタモデル１１１に与えられるメタモデル識別子を管理する。例えばメタモデル識別子管理部１３１は、与えられたメタモデル識別子とメタモデルとの対応関係を登録し、参照要求があると登録されているメタモデル識別子を検索する。そしてメタモデル識別子管理部１３１は、検索によって得られたメタモデル識別子に対応するメタモデルを、参照要求に対する応答として出力する。
【００４１】
処理管理部１３２は、フローのメタモデル１１２を継承して作成された「処理」のメタモデル１１３を管理する。例えば処理管理部１３２は、「処理」のメタモデル１１３に、メタモデル識別子管理部１３１により与えられたメタモデル識別子を登録する。そして処理管理部１３２は、参照要求があると、「処理」のメタモデル１１３から、登録されている「処理」のメタモデル識別子を検索する。
【００４２】
モデル変換部１４０は、フローエディタ１２０から起動される。モデル変換部１４０は、フローのモデル１１４を入力とし、フローのモデル１１４に含まれるメタモデル識別子から、該当する「処理」のメタモデル１１３を参照し、変換テンプレート１１６を利用して、実行定義ファイル１１７を生成する。
【００４３】
実行定義管理部１５０は、実行定義ファイル１１７を、実行環境のサーバ３００に送信する。するとサーバ３００において、実行定義ファイル１１７に示された「処理」が実行される。
【００４４】
「処理」の開発環境が構築されたサーバ２００は、「処理」のメタモデル編集部２１０と変換テンプレート編集部２２０とを有している。「処理」のメタモデル編集部２１０は、ユーザからの操作入力に応じて、新たに追加する「処理」のメタモデル１１３を作成する。「処理」のメタモデル編集部２１０は、作成した「処理」のメタモデル１１３を、サーバ１００のリポジトリ１１０に格納する。変換テンプレート編集部２２０は、ユーザからの操作入力に応じて、新たに追加する「処理」の変換テンプレート１１６を作成する。変換テンプレート編集部２２０は、作成した変換テンプレート１１６を、サーバ１００のリポジトリ１１０に格納する。
【００４５】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００４６】
次に、各モデルと変換テンプレートとの関係を説明する。
図５は、各モデルと変換テンプレートとの関係を示す図である。フローのメタモデル１１１には、処理（Process）やデータ（Data）のインスタンス間の関係が、示されている。図５の例では、関係のあるインスタンスの要素間が、線で接続されている。データフロー図４１に基づいて作成されたフローのモデル１１４は、フローのメタモデル１１１に示されている定義に従っている。フローのモデル１１４に含まれる「データ」は、「データ」のモデル１１５の定義に従っている。また「データ」のモデル１１５は、「データ」のメタモデル１１２に示される定義に従っている。
【００４７】
「処理」のメタモデル１１３には、フローのメタモデル１１１における「処理」を継承して定義されている。変換テンプレート１１６は、「処理」の実行定義ファイル１１７を作成するためのテンプレートである。「処理」のメタモデル１１３は、従来の「処理」のモデルよりも抽象度が高い。そのため、変換テンプレート１１６においても、抽象的に記述（例えば「If」や「field」）できることにより、「処理」のメタモデル１１３内の定義内容との対応関係を特定できる。
【００４８】
「データ」のメタモデル１１２や「処理」のメタモデル１１３には、メタモデル識別子４２，４３が含まれている。メタモデル識別子４２，４３によって、システム内で各メタモデルが一意に特定される。
【００４９】
次に、サーバ１００における処理について具体的に説明する。サーバ１００の処理は、大別して、フローエディタでのフロー編集時の処理と実行定義ファイル生成時の処理とに分けられる。フロー編集時の処理としては、例えばフローに「処理」のインスタンスを配置してプロパティを設定しフローを保存する処理と、フローに「データ」のインスタンスを配置する処理がある。
【００５０】
図６は、フローに「処理」のインスタンスを配置してプロパティを設定し、フローを保存する処理手順を示すシーケンス図である。なお、図６の処理において、各種情報へのアクセスは、識別子を用いて行われる。例えばフローのメタモデル１１１へのアクセスは、フローのメタモデル識別子を用いて行われる。フローのモデル１１４へのアクセスは、フローのモデル識別子を用いて行われる。フローのモデル識別子とは、フローのモデルを一意に特定するものである。「処理」のメタモデル１１３へのアクセスは、「処理」のメタモデル識別子を用いて行われる。
【００５１】
フローエディタ１２０のフローのモデル編集部１２２は、フローを開く操作入力を受け付ける（ステップＳ１０１）と、その操作入力に応じて、モデル管理部１３０へ、フローのメタモデル１１１の参照を指示する。モデル管理部１３０では、メタモデル識別子管理部１３１が、フローのメタモデル識別子を管理しており、そのメタモデル識別子によりリポジトリ１１０内のフローのメタモデル１１１を参照する（ステップＳ１０２）。メタモデル識別子管理部１３１は、参照したフローのメタモデル１１１の内容を、フローエディタ１２０に送信する。
【００５２】
フローのモデル編集部１２２は、フローのメタモデル１１１に従ったフローのデータフロー図作成用の画面に表示する。そして、フローのモデル編集部１２２は、ユーザから、フローへの「処理」の配置およびプロパティの設定入力を受け付ける（ステップＳ１０３）。例えばフローのモデル編集部１２２は、ユーザの操作に応じて、使用できる「処理」に対応するオブジェクトを、データフロー図の作成画面内に配置する。またフローのモデル編集部１２２は、ユーザが入力したプロパティを取得し、配置されたオブジェクトに対応する「処理」のプロパティとして設定する。そしてフローのモデル編集部１２２は、モデル管理部１３０に、「処理」のメタモデルの参照を指示する。
【００５３】
モデル管理部１３０では、処理管理部１３２が「処理」のメタモデル識別子に基づいて、「処理」のメタモデル１１３を参照する（ステップＳ１０４）。処理管理部１３２は、参照した「処理」のメタモデル１１３の内容を、フローエディタ１２０に送信する。
【００５４】
フローのモデル編集部１２２は、フローのモデル１１４に、「処理」のメタモデル識別子を追加する（ステップＳ１０５）。さらにフローのモデル編集部１２２は、フローのモデル１１４に「処理」のインスタンスを追加する（ステップＳ１０６）。その後、フローのモデル編集部１２２は、ユーザから、フローの保存を示す操作入力を受け付ける（ステップＳ１０７）。するとフローのモデル編集部１２２は、フローのモデル１１４のリポジトリ１１０への保存処理を行う（ステップＳ１０８）。例えばフローのモデル編集部１２２は、フローのモデル１１４をメモリ１０２に読み込んでステップＳ１０５，Ｓ１０６の処理を行い、フローの保存指示により、メモリ１０２内のフローのモデル１１４をリポジトリ１１０に保存する。
【００５５】
次に、フローに「データ」のインスタンスを配置する処理について説明する。
図７は、フローに「データ」のインスタンスを配置する処理手順を示すシーケンス図である。なお、図７の処理において、各種情報へのアクセスは、識別子を用いて行われる。例えばフローのメタモデル１１１へのアクセスは、フローのメタモデル識別子を用いて行われる。フローのモデル１１４へのアクセスは、フローのモデル識別子を用いて行われる。「データ」のメタモデル１１２へのアクセスは、「データ」のメタモデル識別子を用いて行われる。「データ」のモデル１１５へのアクセスは、「データ」の識別子を用いて行われる。
【００５６】
フローエディタ１２０の「データ」のメタモデル編集部１２１は、ユーザからの、データ登録の入力を受け付ける（ステップＳ１１１）。「データ」のメタモデル編集部１２１は、入力されたデータを、モデル管理部１３０に送信する。モデル管理部１３０のメタモデル識別子管理部１３１は、入力されたデータに関する定義を、リポジトリ１１０内の「データ」のメタモデル１１２に追加する（ステップＳ１１２）。
【００５７】
フローエディタ１２０のフローのモデル編集部１２２は、登録されたデータに関する「データ」のモデル１１５を、リポジトリ１１０に保存する（ステップＳ１１３）。その後、フローのモデル編集部１２２は、ユーザから、フローへの「データ」の配置の入力を受け付ける（ステップＳ１１４）。例えばフローのモデル編集部１２２は、ユーザの操作に応じて、使用できる「データ」に対応するオブジェクトを、データフロー図の作成画面内に配置する。
【００５８】
フローのモデル編集部１２２は、配置した「データ」のインスタンスを作成する（ステップＳ１１５）。そして、フローのモデル編集部１２２は、フローのモデル１１４に「データ」のインスタンスを追加する（ステップＳ１１６）。モデル管理部１３０のメタモデル識別子管理部１３１は、「データ」のメタモデルを参照する（ステップＳ１１７）。参照した「データ」のメタモデル１１２の内容は、フローのモデル編集部１２２に送信される。フローエディタ１２０のフローのモデル編集部１２２は、「データ」のメタモデル１１２に示された定義に従って、フローのモデル１１４に「データ」の識別子を追加する（ステップＳ１１８）。
【００５９】
このようにして、「データ」と「処理」とのインスタンスを配置したフローのモデルが生成され、保存される。
図８は、図６に示した処理におけるメタモデル識別子の追加とインスタンスの配置例を示す図である。フローのメタモデル１１１には、「nsURI」に、「platform:/resource/aaa/dataflow.ecore」というメタモデル識別子４４が設定されている。 「処理」のメタモデル１１３には、「nsURI」に、「platform:/resource/xxx/general.ecore」というメタモデル識別子４２が設定されている。フローのモデル１１４には、「xmlns:general」に、配置した「処理」のメタモデル１１３を示すメタモデル識別子４２が設定されている。またフローのモデル１１４には、「xmlns:dataflow」に、フローのモデル１１４が従っているフローのメタモデル１１１を示すメタモデル識別子４４が設定されている。さらに、フローのモデル１１４内には、「データ」のインスタンス４５と「処理」のインスタンス４６とが設定されている。
【００６０】
次に、実行定義ファイル生成時の処理について説明する。
図９は、フローを保存してから実行定義ファイルを生成する処理の手順を示すシーケンス図である。なお、図９の処理において、各種情報へのアクセスは、識別子を用いて行われる。例えばフローのメタモデル１１１へのアクセスは、フローのメタモデル識別子を用いて行われる。フローのモデル１１４へのアクセスは、フローのモデル識別子を用いて行われる。「処理」のメタモデル１１３へのアクセスは、「処理」のメタモデル識別子を用いて行われる。
【００６１】
フローエディタ１２０のフローのモデル編集部１２２は、フローのモデル１１４に対する編集作業後に、ユーザからの、フローの保存指示の入力を受け付ける（ステップＳ１２１）。フローのモデル編集部１２２は、フローのモデル１１４をリポジトリ１１０に保存する（ステップＳ１２２）。その後、フローのモデル編集部１２２は、ユーザからの、実行定義ファイル生成の操作入力を受け付ける（ステップＳ１２３）。フローのモデル編集部１２２は、実行定義ファイル生成の操作入力に応じて、モデル変換部１４０に実行定義ファイル１１７の生成を指示する。
【００６２】
モデル変換部１４０は、フローのモデル１１４をリポジトリ１１０から取得する（ステップＳ１２４）。次にメタモデル識別子管理部１３１が、フローのメタモデル１１１を参照する（ステップＳ１２５）。参照したフローのメタモデル１１１の内容は、モデル変換部１４０に送信される。モデル変換部１４０は、フローのメタモデル１１１に基づいてフローのモデル１１４の構造を解釈し、フローのモデル１１４内の「処理」を取得する（ステップＳ１２６）。処理管理部１３２は、「処理」のメタモデル１１３を参照する（ステップＳ１２７）。取得した「処理」のメタモデル１１３の内容は、モデル変換部１４０に送信される。モデル変換部１２８は、「処理」のメタモデル１１３に示された「処理」の定義に従って、ステップＳ１２６で取得した「処理」を、変換テンプレート１１６を用いて実行定義ファイル１１７に変換する（ステップＳ１２８）。
【００６３】
次に、モデル変換処理について詳細に説明する。
図１０は、実行定義ファイルを作成するフローの一例を示す図である。図１０の例では、フローエディタ１２０を用いて、家電イベントからＴＶ操作イベントを検知する“Filtering ”の「処理」を行うデータフロー図５１が作成されている。このデータフロー図５１で表されるフローのモデルに対して、プロパティの設定値５２が設定されている。ここで、変換テンプレートを用いて、ＥＰＬ（イベント処理言語）文の実行定義ファイル５３を出力する場合を考える。
【００６４】
図１１は、フローのモデルの一例を示す図である。フローのモデル６０には、「処理」のメタモデルを示すメタモデル識別子６１が設定されている。またフローのモデル６０には、データフロー図５１で配置された「処理」６２が記述されている。「処理」６２には、プロパティの設定値５２（図１０参照）が設定されている。
【００６５】
図１２は、「処理」のメタモデルの一例を示す図である。「処理」のメタモデル７０には、メタモデル識別子７１が設定されている。また「処理」のメタモデル７０には、「処理」に設定する値を定義する設定値定義７２が含まれる。設定値定義７２には、例えばプロパティの設定値の型（例えば文字なのか数値なのか）などが定義されている。
【００６６】
図１３は、「データ」のメタモデルの一例を示す図である。「データ」のメタモデル８０には、メタモデル識別子８１が設定されている。また「データ」のメタモデル８０には、入力データ８２や出力データ８３に関する定義が設定されている。
【００６７】
図１４は、変換テンプレートの一例を示す図である。変換テンプレート９０には、例えば、複数の「処理」それぞれについて、実行定義ファイルへの変換用のテンプレートが記載されている。図１４には、Filteringの変換テンプレート部９１が示されている。Filteringの変換テンプレート部９１には、モデル変換時の置換部９１ａ〜９１ｄが含まれている。置換部９１ａ〜９１ｄは、例えば"[  /]"という記載部分である。
【００６８】
図１５は、モデル変換処理の手順を示すフローチャートである。
［ステップＳ１３１］モデル変換部１４０は、フローのモデル６０を読み込む。例えばモデル変換部１４０は、フロー識別子を指定して、リポジトリ１１０からフローのモデル６０を取得する。
【００６９】
［ステップＳ１３２］モデル変換部１４０は、取得したフローのモデル６０から、フローに登場する「処理」６２を取得する。
［ステップＳ１３３］モデル変換部１４０は、出力ファイルを作成し、その出力ファイルを開く。
【００７０】
［ステップＳ１３４］モデル変換部１４０は、フローに登場する「処理」が終了したか否かを判断する。例えばモデル変換部１４０は、フローのモデル６０の先頭から順にフローに登場する「処理」を選択して、ステップＳ１３６以降の処理を実行する。モデル変換部１４０は、すべての「処理」が選択済みとなったとき、フローに登場する「処理」が終了したと判断する。フローに登場する「処理」が終了した場合、「処理」がステップＳ１４３に進められる。フローに登場する「処理」が終了していなければ、「処理」を選択して、処理をステップＳ１３５に進める。
【００７１】
［ステップＳ１３５］モデル変換部１４０は、「処理」のメタモデル７０を参照する。例えばモデル変換部１４０は、フローのモデル６０からメタモデル識別子６１を取得する。モデル変換部１４０は、取得したメタモデル識別子６１が合致するメタモデル識別子が設定された「処理」のメタモデル７０を、リポジトリ１１０から取得する。
【００７２】
［ステップＳ１３６］モデル変換部１４０は、「処理」に対応する変換テンプレートを取得する。例えばモデル変換部１４０は、変換テンプレート９０内のFilteringの変換テンプレート部９１の記述を取得する。
【００７３】
［ステップＳ１３７］モデル変換部１４０は、取得した変換テンプレートの１行を、先頭から順に読み込む。
［ステップＳ１３８］モデル変換部１４０は、変換テンプレートが終了したか否かを判断する。例えばモデル変換部１４０は、ステップＳ１３７における読み込みにおいて、取得した変換テンプレート内に読み込む行がない場合、変換テンプレートが終了したと判断する。変換テンプレートが終了した場合、処理がステップＳ１３９に進められる。変換テンプレートが終了しなければ、処理がステップＳ１４０に進められる。
【００７４】
［ステップＳ１３９］モデル変換部１４０は、フローに登場する次の「処理」を取得する。その後、処理がステップＳ１３４に進められる。
［ステップＳ１４０］モデル変換部１４０は、読み込んだ行に[/]で囲まれた部分があるか否かを判断する。該当する部分があれば、処理がステップＳ１４１に進められる。該当する部分がなければ、処理がステップＳ１４２に進められる。
【００７５】
［ステップＳ１４１］モデル変換部１４０は、[/]で囲まれた部分を置換する。例えば、フローのモデル６０中の「処理」６２において、「inEventData」の値を示す変数「#dddd001」に、データフロー図５１において入力データとされている「HEvent」が設定されているものとする。さらに、「outEventData」の値を示す変数「#dddd002」に、データフロー図５１において入力データとされている「TVControl」が設定されているものとする。このときモデル変換部１４０は、Filteringの変換テンプレート部９１における[inEventData.name/]の置換部９１ｂの記載を「HEvent」に置換する。同様に、モデル変換部１４０は、Filteringの変換テンプレート部９１における[outEventData.name/]の置換部９１ａの記載を「TVControl」に置換する。
【００７６】
またモデル変換部１４０は、Filteringの変換テンプレート部９１における[aProcess.targetPropertyName/]の置換部９１ｃの記載を、フローのモデル６０の「処理」６２において「targetPropertyName」に設定されている値“category”に置換する。さらに、モデル変換部１４０は、Filteringの変換テンプレート部９１における[aProcess.targetPropertyValue/]の置換部９１ｄの記載を、フローのモデル６０の「処理」６２において「targetPropertyName」に設定されている値“’Television’”に置換する。
【００７７】
なおモデル変換部１４０は、“[/]”で囲まれた部分を置換する際に、置換後の値の属性などは、「処理」のメタモデル７０における設定値定義７２の定義に従う。すなわちモデル変換部１４０は、フローのモデル６０に示されるメタモデル識別子６１に基づいて、「処理」のメタモデル７０を参照し、設定値定義７２に従った値に、置換を行う。
【００７８】
［ステップＳ１４２］モデル変換部１４０は、変換した行を、出力ファイルに書き出す。その後、処理がステップＳ１３７に進められる。
このようにして、図１４に示すような簡単な記載の変換テンプレート９０により、図１０に示したような実行定義ファイル５３が生成できる。すなわち、第２の実施の形態では、フローのメタモデルに「処理」の定義の仕方が含まれておらず、「処理」のモデルよりも抽象度が高い「処理」のメタモデルを用いて、実行定義ファイル５３を生成できる。
【００７９】
以下、比較対象として、フローのメタモデルに「処理」の定義の仕方などの情報を含めた場合における。「処理」のモデルを用いた変換テンプレートの記載例について説明する。
【００８０】
図１６は、比較対象技術における各モデルと変換テンプレートとの関係の例を示す図である。図１６の例では、フローのメタモデル４１０に、「処理」のインスタンス４１１を示す要素以外に、「処理」の定義の仕方４１２やプロパティの定義の仕方４１３を示す要素が含まれている。「処理」の定義の仕方４１２の具体的な内容は、「処理」のモデル４２０内に記載されている。またプロパティの定義の仕方４１３の具体的な内容も、「処理」のモデル４２０に記載されている。
【００８１】
ここで、データフロー図４３０に基づいてフローのモデル４４０が作成されたとき、フローのモデル４４０に示される「処理」の実行定義ファイルを作成するため、変換テンプレート４５０が作成される。変換テンプレート４５０は、「処理」のモデル４２０に従った実行定義ファイルが生成できるように、具体的に記載される。例えば、図１６の例では、変換テンプレート４５０内に、「処理」のモデル４２０を指定する記述４５１やプロパティの定義の仕方４１３を特定するための記述４５４が含まれている。
【００８２】
図１６の例では、フローのメタモデル４１０において、「処理」や「データ」などのインスタンスの関係と、「処理」や「データ」などの定義の仕方が分けて定義されている。「処理」の定義の仕方が定義されていることで、「処理」の定義に書ける範囲が限定され、信頼性の高い実行定義ファイルを生成できる。ここで、「処理」の定義の仕方は、システム内で固定であり、「処理」の定義の仕方により、例えば処理型・プロパティ・入出力データ数などが定義される。
【００８３】
以下、図１６に示した比較対象の技術の例と、図５に示す第２の実施の形態の例とを比較する。第２の実施の形態では、フローのメタモデル１１１の定義が、「処理」と「データ」を参照で結ぶメタモデルに変更され、フローのメタモデル１１１中の「処理」を継承するような「処理」のメタモデル１１３が定義されている。フローのメタモデル１１１中の「処理」が、「処理」のモデルではなく、「処理」のメタモデル１１３で定義されていることで、モデルの抽象度が上がっている。
【００８４】
変換テンプレートから参照するモデルの抽象度が上がることにより、モデルと変換テンプレートの対応が変わり、変換テンプレートの「処理」に関する記述量を少なくできる。その結果、変換テンプレートの煩雑さ・冗長さを減らすことができる。
【００８５】
図１７は、「処理」のメタモデルを用いた変換テンプレートと「処理」のモデルを用いた変換テンプレートとの比較例を示す図である。図１７には、「処理」のモデルを利用して実行定義ファイルを生成するための変換テンプレート４５０と、「処理」のメタモデルを利用した実行定義ファイルを生成するための変換テンプレート１１６とが示されている。
【００８６】
変換テンプレート４５０と変換テンプレート１１６とを比較すると、参照先のモデルの指定が、「(aProcess :Process) ?(aProcess.definition.name=‘If’)」という記述４５１から、「(aProcess : If)」という記述１１６ａに簡略化されている。また、出力データを指定するための「[aProcess.getOutputPort()->select(definition.name=‘out’->first.data.name/]」という記述４５２が、「[out.name/]」という記述１１６ｂに簡略化されている。変換テンプレート４５０内の他の記述４５３〜４５５も、変換テンプレート１１６内の対応する記述１１６ｃ〜１１６ｅに簡略化されている。
【００８７】
このように、第２の実施の形態によれば、抽象度の高い動作レベルでの設計で記述量を少なくでき、変換テンプレートの冗長さが減る。
また第２の実施の形態では、動的ＥＭＦを利用した仕組みにより、「処理」のメタモデルをプラグイン化することで 、フローエディタにてユーザ定義の「データ」や「処理」の描画画面上への追加や、プロパティ定義の追加といった拡張が可能になる。
【００８８】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【００８９】
１  データフロー図
２  設定値
３  実行定義ファイル
１０  モデルベース開発支援装置
１１  記憶部
１１ａ  フローモデル
１１ｂ，１１ｃ  メタモデル
１１ｄ  変換用テンプレート
１２  演算部
【図１】
2016146022.tif 000003
【図２】
2016146022.tif 000004
【図３】
2016146022.tif 000005
【図４】
2016146022.tif 000006
【図５】
2016146022.tif 000007
【図６】
2016146022.tif 000008
【図７】
2016146022.tif 000009
【図８】
2016146022.tif 000010
【図９】
2016146022.tif 000011
【図１０】
2016146022.tif 000012
【図１１】
2016146022.tif 000013
【図１２】
2016146022.tif 000014
【図１３】
2016146022.tif 000015
【図１４】
2016146022.tif 000016
【図１５】
2016146022.tif 000017
【図１６】
2016146022.tif 000018
【図１７】
2016146022.tif 000019