JP2005301568A - 表示情報記憶制御装置および表示情報記憶制御プログラム - Google Patents

表示情報記憶制御装置および表示情報記憶制御プログラム Download PDF

Info

Publication number
JP2005301568A
JP2005301568A JP2004115254A JP2004115254A JP2005301568A JP 2005301568 A JP2005301568 A JP 2005301568A JP 2004115254 A JP2004115254 A JP 2004115254A JP 2004115254 A JP2004115254 A JP 2004115254A JP 2005301568 A JP2005301568 A JP 2005301568A
Authority
JP
Japan
Prior art keywords
model
source code
block
display
information
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
JP2004115254A
Other languages
English (en)
Inventor
Kenji Shibata
健志 柴田
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.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Priority to JP2004115254A priority Critical patent/JP2005301568A/ja
Publication of JP2005301568A publication Critical patent/JP2005301568A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 モデルからソースコードを生成するモデルベース開発環境において、当該ソースコードの品質評価の結果抽出された構成部分が、当該モデルのどの構成部分に対応するかを開発者に表示するための手段を提供する。
【解決手段】 モデルの構成部分と、当該モデルに基づいて生成されたソースコードの構成部分との対応関係を取得し、この情報に基づいてソースコードの品質評価の結果抽出された構成部分と、この部分に対応する当該モデルの構成部分とを関連づけ、他の構成部分と視覚的に区別出来るよう表示する。また、当該モデルの品質評価の結果抽出された構成部分と、この部分に対応するソースコードとを関連づけて表示する。
【選択図】 図2

Description

