(57)【特許請求の範囲】
【請求項１】
旧入力ファイルに基づいて帳票を出力する機能を有する改修前の旧プログラムと、前記旧プログラムの一部の機能を改修したプログラムであって新入力ファイルに基づいて帳票を出力する機能を有する新プログラムとを記憶した記憶手段と、
前記旧プログラムおよび前記新プログラムを実行して、それぞれ旧帳票と新帳票を作成するプログラム実行手段と、
前記新プログラムによって出力された新帳票を、前記旧プログラムによって出力された旧帳票のフォーマットに合わせて編集する帳票編集手段と、
前記帳票編集手段で編集された新帳票と、前記旧帳票とを、行ごとに先頭から１バイトずつ比較して、前記新帳票と前記旧帳票とを併記して差異のある点を出力する帳票比較手段と、
を備えることを特徴とするプログラム検証システム。
【請求項２】
前記新プログラムには、前記新入力ファイルの各データ項目のデータ型やバイト数を含むデータ定義が所定の書式で定義されており、
前記データ定義に基づいて、前記新入力ファイルを作成する入力ファイル作成手段、
を備えることを特徴とする請求項１に記載のプログラム検証システム。
【請求項３】
前記入力ファイル作成手段は、前記記憶手段に記憶されている前記旧入力ファイルに基づいて、データ項目の追加や削除、変更を含むデータ定義の差異を反映することによって前記新入力ファイルを作成する、
ことを特徴とする請求項２に記載のプログラム検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力ファイルに基づいて帳票を出力する機能を有するプログラムの改修時に、改修したプログラムが正しいか否かを検証するプログラム検証システムに関する。
【背景技術】
【０００２】
電力会社においては、例えば、お客様の契約内容、電気使用量を含む帳票を業務ごと、部署ごとにシステムで出力する。そのため、業務の変更や新サービスの開始などによって、帳票の出力項目に増減が生じ、行の追加や削除のような増減を伴う帳票のフォーマット変更やプログラムの改修が発生する。このようなプログラムの改修後は、開発担当者は、新しい帳票が仕様通りに出力されているか否か、すなわち、デグレードの有無を確認するために、例えば、新旧の帳票を並べたり、重ね合せたりして出力内容の差異を目視で確認する。このため、帳票の出力項目が多い場合は、比較作業に多大な労力を要し、見落としを生じ易いという問題がある。また、帳票に行の追加や削除のような増減を伴う場合は、新旧の帳票を並べたり、重ね合せたりして比較することが困難となり、比較作業にさらに多大な時間と労力とを要することになる。
【０００３】
ところで、比較フィールドを追加して表示することにより、複数の電子帳票の間で必要なデータ部分の比較を容易にすることが開示されている（例えば、特許文献１参照。）。また、画面フォ−マットに従って単体テストデータの作成することが開示され（例えば、特許文献２参照。）、単体テスト用データ作成時に、動作シーケンス定義とデータ書式定義によって、値決定が必要なフィールドのみをユーザに示すことが開示され（例えば、特許文献３参照。）。先願４には、テストケースを生成することが開示されている（例えば、特許文献４参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１６３４１２号公報
【特許文献２】特開平０６−３４８５４２号公報
【特許文献３】特開平１１−１２００２９号公報
【特許文献４】特開２０１２−１０８６９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、引用文献１から４に記載のいずれの技術であっても、例えば、帳票の複数項目の追加や削除を行うプログラムの改修をした場合、テストによって不具合が発見されたとしても、不具合の原因箇所を特定することが困難となる。そのため、テスト結果や修正箇所を検証して原因箇所を特定する必要があるため、テスト実施者の経験度や熟練度によって、原因箇所の特定に要する時間に差異が生じる。
【０００６】
そのため、プログラムを機能ごとに改修し、機能ごとに改修が終了したタイミングで、機能ごとに改修内容についてデグレードの有無を検証することが出来れば、不具合の発生箇所の切り分けが容易となると本出願の発明者は考えた。
【０００７】
そこで、この発明は、前記の課題を解決し、プログラム改修の際に、改修の途中でプログラムの検証が容易なプログラム検証システムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
前記の課題を解決するために、請求項１の発明は、旧入力ファイルに基づいて帳票を出力する機能を有する改修前の旧プログラムと、前記旧プログラムの一部の機能を改修したプログラムであって新入力ファイルに基づいて帳票を出力する機能を有する新プログラムとを記憶した記憶手段と、前記旧プログラムおよび前記新プログラムを実行して、それぞれ旧帳票と新帳票を作成するプログラム実行手段と、前記新プログラムによって出力された新帳票を、前記旧プログラムによって出力された旧帳票のフォーマットに合わせて編集する帳票編集手段と、前記帳票編集手段で編集された新帳票と、前記旧帳票とを比較して、差異のある点を表示するプログラム検証手段と、を備えることを特徴とする。
【０００９】
この発明によれば、帳票編集手段によって旧プログラムによって出力された旧帳票のフォーマットに合わせて編集された新帳票と、旧帳票とを比較して、差異のある点が表示される。
【００１０】
請求項２に記載の発明は、請求項１に記載のプログラム検証システムにおいて、前記新プログラムには、前記新入力ファイルのデータ型やバイト数を含むデータ定義が所定の書式で定義されており、前記データ定義に基づいて、前記新入力ファイルを作成する入力ファイル作成手段、を備えることを特徴とする。
【００１１】
請求項３に記載の発明は、請求項２に記載のプログラム検証システムにおいて、前記入力ファイル作成手段は、前記記憶手段に記憶されている前記旧入力ファイルに基づいて、データ項目の追加や削除、変更を含むデータ定義の差異を反映することによって前記新入力ファイルを作成する、ことを特徴とする。
【発明の効果】
【００１２】
請求項１に記載の発明によれば、プログラム検証手段によって、旧プログラムによって出力された旧帳票のフォーマットに合わせて編集された新帳票と、旧帳票とを比較して、差異のある点を表示するので、比較結果の確認が容易になる。すなわち、テスト実施者が、帳票を並べたり、重ね合せたりする必要がないので、帳票の比較が容易かつ正確となり見落としや、見誤りを防止することが可能である。
【００１３】
請求項２に記載の発明によれば、入力ファイル作成手段によって、新プログラムの各データ項目のデータ型やバイト数を含むデータ定義に基づいて新入力ファイルを作成するので、テスト実施者が入力ファイルを用意する必要がなくなり、より容易に帳票を比較することが可能となる。また、データ定義に基づいて新入力ファイルを作成するので、入力ファイルの作成ミスのような人為的ミスによって新プログラムが正しく動作しないということを防止できる。
【００１４】
また、入力ファイル作成手段によって、新プログラムのデータ定義に基づいて新入力ファイルを作成する。このため、例えば、複数項目を追加や削除する複数機能を機能ごとに改修するプログラムの改修時は、機能ごとに改修が終了したタイミングで入力データを作成することができる。つまり、プログラムを機能ごとに改修する場合は、機能ごとに改修が終了したタイミングで、改修内容についてデグレードの有無を検証することができる。これにより、不具合の発生箇所の切り分けが容易となり、プログラム改修を効率化することが可能である。
【００１５】
請求項３に記載の発明によれば、新入力ファイルは、旧入力ファイルを基にして、データ項目の追加や削除、変更を含むデータ定義の差異を反映することによって作成される。このため、入力ファイル作成手段によって作成された旧入力ファイルと新入力ファイルは、データ定義に差異があった項目以外は同一であるので、旧帳票と新帳票の比較が容易になる。すなわち、データ定義に差異があった項目以外は同一の入力ファイルに基づいて作成した新旧の帳票を比較することができるので、帳票の差分がプログラム改修に起因するものに限定され、容易に比較することができる。
【図面の簡単な説明】
【００１６】
【図１】この発明の実施の形態に係るプログラム検証システムの概略構成図である。
【図２】図１のプログラム検証システムで検証するプログラムによって作成される帳票に基づいて作成される請求書であり、（ａ）は現行の旧請求書であり、（ｂ）は改修後の新請求書である。
【図３】図１のプログラム検証システムで検証するプログラムの旧入力ファイルの一部である。
【図４】図１のプログラム検証システムで検証するプログラムの新入力ファイルの一部である。
【図５】図１のプログラム検証システムで検証するプログラムによって作成された旧帳票の一部である。
【図６】図１のプログラム検証システムで検証するプログラムによって作成された新帳票の一部であり、（ａ）はプログラムによって作成された新帳票の一部であり、（ｂ）はキー項目が付加された新帳票の一部であり、（ｃ）は旧帳票の出力項目に合わせて編集された新帳票の一部であり、（ｄ）は編集後新帳票の一部である。
【図７】図１のプログラム検証システムで検証するプログラムの定義ファイルの一部である。
【図８】図１のプログラム検証システムの入力ファイル作成タスクによる情報処理を示すフローチャートである。
【図９】図１のプログラム検証システムの帳票編集タスクによる情報処理を示すフローチャートである。
【図１０】図１のプログラム検証システムの帳票比較タスクによって作成されるコンペアチェックリストの一部である。
【図１１】図１のプログラム検証システムの帳票比較タスクによる情報処理を示すフローチャートである。
【図１２】図１のプログラム検証システムのプログラム検証タスクによる情報処理を示すフローチャートである。
【図１３】図１のプログラム検証システムを使用したプログラム改修を説明するためのフローチャートであり、開発担当者の動作と、開発サーバによる情報処理を示す。
【発明を実施するための形態】
【００１７】
以下、この発明を図示の実施の形態に基づいて説明する。
【００１８】
図１は、この発明の実施の形態に係るプログラム検証システム１の概略構成ブロック図である。この実施の形態では、電気料金の請求書作成プログラムを改修する場合について説明する。このプログラム検証システム１は、旧入力ファイル２０に基づいて、図２（ａ）に示すような電気料金の旧請求書３０を出力する機能を有する旧プログラムの改修時に、改修したプログラムが正しいか否か、すなわち、デグレードの有無を検証する機能を有するものである。この実施の形態では、旧プログラムを改修して、契約種別５１と前月比５２とを追加して、新入力ファイル４０に基づいて、図２（ｂ）に示す新請求書５０を出力する新プログラムが正しいか否かを判定するものとする。
【００１９】
ここで、旧入力ファイル２０は、旧請求書３０を出力するために、図３に示すように、営業所番号、契約者番号ごとに、住所、請求年月、請求金額が記載されたものである。この旧入力ファイル２０は、例えば、外部の料金計算システム（図示略）によって、契約者ごとの請求金額が計算された際に記憶部１１に記憶されるようになっている。
【００２０】
旧請求書３０は、図２（ａ）に示すように、契約者ごとに、住所、請求年月、請求金額を出力するものであり、旧帳票６０に基づいて作成されるものである。
【００２１】
新入力ファイル４０は、旧入力ファイル２０と同様に、例えば、外部の料金計算システムによって作成されて、記憶部１１に記憶されるものである。新入力ファイル４０は、図４に示すように、旧入力ファイル２０に契約種別と前月比とが、行の先頭から５項目目、７項目目に追加されたものである。
【００２２】
新請求書５０は、図２（ｂ）に示すように、旧請求書３０に契約種別５１と前月比５２とを追加して出力するものであり、新帳票７０に基づいて作成されるものである。
【００２３】
旧帳票６０は、旧プログラムによって出力されるものであり、図５に示すように、旧請求書３０を出力するための出力項目をキー項目によってグループ化し、ソートして並べたものである。この旧帳票６０の出力項目を所定の書式で、契約者ごとに出力したものが旧請求書３０である。
【００２４】
新帳票７０は、新プログラムによって出力されるものであり、旧帳票６０と同様に、図６（ａ）〜（ｄ）に示すように、新請求書５０を出力するための出力項目をキー項目によってグループ化し、ソートして並べたものである。この新帳票７０の出力項目を所定の書式で、契約者ごとに出力したものが新請求書５０である。
【００２５】
プログラム検証システム１は、図１に示すように、主として、旧プログラムおよび新プログラムを含むプログラム、タスク、ファイルを記憶した記憶部１１と、入力ファイル作成手段としての入力ファイル作成タスク１２と、プログラム実行手段としてのプログラム実行タスク１３と、帳票編集手段としての帳票編集タスク１４と、帳票比較手段としての帳票比較タスク１５と、プログラム検証手段としてのプログラム検証タスク１６と、これらを制御などする制御部１０とを備えている。
【００２６】
記憶部１１は、図３に示すような旧入力ファイル２０に基づいて図２（ａ）に示すような旧請求書３０を出力する機能を有する改修前の旧プログラムと、旧プログラムの一部の機能を改修したプログラムであって図４に示すような新入力ファイル４０に基づいて図２（ｂ）に示すような新請求書５０を出力する機能を有する新プログラムと、図７に示す定義ファイル８０を記憶する。この旧プログラム、新プログラムは、単体テストを行うタイミングで開発担当者Ｍによって開発サーバＣに保存（登録）される。また、記憶部１１は、旧入力ファイル２０や新入力ファイル４０、旧請求書３０、新請求書５０、旧帳票６０、新帳票７０を記憶する。旧入力ファイル２０は、旧プログラムの実行前に保存され、新入力ファイル４０は、入力ファイル作成タスク１２によって作成されて保存される。ここで、プログラムの実行に使用する旧入力ファイル２０と新入力ファイル４０は、ファイル名にタイムスタンプを付加して、全ファイルを履歴として記憶部１１に記憶するようになっている。旧帳票６０と新帳票７０は、プログラム実行タスク１３によってプログラムが実行されると作成されて保存される。旧請求書３０と新請求書５０は、旧帳票６０と新帳票７０に基づいて、請求書作成タスク（図示略）が実行されると作成されて保存される。さらに、記憶部１１は、プログラム、タスクや、プログラム、タスクの処理に必要な一時ファイルなどを記憶する。
【００２７】
入力ファイル作成タスク１２は、新プログラムに定義された新入力ファイル４０のデータ定義に基づいて、記憶部１１に記憶された旧入力ファイル２０に基づいて、データ項目の追加や削除、変更を含むデータ定義の差異を反映することによって新入力ファイル４０を作成する機能を有するプログラム、タスクである。この入力ファイル作成タスク１２は、後述するプログラム検証タスク１６によって起動される。
【００２８】
入力ファイル作成タスク１２は、図８に示すフローチャートに基づいた処理を行う。まず、データ定義を取得する（ステップＳ１１）。データ定義は、プログラムで使用する入力項目を含む各データ項目のデータ型やバイト数を含むデータ定義が所定の書式で定義ファイル８０に記載されている。データ定義は、入力項目ごとに、変数名、データ型（数値、文字列）、桁数、ファイル内の位置が定義されている。具体的には例えば、図７に示す定義ファイル８０には、契約種別と前月比のデータ定義が新たに追加されている。すなわち、契約種別は、「ＫＥＩＳＹＵ＝Ｆｉｌｅ１（５，２）  ＩＮＰＵＴ  ＩＴＥＭ（ｉｎｔｅｇｅｒ，２）」と定義されており、変数名は「ＫＥＩＳＹＵ」、入力ファイルは「Ｆｉｌｅ１」の５項目であって整数２バイトの入力項目であることが定義されている。また、前月比は、「ＺＥＮＧＥＴＳＵ＝Ｆｉｌｅ１（７，６）  ＩＮＰＵＴ  ＩＴＥＭ（ｉｎｔｅｇｅｒ，６）」と定義されており、変数名は「ＺＥＮＧＥＴＳＵ」、入力ファイルは「Ｆｉｌｅ１」の７項目であって整数６バイトの入力項目であることが定義されている。ここで、定義ファイル８０の追加行の末尾には、「//＊ＵＰＤ  ＹＹＹＹＭＭＤＤ  ＊//」とのコメントの記述がある。すなわち、行の末尾に、「//＊ＵＰＤ  ＹＹＹＹＭＭＤＤ  ＊//」とのコメントが記述されている場合、当該行が更新された行であると判定できるようになっている。
【００２９】
そして、旧入力ファイルを取得する（ステップＳ１２）。すなわち、プログラム実行タスク１３によって、旧プログラムの実行時に作成されて記憶部１１に記憶されている旧入力ファイル２０の中から、所定のものを取得する。ここで、所定のものとは、最新の旧入力ファイル２０やプログラムのテストに適した、例えば、旧プログラムのテストにおいて使用した旧入力ファイル２０を選択可能となっている。
【００３０】
そして、新入力ファイル４０を作成して記憶部１１に保存して、このタスクの処理を終了する（ステップＳ１３）。すなわち、ステップＳ１１で取得した定義ファイル８０と、ステップＳ１２で取得した旧入力ファイル２０とに基づいて、新入力ファイル４０を作成する。具体的には、定義ファイル８０から、行の末尾に、「//＊ＵＰＤ  ＹＹＹＹＭＭＤＤ  ＊//」とのコメントと記述され、新プログラムの改修によって追加された入力項目は、入力ファイル「Ｆｉｌｅ１」の５項目の整数２バイトの契約種別と、７項目の整数６バイトの前月比であることが判定されるので、契約種別、前月比を旧入力ファイル２０の該当箇所（４項目目と５項目目の間、５項目目の後）に追加して、図４に示す新入力ファイル４０を作成する。
【００３１】
このようにして新入力ファイル４０が作成されて、記憶部１１に保存される。
【００３２】
プログラム実行タスク１３は、記憶部１１に記憶されている旧プログラムおよび新プログラムをロードして実行して、それぞれ旧帳票と新帳票を作成する機能を有するプログラム、タスクである。すなわち、プログラム実行タスク１３が実行されると、旧帳票６０および新帳票７０がそれぞれ作成される。プログラム実行タスク１３は、後述するプログラム検証タスク１６によって起動される。
【００３３】
帳票編集タスク１４は、新プログラムによって出力された新帳票７０を、旧プログラムによって出力された旧帳票６０のフォーマットに合わせて編集する機能を有するプログラム、タスクである。この帳票編集タスク１４は、後述するプログラム検証タスク１６によって起動される。
【００３４】
帳票編集タスク１４は、図９に示すフローチャートに基づいた処理を行う。まず、新帳票７０を取得する（ステップＳ２１）。すなわち、新プログラムによって作成されて記憶部１１に記憶されている新帳票７０を取得する。
【００３５】
そして、新帳票７０にキー情報を付加する（ステップＳ２２）。ここで、キー情報とは、帳票ごとに定義され、グループ化やソート、改ページに用いられる項目のことであり、ここでは、営業所と契約番号をキー情報とする。つまり、帳票６０、７０においては、営業所順、契約番号順にソートされ、同一営業所の契約者情報が同一ページに出力されるようになっている。具体的には、図６（ａ）に示す新帳票７０の各行の末尾にキー情報を付加して、図６（ｂ）に示す新帳票７０Ｂを作成する。
【００３６】
そして、新帳票７０を旧帳票６０のフォーマットに編集する（ステップＳ２３）。具体的には、新帳票７０において行が追加されている場合は、旧帳票６０に存在しない行、つまり、新帳票７０の追加行、例えば、図６（ｂ）において色を付した行は削除して行を詰めて、旧帳票６０の出力フォーマットに含まれる行のみで構成される図６（ｃ）に示す新帳票７０Ｃを作成する。さらに、新帳票７０Ｃに含まれる営業所を営業所番号に変換して図６（ｄ）に示す編集後新帳票７０Ｄを作成する。ここで、新帳票７０の追加行であるか否かの判定すなわち、新プログラムにおいて出力項目を追加した箇所であるか否かの判定は、定義ファイル８０と同様に変更行であることを示す「//＊ＵＰＤ  ＹＹＹＹＭＭＤＤ  ＊//」とのコメントの有無によって判定することができる。
【００３７】
また、新帳票７０において行が削除されている場合は、旧帳票６０に存在して、新帳票７０に存在しない削除行は改行して空白行を挿入し、旧帳票６０の出力フォーマットと同じ行数で構成される新帳票７０を作成する。
【００３８】
帳票比較タスク１５は、帳票編集タスク１４で編集された編集後新帳票７０Ｄと、旧帳票６０とを、行ごとに先頭から１バイトずつ比較して、編集後新帳票７０Ｄと旧帳票６０とを併記して差異のある点を図１０に示すコンペアチェックリスト９０として出力する機能を有するプログラム、タスクである。この帳票比較タスク１５は、後述するプログラム検証タスク１６によって起動される。
【００３９】
帳票比較タスク１５は、図１１に示すフローチャートに基づいた処理を行う。まず、編集後新帳票７０Ｄと旧帳票６０から制御文字を削除する（ステップＳ３１）。すなわち、編集後新帳票７０Ｄと旧帳票６０から、出力用に記述した文字サイズ、文字間サイズなどを含む制御コードを削除する。具体的には、削除すべき制御コードのパターンを定義しておき、定義に合致する制御コードを削除する。
【００４０】
そして、編集後新帳票７０Ｄと旧帳票６０とを比較する（ステップＳ３２）。具体的には、編集後新帳票７０Ｄと旧帳票６０とを、先頭から１バイトずつ比較し、差異がある場合は、編集後新帳票７０Ｄまたは旧帳票６０の行数と、行の先頭からの文字数を差異情報として記憶部１１に記憶する。
そして、ステップＳ３２で作成したコンペアチェックリスト９０を出力する（ステップＳ３３）。このコンペアチェックリスト９０は、図１０に示すように、編集後新帳票７０Ｄと旧帳票６０の１行を５列単位としてとして出力するものである。具体的には、１列目９１には、キー項目を出力し、２列目９２には、メモリ行を出力し、３列目９３には、旧帳票６０を１行出力し、４列目９４には、編集後新帳票７０Ｄを１行出力し、５列目９５には、３列目９３と４列目９４の不一致箇所に「＊」を出力する。この不一致箇所は、ステップＳ３２で記憶した差異情報に基づいて、編集後新帳票７０Ｄと旧帳票６０の該当行の先頭からの文字数の位置に「＊」を出力する。具体的には、この実施の形態では、３列目９３の契約番号は「１００２００」であり、４列目９４の契約番号は「１００２０２」でるため、不一致と判定され、５列目９５の契約番号の６桁目に該当する位置に「＊」が出力される。また、ページの先頭には、キー項目である営業所名と帳票ＩＤを出力する。
【００４１】
プログラム検証タスク１６は、プログラム実行タスク１３によって、旧プログラムと新プログラムを実行して旧帳票６０と新帳票７０を作成し、帳票編集タスク１４で編集された編集後新帳票７０Ｄと旧帳票６０とに基づいて、帳票比較タスク１５によって差異のある箇所を出力する機能を有するプログラム、タスクである。このプログラム検証タスク１６は、開発担当者Ｍの実行指令によって起動される。
【００４２】
プログラム検証タスク１６は、図１２に示すフローチャートに基づいた処理を行う。まず、入力ファイル作成タスク１２を実行して（ステップＳ４１）、新入力ファイル４０を作成する。そして、プログラム実行タスク１３によって旧プログラムを実行して旧帳票６０を出力し、新プログラムを実行して新帳票７０を出力する（ステップＳ４２）。
【００４３】
そして、帳票編集タスク１４を実行して（ステップＳ４３）、新帳票７０に基づいて編集後新帳票７０Ｄを出力する。
【００４４】
そして、帳票比較タスク１５を実行して（ステップＳ４４）、編集後新帳票７０Ｄと旧帳票６０とに基づいてコンペアチェックリスト９０を出力し、このタスクの処理を終了する。
【００４５】
このようにして出力されたコンペアチェックリスト９０を、開発担当者Ｍは目視で確認し、デクレードの有無を確認する。
【００４６】
次に、このような構成のプログラム検証システム１における情報の処理手段および作用について説明する。ここでは、旧プログラムを改修して、契約種別５１と前月比５２とを追加して、新入力ファイル４０に基づいて、図２（ｂ）に示す新請求書５０を出力する新プログラムを作成するものとする。この改修においては、契約種別５１の追加と、前月比５２の追加は、それぞれ別機能として追加されるものとする。
【００４７】
また、開発担当者Ｍは、プログラムの改修と、プログラム検証タスク１６によるデグレードのチェックを本番環境サーバとは異なる開発サーバＣで行うものとする。
【００４８】
まず、開発担当者Ｍによって、契約種別５１を追加する機能を追加する改修が行われる。
【００４９】
図１３に示すように、開発担当者Ｍによって、契約種別５１を出力するようにプログラムが改修されて、新プログラムが作成される（ステップＳ５１）。すなわち、旧プログラムを改修して、契約種別５１を出力項目に追加した新プログラムが作成される。具体的には、契約種別５１を入力項目として取得し、新帳票７０に出力する処理が新プログラムに追加されて、定義ファイル８０に契約種別５１が追加される。
【００５０】
そして、プログラムの改修が終了すると、開発担当者Ｍによって、プログラム検証タスク１６が起動される（ステップＳ５２）。すなわち、図３に示す旧入力ファイル２０に契約種別５１を追加した新入力ファイル４０が作成されて、新帳票７０と旧帳票６０とが比較されて、コンペアチェックリスト９０が作成される。このとき、新入力ファイル４０は、プログラムおよび定義ファイル８０に基づいて契約種別５１のみが追加されたものが作成される。そして、作成されたコンペアチェックリスト９０は、開発担当者Ｍに結果として通知される。
【００５１】
そして、開発担当者Ｍによって、コンペアチェックリスト９０が目視で確認される（ステップＳ５３）。ここで、確認の結果、デグレード、不具合が発見された場合は、不具合が解消されるまで、ステップＳ５１からステップＳ５３の処理が繰り返される。このとき、改修範囲は契約種別５１を追加する機能であるため、原因箇所が限定される。また、確認の結果、不具合がない場合、つまり、仕様通りの結果が得られた場合は、次に前月比を出力する機能を追加する改修が行われる。
【００５２】
そして、開発担当者Ｍによって、前月比５２を出力するようにプログラムが改修されて、新プログラムが作成される（ステップＳ５４）。
【００５３】
そして、以下、同様にして、プログラム検証タスク１６が起動されて、開発担当者Ｍによって結果が確認されて、不具合が解消されるまで、ステップＳ５１からステップＳ５３の処理が繰り返される。
【００５４】
このようにして、プログラムを機能ごと、例えば、新帳票７０に契約種別５１を追加する機能と、新帳票７０に前月比５２を追加する機能とを順番に改修した場合であっても、それぞれ、旧帳票６０と新帳票７０を比較して相違点を表示したコンペアチェックリスト９０が出力される。
【００５５】
以上のように、このプログラム検証システム１によれば、プログラム検証タスク１６によって、旧プログラムによって出力された旧帳票６０のフォーマットに合わせて編集された新帳票７０Ｄと、旧帳票６０とを比較して、差異のある点をコンペアチェックリスト９０として表示するので、比較結果の確認が容易になる。すなわち、開発担当者Ｍが、新帳票７０と旧帳票６０とを比較するために、並べたり、重ね合せたりする必要がないので、帳票の比較が容易かつ正確となり見落としや、見誤りを防止することが可能である。
【００５６】
また、入力ファイル作成タスク１２によって、新プログラムの定義ファイル８０の各データ項目のデータ型やバイト数を含むデータ定義に基づいて新入力ファイル４０を作成するので、担当者が新入力ファイル４０を用意する必要がなくなり、より容易に旧帳票６０と新帳票７０を比較することが可能となる。また、データ定義に基づいて新入力ファイル４０を作成するので、新入力ファイル４０の作成ミスのような人為的ミスによって新プログラムが正しく動作しないということを防止できる。
【００５７】
また、例えば、複数項目を追加や削除する複数機能を機能ごとに改修するプログラムの改修時は、機能ごとに改修が終了したタイミングで新入力ファイル４０を作成することができる。つまり、プログラムの改修が機能ごとに終わったタイミングで、プログラム検証タスク１６によってコンペアチェックリスト９０が作成されて、デグレードの有無を確認できる。このため、デグレードが生じた場合は、不具合の原因箇所が限定されているため、不具合の発生箇所の切り分けが容易となり、プログラム改修を効率化することが可能である。
【００５８】
さらに、新入力ファイル４０は、旧入力ファイル２０を基にして、データ項目の追加や削除、変更を含むデータ定義の差異を反映することによって作成される。このため、入力ファイル作成タスク１２によって作成された旧入力ファイル２０と新入力ファイル４０は、データ定義に差異があった項目以外は同一であるので、旧帳票６０と新帳票７０の比較が容易になる。すなわち、データ定義に差異があった項目以外は同一の入力ファイル２０、４０に基づいて作成した新旧の帳票６０、７０を比較することができるので、帳票６０、７０の差分がプログラム改修に起因するものに限定され、容易に比較することができる。
【００５９】
さらに、新入力ファイル４０は、記憶部１１に記憶されている旧入力ファイル２０を基にして作成するので、過去に旧プログラムについて行った単体テストや、その他のテストデータなども有効に活用することができるので、テストデータの準備が容易になる。
【００６０】
以上、この発明の実施の形態について説明したが、具体的な構成は、上記の実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があっても、この発明に含まれる。例えば、上記の実施の形態では、データ定義は、定義ファイル８０に記述するものとして説明したが、プログラムのソースコードの例えば冒頭に記載するようにしてもよい。
【００６１】
また、プログラム改修に伴う追加、削除などを含む変更箇所は、所定のコメント（「//＊ＵＰＤ  ＹＹＹＹＭＭＤＤ  ＊//」）を記述するのではなく、旧プログラムや旧定義ファイルとの差分を取得することにより、定義ファイル８０の修正箇所、すなわち、入力項目の変更箇所を判断するようにしてもよい。
【００６２】
さらに、コンペアチェックリスト９０の出力項目は、マスクが可能となっており、比較不要な項目を非表示（非出力）としたり、追加したりできるようにしてもよい。
【符号の説明】
【００６３】
１              プログラム検証システム
１１            記憶部（記憶手段）
１２            入力ファイル作成タスク（入力ファイル作成手段）
１３            プログラム実行手段（プログラム実行タスク）
１４            帳票編集手段（帳票編集タスク）
１５            帳票比較手段（帳票比較タスク）
１６            プログラム検証手段（プログラム検証タスク）
２０            旧入力ファイル
３０            旧請求書
４０            新入力ファイル
５０            新請求書
６０            旧帳票
７０            新帳票
７０Ｄ          編集後新帳票
８０            定義ファイル
９０            コンペアチェックリスト
【要約】      （修正有）【課題】プログラム改修の際に、改修の途中であってもプログラムの検証を容易にする。【解決手段】旧入力ファイルと新入力ファイルとのデータ定義に基づいて、旧入力ファイルに、データ項目の追加や削除、変更を含むデータ定義の差異を反映することによって新入力ファイルを作成し（Ｓ４１）、旧入力ファイルに基づいて旧帳票を出力する機能を有する改修前の旧プログラムと、旧プログラムの一部の機能を改修したプログラムであって新入力ファイルに基づいて新帳票を出力する機能を有する新プログラムとを実行して、それぞれ旧帳票と新帳票を作成し（Ｓ４２）、新帳票を旧帳票のフォーマットに合わせて編集し（Ｓ４３）、編集された新帳票と旧帳票とを、行ごとに先頭から１バイトずつ比較して、新帳票と旧帳票とを併記して差異のある点を出力する（Ｓ４４）。【選択図】図１２【図１】
0005461716.tif 000002
【図２】
0005461716.tif 000003
【図３】
0005461716.tif 000004
【図４】
0005461716.tif 000005
【図５】
0005461716.tif 000006
【図６】
0005461716.tif 000007
【図７】
0005461716.tif 000008
【図８】
0005461716.tif 000009
【図９】
0005461716.tif 000010
【図１０】
0005461716.tif 000011
【図１１】
0005461716.tif 000012
【図１２】
0005461716.tif 000013
【図１３】
0005461716.tif 000014