JP2015191492A - 変数チェック方法 - Google Patents
変数チェック方法 Download PDFInfo
- Publication number
- JP2015191492A JP2015191492A JP2014069021A JP2014069021A JP2015191492A JP 2015191492 A JP2015191492 A JP 2015191492A JP 2014069021 A JP2014069021 A JP 2014069021A JP 2014069021 A JP2014069021 A JP 2014069021A JP 2015191492 A JP2015191492 A JP 2015191492A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- constant
- name
- program
- warning
- 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
Links
Abstract
【課題】作成されたソフトウェアにおける定数名の誤りを発見できるようにする。【解決手段】使用する変数21と、この変数21に対して割り当てられた定数名22と、を定義したデータディクショナリ17に基いて作成されたプログラム19に対し、プログラム19で使用した変数21と、この変数21の値として使用した定数名22とを抽出する定数名抽出処理55と、定数名抽出処理55で抽出された定数名22と、データディクショナリ17とを対比して、「その変数21のものではない定数名22が使われているかどうか」を調べる対比処理56と、対比処理56での対比の結果、定数名22が一致しないことにより、変数21に対して間違った定数名22が使用されていると判断した場合に、警告を発生する警告発生処理57と、を行わせるようにする。【選択図】図8
Description
この発明は、変数チェック方法に関するものである。
ソフトウェアを作成する場合に、先ず、使用するデータを定義したデータディクショナリ(DD)を作成し、次に、このデータディクショナリに基いて上記したデータの流れや処理を記述したデータフローダイヤグラム(DFD)を作成し、最後に、これらデータディクショナリとデータフローダイヤグラムとに基いて実際のプログラムを作成するようなことが行われている。
そして、このような構造分析化技法を用いたソフトウェアの作成工程において、データフローダイヤグラムの作成中に、データフローダイヤグラムに記述したデータ(例えば、変数や定数)のデータ名が、データディクショナリに定義されたものであるかどうかを示すことができるようにした設計支援装置が知られている(例えば、特許文献1参照)。
しかしながら、上記したデータフローダイヤグラムは、データディクショナリに定義されたデータの詳細な内容にまで踏み込んで作成されるものではないため、上記特許文献1に記載された支援装置は、データディクショナリに定義したデータのデータ名(例えば、変数名や定数名)の有無のみについてしか判断することができなかった。しかも、誤ったデータ名の使い方をしてしまったような場合でも、データディクショナリに定義されているものであれば、「データ名有り」と判断されてしまうため、データ名の誤った使い方を発見することはできなかった。
更に、上記特許文献1に記載された支援装置は、データフローダイヤグラム上でのデータ名の誤りについてしか判断することができず、実際に作成されたソフトウェアに対しては、使用したデータ名の誤りを判断することができなかった。
そこで、本発明は、上記した問題点を解決することを、主な目的としている。
上記課題を解決するために、本発明の変数チェック方法は、
少なくとも、使用する全ての変数と、該各変数が取り得る複数の値の各々に対して割り当てられた定数名と、を定義して登録したデータディクショナリに基いて作成されたプログラムまたは作成中のプログラムに対し、
該プログラムで使用した変数と、該変数の値として使用した定数名とを抽出する定数名抽出処理と、
該定数名抽出処理で抽出された定数名と、前記データディクショナリとを対比して、「その変数のものではない定数名が使われているかどうか」を調べる対比処理と、
該対比処理での対比の結果、定数名が一致しないことにより、変数に対して間違った定数名が使用されていると判断した場合に、警告を発生する警告発生処理と、を行うことを特徴としている。
少なくとも、使用する全ての変数と、該各変数が取り得る複数の値の各々に対して割り当てられた定数名と、を定義して登録したデータディクショナリに基いて作成されたプログラムまたは作成中のプログラムに対し、
該プログラムで使用した変数と、該変数の値として使用した定数名とを抽出する定数名抽出処理と、
該定数名抽出処理で抽出された定数名と、前記データディクショナリとを対比して、「その変数のものではない定数名が使われているかどうか」を調べる対比処理と、
該対比処理での対比の結果、定数名が一致しないことにより、変数に対して間違った定数名が使用されていると判断した場合に、警告を発生する警告発生処理と、を行うことを特徴としている。
本発明によれば、上記構成によって、以下のような作用効果を得ることができる。
即ち、データディクショナリなどを用いて作成されたプログラムに対し、データとして使用した定数名が正しく使われているかどうかのチェックを一括して行わせるようにする。
そのために、先ず、プログラムから、使用した変数を抽出すると共に、その変数の値を示すものとして使用された定数名を抽出する(定数名抽出処理)。そして、抽出された定数名と、データディクショナリに定義された同じ変数に属する定数名と、を対比する(対比処理)。対比の結果、(別の変数に属する)定数名が使用されている場合に警告を発生する(警告発生処理)。
これにより、プログラム中に、定数名が間違って使用されている箇所があるかどうかをチェックすることができる。しかも、上記チェックは、プログラムに使用した各変数の値を示す定数名と、データディクショナリに登録された、その変数に対して割り当てられた定数名とを比べるだけで良いため、対比する対象の数が絞られるので、素早く且つ容易に対比の結果を得ることができる。
即ち、データディクショナリなどを用いて作成されたプログラムに対し、データとして使用した定数名が正しく使われているかどうかのチェックを一括して行わせるようにする。
そのために、先ず、プログラムから、使用した変数を抽出すると共に、その変数の値を示すものとして使用された定数名を抽出する(定数名抽出処理)。そして、抽出された定数名と、データディクショナリに定義された同じ変数に属する定数名と、を対比する(対比処理)。対比の結果、(別の変数に属する)定数名が使用されている場合に警告を発生する(警告発生処理)。
これにより、プログラム中に、定数名が間違って使用されている箇所があるかどうかをチェックすることができる。しかも、上記チェックは、プログラムに使用した各変数の値を示す定数名と、データディクショナリに登録された、その変数に対して割り当てられた定数名とを比べるだけで良いため、対比する対象の数が絞られるので、素早く且つ容易に対比の結果を得ることができる。
以下、本実施の形態を、図面を用いて詳細に説明する。
図1〜図12は、この実施の形態を説明するためのものである。
図1〜図12は、この実施の形態を説明するためのものである。
<構成>以下、この実施例の構成について説明する。
図1は、この実施例の変数チェック方法を実行するようにした変数チェック装置1を示すものである。
この変数チェック装置1は、装置本体2と、この装置本体2に接続されたキーボードやマウスなどの入力装置3と、装置本体2に接続されたモニタなどの表示装置4とを備えている。装置本体2の内部には、制御信号やデータ信号などを送るシステムバス5が備えられている。このシステムバス5に、CPUなどの演算処理装置6や、作業用メモリ7や、ハードディスク装置などの内部記憶装置8が接続されている。また、システムバス5には、ディスク読み書き装置やメモリスロットなどの外部記憶装置9などが接続される。上記した内部記憶装置8には、例えば、データベースソフト11(または表計算ソフトなど)やダイヤグラム作成ソフト12(またはフローチャート作成ソフトや描画ソフトなど)やプログラム作成ソフト13などの各種のソフトウェアがインストールされている。
そして、構造分析化技法を用いたソフトウェアの作成工程は、図2に示すようなものとされる。先ず、使用するデータを定義したデータディクショナリ17(DD)を作成する。次に、このデータディクショナリ17に基いて上記したデータの流れや処理を記述したデータフローダイヤグラム18(DFD)を作成する。最後に、これらデータディクショナリ17とデータフローダイヤグラム18とに基いてプログラム19を作成する。
ここで、データディクショナリ17は、例えば、一般的なデータベースソフト11や表計算ソフトなどを用いて作成することができる。また、データフローダイヤグラム18は、例えば、ダイヤグラム作成ソフト12やフローチャート作成ソフトや描画ソフトなどを用いて作成することができる。そして、プログラム19は、プログラム作成ソフト13などを用いて作成される。
図3は、上記したデータディクショナリ17の例である。
データディクショナリ17は、一覧表形式のデータであり、データディクショナリ17には、使用する変数21の変数名がLabel Nameとして(縦方向に)順番に定義されている。そして、各変数名には、(横方向に)その定義(Label Description:内容については省略)や、取り得る値としての定義値(Range Definition)や、定義値(プログラム作成ソフト13では定数として取り扱われる)に割り振った名称としての定数名22(Constant Name)や、特に図示しないその他の関連情報などが細かく定義されている。
そして、変数21の変数名は、上から順に、例えば、1番目がIGN_POS、2番目がDOOR_OPEN、3番目がKEY_SW、4番目がLIGHT_SW、5番目がKEY_WARNING、6番目がLIGHT_WARNING、7番目がWARNING_OUT、・・・などとなっており、12番目がENGING_STATUSとなっている。
そして、例えば、1番目の変数21の変数名IGN_POSでは、その取り得る値を示す定義値として、OFF、CRANKING、RUN、ACC、IGNの5つの定数名22が割り振られている。
また、例えば、12番目の変数21の変数名ENGING_STATUSでは、その取り得る値を示す定義値として、OFF、REMOTE_RUNNING、RUNNINGの3つの定数名22が割り振られている。
更に、例えば、7番目の変数21の変数名WARNNING_OUTでは、その取り得る値を示す定義値として、OFF、KEYWARNING、LIGHTWARNINGの3つの定数名22が割り振られている。
そして、データディクショナリ17には、上記とは別の欄に、図4に示すように、上記した変数21の定義値としての定数名22(Constant Name)が、詳細に定義(Label Description)されている。
これによると、定数名22(RUN)の定義は、IGN Position:EngineRunning(即ち、イグニッションスイッチ位置:エンジン始動)となっている。そして、その値(Value)は2となっている。
また、定数名22(RUNNING)の定義は、EngineStatus:RunningbyNormal(即ち、エンジン状態:通常起動)となっている。そして、その値(Value)は2となっている。
即ち、定数名22(RUN)と(RUNNING)とは、表記の上では類似している。しかし、両者は、それぞれの持つ意味内容が全く異なっている。そして、その値は、共に「2」であり、偶々(たまたま)同じとなっている。よって、両者は、誤用され易いものの1つとして挙げられる。
なお、定数名22(KEYWARNING)の定義は、WarningStatus:KEY(即ち、警告状態:キー)となっている。そして、その値(Value)は1となっている。また、定数名22(LIGHTWARNING)の定義は、WarningStatus:LIGHT(即ち、警告状態:ライト)となっている。そして、その値(Value)は2となっている。
次に、図5は、データフローダイヤグラム18の例である。このデータフローダイヤグラム18には、図中左側の入力部31(Input)から、図中右側の出力部32(Output)を作り出すプログラム19の構想が描かれている。
このデータフローダイヤグラム18に描かれたプログラム19は、入力部31から入力された複数の変数21(変数名IGN_POS、変数名DOOR_OPEN、変数名KEY_SW)から、1つの別の変数21(変数名KEY_WARNING)を作り出すモデル33(KeyWarning)を有している。また、上記プログラム19は、入力部31から入力された複数の変数21(変数名IGN_POS、変数名DOOR_OPEN、変数名LIGHT_SW)から、1つの別の変数21(変数名LIGHT_WARNING)を作り出すモデル34(LightWarning)を有している。更に、上記プログラム19は、上記各モデル33,34によって作り出された2つの変数21(変数名KEY_WARNINGと、変数名LIGHT_WARNING)から、更に別の1つの変数21(変数名WARNNING_OUT)を作り出して、出力部32へ出力するモデル35(WarningOutput)を備えている。なお、このデータフローダイヤグラム18で使用されているのは、変数21の変数名のみとなっている。
そして、図6は、上記データフローダイヤグラム18のプログラム19に描かれたモデル33の一部を具体的にプログラム化したものである。この場合、プログラム作成ソフト13には、矩形状のブロックや線などを用いた図形描画によってプログラムを作成できるようにしたMATLAB(マトラボ)標準プログラムなどが使用されている。このMATLAB標準プログラムは、描いた図形そのものがプログラムとして機能するようになっている。但し、プログラム作成ソフト13は、プログラム言語の記述によってプログラムを作成するようにした記述式のものなどであっても良い。
この図では、上記モデル33における、変数21(変数名KEY_SW)を示すインポートブロック41a(入力ブロック)と、変数21(変数名IGN_POS)を示すインポートブロック41b(入力ブロック)とを、論理積(AND)を求めるロジカルオペレータ42aへ入力して、アウトポートブロック43a(出力ブロック)に変数21(変数名KEY_WARNING)を得るようにした部分を示している。
このうち、変数21(変数名KEY_SW)については、直接ロジカルオペレータ42aへ入力されるようになっている。これに対し、変数21(変数名IGN_POS)は、直接ロジカルオペレータ42aへ入力されるのではなく、比較ブロック44aで定数名22(RUN)を示す定数ブロック45aの値と比較されると共に、比較ブロック44bで定数名22(IGN)を示す定数ブロック45bの値と比較されるようになっている。更に、両者(比較ブロック44a,44b)での比較の結果は、論理和(OR)を求めるロジカルオペレータ42bへ入力され、どちらか一方の比較結果が「一致」となった場合に、上記論理積(AND)のロジカルオペレータ42aへ信号「1」を送るようになっている。
なお、このようなプログラム19は、上記したモデル(例えば、モデル33〜モデル35)ごとに別個に作成される。そして、1つのモデル(例えば、モデル33など)が完成する度に、必要に応じてデータディクショナリ17の見直しおよび修正が行われる。更に、データディクショナリ17の見直しが済んだ後に、シミュレーション用ファイル(いわゆる、mファイル)を作成するようにしている。このシミュレーション用ファイルは、モデル(例えば、モデル33など)の中で参照している変数21や定数を定義した定義ファイルのことであり、モデル33をシミュレーションするのに用いられる。なお、プログラム作成ソフト13(MATLAB標準プログラム)には、モデルと、データディクショナリ17とを用いてシミュレーション用ファイルを自動で生成する機能が備えられている。シミュレーション用ファイルは、上記したプログラム作成ソフト13の機能を使用して作成しても良いし、手作業で作成するようにしても良い。
そして、図7には、定数名22の誤りの例として、上記した図6のモデル33における、定数名22(RUN)を示す定数ブロック45aを、間違って定数名22(RUNNING)を示す定数ブロック45cにしてしまった場合を示している。ちなみに、上記したように、この定数名22(RUNNING)は、図3の12番目の変数21(変数名ENGING_STATUS)に属するものであり、図3の1番目の変数21(変数名IGN_POS)に属するものではない。
このような定数名22の誤りを発見するために、この実施例では、以下のような変数チェック方法を行うようにする。なお、この変数チェック方法は、上記した変数チェック装置1を用いて自動的に行わせるようにしているが、開発者が手作業によって行うこともできる。
即ち、上記したような、少なくとも、使用する全ての変数21と、各変数21が取り得る複数の値の各々に対して割り当てられた定数名22と、を定義して登録したデータディクショナリ17に基いて作成されたプログラム19または作成中のプログラム19に対し、図8に示すように、
プログラム19で使用した変数21と、変数21の値として使用した定数名22とを抽出する定数名抽出処理55と、
この定数名抽出処理55で抽出された定数名22と、データディクショナリ17とを対比して、「その変数21のものではない定数名22が(間違って)使われているかどうか」を調べる対比処理56と、
この対比処理56での対比の結果、定数名22が一致しないことにより、変数21に対して間違った定数名22が使用されていると判断した場合に、警告を発生する警告発生処理57と、を行うようにする。
プログラム19で使用した変数21と、変数21の値として使用した定数名22とを抽出する定数名抽出処理55と、
この定数名抽出処理55で抽出された定数名22と、データディクショナリ17とを対比して、「その変数21のものではない定数名22が(間違って)使われているかどうか」を調べる対比処理56と、
この対比処理56での対比の結果、定数名22が一致しないことにより、変数21に対して間違った定数名22が使用されていると判断した場合に、警告を発生する警告発生処理57と、を行うようにする。
ここで、「定数名抽出処理55」は、定数名22を変数21と関連付けて抽出するものとされる。「対比処理56」は、変数21を基準として、使用した定数名22と、データディクショナリ17にその変数21のものとして定義された複数の定数名22(定数群)のうちの1つと、が一致しているかどうかを対比するものとされる。「その変数21のものではない定数名22」は、「別の変数21に属する定数名22」と言い換えることができる。
なお、上記した変数チェック方法は、変数チェック装置1にインストールしたプログラム作成ソフト13に対し、後から組み込んで機能を追加するようにした組込ソフトとして構成するようにしても良い。または、プログラム作成ソフト13の持つ機能を組み合わせてユーザー独自の機能を作成できるようにしたマクロ機能を使ったチェック用マクロとして構成するようにしても良い。
そして、プログラム作成ソフト13に構成された上記組込ソフトやチェック用マクロなどによるチェックツールは、実行されると、図1の変数チェック装置1における作業用メモリ7内に、少なくとも、データディクショナリ17を記憶するデータディクショナリ記憶部61と、定数名抽出処理55で抽出した変数21と定数名22とを関連付けて記憶するための定数名記憶部62(定数名抽出処理部)と、対比処理56における対比作業を行ったり、対比の結果を記憶したりするのに必要な対比作業用記憶部63(対比処理部)と、警告発生処理57による警告を作成するための警告作成用記憶部64(警告発生処理部)と、をそれぞれ確保するようなものとされる。
そして、上記した変数チェック方法の、より具体的なフローは、図9に示すようなものとされる。
先ず、ステップS1で、プログラム作成ソフト13を起動する。なお、プログラム作成ソフト13は、プログラム19を作成するために既に起動した状態であっても良い。次に、ステップS2で、プログラム作成ソフト13に付加されたチェックツールを実行する。
すると、チェックツール(を実行する演算処理装置6)は、ステップS3で、データディクショナリ17を読み込んで、データディクショナリ17の内容をデータディクショナリ記憶部61に記憶する。なお、データディクショナリ17の読み込みおよびデータディクショナリ記憶部61への記憶は、対比処理56を行う前であれば、いつ行っても良い。
次に、ステップS4で、プログラム作成ソフト13で作成されたまたは作成中のプログラム19(のモデル)のうち、チェックを行おうとするもの(例えば、モデル33)の選択を行わせる。モデルの選択は、例えば、チェックツールが、内部記憶装置8などに保存されたモデルのファイルの一覧を表示装置4に表示させ、このファイル一覧の中から目的とするモデルのファイルを選ぶことによって行われる。
次に、ステップS5で、プログラム19に使用した変数21と、この変数21の値として使用した定数名22とを抽出して、これらを定数名記憶部62に記憶する。この抽出作業は、変数21と定数名22とを関連付けた状態で行わせるようにする。
そのために、先ず、プログラム19中で、変数21と定数名22とを関連付けて処理するようにした構成要素(以下、関連性ブロック等と称する)を検索する。そして、検索された上記構成要素(例えば、図7の比較ブロック44aや比較ブロック44bなど)に対して入力または出力されている変数21(例えば、変数名IGN_POS)と定数名22(例えば、RUNNINGやIGN)とを、関連性を有するものとして抽出する(定数名抽出処理55)。
なお、変数21と定数名22とを関連付けて処理することができる構成要素(関連性ブロック等)は、入力側に関連性を有する上記比較ブロックの他にも、例えば、図10に示すような、入力側と出力側との間に関連性を有するスイッチブロック46d,46eやマルチポートスイッチブロック47dなどの代入ブロックが存在している。
この図では、図5に記載したモデル35の内容が示されている。このモデル35の内容について簡単に説明すると、スイッチブロック46dは、変数21(変数名LIGHT_WARNING)を示すインポートブロック41dの値を用いて、定数名22(LIGHTWARNING)を示す定数ブロック45dの値と、定数名22(OFF)を示す定数ブロック45eの値とを切り替えるものである。
また、スイッチブロック46eは、変数21(変数名KEY_WARNING)を示すインポートブロック41eの値を用いて、上記スイッチブロック46dの出力と、定数名22(KEYTWARNING)を示す定数ブロック45dの値とを切り替えて、変数21(変数名WARNING_OUT)を示すアウトポートブロック43dの値を得るものである。同時に、加算ブロック48dへの入力を得るものである。
ここで、上記した定数名22(OFF、KEYTWARNING、LIGHTWARNING)は、出力側の変数21(変数名WARNING_OUT)に属するものである(図3の7番目の変数21)。
また、マルチポートスイッチブロック47dは、上記した加算ブロック48dでスイッチブロック46eの出力に定数ブロック45gの値である1を加算して、その結果が1の時に、定数名22(OFF)を示す定数ブロック45eの値を、変数21(変数名WARNING_TIMER)を示すアウトポートブロック43eの値とし、加算の結果が2の時に、定数名22(TIMER_KEYWARNING)を示す定数ブロック45hの値を上記アウトポートブロック43eの値とし、加算の結果が3の時に、定数名22(TIMER_LIGHTWARNING)を示す定数ブロック45iの値を上記アウトポートブロック43eの値とするものである。
ここで、上記した定数名22(OFF、TIMER_KEYTWARNING、TIMER_LIGHTWARNING)は、出力側の変数21(変数名WARNING_TIMER)に属するものである(図示せず)。
図9に戻って、定数名抽出処理55が済んだら、次に、ステップS6で、ステップS5において変数21(例えば、変数名IGN_POS)と関連させて抽出された定数名22(例えば、RUNNING、IGN)と、データディクショナリ記憶部61に記憶された、データディクショナリ17中の、上記変数21(例えば、変数名IGN_POS)に属する複数の定数(定数群、例えば、定数名22(OFF、CRANKING、RUN、ACC、IGN))とを、対比作業用記憶部63を使用して対比する(対比処理56)。
そして、ステップS7で、使用した定数名22(例えば、RUNNING、IGN)と、定義された定数名22(例えば、OFF、CRANKING、RUN、ACC、IGN)のうちのいずれかとが、一致しているかどうかを判断する。
ステップS7で、使用した定数名22の全てについて定義と一致していると判断された場合には、ステップS8で、シミュレーション用ファイルを作成してチェックツールを終了する。
反対に、ステップS7で、使用した定数名22が1つでも定義と一致していないと判断された場合には、ステップS9で、警告を発生してチェックツールを終了する(警告発生処理57)。なお、警告は、定数名22の誤りを最初に発見した時点で直ちに行っても良い。または、警告は、プログラム19で使用した全ての定数名22についてのチェック(対比処理56)が終わった後で一括して行わせても良い。警告は、「変数21に対して間違った定数名22が使用されている」と判断したという情報(の少なくとも一つまたは全て)を告知するものとされる。
より具体的には、上記した定数名22(IGN)は、変数21(変数名IGN_POS)に属するが、定数名22(RUNNING)は、上記したように、変数21(変数名ENGING_STATUS)に属するものであるので、変数21(変数名IGN_POS)に属する定数名22(OFF、CRANKING、RUN、ACC、IGN)の中には含まれていないことから、定数名22が一致していないと判断されることになる。
そして、上記した警告は、図11の「入力:IGN_POSが定義外の定数(RUNNING)と比較しています」や、図12の「出力:WARNING_OUTに定義外の定数をセットしています。」などのように、誤りを発見した変数21の変数名(例えば、IGN_POSや、WARNING_OUTなど)を中心とする誤りの表示を表示装置4に行わせるようなものとすることができる。
または、警告は、「定数名(RUNNING)は、変数名(IGN_POS)に属するものではありません。」のように、誤りを発見した定数名(例えば、RUNNING)を中心とする誤りの表示を表示装置4に行わせるようなものとすることができる。
更に、上記の各場合において、警告は、誤りが発見された変数21の変数名(IGN_POSや、WARNING_OUTなど)と、この変数21に属する定数名22の一覧(例えば、OFF、CRANKING、RUN、ACC、IGN(図11)や、OFF、KEYWARNING、LIGHTWARNING(図12)など)とを、警告表示枠内に並べて表示するようなものとすることができる。
或いは、警告は、上記に加えて、プログラム19中の、誤りを発見した定数ブロック45cを、反転表示したり、点滅表示したり、表示色を警告色に変えて表示したりして、誤りが発生した箇所を具体的に特定するようにしても良い。また、誤りを発見した定数名22を、その場で正しい定数名22に修正できるようにするために、プログラム作成ソフト13を入力モードなどにしても良い。
<効果>この実施例によれば、以下のような効果を得ることができる。
構造分析化技法を用いてプログラム19を作成する場合、先ず、使用する変数21や定数名22などのデータの定義を登録したデータディクショナリ17(DD)を作成する。次に、このデータディクショナリ17に基いてデータの流れや処理を記述したデータフローダイヤグラム18(DFD)を作成する。最後に、データディクショナリ17とデータフローダイヤグラム18に基いて具体的なプログラム19を作成する。
構造分析化技法を用いてプログラム19を作成する場合、先ず、使用する変数21や定数名22などのデータの定義を登録したデータディクショナリ17(DD)を作成する。次に、このデータディクショナリ17に基いてデータの流れや処理を記述したデータフローダイヤグラム18(DFD)を作成する。最後に、データディクショナリ17とデータフローダイヤグラム18に基いて具体的なプログラム19を作成する。
更に、この実施例では、データディクショナリ17などを用いて作成されたプログラム19に対し、データとして使用した定数名22が正しく使われているかどうかのチェックを一括して行わせるようにする。
そのために、先ず、プログラム19から、使用した変数21を抽出すると共に、その変数21の値を示すものとして使用された定数名22を抽出する(定数名抽出処理55)。そして、抽出された定数名22と、データディクショナリ17に定義された同じ変数21に属する定数名22と、を対比する(対比処理56または誤使用定数名発見処理)。対比の結果、(別の変数21に属する)定数名22が間違って使用されている場合に警告を発生する(警告発生処理57)。
これにより、プログラム19中に、定数名22が間違って使用されている箇所があるかどうかをチェックすることができる。しかも、上記チェックは、プログラム19に使用した各変数21の値を示す定数名22と、データディクショナリ17に登録された、その変数21に対して割り当てられた複数の定数名22とを比べるだけで良いため、対比する対象の数が絞られるので、素早く且つ容易に対比の結果を得ることができる。
ちなみに、(別の変数21に属する)定数名22が間違って使用されている場合でも、使用した定数名22が、データディクショナリ17に登録されていれば、誤動作の原因(バグ)を含んでいても、実行可能なプログラム19が作成されてしまうことになる。
しかも、このような定数名22の間違いを含むプログラム19は、一見すると誤りがなく正しいように思えるので、却ってバグの発見が困難なものになってしまう。よって、このような間違いが生じないよう、開発者は最大限に注意を払ってプログラム19を作成する必要があるが、どんなに注意を払っても人間の注意力だけでは間違いを完全になくすのは難しい。しかし、上記したような定数名22の間違いに対するチェックを一括して自動的に行わせるようにすれば、人間の注意力に頼ることなく、効率的且つ確実にバグを発見して排除することが可能となる。しかも、この一括チェックによって、変数21に対する定数名22の使い方を正しく統一することができる。よって、定数名22に間違いのない安定したプログラム19を作成することが可能となる。
ちなみに、このような、定数名22の間違いは、類似した定数名22が異なる変数21に対して使われているような場合などに特に生じ易い。また、複数の開発者がプログラム19を同時並行的に作成しているような場合などには、間違いに気付き難い状況に陥る可能性が高い。
そして、誤って使用した定数名22と、本来使用すべきであった定数名22とが、偶然に同一の値を有している場合には、プログラム19は正しい実行結果を出してしまうことから、プログラム19が誤動作を起こしていても表面的には誤動作に見えないので、バグのないプログラム19と判断されて、間違いが見逃されてしまう。
しかし、例えば、プログラム19の仕様を変更するために、正しい定数名22に対する具体的な値を変更したような場合に、間違って使用された定数名22の値が変更されずにそのまま残ってしまうので、正しい処理結果が得られなくなる。そのため、この段階で誤動作が表面化し、プログラム19ミスが後から発覚して、混乱を招くことになる。
そこで、上記したように、開発の段階で定数名22の間違いを一括して自動的にチェックするようにすれば、上記したような、類似した別の定数名22を間違って使用してしまうなどの誤りをなくして、プログラム19の開発を容易化することができる。また、仕様の変更による誤動作の表面化などを防いで、プログラム19の信頼性を高めることができる。
また、警告発生処理57を、プログラム19で使用される全ての変数21に対する対比処理56が終了した後に、変数21に対して間違った定数名22が使用されていると判断した情報を警告するものとした。これにより、全ての変数21についての定数名22の間違いを一括して警告することができる。以って、プログラム19の開発効率を向上することができる。
以上、この発明の実施例を図面により詳述してきたが、実施例はこの発明の例示にしか過ぎないものである。よって、この発明は実施例の構成にのみ限定されるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもこの発明に含まれることは勿論である。また、例えば、各実施例に複数の構成が含まれている場合には、特に記載がなくとも、これらの構成の可能な組合せが含まれることは勿論である。また、複数の実施例や変形例がこの発明のものとして開示されている場合には、特に記載がなくとも、これらに跨がった構成の組合せのうちの可能なものが含まれることは勿論である。また、図面に描かれている構成については、特に記載がなくとも、含まれることは勿論である。更に、「等」の用語がある場合には、同等のものを含むという意味で用いられている。また、「ほぼ」「約」「程度」などの用語がある場合には、常識的に認められる範囲や精度のものを含むという意味で用いられている。
17 データディクショナリ
19 プログラム
21 変数
22 定数名
55 定数名抽出処理
56 対比処理
57 警告発生処理
19 プログラム
21 変数
22 定数名
55 定数名抽出処理
56 対比処理
57 警告発生処理
Claims (2)
- 少なくとも、使用する全ての変数と、該各変数が取り得る複数の値の各々に対して割り当てられた定数名と、を定義して登録したデータディクショナリに基いて作成されたプログラムまたは作成中のプログラムに対し、
該プログラムで使用した変数と、該変数の値として使用した定数名とを抽出する定数名抽出処理と、
該定数名抽出処理で抽出された定数名と、前記データディクショナリとを対比して、「その変数のものではない定数名が使われているかどうか」を調べる対比処理と、
該対比処理での対比の結果、定数名が一致しないことにより、変数に対して間違った定数名が使用されていると判断した場合に、警告を発生する警告発生処理と、を行うことを特徴とする変数チェック方法。 - 請求項1に記載の変数チェック方法であって、
前記警告発生処理は、前記プログラムで使用される全ての変数に対する前記対比処理が終了した後に、変数に対して間違った定数名が使用されていると判断した情報を警告することを特徴とする変数チェック方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014069021A JP2015191492A (ja) | 2014-03-28 | 2014-03-28 | 変数チェック方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014069021A JP2015191492A (ja) | 2014-03-28 | 2014-03-28 | 変数チェック方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015191492A true JP2015191492A (ja) | 2015-11-02 |
Family
ID=54425921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014069021A Pending JP2015191492A (ja) | 2014-03-28 | 2014-03-28 | 変数チェック方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015191492A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019106153A (ja) * | 2017-12-14 | 2019-06-27 | 富士通株式会社 | 情報処理装置、分析プログラムおよび分析方法 |
CN111444618A (zh) * | 2020-03-30 | 2020-07-24 | 北京润科通用技术有限公司 | 一种基于变量字典的仿真方法及装置 |
-
2014
- 2014-03-28 JP JP2014069021A patent/JP2015191492A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019106153A (ja) * | 2017-12-14 | 2019-06-27 | 富士通株式会社 | 情報処理装置、分析プログラムおよび分析方法 |
CN111444618A (zh) * | 2020-03-30 | 2020-07-24 | 北京润科通用技术有限公司 | 一种基于变量字典的仿真方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8812276B2 (en) | Determining model components suitable for verification analysis | |
US8627290B2 (en) | Test case pattern matching | |
JP2795244B2 (ja) | プログラムデバッグシステム | |
JP5775829B2 (ja) | ソフトウェアの構造可視化プログラムおよびシステム | |
US9418230B2 (en) | Automated tools for building secure software programs | |
US9424168B2 (en) | System and method for automatic generation of software test | |
JP2017041171A (ja) | テストシナリオ生成支援装置およびテストシナリオ生成支援方法 | |
JP5845888B2 (ja) | ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム | |
Bender et al. | Signature required: Making Simulink data flow and interfaces explicit | |
BR102016007125B1 (pt) | Sistema para visualizar um procedimento de aeronave e método para visualizar um procedimento de aeronave | |
WO2016122508A1 (en) | Test generation for browser-based user interface | |
Suman et al. | Extracting State Models for Black-Box Software Components. | |
US10802852B1 (en) | Method for interactive embedded software debugging through the control of simulation tracing components | |
JP2015191492A (ja) | 変数チェック方法 | |
JP6567212B2 (ja) | 等価性検証装置および等価性検証プログラム | |
US9280627B1 (en) | GUI based verification at multiple abstraction levels | |
AU2018454814B2 (en) | Systems and methods for development of web products | |
Luckow et al. | Symbolic pathfinder v7 | |
US9600245B2 (en) | Computer-implemented method for generating control unit program code and message management environment relating thereto | |
JP2009169573A (ja) | 解析結果出力装置、及び解析結果出力方法 | |
US10969429B1 (en) | System and method for debugging in concurrent fault simulation | |
US9442701B1 (en) | Verifying models for exceptional behavior | |
Ghosh et al. | An empirical study of a hybrid code clone detection approach on java byte code | |
US20170131973A1 (en) | Software specification dependence relation verification apparatus and software specification dependence relation verification method | |
US20150199183A1 (en) | Program analysis apparatus and program analysis method |