本発明は、モデルからソースコードを生成するモデルベース開発環境に関する。
従来、例えば車両のエンジンECUの作動のためのプログラムにおいては、開発者が直接そのプログラムのソースコードを記述せず、目的とするプログラムの機能を、より作成が簡易で視認性の良い「モデル」という形態で記述する場合がある(例えば特許文献1参照)。開発者は、このモデルに対応したプログラム開発環境がインストールされたワークステーション、パーソナルコンピュータ等を用い、モデルからソースコードを生成する。モデルからソースコードを生成する機能を担うプログラムをコード生成ツールと呼ぶ。コード生成ツールは、モデル開発環境に組み込まれている場合が多い。モデルからソースコードを生成するようなプログラム開発は、モデルベース開発と呼ばれる。
モデルベース開発に対応したプログラム開発環境としては、Matlab(登録商標)がある。Matlab(登録商標)においては、開発者はMatlab(登録商標)の一機能であるSimulink(登録商標)を用いて、目的とするプログラムの機能を、ブロックと呼ばれる機能単位の組み合わせとして記述する。この組み合わされたブロックの集合体がモデルである。Simulink(登録商標)のブロックとしては、例えばサイン関数を生成するブロック、ファイルからデータを読み出すブロック、入力されたデータに対する特定の四則演算を行うブロック、ブロックの組み合わせから成る上位のブロックとしてのサブシステム等がある。
このようなモデルベース開発では、開発者がモデルを作成し、そのモデルをシミュレーションすることで開発者の要求する仕様どおりに動作するかを検証する。また、開発者は要求する仕様どおりになるまでモデルを適宜修正する。その後、モデルからコード生成ツールを用いてソースコードを自動生成する。このようにモデルベース開発では、モデルを作成する段階で、動作を予め検証することができるため、ソースコードを生成した後におかしな動作をするといった問題が発覚することが少ない。これによりプログラム開発工数や時間が短縮できるという効果がある(従来の開発方法では、動作を検証できていない仕様書からソースコードを作成するため、ソースコードを作成して初めて仕様書の動作がおかしいことが発覚する場合があった。)。
また、モデルベース開発においては、開発過程において、モデルやソースコードの品質評価を行うことが多い。品質評価とは、当該モデル、ソースコードが、プログラムの製品としてどのような品質を有しているかを、種々の基準から評価することをいう。
品質評価の基準としては、例えばカバレッジ、処理負荷、プログラムサイズ、使用する変数の数等がある。
カバレッジとは、モデルやソースコードの構成部分として記述されている条件分岐における複数の分岐先のうち、実際には実行されないものがどれくらいあるかを示す指標である。モデルやソースコードのカバレッジを特定するためには、上記したプログラム開発環境において、テスト入力パターンを用いて、モデルやソースの実行シミュレーションを行い、そのシミュレーションにおいて実行された分岐先と実行されなかった分岐先とを記憶することで行う。このようなカバレッジの特定のための処理を、カバレッジテストという。
また、処理負荷の特定についても、上記のようなシミュレーションを行い、その結果CPUに対してどの程度負荷があったかを記憶することで実現される。
また、開発環境においては、これらの品質評価の結果として、例えば実際に実行されてない分岐先、処理負荷の高い部分等が抽出され、抽出された部分が開発者に対して表示されるようになっている。
従来は、このような品質評価の結果としてのモデルやソースコードの構成部分の抽出はモデル、ソースコードのそれぞれに対して個別に行われていた。
特開平2000−20291号公報
しかし、ソースコードの品質評価の結果として抽出された構成部分が、モデルのどの構成部分に対応するか、あるいは、モデルの品質評価の結果として抽出された構成部分が、ソースコードのどの構成部分に対応するかについて、開発者が知りたい場合がある。
例えば、ソースコードの品質評価の結果、実行されていない分岐先、処理負荷が高い部分、ソースコードの量が膨大になっている部分等が抽出された場合に、当該ソースコードの抽出個所がモデルにおいてどの構成部分に相当するかを開発者が知りたい場合がある。モデルベース開発では、開発者が直接変更を加えるのはほとんどの場合ソースコードではなくモデルだからである。その理由の一つとして、以前に開発した車両Aのモデルを流用して、新機能を追加した別の車両Bを開発するといった場合が考えられる。つまり、車両Aの開発時に、モデルでなくソースコードを直接変更してしまうと、別の車両Bの開発時に再度ソースコードを変更しなければいけないためである(車両開発では複数車種で類似の制御が多数存在し、特にエンジン制御開発では流用して新機能追加するといったことが頻繁に行われる)。
従来は、このようにソースコードとモデルの対応部分の特定は、熟練の開発者が経験に基づいて手作業で行わねばならなかった。
本発明は上記点に鑑み、モデルからソースコードを生成するモデルベース開発環境において、当該ソースコードの品質評価の結果抽出された構成部分が、当該モデルのどの構成部分に対応するかを開発者に表示するための手段を提供することを目的とする。
または、モデルからソースコードを生成するモデルベース開発環境において、当該モデルの品質評価の結果抽出された構成部分が、当該ソースコードのどの構成部分に対応するかを開発者に表示するための手段を提供することを目的とする。
上記目的を達成するための本発明に係る表示情報記憶制御装置の特徴は、モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報を取得し、その取得した対応情報に基づいて、当該ソースコードの品質評価の結果抽出された構成部分と、この構成部分に対応する当該モデルの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させることである。
このようにすることで、モデルからソースコードを生成するモデルベース開発環境において、当該ソースコードの品質評価の結果抽出された構成部分が、当該モデルのどの構成部分に対応するかを開発者に表示するための手段が提供される。
また、表示情報記憶制御装置は、取得した対応表と、当該ソースコードの品質評価の結果抽出された構成部分とを比較することに基づいて、この構成部分に対応する当該モデルの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させるようになっていてもよい。
また、本発明に係る表示情報記憶制御装置の第2の特徴は、モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報を取得し、その取得した対応情報に基づいて、当該モデルの品質評価の結果抽出された構成部分と、この構成部分に対応する当該ソースコードの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させることである。
このようにすることで、モデルからソースコードを生成するモデルベース開発環境において、当該モデルの品質評価の結果抽出された構成部分が、当該ソースコードのどの構成部分に対応するかを開発者に表示するための手段が提供される。
また、上記した本発明の特徴は、コンピュータを上記した各手段として機能させるプログラムとしても実現できる。
以下、本発明の一実施形態について説明する。図1に、本実施形態に係るパーソナルコンピュータ1の構成を示す。このパーソナルコンピュータ1は、図1において示したモデルベース開発の工程の各段階において用いられるようになっている。このパーソナルコンピュータ1は、ディスプレイ11、入力装置12、RAM13、ROM14、HDD(ハードディスクドライブ)15、CPU16等から構成される。
ディスプレイ11は、CPU16から入力された映像信号を、ユーザ(開発者)に対して映像として表示する。
入力装置12は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をCPU16に出力する。
RAM13は読み出し、書き込み可能な揮発性メモリであり、ROM14は読み出し専用の不揮発性メモリであり、HDD15は読み出し、書き込み可能な不揮発性メモリである。ROM14、HDD15には、CPU16が読み出して実行するプログラム等があらかじめ記憶されている。またHDD15には、後述するような見積もりモデルのテーブル、モデル情報テーブル等の情報が記憶されている。RAM13は、CPU16がROM14、HDD15に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域として用いられる。
CPU16は、パーソナルコンピュータ1に電源が投入されることによって起動すると、ROM14から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるオペレーティングシステム(以下OSと記す)その他のプログラムをHDD15から読み出して実行することにより、起動処理を行う。起動処理以後電源が遮断されるまで、CPU16は、入力装置12からの信号、OSによって予め定められたスケジュール等に基づいて、HDD15に記録されている各種プログラムを当該OS上のプロセスとして実行する。また、上記した起動処理およびプロセスにおいて、CPU16は必要に応じて入力装置12から信号の入力を受け付け、またディスプレイ11に映像信号を出力し、またRAM13、HDD15に対してデータの読み出し/書き込みの制御を行う。
なお以降は、プログラムを実行することによるCPU16の動作を、その実行されるプログラム自体の動作であるとして説明する。
パーソナルコンピュータ1のCPU16が実行するプログラムの構成を図2に示す。CPU16は、自動コード生成プログラム22、対応情報作成プログラム24、モデルシミュレーションプログラム26、ソースコードシミュレーションプログラム28、比較プログラム30、表示制御プログラム31等を実行する。これらプログラムは、ユーザが入力装置12に対して所定の操作をすることにより、または、他のプログラムから呼び出されることにより、その実行が始まる。
なお、モデル格納部21、ソースコード格納部23、対応情報格納部25、テスト入力パタン格納部27、シミュレーション結果格納部29およびレポート格納部32は、HDD15の記憶領域の一部である。
自動コード生成プログラム22は、モデル格納部21に格納されたモデルを読み出し、読み出したモデルをC等のプログラミング言語によるソースコードに変換し、変換された結果のソースコードをソースコード格納部23に保存する。
なお、モデルは、図示しないモデルエディタ等の上記OS上で実行されるプログラムをユーザが利用することによって作成され、さらにモデル格納部21に記憶されるようになっている。
モデルエディタとしては、例えばMatlab(登録商標)上で動作するSimulink(登録商標)と呼ばれるソフトウェアを用いることができる。また、自動コード生成プログラム22としては、同じくMatlab(登録商標)上で動作するReal Time Workshop(登録商標)と呼ばれるソフトウェアを用いることができる。モデルは、ブロック、およびあるブロックの出力を他のブロックの入力に繋ぐリンクから成る。
図3に、ソースコード格納部23が読み出すモデル40を例示する。このモデルは、車両のエンジン回転数、バッテリ電圧、気温等の、車両に関する物理量の入力を受け、この入力に基づいてエンジンのインジェクタが噴射する燃料の量を算出し、この産出量に基づいてインジェクタ弁を制御するための出力を行うことを表現するプログラムである。
モデル40は、ブロックとして、入力1ブロック41、入力2ブロック42、入力3ブロック43、入力4ブロック44、入力5ブロック45、入力6ブロック46、出力1ブロック47、出力2ブロック48、動作モード設定サブシステム40a、基本噴射量算出サブシステム40b、補正量算出サブシステム40c、噴射量算出サブシステム40dを有している。
入力1ブロック41、入力2ブロック42、入力3ブロック43、入力4ブロック44、入力5ブロック45、入力6ブロック46は、このモデルの外部からのデータの入力を、それぞれのブロックの紙面中右側にリンク(図40中では線分で表現されている)を介して繋がっているブロックに出力する機能を表すブロックである。
出力1ブロック47、出力2ブロック48は、それぞれのブロックの紙面中左側にリンクを介して繋がっているブロックからの出力を、このモデルの外部に出力する機能を表すブロックである
動作モード設定サブシステム40a、基本噴射量算出サブシステム40b、補正量算出サブシステム40c、噴射量算出サブシステム40d、インジェクタ弁制御サブシステム40eおよび噴射量記憶サブシステム40fは、それぞれ複数のブロックおよびリンクの組み合わせによって構成されるブロックである。このように、複数のブロックおよびリンクの組み合わせによって構成されるブロックはサブシステムとも呼ばれる。
動作モード設定サブシステム40aは、入力1ブロック41、入力2ブロック42、入力3ブロック43から、エンジン回転数、バッテリ電圧等の物理量の出力を受け、受けた物理量に基づいて車両の動作モードを特定し、特定した動作モードの状態を噴射量算出サブシステム40dに出力する機能を有する。車両の動作モードとしては、車両がエンジンをかけた直後の始動状態、および、始動状態が終了した後の通常状態の2つがある。
基本噴射量算出サブシステム40bは、エンジン回転数、バッテリ電圧、外気温、エンジン冷却水温、スロットル開度等の物理量の出力を受け、受けた物理量に基づいて燃料噴射量の基本値を特定し、特定した基本燃料噴射量を噴射量算出サブシステム40dに出力する機能を有する。
補正量算出サブシステム40cは、噴射量変化値(後述する噴射量記憶サブシステム40fの直前の出力に相当する)、エンジン回転数等の物理量の出力を受け、受けた物理量に基づいて、基本燃料噴射量に対する補正量を特定し、特定した補正量を噴射量算出サブシステム40dに出力する機能を有する。なお、補正量としては、基本燃料噴射量に乗算する係数、係数が乗算された後の噴射量に加算するオフセット値の種類がある。
噴射量算出サブシステム40dは、動作モード設定サブシステム40a、基本噴射量算出サブシステム40b、および補正量算出サブシステム40cからの出力を受け、受けた量に基づいて燃料噴射量を特定し、特定した燃料噴射量、および燃料噴射量の前回量から今回量への変化値をインジェクタ弁制御サブシステム40eおよび噴射量記憶サブシステム40fに出力する機能を有する。噴射量算出サブシステム40dの詳細な構成については後述する。
インジェクタ弁制御サブシステム40eは、噴射量算出サブシステム40dの出力を受け、受けた燃料噴射量に基づいてインジェクタ弁の制御のための制御用パラメータを特定し、特定した制御用パラメータを出力1ブロック47に出力する機能を有する。
噴射量記憶サブシステム40fは、噴射量算出サブシステム40dの出力を受け、受けた物理量を出力2ブロック48に出力する機能を有する。なお、出力2ブロック48が受けた量は、後に補正量算出サブシステム40cへ出力されることになる。
図4に、噴射量算出サブシステム40dの詳細な構成を示す。噴射量算出サブシステム40dは、ブロック51〜69、およびそれらの入出力を繋ぐリンクから成る。
staefi入力ブロック51は、動作モード設定サブシステム40aからの動作モードの出力を受けて条件分岐ブロック65に出力する機能を表す入力ブロックである。
tau_s入力ブロック52は、基本噴射量算出サブシステム40bからの基本噴射量の出力を受けて乗算ブロック55に出力する機能を表す入力ブロックである。
tau_start入力ブロック53は、補正量算出サブシステム40cから係数の出力を受けた乗算ブロック55に出力する機能を表す入力ブロックである。
tau_comp2入力ブロック54は、補正量算出サブシステム40cからオフセット値の出力を受けて加算ブロック56に出力する機能を表す入力ブロックである。なお、このオフセット値は、複数の値の組から成るベクトルデータである。
乗算ブロック55は、tau_s入力ブロック52から出力された量とtau_start入力ブロック53から出力された量との乗算結果を2項加算ブロック57に出力する機能を表すブロックである。
加算ブロック56は、tau_comp2入力ブロック54から出力されたベクトルデータの各要素の総和を2項加算ブロック57に出力する機能を表すブロックである。
2項加算ブロック57は、乗算ブロック55から出力された量と加算ブロック56から出力された量との和を比較ブロック59および条件分岐ブロック60に出力する機能を表すブロックである。
TAU_MAX2定数ブロック58は、定数TAU_MAX2の値を比較ブロック59および条件分岐ブロック60に出力する機能を表すブロックである。
比較ブロック59は、2項加算ブロック57から出力された量がTAU_MAX2定数ブロック58から出力された量より大きい場合に「真」を示す量を条件分岐ブロック60に出力し、それ以外の場合には「偽」を示す量を条件分岐ブロック60に出力する機能を表すブロックである。
条件分岐ブロック60は、比較ブロック59からの出力が「真」を示す量である場合、TAU_MAX2定数ブロック58からの出力を条件分岐ブロック65に出力し、比較ブロック59からの出力が「偽」を示す量である場合、2項加算ブロック57からの出力を条件分岐ブロック65に出力する機能を表すブロックである。
tau_startデータ読み出しブロック61は、モデル40の外部の機能によって記憶された値tau_startを比較ブロック63および条件分岐ブロック64に出力する機能を有するブロックである。
TAU_MAX1定数ブロック62は、定数TAU_MAX1の値を比較ブロック63および条件分岐ブロック64に出力する機能を表すブロックである。
比較ブロック63は、tau_startデータ読み出しブロック61から出力された量がTAU_MAX1定数ブロック62から出力された量より大きい場合に「真」を示す量を条件分岐ブロック64に出力し、それ以外の場合には「偽」を示す量を条件分岐ブロック64に出力する機能を表すブロックである。
条件分岐ブロック64は、比較ブロック63からの出力が「真」を示す量である場合、TAU_MAX1定数ブロック62からの出力を条件分岐ブロック65に出力し、比較ブロック63からの出力が「偽」を示す量である場合、tau_startデータ読み出しブロック61からの出力を条件分岐ブロック65に出力する機能を表すブロックである。
条件分岐ブロック65は、staefi入力ブロック51からの出力が「始動状態」を示す量である場合、条件分岐ブロック64からの出力を2項減算ブロック67およびtauout出力ブロック68に出力し、staefi入力ブロック51からの出力が「通常状態」を示す量である場合、条件分岐ブロック60からの出力を2項減算ブロック67およびtauout出力ブロック68に出力する機能を表すブロックである。
tau_prevデータ読み出しブロック66は、モデル40の外部の機能によって記憶された値tau_prevを2項減算ブロック67に出力する機能を表すブロックである。
2項減算ブロック67は、条件分岐ブロック65の出力量からtau_prevデータ読み出しブロック66の出力量を減算した量をtauout_c出力ブロック69に出力する機能を表すブロックである。
tauout出力ブロック68は、条件分岐ブロック65からの出力を値tauoutとしてインジェクタ弁制御サブシステム40eに出力する機能を表すブロックである。
tauout_c出力ブロック69は、2項減算ブロック67からの出力を値tauout_cとして噴射量記憶サブシステム40fに出力する機能を表すブロックである。
このような構成の噴射量算出サブシステム40dにより、乗算ブロック55においてtau_s入力ブロック52からの基本噴射量とtau_start入力ブロック53からの係数とが乗算され、さらに2項加算ブロック57でこの乗算結果とtau_comp2入力ブロック54からのオフセット値の総和とが加算されることで、補正後の噴射量が算出される。
そして、比較ブロック59および条件分岐ブロック60によって、この補正後の噴射量と上限値TAU_MAX2のうち小さい方の値、すなわちTAU_MAX2によって上限を抑えられた補正後の噴射量、が条件分岐ブロック65に出力される。
また、比較ブロック63および条件分岐ブロック64によって、値tau_startと上限値TAU_MAX1のうち小さい方の値が条件分岐ブロック65に出力される。
そして、条件分岐ブロック65により、staefi入力ブロック51からの値が「始動状態」なら、値tau_startと上限値TAU_MAX1のうち小さい方の値がtauout出力ブロック68に出力され、staefi入力ブロック51からの値が「通常状態」なら、TAU_MAX2によって上限を抑えられた補正後の噴射量が、噴射量としてtauout出力ブロック68に出力される。
また、2項減算ブロック67によって、この噴射量と前回の噴射量との差がtauout_c出力ブロック69に出力される。
なお、ここで出力される噴射量は、多気筒エンジンの各シリンダー毎の噴射量を示す配列値である。
自動コード生成プログラム22は、このようなモデル40の一部である噴射量算出サブシステム40dを元に、Cソースコードの一関数を生成する。この、噴射量算出サブシステム40dから生成されるCソースコードを図5〜図7に示す。なお、図5〜図7のソースコードの各行の左端には、説明の便宜のために行番号を付した。また、記号列/*で始まり記号列*/で終わるコメント文を、プログラムの説明のために便宜的に付した。
このソースコードにおいては、例えば、第105行から第151行までのtau_cal()関数が、噴射量算出サブシステム40dの機能を実現する。
また、第114行のif文から始まる第114行〜第142行のif〜elseブロックが、条件分岐ブロック65の機能を実現する。
また、第143行がtauout出力ブロック68の機能を実現し、第144行2項減算ブロック67およびtauout_c出力ブロック69の機能を実現する。
また、第138行のif文から始まるifブロックが、条件分岐ブロック64の機能を実現する。
このように、モデルと、そのモデルから生成されたCソースコードとの間では、モデルの構成部分(ブロック等)と、その機能を実現するCソースコードの構成部分との対応関係がある。この構成部分間の対応関係は、1対1の対応関係である場合がほとんどである。
自動コード生成プログラム22は、読み出したモデルからソースコードを生成する際、当該モデルのどの構成部分と当該ソースコードのどの構成部分とが対応するかの対応情報を出力するようになっている。
対応情報作成プログラム24は、自動コード生成プログラム22が出力するこの対応情報から、モデルの構成部分であるブロックと、そのモデルから生成されたソースコードの構成部分との対応関係の表、すなわち対応表を作成し、当該対応表を対応情報格納部25に記憶させる。なお、この対応表の作成は、自動コード生成プログラム22から出力された情報に加え、モデル格納部21に格納されている当該モデルの情報に基づいて行ってもよい。
図8に、この対応表の一例を示す。この対応表は、モデル40、特に噴射量算出サブシステム40dの構成部分についての対応表である。この表は、ブロックの種類(サブシステム、入力ブロック、出力ブロック、条件分岐ブロック等)毎に細分化されている。また、この表の各行が、1つの対応関係を表している。ただし、条件分岐ブロック(図8中ではifブロックと記す)は、表中の連続する複数行が1つの対応関係を表している。
各行において、左端の項目(ID)は、自動コード生成プログラム22によって決められた、モデルの各ブロックを特定するための識別記号である。また、中央の項目(サブシステム名、入力ブロック名等)は、モデルエディタでユーザがそのブロックを作成したときに、ユーザ自身がそのブロックに与えた名称である。
左端の項目(関数、グローバル変数、引数、戻り値等)は、当該ブロックがソースコード中のどの構成部分に対応しているかを示す情報である。
例えば、サブシステムB、すなわち基本噴射量算出サブシステム40bについては、ソースコード中の関数tau_taust()に対応していることが示されている。
また、噴射量算出サブシステム40dのin_1のブロック、すなわちstaefi入力ブロック51については、図5の第105行において引数として渡され、第114行で条件判定に用いられるローカル変数staefiに対応していることが示されている。
また、if_1のブロック、すなわち条件分岐ブロック65については、図5〜図7の第114行〜第142行に対応していることが示されている。
また、モデルエディタによって作成されたモデル、自動コード生成プログラム22によって生成されたソースコードに対して、それぞれモデルシミュレーションプログラム26、ソースコードシミュレーションプログラム28がシミュレーションを行う。
具体的には、モデルシミュレーションプログラム26は、モデル格納部21に格納されたモデルを読み出し、テスト入力パタン格納部27にあらかじめ格納されているテスト入力パタンを読み出して、これをモデルへの入力データ(モデル40においては入力ブロック41〜46から出力されるデータ)として、モデルによって表現された機能をパーソナルコンピュータ1上で仮想的に実行する。そして、この実行結果をシミュレーション結果格納部29に記憶させる。実行結果とは、モデルの出力データ(モデル40においては出力ブロック47、48への入力データ)、モデルのどの構成部分の機能がどの時刻からどの時刻まで実行されたかのデータ、モデルの構成部分が正常に実行されたかのデータ、その実行時におけるCPU16の処理負荷(具体的にはCPU占有率)等をいう。
また、ソースコードシミュレーションプログラム28は、ソースコード格納部23に格納されたソースコードを読み出し、テスト入力パタン格納部27にあらかじめ格納されているテスト入力パタンを読み出して、これをソースコードへの入力データ(例えば関数の引数)として、ソースコードによって表現された機能をパーソナルコンピュータ1上で仮想的に実行する。そして、この実行結果をシミュレーション結果格納部29に記憶させる。実行結果とは、ソースコードの出力データ(例えば関数の戻り値)、ソースコードのどの行の機能がどの時刻からどの時刻まで実行されたかのデータ、モデルの構成部分が正常に実行されたかのデータ、その実行時におけるCPU16の処理負荷(具体的にはCPU占有率)等をいう。
なお、モデルシミュレーションプログラム26、ソースコードシミュレーションプログラム28としては、例えばmetrowerks(登録商標)社のCodeTEST(登録商標)を用いることで実現できる。
比較プログラム30は、対応情報格納部25に格納された対応表に基づいて、ソースコード(またはモデル)の品質評価の結果抽出された構成部分と、この構成部分に対応するモデル(またはソースコード)の構成部分とが関連づけられた表示を行わせるための表示用情報を生成し、レポート格納部32に記憶する。
この比較プログラム30の作動のフローチャートを図9〜図11に示す。
この比較プログラム30は、まずステップ101で、モデル実行結果、すなわちモデルシミュレーションプログラム26がシミュレーション結果格納部29に記憶させたシミュレーション結果を読み込む。
続いてステップ102で、ソースコード実行結果、すなわちソースコードシミュレーションプログラム28がシミュレーション結果格納部29に記憶させたシミュレーション結果を読み込む。
続いてステップ103で、対応情報読み込みを行う。具体的には、対応情報格納部25に対応情報作成プログラム24が格納した対応表を読み出す。
続いてステップ104で、ソースコード解析処理を行う。後述する通り、このソースコード解析処理によって、ソースコードの各構成部分についての品質評価の情報がRAM13に記憶される。
続いてステップ105で、後述する様に、改善の必要性の高い順、すなわち重要度順にソースコードの構成部分を並び替え、当該並び替えた構成部分を、対応表を用いて、モデルの構成部分にリンクする。
続いてステップ106で、当該リンクの結果をレポート格納部32に記憶させ、かつ表示制御プログラム31に表示させる。なお、表示制御プログラム31に表示させるための具体的方法は、表示制御プログラム31を起動すると共に、重要度順に並んだ当該リンクの情報およびソースコード解析処理結果から成る表示用情報を引数として表示制御プログラム31に渡すことである。ステップ106の後、比較プログラム30の実行は終了する。
このようにして、比較プログラム30は、モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報である対応表を取得し(ステップ103参照)、この取得した対応表に基づいて、当該ソースコードの品質評価の結果に基づいて、改善の必要性の高い構成部分を、重要度に基づいた並び替えによって抽出し(ステップ105参照)、抽出された構成部分と、この構成部分に対応するモデルの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させ、また比較プログラム30に表示させる(ステップ106)。
以下、上記したステップ104のソースコード解析処理の詳細について説明する。図10にこの処理のフローチャートを示す。
このソースコード解析処理において、まずステップ301では、ソースカバレッジ調査を行う。具体的には、ステップ102において読み込んだソースコード実行結果から、ソースコード中のifブロックによる条件分岐において、どの分岐先が実行されなかったかを特定する。
続いてステップ302で、ステップ101において特定した、実行されなかった分岐先の情報をRAM13に格納する。
続いてステップ303で、動的評価調査を行う。具体的には、ステップ102において読み込んだソースコード実行結果から、関数、ifブロック、whileブロック等の構成部分のそれぞれについて、SCパスカバレッジ、MCDCパスカバレッジ、実行回数、実行1回あたりの実行時間、総実行時間、実行周期、処理負荷、レイテンシ、ジッタ−等の動的評価の評価項目についての情報を特定する。
SCパスカバレッジとは、ソースコードの一行を単位として、ソースコードの対象となる構成部分のうちどれぐらいの割合がシミュレーションにより実行されたかを示すデータである。
MCDCパスカバレッジとは、SCパスカバレッジより複雑にソースコードの実行割合を評価した値である。例えば、ソースコードのif文が複数の式の複合式となっている場合、複合式自体の真、偽による分岐のあるなしのみならず、それぞれの式の真、偽の全ての組み合わせについて、その組み合わせが発生したか否かを含めたものである。
レイテンシとは、ある計算(例えば関数)が開始されてから結果が出力される(例えば戻り値が返される)までの時間をいう。
ジッターとは、複数の実行のそれぞれにおけるレイテンシのぶれの大きさをいう。
このように、動的評価とは、ソースコードの実行をシミュレートすることによってわかる品質評価をいう。
続いてステップ304で、ステップ303によって特定された動的評価をRAM13に格納する。
続いてステップ305で、静的評価調査を行う。具体的には、当該ソースコードの関数、ifブロック、whileブロック等の構成部分のそれぞれについて、行数、入れ子の深さ、テンポラリ変数の数、使用する外部変数の数、経路複雑度等の静的評価の評価項目についての情報を特定する。
経路複雑度とは、ソースコードの複雑度であり、ソースコードの行数、入れ子の深さ、テンポラリ変数の数、外部変数の数に基づいて、所定の式で算出される量である。
このように、静的評価とは、ソースコード(またはモデル)の構造を確認するだけで特定できる品質評価である。
続いてステップ306で、ステップ305によって特定された静的評価をRAM13に格納する。
続いてステップ307で、ソースコードの各構成部分毎に、評価項目の評価を重み付けて足し合わせる。具体的には、ソースコードの各構成部分毎に、上記した動的評価および静的評価の評価項目の1つ1つにあらかじめ設定された重要度の係数(単位は各評価項目の単位の逆数)を乗算し、この乗算結果の総和を算出し、その総和を重要度情報として、当該構成部分と対応づけてRAM13に格納する。なお、各係数は、ソースコードの改善の必要度が高いものほど重要度が高くなるようにあらかじめ設定され、HDD15に格納されている。
そして図9のステップ104の処理が終了する。
次に、上記した図9のステップ105のリンクの処理の詳細について説明する。図11にこの処理の詳細なフローチャートを示す。
まずステップ401で、図9のステップ104の結果RAM13に格納された動的評価、静的評価の各評価項目についての情報(重要度の情報を含む)を読み出す。
続いてステップ402で、ソースコードの各構成部分を重要度の高い順に並べる。
続いてステップ403で、ステップ103で読み込んだ対応表を用いて、並び替えられた構成部分に対応するモデルの構成部分を特定し、その特定した情報をRAM13に格納する。そして、図9のステップ105の処理は終了する。
次に、比較プログラム30によって呼び出される表示制御プログラム31の作動について説明する。表示制御プログラム31は、起動すると共に、重要度順に並んだ当該リンクの情報およびソースコード解析処理結果から成る表示用情報を引数として受け取る。
そして表示制御プログラム31は、まず、重要度が最も高いソースコードの構成部分と、図9のステップ105で特定したその構成部分に対応するブロックの構成部分とを並べてディスプレイ11に表示させる。
なお、この時に表示制御プログラム31が表示させる部分は、ソースコードのシミュレーションの結果実行されなかった構成部分がある場合、その部分を表示させる。これは、ソースコードシミュレーションプログラム28によって実行されていないソースコードの構成要素がある場合、その部分が最も重要度の高い構成要素となるように、上記係数を設定されているからである。
図12に、比較プログラム30の制御によるディスプレイ11の表示例を示す。比較プログラム30の制御によって、ディスプレイ11の画面上には、ソースコード表示部71、モデル表示部72、静的評価表示ボタン73、および動的評価表示ボタン74が並べて表示される。
ソースコード表示部71は、ソースコードを表示する部分であり、モデル表示部72は、当該ソースコードの元となるモデルを表示する部分である。
表示制御プログラム31は、ソースコード表示部71に、引数として受け取ったソースコードの構成部分のうち、最も先頭のもの、すなわち最も重要度の高い構成部分75を表示させる。
なお、この構成部分を他の構成部分と同時に表示する場合には、強調表示、点滅表示、色分け表示等、当該他の部分と視覚的に区別できるような表示を行う。
また表示制御プログラム31は、モデル表示部72に、上記区別して表示されたソースコードの構成部分75に対応するモデルの構成部分76、77をディスプレイ11に表示させる。
なお、このモデルの構成部分を他の構成部分と同時に表示する場合には、強調表示、点滅表示、色分け表示等、当該他の部分と視覚的に区別できるような表示を行う。
また、上記したソースコードおよびモデルの、他の構成部分と視覚的に区別できるような表示の態様は同じものとする。例えば、ソースコードの構成部分が色分け表示されていれば、モデルの対応する構成部分は、同じ色で色分け表示されるようにする。
図12においては、ソースコードの構成部分75は、条件分岐ブロックの下半分である構成部分76、および比較ブロック77に対応する。これは、ソースコードの構成部分75中のif文の分岐先のうち、tau>TAU_MAXとなる場合の分岐先が、ソースコードのシミュレーションにおいて一度も実行されなかったことを示している。
また、静的評価表示ボタン73、動的評価表示ボタン74は、ユーザが入力装置12に対して所定の操作を行うことで選択することができる。
表示制御プログラム31は、ユーザによる静的評価表示ボタン73の選択を検知すると、図13に例示するような表形式による静的評価の画面表示を行う。また表示制御プログラム31は、ユーザによる動的評価表示ボタン74の選択を検知すると、図14に例示するような表形式による動的評価の画面表示を行う。
静的評価表示ボタン73が選択された場合および動的評価表示ボタン74が選択された場合のいずれにおいても、表示する静的評価、動的評価等の品質評価の対象となる構成部分は、当該重要度の最も高い構成部分である。
なお、表においては、動的評価または静的評価の対象となったソースコードの構成部分に対応するモデルの構成部分の識別情報(名称でもよい)78、79が表示される。これによって、そのソースコードの構成部分についての動的評価、静的評価の結果が、対応するモデルの構成部分と対応づけられて表示される。これは、ソースコードの構成部分とモデルの構成部分とが間接的に関連づけられた表示である。
なお、ユーザが次候補、すなわち次に重要度が高い構成部分の表示を行う旨の操作を入力装置12に対して行うことで、表示制御プログラム31は、当該構成部分についてのソースコード表示、モデル表示、動的評価表示、静的評価表示を行うようになっていてもよい。
また、静的評価表示ボタン73または動的評価表示ボタン74が選択されると、それぞれ全ての構成部分についての静的評価または動的評価が、当該構成部分に対応するモデルの構成部分の識別情報が付されて表示されるようになっていてもよい。
なお、上記した、図9のステップ104〜106の処理の記載において、モデルをソースコードに、ソースコードをモデルに、それぞれ読み替えたような処理が行われてもよい。
このようになっていると、比較プログラム30は、モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報である対応表を取得し、この取得した対応表に基づいて、当該モデルの品質評価の結果に基づいて、改善の必要性の高い構成部分を、重要度に基づいた並び替えによって抽出し、抽出された構成部分と、この構成部分に対応するソースコードの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させ、また比較プログラム30に表示させることになる。
なお、上記した実施形態において、CPU16が、特許請求の範囲に記載のコンピュータに相当する。
また、CPU16が、図9のステップ103の処理を実行することで、対応情報取得手段として機能する。
また、CPU16が、図9のステップ104〜106の処理を実行することで、記憶制御手段として機能する。
また、CPU16が、図1の表示制御プログラム31を実行することで、表示制御手段として機能する。
パーソナルコンピュータ1のハードウェア構成を示す図である。 パーソナルコンピュータ1のCPU16が実行するプログラムの機能構成を示す図である。 自動コード生成プログラム22が読み出すモデルの一例を示す図である。 噴射量算出サブシステム40dの詳細な構成を示す図である。 噴射量算出サブシステム40dから生成されたソースコードを示す図である。 噴射量算出サブシステム40dから生成されたソースコードを示す図である。 噴射量算出サブシステム40dから生成されたソースコードを示す図である。 対応情報作成プログラム24が対応情報格納部25に記憶させる対応表を示す図表である。 比較プログラム30のフローチャートである。 比較プログラム30のステップ104の詳細なフローチャートである。 比較プログラム30のステップ105の詳細なフローチャートである。 比較プログラム30の制御によるディスプレイ11の表示例を示す図である。 比較プログラム30の表示する動的評価を示す図である。 比較プログラム30の表示する動的評価を示す図である。
符号の説明
1…パーソナルコンピュータ、11…ディスプレイ、12…入力装置、
13…RAM、14…ROM、15…HDD、16…CPU、21…モデル格納部、
22…自動コード生成プログラム、23…ソースコード格納部、
24…対応情報作成プログラム、25…対応情報格納部、
26…モデルシミュレーションプログラム、27…テスト入力パタン格納部、
28…ソースコードシミュレーションプログラム、
29…シミュレーション結果格納部、30…比較プログラム、
31…表示制御プログラム、32…レポート格納部、40…モデル、
41…入力1ブロック、42…入力2ブロック、43…入力3ブロック、
44…入力4ブロック、45…入力5ブロック、46…入力6ブロック、
40a…動作モード設定サブシステム、40b…基本噴射量算出サブシステム、
40c…補正量算出サブシステム、40d…噴射量算出サブシステム、
40e…インジェクタ弁制御サブシステム、40f…噴射量記憶サブシステム、
47…出力1ブロック、48…出力2ブロック、51…staefi入力ブロック、
52…tau_s入力ブロック、53…tau_start入力ブロック、
54…tau_comp2入力ブロック、55…乗算ブロック、
56…加算ブロック、57…2項加算ブロック、
58…TAU_MAX2定数ブロック、59…比較ブロック、
60…条件分岐ブロック、61…tau_startデータ読み出しブロック、
62…TAU_MAX1定数ブロック、63…比較ブロック、
64…条件分岐ブロック、65…条件分岐ブロック、
66…tau_prevデータ読み出しブロック、67…2項減算ブロック、
68…tauout出力ブロック、69…tauout_c出力ブロック69
71…ソースコード表示部、72…モデル表示部、73…静的評価表示ボタン、
74…動的評価表示ボタン、75…ソースコードの構成部分、
76、77…モデルの構成部分、78、79…モデルの構成部分の識別情報。

