(57)【要約】【課題】プログラムに対する試験の工数を削減する。【解決手段】画面生成プログラム解析部１０３が、複数の要素ブロックで構成され、要素ブロックに変数が含まれる画面生成プログラム１０１を解析し、ＩＤ出力コード埋込処理部１０４及び変数出力コード埋込処理部１０５が、変数ごとに、変数と当該変数が含まれる要素ブロックとを対応付け、対応付けの結果をＩＤ／変数保持部１０に保存する。画面生成プログラム１０１の実行結果であるＧＵＩ画面が規約に違反し、違反の直接の原因である要素ブロックが違反比較部１０８により直接原因要素ブロックとして抽出された場合に、違反原因特定部１０９が、ＩＤ／変数保持部１０内の対応付け情報において直接原因要素ブロックと共通する変数と対応付けられている他の要素ブロックのうち、画面生成プログラム１０１において直接原因要素ブロックよりも前に記述されている１つ以上の要素ブロックを抽出する。【選択図】図１
2013061893.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる１つ以上の要素ブロックとを対応付けるプログラム解析対応付け部と、
前記プログラム解析対応付け部による変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶部と、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている１つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出部とを有することを特徴とする情報処理装置。
【請求項２】
前記要素ブロック抽出部は、
抽出した先行要素ブロックを解析して、抽出した先行要素ブロックの中から、前記違反の根本の原因を作り出した根本原因要素ブロックを抽出することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記要素ブロック抽出部は、
先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、前記根本原因要素ブロックで行われる前記原因変数を用いた演算の内容及び前記根本原因要素ブロックでの前記原因変数の値の少なくともいずれかを抽出することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記要素ブロック抽出部は、
先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、先行要素ブロックごとに、先行要素ブロックで行われる前記原因変数を用いた演算の内容及び先行要素ブロックでの前記原因変数の値の少なくともいずれかを抽出することを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
前記プログラム解析対応付け部は、
前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる１つ以上の要素ブロックとを対応付けるとともに、対応付けられた要素ブロックで行われる当該変数を用いた演算の内容及び対応付けられた要素ブロックでの当該変数の値の少なくともいずれかを抽出し、
変数と要素ブロックとの対応付けが示され、更に、要素ブロックでの演算の内容及び要素ブロックでの変数の値の少なくともいずれかが示される対応付け情報を生成し、
前記対応付け情報記憶部は、
前記プログラム解析対応付け部により生成された対応付け情報を記憶し、
前記要素ブロック抽出部は、
先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、前記対応付け情報を用いて、前記根本原因要素ブロックで行われる前記原因変数を用いた演算の内容及び前記根本原因要素ブロックでの前記原因変数の値の少なくともいずれかを抽出することを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記プログラム解析対応付け部は、
変数を用いた演算が行われる要素ブロックに対して、当該演算の内容を表すコメント形式のコードを前記プログラムに埋め込み、
変数に値が代入される要素ブロックに対して、代入される変数の値を表すコメント形式のコードを前記プログラムに埋め込むことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記要素ブロック抽出部は、
前記直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも後に記述されている要素ブロックを抽出することを特徴とする請求項１〜６のいずれかに記載の情報処理装置。
【請求項８】
前記情報処理装置は、更に、
前記要素ブロック抽出部による抽出結果を表示する表示部を有することを特徴とする請求項１〜７のいずれかに記載の情報処理装置。
【請求項９】
前記プログラム解析対応付け部は、
ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面を生成するためのプログラムを解析することを特徴とする請求項１〜８のいずれかに記載の情報処理装置。
【請求項１０】
コンピュータが、複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる１つ以上の要素ブロックとを対応付けるプログラム解析対応付けステップと、
前記コンピュータが、前記プログラム解析対応付けステップによる変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶ステップと、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記コンピュータが、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている１つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出ステップとを有することを特徴とする情報処理方法。
【請求項１１】
複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる１つ以上の要素ブロックとを対応付けるプログラム解析対応付けステップと、
前記プログラム解析対応付けステップによる変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶ステップと、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている１つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出ステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを検査する技術に関する。
例えば、本発明は、動的に生成する画面を利用するシステムの開発において、画面を生成するプログラムを検査する技術に関する。
【背景技術】
【０００２】
ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面を備えたシステムの開発を行う場合には、ＧＵＩ画面のレイアウトの見かけやシステム全体での統一性が顧客から求められるため、開発前に、ＧＵＩ部品の配置位置や色等のＧＵＩ画面レイアウトに関する共通的な規約をＧＵＩ画面レイアウト規約として定めて文書化し、その内容に沿ってＧＵＩ画面の設計を行うことが一般的である。
このようにして設計したＧＵＩ画面について、ＧＵＩ画面レイアウト規約に合致しているか否かの検査を試験時に行う必要があるが、検査を自動化する技術として、ＧＵＩ画面レイアウト規約をデータベースとして持つことで自動で検査する技術が提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２４７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ｗｅｂシステム等の開発においては、ＪＳＰ（登録商標）（Ｊａｖａ（登録商標）Ｓｅｒｖｅｒ  Ｐａｇｅｓ）やＡＳＰ（Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ）等、開発者自身は直接ＧＵＩ画面を作成せず、パラメータを与えることによって画面生成プログラムが動的にＧＵＩ画面を作成する「動的画面生成技術」を用いるシステムも数多く存在する。
動的画面生成技術を用いたシステムにおいても、ＧＵＩ画面が規約に合致しているか否かを検査する必要があるが、特許文献１の技術では、ＧＵＩ画面そのものの違反が発見できても、その原因となった画面生成プログラムの違反箇所を特定することができない。
また、ＧＵＩ画面に違反があった場合に、違反の原因となる変数の値や演算など、詳細な違反の原因も特定することができない。
このため、試験担当者が画面生成プログラムを目で見て判断しながら違反箇所を特定しなければならず、更に、違反箇所を特定した後も、試験担当者が違反箇所のプログラムを目で見て判断しながら違反の詳細について確認しなければならず、試験担当者の負担となっている。
【０００５】
本発明は、上記のような事情に鑑みたものであり、プログラムの実行結果の少なくとも一部が所定の規約に違反する場合に、当該プログラムの検査を容易にし、試験工数を削減することを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、
複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる１つ以上の要素ブロックとを対応付けるプログラム解析対応付け部と、
前記プログラム解析対応付け部による変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶部と、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている１つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、直接原因要素ブロックと対応付けられている変数と対応付け情報において対応付けられている他の要素ブロックのうち、プログラムにおいて直接原因要素ブロックよりも前に記述されている１つ以上の要素ブロックを先行要素ブロックとして抽出するため、試験担当者が確認すべき要素ブロックを先行要素ブロックに限定することができ、試験担当者の負担を軽減することができ、試験工数を削減することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１における動的生成画面検査装置のシステム構成例を示す図。
【図２】実施の形態１の入力データとなる画面生成プログラムとパラメータの一例を示す図。
【図３】実施の形態１の画面生成プログラムに対してＩＤ出力コードを埋め込んだ一例を示す図。
【図４】実施の形態１の画面生成プログラムに対してＩＤ出力コードと変数出力コードを埋め込んだ一例を示す図。
【図５】実施の形態１のＩＤ対応マップの例を示す図。
【図６】実施の形態１の変数対応マップの例を示す図。
【図７】実施の形態１における違反原因特定部の動作例を示すフローチャート図。
【図８】実施の形態１のＩＤ対応マップの例を示す図。
【図９】実施の形態１の変数対応マップの例を示す図。
【図１０】実施の形態１の動的生成画面検査装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
本実施の形態では、動的に画面を生成するシステムにおいてＧＵＩ画面がＧＵＩ画面レイアウト規約に合致するか検査する際、違反がある場合に違反するＧＵＩ画面を生成した画面生成プログラムにおける違反原因部分とその詳細の特定を可能とし、試験工数を削減する構成を説明する。
より具体的には、例えば以下の手順で動作する動的生成画面検査装置を説明する。
まず、動的生成画面検査装置は、画面生成プログラムに対して、生成元と生成後の対応を保持するためのＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）とその時の変数や行った演算を出力するコードを埋め込みつつ、その対応情報を情報記憶装置に保管する。
次に、動的生成画面検査装置は、コードを埋め込んだ画面生成プログラムにパラメータを与え、実際にＧＵＩ画面を生成して、例えば既存技術によって検査を行い、違反の有無を確認する。
そして、動的生成画面検査装置は、違反が発生した場合は、埋め込まれたコードによって出力されるＩＤ／変数情報と情報記憶装置の対応情報から、生成元となる画面生成プログラムの原因部分を特定する。
さらに、動的生成画面検査装置は、情報記憶装置の変数の演算情報から違反発生時の変数が生じた原因となる演算を特定する。
【００１０】
図１は、本実施の形態に係る動的生成画面検査装置１００のシステム構成例を示す図である。
動的生成画面検査装置１００は、情報処理装置の例である。
【００１１】
画面生成プログラム１０１は、動的にＧＵＩ画面を生成するためのソースコードである。
画面生成プログラム１０１は、例えば、図２で示されるソースコードであり、動的画面を生成するためのソースコードである必要がある。
図２では、その一例としてＪＳＰ（登録商標）言語で書かれたソースコードの一部分を示している。
画面生成プログラム１０１は、複数の要素ブロック（図２の各行に記述されているコード）で構成され、いずれかの要素ブロックに変数が含まれている。
そして、画面生成プログラム１０１内の変数の値をパラメータ１０２によって変化させることで動的にＧＵＩ画面を生成することができる。
【００１２】
パラメータ１０２は、画面生成プログラム１０１が動的にＧＵＩ画面を生成するために受け取る値である。
例えば、図２で示されるパラメータであり、画面生成プログラム１０１の変数にパラメータ１０２を与えることにより、ＧＵＩ画面の生成ができる。
【００１３】
画面生成プログラム解析部１０３は、画面生成プログラム１０１を解析し、プログラムとして読み込む。
画面生成プログラム解析部１０３では、画面生成プログラム１０１からＧＵＩ画面を構成する要素と変数の代入や演算を構文解析によって探し出し、ＩＤ出力コードと変数出力コードを埋め込むべき部分を判断する。
ＩＤ出力コードに関しては、ＧＵＩ画面の生成元と生成したＧＵＩ画面の対応の取得と変数の代入や演算の場所を保持するために埋め込むものであるので、解析を単純化して全ての行に対してＩＤを付与するという判断を行う方法もある。
【００１４】
ＩＤ出力コード埋込処理部１０４は、生成元の画面生成プログラムと生成するＧＵＩ画面の対応を取るためのＩＤ出力コードを埋め込む。
ＩＤ出力コード埋込処理部１０４は、画面生成プログラム解析部１０３によってＩＤ出力コードを埋め込むべき部分として判断された箇所に対して、一意となるＩＤを出力するコード（ＩＤ出力コード）を埋め込む。
ＧＵＩ画面の構成要素部分と変数出現部分に対してＩＤ出力コードを埋め込んだ一例が図３である。
図３において、符号３０１〜３０５で示した文字列がＩＤ出力コードである。
図３では、ＩＤ出力コードとしてＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）言語のコメントでＩＤを出力するＪＳＰ（登録商標）コードを埋め込んでいる。
また、この時、ＩＤ出力コード埋込処理部１０４は、ＩＤ出力コードを埋め込んだ部分とＩＤの対応をマップとしてＩＤ／変数保持部１０に保存する。
なお、ＩＤ／変数保持部１０については後述する。
【００１５】
変数出力コード埋込処理部１０５は、画面生成プログラム１０１において変数の代入や演算が発生する場所での変数の値を出力させるコード（変数出力コード）を埋め込む。
変数出力コード埋込処理部１０５は、画面生成プログラム解析部１０３によって変数出力コードを埋め込むべき部分として判断された箇所に対して、その時の変数の値を出力する変数出力コードを埋め込む。
変数出現部分に対して変数出力コードを埋め込んだ一例が図４である。
図４において、符号４０１〜４０４で示した文字列が変数出力コードである。
図４では、変数に対する代入や変数が利用されている部分に対して、その時の変数の値をコメントとして出力するコードを埋め込んでいる。
この時、変数出力コード埋込処理部１０５は、ＩＤ／変数保持部１０のＩＤ対応マップに対して、変数出力コードの情報を追加する。
また、変数出力コード埋込処理部１０５は、その際に変数に対して行った処理の情報をＩＤ／変数保持部１０の変数対応マップに保存する。
【００１６】
ＩＤ／変数保持部１０は、ＩＤ出力コード埋込処理部１０４と変数出力コード埋込処理部１０５で埋め込んだコードのデータを保持する情報記憶装置である。
ＩＤ／変数保持部１０は、ＩＤ出力コードを埋め込んだ部分と対応するＩＤのマップと、変数出力コードを埋め込んだ部分と対応する変数への演算のマップを保持している。
ＩＤ対応マップの一例が図５である。
図５では、埋め込んだＩＤ出力コードのＩＤ、対応するコード部分（要素ブロック）、出現する変数、付帯条件を保持している。
変数対応マップの一例が図６である。
変数対応マップでは、変数名に対して出現したＩＤと行われた演算、その時の変数の値を保持している。
パラメータによって変化する変数の値は、画面生成が行われた時点で入力する。
【００１７】
以上に示したように、画面生成プログラム解析部１０３は、画面生成プログラム１０１を解析し、ＩＤ出力コード埋込処理部１０４は、画面生成プログラム解析部１０３の解析結果に従って、画面生成プログラム１０１にＩＤ出力コードを埋め込むとともに、ＩＤ対応マップ（図５）を生成する。
更に、変数出力コード埋込処理部１０５は、画面生成プログラム解析部１０３の解析結果に従って、画面生成プログラム１０１に変数出力コードを埋め込むとともに、変数対応マップ（図６）を生成する。
ＩＤ対応マップと変数対応マップにより、画面生成プログラム１０１に含まれる変数ごとに、変数と当該変数が含まれる１つ以上の要素ブロックとが対応付けられている。
また、変数対応マップには、画面生成プログラム１０１に含まれる変数ごとに、ＩＤ対応マップにおいて変数と対応付けられている要素ブロックで行われる当該変数を用いた演算の内容及び要素ブロックでの当該変数の値の少なくともいずれかが示されている。
ＩＤ対応マップと変数対応マップは対応付け情報の例である。
画面生成プログラム解析部１０３、ＩＤ出力コード埋込処理部１０４及び変数出力コード埋込処理部１０５は、プログラム解析対応付け部の例である。
また、ＩＤ対応マップと変数対応マップを記憶するＩＤ／変数保持部１０は対応付け情報の例である。
【００１８】
画面生成処理部１０６は、ＩＤ出力コードと変数出力コードを埋め込んだ画面生成プログラム１０１とパラメータ１０２を受け取り、ＧＵＩ画面を生成する。
ＧＵＩ画面生成のための機構は、動的生成画面検査装置１００の内部で備えても良いが、動的生成画面検査装置１００の外部で画面生成させてもよい。
この時生成されるＧＵＩ画面コードは、ＩＤ出力コード埋込処理部１０４と変数出力コード埋込処理部１０５において埋め込んだコードの情報を保持している。
画面生成には、ＩＤ出力コードと変数出力コードを埋め込んだ画面生成プログラム１０１に加えて、動的生成画面検査装置１００の入力であるパラメータ１０２も利用する。
【００１９】
画面レイアウトチェック処理部１０７は、従来技術（例えば、特許文献１に記載の技術）を利用して、画面生成処理部１０６で生成されたＧＵＩ画面が画面レイアウト規約に合致するか否かを検査する。
この検査により違反が発生した場合は、生成したＧＵＩ画面における違反箇所を特定したうえで違反比較部１０８の処理に移る。
違反が発生しない場合は、画面レイアウトチェック処理部１０７は、画面生成プログラム１０１とパラメータ１０２を、ＧＵＩ画面レイアウト規約に沿うＧＵＩ画面を出力する画面生成プログラムとパラメータであると判断する。
【００２０】
違反比較部１０８は、画面レイアウトチェック処理部１０７における検査の結果を受け、違反があった場合にＩＤ／変数保持部１０のデータと照らし合わせ、画面生成プログラムのどこが原因であるかを特定する。
つまり、違反比較部１０８は、違反の直接の原因となっている要素ブロック（直接原因要素ブロックともいう）を抽出する。
画面レイアウトチェック処理部１０７において特定されたＧＵＩ画面の違反箇所は、ＩＤ出力コードの埋め込みによってＩＤが出力されているため、違反比較部１０８は、この情報を利用して違反箇所と対応する生成元の画面生成プログラムの部分を特定する。
【００２１】
違反原因特定部１０９は、違反比較部１０８で明らかになる違反箇所（直接原因要素ブロック）において利用されている変数や演算を確認し、違反の原因となった変数の値や演算を特定する。
違反原因特定部１０９は、ＩＤ／変数保持部１０のＩＤ対応マップと変数対応マップから、違反が発生した際の変数の値と、その変数の値を取ることになった原因となる演算をマップから特定する。
より具体的には、違反原因特定部１０９は、違反比較部１０８によって抽出された直接原因要素ブロックとＩＤ対応マップ及び変数対応マップにおいて対応付けられている変数がある場合に、直接原因要素ブロックと対応付けられている変数と変数対応マップにおいて対応付けられている他の要素ブロックのうち、画面生成プログラム１０１において直接原因要素ブロックよりも前に記述されている１つ以上の要素ブロックを先行要素ブロックとして抽出する。
更に、違反原因特定部１０９は、変数対応マップを用いて、抽出した先行要素ブロックを解析して、抽出した先行要素ブロックの中から、違反の根本の原因を作り出した要素ブロック（根本原因要素ブロックともいう）を抽出し、先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、根本原因要素ブロックで行われる原因変数を用いた演算の内容及び根本原因要素ブロックでの原因変数の値の少なくともいずれかを抽出する。
【００２２】
表示部１１０は、画面レイアウトチェック処理部１０７により違反なしと判断された場合は、生成されたＧＵＩ画面に違反がないことを通知するメッセージ１１２を動的生成画面検査装置１００のユーザに表示する。
一方、画面レイアウトチェック処理部１０７により違反ありと判断された場合は、表示部１１０は、違反箇所や違反原因を通知するメッセージ１１１を動的生成画面検査装置１００のユーザに表示する。
メッセージ１１１では、違反比較部１０８により特定された直接原因要素ブロック、違反原因特定部１０９により特定された根本原因要素ブロック、原因変数、根本原因要素ブロックで行われる原因変数を用いた演算の内容、根本原因要素ブロックでの原因変数の値等が示される。
【００２３】
次に、動作について説明する。
【００２４】
まず、動的生成画面検査装置１００の入力として、画面生成プログラム解析部１０３が、画面生成プログラム１０１とパラメータ１０２を受け取る。
入力された画面生成プログラム１０１は、画面生成プログラム解析部１０３においてプログラムとして読み込まれ、画面生成プログラム解析部１０３は、ＩＤ出力コードを埋め込むべき場所を漏れ無く判断する。
解析された画面生成プログラム１０１は、ＩＤ出力コード埋込処理部１０４でＩＤ出力コードを埋め込まれる。
同時に、ＩＤ出力コード埋込処理部１０４は、ＩＤと対応するコード部分をＩＤ／変数保持部１０に保存する。
つまり、ＩＤ出力コード埋込処理部１０４は、図５に例示したＩＤ対応マップを生成し、ＩＤ／変数保持部１０に格納する。
また、ＩＤ出力コード埋込処理部１０４と同様、画面生成プログラム１０１は変数出力コード埋込処理部１０５で変数出力コードを埋め込まれる。
同時に、変数出力コード埋込処理部１０５は、変数と対応するコード部分をＩＤ／変数保持部１０に保存する。
つまり、変数出力コード埋込処理部１０５は、図６に例示した変数対応マップを生成し、ＩＤ／変数保持部１０に格納する。
【００２５】
次に、画面生成処理部１０６が、ＩＤ出力コードと変数出力コードを埋め込んだ画面生成プログラム１０１とパラメータ１０２からＧＵＩ画面を生成する。
生成されたＧＵＩ画面は、画面レイアウトチェック処理部１０７で検査を行い、違反が無ければ終了し、違反があればＧＵＩ画面コードにおける違反箇所を特定して違反比較部１０８に結果を渡す。
【００２６】
ＧＵＩ画面コードに違反があれば、違反比較部１０８が、ＩＤ／変数保持部１０に保存されたＩＤ対応マップと変数対応マップを利用して、ＧＵＩ画面の違反箇所が画面生成プログラム１０１のどこと対応するかを判断し、違反の原因となったコード部分（直接原因要素ブロック）を探し出す。
違反比較部１０８による直接原因要素ブロックの探知は、例えば、特開２００１−３０６３１０号公報に記載の技術を用いて実現可能である。
【００２７】
次に、違反原因特定部１０９が、違反比較部１０８で明らかになった違反原因コード部分（直接原因要素ブロック）から、使用されている変数と値に加え、その値になった原因の演算を特定し、違反の原因を示すメッセージ１１１を生成し、表示部１１０がメッセージ１１１を出力する。
【００２８】
図７のフローチャートを用いて、違反原因特定部１０９の動作について説明する。
【００２９】
まず、違反箇所対応ＩＤ検索処理２０１において、違反原因特定部１０９は、違反が発生している部分（直接原因要素ブロック）と対応するＩＤをＩＤ／変数保持部１０のＩＤ対応マップから検索する。
ＩＤ対応マップには、そのＩＤのコード部分で出現する変数も保持されているため、違反原因特定部１０９は、出現変数特定処理２０２で出現する変数を特定する。
直接原因要素ブロックに変数が出現しない場合、変数でない部分による違反であり、静的に違反が発見できる部分であるため、その時点で違反特定を終了する。
直接原因要素ブロックに変数が出現する場合（処理２０３でＹＥＳ）、違反原因特定部１０９は、ＩＤ／変数保持部１０の変数対応マップから出現する変数を探し出し、その演算を検索する（処理２０４）。
そして、違反原因特定部１０９は、違反の原因となる変数の値を計算した演算として、違反から近い順序で違反原因としての優先度を決定し、出力する（処理２０５）。
【００３０】
図４、図５及び図６の例を用いて、違反原因特定部１０９の動作を説明する。
【００３１】
例えば、違反比較部１０８が図４の＜ｆｏｎｔ  ｓｉｚａ＝＜％＝ａ  ％＞ｔｅｓｔ＜／ｆｏｎｔ＞を直接原因要素ブロックとして特定した場合に、違反原因特定部１０９は、ＩＤ対応マップ（図５）から、直接原因要素ブロックに対応するＩＤとして「５」を抽出する（図７の処理２０１）。
また、違反原因特定部１０９は、ＩＤ対応マップ（図５）から、直接原因要素ブロックで出現する変数として、「ａ」を抽出する（図７の処理２０２）。
この変数ａが原因変数となる。
次に、違反原因特定部１０９は、変数対応マップ（図６）から、変数ａが出現する先行する要素ブロック（ＩＤ＝１の要素ブロック）を根本原因要素ブロックとして抽出するとともに、更に、根本原因要素ブロックにおける変数ａでの演算内容（「ｄｅｃｌａｒａｔｉｏｎ」）と根本原因要素ブロックで代入された値（「６」）を抽出する。
そして、違反原因特定部１０９は、直接原因要素ブロックとして＜ｆｏｎｔ  ｓｉｚａ＝＜％＝ａ  ％＞ｔｅｓｔ＜／ｆｏｎｔ＞を示し、直接原因要素ブロックで出現する原因変数として「ａ」を示し、根本原因要素ブロックとして＜％  ａ＝６  ％＞を示し、根本原因要素ブロックにおける変数ａでの演算内容として「ｄｅｃｌａｒａｔｉｏｎ」を示し、根本原因要素ブロックで代入された値として「６」を示すメッセージ１１１を生成し（図７の処理２０５）、表示部１１０がメッセージ１１１を表示する。
【００３２】
なお、本実施の形態では、説明の簡明のため、図２に示すような単純な画面生成プログラム１０１を例にして説明を行った。
このため、変数対応マップも図６に示すような単純な内容となっており、直接原因要素ブロックとして抽出されたＩＤ＝５の要素ブロックに先行する要素ブロックはＩＤ＝１の要素ブロックのみであった。
つまり、図６の例では、直接原因要素ブロック（ＩＤ＝５の要素ブロック）に先行する唯一の要素ブロック（ＩＤ＝１の要素ブロック）を機械的に根本原因要素ブロックとして導出することになる。
しかし、実際の運用では、変数対応マップにおいて、１つの変数に対する対応ＩＤが多数になることが想定される。
１つの変数に対する対応ＩＤが多数ある場合、違反原因特定部１０９は、変数対応マップにおいて直接原因要素ブロックと共通する変数と対応付けられている他の要素ブロックのうち、画面生成プログラム１０１において直接原因要素ブロックよりも前に記述されている要素ブロックを先行要素ブロックとして抽出し、抽出した先行要素ブロックを解析して、抽出した先行要素ブロックの中から、違反の根本の原因を作り出した根本原因要素ブロックを抽出することになる。
違反原因特定部１０９は、各先行要素ブロックについて変数対応マップに記述されている演算内容及び値を参照して、先行要素ブロックに対する解析を行う。
一般的に、変数対応マップの演算内容の欄に「ｄｅｃｌａｒａｔｉｏｎ」と記述されている要素ブロックが根本原因要素ブロックとして抽出される。
【００３３】
また、メッセージ１１１に、根本原因要素ブロックだけではなく、根本原因要素ブロックとして認定されなかった先行要素ブロックの各々を表示するようにしてもよい。
【００３４】
また、違反原因特定部１０９は、先行要素ブロックの抽出のみを行い、根本原因要素ブロックの特定を行わなくてもよい。
この場合は、メッセージ１１１には、違反原因特定部１０９により抽出された先行要素ブロックの各々が表示される。
また、この場合に、メッセージ１１１に、先行要素ブロックの各々で行われる原因変数を用いた演算の内容や先行要素ブロックの各々における原因変数の値を表示するようにしてもよい。
【００３５】
更には、違反原因特定部１０９は、変数対応マップにおいて直接原因要素ブロックと共通する変数と対応付けられている他の要素ブロックのうち、画面生成プログラム１０１において直接原因要素ブロックよりも後に記述されている要素ブロックを抽出してもよく、メッセージ１１１に、この要素ブロックを表示するようにしてもよい。
【００３６】
また、本実施の形態では、画面生成プログラム１０１にＩＤ出力コードと変数出力コードを埋め込み、ＩＤ出力コードと変数出力コードを用いて、図５に示すＩＤ対応マップ及び図６に示す変数対応マップを生成する例を説明した。
しかし、画面生成プログラム１０１に含まれる変数ごとに、変数と当該変数が含まれる１つ以上の要素ブロックとを対応付けることができ、また、要素ブロックで行われる演算の内容及び要素ブロックでの変数の値を対応付けることができれば、ＩＤ出力コードと変数出力コードを埋め込まなくてもよく、また、図５に示す形式のＩＤ対応マップでなくてもよく、図６に示す形式の変数対応マップでなくてもよい。
例えば、図８及び図９に示すテーブルのように、ＩＤ出力コードと変数出力コードを用いることなく、要素ブロックと出現変数とを対応付け、変数ごとに、要素ブロックで行われる演算の内容及び要素ブロックでの変数の値を対応付けるようにしてもよい。
【００３７】
以上、本実施の形態に係る動的生成画面検査装置１００では、画面生成プログラム１０１とパラメータ１０２から動的に生成されるＧＵＩ画面について、ＧＵＩ画面レイアウト規約に合致するか否かを確認し、違反が発生する場合は画面生成プログラム１０１の原因部分を特定し、さらにその時の変数の値や演算を特定することによってより詳細な違反原因を自動で調査することが可能となる。
つまり、ＧＵＩ画面がＧＵＩ画面レイアウト規約に合致するか否かを検査する際に、違反が発生するＧＵＩ画面を出力する画面生成プログラムとパラメータが与えられた時、違反が発生するＧＵＩ画面を生成する原因となった箇所を画面生成プログラムから自動的に特定し、さらにそのときの変数や違反に至るまでに行った演算を自動で得ることが可能となる。
これにより、動的画面生成技術を用いたシステムの開発において、試験担当者の負荷軽減による作業時間の短縮や試験効率の向上が期待できる。
また、自動で違反原因を特定することにより、人為的なミスによる違反原因の見落としも無くなり、精密な違反原因の特定が可能となる。
【００３８】
以上、本実施の形態では、
動的に画面を生成するための画面生成プログラムと、
ＧＵＩ画面を生成するためのパラメータと、
画面生成プログラムを解析する画面生成プログラム解析部と、
解析した画面生成プログラムにＩＤ出力コードを埋め込むＩＤ出力コード埋込処理部と、
解析した画面生成プログラムに変数出力コードを埋め込む変数出力埋込処理部と、
ＩＤ出力コード埋込処理部と変数出力コード埋込処理部で埋め込んだＩＤと変数の情報を保持するＩＤ／変数保持部と、
生成した画面に違反があった場合に違反の原因箇所を特定する違反比較部と、
違反が発生した原因となる変数の値と演算等を特定する違反原因特定部を備えた動的生成画面検査方式及び装置を説明した。
【００３９】
また、本実施の形態では、上記の違反比較部と違反原因特定部において、違反箇所の特定及び違反原因となる詳細な変数の値や演算を特定可能であることを説明した。
【００４０】
最後に、本実施の形態に示した動的生成画面検査装置１００のハードウェア構成例について説明する。
図１０は、本実施の形態に示す動的生成画面検査装置１００のハードウェア資源の一例を示す図である。
なお、図１０の構成は、あくまでも動的生成画面検査装置１００のハードウェア構成の一例を示すものであり、動的生成画面検査装置１００のハードウェア構成は図１０に記載の構成に限らず、他の構成であってもよい。
【００４１】
図１０において、動的生成画面検査装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
本実施の形態で説明した「ＩＤ／変数保持部１０」は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００４２】
通信ボード９１５は、例えば、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００４３】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００４４】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００４５】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
動的生成画面検査装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００４６】
上記プログラム群９２３には、本実施の形態の説明において「〜部」（「ＩＤ／変数保持部１０」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。
プログラムは、ＣＰＵ９１１により読み出され実行される。
【００４７】
ファイル群９２４には、本実施の形態の説明において、「〜の解析」、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の対応付け」、「〜の特定」、「〜の比較」、「〜の生成」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００４８】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【００４９】
このように、本実施の形態に示す動的生成画面検査装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００５０】
１０  ＩＤ／変数保持部、１００  動的生成画面検査装置、１０１  画面生成プログラム、１０２  パラメータ、１０３  画面生成プログラム解析部、１０４  ＩＤ出力コード埋込処理部、１０５  変数出力コード埋込処理部、１０６  画面生成処理部、１０７  画面レイアウトチェック処理部、１０８  違反比較部、１０９  違反原因特定部、１１０  表示部、１１１  メッセージ、１１２  メッセージ。
【図１】
2013061893.tif 000003
【図２】
2013061893.tif 000004
【図３】
2013061893.tif 000005
【図４】
2013061893.tif 000006
【図５】
2013061893.tif 000007
【図６】
2013061893.tif 000008
【図７】
2013061893.tif 000009
【図８】
2013061893.tif 000010
【図９】
2013061893.tif 000011
【図１０】
2013061893.tif 000012