JP2020004036A - ソースコード生成装置 - Google Patents

ソースコード生成装置 Download PDF

Info

Publication number
JP2020004036A
JP2020004036A JP2018122141A JP2018122141A JP2020004036A JP 2020004036 A JP2020004036 A JP 2020004036A JP 2018122141 A JP2018122141 A JP 2018122141A JP 2018122141 A JP2018122141 A JP 2018122141A JP 2020004036 A JP2020004036 A JP 2020004036A
Authority
JP
Japan
Prior art keywords
source code
model
sub
generated
unit
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.)
Granted
Application number
JP2018122141A
Other languages
English (en)
Other versions
JP7059827B2 (ja
Inventor
文崇 佐川
Fumitaka Sagawa
文崇 佐川
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 JP2018122141A priority Critical patent/JP7059827B2/ja
Publication of JP2020004036A publication Critical patent/JP2020004036A/ja
Application granted granted Critical
Publication of JP7059827B2 publication Critical patent/JP7059827B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】モデルを分割したサブシステム毎にサブソースコードを生成しても、モデルに対応してサブソースコードから生成されるソースコードの実行時間の増加を抑制しつつ、サブシステム毎のテストケースを実行可能にする技術を提供する。【解決手段】本開示のソースコード生成装置50によると、モデル100のカバレッジが所定値未満であり、モデルを分割して生成された複数のサブシステムのそれぞれのカバレッジが所定値以上であるとカバレッジ判定部64が判定すると、パラメータ定義部72は、サブシステム毎に、対応付け部70がモデルから生成された元のソースコードと処理ブロックの入出力パラメータとを対応付けた結果において、元のソースコードで定義されていない入出力パラメータを定義する。ソースコード生成部76は、サブコード生成部74がサブシステム毎に生成するサブソースコードから、モデルに対応するソースコード210を生成する。【選択図】図2

Description

本開示は、モデルからソースコードを生成する技術に関する。
入力データに対する処理を複数の処理ブロック間におけるデータの入出力の仕様として記述されるモデルから、モデルに対応するソースコードを生成する技術として、例えば、特許文献1に記載されているものが知られている。
特許文献1に記載されているように、モデルまたはソースコードに対しては、モデルまたはソースコードの品質を検査するためにテストケースが生成される。テストケースは、テスト対象のモデルまたはソースコードに対する入力データである。通常、テストケースは、モデルの出力側から入力側に向けて逆算して生成される。
そして、モデルまたはソースコードがテストケースを実行した結果、モデルまたはソースコードにおける処理経路がどの程度テストされたかを表すカバレッジは、テストケースによる品質検査を保証するために必要な所定値以上であることが要求される。
特開2009−294846号公報
モデルが大型化し複雑になると、所定値以上のカバレッジを達成することが困難になる場合がある。そこで、モデルを分割し小型化して複数のサブシステムを生成し、サブシステム毎にテストケースを生成してカバレッジを向上させることが考えられる。
この場合、サブシステムに対応するサブソースコードを関数として定義すれば、サブソースコードからモデルに対応するソースコードを容易に生成でき、サブシステム毎のテストケースをサブシステムまたはサブソースコードで実行できる。
しかし、サブソースコードが関数として定義されると、定義される関数の数が上昇するのに従い関数の呼び出し回数が増加する。その結果、サブソースコードから生成されるソースコードの実行時間が増加するという課題が生じる。また、関数として定義しない場合には、サブシステムの入出力に相当するものがソースコードに無く、サブシステムのテストケースがソースコード上で実行できないという課題が生じる。
本開示は、モデルを分割したサブシステム毎にサブソースコードを生成しても、モデルに対応してサブソースコードから生成されるソースコードの実行時間の増加を抑制しつつ、サブシステム毎のテストケースを実行可能にする技術を提供する。
本開示のソースコード生成装置(50)は、入力データに対する処理を複数の処理ブロック(112、120〜128)間におけるデータの入出力の仕様として記述されるモデル(12、100)から、モデルに対応するソースコード(14、210)を生成するソースコード生成装置であって、カバレッジ判定部(64、S406、S414)と、対応付け部(70、S430、S432)と、パラメータ定義部(72、S434)と、サブコード生成部(74、S436〜S448)と、ソースコード生成部(76、S450)と、を備える。
カバレッジ判定部は、モデルから生成されるテストケースをモデルに実行させたカバレッジが所定値未満の場合、モデルを分割して生成された複数のサブシステム(130、140)のそれぞれに対し、サブシステムから生成されるテストケースを実行させたカバレッジが所定値以上か否かを判定する。
対応付け部は、複数のサブシステムのカバレッジがすべて所定値以上であるとカバレッジ判定部が判定すると、サブシステム毎に、サブシステムに分割される前のモデルから生成された元のソースコード(200)と、処理ブロックおよび処理ブロックの入出力パラメータとを対応付ける。
パラメータ定義部は、対応付け部が対応付けた結果において、元のソースコードで定義されていない入出力パラメータが存在すれば、サブシステム毎に、定義されていない入出力パラメータを定義する。
サブコード生成部は、サブシステム毎に、対応付け部が対応付けた結果とパラメータ定義部が定義する入出力パラメータとを使用して、サブシステムに対応するサブソースコード(212、214)を生成する。ソースコード生成部は、サブコード生成部が生成するサブソースコードから、モデルに対応するソースコードを生成する。
このように、本開示のソースコード生成装置では、モデルを分割したサブシステム毎に、分割前のモデルから生成された元のソースコードにおいて定義されていない入出力パラメータを新たに定義する。そして、サブシステム毎に、対応付け部が対応付けた結果とパラメータ定義部が定義する入出力パラメータとに基づいて、サブシステムに対応するサブソースコードが生成される。これにより、サブシステムに対応して生成されるサブソースコードとサブソースコードとの間で、入出力パラメータによりデータの受け渡しができる。
したがって、サブシステムから関数として定義されるサブソースコードを生成する場合に比べ、関数の呼び出しにより生じる実行時間の増加を抑制しつつ、サブシステム毎のテストケースを実行できる。
尚、この欄および特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
モデルベース開発システムを示すブロック図。 ソースコード生成装置を示すブロック図。 ソースコード生成のメイン処理を示すフローチャート。 ソースコード置換処理を示すフローチャート。 モデルの構成を示す説明図。 モデルから生成されたソースコードを示すプログラム。 モデルの分割を示す説明図。 サブシステムとソースコードとの対応を示す一覧図。 サブシステムを示す説明図。 未定義の入出力パラメータを定義した一覧図。 処理ブロックのソースコードの置換を説明する一覧図。 処理ブロックの他のソースコードの置換を説明する一覧図。 他の処理ブロックのソースコードの置換を説明する一覧図。 他の処理ブロックのソースコードの置換を説明する一覧図。 モデルに対応する置換終了後のソースコードを示すプログラム。
以下、本開示の実施形態を図に基づいて説明する。
[1.構成]
図1に示すモデルベース開発システム2は、ソースコード生成部10と、モデル12と、ソースコード14と、テストケース生成部20と、ソースコード実行部30と、モデル実行部32と、実行結果比較部40と、結果表示部42とを備えている。モデルベース開発システム2は、例えば、ディスプレイ、入出力装置、CPU、RAM、ROM、HDD等を備えるパーソナルコンピュータにより実現される。
以下、モデル12から生成されたソースコード14のカバレッジが所定値以上の場合のモデルベース開発システム2の作動について説明する。
ソースコード生成部10は、HDD等に記憶されているモデル12から、例えばC言語で記述されたソースコード14を生成する。
ソースコード生成部10の例としては、Mathworks(登録商標)社のEmbedded Coder(登録商標)がある。なお、モデルは、モデルエディタ等のモデル作成用プログラムをパーソナルコンピュータで実行し、その実行時にユーザがモデル作成のための作業を入力装置を用いて行うことで作成されるようになっていてもよい。このようなモデルエディタがモデルベース開発システム2に含まれていてもよい。
ここで、モデル12について説明する。モデル12は、時系列の中でのデータ演算、データ入力およびデータ出力のうち少なくともいずれか1つの機能を表す処理ブロック、および処理ブロック間の入出力関係の仕様、すなわち、処理ブロックからどの処理ブロックにデータが渡されるかを示す結線の組み合わせとして記述される。
これら処理ブロックおよび結線の組み合わせによって、入力データに応じたモデル12の処理が記述される。例えば、車載装置の制御処理であれば、エンジン制御、ブレーキ制御等の処理がある。モデルの例として、Mathworks(登録商標)社のSimulink(登録商標)モデルがある。
テストケース生成部20は、モデル12に基づいてテストケースを生成する。なお、テストケースは、モデル12のみに基づいて生成してもよいし、あるいは、モデル12のソースコード14に基づいて生成してもよいし、またあるいは、モデル12とソースコード14との両方に基づいて生成してもよい。
テストケースとは、モデル12の品質、および、ソースコード生成部10によってモデル12から生成されたソースコード14の品質を検査するためのカバレッジテスト等の処理の実行において、その品質検査が十分となるよう、モデル12やソースコード14に入力するテスト用データである。例えば、後述するソースコード実行部30およびモデル実行部32の実行の際にも、このテストケースが使用される。
品質検査が十分となるようなテストケースとは、例えば、できる限りモデル12の全ての処理ブロックまたはソースコード14の全ての命令文が実行されるような入力データである。
ソースコード実行部30は、テストケース生成部20によって生成されたテストケースを入力データとして、ソースコード14に記載された処理内容を実行する。その実行の際、ソースコード実行部30は、ソースコード14の実行単位による出力データ、および実行した命令文の時系列的なリストを生成する。
モデル実行部32は、テストケース生成部20によって生成されたテストケースを入力データとして、モデル12のシミュレーションを実行する。シミュレーションとは、モデル12の表現するデータの入出力の時間変化をパーソナルコンピュータ上で仮想的に再現する処理をいう。
モデル実行部32は、モデル12のシミュレーションによる外部への出力データ、ならびに処理ブロック毎の実行時間および入出力データをHDD等に格納する。
実行結果比較部40は、ソースコード実行部30およびモデル実行部32によって実行された実行結果データを比較し、その比較結果をHDD等に格納する。尚、比較とは、ソースコード実行部30が実行したソースコード14と、モデル実行部32がシミュレーションを行ったモデル12とのそれぞれの実行結果のデータの比較をいう。
比較項目としては、同じ入力データに対してモデル12、ソースコード14が出力したデータがある。そして実行結果比較部40は、比較の結果、それぞれが合致しているか否かの合否判定を行い、その合否判定の情報もHDD等に格納する。結果表示部42は、実行結果比較部40による比較結果をディスプレイに出力する。
ここで、モデル12の構造が大型化しており複雑な場合、テストケース生成部20が生成するテストケースをソースコード実行部30とモデル実行部32とが実行しても、カババレッジが、モデル12またはソースコード14に対するテストケースによる品質検査を保証するために必要な所定値以上にならないことがある。
そこで、図2に、構造が大型化しており複雑な場合のモデル100であっても、ソースコード210でテストケースを実行した結果のカバレッジを所定値以上にする本実施形態のソースコード生成装置50を示す。
ソースコード生成装置50は、モデル入力部52と、ソースコード生成部54と、分析部60と、対応付け部70と、パラメータ定義部72と、サブコード生成部74と、ソースコード生成部76とを備えている。分析部60は、テストケース生成部62とカバレッジ判定部64とを備えている。
ソースコード生成装置50の各要素が実行するソースコード生成処理について以下に説明する。
[2.処理]
[2−1.メイン処理]
ソースコード生成装置50が実行するソースコード生成のメイン処理について、図3のフローチャートに基づいて説明する。
S400においてモデル入力部52は、モデルと、モデルに付随する情報として、モデルを分割してサブシステムを生成する場合の分割箇所などを取得する。S402においてソースコード生成部54は、モデルからソースコードを生成する。この場合、ソースコード生成部54は、図1に示すソースコード生成部10と実質的に同じ処理を実行する。
図5に、モデル100の一例を示す。符号102〜108は入力パラメータを示す。符号110は出力パラメータを示す。符号112、120〜128は処理ブロックである。符号112は、1.01の定数を出力する定数ブロックである。符号120は、定数ブロック112の値と、遅延処理ブロック128の出力との積を出力する乗算ブロックである。
符号122〜126が示す条件分岐ブロックは、上中下の入力パラメータのうち、中央の信号が0でないときに上の信号を出力し、中央の信号が0の場合は下の信号を出力する。
符号128が示す遅延処理ブロックは、1周期前の値を出力する。
図5に示されるモデル100から、ソースコード生成部54が生成したC言語によるソースコード200を図6に示す。
S404において分析部60のテストケース生成部62は、モデル100に実行させるテストケースを生成する。この場合、テストケース生成部62は、図1に示すテストケース生成部20と実質的に同じ処理を実行する。S406において分析部60のカバレッジ判定部64は、モデル100にテストケースを実行させた結果のカバレッジが所定値以上であるか否かを判定する。
S406の判定がYesである、つまりモデル100にテストケースを実行させた結果のカバレッジが所定値以上の場合、S408において、図1に示すモデルベース開発システム2により、モデル100と、S402で生成されたソースコード200とに対してテストが実行される。
これに対し、S406の判定がNoである、つまりモデル100にテストケースを実行させた結果のカバレッジが所定値未満の場合、S410においてカバレッジ判定部64は、S400でモデル入力部52が取得したモデル100の分割箇所でモデル100を分割し複数のサブシステムを生成する。
図7に、S400でモデル入力部52が取得した分割情報に基づいてモデル100を2つのサブシステム130、140に分割した例を示す。
S412においてテストケース生成部62は、サブシステム130、140のそれぞれについてテストケースを生成する。
S414においてカバレッジ判定部64は、サブシステム130、140のそれぞれについてテストケースを実行した結果のカバレッジが所定値以上であるか否かを判定する。
S414の判定がNoである、つまりカバレッジが所定値未満のサブシステムが存在する場合、処理はS410に戻り、カバレッジが所定値未満のサブシステムがさらに複数のサブシステムに分割される。
S414の判定がYesである、つまりすべてのサブシステム、図7の例ではサブシステム130、140のカバレッジが所定値以上の場合、S416のソースコード置換処置において、対応付け部70とパラメータ定義部72とサブコード生成部74とソースコード生成部76とは、S402で生成されたソースコードを置換して、複数のサブシステム130、140のそれぞれに対応するサブソースコードを生成する。
そして、サブソースコードをまとめて、モデル100に対応するソースコードを生成する。それぞれのサブシステム130、140のカバレッジが所定値以上であれば、それぞれのサブシステム130、140から生成されたサブソースコードをまとめて生成されたモデル100に対応するソースコードのカバレッジも所定値以上である。
尚、S416のソースコード置換処理については、図4のフローチャートに基づいて詳細に説明する。
そして、S418において、S416で生成されたサブシステム130、140に対応するサブソースコードと、サブシステム130、140とに対して、図1に示すモデルベース開発システム2においてソースコード実行部30とモデル実行部32とが、S412で生成されたテストケースを使用してテストを実行する。
[2−2.ソースコード置換処理]
図3のS416においてソースコード生成装置50が実行するソースコード置換処理について、図4のフローチャートに基づいて説明する。
S430において対応付け部70は、モデル100を分割して生成されたサブシステム130、140に対し置換処理を実行する順番を決定する。モデル100において早く実行されるサブシステム130から置換処理が実行される。
S432において対応付け部70は、サブシステム130、140のそれぞれについて、処理ブロックと入出力パラメータと一時パラメータとに対し、ソースコード200を対応付けた一覧を生成する。図8に、対応付け部70がサブシステム130についてソースコード200を対応付けて生成した一覧を示す。
図8の一覧と図9に示すサブシステム130とにおいて、A、B、Cが処理ブロックであり、a、b、c、dが入力パラメータであり、eが出力パラメータであり、f、gが一時パラメータである。f、gが示す一時パラメータも、いずれかの処理ブロックにおける入力パラメータまたは出力パラメータである。
処理ブロックは、処理の種別として、反復、分岐、順接に分類される。分岐、順接が反復される場合は、反復/分岐、反復/順接として分類される。
各処理ブロックに対応付けるソースコードは、反復および順接については、処理ブロックに関連するソースコードの記述がすべて抽出される。分岐については、複数の分岐の条件がソースコードに記述されている場合、該当する分岐の条件だけが抽出される。
図8の一覧において、入出力パラメータとして、「A」で表される条件分岐ブロック124の出力パラメータの「e」と、「B」で表される条件分岐ブロック122の出力パラメータであり条件分岐ブロック124の入力パラメータである一時パラメータの「f」と、「C」で表される乗算ブロック120の出力パラメータであり条件分岐ブロック122の入力パラメータである一時パラメータの「g」とに対応する記述が、図6に示すソースコード200において未定義であることが分かる。
そこで、S434においてパラメータ定義部72は、一覧において未定義の入出力パラメータとして、出力パラメータの「e」と一時パラメータの「f」、「g」とを、図10に示すように、double sub1_out1[2]、double sub1_tmp1[2]、double sub1_tmp2[2]として、図10の下線で示すように処理後のサブソースコードで定義する。
S436においてサブコード生成部74は、サブシステム130において、ソースコードを置換してサブソースコードを生成する処理ブロックの順番を決定する。本実施形態では、サブコード生成部74は、乗算ブロック120と条件分岐ブロック122、124とのうち、条件分岐ブロック122、124を先に置換する。さらに、サブコード生成部74は、条件分岐ブロック122、124のうち、後段で分岐処理が実行される条件分岐ブロック124を条件分岐ブロック122よりも先に置換する。
これは、サブシステム130からサブソースコードが生成された場合、後段の条件分岐ブロックに対応するサブソースコードから実行されるので、分岐条件のいずれかが満たされない場合、分岐条件が満たされない場合に実行されるサブソースコードが実行されない。これにより、生成されたサブソースコードの実行時間が短縮される。
S436の処理により、サブシステム130において、条件分岐ブロック124、条件分岐ブロック122、乗算ブロック120の順番で、対応するソースコードが置換される。
S438においてサブコード生成部74は、今回の置換処理の対象である処理ブロックに対応するソースコードの記述において、分岐先の処理が省略されているか否かを判定する。S438の判定がYesである、つまりソースコードにおいて分岐先の処理が省略されている場合、処理はS440に移行する。S438の判定がNoである、つまり分岐先の処理が省略されていない場合、処理はS442に移行する。
例えば、条件分岐ブロック124に対応する「if (!(in3[s4t_tmp] != 0.0F))」の判定に対し、ソースコード200には判定結果が偽の場合の分岐先の記述が省略されているので、S438の判定はYesである。
この場合、S440においてサブコード生成部74は、図11の下線で示すように、条件分岐ブロック124に対応するサブソースコードにおいて、「else」が追加される。
S442において、サブコード生成部74は、処理ブロックに対応する処理で、出力パラメータに入力パラメータを代入する記述を追加する。
例えば、図12の下線で示すように、条件分岐ブロック124に対応する「if (!(in3[s4t_tmp] != 0.0F))」の判定に対し、判定結果が真であれば、sub1_out1[s4t_tmp]=out1[s4t_tmp]の記述が追加され、判定結果が偽であれば、sub1_out1[s4t_tmp]=sub1_tmp1[s4t_tmp]の記述が追加される。
S444においてサブコード生成部74は、置換処理が終了した処理ブロックを対象から除く。S446においてサブコード生成部74は、すべての処理ブロックに対する置換処理が終了したか否かを判定する。S446の判定がNoである、つまり置換処理が未処理の処理ブロックが存在する場合、処理はS436に移行する。
例えば、条件分岐ブロック124に対する置換処理が終了しても、条件分岐ブロック122対する置換処理は終了していないので、処理はS436に移行し、条件分岐ブロック124と同様に条件分岐ブロック122に対する置換処理が実行される。
条件分岐ブロック122の処理は条件分岐ブロック124において判定結果が偽である「else」側で実行されるので、図13の下線で示すように、サブソースコードにおいて条件分岐ブロック122の処理に対応する記述が条件分岐ブロック124のサブソースコードにおける「else」側に記述される。
この場合、条件分岐ブロック124の判定結果が偽のときに実行されるsub1_out1[s4t_tmp]=sub1_tmp1[s4t_tmp]において、条件分岐ブロック124の判定結果が真であればsub1_tmp1[s4t_tmp]=in1[s4t_tmp]が実行され、条件分岐ブロック124の判定結果が偽であればsub1_tmp1[s4t_tmp]=sub1_tmp2[s4t_tmp]が実行される。
そして、条件分岐ブロック122に対する置換処理が終了すると、乗算ブロック120に対する置換処理が実行される。
この場合、図14の下線で示すように、条件分岐ブロック122の判定結果が偽のときに実行されるsub1_tmp1[s4t_tmp]=sub1_tmp2[s4t_tmp]の前に、乗算ブロック120の処理結果であるout1[s4t_tmp]*0.01がsub1_tmp2[s4t_tmp]に代入される。
S446の判定がYesである、つまり、すべての処理ブロックの置換処理が終了した場合、S448においてサブコード生成部74は、分割された複数のサブシステムについて、置換処理が終了したか否かを判定する。S448の判定がNoである、つまり置換処理が未処理のサブシステムが存在する場合、処理はS432に移行する。
例えば、図7においてモデル100を分割したサブシステム130、40のうち、サブシステム130の置換処理が終了すると、サブシステム130と同様にサブシステム140の置換処理が実行される。サブシステム140の置換処理では、サブシステム130の置換処理で定義された入出力パラメータが使用される。
そして、S448の判定がYesである、つまり、すべてのサブシステムの置換処理が終了すると、S450においてソースコード生成部76は、図15に示すように、生成されたサブソースコード212、214をまとめて、モデル100に対応するソースコード210を生成する。
図15において、符号212がサブシステム130から生成されたサブソースコードであり、符号214がサブシステム140から生成されたサブソースコードである。
サブシステム140に対応するソースコード214の部分において、条件分岐ブロック126の判定であるif (in4s4t_tmp] != 0.0F)の判定結果が偽の場合、out1[s4t_tmp]には同じ値が代入されるので、分岐先の記述は追加されていない。
図15に示すように、モデル100から分割されたサブシステム130、140において、元のソースコード200に対して、置換処理により生成されたサブソースコード212、214には関数定義は存在していない。そして、サブソースコード212、214は、反復と分岐と順接との処理だけで記述されている。
図3のS418で実行されるテストは、S412においてサブシステム130、140のそれぞれに対して生成されたテストケースで実行される。
[3.効果]
以上説明した上記実施形態では、以下の効果を得ることができる。
(1)元のソースコード200に対して、置換処理により生成されたサブソースコード212、214には関数定義は存在しておらず、サブソースコード212、214は、反復と分岐と順接との処理だけで記述されている。したがって、サブソースコード212、214から生成されるソースコード210を実行するときに関数が呼び出されないので、ソースコード210の実行時間が増加することを抑制しつつ、サブシステム毎のテストケースを実行できる。
(2)モデル100から分割されて、簡単化かつ小型化されたサブシステム130、140と、サブシステム130、140に対応して生成されたサブソースコード212、214との組み合わせに対して、それぞれのサブシステム130、140から生成されたテストケースによりテストを実行する。
サブシステム130、140はモデル12よりも簡単化かつ小型化されているので、生成されたテストケースにより実行されたテストのカバレッジは向上する。
上記実施形態において、S406、S414がカバレッジ判定部の処理に対応し、S430、S432が対応付け部の処理に対応し、S434がパラメータ定義部の処理に対応し、S436〜S448がサブコード生成部の処理に対応し、S450がソースコード生成部の処理に対応する。
[4.他の実施形態]
(1)上記実施形態では、置換処理前のモデルであるモデル100を1回分割して生成されたサブシステム130、140のカバレッジが所定値以上になる例を説明した。
これに対し、分割して生成されたすべてのサブシステムのカバレッジが所定値以上になるまで、カバレッジが所定値未満のサブシステムをさらに分割して複数のサブシステムを生成してもよい。
(2)上記実施形態では、ソースコード生成装置50のカバレッジ判定部64が、モデル100から取得する分割情報に基づいて、モデル100またはサブシステム130、140を分割して複数のサブシステムを生成した。
これに対し、例えばオペレータが、ソースコード生成装置50のマウスまたはキーボード等の入力装置を操作してモデル100を分割してもよい。
(3)上記実施形態では、ソースコード生成装置50のカバレッジ判定部64が、モデル100から取得する分割情報に基づいて、モデル100またはサブシステム130、140を分割して複数のサブシステムを生成した。
これに対し、ソースコード生成装置50が、モデル100の構造を解析し、モデル100の分割箇所を決定する分割部を備えてもよい。
(4)上記実施形態における一つの構成要素が有する複数の機能を複数の構成要素によって実現したり、一つの構成要素が有する一つの機能を複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を一つの構成要素によって実現したり、複数の構成要素によって実現される一つの機能を一つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。尚、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
(5)上述したソースコード生成装置の他、当該ソースコード生成装置を構成要素とするシステム、当該ソースコード生成装置としてコンピュータを機能させるためのソースコード生成プログラム、このソースコード生成プログラムを記録した記録媒体、ソースコード生成方法など、種々の形態で本開示を実現することもできる。
50:ソースコード生成装置、64カバレッジ判定部、70:対応付け部、72:パラメータ定義部、74:サブコード生成部、76:ソースコード生成部、100:モデル、112:定数ブロック(処理ブロック)、120:乗算ブロック(処理ブロック)、122〜126:条件分岐ブロック(処理ブロック)、128:遅延ブロック(処理ブロック)、130、140:サブシステム、200:元のソースコード、210:ソースコード、212、214:サブソースコード

