(57)【要約】【課題】実行履歴情報上で変数の制約条件違反を発見しても、膨大な量の仕様書から、制約条件違反に関する情報を探索するために、工数と時間がかかる。【解決手段】仕様書に基づいてコンピュータ上で実行されたプログラムの実行に係る実行履歴情報における変数とその変数に設定された値に対して、検査結果を出力する検査結果出力装置であって、前記実行履歴情報から前記変数と該変数の値を抽出する抽出手段１０１と、前記抽出手段により抽出された前記変数と該変数の値について、前記変数についての前記仕様書に規定された制約条件に違反するかどうかを判定する判定手段１０２と、前記判定手段により制約条件違反と判定された場合に、制約違反とされた制約条件に関する情報を、前記実行結果の所定の位置へ追記する追記手段１０３とを備え、前記制約条件に関する情報は、制約条件違反とされた変数に関する仕様書に対応付けられていることを特徴とする。【選択図】図２
2012234284.tif 000002
【特許請求の範囲】
【請求項１】
仕様書に基づいてコンピュータ上で実行されたプログラムの実行に係る実行履歴情報における変数とその変数に設定された値に対して、検査結果を出力する検査結果出力装置であって、
前記実行履歴情報から前記変数と該変数の値を抽出する抽出手段と、
前記抽出手段により抽出された前記変数と該変数の値について、前記変数についての前記仕様書に規定された制約条件に違反するかどうかを判定する判定手段と、
前記判定手段により制約条件違反と判定された場合に、制約違反とされた制約条件に関する情報を、前記実行結果の所定の位置へ追記する追記手段とを備え、
前記制約条件に関する情報は、制約条件違反とされた変数に関する仕様書に対応付けられていること
を特徴とする検査結果出力装置。
【請求項２】
前記制約条件に関する情報は、リンク形式で表現されていること
を特徴とする請求項１に記載の検査結果出力装置。
【請求項３】
前記変数は、レジスタ変数であること
を特徴とする請求項１又は２に記載の検査結果出力装置。
【請求項４】
前記制約条件違反とされた変数に関する仕様書は、
意味的なまとまりをもった項目ごとにインデックスが付され、
前記制約条件に関する情報は、前記インデックスに対応して対応付けられていること
を特徴とする請求項１ないし３に記載の検査結果出力装置
【請求項５】
仕様書に基づいてコンピュータ上で実行されたプログラムの実行に係る実行履歴情報における変数とその変数に設定された値に対して、検査結果を出力する検査結果出力方法であって、
前記実行履歴情報から前記変数と該変数の値を抽出する抽出ステップと、
抽出された前記変数と該変数の値について、前記変数についての前記仕様書に規定された制約条件に違反するかどうかを判定する判定ステップと、
前記判定ステップで制約条件違反と判定された場合に、制約違反とされた制約条件に関する情報を、前記実行結果の所定の位置へ追記する追記ステップとを備え、
前記制約条件に対応する所定の情報は、制約条件違反とされた変数に関する仕様書に対応付けられていること
を特徴とする検査結果出力方法。
【請求項６】
前記制約条件に関する情報は、リンク形式で表現されていること
を特徴とする請求項５に記載の検査結果出力方法。
【請求項７】
前記変数は、レジスタ変数であること
を特徴とする請求項５又は６に記載の検査結果出力方法。
【請求項８】
コンピュータに請求項５ないし７いずれか一項に記載の検査結果出力方法を実行させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検査結果出力装置、検査結果出力方法、プログラム、記録媒体に関する。特に、プログラムの実行に係る実行履歴情報（以下、「実行履歴情報」という）における変数とその変数に設定された値について制約違反が検出されたとき、制約違反の内容と、それに関連する情報が記載された仕様書の特定箇所へ迅速にアクセスできる検査結果出力装置又は検査結果出力方法に関する。
【背景技術】
【０００２】
従来、実行履歴情報を参照して変数とその変数に設定された値についての制約条件違反を検出するためには、実行履歴情報と、制約条件に対応する仕様書とを目視でつき合わせて確認する作業が必要であり、工数と時間を要していた。特に、組込機器の分野においては、実機における実行履歴情報に基づき制約条件違反を検出する場合に、確認作業に工数と時間がかかっていた。
【０００３】
これに対し、特許文献１には、レジスタの仕様（状態遷移図、アドレスマップ、制約条件）と、ファームウェアのレジスタへのアクセス部分を抽出した動作データベースとをチェックプログラムに入力し、制約条件違反を検出する検査装置が開示されている。
【０００４】
一方、特許文献２には、プログラムの実行時に出力されたログ情報に対し、ユーザの指定条件に基づいて情報を抽出し、プログラム実行時の各操作が正しかったかどうか判定し、エラーの原因を解析するログ解析方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし特許文献１においては、制約条件違反を検出することはできるが、ユーザが前記制約条件に対応する仕様書を確認するときには、人力で探索する必要があり、効率的でない。また、ユーザが実行履歴情報のみからデバッグする必要がある場合には対応できない。
【０００６】
また、特許文献２においては、エラーの原因を解析することは可能であるが、特許文献１同様、ユーザがエラーと関連する仕様書を確認したい場合には不便である。
【０００７】
以上のように、実行履歴情報上で変数の制約条件違反を発見しても、膨大な量の仕様書から、制約条件違反に関する情報を探索するために、工数と時間がかかるという問題点があった。
【０００８】
本発明は、上記問題に鑑みてなされたものであり、実行履歴情報上で制約違反が検出されたとき、制約違反の内容と、それに関連する情報が記載された仕様書の特定箇所へ迅速にアクセスできる検査結果出力装置又は検査結果出力方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し目的を達成するため、本発明にかかる検査結果出力装置は、仕様書に基づいてコンピュータ上で実行されたプログラムの実行に係る実行履歴情報における変数とその変数に設定された値に対して、検査結果を出力する検査結果出力装置であって、前記実行履歴情報から前記変数と該変数の値を抽出する抽出手段と、前記抽出手段により抽出された前記変数と該変数の値について、前記変数についての前記仕様書に規定された制約条件に違反するかどうかを判定する判定手段と、前記判定手段により制約条件違反と判定された場合に、制約違反とされた制約条件に関する情報を、前記実行結果の所定の位置へ追記する追記手段とを備え、前記制約条件に関する情報は、制約条件違反とされた変数に関する仕様書に対応付けられていることを特徴とする。
【００１０】
また、本発明にかかる検査結果出力方法は、仕様書に基づいてコンピュータ上で実行されたプログラムの実行に係る実行履歴情報における変数とその変数に設定された値に対して、検査結果を出力する検査結果出力方法であって、前記実行履歴情報から前記変数と該変数の値を抽出する抽出ステップと、抽出された前記変数と該変数の値について、前記変数についての前記仕様書に規定された制約条件に違反するかどうかを判定する判定ステップと、前記判定ステップで制約条件違反と判定された場合に、制約違反とされた制約条件に関する情報を、前記実行結果の所定の位置へ追記する追記ステップとを備え、前記制約条件に対応する所定の情報は、制約条件違反とされた変数に関する仕様書に対応付けられていることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、実行履歴情報上で制約違反が検出されたとき、制約違反の内容と、それに関連する情報が記載された仕様書の特定箇所へ迅速にアクセスできる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態に係る検査結果出力装置のハードウェア構成の例を示すブロック図である。
【図２】本発明の一実施形態に係る検査結果出力装置の機能構成の例を示す図である。
【図３】本発明の一実施形態に係る検査結果出力装置の処理の例を示すフローチャートである。
【図４】本発明の一実施形態に係る実行履歴情報の例を示す図である。
【図５】本発明の一実施形態に係る制約式対応表の例を示す図である。
【図６】本発明の一実施形態に係る実行履歴情報上にメッセージ等が追記された例を示す図である。
【図７】本発明の一実施形態に係る記載様式ごとにインデックスが付された仕様書情報の例を示す図である。
【図８】本発明の一実施例に係る検査結果出力装置の機能構成の例を示す図である。
【図９】本発明の一実施例に係る検査結果出力装置の動作の概要を示すフローチャートである。
【図１０】本発明の一実施例に係る検査結果出力装置の動作の詳細を示すフローチャートである。
【図１１】本発明の一実施例に係る実行履歴情報の例を表す図である。
【図１２】本発明の一実施例に係るレジスタ変数定義表の例を示す図である。
【図１３】本発明の一実施例に係る実行履歴情報に変換されたビットフィールド名と値が追記された例を表す図である。
【図１４】本発明の一実施例に係る制約式対応表の例を示す図である。
【図１５】本発明の一実施例に係る記載様式ごとにインデックスが付された仕様書情報の例を示す図である。
【図１６】本発明の一実施例に係る実行履歴情報上にメッセージ等が追記された例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面に基づいて説明する。本発明における検査結果装置の一例としてパーソナルコンピュータ（以下ＰＣという）を用いて説明する。
【００１４】
図１は、本実施形態に係る検査結果出力装置のハードウェア構成を示す図である。図１に示すように、ＰＣ１は、制御部１１、主記憶部１２、補助記憶部１３、外部記録装置Ｉ／Ｆ部１４、ネットワークＩ／Ｆ部１５、操作部１６、表示部１７を含む。これら各構成は、バス１９を介して相互にデータ送受信可能に接続されている。
【００１５】
制御部１１は、コンピュータの中で、各装置の制御やデータの演算を行うＣＰＵ（Central Processing Unit）である。また、制御部１１は、主記憶部１２や補助記憶部１３に記憶されたプログラムを実行する演算装置であり、入力装置や記憶装置からデータを受け取り、演算、加工した上で、出力装置や記憶装置に出力する。
【００１６】
主記憶部１２は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などであり、制御部１１が実行する基本ソフトウェアであるＯＳやソフトウェア等のプログラムやデータを記憶又は一時保存する記憶装置である。本実施形態に係る検査結果出力装置は、主記憶部１２をワークエリアとして使用する。
【００１７】
補助記憶部１３は、ＨＤＤ（Hard Disk Drive）などであり、ソフトウェア本体や、それに関連するデータ等を記憶する記憶装置である。
【００１８】
外部記録装置I／F部１４は、ＵＳＢ（Universal Serial Bus）等の伝送路を介して接続された、フラッシュメモリ等の記録媒体１８とＰＣ１とのインタフェースである。
【００１９】
記録媒体１８は所定のプログラム又はデータを格納する。この記録媒体１８に格納されたプログラム又はデータは、外部記録装置Ｉ／Ｆ部１４を介してＰＣ１にコピーされる。コピーされたプログラム又はデータは、一般に補助記憶部１３に保存され、ＰＣ１上で利用可能となる。
【００２０】
ネットワークＩ／Ｆ部１５は、有線及び／又は無線回線等の伝送路により構築されたＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）などのネットワークを介して接続された通信機能を有する周辺機器とＰＣ１とのインタフェースである。
【００２１】
操作部１６や表示部１７は、キーボードとディスプレイとから構成され、ＰＣ１が有する機能を利用する際のＵＩ（User Interface）として機能する表示／入力装置である。本実施形態に係る検査結果出力装置が出力した結果は、表示部１７を通じてユーザによって確認される。
【００２２】
次に、本実施形態に係る検査結果出力装置が有する機能を、図２及び図３を用いて説明する。
【００２３】
図２は、本実施形態の検査結果出力装置の機能構成の例を示す図である。
【００２４】
図３は、本実施形態の検査結果出力装置の処理の例を示すフローチャートである。本実施形態の検査結果出力装置においては、抽出手段１０１、判定手段１０２、追記手段１０３を備えており、図３に示すフローに従って動作する。まず、抽出手段１０１は、実行履歴情報（実行ログ情報）を読み込み、変数とその変数に設定された値が記載された箇所を特定し抽出する。ここで、抽出された変数とその値は、抽出された変数と値のリスト１０５として一時的に記憶される。その後、判定手段１０２が、制約式対応表１０４に記載された制約式に基づき、制約条件違反の判定を行う。そして、制約条件違反と判定されたとき、追記手段１０３は、制約式対応表によって制約式と関連付けられた、エラーメッセージや閲覧用アドレス、又は制約式そのものを、実行履歴情報に追記する。閲覧用アドレスとは、制約式と関連する情報が記載された、仕様書情報１０６の特定の場所を示すアドレスであるが、詳細については後述する。
【００２５】
図３について詳しく説明する。ステップＳ２０１において抽出手段１０１は実行履歴情報を読みこむ。図４に、読み込まれる実行履歴情報の一例を示す。前記ソフトウェア・プログラムとは、ＭＦＰ（Multifunction Peripheral）や情報家電、自動車等に搭載される、いわゆる組み込み機器上で動作するもののみならず、ＰＣ上で実行可能な汎用ＯＳ向けアプリケーション（Windows（登録商標）オペレーティングシステム、Apple Macintoshオペレーティングシステム、UNIX（登録商標）オペレーティングシステム、及びLinuxオペレーティングシステム等）や、Webアプリケーション（JavaScript（登録商標））、等、一般的にソフトウェアと呼ばれるアプリケーション全般を指す。
【００２６】
ステップＳ２０２において、抽出手段１０１は、実行履歴情報から変数とその変数の値が記載された箇所を特定する。その後ステップＳ２０３において、抽出手段１０１は、変数とその値を抽出する。
【００２７】
ここで、変数とは一般に、プログラム上でデータを一時的に記憶しておくための領域に名前を付したものをいう。ステップＳ２０２においては、実行履歴情報上に出力される変数と値全てが対象として特定される。しかし、本実施形態においては特に、プログラム内の複数のモジュールによって共有して使用される変数や、他のモジュールへ値を渡す際に使用される変数といった、制約条件が課される変数が対象となる。
【００２８】
また、実行履歴情報の出力形式は様々である。一般に、デバッグ目的で出力される出力形式は、一定の規則に基づいて出力される。したがって、抽出手段１０１は、その規則に沿って変数と値に関する箇所を特定するための、図示しない解析手段を備える。解析のために必要な工程は、出力形式の複雑さによって異なるが、出力形式があらかじめわかっていれば、文字列探索や正規表現等、既存の公知技術を適用することで達成可能である。
【００２９】
図４のような実行履歴情報の場合について説明する。図４においては、変数に書き込みがなされた場合の実行ログの出力形式は、「日付 時刻 D SetParam（"変数名", 値）」と定められている。この場合、解析手段は、「SetParam」という文字列を探索し、その後に続く括弧内のカンマの前後の文字列を取得する。解析手段は、カンマの前にある文字列から、前後のダブルクォーテーションを取り除いたものが変数名として抽出する。また、解析手段は、カンマの後にある文字列を数値として抽出する。以上により、変数「val1」と値「-1」、及び変数「val1」と値「50」が抽出される。抽出手段１０１は、抽出された変数と値のリスト１０５として、主記憶部１２上に保持しておく。
【００３０】
図３のフロー図に戻り、ステップＳ２０４において、判定手段１０２は、図５に示された制約式対応表１０４を、制約番号を１から順に読み込む。
【００３１】
制約式対応表１０４は、制約番号、制約式、エラーメッセージ、インデックス名の項目を有する。図５の例では、制約番号１に対し、制約式「if( ! val1 >= 0 ) ERROR();」、エラーメッセージ「長さを示す変数が負の値を示しています。」、インデックス名「SPEC1」の項目を有する。制約番号とは、項目ごとに付された番号であり、１から順に制約式の数だけ付される。制約式は、変数に設定された値が制約条件に違反するかどうか判定するために記述された式である。エラーメッセージとは、制約条件違反の内容を文章で説明した文字列である。インデックス名とは、プログラムに関する仕様書上において、意味的なまとまりをもった項目ごとに付された、インデックスの名前を指す。本実施形態においては、インデックス名はＨＴＭＬ(Hyper Text Markup Language)文書のファイル名を示している。すなわち、制約番号１の制約式に対応する仕様書情報は「SPEC1.html」に記載されている。
【００３２】
ステップＳ２０５において、判定手段１０２は、ステップＳ２０３で抽出された変数とその変数の値に対し、制約式対応表１０４の制約式に合致するか判定する。本実施形態において最初に判定される判定式は、「if (! val1 >= 0 ERROR();」である。前記判定式は、「変数val1が０以下である場合、制約条件違反」であることを示している。そこで判定手段１０２は、抽出された変数と値のリスト１０５に保管されていた、「val1」に関する値「-1」及び「50」について判定を行う。
【００３３】
なお、当該判定式は、プログラミング言語で一般に用いられる制御文と条件文によって表現されている。そして、「ERROR();」の部分が、判定条件エラーであることを判定手段１０２に知らせる条件となっている。
【００３４】
ステップＳ２０６において、ステップＳ２０５の判定の結果、制約条件に違反すると判断された場合、その違反箇所に、図５の制約式対応表に記載された情報に基づきエラーメッセージ、インデックス名から構成される閲覧用アドレス、及び制約式を追記する。なお、インデックス名と閲覧用アドレスとの関係についての詳細は後述する。
【００３５】
図６は、制約条件に違反する変数「val1」と値「-1」について、追記手段１０３が、対応するエラーメッセージ、閲覧用アドレス、制約式を追記した例を示している。値「50」が設定された「val1」については、制約条件違反ではないため、追記手段１０３によってエラーメッセージは追記されていない。
【００３６】
ステップＳ２０７において、図５の制約式対応表の制約番号について、すべて読み込みが終わった場合、処理を終了する。前記制約番号について、読み込みが終わっていない番号がある場合、ステップＳ２０４に戻り、残りの制約式について判定処理を続ける。
【００３７】
以上により、実行履歴情報における変数とその変数の値について制約条件違反が発見された場合、ユーザは、実行履歴情報上に追記されたエラーメッセージを確認することで、その内容を即座に理解することができる。また、追記された閲覧用アドレスにアクセスすることにより、制約条件に関連する仕様書へ迅速にアクセスすることができる。
【００３８】
なお、図５における制約式対応表において、判定式を制御文や条件文で表現せず、具体的な数値範囲だけを指定するようにしてもよい。その場合、判定手段１０２がその範囲を読み取り、範囲外にある数値を条件違反として判定するような処理を行う。
【００３９】
また、図６の例において、追記手段１０３は、エラーメッセージ、閲覧用アドレス、制約式すべてを追記しているが、これらのいずれかを選択して追記するようにしてもよい。
【００４０】
（閲覧用アドレスとインデックス名の説明）
ここで、ステップＳ２０７おいて、追記手段１０３によって追記される閲覧用アドレスについて説明する。閲覧用アドレスは、図５の制約式対応表において、インデックス名の列に記入されたインデックス名によって特定される。
【００４１】
図７は、インデックスが付された仕様書情報の例を示している。「ＳＰＥＣ１」、「ＳＰＥＣ２」がそれぞれインデックス名を表す。「ＳＰＥＣ１」は、仕様書情報が「（表）」形式で示されており、本実施形態では、変数「val1」について「val1 > 0」「val1 = 0」「val1 < 0」それぞれの値について許容されるかどうか、プログラムの実行状態ごとに記載されている。ここでは特に、「val1 = 0」の場合、「状態１」では「OK」であるが、「状態２」では「エラー」となる旨が示されている。「ＳＰＥＣ２」は、仕様書情報が「（文章）」形式で示されており、関数「test」の機能や、関数が出力する値についての仕様が示されている。「ＳＰＥＣ３」以降も、同様にインデックスが付された仕様書情報が記載される。なお、インデックスは、「表」や「文章」の形式に限られず、図や、機能ごとの説明等、意味的なまとまりをもった項目に対して必要な数だけ作成される。
【００４２】
次に、閲覧用アドレスの特定方法について説明する。図５の制約式対応表のインデックス名の列では、仕様書情報が掲載されたＨＴＭＬ文書のファイル名のみが記載されており、このままでは仕様書情報の所在を特定できない。そこで、ステップＳ２０７において追記手段１０３が閲覧用アドレスを追記する場合には、仕様書情報の所在を示すパス情報を、前記インデックス名に付加して使用する。
【００４３】
本実施形態においては、仕様書情報がＨＴＭＬ形式で提供されており、インデックス名がＨＴＭＬ文書の名前を表している。そこで、仕様書情報の所在を示すパス情報は、ＨＴＭＬ文書を特定するために必要なＵＲＬ形式で表現される。具体的には、「http://仕様書が保管されているコンピュータ名/ディレクトリ名/」のような形式で表される。図６において、追記された閲覧用アドレス「http://localhost/documents/spec/SPEC01.html」のうち、「http://localhost/documents/spec/」の部分がパス情報である。このパス情報については、図示しない記憶手段にあらかじめ記憶しておき、追記手段１０３が読み出して追記する処理を行う。
【００４４】
図６においては、インデックス名がＨＴＭＬのファイルそのものを指し示す例を示した。しかしながら、仕様書情報の全てが単一のＨＴＭＬ文書内に記載されている場合には、インデックス名が当該文書の文書内リンクを表してもよい。具体的には、仕様書情報の記載されたＨＴＭＬ文書内に「＜a name="SPEC1"＞」のように記載し、閲覧用アドレスを「 http://localhost/documents/spec/spec.html#SPEC1 」とする。この場合、仕様書情報の所在を示すパス情報として、図示しない記憶手段に「http://localhost/documents/spec/spec.html」と記憶しておき、追記手段１０３が、これに「#」を付し、その後にインデックス名を追加したものを閲覧用アドレスとして追記する。前記閲覧用アドレスにアクセスすることにより、ユーザは、上記ＨＴＭＬ文書内の「＜a name="SPEC1"＞」が記載された箇所に素早くアクセスすることができる。
【００４５】
この他にも、仕様書情報を全てＸＭＬ形式で格納しておき、指定されたインデックス名に応じて必要な情報を閲覧できるようにしてもよい。本発明において、ＸＭＬ形式での情報の格納方法や抽出方法について特定するものではなく、一般的に用いられている方法による。この場合も、仕様書情報の所在を示すパス情報とインデックス名を組み合わせによって閲覧用アドレスが構成され、ユーザが当該アドレスにアクセスしたとき、図示しない処理手段がＸＭＬ形式の仕様書情報から必要な情報を取得して表示する処理を行う。
【００４６】
あるいは、図５の制約式対応表のインデックスの列において、閲覧用アドレスを完全なパスの形式で保持し、追記手段１０３が閲覧用アドレスをそのまま追記してもよい。この場合は、図示しない記憶手段が仕様書情報の所在を示すパス情報を保管する必要はなくなる。
【００４７】
以上により、ユーザはこの実行履歴情報を参照することにより、制約条件違反が発生している箇所を容易に特定することができる。また、エラーメッセージを確認することで、制約条件違反の内容を理解することができる。さらに、追記された閲覧用アドレスを辿ることにより、迅速に制約条件に対応する仕様書情報にアクセスすることができる。特に、ユーザが実行履歴情報を元にデバッグ作業を行う場合には、必要となる工数と時間が軽減される。
【実施例】
【００４８】
以下、本発明の実施例について説明する。本実施例において、ＡＳＩＣ（Application Specific Integrated Circuit）が組み込まれた特定用途向けの組み込み機器上で出力された実行履歴情報を対象に、本発明の検査結果出力装置を実施した例について説明する。なお、検査結果出力装置の例としては、図１に示したＰＣ１を用いる。このため、組み込み機器上で実行され出力された実行履歴情報は、ＰＣ１上で読み出せる状態になっていることを前提とする。
【００４９】
本実施例の検査結果出力装置が有する機能を、図８、図９及び図１０を用いて説明する。図８は、本実施例の検査結果出力装置の機能構成の例を示す図である。図９及び図１０は、本実施例における検査結果出力装置の動作フロー図である。抽出手段１０１０、変換手段１０１５、判定手段１０２０、追記手段１０３０、出力手段１０３５は、制約式対応表１０４０及びレジスタ定義表１０５０を参照し、図９及び図１０に示すフローに従って動作する。制約式対応表１０４０には、制約条件違反を判定するための制約式と、その内容を示すエラーメッセージ、及び、その内容と関連する仕様書情報の所在を表すインデックス名が記載されている。
【００５０】
レジスタ定義表１０５０には、レジスタの定義が記載されており、レジスタ番地とそのレジスタ名、ビットフィールド名の仕様が記載されている。ビットフィールドとは、レジスタ内の連続するビットの領域であり、ビットフィールド名とは、ビットフィールドの所定の位置（ビットフィールド開始位置）から所定の位置（ビットフィールド終了位置）までの一定の領域を表すために、名前を付したものである。ビットフィールド名を使用することにより、プログラムは、レジスタ内の特定のビットフィールドにアクセスできる。本実施例においては、３２ビットの長さをもつレジスタを対象とする。
【００５１】
仕様書情報１０６０にはプログラムの仕様に関する情報が記載されており、制約式対応表１０４０により、制約式とそれに関する仕様が記載されている箇所とが関連付けられている。
【００５２】
図９は、本実施例の検査結果出力装置の動作の概要を示すフローチャートである。まず、ステップＳ１０００において、検査結果出力装置は、実行履歴情報に出力されたレジスタ番地とそのレジスタに書き込まれた値を示す箇所を特定する。そして、検査結果出力装置は、レジスタ定義表１０５０を参照し、レジスタ番地とその値をビットフィールド名と値に変換する。次に、ステップＳ２０００において、検査結果出力装置は、制約式対応表１０４０を参照し、制約条件に違反しないか判定する。前記制約条件の違反が検出されたら、当該箇所にエラーメッセージ等の結果を追記する。
【００５３】
以下、ステップＳ１０００及びＳ２０００について詳細に説明する。
【００５４】
図１０（Ａ）は、図９のステップＳ１０００の動作フロー図である。ステップＳ１１００において、抽出手段１０１０は、ＰＣ１の補助記憶部１３から、実行履歴情報を、主記憶部１２に読みこむ。図１１に、読み込まれる実行履歴情報の例を示す。図１１において、「WRITE_REG[0x0500] 0x01F4C350」で表された部分は、「0x0500」番地のレジスタに「0x01F4C350」を書き込んだことを示している。なお、この出力形式はあくまで一例であり、実際にはプログラムごとに定められた出力がなされる。
【００５５】
ステップＳ１２００において、抽出手段１０１０は、実行履歴情報からレジスタ番地とその値が記載された箇所を特定する。図１１において、「WRITE_REG[0x0500] 0x01F4C350」で表された部分が、その箇所に相当する。実行履歴情報の形式はプログラムによって異なるため、あらかじめ決められた規則にしたがって、その場所を特定することになる。例えば本実施例においては、「WRITE_REG」という文字列のキーにして文字列探索し、当該箇所を特定する。
【００５６】
ステップＳ１３００において、抽出手段１０１０は、特定されたレジスタ番地と値を抽出する。図１１において、「WRITE_REG」の後ろに現された「[]」で括られた文字列「0x0500」が、書き込みの対象となったレジスタ番地（16進数表記）を示している。そして、さらにその後ろの半角スペースの後に記されている「0x01F4C350」が、当該レジスタに対して書き込まれた値（16進数表記）である。抽出手段１０１０は、前記レジスタ番地と値を、正規表現等の公知技術を用いて抽出する。
【００５７】
ステップＳ１４００において、変換手段１０１５は、ステップＳ１３００において抽出されたレジスタ番地「0x0500」と値「0x01F4C350」について、図１２に示すレジスタ定義表１０５０を参照し、ビットフィールド名とその値に変換する。
【００５８】
ここで、ビットフィールド名とその値の変換方法について、本実施例に基づき説明する。図１２のレジスタ定義表において、レジスタ番地「0x0500」によって表されるレジスタ名「Reg1」は、ビットフィールド名「x_size」及び「y_size」をもつ。前記の値「0x01F4C350」をビットフィールドごとに表現するために、図１２における「x_size」及び「y_size」について「ビットフィールド開始位置」および「ビットフィールド終了位置」を参照する。ビットフィールド名「x_size」は、前記の値「0x01F4C350」をビット表現したものについて、最下位ビットを開始位置として、「0」ビット目から「15」ビット目までに表現された値を表す。すなわち、前記値の下「16」ビット（2バイト）を表す「0xC350」がビットフィールド名「x_size」で表現される値となる。同様に、ビットフィールド名「y_size」については「0x01F4」がその値となる。なお、「0xC350」は、10進数表記すると「50000」であり、「0x01F4」は「500」である。以後、簡単のため、値については10進数表記を使用する。
【００５９】
ステップＳ１５００において、追記手段１０３０は、変換されたビットフィールド名「x_size」及び「y_size」と、その値「50000」及び「500」を、実行履歴情報においてレジスタ番地と値が記載されていた位置の次の行に追記する。追記する形式は任意であるが、本実施例では「 x_size 50000」のように追記し、改行して「 y_size 500」を追記する。図１３に、当該追記がなされた後のプログラム実施ログの例を示す。本実施例においては、ビットフィールド名が２つ追記されることとなったが、レジスタによっては３つ以上のビットフィールド名を有する場合もある。その場合には、追記手段１０３０は、すべてのビットフィールド名を実行履歴情報に追記する。
【００６０】
ステップＳ１６００において、実行履歴情報内に変換されていないレジスタ番地と値が残っていなければステップＳ１７００に進み、残っていればステップＳ１４００に進む。本実施例においては、変換すべきレジスタ番地を含む箇所は「WRITE_REG[0x0500] 0x01F4C350」のみであるため、ステップＳ１７００に進む。
【００６１】
ステップＳ１７００において、出力手段１０３５は、追記手段１０３０によって変換されたビットフィールド名が追記された実行履歴情報を、ＰＣ１の補助記憶部１３上にファイルとして出力し、処理を終了する。
【００６２】
図１０（Ｂ）は、図９のステップＳ２０００の詳細を示したフローチャートである。ステップＳ１０００により、ビットフィールド名とその値が追記された実行履歴情報のファイルがＰＣ１の補助記憶部１３上に出力されている。ステップＳ２１００において、抽出手段１０１０は、前記実行履歴情報を主記憶部１２に読みこむ。
【００６３】
ステップＳ２２００おいて、抽出手段１０１０は、実行履歴情報からビットフィールド名とその値が記載された箇所を特定する。本実施例においては、図１３において、「WRITE_REG[0x0500] 0x01F4C350」と記載された次の行の「 x_size 50000」の箇所及び「 y_size 500」の箇所である。その後、ステップＳ２３００において、抽出手段１０１０は、ビットフィールド名「x_size」とその値「50000」を抽出し、抽出したビットフィールドと値のリスト１０７０として保持しておく。
【００６４】
ステップＳ２４００において、判定手段１０２０は、図１４に示された制約式対応表１０４０を、制約番号順に１から読み込む。
【００６５】
制約式対応表１０４０は、制約番号、制約式、エラーメッセージ、インデックス名の項目を有する。図１４の例では、制約番号１に対し、制約式「if ( ! 32 <= x_size <= 5192) ERROR();」、エラーメッセージ「主走査画像サイズが32〜5192の範囲を超えています。」、インデックス名「SPEC3」の項目を有する。制約番号とは、項目ごとに付された番号であり、１から順に制約式の数だけ付される。制約式は、変数に設定された値が制約条件に違反するかどうか判定するために記述された式である。エラーメッセージとは、制約条件違反の内容を文章で説明した文字列である。インデックス名とは、プログラムに関する仕様書上において、意味的なまとまりをもった項目ごとに付された、インデックスの名前を指す。本実施形態においては、インデックス名はＨＴＭＬ(Hyper Text Markup Language)文書のファイル名を示している。すなわち、制約番号１の制約式に対応する仕様書情報は「SPEC3.html」に記載されている。
【００６６】
ステップＳ２５００において、判定手段１０２０は、ステップＳ２３００により抽出されたビットフィールド名と値に対し、制約番号に対応する制約式に合致するか判定する。本実施例において最初に判定される判定式は、「if ( ! 32 <= x_size <= 5192) ERROR();」である。当該判定式は、「x_sizeが３２以上５１９２以下でない場合には制約条件違反」であることを表す。したがって、判定手段１０２０は、ビットフィールド名「x_size」について制約条件違反であると判定する。
【００６７】
なお、当該判定式は、プログラミング言語で一般的に用いられる制御文と条件文によって表現されている。そして、「ERROR();」の部分が、判定条件エラーであることを判定手段１０２０に知らせる条件となっている。しかしながら、図１４における制約式対応表において、具体的な数値範囲だけを指定するようにし、判定手段１０２０がその範囲を読み取り、範囲外にある数値を条件違反として判定するような処理を行ってもよい。
【００６８】
本実施例において、判定手段１０２０が最初に判定対象とするビットフィールド名は「x_size」である。この例においては、「x_size」の値は「50000」であり、制約条件違反である。
【００６９】
ステップＳ２６００において、ステップＳ２５００の判定の結果、制約条件に違反すると判定された場合には、ステップＳ２７００へ進む。本実施例においては、判定手段１０２０により、「x_size」の値が制約条件違反であると判定しているため、ステップＳ２７００へ進む。ステップＳ２３００の判定の結果、制約条件に違反しないと判定された場合には、ステップ２８００へ進む。
【００７０】
ステップＳ２７００において、追記手段１０３０は、実行履歴情報上のビットフィールド名とその値が追記された位置の次の行に、図１４の制約式対応表に記載されたエラーメッセージ、インデックス名から構成される閲覧用アドレス及び制約式を付加する。インデックス名と閲覧用アドレスとの関係についての詳細は後述する。本実施例においては、追記手段１０３０は、図１３における「 x_size 50000」の次の行に、エラーメッセージ「主走査画像サイズが32〜5192の範囲を超えています。」と、閲覧用アドレス「http://www.ricoh.co.jp/asicspec/S_chip_LATEST/X_module/spec3.html」と、「if ( ! 32 <= x_size <= 5192) ERROR();」が追記される。追記された結果を図１６に示す。
【００７１】
ステップＳ２８００において、ステップＳ２３００により抽出されたすべてのビットフィールド名と値について判定が終わった場合には、ステップＳ２９００へ進む。本実施例においては、抽出手段１０１０によって抽出された他のビットフィールド名と値である、「y_size」と「500」について、判定手段１０２０による判定が終わっていない。そこで、ステップＳ２５００へ進み、「x_size」と同様に処理がなされる。
【００７２】
ステップＳ２９００において、図１３の制約式対応表の制約番号について、すべて読み込みが終わった場合、ステップ３０００に進む。本実施例においては、ステップＳ２５００〜Ｓ２８００においてビットフィールド名「y_size」についての処理が終わった後、図１４における制約番号２の項目について処理をするため、ステップＳ２４００に戻る。
【００７３】
ステップＳ３０００おいて、出力手段１０３５は、追記された実行履歴情報をファイルとして出力する。
【００７４】
図１６は前記出力結果の例を示している。図１６において、「x_size 50000」の部分は、ステップＳ１０００において、追記手段１０３０が追記したビットフィールド名と値の例である。図１６において、「＜エラー＞主走査画像サイズ（500番地）が32〜5192の範囲を超えています」の部分は、ステップＳ２７００において、追記手段１０３０が追記したエラーメッセージの例である。図１６において、「http://www.ricoh.co.jp/asicspec/S_chip_LATEST/X_module/SPEC3.html」の部分は、ステップＳ２７００において、追記手段１０３０が追記した閲覧用アドレスである。図１６において、「if ( ! 32 <= x_size <= 5192) ERROR();」の部分は、ステップＳ２７００において、追記手段１０３０が追記した制約式の例である。さらに、図１６において、「y_size 500」の部分は、ステップＳ１０００において、追記手段１０３０が追記したものである。ステップＳ２０００においては、判定手段１０２０はビットフィールド名「y_size」について制約条件に違反すると判定していない。そのため、追記手段１０３０は、前記ビットフィールド名に対してエラーメッセージ等を追記していない。
【００７５】
以上により、実行履歴情報に出力されたレジスタ番地とその値について制約条件違反が発見された場合、レジスタ番地がビットフィールド名に変換されるとともに、エラーメッセージが表示されることで、違反の内容を即座に確認することができる。また、追記された閲覧用アドレスにアクセスすることにより、制約条件に関連する仕様書へ迅速にアクセスすることができる。
【００７６】
なお、図１４における制約式対応表において、判定式を制御文や条件文で表現せず、具体的な数値範囲だけを指定するようにしてもよい。その場合、判定手段１０２０がその範囲を読み取り、範囲外にある数値を条件違反として判定するような処理を行う。
【００７７】
また、図１６において、追記手段１０３０は、エラーメッセージ、閲覧用アドレス、制約式すべてを追記しているが、これらのいずれかを選択して追記するようにしてもよい。
【００７８】
また、本実施例においては、判定手段１０２０によって制約条件違反が検出されなかったビットフィールド名「y_size」についても、追記手段１０３０が追記を行っている。しかしながら、制約条件に違反していないビットフィールド名は、ユーザは必要としない場合がある。その場合には、追記手段１０３０は、当該ビットフィールド名の追記を行わなくてもよい。
【００７９】
また、本実施例においては、ステップＳ１０００において追記された実行履歴情報をファイル出力し、ステップＳ２０００において読み込む処理を行っている。しかしながら、実施形態で例示したように、ステップＳ１０００とステップＳ２０００を続けて実行し、途中でファイル出力を行わなくてもよい。
【００８０】
（閲覧用アドレスとインデックス名の説明）
ここで、ステップＳ２７００おいて、追記手段１０３０によって追記される閲覧用アドレスについて説明する。閲覧用アドレスは、図１４の制約式対応表において、インデックス名の列に記入されたインデックス名によって特定される。
【００８１】
図１５は、インデックスが付された仕様書情報の例を示している。「ＳＰＥＣ１」、「ＳＰＥＣ２」、「ＳＰＥＣ３」がそれぞれインデックス名を表す。「ＳＰＥＣ１」は、「（レジスタ変数）」の仕様が表形式で示されており、モード選択レジスタの例が記載されている。また、「ＳＰＥＣ２」では、「（文章）」形式で示されており、「変倍／合成」に関する処理規則に関する仕様が文章形式で記載されている。また、「（ＳＰＥＣ３）では、「（表）」形式で、「入力データに対応する入出力画素数範囲が示されている。本実施例における「x_size」及び「y_size」に関する制約条件は、この「入出力画素数範囲表」に関連づけられている。
【００８２】
次に、閲覧用アドレスの特定方法について説明する。図１４の制約式対応表のインデックス名の列では、仕様書情報が掲載されたＨＴＭＬ文書の名前をのみが記載されており、このままでは仕様書情報の所在を特定できない。そこで、ステップＳ２７００において追記手段１０３０が閲覧用アドレスを追記する場合には、仕様書情報の所在を示すパス情報を、前記インデックス名に付加して使用する。
【００８３】
本実施例においては、仕様書情報がＨＴＭＬ形式で提供されており、インデックス名がＨＴＭＬ文書の名前を表している。そこで、仕様書情報の所在を示すパス情報は、ＨＴＭＬ文書を特定するために必要なＵＲＬ形式で表現される。具体的には、「http://仕様書の保管されているコンピュータ名/ディレクトリ名」のような形式で表される。図６に追記された閲覧用アドレス「http://www.ricoh.co.jp/asicspec/S_chip_LATEST/X_module/SPEC3.html」のうち、「http://www.ricoh.co.jp/asicspec/S_chip_LATEST/X_module/」の部分がパス情報である。このパス情報については、図示しない記憶手段にあらかじめ記憶しておき、追記手段１０３０が読み出して追記する処理を行う。
【００８４】
図１４においては、インデックス名がＨＴＭＬのファイルそのものを指し示す例を示した。しかしながら、仕様書情報の全てが単一のＨＴＭＬ文書によって提供される場合に、インデックス名が当該文書の文書内リンクを表してもよい。具体的には、仕様書情報の記載されたＨＴＭＬ文書内に「＜a name="SPEC3"＞」と記載し、閲覧用アドレスを「http://www.ricoh.co.jp/asicspec/S_chip_LATEST/X_module/spec.html#SPEC3」としてアクセスする。この場合、仕様書情報の所在を示すパス情報として、図示しない記憶手段に「http://www.ricoh.co.jp/asicspec/S_chip_LATEST/X_module/spec.html」と記憶しておき、追記手段１０３０が、これに「#」を付し、その後にインデックス名を追加したものを閲覧用アドレスとして追記する。前記閲覧用アドレスにアクセスすることにより、ユーザは、上記ＨＴＭＬ文書内の「＜a name="SPEC3"＞」が記載された箇所に素早くアクセスすることができる。
【００８５】
この他にも、仕様書情報を全てＸＭＬ形式で格納しておき、指定されたインデックス名に応じて必要な情報を抽出できるようにしてもよい。本発明において、ＸＭＬ形式での情報の格納方法や抽出方法について特定するものではなく、一般的に用いられている方法による。この場合も、仕様書情報の所在を示すパス情報とインデックス名を組み合わせによって閲覧用アドレスが構成され、ユーザが当該アドレスにアクセスしたとき、図示しない処理手段がＸＭＬ形式の仕様書情報から必要な情報を取り出して表示する処理を行う。
【００８６】
あるいは、図１４の制約式対応表のインデックスの列において、閲覧用アドレスを完全な形で保持し、追記手段１０３０が閲覧用アドレスをそのまま追記する方法もある。この場合は、図示しない記憶手段が仕様書情報の所在を示すパス情報を保管する必要はなくなる。
【００８７】
以上により、情報が追記された実行履歴情報を参照することで、ユーザは制約条件違反のあった箇所がすぐに特定できる。また、制約条件違反のあったレジスタのビットフィールド名とその値が明確になる。さらに、ユーザは制約条件違反に関するエラーメッセージを確認することで、違反の内容を即座に理解することができる。さらに、ユーザが追記された閲覧用アドレスにアクセスすることにより、制約条件に関連する仕様書へ迅速にアクセスすることができる。本実施例のように、レジスタへの書き込みに関する情報を含む実行履歴情報に基づいてデバッグを行う必要がある場合に、本発明はより有効である。
【符号の説明】
【００８８】
１  ＰＣ
１１  制御部
１２  主記憶部
１３  補助記憶部
１４  外部記憶装置Ｉ／Ｆ部
１５  ネットワークＩ／Ｆ部
１６  操作部
１７  表示部
１８  記憶媒体
１９  バス
１０１  抽出手段
１０２  判定手段
１０３  追記手段
１０４  制約式対応表
１０５  抽出した変数名と値のリスト
１０６  仕様書情報
１０１０  抽出手段
１０１５  変換手段
１０２０  判定手段
１０３０  追記手段
１０３５  出力手段
１０４０  制約式対応表
１０５０  レジスタ定義表
１０６０  仕様書情報
１０７０  抽出したビットフィールド名と値のリスト
【先行技術文献】
【特許文献】
【００８９】
【特許文献１】特開２００８−１０２６２７号公報
【特許文献２】特開２００２−２０７６１２号公報
【図１】
2012234284.tif 000003
【図２】
2012234284.tif 000004
【図３】
2012234284.tif 000005
【図４】
2012234284.tif 000006
【図５】
2012234284.tif 000007
【図６】
2012234284.tif 000008
【図７】
2012234284.tif 000009
【図８】
2012234284.tif 000010
【図９】
2012234284.tif 000011
【図１０】
2012234284.tif 000012
【図１１】
2012234284.tif 000013
【図１２】
2012234284.tif 000014
【図１３】
2012234284.tif 000015
【図１４】
2012234284.tif 000016
【図１５】
2012234284.tif 000017
【図１６】
2012234284.tif 000018