トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 プログラムの相関関係検出装置
【発明者】 【氏名】加藤 弘二

【氏名】鈴木 宏幸

【要約】 【課題】共通のソースファイルから複数種類のプログラムを作成するに当たり、デバッグ作業の負担低減・効率化を図る。

【解決手段】仕向けが異なる各プログラムを生成するための構成部分同士を比較することにより、それらプログラムをグループ分けし、そのグループ分けの結果である相関関係抽出結果430をプログラム同士の相関関係を示すものとして外部に出力する。そのため、この抽出結果格納部120の格納内容に基づき、各プログラムの内容が一致しているか相違しているかを正確・容易に把握することが可能となり、デバッグすべき範囲が明確となる。そして、同様の内容について何度もデバッグ作業を行うことを避けることができ、作業負担の軽減および作業効率の向上を図ることができる。
【特許請求の範囲】
【請求項1】 共通のソースファイルから適用対象別に抽出される該ソースファイルの構成部分に基づいて個々に生成されるプログラム同士の相関関係を検出する装置であって、前記ソースファイルから、適用対象別に、各プログラムの生成の基礎となる前記構成部分を抽出する抽出手段と、該抽出手段により抽出された前記構成部分同士を前記プログラム間で比較し、該比較結果に基づき、前記プログラムを前記構成部分が共通するもの別にグループ分けする構成比較手段と、該構成比較手段によるグループ分けの結果を、前記プログラム同士の相関関係を示すものとして外部に出力する出力手段と、を備えたことを特徴とするプログラムの相関関係検出装置。
【請求項2】 前記抽出手段は、ロジックが記述されたロジック部と該ロジックにて使用される定数を定義する定数部とに区別して前記構成部分を抽出し、前記構成比較手段は、前記抽出されたロジック部同士および定数部同士を前記プログラム間で比較し、該比較結果に基づき、前記プログラムを該ロジック部および該定数部が共通するもの別にグループ分けすることを特徴とする請求項1記載のプログラムの相関関係検出装置。
【請求項3】 前記出力手段は、前記グループ分けの結果に加え、前記ロジック部同士の比較結果を出力することを特徴とする請求項2記載のプログラムの相関関係検出装置。
【請求項4】 前記ソースファイルには、前記ロジック部と前記定数部とを区別するための符号が設けられており、前記抽出手段は、前記符号に基づいて、前記ロジック部と前記定数部とを区別することを特徴とする請求項2又は3記載のプログラムの相関関係検出装置。
【発明の詳細な説明】【0001】
【発明の属する技術分野】この発明は、共通のソースファイルから適用対象別に生成されるプログラム同士の相関関係を検出するプログラムの相関関係検出装置に関する。
【0002】
【従来の技術】従来より、例えばエンジンなどの制御対象を制御する実行プログラムはソースファイルを基礎として生成されるが、仕向け地(単に「仕向け」ともいう)毎に異なる制御仕様を夫々実現するプログラムを共通のソースファイルから生成できるよう、それら各仕向け用のプログラムの生成に夫々必要となる構成部分が1つのソースファイルに盛り込まれる。そのソースファイルに基づいて個々の仕向けに対応する実行プログラムを生成するには、個々の仕向けに対応する定数部やロジック部を抽出することが必要であるが、その手法として、ソースファイル中に前処理制御指令を記述し、プリプロセッサを実行するというものがある。プリプロセッサはコンパイルを構成する一連の処理のうちの一つであり、前処理制御指令による指示内容に従って、コンパイルにおける中心的処理の前処理としてソースファイルを書き直す処理である。
【0003】
【発明が解決しようとする課題】しかしながら1つのソースファイルで対応する仕向け数が増加すると、ソースプログラムの構造が複雑化し、各仕向け間での相違を把握することが難しくなる。この場合、異なる仕向けに対応するプログラムに共通部分があってもそのことに気付かずに2重にデバッグ作業を行ってしまうなど、デバッグ作業の効率が悪くなる可能性があり、プログラムの迅速な開発を図る上で好ましくない。
【0004】こうした問題は、仕向け地の異なる装置に夫々適用するための複数種類のプログラムを共通のソースファイルから生成する場合だけでなく、広く、共通のソースファイルから適用対象の異なる複数種類のプログラムを生成する場合には同様に起こりうる。
【0005】本発明は、こうした点を背景としてなされたものであり、共通のソースファイルから複数種類のプログラムを作成するに当たり、デバッグ作業の負担低減・効率化を図ることを目的とする。
【0006】
【課題を解決するための手段及び発明の効果】上記課題を解決するためになされた本発明(請求項1記載)のプログラムの相関関係検出装置においては、抽出手段が、ソースファイルから、適用対象別に、各プログラムの生成の基礎となる構成部分(即ちソースファイルの構成部分)を抽出する。その抽出された構成部分同士を、構成比較手段がプログラム間で比較して、その比較結果に基づき、適用対象を構成部分が共通するもの別にグループ分けする。そして出力手段が、そのグループ分けの結果をプログラム同士の相関関係として外部に出力する。
【0007】即ち、本発明(請求項1)に係るプログラムの相関関係検出装置においては、適用対象別の各プログラムを生成するために必要な構成部分同士を比較することにより、それらのプログラムをグループ分けし、そのグループ分けの結果をプログラム同士の相関関係として外部に出力する。そのため、各プログラムの内容が一致しているか相違しているかを正確・容易に把握することが可能となり、デバッグすべき対象が明確となる。従って、同様の内容について何度もデバッグ作業を行うことを避けることができ、作業負担の軽減および作業効率の向上を図ることができる。
【0008】ところで適用対象別の各プログラムを生成するために必要な構成部分はロジック部と定数部とから構成される。ここでロジック部とはプログラムを構成するロジック(換言すれば、演算子、関数、制御文など用いて行われる手続)が記述された部分であり、定数部とはロジックで用いられる定数を定義する部分である。
【0009】そこで請求項2に記載の様に、抽出手段および構成比較手段を構成すると良い。請求項2記載のプログラムの相関関係検出装置においては、抽出手段が、ロジック部と定数部とに区別してソースファイルの構成部分を抽出し、構成比較手段は、抽出されたロジック部同士および定数部同士をプログラム間で比較し、その比較結果に基づき、プログラムをロジック部および定数部が共通するもの別にグループ分けする。
【0010】また、この様にロジック部同士の比較を行うこととし、そして請求項3記載の様に、出力手段がロジック部同士の比較結果も出力するようにすれば、デバッグ作業の負担軽減・効率向上を更に図ることができる。即ち、最終的に別のグループに分けられたプログラム同士であっても、定数部が相違しているだけでロジック部が共通しているものであれば、ロジック部に関しては、デバッグの際どちらか一方のプログラムについてのみ検査すれば良く、両プログラムについて行う必要はない。そのため、ロジック部同士の比較結果も出力されれば、デバッグすべき範囲が限定され、その結果、デバッグ作業の負担軽減・効率向上がより図られるのである。
【0011】なお、ロジック部と定数部とを区別するには、例えば、ソース行の意味内容を読み取って区別するようにすることも可能であるが、請求項4記載の様にすれば簡便に実現でき好ましい。即ち、ソースファイルには、ロジック部と定数部とを区別するための符号を設けておき、その符号に基づいて、ロジック部と定数部とを区別するよう抽出手段を構成するとよい。
【0012】符号としては、ロジック部と定数部とを識別可能なものであれば良く、例えばロジック部や定数部の開始行や終了行を示す注釈(コメント)文など様々なものが考えられる。
【0013】
【発明の実施の形態】以下に、本発明の一実施例を図面と共に説明する。図1は、本発明のプログラム相関関係検出装置1の構成を示している。このプログラムの相関関係検出装置1は、共通のソースファイルから生成される複数の仕向け別プログラム(具体的には、仕向け地の異なるエンジン制御装置に夫々適用されるプログラム)同士の相違点(即ち相関関係)を抽出するものとして機能するものである。この機能を実現するために、プログラムの相関関係検出装置1は、図1に示す様に、環境設定情報格納部90と、ソースファイル格納部100と、解析処理部110とを備え、外部の抽出結果格納部120に接続されている。
【0014】環境設定情報格納部90は、プログラム間の相関関係の抽出処理を行うに当たり使用される各種の情報(本明細書では、「環境設定情報」という。)を格納している。環境設定情報には、例えば、定数部とロジック部とを区別するためのコメント情報や、複数の仕向けに関する情報や、解析対象であるソースファイルの名称を示すファイル名情報などが含まれている。
【0015】環境設定情報格納部90には、例えば図2に示す様な形式の環境ファイル260として、環境設定情報が格納される。この環境ファイル260においては、定数部分の開始を示すコメント文(”定数開始”)として”/***定数開始***/”と定義され、また、定数部分の終了を示すコメント文(”定数終了”)として”/***ロジック開始***/”と定義されている。
【0016】また、この環境ファイル260では、複数の仕向けに関する情報として、仕向け地を指定するための情報(”仕向情報1”,”仕向情報2”)と、各仕向けを説明するコメント(”仕向情報コメント1”,”仕向情報コメント2”)とが記述されている。
【0017】例えば”仕向情報1”は、仕向けを指定するための識別子(”CMPOPT”)および第1の仕向け(”仕向1”とも記す。)に対応するプログラムを生成するための定義値(”00”)を示す情報であり、換言すればコンパイルオプションで”CMPOPT=00”と事前定義されると”仕向1”に対応するプログラムが生成される、ということを示す情報である。また、”仕向け情報コメント1”は、”仕向1”を説明するコメント文であり、ここでは”仕向 国内”と規定されている。
【0018】同様に、”仕向情報2”は、仕向けを指定するための識別子(”CMPOPT”)および第2の仕向け(”仕向2”とも記す。)に対応するプログラムを生成するための定義値(”01”)を示す情報であり、また、”仕向け情報コメント2”は、”仕向2”を説明するコメント文である。
【0019】なお、図2に示した環境ファイル260では、2つの仕向けについての情報が規定されているが”2つ”に限られるものではない。仕向けの数がこれより多い場合には、それらの各仕向けに関する情報が規定されるものである。そして、環境ファイル260には、当該環境設定情報を用いた解析処理の対象となるソースファイルの名称(例えば”abc.c”)が記述されている。なお、この例示した環境ファイル260では、1つのソースファイル名のみが規定されているが、複数のソースファイル名を規定することも可能である。
【0020】次にソースファイル格納部100は、仕向け別プログラムの生成元となるソースファイルを格納している。このソースファイル格納部100には、多数のソースファイルが格納されており、それぞれソースファイル名で特定可能となっている。例えば、環境ファイル260にて”abc.c”という名称で特定されるソースファイル310などがソースファイル格納部100に格納される。
【0021】解析処理部110は、CPU、ROM、RAMなどからなる周知のコンピュータにより実現されるものであり、詳しくは、環境設定情報読取部10と、仕向け情報入力部20と、プリプロセッサ実行部30と、マクロ抽出部40と、定数・ロジック抽出部50と、定数・ロジック比較部60と、定数・ロジック判定部70と、抽出結果出力部80と、を備えている。これら環境設定情報読取部10〜抽出結果出力部80は、解析処理部110を実現するコンピュータが、その実行プログラムに従って動作することにより実現される。
【0022】環境設定情報読取部10は、上述の環境ファイル260から環境設定情報を読取り、仕向け情報入力部20は、環境設定情報読取部10が読み取った内容(即ち環境設定情報)のうち、各仕向け(例えば”仕向1”、”仕向2”)に関する情報を仕向情報テーブル270に抽出する。
【0023】また仕向け情報入力部20は、環境ファイル260からソースファイル名(例えば”abc.c”)を抽出しファイル情報テーブル280に記録する。なお、本実施例では、1つのソースファイル名のみが環境ファイル260に格納されているため、ファイル情報テーブル280にはそのソースファイル名のみが記録されているが、環境ファイル260に複数のソースファイル名が記録されている場合には、それと同数のソースファイル名が、ファイル情報テーブルに格納されることとなる。
【0024】また仕向け情報入力部20では、環境ファイル260から、「各仕向けに対応するプログラムをコンパイルにより生成する」ためのコンパイルオプションを抽出し、この抽出したコンパイルオプションを含むプリプロオプションファイル290を作成する。プリプロオプションファイル290は、プリプロセッサを実行する際のオプションを規定するものである。
【0025】このプリプロオプションファイル290において、「−O」は、プリプロセッサの結果の出力先を指定するオプションであり、ここではTempFile(テンポラリファイル)として出力すべきことが規定されている。また、「−D」は、所定の識別子を事前定義するためのオプションであり、ここでは”CMPOPT=00”および”CMPOPT=01”と定義すべきことが規定されている。
【0026】プリプロセッサ実行部30は、上記作成されたファイル情報テーブル280およびプリプロオプションファイル290を入力として、プリプロセッサを実行する。具体的には図3に示す様に、ファイル情報テーブル280に規定された名称のソースファイル310から、プリプロオプションファイル290にて規定された事前定義に合致する部分を抽出して、テンポラリファイルとして出力する。この結果、”CMPOPT=00”という事前定義に従って行われる書き換えにより、”仕向1”についてのプログラムを生成するためのテンポラリファイル320が生成され、また、”CMPOPT=01”という事前定義に従って行われる書き換えにより、”仕向2”についてのテンポラリファイル330が生成される。
【0027】マクロ抽出部40は、プリプロセッサの実行結果である各中間ファイル320,330からマクロ情報を抽出し、このうち、環境ファイル260に規定された定数開始のコメント文(”/***定数 開始***/”)および定数終了のコメント文(”/***ロジック 開始***/”)に指定される範囲(図3において破線の枠で示す。)を、定数・ロジック抽出部50が定数部として抽出する。
【0028】定数・ロジック抽出部50は、上記抽出した定数部を、図3に示す様に、ファイル単位仕向情報テーブル340に格納する。また定数・ロジック抽出部50は、未だ抽出されていない部分であって、定数部分と判断された部分以外の部分(図3において一点鎖線の枠で示す。)をロジックとして抽出し、ファイル単位仕向情報テーブル340に格納する。
【0029】ファイル単位仕向情報テーブル340は、ソースファイル毎(図3では”abc.c”のみである)に作成されるものであり、ソースファイル310から各仕向け別に抽出された定数部およびロジック部が格納される。定数・ロジック比較部60は、各仕向け毎に抽出された定数部同士およびロジック部同士の比較(そのテキスト同士が一致するかどうかの判断)を行い、定数部およびロジック部が共通するもの別に、各仕向け別プログラムをグループ分けする。
【0030】この処理は、まず定数部について説明すれば次の如くである。まず最初は、グループが形成されていないので、”仕向1”に対応するプログラムを要素とするグループを設け、それを”グループ1”とする。次に”仕向2”に対応するプログラムの定数部が、”グループ1”に属するプログラムの定数部(即ち”仕向1”に対応する定数部)と一致するかどうかを判断し、その比較結果が”一致”であれば同一グループとして、”不一致”であれば、別グループとして処理する。即ち、”一致”であれば、”仕向2”に対応するプログラムも”グループ1”に属するものとし、”不一致”であれば、別の”グループ2”に属するものとする。図3に示す例では、”仕向1”と”仕向2”とで定数部が異なっているため、”仕向2”のプログラムは”グループ2”に属するものとされている。
【0031】また、ロジック部については次の如くである。まず最初は、グループが形成されていないので、”仕向1”に対応するプログラムを要素とするグループを考え、それを”グループA”とする。次に”仕向2”に対応するプログラムのロジック部が、”グループA”に属するプログラムのロジック部(即ち”仕向1”に対応するロジック部)と一致するかどうかを判断し、その比較結果が”一致”であれば同一グループとして、”不一致”であれば、別グループとして処理する。即ち、”一致”であれば、”仕向2”に対応するプログラムも”グループA”に属するものとし、”不一致”であれば、別の”グループB”に属するものとする。図3に示す例では、”仕向1”と”仕向2”とでロジック部が異なっているため、”仕向2”のプログラムは、”グループB”に属するものとされている。
【0032】定数・ロジック判定部70は、定数部同士の比較に基づくグループ分けおよびロジック部同士の比較に基づくグループ分けの結果をまとめることにより、各仕向け別プログラムをグループ分けする。ここで定数・ロジック比較部60および定数・ロジック判定部70の作動について、更に図4を用いて説明する。
【0033】まず、仕向け先”仕向■”〜”仕向■”に各々対応する複数種類のプログラム360〜420を生成するためのソースファイルとして”ファイル1”350がある。”ファイル1”350には、各仕向け”仕向■”〜”仕向■”に対応する内容が記述されている。
【0034】図4において”(定数)”は定数部であることを示しており、これに続いて、対応する仕向け先が示されている。例えば”(定数)仕向■”は、”仕向■”、”仕向■”及び”仕向■”に夫々対応するプログラム360,380,400の生成に共通に使用される定数部であり、”(定数)仕向■”は、”仕向■”に対応するプログラム370の生成に使用される定数部である。また”(ロジック)”は、ロジック部であることを示しており、これに続いて、対応する仕向け先が示されている。例えば”(ロジック)仕向■”は、”仕向■”、”仕向■”、”仕向■”、”仕向■”及び”仕向■”に夫々対応するプログラム360,380,390,410,420の生成に共通に使用されるロジック部であり、”(ロジック)仕向■”は、”仕向■”に対応するプログラム370の生成に使用されるロジック部である。
【0035】この”ファイル1”350に対してプリプロセッサ実行部30が作用すると、その結果として、各仕向け先毎の中間ファイル360〜420が得られる。この結果から定数・ロジック抽出部50により抽出された定数部同士およびロジック部同士を、定数・ロジック比較部60が比較して、その結果に基づきプログラム360〜420のグループ分けを行い、それに基づいて、定数・ロジック判定部70が各仕向け別のプログラム360〜420についての最終的なグループ分けを行う。
【0036】まず、定数・ロジック比較部60は以下の様に機能する。即ち、”仕向■”のプログラム360が”グループ1”に属するものとされる。そして、”仕向■”のプログラム360の定数部と一致するものを検索すると、”仕向■”及び”仕向■”のプログラム380,400の定数部が該当することが検出され、結果として、”仕向■”、”仕向■”及び”仕向■”のプログラム360,380,400が同一グループ(”グループ1”)となる。
【0037】次に”仕向■”のプログラム370の定数部は”仕向■”のプログラム360の定数部と不一致であり未だどのグループにも設定されていないので、”仕向■”のプログラム370を”グループ2”に属するものとする。そして、未だどのグループにも属していないプログラムの定数部について、”仕向■”のプログラム370の定数部と一致するものを検索すると、何れも一致しないので、結果として”仕向■”に対応するプログラム370のみで1つのグループ(グループ2)が構成されることとなる。
【0038】次に”仕向■”のプログラム380については既に”グループ1”に仕分けされているのでこれ以上の比較は行わない。次に”仕向■”のプログラム390の定数部は”仕向■”〜”仕向■”の何れのプログラム360〜380の定数部とも不一致であり、当該”仕向■”のプログラム390は、未だどのグループにも設定されていないので、”グループ4”に属するものとする。そして、未だどのグループに属していないプログラムの定数部について、”仕向■”に対応するプログラム390の定数部と一致するものを検索すると、何れも一致しないので、結果として”仕向■”のプログラム390のみで1つのグループ(グループ4)が構成されることとなる。
【0039】”仕向■”のプログラム400については既に”グループ1”に仕分けされているので比較は行わない。次に”仕向■”に対応するプログラム410については、”仕向■”や”仕向■”と同様にして、結果として、それのみで1つのグループ(グループ6)を構成することとなる。また、”仕向■”に対応するプログラム420についても同様であり、それのみで1つのグループ(グループ7)を構成することとなる。
【0040】以上の様にして各仕向毎のプログラム360〜420が、定数部同士の比較結果に基づきグループ分けされるが、ロジック部についても同様であり、まず”仕向■”のプログラム360は”グループA”に属するものとされる。次に”仕向■”に対応するプログラム370のロジック部は、”仕向■”に対応するプログラム360のロジック部と不一致であるので、”仕向■”に対応するプログラム370は”グループA”に属するものとはされず、新たな”グループB”に属するものとされる。
【0041】また”仕向■”、”仕向■”、”仕向■”及び”仕向■”に対応するプログラム380,390,410,420のロジック部は”仕向■”に対応するプログラム360のロジック部と一致するので、これら”仕向■”、”仕向■”、”仕向■”及び”仕向■”に各々対応するプログラム380,390,410,420は”グループA”に属するものとなる。一方”仕向■”に対応するプログラム400のロジック部は”仕向■”〜”仕向■”のプログラム360〜390のロジック部の何れとも一致しないので、”仕向■”に対応するプログラム400は”グループC”に属するものとされる。
【0042】定数・ロジック比較部60による処理が以上の様に為されると、定数・ロジック判定部70が以下の様に機能する。即ち、ロジック部に着目して分けた各グループ毎に、基準となる仕向けのプログラムを1つ(ここでは一番最初の”仕向■”に対応するプログラム360)を選択し、この基準のプログラム360と同一グループとなっているものを抽出する。
【0043】まず”グループA”において”仕向■”に対応するプログラム360を基準として選択するものとすると、これと同一グループとなっているプログラムは、”仕向■”、”仕向■”、”仕向■”及び”仕向■”に夫々対応するプログラム380,390,410,420である。
【0044】そして、このうち定数部同士の比較に基づき行われたグループ分けの結果、同一グループとなっているプログラムを、同一グループに属するものとして取り扱う。例えば、”仕向■”のプログラム360と”仕向■”のプログラム380との関係においては、それらのロジック部が同一であり、しかもそれらの定数部も同一であるから、図4に示す相関関係抽出結果430の様に、”仕向■”および”仕向■”のプログラム360,380は、同一のグループ(”グループA”)に属するものとする。
【0045】一方、”仕向■”に対応するプログラム360と、”仕向■”、”仕向■”および”仕向■”に夫々対応するプログラム390,410,420との関係においては、それらのロジック部が同一であるが、定数部は同一でない。そこで、定数部同士の比較に基づき形成されたグループの名称をロジック部同士の比較に基づき形成されたグループの名称と組み合わせることにより、”仕向■”、”仕向■”および”仕向■”に夫々対応するプログラム390,410,420を”仕向■”のプログラム360と区別する。即ち、最終的には、図4に示す相関関係抽出結果430の様に、”仕向■”、”仕向■”および”仕向■”の各仕向け別のプログラム390,410,420を、夫々”グループA4”、”グループA6”、”グループA7”に属するものとする。
【0046】また”グループB”においては”仕向■”のプログラム370のみがその要素となっているので、最終的に”仕向■”のプログラム370は、”グループB”に属するものとされ、そして同様にして、”仕向■”のプログラム400は、”グループC”に属するものとされる。以上が、定数・ロジック判定部70により行われるグループ分けである。
【0047】そして、抽出結果出力部80が、定数・ロジック判定部70によるグループ分けの結果(即ち相関関係抽出結果430)を、抽出結果格納部120に出力する。つまり、抽出結果格納部120は、定数部とロジック部との組合せに基づいて仕向け別のプログラム360〜420についてされたグループ分けの結果を、格納するものである。
【0048】この様に構成されたプログラムの相関関係検出装置1の動作について、図5のフローチャートを用いて説明する。このプログラムの相関関係検出装置1を作動させると、図5のフローチャートに示す相関関係抽出処理が実行される。この相関関係抽出処理が起動されると、まず最初に環境設定情報格納部90から環境設定情報が読み込まれ(S120)、定数部とロジック部とを区別するためのコメント情報(”/***定数開始***/”、”/***ロジック開始***/”)などが取得される。取得された情報のうち、各仕向けを指定するための識別子(即ちCMPOPT)及びその定義値や各仕向けについてのコメントについては、仕向情報テーブル270に記憶される(S130)。また、処理対象のソースファイル名についてはファイル情報テーブル280に記録される(S140)。また各仕向けを指定するための識別子およびその定義値に基づいて、プリプロオプションファイル290が作成される(S150)。
【0049】上記作成されたファイル情報テーブル280およびプリプロオプションファイル290を入力としてプリプロセッサが実行され(S160)、プリプロセッサの実行結果である各中間ファイル320,330からマクロ情報を抽出する(S170)。そして、定数部を抽出してファイル単位仕向情報テーブル340に格納する(S180)と共に、ロジック部を抽出してファイル単位仕向情報テーブル340に格納する(S190)。
【0050】ここで、S160〜S190の処理が、全仕向けについて完了したかどうかを判断し(S200)、完了していなければ(S200:NO)、S160に戻り、S160〜S190の処理を再び行う。一方、全仕向けについてS160〜S190完了していると判断されれば(S200:YES)、各仕向け間において定数部を比較してグループ分けを行う(S210)。また、ロジック部についても各仕向け別プログラムにおいて比較を行いグループ分けを行う(S220)。そしてこの比較結果を判定することにより、各仕向け別プログラムのグループ分けを行う(S230)。以上の処理により、1つのソースファイルについて、各仕向け別プログラム同士の相関関係が抽出されることとなる。
【0051】この様に、あるソースファイルについて各仕向け別プログラム間の相関関係が抽出されると、これが全ソースファイルについて完了したかどうかを判断する(S240)。そして、全ソースファイルについて完了していない場合には(S240:NO)、S150の処理に戻り、S150からS230までの処理を再び行う。
【0052】一方、全ソースファイルについて、仕向け別プログラム同士の相関関係の抽出が完了したものと判断されると(S240:YES)、全ソースファイルについての相関関係抽出結果430をまとめ、抽出結果格納部120に出力して格納させ(S250)、その後、相関関係抽出処理を終了する。
【0053】以上の様に動作するプログラムの相関関係検出装置1においては、例えば図4に示す様に、適用対象(即ち仕向け別のエンジン制御装置)が異なる各プログラムを生成するための構成部分同士を比較することにより、それらプログラムをグループ分けし、そのグループ分けの結果である相関関係抽出結果430をプログラム同士の相関関係を示すものとして外部の抽出結果格納部120に出力する。そのため、この抽出結果格納部120の格納内容に基づき、各プログラムの内容が一致しているか相違しているかを正確・容易に把握することが可能となり、デバッグすべき範囲が明確となる。従って、同様の内容について何度もデバッグ作業を行うことを避けることができ、作業負担の軽減および作業効率の向上を図ることができる。
【0054】また、ソースファイルの構成部分の抽出はロジック部と定数部とを区別して行うので、ロジック部同士の比較および定数部同士の比較を行うことができ、正確なグループ分けが可能である。また、相関関係抽出結果430においては、最終的なグループ分けの結果が、ロジック部同士の比較結果を示す記号(”A”,”B”など)と定数部同士の比較結果を示す記号(”1”,”2”など)との組合せで表されている。そして、かかる相関関係抽出結果430が、抽出結果格納部120に出力されることにより、ロジック部同士の比較結果がグループ分けの結果と共に外部に出力されることになる。そのため、プログラム間でロジック部が共通しているかどうかを簡単に認識でき、ロジック部が共通している場合にはデバッグすべき範囲が限定され、その作業負担軽減・効率向上が更に図られる。
【0055】また、ソースファイルには、ロジック部と定数部とを区別するための符号として、”/***定数開始***/”、”/***ロジック開始***/”などのコメント文が記載されており、その符号に基づいて、ロジック部と定数部とを区別するようにしている。そのため、ロジック部と定数部との区別を容易に行うことができる。
【0056】なお、本実施例において、環境設定情報読取部10、仕向け情報入力部20、プリプロセッサ実行部30、マクロ抽出部40および定数・ロジック抽出部50により、請求項の「抽出手段」が構成されている。また、定数・ロジック比較部60および定数・ロジック判定部70により、請求項の「構成比較手段」が構成されており、抽出結果出力部80が請求項の「出力手段」として機能している。
【0057】以上、本発明の一実施例について説明したが、本発明は上記実施例に限定されるものではなく、種々の態様をとることができる。例えば、上記実施例では本発明にかかるプログラムの相関関係検出装置を、仕向け地別のエンジン制御装置に夫々適用されるプログラム同士の相関関係を検出するものとして説明したが、これに限られるものではない。
【0058】また、上記実施例では、検出したプログラム同士の相関関係を単に抽出結果格納部120に出力するものとして説明したが、これに限られるものではなく、例えば、画面に表示するようにしても良い。
【出願人】 【識別番号】000004260
【氏名又は名称】株式会社デンソー
【出願日】 平成12年9月29日(2000.9.29)
【代理人】 【識別番号】100082500
【弁理士】
【氏名又は名称】足立 勉
【公開番号】 特開2002−108652(P2002−108652A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−299460(P2000−299460)