Claims (6)

  1. モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報である対応情報を取得する対応情報取得手段と、
    前記対応情報取得手段が取得した前記対応情報に基づいて、前記ソースコードの品質評価の結果抽出された構成部分と、この構成部分に対応する前記モデルの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させる記憶制御手段と、を備えたことを特徴とする表示情報記憶制御装置。
  2. 前記対応情報は、前記モデルの構成部分と前記ソースコードの構成部分との対応表であり、
    前記記憶制御手段は、前記対応表と、前記ソースコードの品質評価の結果抽出された構成部分とを比較することに基づいて、この構成部分に対応する前記モデルの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させることを特徴とする請求項1に記載の表示情報記憶制御装置。
  3. モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報を取得する対応情報取得手段と、
    前記対応情報取得手段が取得した前記対応情報に基づいて、前記モデルの品質評価の結果抽出された構成部分と、この構成部分に対応する前記ソースコードの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させる記憶制御手段と、を備えたことを特徴とする表示情報記憶制御装置。
  4. 前記記憶制御手段が記憶媒体に記憶させた前記表示用情報に基づいた表示を表示装置に行わせる表示制御手段を備え、
    前記表示手段は、前記ソースコードの品質評価の結果抽出された構成部分と、この構成部分に対応する前記モデルの構成部分とを、他の構成部分と視覚的に区別できるように表示装置に表示させることを特徴とする請求項1ないし3のいずれか1つに記載の表示情報記憶制御装置。
  5. コンピュータを、
    モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報を取得する対応情報取得手段、および
    前記対応情報取得手段が取得した前記対応情報に基づいて、前記ソースコードの品質評価の結果抽出された構成部分と、この構成部分に対応する前記モデルの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させる記憶制御手段、として機能させる表示情報記憶制御プログラム。
  6. コンピュータを、
    モデルの構成部分と当該モデルに基づいて生成されたソースコードの構成部分との対応関係の情報を取得する対応情報取得手段、および
    前記対応情報取得手段が取得した前記対応情報に基づいて、前記モデルの品質評価の結果抽出された構成部分と、この構成部分に対応する前記ソースコードの構成部分とが関連づけられた表示を行わせるための表示用情報を記憶媒体に記憶させる記憶制御手段、として機能させる表示情報記憶制御プログラム。
