JP2011165051A - 開発支援装置及び方法並びにプログラム - Google Patents
開発支援装置及び方法並びにプログラム Download PDFInfo
- Publication number
- JP2011165051A JP2011165051A JP2010028929A JP2010028929A JP2011165051A JP 2011165051 A JP2011165051 A JP 2011165051A JP 2010028929 A JP2010028929 A JP 2010028929A JP 2010028929 A JP2010028929 A JP 2010028929A JP 2011165051 A JP2011165051 A JP 2011165051A
- Authority
- JP
- Japan
- Prior art keywords
- function
- program
- variable
- interface
- source code
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
【課題】組み込み制御プログラムを利用したシミュレーション環境の構築を容易にして開発効率を向上させる開発支援装置を提供する。
【解決手段】ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析部と、ソースコード解析部から得られる解析結果と予め規定されている変数分類ルールとに基づいて関数インターフェイス情報を作成する関数インターフェイス情報作成部と、関数インターフェイス情報に基づいて、ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成部とを備える開発支援装置を提供し、ユーザがインターフェイスプログラムを作成せずに、組み込み制御プログラムをシミュレータ上で実行できるようにする。
【選択図】図1
【解決手段】ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析部と、ソースコード解析部から得られる解析結果と予め規定されている変数分類ルールとに基づいて関数インターフェイス情報を作成する関数インターフェイス情報作成部と、関数インターフェイス情報に基づいて、ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成部とを備える開発支援装置を提供し、ユーザがインターフェイスプログラムを作成せずに、組み込み制御プログラムをシミュレータ上で実行できるようにする。
【選択図】図1
Description
本発明は、開発支援装置及び方法並びにプログラムに関する。
近年では、車両制御用ECU(Electric Control Unit)の開発において、ECUに実装すべき制御プログラムの複雑化に伴い、開発効率の向上が求められている。そこで、シミュレータアプリケーション上で、ブロック図や状態遷移図などの制御モデルを作成して制御仕様の検証(シミュレーション)を行い、検証された制御モデルを基にECUに実装すべき制御プログラムを自動生成して効率化を図るモデルベース開発が進められている。
新規にECU開発を行う場合には、シミュレータアプリケーション上で制御仕様に応じた制御モデルの作成を一から行い、モデルベース開発のプロセスを適用することが可能であるが、実際のECU開発では、既存の設計資産(例えば、既存のECUに実装された制御プログラムのソースコードであるC言語プログラム)を基に、機能の変更や追加を繰り返す差分開発の形態であることが多い。このような場合では、下記特許文献1に説明されているようなSILS(Software In the Loop Simulation)により、ECUに実装された既存の制御プログラムをシミュレータアプリケーションに組み込むことで、新規開発の制御モデルや制御対象モデルと結合してシミュレーションを実施するケースや、リバースモデリングにより置き換えたモデルと既存プログラムの演算値との一致性を確認するケース等がある。
上記のようなECUに実装された制御プログラムをソフトウェアシミュレータで動作させるには、既存の設計資産であるC言語プログラムと、ユーザが作成したインターフェイスプログラム(C言語プログラムを構成する関数とシミュレータアプリケーション間での値の受け渡し機能をコンピュータに実現させるプログラム)とをコンパイルすることで、シミュレータアプリケーション上で実行可能な関数ライブラリ(例えばDLL)を生成し、シミュレータアプリケーションと結合する方法などが採られている。
上述したように、既存の設計資産であるC言語プログラムを利用してソフトウェアシミュレータを構築する場合、インターフェイスプログラムを作成する必要があるが、従来では、ユーザが自らC言語プログラムの内容を解析し、その解析結果とシミュレータアプリケーションのインターフェイス仕様を基に、手作業でインターフェイスプログラムを作成していた。そのため、インターフェイスプログラムの作成に時間と手間がかかり、シミュレーション環境を容易に構築することができず、開発効率向上の観点から改善の余地があった。
本発明は、上述した事情に鑑みてなされたものであり、組み込み制御プログラムを利用したシミュレーション環境の構築を容易にして開発効率を向上させる開発支援装置及び方法並びにプログラムを提供することを目的とする。
上記目的を達成するために、本発明に係る開発支援装置は、ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析部と、前記ソースコード解析部から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成部と、前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成部とを備えることを特徴とする。
また、本発明に係る開発支援装置において、前記変数分類ルールは、関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、前記インターフェイス種別との対応関係を表すデータであることを特徴とする。
また、本発明に係る開発支援装置において、前記インターフェイス種別は、前記グローバル変数が、関数の入力変数と、関数の出力変数と、関数内部の演算値をモニタするためのモニタ変数と、入力変数及び出力変数以外で他の関数と共有される共有変数と、関数による演算実行中に固定値が設定されるパラメータ変数とに分類されるように設定されていることを特徴とする。
また、本発明に係る開発支援装置において、前記ソースコード解析部は、前記ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式に加えて、前記グローバル変数の型及びサイズを解析し、前記関数インターフェース情報作成部は、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別、型及びサイズとの対応関係を表す関数インターフェイス情報を作成することを特徴とする。
また、本発明に係る開発支援装置において、前記関数インターフェイス情報作成部によって作成された関数インターフェイス情報に、各グローバル変数に対応するスケーリング情報を付加するスケーリング情報付加部を備え、前記プログラム作成部は、前記スケーリング情報付加部によって前記スケーリング情報が付加された関数インターフェイス情報に基づいて前記インターフェイスプログラムを作成することを特徴とする。
一方、本発明に係る開発支援方法は、ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析工程と、前記ソースコード解析工程から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成工程と、前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成工程とを有することを特徴とする。
さらに、本発明に係る開発支援プログラムは、ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析機能と、前記ソースコード解析機能によって得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成機能と、前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成機能とをコンピュータに実現させるプログラムであることを特徴とする。
本発明によれば、既存の設計資産であるソースコードを利用したソフトウェアシミュレータに必要なインターフェイスプログラム(ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するプログラム)を自動作成することができるため、組み込み制御プログラムを利用したシミュレーション環境の構築が容易となり、その結果、開発効率の向上が可能となる。
以下、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本実施形態における開発支援装置1の機能ブロック図である。この図1に示すように、本実施形態における開発支援装置1は、例えばパーソナルコンピュータであり、入力装置10、表示装置20、記憶装置30及び演算処理装置40を備えている。
図1は、本実施形態における開発支援装置1の機能ブロック図である。この図1に示すように、本実施形態における開発支援装置1は、例えばパーソナルコンピュータであり、入力装置10、表示装置20、記憶装置30及び演算処理装置40を備えている。
本実施形態における開発支援装置1は、車両制御用ECUに実装すべき制御プログラムのモデルベース開発を支援する装置であって、既存の設計資産(制御プログラムのソースコード)を利用して差分開発を行う場合に必要なインターフェイスプログラム(ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するプログラム)を自動作成するものである。
入力装置10は、例えばキーボードやマウス等のユーザインターフェイスから構成されており、ユーザによる操作入力に応じた信号(以下、操作入力信号と称す)を演算処理装置40に出力するものである。表示装置20は、例えば液晶ディスプレイ、或いは有機ELディスプレイ等であり、演算処理装置40から入力される画像信号に応じた画像を表示するものである。
記憶装置30は、例えばHDD(Hard Disk Drive)、或いはフラッシュメモリ等の書き換え可能な不揮発性の記憶媒体であり、上述したインターフェイスプログラム(以下、IFプログラムと略す)の自動作成機能をコンピュータである開発支援装置1(具体的にはその中核をなす演算処理装置40)に実現させる開発支援プログラム31を記憶している。また、記憶装置30は、既存の設計資産である制御プログラムのソースコード(本実施形態ではC言語プログラム)32を記憶している。
また、記憶装置30は、IFプログラムの自動作成に必要な情報である変数分類ルール33及びデータディクショナリ34を記憶している。詳細は後述するが、変数分類ルール33は、C言語プログラム32の関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、インターフェイス種別との対応関係を表すテーブルデータである(図5(a)参照)。データディクショナリ34には、C言語プログラム32を構成する各関数で使用されているグローバル変数のスケーリング情報や変数型等が含まれている。
さらに、記憶装置30は、後述の演算処理装置40(詳細にはシミュレータ用コンパイラ46)で生成されたシミュレータ用関数ライブラリ(DLL)35を記憶する役割も担っている。なお、図1では図示を省略しているが、この記憶装置30は、OS(Operating System)プログラムや後述のシミュレータ用コンパイラ46の機能を演算処理装置40に実現させるコンパイラプログラム、及びシミュレータアプリケーション47の機能を演算処理装置40に実現させるシミュレータアプリケーションプログラムを記憶している。
演算処理装置40は、例えばCPU(Central Processing Unit)であり、入力装置10から入力される操作入力信号に応じて、記憶装置30に記憶されている開発支援プログラム31を実行することにより、IFプログラムの自動作成を行うものである。この演算処理装置40は、開発支援プログラム31の実行によって実現される機能部として、C言語プログラム解析部41、関数インターフェイス表作成部(以下、関数IF表作成部と称す)42、スケーリング情報付加部43及びIFプログラム作成部44を有する。
C言語プログラム解析部41(ソースコード解析部)は、記憶装置30に記憶されているC言語プログラム32の関数構造(関数コールツリー)と各関数で使用されているグローバル変数のアクセス方式、型及びサイズを解析する機能を有する。関数IF表作成部42は、C言語プログラム解析部41から得られるC言語プログラム32の解析結果と、記憶装置30に記憶されている変数分類ルール33とに基づいて、各グローバル変数のインターフェイス種別(以下、IF種別と称す)を決定し、各関数と、各関数で使用されているグローバル変数と、そのIF種別、型及びサイズとの対応関係を表す関数IF表(関数インターフェイス情報)を作成する機能を有する。
スケーリング情報付加部43は、記憶装置30のデータディクショナリ34に含まれている各グローバル変数に対応するスケーリング情報を、関数IF表作成部42によって作成された関数IF表に付加する機能を有する。IFプログラム作成部44は、スケーリング情報付加部43によってスケーリング情報が付加された関数IF表と、記憶装置30のデータディクショナリ34に含まれているシミュレータアプリケーションのソフトウェア仕様情報とに基づいて、IFプログラム45を作成する機能を有する。
また、演算処理装置40は、記憶装置30に記憶されているコンパイラプログラムの実行によって実現される機能部として、シミュレータ用コンパイラ46を有している。このシミュレータ用コンパイラ46は、IFプログラム作成部44によって作成されたIFプログラム45と、その作成に使用されたC言語プログラム32とをコンパイルすることで、シミュレータアプリケーション上で実行可能なシミュレータ用DLL35を生成し、当該生成したシミュレータ用DLL35を記憶装置30に記憶させる機能を有する。
さらに、演算処理装置40は、記憶装置30に記憶されているシミュレータアプリケーションプログラムの実行によって実現される機能部として、シミュレータアプリケーション47を有している。シミュレータアプリケーション47は、入力装置10から入力される操作入力信号に応じて、シミュレータ用DLL35に基づく制御モデルの作成及び制御モデルの検証(シミュレーション)を行う機能を有する。このようなシミュレータアプリケーション47としては、例えばMathworks社がモデルシミュレータとして提供しているMATLAB/Simulink(登録商標)などを使用することができる。
次に、上記のように構成された開発支援装置1によるIFプログラム45の自動作成処理について詳細に説明する。図2は、IFプログラム45の自動作成処理の手順を表すフローチャートである。なお、開発支援装置1の演算処理装置40は、入力装置10を介してユーザからIFプログラム45の作成指示を受けた場合に、記憶装置30に記憶されている開発支援プログラム31を実行することにより、図2に示す手順でIFプログラム45を自動作成する。
<ステップS1:ソースコード解析工程>
まず、図2のステップS1において、演算処理装置40のC言語プログラム解析部41は、記憶装置30からユーザに指定されたC言語プログラム32を読み出し、当該読み出したC言語プログラム32の関数構造(関数コールツリー)と各関数で使用されているグローバル変数のアクセス方式、型及びサイズを解析する。
まず、図2のステップS1において、演算処理装置40のC言語プログラム解析部41は、記憶装置30からユーザに指定されたC言語プログラム32を読み出し、当該読み出したC言語プログラム32の関数構造(関数コールツリー)と各関数で使用されているグローバル変数のアクセス方式、型及びサイズを解析する。
図3(a)に、C言語プログラム32の一例を示す。また、図3(b)は、C言語プログラム32の視覚的な理解を容易とするために、図3(a)に示すC言語プログラム32を関数ブロックで表した図である。これら図3(a)及び(b)に示すように、C言語プログラム32は、最上位の関数「FuncA」と、この関数「FuncA」に呼び出される下位の関数「FuncB」及び「FuncC」と、関数「FuncC」に呼び出される最下位の関数「FuncC1」及び「FuncC2」から構成されていると仮定する。
C言語プログラム解析部41は、図3(a)に示すC言語プログラム32の関数構造を解析することで、図4(a)に示すような関数コールツリーを作成すると共に、各関数で使用されているグローバル変数を抽出し、当該抽出した各グローバル変数のアクセス方式、型及びサイズを解析することで、図4(b)に示すような変数リードライト表を作成する。図4(b)に示すように、各グローバル変数のアクセス方式は、「リード」、「ライト」、「定数」のいずれかの属性に分類される。なお、あるグローバル変数が、ある関数内で「リード」と「ライト」の両方の属性を有している場合には、「ライト」の属性に優先的に分類するなどのルールを予め決めておけば良い。
<ステップS2:関数インターフェイス情報作成工程>
続いて、図2のステップS2において、演算処理装置40の関数IF表作成部42は、記憶装置30から変数分類ルール33を読み出し、当該読み出した変数分類ルール33と、C言語プログラム解析部41から得られるC言語プログラム32の解析結果(つまり、関数コールツリー及び変数リードライト表)とを基に、各グローバル変数のIF種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのIF種別、型及びサイズとの対応関係を表す関数IF表を作成する。
続いて、図2のステップS2において、演算処理装置40の関数IF表作成部42は、記憶装置30から変数分類ルール33を読み出し、当該読み出した変数分類ルール33と、C言語プログラム解析部41から得られるC言語プログラム32の解析結果(つまり、関数コールツリー及び変数リードライト表)とを基に、各グローバル変数のIF種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのIF種別、型及びサイズとの対応関係を表す関数IF表を作成する。
図5(a)に、変数分類ルール33の一例を示す。この図5(a)に示すように、変数分類ルール33は、C言語プログラム32の関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、グローバル変数のIF種別との対応関係を表すテーブルデータである。また、IF種別は、図5(b)に示すように、グローバル変数が、関数の入力変数と、関数の出力変数と、関数内部の演算値をモニタするためのモニタ変数と、入力変数及び出力変数以外で他の関数と共有される共有変数と、関数による演算実行中に固定値が設定されるパラメータ変数とに分類されるように設定されている。
関数IF表作成部42は、図5(a)に示すような変数分類ルール33に従って、関数コールツリー及び変数リードライト表から関数内部(関数コールツリー上のサブ関数を含む)と関数外部におけるグローバル変数のアクセス方式の組み合わせを解析し、各グローバル変数のIF種別を「入力変数」、「出力変数」、「モニタ変数」、「共有変数」及び「パラメータ変数」の中から決定し、図6に示すような関数IF表を作成する。
<ステップS3:スケーリング情報付加工程>
続いて、図2のステップS3において、演算処理装置40のスケーリング情報付加部43は、記憶装置30のデータディクショナリ34から各グローバル変数に対応するスケーリング情報を読み出し、当該読み出したスケーリング情報を、関数IF表作成部42によって作成された関数IF表に付加する。
続いて、図2のステップS3において、演算処理装置40のスケーリング情報付加部43は、記憶装置30のデータディクショナリ34から各グローバル変数に対応するスケーリング情報を読み出し、当該読み出したスケーリング情報を、関数IF表作成部42によって作成された関数IF表に付加する。
ここで、スケーリング情報とは、C言語プログラム32を構成する関数とシミュレータアプリケーション47間での値の受け渡しを行う際に、C言語プログラム32の関数がシミュレータアプリケーション47から物理値を渡された場合、この物理値を関数内で演算可能な論理値に変換するための情報である。このスケーリング情報を用いることにより、例えば、シミュレータアプリケーション47から物理値として加速度を表す「10G」が渡された場合、この加速度「10G」を関数内で演算可能な論理値に変換が可能となる。逆に、このスケーリング情報を用いると、論理値で出力される関数の演算結果を物理値に変換してシミュレータアプリケーション47に渡すことも可能となる。
つまり、スケーリング情報を関数IF表に付加することで、ユーザはシミュレータアプリケーション47上で物理値によるシミュレーションを行うことが可能となり、シミュレータアプリケーション47の使い勝手の向上、ひいては開発効率の向上につながる。なお、図7は、関数IF表に付加されたスケーリング情報の一例である。
<ステップS4:インターフェイスプログラム作成工程>
最後に、図2のステップS4において、演算処理装置40のIFプログラム作成部44は、記憶装置30のデータディクショナリ34からシミュレータアプリケーション47のソフトウェア仕様情報を読み出し、当該読み出したソフトウェア仕様情報と、スケーリング情報付加部43によってスケーリング情報が付加された関数IF表とに基づいて、C言語プログラム32を構成する関数とシミュレータアプリケーション47間での値の受け渡しを実現するIFプログラム45を作成する。
最後に、図2のステップS4において、演算処理装置40のIFプログラム作成部44は、記憶装置30のデータディクショナリ34からシミュレータアプリケーション47のソフトウェア仕様情報を読み出し、当該読み出したソフトウェア仕様情報と、スケーリング情報付加部43によってスケーリング情報が付加された関数IF表とに基づいて、C言語プログラム32を構成する関数とシミュレータアプリケーション47間での値の受け渡しを実現するIFプログラム45を作成する。
作成されたIFプログラム45は、シミュレータ用コンパイラ46によってC言語プログラム32と共にコンパイルされ、シミュレータアプリケーション47上で実行可能なシミュレータ用DLL35が生成される。つまり、シミュレータ用DLL35には、C言語プログラム32を構成する関数の関数ライブラリと、IFプログラム45を構成する関数の関数ライブラリとが含まれることになる。以降、シミュレータアプリケーション47は、シミュレータ用DLL35を用いることで、既存の設計資産であるC言語プログラム32の関数を利用したシミュレーションを行うことが可能となる。
ここで、シミュレータアプリケーション47は、シミュレータ用DLL35として関数ライブラリ化されたIFプログラム45に基づいて、図8(a)に示す初期化処理と図8(b)に示すステップ実行処理とを実行することが可能となる。初期化処理とは、シミュレーション開始時に1回実行される処理であり、図8(a)に示すように、変数クリア処理(ステップS11)、初期化関数コール処理(ステップS12)、及びパラメータ設定処理(ステップS13)を含んでいる。
変数クリア処理とは、制御プログラムで使用するRAM内の記憶領域の値を「0」に設定する処理である。また、初期化関数コール処理とは、シミュレータ用DLL35の中から初期化処理用の関数をコールする(呼び出す)処理である。また、パラメータ設定処理とは、シミュレータ環境のパラメータ値(言い換えれば、シミュレータアプリケーション47上で設定されたパラメータ値)を、選択されたC言語プログラム32の関数のパラメータ変数にセットする処理である。なお、シミュレータ環境のパラメータ値が物理値であった場合には、スケーリング情報によって関数内で演算可能な論理値に変換される。
一方、ステップ実行処理とは、シミュレーション中のイベント発生時、或いは周期的に実行される処理であり、図8(b)に示すように、入力変数セット処理(ステップS21)、実行関数コール処理(ステップS22)、及び出力変数・モニタ変数設定処理(ステップS23)を含んでいる。
入力変数セット処理とは、シミュレータアプリケーション47上で作成された関数ブロック(制御モデルの構成要素となるブロック)の入力ポートの値を、シミュレータ用DLL35から選択された関数の入力変数にセットする処理である。なお、関数ブロックの入力ポートの値が物理値であった場合には、スケーリング情報によって関数内で演算可能な論理値に変換される。
また、実行関数コール処理とは、シミュレータ用DLL35から選択された関数をコールし、その関数の入力変数にセットされた値を用いて、その関数に応じた演算を実行する処理である。また、出力変数・モニタ変数設定処理とは、演算実行後に関数の出力変数及びモニタ変数にセットされる演算結果の値を、シミュレータアプリケーション47上の関数ブロックの出力ポートにセットする処理である。この場合、選択された関数の出力変数及びモニタ変数の値は論理値であるため、スケーリング情報によって物理値に変換された後、関数ブロックの出力ポートにセットされる。
このように、IFプログラム45を用いることにより、ソースコードであるC言語プログラム32を構成する関数とシミュレータアプリケーション47間での値の受け渡しが可能となる。
このように、IFプログラム45を用いることにより、ソースコードであるC言語プログラム32を構成する関数とシミュレータアプリケーション47間での値の受け渡しが可能となる。
以上説明したように、本実施形態によれば、既存の設計資産であるソースコード(C言語プログラム32)を利用したシミュレーションに必要なIFプログラム45を自動作成することができるため、組み込み制御プログラムを利用したシミュレーション環境の構築が容易となり、その結果、開発効率の向上が可能となる。
なお、本発明は上記実施形態に限定されず、以下のような変形例が挙げられる。
(1)上記実施形態では、車両用ECUに実装すべき制御プログラムのモデルベース開発を支援する開発支援装置1を例示して説明したが、本発明は車両用の制御プログラムに限らず、様々な制御プログラムのモデルベース開発に適用することができる。また、IFプログラム45の作成に用いるソースコードの記述言語もC言語に限定されない。
(1)上記実施形態では、車両用ECUに実装すべき制御プログラムのモデルベース開発を支援する開発支援装置1を例示して説明したが、本発明は車両用の制御プログラムに限らず、様々な制御プログラムのモデルベース開発に適用することができる。また、IFプログラム45の作成に用いるソースコードの記述言語もC言語に限定されない。
(2)上記実施形態では、スケーリング情報が付加された関数IF表を用いてIFプログラム45を作成する場合を例示したが、必ずしもスケーリング情報を付加する必要はない。すなわち、データディクショナリ34にスケーリング情報が含まれていない場合には、スケーリング情報付加部43を削除し、スケーリング情報が付加されていない関数IF表を用いてIFプログラム45の作成を行うようにしても良い。
(3)上記実施形態では、グローバル変数のIF種別を、入力変数、出力変数、モニタ変数、共有変数及びパラメータ変数の5つの種別に分類する場合を例示したが、これに限らず、シミュレータアプリケーション47のソフトウェア仕様に応じて、適宜、IF種別の変更、追加、削除を行っても良い。
(4)上記実施形態では、開発支援装置1にIFプログラム45の自動作成機能だけでなく、シミュレータ用コンパイラ46によるコンパイル機能及びシミュレータアプリケーション47によるシミュレーション機能を実装した場合を例示したが、開発支援装置1にはIFプログラム45の自動作成機能だけを実装し、コンパイル機能及びシミュレーション機能については他のパーソナルコンピュータに実装されているものを使用するようにしても良い。つまり、IFプログラム45の自動作成機能と、コンパイル機能及びシミュレーション機能とを同一のパーソナルコンピュータに実装する必要はない。
1…開発支援装置、10…入力装置、20…表示装置、30…記憶装置、31…開発支援プログラム、32…C言語プログラム(ソースコード)、33…変数分類ルール、34…データディクショナリ(スケーリング情報)、35…シミュレータ用DLL、40…演算処理装置、41…C言語プログラム解析部(ソースコード解析部)、42…関数IF表作成部(関数インターフェイス情報作成部)、43…スケーリング情報付加部、44…IFプログラム作成部(インターフェイスプログラム作成部)、45…IFプログラム(インターフェイスプログラム)、46…シミュレータ用コンパイラ、47…シミュレータアプリケーション
Claims (7)
- ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析部と、
前記ソースコード解析部から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成部と、
前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成部と、
を備えることを特徴とする開発支援装置。 - 前記変数分類ルールは、関数内部におけるグローバル変数のアクセス方式と関数外部におけるグローバル変数のアクセス方式との組み合わせと、前記インターフェイス種別との対応関係を表すデータであることを特徴とする請求項1記載の開発支援装置。
- 前記インターフェイス種別は、前記グローバル変数が、関数の入力変数と、関数の出力変数と、関数内部の演算値をモニタするためのモニタ変数と、入力変数及び出力変数以外で他の関数と共有される共有変数と、関数による演算実行中に固定値が設定されるパラメータ変数とに分類されるように設定されていることを特徴とする請求項1または2に記載の開発支援装置。
- 前記ソースコード解析部は、前記ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式に加えて、前記グローバル変数の型及びサイズを解析し、
前記関数インターフェース情報作成部は、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別、型及びサイズとの対応関係を表す関数インターフェイス情報を作成することを特徴とする請求項1〜3のいずれか一項に記載の開発支援装置。 - 前記関数インターフェイス情報作成部によって作成された関数インターフェイス情報に、各グローバル変数に対応するスケーリング情報を付加するスケーリング情報付加部を備え、
前記プログラム作成部は、前記スケーリング情報付加部によって前記スケーリング情報が付加された関数インターフェイス情報に基づいて前記インターフェイスプログラムを作成することを特徴とする請求項1〜4のいずれか一項に記載の開発支援装置。 - ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析工程と、
前記ソースコード解析工程から得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成工程と、
前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成工程と、
を有することを特徴とする開発支援方法。 - ソースコードの関数構造及び各関数で使用されているグローバル変数のアクセス方式を解析するソースコード解析機能と、
前記ソースコード解析機能によって得られる解析結果と予め規定されている変数分類ルールとに基づいて、前記グローバル変数のインターフェイス種別を決定し、各関数と、各関数で使用されているグローバル変数と、そのインターフェイス種別との対応関係を表す関数インターフェイス情報を作成する関数インターフェイス情報作成機能と、
前記関数インターフェイス情報に基づいて、前記ソースコードを構成する関数とシミュレータアプリケーション間での値の受け渡しを実現するインターフェイスプログラムを作成するプログラム作成機能と、
をコンピュータに実現させることを特徴とする開発支援プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010028929A JP2011165051A (ja) | 2010-02-12 | 2010-02-12 | 開発支援装置及び方法並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010028929A JP2011165051A (ja) | 2010-02-12 | 2010-02-12 | 開発支援装置及び方法並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011165051A true JP2011165051A (ja) | 2011-08-25 |
Family
ID=44595637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010028929A Pending JP2011165051A (ja) | 2010-02-12 | 2010-02-12 | 開発支援装置及び方法並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011165051A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015022484A (ja) * | 2013-07-18 | 2015-02-02 | スパンション エルエルシー | プログラムの検査プログラム、検査装置、及び、検査方法 |
JP6599053B1 (ja) * | 2018-12-27 | 2019-10-30 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
-
2010
- 2010-02-12 JP JP2010028929A patent/JP2011165051A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015022484A (ja) * | 2013-07-18 | 2015-02-02 | スパンション エルエルシー | プログラムの検査プログラム、検査装置、及び、検査方法 |
JP6599053B1 (ja) * | 2018-12-27 | 2019-10-30 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
WO2020136793A1 (ja) * | 2018-12-27 | 2020-07-02 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102186865B1 (ko) | 컨트롤 및 파트 부합 계층구조 | |
CN102696012B (zh) | 从代码使用中创建所推断的符号 | |
US11288589B1 (en) | Quantum circuit modeling | |
CN103718155A (zh) | 运行时系统 | |
JP2017146966A (ja) | パッケージファイルに対する機能拡張方法およびシステム | |
García Frey et al. | UsiComp: an extensible model-driven composer | |
CN111111201B (zh) | 一种基于游戏的技能创建方法、装置、服务器及介质 | |
Bernaschina et al. | Online model editing, simulation and code generation for web and mobile applications | |
US20110126171A1 (en) | Dynamic native editor code view facade | |
US9170783B1 (en) | Class creation assistant for textual programming languages | |
JP2017522639A5 (ja) | ||
KR20160098794A (ko) | 디바이스 프로그램 구조 모델링 기반 골격코드 생성 장치 및 방법 | |
JP2011165051A (ja) | 開発支援装置及び方法並びにプログラム | |
TW201835759A (zh) | 行動原生應用程式開發平台 | |
JP4870956B2 (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
JP2009075965A (ja) | ソフトウェア開発方法及びソフトウェア開発装置 | |
Ahmed-Nacer et al. | OCCI-compliant cloud configuration simulation | |
JP5056493B2 (ja) | 仮想ソフトウェア生成装置 | |
JP2007188179A (ja) | 計算機システムの性能評価装置、性能評価方法、及び性能評価プログラム | |
CN115803710A (zh) | 用于在工程系统中生成工程设计的方法和系统 | |
CN114518875A (zh) | 一种图形化编程系统及其编程方法 | |
Turner et al. | Simulating Interaction Sequences | |
JP2008003841A (ja) | ビルド処理方法、ビルド処理装置、及びプログラム | |
JP2020144509A (ja) | 自動コード生成方法、及び自動コード生成プログラム | |
Son et al. | Design and implementation of the smart virtual machine on iOS platform for the mobile game portability |