Claims (4)

  1. 入力データに対する処理を複数の処理ブロック(112、120〜128)間におけるデータの入出力の仕様として記述されるモデル(12、100)から、前記モデルに対応するソースコード(14、210)を生成するソースコード生成装置(50)であって、
    前記モデル(100)から生成されるテストケースを前記モデルに実行させたカバレッジが所定値未満の場合、前記モデルを分割して生成された複数のサブシステム(130、140)のそれぞれに対し、前記サブシステムから生成されるテストケースを実行させた前記カバレッジが所定値以上か否かを判定するように構成されたカバレッジ判定部(64、S406、S414)と、
    前記複数のサブシステムの前記カバレッジがすべて前記所定値以上であると前記カバレッジ判定部が判定すると、前記サブシステム毎に、前記サブシステムに分割される前の前記モデルから生成された元のソースコード(200)と、前記処理ブロックおよび前記処理ブロックの入出力パラメータとを対応付けるように構成された対応付け部(70、S430、S432)と、
    前記対応付け部が対応付けた結果において、前記元のソースコードで定義されていない前記入出力パラメータが存在すれば、前記サブシステム毎に、定義されていない前記入出力パラメータを定義するように構成されたパラメータ定義部(72、S434)と、
    前記サブシステム毎に、前記対応付け部が対応付けた結果と前記パラメータ定義部が定義する前記入出力パラメータとに基づいて、前記サブシステムに対応するサブソースコード(212、214)を生成するように構成されたサブコード生成部(74、S436〜S448)と、
    前記サブコード生成部が生成する前記サブソースコードから、前記モデルに対応するソースコードを生成するように構成されたソースコード生成部(76、S450)と、
    を備えるソースコード生成装置。
  2. 請求項1に記載のソースコード生成装置であって、
    前記カバレッジ判定部は、前記サブシステムに前記テストケースを実行させた前記カバレッジが所定値未満の場合、前記カバレッジが所定値未満の前記サブシステムをさらに分割して生成された複数のサブシステムのそれぞれに対し、生成されたテストケースを実行させた前記カバレッジが所定値以上であるか否かを判定するように構成されている、
    ソースコード生成装置。
  3. 請求項1または2に記載のソースコード生成装置であって、
    前記サブコード生成部は、前記サブシステムにおいて後段の処理を実行する前記処理ブロックから順番に、前記パラメータ定義部が定義する前記入出力パラメータを使用して、前記元のソースコードに基づいて、前記処理ブロックの処理に対応する前記サブソースコードを生成するように構成されている、
    ソースコード生成装置。
  4. 請求項3に記載のソースコード生成装置であって、
    前記サブコード生成部は、前記処理ブロックが条件分岐の処理を実行し、いずれかの分岐先の処理に対応する記述が前記元のソースコードに存在しない場合、記述が存在しない分岐先の処理を表すサブコードを生成するように構成されている、
    ソースコード生成装置。
