(57)【要約】【課題】作成されたソフトウェアにおける定数名の誤りを発見できるようにする。【解決手段】使用する変数２１と、この変数２１に対して割り当てられた定数名２２と、を定義したデータディクショナリ１７に基いて作成されたプログラム１９に対し、  プログラム１９で使用した変数２１と、この変数２１の値として使用した定数名２２とを抽出する定数名抽出処理５５と、  定数名抽出処理５５で抽出された定数名２２と、データディクショナリ１７とを対比して、「その変数２１のものではない定数名２２が使われているかどうか」を調べる対比処理５６と、  対比処理５６での対比の結果、定数名２２が一致しないことにより、変数２１に対して間違った定数名２２が使用されていると判断した場合に、警告を発生する警告発生処理５７と、を行わせるようにする。【選択図】図８
2015191492.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも、使用する全ての変数と、該各変数が取り得る複数の値の各々に対して割り当てられた定数名と、を定義して登録したデータディクショナリに基いて作成されたプログラムまたは作成中のプログラムに対し、
該プログラムで使用した変数と、該変数の値として使用した定数名とを抽出する定数名抽出処理と、
該定数名抽出処理で抽出された定数名と、前記データディクショナリとを対比して、「その変数のものではない定数名が使われているかどうか」を調べる対比処理と、
該対比処理での対比の結果、定数名が一致しないことにより、変数に対して間違った定数名が使用されていると判断した場合に、警告を発生する警告発生処理と、を行うことを特徴とする変数チェック方法。
【請求項２】
請求項１に記載の変数チェック方法であって、
前記警告発生処理は、前記プログラムで使用される全ての変数に対する前記対比処理が終了した後に、変数に対して間違った定数名が使用されていると判断した情報を警告することを特徴とする変数チェック方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、変数チェック方法に関するものである。
【背景技術】
【０００２】
ソフトウェアを作成する場合に、先ず、使用するデータを定義したデータディクショナリ（ＤＤ）を作成し、次に、このデータディクショナリに基いて上記したデータの流れや処理を記述したデータフローダイヤグラム（ＤＦＤ）を作成し、最後に、これらデータディクショナリとデータフローダイヤグラムとに基いて実際のプログラムを作成するようなことが行われている。
【０００３】
そして、このような構造分析化技法を用いたソフトウェアの作成工程において、データフローダイヤグラムの作成中に、データフローダイヤグラムに記述したデータ（例えば、変数や定数）のデータ名が、データディクショナリに定義されたものであるかどうかを示すことができるようにした設計支援装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０７−１３９３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記したデータフローダイヤグラムは、データディクショナリに定義されたデータの詳細な内容にまで踏み込んで作成されるものではないため、上記特許文献１に記載された支援装置は、データディクショナリに定義したデータのデータ名（例えば、変数名や定数名）の有無のみについてしか判断することができなかった。しかも、誤ったデータ名の使い方をしてしまったような場合でも、データディクショナリに定義されているものであれば、「データ名有り」と判断されてしまうため、データ名の誤った使い方を発見することはできなかった。
【０００６】
更に、上記特許文献１に記載された支援装置は、データフローダイヤグラム上でのデータ名の誤りについてしか判断することができず、実際に作成されたソフトウェアに対しては、使用したデータ名の誤りを判断することができなかった。
【０００７】
そこで、本発明は、上記した問題点を解決することを、主な目的としている。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の変数チェック方法は、
少なくとも、使用する全ての変数と、該各変数が取り得る複数の値の各々に対して割り当てられた定数名と、を定義して登録したデータディクショナリに基いて作成されたプログラムまたは作成中のプログラムに対し、
該プログラムで使用した変数と、該変数の値として使用した定数名とを抽出する定数名抽出処理と、
該定数名抽出処理で抽出された定数名と、前記データディクショナリとを対比して、「その変数のものではない定数名が使われているかどうか」を調べる対比処理と、
該対比処理での対比の結果、定数名が一致しないことにより、変数に対して間違った定数名が使用されていると判断した場合に、警告を発生する警告発生処理と、を行うことを特徴としている。
【発明の効果】
【０００９】
本発明によれば、上記構成によって、以下のような作用効果を得ることができる。
即ち、データディクショナリなどを用いて作成されたプログラムに対し、データとして使用した定数名が正しく使われているかどうかのチェックを一括して行わせるようにする。
そのために、先ず、プログラムから、使用した変数を抽出すると共に、その変数の値を示すものとして使用された定数名を抽出する（定数名抽出処理）。そして、抽出された定数名と、データディクショナリに定義された同じ変数に属する定数名と、を対比する（対比処理）。対比の結果、（別の変数に属する）定数名が使用されている場合に警告を発生する（警告発生処理）。
これにより、プログラム中に、定数名が間違って使用されている箇所があるかどうかをチェックすることができる。しかも、上記チェックは、プログラムに使用した各変数の値を示す定数名と、データディクショナリに登録された、その変数に対して割り当てられた定数名とを比べるだけで良いため、対比する対象の数が絞られるので、素早く且つ容易に対比の結果を得ることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例にかかる変数チェック装置の構成図である。
【図２】構造分析化技法を用いたソフトウェアの作成工程を示す図である。
【図３】データディクショナリの例を示す図（変数の欄）である。
【図４】データディクショナリの例を示す図（定数の欄）である。
【図５】データフローダイヤグラム例を示す図である。
【図６】プログラムのモデルを示す図である。
【図７】定数名に誤りのあるプログラムのモデルを示す図である。
【図８】変数チェック方法を示す図である。
【図９】変数チェック方法の具体的な内容を示すフローチャートである
【図１０】変数と定数名とを関連付けるための代入ブロックの構成図である。
【図１１】警告画面の一例を示す図である。
【図１２】警告画面の他の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態を、図面を用いて詳細に説明する。
図１〜図１２は、この実施の形態を説明するためのものである。
【実施例１】
【００１２】
＜構成＞以下、この実施例の構成について説明する。
【００１３】
図１は、この実施例の変数チェック方法を実行するようにした変数チェック装置１を示すものである。
【００１４】
この変数チェック装置１は、装置本体２と、この装置本体２に接続されたキーボードやマウスなどの入力装置３と、装置本体２に接続されたモニタなどの表示装置４とを備えている。装置本体２の内部には、制御信号やデータ信号などを送るシステムバス５が備えられている。このシステムバス５に、ＣＰＵなどの演算処理装置６や、作業用メモリ７や、ハードディスク装置などの内部記憶装置８が接続されている。また、システムバス５には、ディスク読み書き装置やメモリスロットなどの外部記憶装置９などが接続される。上記した内部記憶装置８には、例えば、データベースソフト１１（または表計算ソフトなど）やダイヤグラム作成ソフト１２（またはフローチャート作成ソフトや描画ソフトなど）やプログラム作成ソフト１３などの各種のソフトウェアがインストールされている。
【００１５】
そして、構造分析化技法を用いたソフトウェアの作成工程は、図２に示すようなものとされる。先ず、使用するデータを定義したデータディクショナリ１７（ＤＤ）を作成する。次に、このデータディクショナリ１７に基いて上記したデータの流れや処理を記述したデータフローダイヤグラム１８（ＤＦＤ）を作成する。最後に、これらデータディクショナリ１７とデータフローダイヤグラム１８とに基いてプログラム１９を作成する。
【００１６】
ここで、データディクショナリ１７は、例えば、一般的なデータベースソフト１１や表計算ソフトなどを用いて作成することができる。また、データフローダイヤグラム１８は、例えば、ダイヤグラム作成ソフト１２やフローチャート作成ソフトや描画ソフトなどを用いて作成することができる。そして、プログラム１９は、プログラム作成ソフト１３などを用いて作成される。
【００１７】
図３は、上記したデータディクショナリ１７の例である。
【００１８】
データディクショナリ１７は、一覧表形式のデータであり、データディクショナリ１７には、使用する変数２１の変数名がLabel Nameとして（縦方向に）順番に定義されている。そして、各変数名には、（横方向に）その定義（Label Description：内容については省略）や、取り得る値としての定義値（Range Definition）や、定義値（プログラム作成ソフト１３では定数として取り扱われる）に割り振った名称としての定数名２２（Constant Name）や、特に図示しないその他の関連情報などが細かく定義されている。
【００１９】
そして、変数２１の変数名は、上から順に、例えば、１番目がIGN_POS、２番目がDOOR_OPEN、３番目がKEY_SW、４番目がLIGHT_SW、５番目がKEY_WARNING、６番目がLIGHT_WARNING、７番目がWARNING_OUT、・・・などとなっており、１２番目がENGING_STATUSとなっている。
【００２０】
そして、例えば、１番目の変数２１の変数名IGN_POSでは、その取り得る値を示す定義値として、OFF、CRANKING、RUN、ACC、IGNの５つの定数名２２が割り振られている。
【００２１】
また、例えば、１２番目の変数２１の変数名ENGING_STATUSでは、その取り得る値を示す定義値として、OFF、REMOTE_RUNNING、RUNNINGの３つの定数名２２が割り振られている。
【００２２】
更に、例えば、７番目の変数２１の変数名WARNNING_OUTでは、その取り得る値を示す定義値として、OFF、KEYWARNING、LIGHTWARNINGの３つの定数名２２が割り振られている。
【００２３】
そして、データディクショナリ１７には、上記とは別の欄に、図４に示すように、上記した変数２１の定義値としての定数名２２（Constant Name）が、詳細に定義（Label Description）されている。
【００２４】
これによると、定数名２２（RUN）の定義は、IGN Position:EngineRunning（即ち、イグニッションスイッチ位置：エンジン始動）となっている。そして、その値（Value）は２となっている。
【００２５】
また、定数名２２（RUNNING）の定義は、EngineStatus:RunningbyNormal（即ち、エンジン状態：通常起動）となっている。そして、その値（Value）は２となっている。
【００２６】
即ち、定数名２２（RUN）と（RUNNING）とは、表記の上では類似している。しかし、両者は、それぞれの持つ意味内容が全く異なっている。そして、その値は、共に「２」であり、偶々（たまたま）同じとなっている。よって、両者は、誤用され易いものの１つとして挙げられる。
【００２７】
なお、定数名２２（KEYWARNING）の定義は、WarningStatus:KEY（即ち、警告状態：キー）となっている。そして、その値（Value）は１となっている。また、定数名２２（LIGHTWARNING）の定義は、WarningStatus:LIGHT（即ち、警告状態：ライト）となっている。そして、その値（Value）は２となっている。
【００２８】
次に、図５は、データフローダイヤグラム１８の例である。このデータフローダイヤグラム１８には、図中左側の入力部３１（Ｉｎｐｕｔ）から、図中右側の出力部３２（Ｏｕｔｐｕｔ）を作り出すプログラム１９の構想が描かれている。
【００２９】
このデータフローダイヤグラム１８に描かれたプログラム１９は、入力部３１から入力された複数の変数２１（変数名IGN_POS、変数名DOOR_OPEN、変数名KEY_SW）から、１つの別の変数２１（変数名KEY_WARNING）を作り出すモデル３３（KeyWarning）を有している。また、上記プログラム１９は、入力部３１から入力された複数の変数２１（変数名IGN_POS、変数名DOOR_OPEN、変数名LIGHT_SW）から、１つの別の変数２１（変数名LIGHT_WARNING）を作り出すモデル３４（LightWarning）を有している。更に、上記プログラム１９は、上記各モデル３３，３４によって作り出された２つの変数２１（変数名KEY_WARNINGと、変数名LIGHT_WARNING）から、更に別の１つの変数２１（変数名WARNNING_OUT）を作り出して、出力部３２へ出力するモデル３５（WarningOutput）を備えている。なお、このデータフローダイヤグラム１８で使用されているのは、変数２１の変数名のみとなっている。
【００３０】
そして、図６は、上記データフローダイヤグラム１８のプログラム１９に描かれたモデル３３の一部を具体的にプログラム化したものである。この場合、プログラム作成ソフト１３には、矩形状のブロックや線などを用いた図形描画によってプログラムを作成できるようにしたMATLAB（マトラボ）標準プログラムなどが使用されている。このMATLAB標準プログラムは、描いた図形そのものがプログラムとして機能するようになっている。但し、プログラム作成ソフト１３は、プログラム言語の記述によってプログラムを作成するようにした記述式のものなどであっても良い。
【００３１】
この図では、上記モデル３３における、変数２１（変数名KEY_SW）を示すインポートブロック４１ａ（入力ブロック）と、変数２１（変数名IGN_POS）を示すインポートブロック４１ｂ（入力ブロック）とを、論理積（AND）を求めるロジカルオペレータ４２ａへ入力して、アウトポートブロック４３ａ（出力ブロック）に変数２１（変数名KEY_WARNING）を得るようにした部分を示している。
【００３２】
このうち、変数２１（変数名KEY_SW）については、直接ロジカルオペレータ４２ａへ入力されるようになっている。これに対し、変数２１（変数名IGN_POS）は、直接ロジカルオペレータ４２ａへ入力されるのではなく、比較ブロック４４ａで定数名２２（RUN）を示す定数ブロック４５ａの値と比較されると共に、比較ブロック４４ｂで定数名２２（IGN）を示す定数ブロック４５ｂの値と比較されるようになっている。更に、両者（比較ブロック４４ａ，４４ｂ）での比較の結果は、論理和（OR）を求めるロジカルオペレータ４２ｂへ入力され、どちらか一方の比較結果が「一致」となった場合に、上記論理積（AND）のロジカルオペレータ４２ａへ信号「１」を送るようになっている。
【００３３】
なお、このようなプログラム１９は、上記したモデル（例えば、モデル３３〜モデル３５）ごとに別個に作成される。そして、１つのモデル（例えば、モデル３３など）が完成する度に、必要に応じてデータディクショナリ１７の見直しおよび修正が行われる。更に、データディクショナリ１７の見直しが済んだ後に、シミュレーション用ファイル（いわゆる、ｍファイル）を作成するようにしている。このシミュレーション用ファイルは、モデル（例えば、モデル３３など）の中で参照している変数２１や定数を定義した定義ファイルのことであり、モデル３３をシミュレーションするのに用いられる。なお、プログラム作成ソフト１３（MATLAB標準プログラム）には、モデルと、データディクショナリ１７とを用いてシミュレーション用ファイルを自動で生成する機能が備えられている。シミュレーション用ファイルは、上記したプログラム作成ソフト１３の機能を使用して作成しても良いし、手作業で作成するようにしても良い。
【００３４】
そして、図７には、定数名２２の誤りの例として、上記した図６のモデル３３における、定数名２２（RUN）を示す定数ブロック４５ａを、間違って定数名２２（RUNNING）を示す定数ブロック４５ｃにしてしまった場合を示している。ちなみに、上記したように、この定数名２２（RUNNING）は、図３の１２番目の変数２１（変数名ENGING_STATUS）に属するものであり、図３の１番目の変数２１（変数名IGN_POS）に属するものではない。
【００３５】
このような定数名２２の誤りを発見するために、この実施例では、以下のような変数チェック方法を行うようにする。なお、この変数チェック方法は、上記した変数チェック装置１を用いて自動的に行わせるようにしているが、開発者が手作業によって行うこともできる。
【００３６】
即ち、上記したような、少なくとも、使用する全ての変数２１と、各変数２１が取り得る複数の値の各々に対して割り当てられた定数名２２と、を定義して登録したデータディクショナリ１７に基いて作成されたプログラム１９または作成中のプログラム１９に対し、図８に示すように、
プログラム１９で使用した変数２１と、変数２１の値として使用した定数名２２とを抽出する定数名抽出処理５５と、
この定数名抽出処理５５で抽出された定数名２２と、データディクショナリ１７とを対比して、「その変数２１のものではない定数名２２が（間違って）使われているかどうか」を調べる対比処理５６と、
この対比処理５６での対比の結果、定数名２２が一致しないことにより、変数２１に対して間違った定数名２２が使用されていると判断した場合に、警告を発生する警告発生処理５７と、を行うようにする。
【００３７】
ここで、「定数名抽出処理５５」は、定数名２２を変数２１と関連付けて抽出するものとされる。「対比処理５６」は、変数２１を基準として、使用した定数名２２と、データディクショナリ１７にその変数２１のものとして定義された複数の定数名２２（定数群）のうちの１つと、が一致しているかどうかを対比するものとされる。「その変数２１のものではない定数名２２」は、「別の変数２１に属する定数名２２」と言い換えることができる。
【００３８】
なお、上記した変数チェック方法は、変数チェック装置１にインストールしたプログラム作成ソフト１３に対し、後から組み込んで機能を追加するようにした組込ソフトとして構成するようにしても良い。または、プログラム作成ソフト１３の持つ機能を組み合わせてユーザー独自の機能を作成できるようにしたマクロ機能を使ったチェック用マクロとして構成するようにしても良い。
【００３９】
そして、プログラム作成ソフト１３に構成された上記組込ソフトやチェック用マクロなどによるチェックツールは、実行されると、図１の変数チェック装置１における作業用メモリ７内に、少なくとも、データディクショナリ１７を記憶するデータディクショナリ記憶部６１と、定数名抽出処理５５で抽出した変数２１と定数名２２とを関連付けて記憶するための定数名記憶部６２（定数名抽出処理部）と、対比処理５６における対比作業を行ったり、対比の結果を記憶したりするのに必要な対比作業用記憶部６３（対比処理部）と、警告発生処理５７による警告を作成するための警告作成用記憶部６４（警告発生処理部）と、をそれぞれ確保するようなものとされる。
【００４０】
そして、上記した変数チェック方法の、より具体的なフローは、図９に示すようなものとされる。
【００４１】
先ず、ステップＳ１で、プログラム作成ソフト１３を起動する。なお、プログラム作成ソフト１３は、プログラム１９を作成するために既に起動した状態であっても良い。次に、ステップＳ２で、プログラム作成ソフト１３に付加されたチェックツールを実行する。
【００４２】
すると、チェックツール（を実行する演算処理装置６）は、ステップＳ３で、データディクショナリ１７を読み込んで、データディクショナリ１７の内容をデータディクショナリ記憶部６１に記憶する。なお、データディクショナリ１７の読み込みおよびデータディクショナリ記憶部６１への記憶は、対比処理５６を行う前であれば、いつ行っても良い。
【００４３】
次に、ステップＳ４で、プログラム作成ソフト１３で作成されたまたは作成中のプログラム１９（のモデル）のうち、チェックを行おうとするもの（例えば、モデル３３）の選択を行わせる。モデルの選択は、例えば、チェックツールが、内部記憶装置８などに保存されたモデルのファイルの一覧を表示装置４に表示させ、このファイル一覧の中から目的とするモデルのファイルを選ぶことによって行われる。
【００４４】
次に、ステップＳ５で、プログラム１９に使用した変数２１と、この変数２１の値として使用した定数名２２とを抽出して、これらを定数名記憶部６２に記憶する。この抽出作業は、変数２１と定数名２２とを関連付けた状態で行わせるようにする。
【００４５】
そのために、先ず、プログラム１９中で、変数２１と定数名２２とを関連付けて処理するようにした構成要素（以下、関連性ブロック等と称する）を検索する。そして、検索された上記構成要素（例えば、図７の比較ブロック４４ａや比較ブロック４４ｂなど）に対して入力または出力されている変数２１（例えば、変数名IGN_POS）と定数名２２（例えば、RUNNINGやIGN）とを、関連性を有するものとして抽出する（定数名抽出処理５５）。
【００４６】
なお、変数２１と定数名２２とを関連付けて処理することができる構成要素（関連性ブロック等）は、入力側に関連性を有する上記比較ブロックの他にも、例えば、図１０に示すような、入力側と出力側との間に関連性を有するスイッチブロック４６ｄ，４６ｅやマルチポートスイッチブロック４７ｄなどの代入ブロックが存在している。
【００４７】
この図では、図５に記載したモデル３５の内容が示されている。このモデル３５の内容について簡単に説明すると、スイッチブロック４６ｄは、変数２１（変数名LIGHT_WARNING）を示すインポートブロック４１ｄの値を用いて、定数名２２（LIGHTWARNING）を示す定数ブロック４５ｄの値と、定数名２２（OFF）を示す定数ブロック４５ｅの値とを切り替えるものである。
【００４８】
また、スイッチブロック４６ｅは、変数２１（変数名KEY_WARNING）を示すインポートブロック４１ｅの値を用いて、上記スイッチブロック４６ｄの出力と、定数名２２（KEYTWARNING）を示す定数ブロック４５ｄの値とを切り替えて、変数２１（変数名WARNING_OUT）を示すアウトポートブロック４３ｄの値を得るものである。同時に、加算ブロック４８ｄへの入力を得るものである。
【００４９】
ここで、上記した定数名２２（OFF、KEYTWARNING、LIGHTWARNING）は、出力側の変数２１（変数名WARNING_OUT）に属するものである（図３の７番目の変数２１）。
【００５０】
また、マルチポートスイッチブロック４７ｄは、上記した加算ブロック４８ｄでスイッチブロック４６ｅの出力に定数ブロック４５ｇの値である１を加算して、その結果が１の時に、定数名２２（OFF）を示す定数ブロック４５ｅの値を、変数２１（変数名WARNING_TIMER）を示すアウトポートブロック４３ｅの値とし、加算の結果が２の時に、定数名２２（TIMER_KEYWARNING）を示す定数ブロック４５ｈの値を上記アウトポートブロック４３ｅの値とし、加算の結果が３の時に、定数名２２（TIMER_LIGHTWARNING）を示す定数ブロック４５ｉの値を上記アウトポートブロック４３ｅの値とするものである。
【００５１】
ここで、上記した定数名２２（OFF、TIMER_KEYTWARNING、TIMER_LIGHTWARNING）は、出力側の変数２１（変数名WARNING_TIMER）に属するものである（図示せず）。
【００５２】
図９に戻って、定数名抽出処理５５が済んだら、次に、ステップＳ６で、ステップＳ５において変数２１（例えば、変数名IGN_POS）と関連させて抽出された定数名２２（例えば、RUNNING、IGN）と、データディクショナリ記憶部６１に記憶された、データディクショナリ１７中の、上記変数２１（例えば、変数名IGN_POS）に属する複数の定数（定数群、例えば、定数名２２（OFF、CRANKING、RUN、ACC、IGN））とを、対比作業用記憶部６３を使用して対比する（対比処理５６）。
【００５３】
そして、ステップＳ７で、使用した定数名２２（例えば、RUNNING、IGN）と、定義された定数名２２（例えば、OFF、CRANKING、RUN、ACC、IGN）のうちのいずれかとが、一致しているかどうかを判断する。
【００５４】
ステップＳ７で、使用した定数名２２の全てについて定義と一致していると判断された場合には、ステップＳ８で、シミュレーション用ファイルを作成してチェックツールを終了する。
【００５５】
反対に、ステップＳ７で、使用した定数名２２が１つでも定義と一致していないと判断された場合には、ステップＳ９で、警告を発生してチェックツールを終了する（警告発生処理５７）。なお、警告は、定数名２２の誤りを最初に発見した時点で直ちに行っても良い。または、警告は、プログラム１９で使用した全ての定数名２２についてのチェック（対比処理５６）が終わった後で一括して行わせても良い。警告は、「変数２１に対して間違った定数名２２が使用されている」と判断したという情報（の少なくとも一つまたは全て）を告知するものとされる。
【００５６】
より具体的には、上記した定数名２２（IGN）は、変数２１（変数名IGN_POS）に属するが、定数名２２（RUNNING）は、上記したように、変数２１（変数名ENGING_STATUS）に属するものであるので、変数２１（変数名IGN_POS）に属する定数名２２（OFF、CRANKING、RUN、ACC、IGN）の中には含まれていないことから、定数名２２が一致していないと判断されることになる。
【００５７】
そして、上記した警告は、図１１の「入力：IGN_POSが定義外の定数（RUNNING）と比較しています」や、図１２の「出力：WARNING_OUTに定義外の定数をセットしています。」などのように、誤りを発見した変数２１の変数名（例えば、IGN_POSや、WARNING_OUTなど）を中心とする誤りの表示を表示装置４に行わせるようなものとすることができる。
【００５８】
または、警告は、「定数名（RUNNING）は、変数名（IGN_POS）に属するものではありません。」のように、誤りを発見した定数名（例えば、RUNNING）を中心とする誤りの表示を表示装置４に行わせるようなものとすることができる。
【００５９】
更に、上記の各場合において、警告は、誤りが発見された変数２１の変数名（IGN_POSや、WARNING_OUTなど）と、この変数２１に属する定数名２２の一覧（例えば、OFF、CRANKING、RUN、ACC、IGN（図１１）や、OFF、KEYWARNING、LIGHTWARNING（図１２）など）とを、警告表示枠内に並べて表示するようなものとすることができる。
【００６０】
或いは、警告は、上記に加えて、プログラム１９中の、誤りを発見した定数ブロック４５ｃを、反転表示したり、点滅表示したり、表示色を警告色に変えて表示したりして、誤りが発生した箇所を具体的に特定するようにしても良い。また、誤りを発見した定数名２２を、その場で正しい定数名２２に修正できるようにするために、プログラム作成ソフト１３を入力モードなどにしても良い。
【００６１】
＜効果＞この実施例によれば、以下のような効果を得ることができる。
構造分析化技法を用いてプログラム１９を作成する場合、先ず、使用する変数２１や定数名２２などのデータの定義を登録したデータディクショナリ１７（ＤＤ）を作成する。次に、このデータディクショナリ１７に基いてデータの流れや処理を記述したデータフローダイヤグラム１８（ＤＦＤ）を作成する。最後に、データディクショナリ１７とデータフローダイヤグラム１８に基いて具体的なプログラム１９を作成する。
【００６２】
更に、この実施例では、データディクショナリ１７などを用いて作成されたプログラム１９に対し、データとして使用した定数名２２が正しく使われているかどうかのチェックを一括して行わせるようにする。
【００６３】
そのために、先ず、プログラム１９から、使用した変数２１を抽出すると共に、その変数２１の値を示すものとして使用された定数名２２を抽出する（定数名抽出処理５５）。そして、抽出された定数名２２と、データディクショナリ１７に定義された同じ変数２１に属する定数名２２と、を対比する（対比処理５６または誤使用定数名発見処理）。対比の結果、（別の変数２１に属する）定数名２２が間違って使用されている場合に警告を発生する（警告発生処理５７）。
【００６４】
これにより、プログラム１９中に、定数名２２が間違って使用されている箇所があるかどうかをチェックすることができる。しかも、上記チェックは、プログラム１９に使用した各変数２１の値を示す定数名２２と、データディクショナリ１７に登録された、その変数２１に対して割り当てられた複数の定数名２２とを比べるだけで良いため、対比する対象の数が絞られるので、素早く且つ容易に対比の結果を得ることができる。
【００６５】
ちなみに、（別の変数２１に属する）定数名２２が間違って使用されている場合でも、使用した定数名２２が、データディクショナリ１７に登録されていれば、誤動作の原因（バグ）を含んでいても、実行可能なプログラム１９が作成されてしまうことになる。
【００６６】
しかも、このような定数名２２の間違いを含むプログラム１９は、一見すると誤りがなく正しいように思えるので、却ってバグの発見が困難なものになってしまう。よって、このような間違いが生じないよう、開発者は最大限に注意を払ってプログラム１９を作成する必要があるが、どんなに注意を払っても人間の注意力だけでは間違いを完全になくすのは難しい。しかし、上記したような定数名２２の間違いに対するチェックを一括して自動的に行わせるようにすれば、人間の注意力に頼ることなく、効率的且つ確実にバグを発見して排除することが可能となる。しかも、この一括チェックによって、変数２１に対する定数名２２の使い方を正しく統一することができる。よって、定数名２２に間違いのない安定したプログラム１９を作成することが可能となる。
【００６７】
ちなみに、このような、定数名２２の間違いは、類似した定数名２２が異なる変数２１に対して使われているような場合などに特に生じ易い。また、複数の開発者がプログラム１９を同時並行的に作成しているような場合などには、間違いに気付き難い状況に陥る可能性が高い。
【００６８】
そして、誤って使用した定数名２２と、本来使用すべきであった定数名２２とが、偶然に同一の値を有している場合には、プログラム１９は正しい実行結果を出してしまうことから、プログラム１９が誤動作を起こしていても表面的には誤動作に見えないので、バグのないプログラム１９と判断されて、間違いが見逃されてしまう。
【００６９】
しかし、例えば、プログラム１９の仕様を変更するために、正しい定数名２２に対する具体的な値を変更したような場合に、間違って使用された定数名２２の値が変更されずにそのまま残ってしまうので、正しい処理結果が得られなくなる。そのため、この段階で誤動作が表面化し、プログラム１９ミスが後から発覚して、混乱を招くことになる。
【００７０】
そこで、上記したように、開発の段階で定数名２２の間違いを一括して自動的にチェックするようにすれば、上記したような、類似した別の定数名２２を間違って使用してしまうなどの誤りをなくして、プログラム１９の開発を容易化することができる。また、仕様の変更による誤動作の表面化などを防いで、プログラム１９の信頼性を高めることができる。
【００７１】
また、警告発生処理５７を、プログラム１９で使用される全ての変数２１に対する対比処理５６が終了した後に、変数２１に対して間違った定数名２２が使用されていると判断した情報を警告するものとした。これにより、全ての変数２１についての定数名２２の間違いを一括して警告することができる。以って、プログラム１９の開発効率を向上することができる。
【００７２】
以上、この発明の実施例を図面により詳述してきたが、実施例はこの発明の例示にしか過ぎないものである。よって、この発明は実施例の構成にのみ限定されるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもこの発明に含まれることは勿論である。また、例えば、各実施例に複数の構成が含まれている場合には、特に記載がなくとも、これらの構成の可能な組合せが含まれることは勿論である。また、複数の実施例や変形例がこの発明のものとして開示されている場合には、特に記載がなくとも、これらに跨がった構成の組合せのうちの可能なものが含まれることは勿論である。また、図面に描かれている構成については、特に記載がなくとも、含まれることは勿論である。更に、「等」の用語がある場合には、同等のものを含むという意味で用いられている。また、「ほぼ」「約」「程度」などの用語がある場合には、常識的に認められる範囲や精度のものを含むという意味で用いられている。
【符号の説明】
【００７３】
１７  データディクショナリ
１９  プログラム
２１  変数
２２  定数名
５５  定数名抽出処理
５６  対比処理
５７  警告発生処理
【図１】
2015191492.tif 000003
【図２】
2015191492.tif 000004
【図３】
2015191492.tif 000005
【図４】
2015191492.tif 000006
【図５】
2015191492.tif 000007
【図６】
2015191492.tif 000008
【図７】
2015191492.tif 000009
【図８】
2015191492.tif 000010
【図９】
2015191492.tif 000011
【図１０】
2015191492.tif 000012
【図１１】
2015191492.tif 000013
【図１２】
2015191492.tif 000014