(57)【要約】【課題】複雑なプログラムであっても、コストの低減を図りながら当該プログラムの作成を支援することができる方法を提供する。【解決手段】情報ソフト２１に含まれている複数のコードから不要な因子が除去されて複数の基礎コードが作成される。各基礎コードから所定の抽出則にしたがって複数の機能のそれぞれに関する複数の指定情報が抽出される。抽出された指定情報は、生成予定の新規検査ソフト２２２に含まれる機能または処理内容を間接的または直接的にユーザに選定させるために用いられる。当該選定により定義される構成要素によって構成されるフローチャートをユーザに作成させ、このフローチャートに含まれる各構成要素に関連付けられている関数が、テンプレート（所定の雛型に記入されることにより、新規検査ソフト２２２を記述する新規のコードが自動的に生成される。【選択図】  図２
2018055389.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの作成を支援する方法であって、
コンパイル可能な既存プログラムに含まれている複数の機能を記述する複数のコードから不要な因子を除去することにより複数の基礎コードを作成し、前記複数の基礎コードのそれぞれから所定の抽出則にしたがって前記複数の機能のそれぞれに関連する複数の指定情報を抽出する第１処理と、
複数の記号の中から少なくとも１つの記号を選定させ、かつ、複数の指定情報の中から少なくとも１つの指定情報を選定させることにより、記号および機能により定義され、かつ、複数の関数のそれぞれに関連付けられている複数の構成要素のうち当該選定された記号と当該選定された指定情報に関連する機能とにより定義される少なくとも２つの構成要素からなる新規のフローチャートを作成させる第２処理と、
前記複数の関数のうち、前記少なくとも２つの構成要素のそれぞれに関連付けられている少なくとも２つの関数を所定の雛型に記入することにより、新規のプログラムを記述する新規のコードを生成する第３処理と、を実行することを特徴とするプログラム作成支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの作成を支援する方法に関する。
【背景技術】
【０００２】
車両検査装置を用いて、車両に搭載されている複数のＥＣＵのそれぞれの検査プログラムは、スキルに優れ、かつ、知識および経験が豊かなエキスパートまたはプログラマーにより作成されるのが通常である。従来、プログラムフローチャートの図形データからブロックの種類および接続関係を自動的に読み取ってブロックの配列順序を自動的に決定し、各ブロックを対応する命令語に変換することにより、比較的簡単な共通仕様のプログラムを自動生成する方法が提案されている（例えば、特許文献１〜７参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２４２４７９号公報
【特許文献２】特開２０００−３３９１５０号公報
【特許文献３】特開平１１−３５３１６９号公報
【特許文献４】国際公開公報  ＷＯ２００７／０３７３１０号
【特許文献５】特開平６−３１８１５１号公報
【特許文献６】特開平６−２１４７７７号公報
【特許文献７】特開平９−１９８２３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、例えば新機種の車両の複雑な検査プログラムは、対応可能な機種およびＥＣＵが限定されたスタンドアローンのプログラムとして作成されるにとどまり、しかもその作成コストがかかる。
【０００５】
そこで、本発明は、複雑なプログラムであっても、コストの低減を図りながら当該プログラムの作成を支援することができる方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のプログラム作成支援方法は、コンパイル可能な既存プログラムに含まれている複数の機能を記述する複数のコードから不要な因子を除去することにより複数の基礎コードを作成し、前記複数の基礎コードのそれぞれから所定の抽出則にしたがって前記複数の機能のそれぞれに関連する複数の指定情報を抽出する第１処理と、複数の記号の中から少なくとも１つの記号を選定させ、かつ、複数の指定情報の中から少なくとも１つの指定情報を選定させることにより、記号および機能により定義され、かつ、複数の関数のそれぞれに関連付けられている複数の構成要素のうち当該選定された記号と当該選定された指定情報に関連する機能とにより定義される少なくとも２つの構成要素からなる新規のフローチャートを作成させる第２処理と、前記複数の関数のうち、前記少なくとも２つの構成要素のそれぞれに関連付けられている少なくとも２つの関数を所定の雛型に記入することにより、新規のプログラムを記述する新規のコードを生成する第３処理と、を実行することを特徴とする。
【０００７】
本発明のプログラム作成支援方法によれば、既存プログラムに含まれている複数のコードから不要な因子が除去されて複数の基礎コードが作成される。このため、不要な因子によって所定の抽出則の適用が阻害される事態が防止され、複数の基礎コードのそれぞれから当該所定の抽出則にしたがって複数の機能のそれぞれに関する複数の指定情報が確実に抽出される。また、既存プログラムはコンパイル可能であるため、実行不可能である無意味なコードに係る指定情報が抽出されることが防止される。
【０００８】
抽出された指定情報は、新規に作成されるプログラムに含まれる機能または処理内容を間接的または直接的にユーザに選定させるために用いられる。すなわち、記号の選定と指定情報の選定を通じた機能の選定とにより、当該選定記号および当該選定機能により定義される構成要素によって構成されるフローチャートをユーザに作成させることができる。このため、フローチャート作成時のユーザの誤入力および誤記が確実に回避され、フローチャートの作成精度の向上が図られる。
【０００９】
そして、作成されたフローチャートに含まれる各構成要素に関連付けられている関数が、所定の雛型に記入されることにより、新規のプログラムを記述する新規のコードが自動的に生成される。
【００１０】
これにより、ユーザのプログラム作成スキルがさほど高くなくとも、ある程度のプログラム仕様の理解があれば、仕様通りの品質の高いプログラムが生成されるので、当該プログラムの作成コストの低減が図られる。
【図面の簡単な説明】
【００１１】
【図１】ＬＥＴソフトが格納されている車両検査装置の構成に関する説明図。
【図２】検査ソフトの構成に関する説明図。
【図３】本発明の一実施形態としてのプログラム作成支援方法に関する説明図。
【図４Ａ】基礎コード作成・指定情報抽出の第１例に関する説明図。
【図４Ｂ】基礎コード作成・指定情報抽出の第２例に関する説明図。
【図５】フローチャート作成支援用のインターフェースの例示図。
【図６Ａ】フローチャート図形の関数化の例示図。
【図６Ｂ】新規プログラムコードのテンプレート（雛型）の例示図。
【図７Ａ】作成されたフローチャートに基づく関数名の割り当て結果および引数の抽出結果の例示図。
【図７Ｂ】連番関数の例示図。
【図７Ｃ】新規のプログラムコードに関する例示図。
【図８Ａ】フローチャートの選択ルートの第１例示図。
【図８Ｂ】フローチャートの選択ルートの第２例示図。
【発明を実施するための形態】
【００１２】
（車両検査装置の構成）
本発明の一実施形態としてのプログラム作成支援方法について説明する。本実施形態で生成対象となるプログラムは、図１に示されている車両４２の諸機能を診断するための車両検査装置１０（以下、適宜ＬＥＴ（Ｌｉｎｅ  Ｅｎｄ  Ｔｅｓｔｅｒ）という。）において用いられるＬＥＴソフト２０の一部（新規検査ソフト２２２（図２参照））である。車両検査装置１０は、機能要素として入力・出力機能要素１１、車両通信機能要素１２、無線通信機能要素１３、ファイル機能要素１４および動作管理機能要素１５を備えている。各機能要素は、ＬＥＴソフト２０（ソフトウェア）と、ＬＥＴソフト２０に応じた演算処理を実行するプロセッサまたはプロセッサコア（ハードウェア）と、により構成されている。
【００１３】
入力・出力機能要素１１は、検査作業者４１に対してディスプレイ（車両検査装置１０の構成要素）を通じて車両４２の諸機能を検査するために必要な情報および検査結果等の情報を出力するための出力インターフェースと、検査作業者４１にボタン（車両検査装置１０の構成要素）を通じて当該検査のための操作・指示を入力させるための入力インターフェースと、を提供する。
【００１４】
車両通信機能要素１２は、検査対象である車両４２、例えば車両４２に搭載されている複数のＥＣＵ（電子制御ユニット）のそれぞれと、有線でデータ通信を実行する。
【００１５】
無線通信機能要素１３は、外部機器４３と無線でデータ通信を実行する。外部機器４３には、車両４２の検査設備に設置され、車両４２との間で当該設備による検査データを通信するためのＱＡ機が含まれている。
【００１６】
ファイル機能要素１４は、設定、検査実施／工程情報およびパラメータなどの情報を表わす入力ファイル４４１を読み込み、検査結果を表わす出力ファイル４４２を作成する。
【００１７】
動作管理機能要素１５は、ファイル機能要素１４により読み込まれた情報に基づき、検査ソフト２２に対して起動・動作指示を出力する。
【００１８】
（プログラム作成支援用アプリの構成）
図２に示されているように、本発明のプログラム作成支援方法を実行するアプリ１は、コンピュータにインストールされることにより、プログラム機能（フローチャートのフォーマットを規定し、プログラム関数２３と紐付けるためのデータ）を取得した上で、フローチャート作成支援処理２、ソフトウェア自動生成処理４および検証設定自動生成処理６を実行する機能を当該コンピュータに与えるアプリケーションソフトウェアである。
【００１９】
車両検査装置１０の前記諸機能を実現するＬＥＴソフト２０は、情報ソフト２１、複数の既存検査ソフト２２１（既存プログラム）、複数の新規検査ソフト２２２（新規プログラム）、プログラム関数２３、検査ソフトベース２４、設定ファイル２５、システム２６およびＯＳ２８（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）により構成されている。既存検査ソフト２２１および新規検査ソフト２２２を適宜まとめてまたは区別せずに「検査ソフト２２」という。
【００２０】
情報ソフト２１は、検査ソフト２２で共通する指定情報または汎用情報が定義されている。情報ソフト２１は、車両４２に搭載されている各ＥＣＵと通信し、ＥＣＵからの返信結果に応じて判定を実行する。車両４２のＥＣＵ情報などは、検査ソフト２２で共通で使用されるため、独立したファイルとなっている。情報ソフト２１は、複数の検査ソフト２２のそれぞれとの間で連動して、当該複数の検査ソフト２２のそれぞれを動作させる際の情報をまとめる。「ＬＥＴ情報」により、検査ソフト２２との間で連動して動作する際に使用するグローバル変数のほか、検査ソフト２２に対して共通して使用される車両４２の状況（エンジン回転数およびエンジン冷却水温など）を表わすグローバル変数が定義されている。「車両情報」により、検査ソフト２２において車両４２の各ＥＣＵとの間の通信に必要なパラメータ（アドレス、リトライ回数、タイムアウト時間など）およびコマンド情報（コマンドデータおよびコマンドサイズなど）が定義されている。同様に「設備情報」により、検査ソフト２２において各設備またはその外部機器４３との間の通信に必要なパラメータおよびコマンド情報が定義されている。
【００２１】
検査ソフト２２は、検査ソフトベース２４を継承して作成される。検査ソフト２２は、情報ソフト２１の情報を検査ソフトベース２４の関数に渡して処理を実行していくことで、種々の検査を実行する。
【００２２】
検査ソフトベース２４では、検査ソフト２２で共通する処理が関数化されている。
【００２３】
設定ファイル２５は、アプリ１の検証設定自動生成処理６によって自動設定される。設定ファイル２５に対応する設定ファイル３５が、アプリ１の検証設定自動生成処理６によって自動設定され、擬似検証器３０に付与される。
【００２４】
システム２６は、車両検査装置１０のディスプレイにおける画像出力および車両４２との通信などの制御を実行する。
【００２５】
（機能）
アプリ１のフローチャート作成支援処理２によって「第１処理」が実行される（図３／ＳＴＥＰ０２）。詳細には、情報ソフト２１に含まれている複数の機能を記述する複数のコードから不要な因子が除去されることにより、複数の基礎コードが作成される。複数の基礎コードのそれぞれから所定の抽出則にしたがって複数の機能のそれぞれに関連する複数の指定情報が抽出される。抽出された指定情報はフローチャート作成支援処理２に保持される。
【００２６】
不要な因子の除去とは、プログラマーによるコードの書き方の相違を解消することを意味し、当該相違が勘案された形でアルゴリズムを構築するための処理である。具体的には、「空白」が、ソースコードとして必要な空白であるか、可読性を向上させるためなどの不要な空白であるかが区別される必要がある。「改行」が、前行に連続する命令文のためであるか、前行から独立した命令文であるかが区別される必要がある。「変数」および「定数」の値をコードから予測する必要がある。プログラム動作に関係ない「コメント」を削除する必要がある。
【００２７】
例えば、図４Ａ上側に示されているコードから、第１行のコメント「// コマンド」が削除されることで、図４Ａ下側に示されているように第２行のコード「command=SetCommand(“Read",3,1,2,3);」からなる基礎コードが作成される。そして、この基礎コードからコマンド名「Read」が指定情報として抽出され、フローチャート作成支援処理２に保持される。
【００２８】
図４Ｂ上側に示されているコードから、第２行と第３行のコードが一つの命令分であることから第２行および第３行の改行が削除され、第１行のコード「const int size = 3;」に応じて第３行のコード「SetCommand( “Read",  size, 1, 2, 3 ) );」の「size」の箇所が定数値「3」に置換されることで、図４Ｂ下側に示されている基礎コードが作成される。基礎コードから、元のコードの第３行のコード「SetCommand( “Read",  size, 1, 2, 3 ) );」からコマンド名「Read」が指定情報として抽出され、フローチャート作成支援処理２に保持される。
【００２９】
アプリ１のフローチャート作成支援処理２によって「第２処理」が実行される（図３／ＳＴＥＰ０４）。詳細には、出力インターフェースを通じて複数の記号を提供することで、当該複数の記号の中から入力インターフェースを通じて任意の記号をユーザに選定させる。同様に、出力インターフェースを通じて複数の指定情報（フローチャート作成支援処理２に保持されている。）を提供することで、当該複数の指定情報の中から入力インターフェースを通じて任意の指定情報をユーザに選定させる。記号の選定と、指定情報の選定に応じた機能の間接的な選定とにより定義される構成要素によって定義されるフローチャートが作成される。
【００３０】
例えば、アプリ１がインストールされているコンピュータまたは情報端末のディスプレイ（出力インターフェースを構成する。）に図５に示されているフローチャート作成支援用の画面が表示される。この画面には、記号選択欄Ｘ１のほか、機能または処理内容の大分類選択欄Ｘ２、中分類選択欄Ｘ３および小分類選択欄Ｘ４、指定情報選択欄Ｘ５ならびに確定ボタンＸ６が表示されている。記号選択欄Ｘ１には、処理、定義済み処理、準備、判断、手操作入力、内部記憶、記憶データ、端子および結合子等の機能種類に応じた複数の複数の記号が表示されている。タッチパネルボタン等の入力インターフェースを通じて、記号選択欄Ｘ１の中から１つの記号が選定される。続いて、選択欄Ｘ２〜Ｘ５に表示されるプルダウンメニューの中から大分類、中分類および小分類ならびに指定情報が順に選択される。そして、確定ボタンＸ６が操作されることにより、選択された記号と、選択された大分類、中分類、小分類および指定情報の組み合わせにより定まる機能とにより定義される構成要素が選定される。
【００３１】
既存検査ソフト２２１およびそのフローチャートから抽出されたフローチャートの記号および機能により定義され複数の機能のそれぞれを表わす複数の構成要素（例えば５００以上の構成要素）は予め関数化され、構成要素および関数が関連付けられてプログラム関数２３に格納されている。例えば、図６Ａの各段右欄に示されている機能により定義されている各段左欄に示されている構成要素に対して、各段中欄に示されている関数群が予め割り当てられている。新規検査ソフト２２２のテンプレートまたは雛型がプログラム関数２３に格納されている。例えば、図６Ｂに示されているようなテンプレートが用意される。「{?}」が関数ポインタの配列に対して用意されている。
【００３２】
前記のように構成要素の選定作業が複数回繰り返されることにより、例えば、図７Ａ左側に示されているような構成要素ＳＴＥＰ２１〜ＳＴＥＰ２４を含んでいるフローチャートが作成される。
【００３３】
そして、アプリ１のソフトウェア自動生成処理４によって「第３処理」が実行される（図３／ＳＴＥＰ０６）。具体的には、複数の関数のうち、新規に作成されたフローチャートに含まれている各構成要素に関連付けられている各関数がテンプレート（所定の雛型）に記入されることにより、新規のプログラムを記述する新規のコードが生成される。
【００３４】
まず、フローチャートを構成する複数の構成要素のそれぞれに対して数番（連番）が割り当てられ、各構成要素の記号および機能から関数名が割り出されて、その引数が抽出される。図７Ａ左側に示されているフローチャートを構成するＳＴＥＰ２１〜２４のそれぞれに対して、図７Ａ右側の表左欄に示されている数番１〜４（および表右欄に示されているこれに続く数番）のそれぞれが割り当てられ、表左中欄に示されている関数名が割り出され、かつ、表右中欄に示されている引数が抽出される。
【００３５】
関数名および引数が割り宛てられた数番に基づき、当該数番の関数が自動生成される。これにより、図７Ｂに示されている関数が生成される。文「int F●(int*x)」の「●」の箇所が数番に該当する。文「return Func_A(2, x, 0);」の「Func_A」の箇所が関数名に該当し、「2」が次に実行される関数の数番に該当し、「x」および「0」が引数に該当する。文「printf(“%d”,*x);」は、あらかじめ用意された関数群では不足する機能を補完するために直接記入されたコードに該当する。
【００３６】
実行コードの関数ポインタに、関数のアドレスが記入される。これにより、例えば図６Ｂに示されているテンプレートの関数ポインタ「(*fp[?])」および「{?}」のそれぞれに、図７Ｂに示されている関数の数に１を足した数「5」および「0, &F1, &F2, &F3, &F4」のそれぞれが記入されることにより、図７Ｃに示されているコードにより記述される新規のプログラムが生成される。
【００３７】
アプリ１の検証設定自動生成処理により、設定ファイル２５および３５が生成され、車両検査装置１０および擬似検証器３０のそれぞれに格納される。設定ファイル２５には、動作対象である検査ソフト、タイムアウト時間の設定および検査ソフトの判定値などが含まれている。設定ファイル３５には、検査対象であるＥＣＵ、使用されるコマンドおよびコマンドに対するレスポンス（疑似センサによる測定値）などが含まれている。
【００３８】
生成された新規の検査ソフト２２２の仕様が計画通りの仕様であるか否かを確認するため、この検査ソフト２２２により実行される一連の処理を表わすフローチャートにおける全ルートの通信検証が実行される。この検証に際して、車両検査装置１０は、車両４２ではなく、擬似的な車両として擬似検証器３０に接続される。フローチャートのルートを作業者が選択していくと、そのルートの図形・矢印の色彩が変化していき、そのルートを通るように設定を自動で計算する。
【００３９】
ＰＣのディスプレイにフローチャートが表示される。これにより、例えば図８Ａ左側および図８Ｂ左側のそれぞれに示されているフローチャートがディスプレイに表示される。ＰＣのキーボードまたはマウス等の操作を通じてフローチャートのルートが選択される。これにより、例えば図８Ａ左側に示されているように、処理ＳＴＥＰ４１、分岐ＳＴＥＰ４２および処理ＳＴＥＰ４３を順に経るルートが選択され、あるいは、図８Ｂ左側に示されているように、処理ＳＴＥＰ４１、分岐ＳＴＥＰ４２および処理ＳＴＥＰ４４を順に経るルートが選択される。図７Ａ左側のルート選定に応じて、図７Ａ右側の表に示されているように変遷する状況のシミュレーション結果がディスプレイに表示される。選択したルート通りに車両検査装置１０および擬似検証器３０が動作するような設定ファイル２５と設定ファイル３５が自動生成される。車両検査装置１０に設定ファイル２５を、擬似検証器３０に設定ファイル３５を入れ込んで動作させることにより、検査ソフトが意図する仕様通りに生成されているか否かをユーザに確認させることができる。
【００４０】
（作用効果）
本発明のプログラム作成支援方法によれば、情報ソフト２１に含まれている複数のコードから不要な因子が除去されて複数の基礎コードが作成される（図４Ａおよび図４Ｂ参照）。このため、不要な因子によって所定の抽出則の適用が阻害される事態が防止され、複数の基礎コードのそれぞれから当該所定の抽出則にしたがって複数の機能のそれぞれに関する複数の指定情報が確実に抽出される。また、既存プログラムはコンパイル可能であるため、実行不可能である無意味なコードに係る指定情報が抽出されることが防止される。
【００４１】
抽出された指定情報は、生成予定の新規検査ソフト２２２に含まれる機能または処理内容を間接的または直接的にユーザに選定させるために用いられる（図５参照）。すなわち、記号の選定と指定情報の選定を通じた機能の選定とにより、当該選定記号および当該選定機能により定義される構成要素によって構成されるフローチャートをユーザに作成させることができる。このため、フローチャート作成時のユーザの誤入力および誤記が確実に回避され、フローチャートの作成精度の向上が図られる。
【００４２】
そして、作成されたフローチャート（図７Ａ左側参照）に含まれる各構成要素に関連付けられている関数（図７Ａ右側参照）が、テンプレート（所定の雛型（図６Ｂ参照））に記入されることにより、新規検査ソフト２２２を記述する新規のコードが自動的に生成される（図７Ｃ参照）。
【００４３】
これにより、ユーザのプログラム作成スキルがさほど高くなくとも、ある程度のプログラム仕様の理解があれば、仕様通りの品質の高いプログラムが生成されるので、当該プログラムの作成コストの低減が図られる。
【符号の説明】
【００４４】
１‥アプリ、２‥フローチャート作成支援処理、４‥ソフトウェア自動生成処理、６‥検証設定自動生成処理、１０‥車両検査装置（ＬＥＴ）、１１‥入力・出力機能要素、１２‥車両通信機能要素、１３‥無線通信機能要素、１４‥ファイル機能要素、１５‥動作管理機能要素、２０‥ＬＥＴソフト、２１‥情報ソフト、２２‥検査ソフト、２２１‥既存検査ソフト（既存プログラム）、２２２‥新規検査ソフト（新規プログラム）、２３‥プログラム関数、２４‥検査ソフトベース、２５‥設定ファイル、２６‥システム、２８‥ＯＳ、３０‥擬似検証器、３５‥設定ファイル、４１‥検査作業者、４２‥車両（検査対象機器）、４３‥外部機器、４４１‥入力ファイル、４４２‥出力ファイル。
【図１】
2018055389.tif 000003
【図２】
2018055389.tif 000004
【図３】
2018055389.tif 000005
【図４Ａ】
2018055389.tif 000006
【図４Ｂ】
2018055389.tif 000007
【図５】
2018055389.tif 000008
【図６Ａ】
2018055389.tif 000009
【図６Ｂ】
2018055389.tif 000010
【図７Ａ】
2018055389.tif 000011
【図７Ｂ】
2018055389.tif 000012
【図７Ｃ】
2018055389.tif 000013
【図８Ａ】
2018055389.tif 000014
【図８Ｂ】
2018055389.tif 000015