JP2018122141A 2018-06-27 2018-06-27 ソースコード生成装置 Active JP7059827B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018122141A JP7059827B2 (ja) 2018-06-27 2018-06-27 ソースコード生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018122141A JP7059827B2 (ja) 2018-06-27 2018-06-27 ソースコード生成装置

Publications (2)

Publication Number Publication Date
JP2020004036A true JP2020004036A (ja) 2020-01-09
JP7059827B2 JP7059827B2 (ja) 2022-04-26

Family

ID=69100290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018122141A Active JP7059827B2 (ja) 2018-06-27 2018-06-27 ソースコード生成装置

Country Status (1)

Country Link
JP (1) JP7059827B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01303533A (ja) * 1988-05-31 1989-12-07 Toshiba Corp テスト網羅率測定システム
JP2005301568A (ja) * 2004-04-09 2005-10-27 Denso Corp 表示情報記憶制御装置および表示情報記憶制御プログラム
JP2009294846A (ja) * 2008-06-04 2009-12-17 Denso Corp テストケース生成装置、テストケース生成プログラム、およびテストケース生成方法
JP2010250669A (ja) * 2009-04-17 2010-11-04 Denso Corp テストケース生成装置、オブジェクト検査装置、およびプログラム
US9665350B1 (en) * 2009-05-29 2017-05-30 The Mathworks, Inc. Automatic test generation for model-based code coverage

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01303533A (ja) * 1988-05-31 1989-12-07 Toshiba Corp テスト網羅率測定システム
JP2005301568A (ja) * 2004-04-09 2005-10-27 Denso Corp 表示情報記憶制御装置および表示情報記憶制御プログラム
JP2009294846A (ja) * 2008-06-04 2009-12-17 Denso Corp テストケース生成装置、テストケース生成プログラム、およびテストケース生成方法
JP2010250669A (ja) * 2009-04-17 2010-11-04 Denso Corp テストケース生成装置、オブジェクト検査装置、およびプログラム
US9665350B1 (en) * 2009-05-29 2017-05-30 The Mathworks, Inc. Automatic test generation for model-based code coverage