JP2004115254A 2004-04-09 2004-04-09 表示情報記憶制御装置および表示情報記憶制御プログラム Pending JP2005301568A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004115254A JP2005301568A (ja) 2004-04-09 2004-04-09 表示情報記憶制御装置および表示情報記憶制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004115254A JP2005301568A (ja) 2004-04-09 2004-04-09 表示情報記憶制御装置および表示情報記憶制御プログラム

Publications (1)

Publication Number Publication Date
JP2005301568A true JP2005301568A (ja) 2005-10-27

Family

ID=35333040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004115254A Pending JP2005301568A (ja) 2004-04-09 2004-04-09 表示情報記憶制御装置および表示情報記憶制御プログラム

Country Status (1)

Country Link
JP (1) JP2005301568A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008299502A (ja) * 2007-05-30 2008-12-11 Denso Corp テストケース妥当性自動検証プログラムおよびテストケース妥当性自動検証結果表示方法
JP2013020442A (ja) * 2011-07-11 2013-01-31 Fuji Electric Co Ltd 図形式プログラム評価システム、図形式プログラム評価プログラム、データベースおよび図形式プログラムの評価方法
JP2016191977A (ja) * 2015-03-30 2016-11-10 新日鉄住金ソリューションズ株式会社 情報処理装置、情報処理方法及びプログラム
WO2018163304A1 (ja) * 2017-03-07 2018-09-13 三菱電機株式会社 ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム
JP2020004036A (ja) * 2018-06-27 2020-01-09 株式会社デンソー ソースコード生成装置
JP2020123175A (ja) * 2019-01-30 2020-08-13 株式会社日立製作所 コード管理システムおよびコード管理方法
KR102630168B1 (ko) * 2023-06-01 2024-01-29 쿠팡 주식회사 코드를 관리하는 전자 장치 및 방법

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008299502A (ja) * 2007-05-30 2008-12-11 Denso Corp テストケース妥当性自動検証プログラムおよびテストケース妥当性自動検証結果表示方法
JP2013020442A (ja) * 2011-07-11 2013-01-31 Fuji Electric Co Ltd 図形式プログラム評価システム、図形式プログラム評価プログラム、データベースおよび図形式プログラムの評価方法
JP2016191977A (ja) * 2015-03-30 2016-11-10 新日鉄住金ソリューションズ株式会社 情報処理装置、情報処理方法及びプログラム
WO2018163304A1 (ja) * 2017-03-07 2018-09-13 三菱電機株式会社 ソースコード改善装置、ソースコード改善方法及びソースコード改善プログラム
JP2020004036A (ja) * 2018-06-27 2020-01-09 株式会社デンソー ソースコード生成装置
JP7059827B2 (ja) 2018-06-27 2022-04-26 株式会社デンソー ソースコード生成装置
JP2020123175A (ja) * 2019-01-30 2020-08-13 株式会社日立製作所 コード管理システムおよびコード管理方法
JP7113765B2 (ja) 2019-01-30 2022-08-05 株式会社日立製作所 コード管理システムおよびコード管理方法
KR102630168B1 (ko) * 2023-06-01 2024-01-29 쿠팡 주식회사 코드를 관리하는 전자 장치 및 방법

