説明

情報処理装置及び情報処理方法及びプログラム

【課題】プログラムに対する試験の工数を削減する。
【解決手段】画面生成プログラム解析部103が、複数の要素ブロックで構成され、要素ブロックに変数が含まれる画面生成プログラム101を解析し、ID出力コード埋込処理部104及び変数出力コード埋込処理部105が、変数ごとに、変数と当該変数が含まれる要素ブロックとを対応付け、対応付けの結果をID/変数保持部10に保存する。画面生成プログラム101の実行結果であるGUI画面が規約に違反し、違反の直接の原因である要素ブロックが違反比較部108により直接原因要素ブロックとして抽出された場合に、違反原因特定部109が、ID/変数保持部10内の対応付け情報において直接原因要素ブロックと共通する変数と対応付けられている他の要素ブロックのうち、画面生成プログラム101において直接原因要素ブロックよりも前に記述されている1つ以上の要素ブロックを抽出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムを検査する技術に関する。
例えば、本発明は、動的に生成する画面を利用するシステムの開発において、画面を生成するプログラムを検査する技術に関する。
【背景技術】
【0002】
GUI(Graphical User Interface)画面を備えたシステムの開発を行う場合には、GUI画面のレイアウトの見かけやシステム全体での統一性が顧客から求められるため、開発前に、GUI部品の配置位置や色等のGUI画面レイアウトに関する共通的な規約をGUI画面レイアウト規約として定めて文書化し、その内容に沿ってGUI画面の設計を行うことが一般的である。
このようにして設計したGUI画面について、GUI画面レイアウト規約に合致しているか否かの検査を試験時に行う必要があるが、検査を自動化する技術として、GUI画面レイアウト規約をデータベースとして持つことで自動で検査する技術が提案されている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−24748号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
webシステム等の開発においては、JSP(登録商標)(Java(登録商標)Server Pages)やASP(Active Server Pages)等、開発者自身は直接GUI画面を作成せず、パラメータを与えることによって画面生成プログラムが動的にGUI画面を作成する「動的画面生成技術」を用いるシステムも数多く存在する。
動的画面生成技術を用いたシステムにおいても、GUI画面が規約に合致しているか否かを検査する必要があるが、特許文献1の技術では、GUI画面そのものの違反が発見できても、その原因となった画面生成プログラムの違反箇所を特定することができない。
また、GUI画面に違反があった場合に、違反の原因となる変数の値や演算など、詳細な違反の原因も特定することができない。
このため、試験担当者が画面生成プログラムを目で見て判断しながら違反箇所を特定しなければならず、更に、違反箇所を特定した後も、試験担当者が違反箇所のプログラムを目で見て判断しながら違反の詳細について確認しなければならず、試験担当者の負担となっている。
【0005】
本発明は、上記のような事情に鑑みたものであり、プログラムの実行結果の少なくとも一部が所定の規約に違反する場合に、当該プログラムの検査を容易にし、試験工数を削減することを主な目的とする。
【課題を解決するための手段】
【0006】
本発明に係る情報処理装置は、
複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる1つ以上の要素ブロックとを対応付けるプログラム解析対応付け部と、
前記プログラム解析対応付け部による変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶部と、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている1つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出部とを有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、直接原因要素ブロックと対応付けられている変数と対応付け情報において対応付けられている他の要素ブロックのうち、プログラムにおいて直接原因要素ブロックよりも前に記述されている1つ以上の要素ブロックを先行要素ブロックとして抽出するため、試験担当者が確認すべき要素ブロックを先行要素ブロックに限定することができ、試験担当者の負担を軽減することができ、試験工数を削減することができる。
【図面の簡単な説明】
【0008】
【図1】実施の形態1における動的生成画面検査装置のシステム構成例を示す図。
【図2】実施の形態1の入力データとなる画面生成プログラムとパラメータの一例を示す図。
【図3】実施の形態1の画面生成プログラムに対してID出力コードを埋め込んだ一例を示す図。
【図4】実施の形態1の画面生成プログラムに対してID出力コードと変数出力コードを埋め込んだ一例を示す図。
【図5】実施の形態1のID対応マップの例を示す図。
【図6】実施の形態1の変数対応マップの例を示す図。
【図7】実施の形態1における違反原因特定部の動作例を示すフローチャート図。
【図8】実施の形態1のID対応マップの例を示す図。
【図9】実施の形態1の変数対応マップの例を示す図。
【図10】実施の形態1の動的生成画面検査装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【0009】
実施の形態1.
本実施の形態では、動的に画面を生成するシステムにおいてGUI画面がGUI画面レイアウト規約に合致するか検査する際、違反がある場合に違反するGUI画面を生成した画面生成プログラムにおける違反原因部分とその詳細の特定を可能とし、試験工数を削減する構成を説明する。
より具体的には、例えば以下の手順で動作する動的生成画面検査装置を説明する。
まず、動的生成画面検査装置は、画面生成プログラムに対して、生成元と生成後の対応を保持するためのID(Identifier)とその時の変数や行った演算を出力するコードを埋め込みつつ、その対応情報を情報記憶装置に保管する。
次に、動的生成画面検査装置は、コードを埋め込んだ画面生成プログラムにパラメータを与え、実際にGUI画面を生成して、例えば既存技術によって検査を行い、違反の有無を確認する。
そして、動的生成画面検査装置は、違反が発生した場合は、埋め込まれたコードによって出力されるID/変数情報と情報記憶装置の対応情報から、生成元となる画面生成プログラムの原因部分を特定する。
さらに、動的生成画面検査装置は、情報記憶装置の変数の演算情報から違反発生時の変数が生じた原因となる演算を特定する。
【0010】
図1は、本実施の形態に係る動的生成画面検査装置100のシステム構成例を示す図である。
動的生成画面検査装置100は、情報処理装置の例である。
【0011】
画面生成プログラム101は、動的にGUI画面を生成するためのソースコードである。
画面生成プログラム101は、例えば、図2で示されるソースコードであり、動的画面を生成するためのソースコードである必要がある。
図2では、その一例としてJSP(登録商標)言語で書かれたソースコードの一部分を示している。
画面生成プログラム101は、複数の要素ブロック(図2の各行に記述されているコード)で構成され、いずれかの要素ブロックに変数が含まれている。
そして、画面生成プログラム101内の変数の値をパラメータ102によって変化させることで動的にGUI画面を生成することができる。
【0012】
パラメータ102は、画面生成プログラム101が動的にGUI画面を生成するために受け取る値である。
例えば、図2で示されるパラメータであり、画面生成プログラム101の変数にパラメータ102を与えることにより、GUI画面の生成ができる。
【0013】
画面生成プログラム解析部103は、画面生成プログラム101を解析し、プログラムとして読み込む。
画面生成プログラム解析部103では、画面生成プログラム101からGUI画面を構成する要素と変数の代入や演算を構文解析によって探し出し、ID出力コードと変数出力コードを埋め込むべき部分を判断する。
ID出力コードに関しては、GUI画面の生成元と生成したGUI画面の対応の取得と変数の代入や演算の場所を保持するために埋め込むものであるので、解析を単純化して全ての行に対してIDを付与するという判断を行う方法もある。
【0014】
ID出力コード埋込処理部104は、生成元の画面生成プログラムと生成するGUI画面の対応を取るためのID出力コードを埋め込む。
ID出力コード埋込処理部104は、画面生成プログラム解析部103によってID出力コードを埋め込むべき部分として判断された箇所に対して、一意となるIDを出力するコード(ID出力コード)を埋め込む。
GUI画面の構成要素部分と変数出現部分に対してID出力コードを埋め込んだ一例が図3である。
図3において、符号301〜305で示した文字列がID出力コードである。
図3では、ID出力コードとしてHTML(HyperText Markup Language)言語のコメントでIDを出力するJSP(登録商標)コードを埋め込んでいる。
また、この時、ID出力コード埋込処理部104は、ID出力コードを埋め込んだ部分とIDの対応をマップとしてID/変数保持部10に保存する。
なお、ID/変数保持部10については後述する。
【0015】
変数出力コード埋込処理部105は、画面生成プログラム101において変数の代入や演算が発生する場所での変数の値を出力させるコード(変数出力コード)を埋め込む。
変数出力コード埋込処理部105は、画面生成プログラム解析部103によって変数出力コードを埋め込むべき部分として判断された箇所に対して、その時の変数の値を出力する変数出力コードを埋め込む。
変数出現部分に対して変数出力コードを埋め込んだ一例が図4である。
図4において、符号401〜404で示した文字列が変数出力コードである。
図4では、変数に対する代入や変数が利用されている部分に対して、その時の変数の値をコメントとして出力するコードを埋め込んでいる。
この時、変数出力コード埋込処理部105は、ID/変数保持部10のID対応マップに対して、変数出力コードの情報を追加する。
また、変数出力コード埋込処理部105は、その際に変数に対して行った処理の情報をID/変数保持部10の変数対応マップに保存する。
【0016】
ID/変数保持部10は、ID出力コード埋込処理部104と変数出力コード埋込処理部105で埋め込んだコードのデータを保持する情報記憶装置である。
ID/変数保持部10は、ID出力コードを埋め込んだ部分と対応するIDのマップと、変数出力コードを埋め込んだ部分と対応する変数への演算のマップを保持している。
ID対応マップの一例が図5である。
図5では、埋め込んだID出力コードのID、対応するコード部分(要素ブロック)、出現する変数、付帯条件を保持している。
変数対応マップの一例が図6である。
変数対応マップでは、変数名に対して出現したIDと行われた演算、その時の変数の値を保持している。
パラメータによって変化する変数の値は、画面生成が行われた時点で入力する。
【0017】
以上に示したように、画面生成プログラム解析部103は、画面生成プログラム101を解析し、ID出力コード埋込処理部104は、画面生成プログラム解析部103の解析結果に従って、画面生成プログラム101にID出力コードを埋め込むとともに、ID対応マップ(図5)を生成する。
更に、変数出力コード埋込処理部105は、画面生成プログラム解析部103の解析結果に従って、画面生成プログラム101に変数出力コードを埋め込むとともに、変数対応マップ(図6)を生成する。
ID対応マップと変数対応マップにより、画面生成プログラム101に含まれる変数ごとに、変数と当該変数が含まれる1つ以上の要素ブロックとが対応付けられている。
また、変数対応マップには、画面生成プログラム101に含まれる変数ごとに、ID対応マップにおいて変数と対応付けられている要素ブロックで行われる当該変数を用いた演算の内容及び要素ブロックでの当該変数の値の少なくともいずれかが示されている。
ID対応マップと変数対応マップは対応付け情報の例である。
画面生成プログラム解析部103、ID出力コード埋込処理部104及び変数出力コード埋込処理部105は、プログラム解析対応付け部の例である。
また、ID対応マップと変数対応マップを記憶するID/変数保持部10は対応付け情報の例である。
【0018】
画面生成処理部106は、ID出力コードと変数出力コードを埋め込んだ画面生成プログラム101とパラメータ102を受け取り、GUI画面を生成する。
GUI画面生成のための機構は、動的生成画面検査装置100の内部で備えても良いが、動的生成画面検査装置100の外部で画面生成させてもよい。
この時生成されるGUI画面コードは、ID出力コード埋込処理部104と変数出力コード埋込処理部105において埋め込んだコードの情報を保持している。
画面生成には、ID出力コードと変数出力コードを埋め込んだ画面生成プログラム101に加えて、動的生成画面検査装置100の入力であるパラメータ102も利用する。
【0019】
画面レイアウトチェック処理部107は、従来技術(例えば、特許文献1に記載の技術)を利用して、画面生成処理部106で生成されたGUI画面が画面レイアウト規約に合致するか否かを検査する。
この検査により違反が発生した場合は、生成したGUI画面における違反箇所を特定したうえで違反比較部108の処理に移る。
違反が発生しない場合は、画面レイアウトチェック処理部107は、画面生成プログラム101とパラメータ102を、GUI画面レイアウト規約に沿うGUI画面を出力する画面生成プログラムとパラメータであると判断する。
【0020】
違反比較部108は、画面レイアウトチェック処理部107における検査の結果を受け、違反があった場合にID/変数保持部10のデータと照らし合わせ、画面生成プログラムのどこが原因であるかを特定する。
つまり、違反比較部108は、違反の直接の原因となっている要素ブロック(直接原因要素ブロックともいう)を抽出する。
画面レイアウトチェック処理部107において特定されたGUI画面の違反箇所は、ID出力コードの埋め込みによってIDが出力されているため、違反比較部108は、この情報を利用して違反箇所と対応する生成元の画面生成プログラムの部分を特定する。
【0021】
違反原因特定部109は、違反比較部108で明らかになる違反箇所(直接原因要素ブロック)において利用されている変数や演算を確認し、違反の原因となった変数の値や演算を特定する。
違反原因特定部109は、ID/変数保持部10のID対応マップと変数対応マップから、違反が発生した際の変数の値と、その変数の値を取ることになった原因となる演算をマップから特定する。
より具体的には、違反原因特定部109は、違反比較部108によって抽出された直接原因要素ブロックとID対応マップ及び変数対応マップにおいて対応付けられている変数がある場合に、直接原因要素ブロックと対応付けられている変数と変数対応マップにおいて対応付けられている他の要素ブロックのうち、画面生成プログラム101において直接原因要素ブロックよりも前に記述されている1つ以上の要素ブロックを先行要素ブロックとして抽出する。
更に、違反原因特定部109は、変数対応マップを用いて、抽出した先行要素ブロックを解析して、抽出した先行要素ブロックの中から、違反の根本の原因を作り出した要素ブロック(根本原因要素ブロックともいう)を抽出し、先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、根本原因要素ブロックで行われる原因変数を用いた演算の内容及び根本原因要素ブロックでの原因変数の値の少なくともいずれかを抽出する。
【0022】
表示部110は、画面レイアウトチェック処理部107により違反なしと判断された場合は、生成されたGUI画面に違反がないことを通知するメッセージ112を動的生成画面検査装置100のユーザに表示する。
一方、画面レイアウトチェック処理部107により違反ありと判断された場合は、表示部110は、違反箇所や違反原因を通知するメッセージ111を動的生成画面検査装置100のユーザに表示する。
メッセージ111では、違反比較部108により特定された直接原因要素ブロック、違反原因特定部109により特定された根本原因要素ブロック、原因変数、根本原因要素ブロックで行われる原因変数を用いた演算の内容、根本原因要素ブロックでの原因変数の値等が示される。
【0023】
次に、動作について説明する。
【0024】
まず、動的生成画面検査装置100の入力として、画面生成プログラム解析部103が、画面生成プログラム101とパラメータ102を受け取る。
入力された画面生成プログラム101は、画面生成プログラム解析部103においてプログラムとして読み込まれ、画面生成プログラム解析部103は、ID出力コードを埋め込むべき場所を漏れ無く判断する。
解析された画面生成プログラム101は、ID出力コード埋込処理部104でID出力コードを埋め込まれる。
同時に、ID出力コード埋込処理部104は、IDと対応するコード部分をID/変数保持部10に保存する。
つまり、ID出力コード埋込処理部104は、図5に例示したID対応マップを生成し、ID/変数保持部10に格納する。
また、ID出力コード埋込処理部104と同様、画面生成プログラム101は変数出力コード埋込処理部105で変数出力コードを埋め込まれる。
同時に、変数出力コード埋込処理部105は、変数と対応するコード部分をID/変数保持部10に保存する。
つまり、変数出力コード埋込処理部105は、図6に例示した変数対応マップを生成し、ID/変数保持部10に格納する。
【0025】
次に、画面生成処理部106が、ID出力コードと変数出力コードを埋め込んだ画面生成プログラム101とパラメータ102からGUI画面を生成する。
生成されたGUI画面は、画面レイアウトチェック処理部107で検査を行い、違反が無ければ終了し、違反があればGUI画面コードにおける違反箇所を特定して違反比較部108に結果を渡す。
【0026】
GUI画面コードに違反があれば、違反比較部108が、ID/変数保持部10に保存されたID対応マップと変数対応マップを利用して、GUI画面の違反箇所が画面生成プログラム101のどこと対応するかを判断し、違反の原因となったコード部分(直接原因要素ブロック)を探し出す。
違反比較部108による直接原因要素ブロックの探知は、例えば、特開2001−306310号公報に記載の技術を用いて実現可能である。
【0027】
次に、違反原因特定部109が、違反比較部108で明らかになった違反原因コード部分(直接原因要素ブロック)から、使用されている変数と値に加え、その値になった原因の演算を特定し、違反の原因を示すメッセージ111を生成し、表示部110がメッセージ111を出力する。
【0028】
図7のフローチャートを用いて、違反原因特定部109の動作について説明する。
【0029】
まず、違反箇所対応ID検索処理201において、違反原因特定部109は、違反が発生している部分(直接原因要素ブロック)と対応するIDをID/変数保持部10のID対応マップから検索する。
ID対応マップには、そのIDのコード部分で出現する変数も保持されているため、違反原因特定部109は、出現変数特定処理202で出現する変数を特定する。
直接原因要素ブロックに変数が出現しない場合、変数でない部分による違反であり、静的に違反が発見できる部分であるため、その時点で違反特定を終了する。
直接原因要素ブロックに変数が出現する場合(処理203でYES)、違反原因特定部109は、ID/変数保持部10の変数対応マップから出現する変数を探し出し、その演算を検索する(処理204)。
そして、違反原因特定部109は、違反の原因となる変数の値を計算した演算として、違反から近い順序で違反原因としての優先度を決定し、出力する(処理205)。
【0030】
図4、図5及び図6の例を用いて、違反原因特定部109の動作を説明する。
【0031】
例えば、違反比較部108が図4の<font siza=<%=a %>test</font>を直接原因要素ブロックとして特定した場合に、違反原因特定部109は、ID対応マップ(図5)から、直接原因要素ブロックに対応するIDとして「5」を抽出する(図7の処理201)。
また、違反原因特定部109は、ID対応マップ(図5)から、直接原因要素ブロックで出現する変数として、「a」を抽出する(図7の処理202)。
この変数aが原因変数となる。
次に、違反原因特定部109は、変数対応マップ(図6)から、変数aが出現する先行する要素ブロック(ID=1の要素ブロック)を根本原因要素ブロックとして抽出するとともに、更に、根本原因要素ブロックにおける変数aでの演算内容(「declaration」)と根本原因要素ブロックで代入された値(「6」)を抽出する。
そして、違反原因特定部109は、直接原因要素ブロックとして<font siza=<%=a %>test</font>を示し、直接原因要素ブロックで出現する原因変数として「a」を示し、根本原因要素ブロックとして<% a=6 %>を示し、根本原因要素ブロックにおける変数aでの演算内容として「declaration」を示し、根本原因要素ブロックで代入された値として「6」を示すメッセージ111を生成し(図7の処理205)、表示部110がメッセージ111を表示する。
【0032】
なお、本実施の形態では、説明の簡明のため、図2に示すような単純な画面生成プログラム101を例にして説明を行った。
このため、変数対応マップも図6に示すような単純な内容となっており、直接原因要素ブロックとして抽出されたID=5の要素ブロックに先行する要素ブロックはID=1の要素ブロックのみであった。
つまり、図6の例では、直接原因要素ブロック(ID=5の要素ブロック)に先行する唯一の要素ブロック(ID=1の要素ブロック)を機械的に根本原因要素ブロックとして導出することになる。
しかし、実際の運用では、変数対応マップにおいて、1つの変数に対する対応IDが多数になることが想定される。
1つの変数に対する対応IDが多数ある場合、違反原因特定部109は、変数対応マップにおいて直接原因要素ブロックと共通する変数と対応付けられている他の要素ブロックのうち、画面生成プログラム101において直接原因要素ブロックよりも前に記述されている要素ブロックを先行要素ブロックとして抽出し、抽出した先行要素ブロックを解析して、抽出した先行要素ブロックの中から、違反の根本の原因を作り出した根本原因要素ブロックを抽出することになる。
違反原因特定部109は、各先行要素ブロックについて変数対応マップに記述されている演算内容及び値を参照して、先行要素ブロックに対する解析を行う。
一般的に、変数対応マップの演算内容の欄に「declaration」と記述されている要素ブロックが根本原因要素ブロックとして抽出される。
【0033】
また、メッセージ111に、根本原因要素ブロックだけではなく、根本原因要素ブロックとして認定されなかった先行要素ブロックの各々を表示するようにしてもよい。
【0034】
また、違反原因特定部109は、先行要素ブロックの抽出のみを行い、根本原因要素ブロックの特定を行わなくてもよい。
この場合は、メッセージ111には、違反原因特定部109により抽出された先行要素ブロックの各々が表示される。
また、この場合に、メッセージ111に、先行要素ブロックの各々で行われる原因変数を用いた演算の内容や先行要素ブロックの各々における原因変数の値を表示するようにしてもよい。
【0035】
更には、違反原因特定部109は、変数対応マップにおいて直接原因要素ブロックと共通する変数と対応付けられている他の要素ブロックのうち、画面生成プログラム101において直接原因要素ブロックよりも後に記述されている要素ブロックを抽出してもよく、メッセージ111に、この要素ブロックを表示するようにしてもよい。
【0036】
また、本実施の形態では、画面生成プログラム101にID出力コードと変数出力コードを埋め込み、ID出力コードと変数出力コードを用いて、図5に示すID対応マップ及び図6に示す変数対応マップを生成する例を説明した。
しかし、画面生成プログラム101に含まれる変数ごとに、変数と当該変数が含まれる1つ以上の要素ブロックとを対応付けることができ、また、要素ブロックで行われる演算の内容及び要素ブロックでの変数の値を対応付けることができれば、ID出力コードと変数出力コードを埋め込まなくてもよく、また、図5に示す形式のID対応マップでなくてもよく、図6に示す形式の変数対応マップでなくてもよい。
例えば、図8及び図9に示すテーブルのように、ID出力コードと変数出力コードを用いることなく、要素ブロックと出現変数とを対応付け、変数ごとに、要素ブロックで行われる演算の内容及び要素ブロックでの変数の値を対応付けるようにしてもよい。
【0037】
以上、本実施の形態に係る動的生成画面検査装置100では、画面生成プログラム101とパラメータ102から動的に生成されるGUI画面について、GUI画面レイアウト規約に合致するか否かを確認し、違反が発生する場合は画面生成プログラム101の原因部分を特定し、さらにその時の変数の値や演算を特定することによってより詳細な違反原因を自動で調査することが可能となる。
つまり、GUI画面がGUI画面レイアウト規約に合致するか否かを検査する際に、違反が発生するGUI画面を出力する画面生成プログラムとパラメータが与えられた時、違反が発生するGUI画面を生成する原因となった箇所を画面生成プログラムから自動的に特定し、さらにそのときの変数や違反に至るまでに行った演算を自動で得ることが可能となる。
これにより、動的画面生成技術を用いたシステムの開発において、試験担当者の負荷軽減による作業時間の短縮や試験効率の向上が期待できる。
また、自動で違反原因を特定することにより、人為的なミスによる違反原因の見落としも無くなり、精密な違反原因の特定が可能となる。
【0038】
以上、本実施の形態では、
動的に画面を生成するための画面生成プログラムと、
GUI画面を生成するためのパラメータと、
画面生成プログラムを解析する画面生成プログラム解析部と、
解析した画面生成プログラムにID出力コードを埋め込むID出力コード埋込処理部と、
解析した画面生成プログラムに変数出力コードを埋め込む変数出力埋込処理部と、
ID出力コード埋込処理部と変数出力コード埋込処理部で埋め込んだIDと変数の情報を保持するID/変数保持部と、
生成した画面に違反があった場合に違反の原因箇所を特定する違反比較部と、
違反が発生した原因となる変数の値と演算等を特定する違反原因特定部を備えた動的生成画面検査方式及び装置を説明した。
【0039】
また、本実施の形態では、上記の違反比較部と違反原因特定部において、違反箇所の特定及び違反原因となる詳細な変数の値や演算を特定可能であることを説明した。
【0040】
最後に、本実施の形態に示した動的生成画面検査装置100のハードウェア構成例について説明する。
図10は、本実施の形態に示す動的生成画面検査装置100のハードウェア資源の一例を示す図である。
なお、図10の構成は、あくまでも動的生成画面検査装置100のハードウェア構成の一例を示すものであり、動的生成画面検査装置100のハードウェア構成は図10に記載の構成に限らず、他の構成であってもよい。
【0041】
図10において、動的生成画面検査装置100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
本実施の形態で説明した「ID/変数保持部10」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0042】
通信ボード915は、例えば、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されている。
【0043】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0044】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0045】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
動的生成画面検査装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0046】
上記プログラム群923には、本実施の形態の説明において「〜部」(「ID/変数保持部10」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。
プログラムは、CPU911により読み出され実行される。
【0047】
ファイル群924には、本実施の形態の説明において、「〜の解析」、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の対応付け」、「〜の特定」、「〜の比較」、「〜の生成」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0048】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【0049】
このように、本実施の形態に示す動的生成画面検査装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0050】
10 ID/変数保持部、100 動的生成画面検査装置、101 画面生成プログラム、102 パラメータ、103 画面生成プログラム解析部、104 ID出力コード埋込処理部、105 変数出力コード埋込処理部、106 画面生成処理部、107 画面レイアウトチェック処理部、108 違反比較部、109 違反原因特定部、110 表示部、111 メッセージ、112 メッセージ。

【特許請求の範囲】
【請求項1】
複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる1つ以上の要素ブロックとを対応付けるプログラム解析対応付け部と、
前記プログラム解析対応付け部による変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶部と、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている1つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出部とを有することを特徴とする情報処理装置。
【請求項2】
前記要素ブロック抽出部は、
抽出した先行要素ブロックを解析して、抽出した先行要素ブロックの中から、前記違反の根本の原因を作り出した根本原因要素ブロックを抽出することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記要素ブロック抽出部は、
先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、前記根本原因要素ブロックで行われる前記原因変数を用いた演算の内容及び前記根本原因要素ブロックでの前記原因変数の値の少なくともいずれかを抽出することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記要素ブロック抽出部は、
先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、先行要素ブロックごとに、先行要素ブロックで行われる前記原因変数を用いた演算の内容及び先行要素ブロックでの前記原因変数の値の少なくともいずれかを抽出することを特徴とする請求項1〜3のいずれかに記載の情報処理装置。
【請求項5】
前記プログラム解析対応付け部は、
前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる1つ以上の要素ブロックとを対応付けるとともに、対応付けられた要素ブロックで行われる当該変数を用いた演算の内容及び対応付けられた要素ブロックでの当該変数の値の少なくともいずれかを抽出し、
変数と要素ブロックとの対応付けが示され、更に、要素ブロックでの演算の内容及び要素ブロックでの変数の値の少なくともいずれかが示される対応付け情報を生成し、
前記対応付け情報記憶部は、
前記プログラム解析対応付け部により生成された対応付け情報を記憶し、
前記要素ブロック抽出部は、
先行要素ブロックの抽出に用いられた変数を原因変数として抽出するとともに、前記対応付け情報を用いて、前記根本原因要素ブロックで行われる前記原因変数を用いた演算の内容及び前記根本原因要素ブロックでの前記原因変数の値の少なくともいずれかを抽出することを特徴とする請求項3に記載の情報処理装置。
【請求項6】
前記プログラム解析対応付け部は、
変数を用いた演算が行われる要素ブロックに対して、当該演算の内容を表すコメント形式のコードを前記プログラムに埋め込み、
変数に値が代入される要素ブロックに対して、代入される変数の値を表すコメント形式のコードを前記プログラムに埋め込むことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記要素ブロック抽出部は、
前記直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも後に記述されている要素ブロックを抽出することを特徴とする請求項1〜6のいずれかに記載の情報処理装置。
【請求項8】
前記情報処理装置は、更に、
前記要素ブロック抽出部による抽出結果を表示する表示部を有することを特徴とする請求項1〜7のいずれかに記載の情報処理装置。
【請求項9】
前記プログラム解析対応付け部は、
GUI(Graphical User Interface)画面を生成するためのプログラムを解析することを特徴とする請求項1〜8のいずれかに記載の情報処理装置。
【請求項10】
コンピュータが、複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる1つ以上の要素ブロックとを対応付けるプログラム解析対応付けステップと、
前記コンピュータが、前記プログラム解析対応付けステップによる変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶ステップと、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記コンピュータが、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている1つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出ステップとを有することを特徴とする情報処理方法。
【請求項11】
複数の要素ブロックで構成され、いずれかの要素ブロックに変数が含まれるプログラムを解析し、前記プログラムに含まれる変数ごとに、変数と当該変数が含まれる1つ以上の要素ブロックとを対応付けるプログラム解析対応付けステップと、
前記プログラム解析対応付けステップによる変数と要素ブロックとの対応付けが示される対応付け情報を記憶する対応付け情報記憶ステップと、
前記プログラムの実行結果の少なくとも一部が所定の規約に違反し、当該違反の直接の原因となっている要素ブロックとして抽出された直接原因要素ブロックと前記対応付け情報において対応付けられている変数がある場合に、前記直接原因要素ブロックと対応付けられている変数と前記対応付け情報において対応付けられている他の要素ブロックのうち、前記プログラムにおいて前記直接原因要素ブロックよりも前に記述されている1つ以上の要素ブロックを先行要素ブロックとして抽出する要素ブロック抽出ステップとをコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−61893(P2013−61893A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2011−201266(P2011−201266)
【出願日】平成23年9月15日(2011.9.15)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】