Also Published As

Publication number Publication date
JP7059827B2 (ja) 2022-04-26

Similar Documents

Publication Publication Date Title
US9389849B2 (en) Test case pattern matching
US10664383B2 (en) Automated software program repair of similar code snippets
JP2005302028A (ja) プログラムを計装するプローブ最適化のための方法およびシステム
JP6904043B2 (ja) 未知のプログラムバイナリのための入力発見
US20130081003A1 (en) Selective data flow analysis of bounded regions of computer software applications
WO2016121074A1 (ja) ソフトウェア検査装置
JP2008191963A (ja) ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム
JP2016115175A (ja) ソフトウェアテスト装置およびソフトウェアテストプログラム
JP2009294846A (ja) テストケース生成装置、テストケース生成プログラム、およびテストケース生成方法
US20210389977A1 (en) System migration support apparatus, system migration support method and program
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
US9928089B2 (en) Optimizing software code
KR20150128711A (ko) 컴퓨터 시스템 활동의 트레이스 타임라인을 분석하기 위한 방법 및 시스템
JP7059827B2 (ja) ソースコード生成装置
KR100511870B1 (ko) 소프트웨어 테스트 장치 및 방법
JP5811978B2 (ja) モデルベースの制御装置用のテストケース生成装置およびテストケース生成方法
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JP2015069400A (ja) ソフトウェアテストシステム
JP5755861B2 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JPWO2012049816A1 (ja) モデル検査装置、方法及びプログラム
JP2016126700A (ja) プログラム検証装置、プログラム検証方法及びプログラム検証プログラム
JP4782315B2 (ja) 影響解析装置および方法、記録媒体、プログラム
US20170220450A1 (en) Analytic method and analyzing apparatus
JP4847102B2 (ja) コンピュータプログラムのテストプログラム生成方法
JP2009205239A (ja) ソフトウェア検証システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220328

R151 Written notification of patent or utility model registration

Ref document number: 7059827

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151