Similar Documents

Publication Publication Date Title
US20060010429A1 (en) Method, system and program for model based software development with test case generation and evaluation
US7895575B2 (en) Apparatus and method for generating test driver
JP5626786B2 (ja) ソフトウエア開発支援方法とソフトウエア開発支援装置とソフトウエア開発支援プログラム
US20170032058A1 (en) Graphical Design Verification Environment Generator
US8341594B1 (en) Version control in modeling environments
US20140365990A1 (en) Software evaluation device and method
US20120116561A1 (en) Program testing apparatus, method of testing a program, and program testing program
JP2002505000A (ja) 低コストで使用が容易な自動テスト・システム用ソフトウェア
US10860298B2 (en) Method and system for editing a block diagram model
KR20130040254A (ko) 제어 프로그램 생성 장치, 제어 프로그램 생성 프로그램을 기록한 컴퓨터 판독 가능 기록매체, 및 제어 프로그램 생성 방법
US20140214396A1 (en) Specification properties creation for a visual model of a system
JP4978233B2 (ja) シミュレータ開発システム及びシミュレータ開発方法
US20090187892A1 (en) Apparatus and program for test case generation
US20180307193A1 (en) Automated control of processes
JP2005078243A (ja) マイコンリソース消費見積もりプログラム、マイコンリソース消費見積もり装置、およびプログラム生成方法
CN101960419B (zh) 为嵌入式设备构建操作系统镜像的系统和方法
JP2009294846A (ja) テストケース生成装置、テストケース生成プログラム、およびテストケース生成方法
JP2005301568A (ja) 表示情報記憶制御装置および表示情報記憶制御プログラム
US8510708B2 (en) Method for optimizing a control program for actuators
Teixeira et al. EasyTest: An approach for automatic test cases generation from UML Activity Diagrams
JP2009104252A (ja) デバッグ支援装置およびデバッグ支援方法
Walker et al. Configuration management of the model-based design process
JP2020144509A (ja) 自動コード生成方法、及び自動コード生成プログラム
US20100287415A1 (en) Method of making an enduring universal tool for developing equipment tests and tool for the implementation thereof
JP6433468B2 (ja) プログラム作成支援方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091013

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100223