(57)【要約】   【課題】  仕様を定義する段階で、精度の高い仕様の定義の作成を支援する。  【解決手段】  リポジトリ１６中のファイルを参照して、前記業務処理定義ファイル中のスクリプトに基づいて、仕様定義を実行する仕様実行部１４は、スクリプトの各行を参照して、当該各行に記述された予約語から、表示画面中の変数を格納する画面セル、データベースに対する処理に利用する変数を格納するデータベースセル、および／または、業務処理における変数を格納する業務処理セルを生成し、生成された何れかのセルの値を更新し、かつ、コピー定義ファイル中のコピータイミングおよびコピー条件を参照して、何れかのセルの値を、他のセルの値にコピーするように構成されている。生成されたセルの内容を参照して、仕様実行部１４が、画面入出力および／またはデータ入出力をなすことにより、スクリプトに記述された処理が実行される。【選択図】  図１
2005149339.tif 000002
【特許請求の範囲】
【請求項１】
予約語ごとの構文規則および実行規則を対応付けた予約語ファイル、業務ごとのデータ形式を対応付けた業務処理データ定義ファイル、データベースごとのデータの形式を対応付けたデータベース定義ファイル、業務および画面ごとの入出力画面に表示すべき内容を対応付けた画面定義ファイル、業務および処理ごとの処理内容を記述したスクリプトを含む業務処理定義ファイル、および／または、処理過程で動的に生成されるセル間の値の間でのコピータイミングおよびコピー条件を定義したコピー定義ファイルを記憶したリポジトリと、
前記リポジトリ中のファイルを参照して、前記業務処理定義ファイル中のスクリプトに基づいて、仕様定義を実行する仕様実行手段であって、
前記スクリプトの各行を参照して、当該各行に記述された予約語から、表示画面中の変数を格納する画面セル、データベースに対する処理に利用する変数を格納するデータベースセル、および／または、業務処理における変数を格納する業務処理セルを生成し、生成された何れかのセルの値を更新し、かつ、前記コピー定義ファイル中のコピータイミングおよびコピー条件を参照して、前記何れかのセルの値を、他のセルの値にコピーするように構成された仕様実行手段とを備え、
前記生成されたセルの内容を参照して、前記仕様実行手段が、画面入出力および／またはデータ入出力をなすことにより、スクリプトに記述された処理が実行されることを特徴とする仕様定義支援システム。
【請求項２】
さらに、利用者が入力した要件定義、並びに、画面、帳票および／または業務処理に関する仕様定義の情報に基づいて、前記画面定義ファイル、業務処理データファイル、データベース定義ファイルおよび／または業務処理定義ファイルを生成し、前記リポジトリに記憶する仕様定義手段を備えたことを特徴とする請求項１に記載の仕様定義支援システム。
【請求項３】
前記仕様実行手段が、スタックに、前記スクリプトにおいて処理中の部分を示す情報を格納することを特徴とする請求項１または２に記載の仕様定義支援システム。
【請求項４】
前記仕様実行手段が、前記スクリプト中に、他の処理の呼び出しが含まれるときに、前記業務処理定義ファイル中の引数と一致するデータ名が、前記業務処理セル中に存在すれば、当該業務処理セル中の値を引数として当該他の処理を実行することを特徴とする請求項１ないし３の何れか一項に記載の仕様定義支援システム。
【請求項５】
予約語ごとの構文規則および実行規則を対応付けた予約語ファイル、業務ごとのデータ形式を対応付けた業務処理データ定義ファイル、データベースごとのデータの形式を対応付けたデータベース定義ファイル、業務および画面ごとの入出力画面に表示すべき内容を対応付けた画面定義ファイル、業務および処理ごとの処理内容を記述したスクリプトを含む業務処理定義ファイル、および／または、処理過程で動的に生成されるセル間の値の間でのコピータイミングおよびコピー条件を定義したコピー定義ファイルを記憶したリポジトリを備えたコンピュータにおいて、
前記リポジトリ中のファイルを参照して、前記業務処理定義ファイル中のスクリプトに基づいて、仕様定義を実行する仕様実行手段であって、
前記スクリプトの各行を参照して、当該各行に記述された予約語から、表示画面中の変数を格納する画面セル、データベースに対する処理に利用する変数を格納するデータベースセル、および／または、業務処理における変数を格納する業務処理セルを生成し、生成された何れかのセルの値を更新し、かつ、前記コピー定義ファイル中のコピータイミングおよびコピー条件を参照して、前記何れかのセルの値を、他のセルの値にコピーするように構成された仕様実行手段として、前記コンピュータを機能させ、
前記生成されたセルの内容を参照して、前記仕様実行手段において、画面入出力および／またはデータ入出力をなすことにより、スクリプトに記述された処理が実行されるように前記コンピュータを動作させることを特徴とする仕様定義支援プログラム。
【請求項６】
さらに、利用者が入力した要件定義、並びに、画面、帳票および／または業務処理に関する仕様定義の情報に基づいて、前記画面定義ファイル、業務処理データファイル、データベース定義ファイルおよび／または業務処理定義ファイルを生成し、前記リポジトリに記憶する仕様定義手段として、前記コンピュータを機能させることを特徴とする請求項１に記載の仕様定義支援プログラム。
【請求項７】
前記コンピュータを仕様実行手段として機能させる場合に、スタックに、前記スクリプトにおいて処理中の部分を示す情報を格納するように、前記コンピュータを動作させることを特徴とする請求項５または６に記載の仕様定義支援プログラム。
【請求項８】
前記コンピュータを仕様実行手段として機能させる場合に、前記スクリプト中に、他の処理の呼び出しが含まれるときに、前記業務処理定義ファイル中の引数と一致するデータ名が、前記業務処理セル中に存在すれば、当該業務処理セル中の値を引数として当該他の処理を実行するように、前記コンピュータを機能させることを特徴とする請求項５ないし７の何れか一項に記載の仕様定義支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションを構築する際に、当該アプリケーション仕様の定義を容易にするシステムに関する。
【背景技術】
【０００２】
従来のアプリケーション開発プロセスでは要件定義や画面・帳票・業務処理などの仕様をシステム化対象業務担当者が紙ベースでまとめ上げて定義し、それをシステムの開発者がウオータフォール型開発により、論理設計、プログラム設計の工程において成果物に変換してゆく。仕様定義を満たしているかどうかについては各工程終了時に業務担当者と開発者がレビューを実施することにより検証している。これらの作業を部分的にツールで支援したり、成果物を再利用可能なように電子媒体化しているが、その実態は人間中心の作業であり、紙と鉛筆がワープロソフトや表計算ソフトに置き換えられているにすぎない。人間の判断が介在する余地のない機構として提供されていないため以下のような問題が発生している。
【特許文献１】特開２００３−３０４２４号公報（第４−７ページ、第１−１１図）
【非特許文献１】佐々政孝,「プログラミング言語処理系〈ソフトウェア科学 〔環境〕5〉」,岩波書店,１９８９年１０月、ｐ．５６−９２、ｐ．９８−２１６、ｐ．３１２−３４１、ｐ．５０２−５１５
【非特許文献２】HTML 4.0 Specification、[online]、24-Apr-1998、[平成１５年９月１１日検索]、インターネット＜ＵＲＬ：http://www.w3.org/TR/1998/REC-html40-19980424/
【非特許文献３】Greg Holden,Matthew Keller著、IDEAC訳、「Apache WebサーバーBlack Book」、インプレス、１９９９年１０月
【非特許文献４】Larry Wall, Jon Orwant, Tom Christiansen著、近藤嘉雪訳、「プログラミングＰｅｒｌ」、オライリー・ジャパン、２００２年９月
【非特許文献５】C.J.Date, Hugh Darwen, Quipu LLC共著、「標準ＳＱＬガイド」、アスキーアジソンウェスレイ、１９９８年１２月
【発明の開示】
【発明が解決しようとする課題】
【０００３】
（１）要件定義などの要求の実現評価が結合テスト以降でなければ確認できない。
ウオータフォール型では工程間で成果物レビューを実施するが、業務担当者は要件定義の内容に対して豊富な知識を持つがシステムに関する知識が豊富であるとは限らない。このため論理設計やプログラム設計時のレビューでは要件定義を満たしているかどうかの判断が難しくなり、結合テスト工程などの動作する成果物を目の前にしなければ判断できないというリスクが存在する。
【０００４】
（２）仕様定義の精度があげにくく、洗練させることが困難である
仕様定義そのものも精度が高いとは言えない場合が多い。要求を机上で仕様として表現するのは特別な能力や技術を必要とする。要求の精度を上げるためには、紙ベースの仕様では、実際に動作するシステムを見たり触れたりすることができないので、実際の開発現場では、要件定義や論理設計での仕様定義が不十分なまま詳細化をプログラム設計へ委譲する傾向があり、要求管理にリスクが存在することとなる。
【０００５】
保険業務において、事務部門で保険業務に従事する者が保険商品や事務処理を定義し、この定義から自動プログラム生成する方法が開示されている（例えば、特許文献１参照）。出願人は、データ項目の状態を管理することでプログラムを自動生成するプログラム開発支援システムについて、出願を行っている（特願２００２―２４６４４１）。これらは、仕様定義が十分となった後に、プログラムを自動生成するものであり、段階的に仕様を記述、修正しながら定義してゆく作業を支援するものではない。
【０００６】
本発明は、仕様を定義する段階で、精度の高い仕様の定義の作成を支援することができるシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
システム化対象業務担当者やシステムの開発者（以降、利用者という）は要件定義や画面・帳票・業務処理などの仕様定義情報を、GUI（Graphical User Interface）機能を備えた仕様定義部から投入する。仕様定義部は投入された仕様定義情報を外部記憶装置のリポジトリに画面定義ファイル、業務処理データ定義ファイル、データベース定義ファイル、業務処理定義ファイルとして保存する。
【０００８】
利用者が業務処理定義ファイルの中の業務処理アルゴリズムを記述したスクリプトを指定して、仕様実行部に対して仕様の実行を指示することができる。仕様実行部はリポジトリを参照してスクリプトの記述を解析し（非特許文献１参照）、記憶装置内にスタックやデータバッファ（以降、セルともよぶ）等の動的記憶領域を作成し、この動的記憶領域の内容の参照、更新や、画面入出力、データベース入出力を行い、仕様を実行する。この場合、データを識別名で区別するため、利用者はバッファ間のデータのコピーを考慮する必要はないし、また他のスクリプトの処理呼出を行うときにも明示的に引数を指定しなくてよい。
【０００９】
より具体的に、本発明の目的は、予約語ごとの構文規則および実行規則を対応付けた予約語ファイル、業務ごとのデータ形式を対応付けた業務処理データ定義ファイル、データベースごとのデータの形式を対応付けたデータベース定義ファイル、業務および画面ごとの入出力画面に表示すべき内容を対応付けた画面定義ファイル、業務および処理ごとの処理内容を記述したスクリプトを含む業務処理定義ファイル、および／または、処理過程で動的に生成されるセル間の値の間でのコピータイミングおよびコピー条件を定義したコピー定義ファイルを記憶したリポジトリと、前記リポジトリ中のファイルを参照して、前記業務処理定義ファイル中のスクリプトに基づいて、仕様定義を実行する仕様実行手段であって、前記スクリプトの各行を参照して、当該各行に記述された予約語から、表示画面中の変数を格納する画面セル、データベースに対する処理に利用する変数を格納するデータベースセル、および／または、業務処理における変数を格納する業務処理セルを生成し、生成された何れかのセルの値を更新し、かつ、前記コピー定義ファイル中のコピータイミングおよびコピー条件を参照して、前記何れかのセルの値を、他のセルの値にコピーするように構成された仕様実行手段とを備え、前記生成されたセルの内容を参照して、前記仕様実行手段が、画面入出力および／またはデータ入出力をなすことにより、スクリプトに記述された処理が実行されることを特徴とする仕様定義支援システムにより達成される。
【００１０】
好ましい実施態様においては、さらに、利用者が入力した要件定義、並びに、画面、帳票および／または業務処理に関する仕様定義の情報に基づいて、前記画面定義ファイル、業務処理データファイル、データベース定義ファイルおよび／または業務処理定義ファイルを生成し、前記リポジトリに記憶する仕様定義手段を備えている。この仕様定義手段は、ＧＵＩ(Graphic User Interface)を利用するのが望ましい。
【００１１】
また、好ましい実施態様においては、前記仕様実行手段が、スタックに、前記スクリプトにおいて処理中の部分を示す情報を格納する。
【００１２】
別の好ましい実施態様においては、前記仕様実行手段が、前記スクリプト中に、他の処理の呼び出しが含まれるときに、前記業務処理定義ファイル中の引数と一致するデータ名が、前記業務処理セル中に存在すれば、当該業務処理セル中の値を引数として当該他の処理を実行する。これにより、引数情報のコピーの明示記述が省略可能となる。
【００１３】
また、本発明の目的は、予約語ごとの構文規則および実行規則を対応付けた予約語ファイル、業務ごとのデータ形式を対応付けた業務処理データ定義ファイル、データベースごとのデータの形式を対応付けたデータベース定義ファイル、業務および画面ごとの入出力画面に表示すべき内容を対応付けた画面定義ファイル、業務および処理ごとの処理内容を記述したスクリプトを含む業務処理定義ファイル、および／または、処理過程で動的に生成されるセル間の値の間でのコピータイミングおよびコピー条件を定義したコピー定義ファイルを記憶したリポジトリを備えたコンピュータにおいて、
前記リポジトリ中のファイルを参照して、前記業務処理定義ファイル中のスクリプトに基づいて、仕様定義を実行する仕様実行手段であって、前記スクリプトの各行を参照して、当該各行に記述された予約語から、表示画面中の変数を格納する画面セル、データベースに対する処理に利用する変数を格納するデータベースセル、および／または、業務処理における変数を格納する業務処理セルを生成し、生成された何れかのセルの値を更新し、かつ、前記コピー定義ファイル中のコピータイミングおよびコピー条件を参照して、前記何れかのセルの値を、他のセルの値にコピーするように構成された仕様実行手段として、前記コンピュータを機能させ、前記生成されたセルの内容を参照して、前記仕様実行手段において、画面入出力および／またはデータ入出力をなすことにより、スクリプトに記述された処理が実行されるように前記コンピュータを動作させることを特徴とする仕様定義支援プログラムによっても達成される。
【００１４】
好ましい実施態様においては、さらに、利用者が入力した要件定義、並びに、画面、帳票および／または業務処理に関する仕様定義の情報に基づいて、前記画面定義ファイル、業務処理データファイル、データベース定義ファイルおよび／または業務処理定義ファイルを生成し、前記リポジトリに記憶する仕様定義手段として、前記コンピュータを機能させる。
【００１５】
また、好ましい実施態様においては、前記コンピュータを仕様実行手段として機能させる場合に、スタックに、前記スクリプトにおいて処理中の部分を示す情報を格納するように、前記コンピュータを動作させる。
【００１６】
別の好ましい実施態様においては、前記コンピュータを仕様実行手段として機能させる場合に、前記スクリプト中に、他の処理の呼び出しが含まれるときに、前記業務処理定義ファイル中の引数と一致するデータ名が、前記業務処理セル中に存在すれば、当該業務処理セル中の値を引数として当該他の処理を実行するように、前記コンピュータを機能させる。
【発明の効果】
【００１７】
本発明によれば、仕様定義情報をもとにして、仕様を実行することができる。画面入出力、データベース入出力の実行に際して必要となるバッファ間のデータのコピーは仕様実行部が自動実行し、利用者がスクリプトに記述する必要は無く、他のスクリプトの処理呼出においても、引数の指定を必要としない。このように、利用者は画面の入出力項目、データベースの項目、処理呼出の引数などの追加削除を行っても、それに伴うスクリプトの変更を必要としないため、仕様の記述、修正を容易に行うことができる。仕様定義が不十分であっても、そのまま実行できるので、利用者は仕様を定義したその場で仕様を実行し、その結果を見て仕様の修正、再実行を繰り返しながら効率よく仕様定義を完成させてゆくことができる。
【発明を実施するための最良の形態】
【００１８】
以下、添付図面を参照して本発明の実施の形態について説明する。図１は、本発明の実施の形態にかかる仕様定義支援システムの構成を示すブロックダイヤグラムである。図１に示すように、本実施の形態にかかる仕様定義支援システム１０は、仕様定義部１２と仕様実行部１４とを備えている。
【００１９】
仕様定義部１２は、利用者が端末１８からＧＵＩを使用して入力する画面定義、データ定義や業務処理の仕様を、外部記憶装置のリポジトリ１６に保存する。仕様実行部１４は、リポジトリ１６に保存された画面定義、データ定義および／または業務処理の仕様を読み取り実行する。利用者は実行結果を見て、画面定義、データ定義および／または業務処理の仕様記述が不明確な部分や不十分な部分を、判断することが可能となる。このため、利用者は、仕様記述と仕様システム実行を繰り返して、仕様定義を完成させてゆくことができる。
【００２０】
本実施の形態にかかる仕様定義支援システム１０では、あらかじめ、予約語ファイルが外部記憶装置のリポジトリ１６に作成保存されている。あるいは、予約語ファイルが仕様実行部１４に組み込まれていてもよい。図２は、本実施の形態にかかる予約語ファイルの一例を示す図である。図２に示すように、予約語ファイルは、後述の業務処理内容を簡易言語で記述したスクリプトの予約語、構文解析規則および実行規則を持つ。たとえば、図２の符号２０９において、「予約語」“．入力”は、「構文解析規則」として“．入力”の左側には画面名(frame)があることを表し、「実行規則」では画面を表示し(display(frame))、その画面からの入力を受け付ける(accept(frame))ことを表している。
【００２１】
利用者が入力した情報を受け付けて、仕様定義部１２は業務処理データ定義ファイル、データベース定義ファイル、画面定義ファイル、および、業務処理定義ファイルを作成し外部記憶装置のリポジトリ１６に保存する。
【００２２】
業務処理データ定義ファイルは、業務処理で使用するデータの形式を表すものであり、図３に一例を示すように、項目として業務名、データ名、データ型、桁数などを持つ。データベース定義ファイルは、データベースまたは一般のファイルの形式を表すものであり、図４に一例を示すように、項目としてデータベース名、データ名、データ型、桁数、キー指定などを持つ。データベース定義ファイルにおいて、「キー指定」の値が“true”であれば（たとえば、符号４０１、４０２参照）、そのデータがキー項目であることを表す。
【００２３】
画面定義ファイルは、入出力画面に表示する内容や帳票を表すものであり、項目として、業務名、画面名、データ名、表示タイプ、表示値、入出力区分などを持つ。図５に示す普通預金入金画面を表すための、画面定義ファイルの一例を図６に示す。図６において、「表示タイプ」は、固定文字列(“ラベル”)、可変領域（“フィールド”）、ボタンなど画面に表示するための区別を表す。また、「入出力区分」は、入力（“in”）、出力（“out”）、入出力（“inout”）、定数（“const”）を表す。
【００２４】
業務処理定義ファイルは、業務処理の内容を表すものであり、図７に一例を示すように、項目として、業務名、処理名、データ名、入出力区分、スクリプトなどを持つ。「データ名」は業務処理の処理呼出において受け渡しされる引数を表し、「スクリプト」は業務処理のアルゴリズムを簡易言語で記述したものである。
【００２５】
利用者が、端末１８を操作して、たとえば、業務処理定義ファイル（図７参照）の「業務名」、「処理名」を指定して実行を指示すると、仕様実行部１４は、リポジトリ１６内の各ファイルの情報を参照し、業務処理定義ファイルのスクリプトを解析し、記憶装置上に動的記憶領域としてスタックおよびセルの情報を作成、参照、更新して仕様の実行を行う。コンパイラ技術によれば、スクリプトの解析にあたってスタックを使用しないで再帰呼び出しを使用して同様な処理効果を実現することもできる（たとえば、非特許文献１参照）。以降、スタックを使用する例について説明する。なお、スタックは、後に詳述するように、スクリプトのどの部分の処理を行っているかの情報を記憶するものである（図８参照）。
【００２６】
また、セルは、画面入出力、データベース入出力および業務処理実行のために使用するデータを記憶するものである。業務処理セルは変数データの領域であり、仕様実行部１４は、スクリプトの記述の解析中に新たなデータ名を見つけると、業務処理セルにそのデータの情報を作成する。なお、業務処理データ定義ファイルに登録されているデータについては、スクリプトの記述の有無にかかわらず、あらかじめ仕様の実行の開始時に業務処理セルを作成するようにしてもよい。図９に業務処理セルの一例を示す。
【００２７】
図９において、「セル種別」は業務処理セルであることを表す。「レベル」の最初の値は“１”であり、第一のスクリプトに第二のスクリプトの処理呼出の記述がある場合に、仕様実行部１４が、第一のスクリプトの実行から第二のスクリプトの解析、実行に移ると、「レベル」の値を“１”だけ値を増加させてセルを作成することになる。
【００２８】
「処理名」は、利用者が実行を指定した業務処理定義ファイルの「処理名」の値である。「データ名」はデータを識別する名称である。「現在値」はデータの値を示す。仕様実行部１４は、セルのデータの値が定まっていない場合には「現在値」に
“nil”をセットする。画面セルは、入出力画面に表示するデータの領域である。図１３に画面セルの一例を示す。図１３において、「画面名」は画面定義ファイルの「画面名」の値である。データベースセルは、データベースまたは一般のファイルのデータの領域である。図１５にデータベースセルの一例を示す。図１５において、「データベース名」はデータベース定義ファイルの「データベース名」の値である。なお、図１３および図１５における「セル種別」、「レベル」、「データ名」、「現在値」は業務処理セルのものと同様である。
【００２９】
また、仕様実行部１４は、同一の「データ名」について、図１０にしたがって、セル間で「現在値」をコピーする。この結果、同一の「データ名」についての最新の値は、業務処理セルの「現在値」の値となる。なお、データの同一性の判定を行うために「データ名」の値をそのまま比較してもよいし、別途識別名テーブルを準備しておき、その中にデータの同一性を登録しておいて、このテーブルを参照して同一性の判定を行ってもよい。
【００３０】
図１０に示すように、第一のスクリプトから第二のスクリプトの処理呼出を行っている場合は、仕様実行部１４は、呼出前のタイミングで、同一の「データ名」でかつ業務処理定義ファイルの「入出力区分」の値が“in”または“inout”であるデータについて、呼出元の業務処理セルから呼出先の業務処理セルに「現在値」の値をコピーする（符号１００１参照）。また、仕様実行部１４は、戻り時のタイミングでは、同じく「入出力区分」の値が“out”または“inout”であるデータについて、呼出先の業務処理セルから呼出元の業務処理セルに「現在値」の値をコピーする（符号１００２参照）。
【００３１】
画面入出力の場合には、仕様実行部１４は、表示前のタイミングに、同一の「データ名」でかつ画面定義ファイルの「入出力区分」の値が“out”または“inout”であるデータについて、業務処理セルから画面セルに「現在値」の値をコピーする（符号１００３参照）。また、入力受付後のタイミングでは、仕様実行部１４は、「入出力区分」の値が“in”または“inout”であるデータについて、画面セルから業務処理セルに「現在値」の値をコピーする（符号１００４参照）。
【００３２】
データベース追加の場合は、仕様実行部１４は、追加前のタイミングで、データベース定義ファイルの「データ名」のデータについて、業務処理セルからデータベースセルに「現在値」の値をコピーする（符号１００５参照）。
【００３３】
データベース検索の場合は、仕様実行部１４は、検索前のタイミングで、データベース定義ファイルの「キー指定」の値が“true”であるデータについて、業務処理セルからデータベースセルに「現在値」の値をコピーする（符号１００６参照）。また、検索後のタイミングでは、仕様実行部１４は、データベース定義ファイルの「データ名」のデータについて、データベースセルから業務処理セルに「現在値」の値をコピーする（符号１００７参照）。このように、画面入出力、データベース入出力の実行に際して必要となるバッファ間のデータのコピーについて、利用者がスクリプトに記述しなくても仕様実行部１４は自動的に処理を実行することができる。
【００３４】
〔普通預金入金スクリプトの処理〕
利用者が例えば、業務処理定義ファイル（図７参照）の、「業務名」“普通預金”、「処理名」“普通預金入金”を指定して実行を指示した場合に、本実施の形態にかかる仕様実行部１４が指定されたスクリプト（図１１）を解析して実行する処理について、以下に詳細に説明する。
【００３５】
仕様実行部１４は、スタックの「レベル」に最初の値
“１”、「処理名」に”普通預金入金”をセットし記憶したうえで（図８（ａ））、図１１に示すスクリプトの行番号０１から順に記述内容を解析して処理を実行する。
【００３６】
（１）ＬＯＯＰ（ループ：図１１の「行番号０１」)
仕様実行部１４は、予約語ファイル（図２の符号２０１）を参照し、“ＬＯＯＰ”がスタックへの記憶処理であることを知り、ＬＯＯＰ指令と現在の行番号０１をスタックに記憶する（図８（ｂ））。
【００３７】
（２）普通預金入金画面．入力（図１１の「行番号０２」）
図１２は、画面生成の際に実行される処理の一例を示すフローチャートである。たとえば、仕様実行部１４は予約語ファイル（図２の符号２０９）を参照し、“．入力”が画面入力であることを知ると共に、“．入力”の左の“普通預金入金画面”をもとに画面定義ファイル（図６参照）の「画面名」“普通預金入金画面”を参照する（図１２のステップ１２０１）。そして、仕様実行部１４は、「入出力区分」の値が“in”、“out”または“inout”であるデータについて（ステップ１２０２でノー(No)）、画面セルにそのデータの情報がなければ作成する（ステップ１２０３、および、図１３（ａ））。
【００３８】
業務処理セルにそのデータの情報が無ければ（ステップ１２０４でノー(No)）、仕様実行部１４は、業務処理セル内の情報を生成して、「現在値」に“nil”をセットする（ステップ１２０５）。また、「入出力区分」の値が
“out”または“inout”であれば（ステップ１２０６でイエス(Yes)）、仕様実行部１４は、画面セルの「現在値」に、同一の「データ名」を持つ業務処理セルの「現在値」の値をコピーする（ステップ１２０７および図１０の符号１００３）。
【００３９】
次いで、仕様実行部１４は、画面定義ファイルおよび画面セルから画面を生成し、生成された画面を表示装置に表示する（ステップ１２０９）。たとえば、HTML（HyperText Markup Language：非特許文献２参照）による画面出力を行う場合は、仕様実行部１４は、画面定義ファイルに基づいて、図１４に一例を示す文字列を生成し、Apache（非特許文献３参照）などのWEBサーバーに登録されたCGI（Common
Gateway Interface）プログラムから標準出力(例えばPerl（非特許文献４参照）のprint指令)によって、図５に示すような画面を出力する。
【００４０】
図１４に示す文字列の生成にあたって、仕様実行部１４は、例えば画面定義ファイルの「表示タイプ」の値が“フィールド”であれば“INPUT”タグを生成し、「データ型」から“type=”，「桁数」から“size=”を生成し、「入出力区分」が“out”であれば“readonly”を生成する。
【００４１】
利用者が図５に示す表示画面の口座番号欄（符号５０１参照）に、たとえば、”123456789012”と入力して検索ボタンを押下した場合には、図１４の<FORM>タグ内部の<INPUT  type=”submit”・・・>（符号１４０１参照）に基づいて、標準入力(例えばPerlのread指令)で指定した文字列バッファに、次のようデータが返る。
【００４２】
“口座番号=123456789012&検索ボタン=検索” 
複数の入力フィールドやボタンは「&」によって区切られ、「データ名=値」という形式になっているため、仕様実行部１４は、「入出力区分」の値が“in”または“inout”であるものについて（ステップ１２１０でイエス(Yes)）、返されたデータを解析して、データ名および値を得る（ステップ１２１１）。そして、仕様実行部１４は、画面セルの「データ名」“口座番号”の「現在値」の値に”123456789012”をセットし（ステップ１２１２０）、続いて、業務処理セルの「データ名」“口座番号”の「現在値」に画面セルの値”123456789012”をコピーする（ステップ１２１３）。また、画面セルの「データ名」“検索ボタン”の「現在値」の値に“押下”がセットされる（図１３（ｂ）参照）。
【００４３】
（３）ＩＦ  検索ボタン．押下（図１１の行番号「０３」）
仕様実行部１４は、予約語ファイル（図２の符号２０３参照）を参照し、“ＩＦ”が条件分岐処理であることを知り、ＩＦ指令であることをスタックに記憶する（図８（ｃ）参照）。続いて、仕様実行部１４は、予約語ファイル（図２の符号２１１参照）を参照し、“．押下”がボタンチェックであることを知り、“．押下”の左の“検索ボタン”をもとにして画面セルの「データ名」“検索ボタン”の「現在値」の値を調べ、“押下”である場合には（１３（ｂ）参照）、ＩＦの条件が成り立つことがわかるので、現在の行番号０３をスタックにセットした後（図８（ｄ）参照）、画面セルの「データ名」“検索ボタン”の「現在値」の値を “チェック済み”に更新し、スクリプトの次行の処理へ進む。ＩＦの条件が成り立たない場合には、所定の予約語（“ＥＬＳＥＩＦ”、“ＥＬＳＥ”、“ＥＮＤＩＦ”）が現れるまで、スクリプトを読み飛ばす。
【００４４】
（４）普通預金口座ＤＢ．検索（図１１の行番号「０４」）
仕様実行部１４は、予約語ファイル（図２の符号２１２）を参照し、“．検索”がデータベース検索であり、ＳＥＬＥＣＴのＳＱＬ文（非特許文献５参照）を生成、実行することを知る。また、仕様実行部１４は、“．検索”の左の“普通預金口座ＤＢ”をもとに、データベース定義ファイル（図４参照）の「データベース名」“普通預金口座ＤＢ”を参照して、図１５に一例を示すデータベースセルに情報を作成する。
【００４５】
データベースセルの「データ名」の値が、業務処理セルの「データ名」の値と同一の場合には、仕様実行部１４は、データベースセルの「現在値」に、業務処理セルの「現在値」の値をコピーする（図１５（ａ）参照）。そうでなければ、仕様実行部１４は、業務処理セルにも同一の「データ名」の情報を作成し、双方の「現在値」に
“nil”をセットする。
【００４６】
仕様実行部１４は、データベース定義ファイル（図４）の「キー指定」の値から、普通預金口座ＤＢのキー項目が“口座番号”であると判断できる。また、データベースセル（図１５（ａ））の「データ名」“口座番号”の「現在値」の値が“123456789012”であることがわかるので、仕様実行部１４は、次のＳＱＬ文を生成し実行する。
【００４７】
SELECT  口座番号,  顧客番号,  残高,・・・  FROM  普通預金口座ＤＢ  WHERE  口座番号="123456789012"
仕様実行部１４は、ＳＱＬ文の実行結果を得て、データベースセルの「データベース名」“普通預金ＤＢ”の「データ名」“顧客番号”、“残高”等の「現在値」に値をセットする（図１５（ｂ））と共に、業務処理セルの同一の「データ名」の「現在値」に値をコピーする（図９（ｂ）参照）。
【００４８】
（５）顧客ＤＢ．検索（図１１の行番号「０５」）
仕様実行部１４は、“顧客ＤＢ”について、行番号０４と同様の処理を行い、ＳＱＬ文の実行結果を得て、データベースセルの「データベース名」“顧客ＤＢ”の「現在値」に値をセットする（図１５（ｃ）参照）とともに、業務処理セルの同一の「データ名」の「現在値」に値をコピーする（図９（ｃ）参照）。
【００４９】
（６）メッセージ   ＝  “検索処理が終了しました” (図１１の行番号「０６」)
仕様実行部１４は、予約語ファイル（図２の符号２０７参照）を参照し、“＝”が代入であることを知り、業務処理セルの「データ名」“メッセージ”の「現在値」に“検索処理が終了しました”を
セットする。
仕様実行部１４が、次の行（行番号「０７」）を調べると“ＥＬＳＥＩＦ”であるので、予約語ファイル（図２の符号２０５参照）を参照すると条件分岐処理であることがわかる。仕様実行部１４は、スタックの最上段（トップ）を調べ、「指令」“ＩＦ”で「行番号」“０３”であることから（図８（ｄ）参照）、すでに条件分岐処理中であり他の条件検査は不要であることがわかるので、“ＥＮＤＩＦ”が現れるまでスクリプトを読みとばす。
【００５０】
（７）
ＥＮＤＩＦ
(図１１の行番号「２０」)
仕様実行部１４は、予約語ファイル（図２の符号２０５参照）を参照し、“ＥＮＤＩＦ”がスタック削除処理であることを知り、スタックの最上段の記憶を削除する（図８（ｄ）を（ｂ）に変更する））。
【００５１】
（８）
普通預金入金画面．出力
(図１１の行番号「２１」)
仕様実行部１４は、予約語ファイル（図２の符号２１０参照）を参照し、“．出力”が画面出力であることを知る。仕様実行部は、図１２に示す処理の流れにしたがって“．出力”の左の“普通預金入金画面”をもとに、画面セル（図１３）を参照して、画面名“普通預金入金画面”の情報が作成済みであることを知り、画面セルの「現在値」に業務処理セルの同一の「データ名」の「現在値」の値をコピーする。
【００５２】
次いで、仕様実行部１４は、図１１の行番号「０２」の場合と同様のやり方で画面定義ファイルと画面セルを参照して、たとえば、図１６に示す文字列を生成し、図１７に示すような画面を表示する。
【００５３】
（９）
ＥＮＤＬＯＯＰ（図１１の行番号「２２」）
仕様実行部１４は、予約語ファイル（図２の符号２０２参照）を参照し、“ＥＮＤＬＯＯＰ”が繰返処理であることを知り、スタック情報を参照し（図８（ｂ））、行番号「０１」の次行（行番号「０２」）の処理へ戻る。行番号「０２」の処理において、図１２に示す処理の流れに従い画面を生成し表示する。
【００５４】
このあと、例えば利用者が“利息”ボタンを押すと、仕様実行部１４は、行番号「０３」の処理を行い、ＩＦの条件が成り立たないので、行番号「０７」の“ＥＬＳＥＩＦ”まで読みとばし、次の処理を行う。
【００５５】
（１０）ＥＬＳＥＩＦ  利息ボタン．押下（図１１の行番号「０７」）
仕様実行部１４は、行番号「０３」の場合と同様に、“ＥＬＳＥＩＦ”が条件分岐処理であることを知る。仕様実行部１４は、画面セルの「データ名」“利息ボタン”の「現在値」の値を調べ、“押下”である場合には、ＩＦの条件が成り立つことがわかり、現在の行番号をスタックに記憶した後（図８（ｅ）参照）、画面セルの「データ名」“利息ボタン”の「現在値」の値を“チェック済み”に更新し、スクリプトの次行の処理へ進む。
【００５６】
（１１）簡易利息計算（図１１の行番号「０８」）
仕様実行部１４は、業務処理定義ファイル（図７参照）の「処理名」の値“簡易利息計算”をもとにして、他の処理呼出であることを知り、処理呼出指令と現在の行番号「０８」をスタックに記憶する（図８（ｆ）参照）。
スクリプトには引数の指定がないが、仕様実行部１４は、業務処理定義ファイルの引数と一致するデータ名が、業務処理セル（図９）にあれば、それを引数として後述の簡易利息計算スクリプトの処理を行う。このように、利用者は他の処理呼出のスクリプト記述にあたって、引数を考慮したり記述したりするわずらわしさが無く、効率よく仕様定義を行うことができる。簡易利息計算スクリプトの処理が終了するとスタックはもとの内容に戻っているので（図８（ｆ）参照）、仕様実行部１４は、スタックの最上段に記憶した行番号を取り出した後、スタックの最上段の記憶を削除し（図８の（ｆ）から（ｅ）へ変更）、続いて取り出した行の次行の処理を行う。
【００５７】
（１２）メッセージ   ＝  “１年間の利息は”  利息額  “円です”（図１１の行番号「０９」）
仕様実行部１４は、
予約語ファイル（図２の符号２０７参照）を参照し、“＝”が代入であることを知る。業務処理セルの“利息額”の「現在値」“３５１０”を得て、業務処理セルの「データ名」“メッセージ”の「現在値」に“１年間の利息は３５１０円です”をセットする。
【００５８】
また、仕様実行部１４が次行を調べると、“ＥＬＳＥＩＦ”であり、予約語テーブル（図２）を参照し、これが条件分岐処理であることがわかる。仕様実行部１４は、スタックの最上段を調べ、「指令」“ＩＦ”で「行番号」“０７”であることから（図８（ｅ））、すでに条件分岐処理中で他の条件検査は不要であるとわかるので、“ＥＮＤＩＦ”が現れるまでスクリプトを読みとばす。
【００５９】
この後、仕様実行部１４は、前述の行番号「２０」から「２２」と同様の処理を行った後、行番号０１の次行の処理へ戻る。
【００６０】
利用者が“終了”ボタンを押すと、仕様実行部は次の処理を行う。
（１３）ＥＬＳＥＩＦ  終了ボタン．押下（図１１の行番号「１０」）
仕様実行部１４は、行番号「０３」の場合と同様のやりかたで、“ＥＬＳＥＩＦ”が条件分岐処理であることを知る。仕様実行部１４は、画面セルの「データ名」“終了ボタン”の「現在値」の値を調べ、“押下”である場合には、ＩＦの条件が成り立つことがわかり、現在の行番号をスタックに記憶した後、画面セルの「データ名」“終了ボタン”の「現在値」の値を、 “チェック済み”に更新し、スクリプトの次行の処理へ進む。
【００６１】
（１４）ＢＲＥＡＫ（図１１の行番号「１１」
仕様実行部１４は、予約語ファイル（図２の符号２０６参照）を参照し、“ＢＲＥＡＫ”が繰返終了であることを知り、スクリプトの“ＥＮＤＬＯＯＰ”まで読みとばす。そして、仕様実行部１４は、スタックを最上段から順に調べて、「指令」の値が“ＬＯＯＰ”であるところまでのスタックの記憶を削除する。スクリプトに次行は無いので、仕様実行部は仕様の実行を終了する。
【００６２】
〔簡易利息計算スクリプトの処理〕
仕様実行部１４が、図７に示す業務処理定義ファイルの「処理名」“簡易利息計算”の「スクリプト」 “利息額  ＝  残高＊０．００１”に対して行う処理を、以下に説明する。
業務処理定義ファイルの新たな処理名の処理開始であるので、仕様実行部１４は、スタックの「レベル」の値を１つ上げて“２”として新たな「処理名」“簡易利息計算”をスタックに記憶する（図８（ｇ）参照）。
【００６３】
そして、仕様実行部１４は、業務処理定義ファイル（図７）の「処理名」“簡易利息計算”の「引数」を参照し、業務処理セルに“残高”および“利息額”の情報を追加する。このとき業務処理セルの「レベル」の値についても１つ上げて“２”とする。
【００６４】
仕様実行部１４は、セル間の値のコピーを示すコピー定義ファイルである図１０を参照して、業務処理定義ファイルの「入出力区分」が“in”である“残高”の「現在値」については、業務処理セルの呼出元の「処理名」“普通預金入金”の「データ名」“残高”の「現在値」の値をコピーする。
【００６５】
また、仕様実行部１４は、入出力区分が“out”である“利息額”の「現在値」については、“nil”とする（図１８（ａ）参照）。続いて、仕様実行部１４は、スクリプトを解析し、“残高＊０．００１”を計算し、その結果を業務処理セルの「処理名」“簡易利息計算”の「データ名」“利息額”
の「現在値」にセットする（図１８（ｂ）参照）。簡易利息計算のスクリプトの次行は無いので、仕様実行部１４は、この処理の実行を終えることがわかる。
【００６６】
業務処理定義ファイルをもとにして、仕様実行部１４は、「入出力区分」が“out”である“利息額”について、業務処理セルの呼出先「処理名」“簡易利息計算”の「データ名」“利息額”の「現在値」の値を、業務処理セルの呼出元「処理名」“普通預金入金”の「データ名」“利息額”の「現在値」の値にコピーする。そして、仕様実行部１４は、スタックの最上段の記憶を削除する（図８（ｇ）から（ｆ）へ変更）。同時に、仕様実行部１４は、業務処理セルの「レベル」の値が“２”である「処理名」“簡易利息計算”の情報を削除する（図１８（ｃ）参照）。
【００６７】
〔仕様の洗練の例〕
本発明によれば、利用者が、画面定義ファイル（図６）に“利息額”のデータを追加して、その場で”普通預金入金”の実行を指示し、たとえば、前述と同様の操作を行うと、仕様実行部１４は、図１９に示すような利息額の情報を追加した画面を表示する。この場合、利用者は画面の表示項目追加に伴うバッファ間のデータのコピーなどのスクリプトの修正を必要としない。このように、利用者は容易な修正とその直後の実行による容易な結果確認を繰返しながら、仕様定義の精度を上げてゆくことができる。
【００６８】
〔他の実施形態（その１）〕
図１１に示すスクリプトの実行において、利用者が、図５に示す表示画面の口座番号欄に空白を入力して検索ボタンを押した場合に、仕様実行部１４は、画面セルの「データ名」“口座番号”の「現在値」に空白をセットする。そして画面セルから業務処理セルの「現在値」へコピーし、続いて業務セルからデータベースセルの「データベース名」“普通預金口座DB”の「データ名」“口座番号”の「現在値」に空白をコピーした後、次のＳＱＬ文を生成し実行する。
SELECT  口座番号,  顧客番号,  残高,  ・・・ 
FROM  普通預金口座ＤＢ  WHERE  口座番号="     "
実行結果には、値がセットされていないので、データベースセルの“普通預金口座ＤＢ”の「データ名」“顧客番号”、“残高”の「現在値」の値については更新しないでそのままとしておく。続いて、仕様実行部１４は、顧客ＤＢに対するＳＱＬ文を同じように生成、実行すると実行結果には、値がセットされていないので、データベースセルの“顧客ＤＢ”の「データ名」“顧客番号”、“氏名”の「現在値」の値については更新しないでそのままとしておく。仕様実行部１４は、同一の「データ名」の情報についてデータベースセルから業務処理セルに「現在値」の値をコピーする。
【００６９】
次いで、仕様実行部１４は、業務処理セルから画面セルに「現在値」の値をコピーする。また、仕様実行部１４は、画面出力にあたって、画面定義ファイルの入出力区分が“out”または“inout”の部分について、“メッセージ”欄には"検索処理が終了しました"を表示し、画面セルの「現在値」の値が空白または“nil”である他のデータ名の欄には空白を表示する。利用者は、この画面を見て、必要に応じてエラー処理の記述をスクリプトに追加してもよいし、エラー処理未定義との注釈をスクリプトに記入し、その後の対応にゆだねてもよい。
【００７０】
〔他の実施形態（その２）〕
仕様定義については、これまで説明した簡易言語のスクリプトの記述だけでなく、図形及び文字を組み合わせた図式言語（図的言語、図形言語、図形設計仕様言語、記号言語等）を用いてもよい。例えば、代入、処理呼出、条件分岐（ＩＦ）、繰返（ＬＯＯＰ）、繰返終了（ＢＲＥＡＫ）を、図２０に示す図形で記述する場合に、図２１の図式言語について、図の上から下、左から右に処理するものとすれば、図２１の図式言語と図１１のスクリプトのいずれであっても、仕様実行部の行う処理は同一となる。
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【図面の簡単な説明】
【００７１】
【図１】図１は、本発明の実施の形態にかかる仕様定義支援システムの構成を示すブロックダイヤグラムである。
【図２】図２は、本実施の形態にかかる予約語ファイルの一例を示す図である。
【図３】図３は、本実施の形態にかかる業務処理データ定義ファイルの一例を示す図である。
【図４】図４は、本実施の形態にかかるデータベース定義ファイルの一例を示す図である。
【図５】図５は、本実施の形態にかかる普通預金入金画面一例を示す図である。
【図６】図６は、本実施の形態にかかる画面定義ファイルの一例を示す図である。
【図７】図７は、本実施の形態にかかる業務処理定義ファイルの一例を示す図である。
【図８】図８は、本実施の形態におけるスタックの例を示す図である。
【図９】図９は、本実施の形態にかかる業務処理セルの例を示す図である。
【図１０】図１０は、本実施の形態にかかるセル間のコピーを示すコピー定義ファイルの例を示す図である。
【図１１】図１１は、本実施の形態にかかる普通預金入金スクリプトの例を示す図である。
【図１２】図１２は、本実施の形態にかかる画面生成および表示のための処理の例を示すフローチャートである。
【図１３】図１３は、本実施の形態にかかる画面セルの例を示す図である。
【図１４】図１４は、本実施の形態にかかる画面出力ＨＴＭＬデータの例を示す図である。
【図１５】図１５は、本実施の形態にかかるデータベースセルの例を示す図である。
【図１６】図１６は、本実施の形態にかかる画面出力ＨＴＭＬデータの例を示す図である。
【図１７】図１７は、本実施の形態にかかる出力画面の例を示す図である。
【図１８】図１８は、本実施の形態にかかる業務処理セルの例を示す図である。
【図１９】図１９は、本実施の形態にかかる出力画面の例を示す図である。
【図２０】図２０は、他の実施の形態にかかる図式言語の例を示す図である。
【図２１】図２１は、他の実施の形態にかかる図式言語を用いたスクリプトの例を示す図である。
【符号の説明】
【００７２】
１０      仕様定義支援システム
１２      仕様定義部
１４      仕様実行部
１６      リポジトリ
【図１】
2005149339.tif 000003
【図２】
2005149339.tif 000004
【図３】
2005149339.tif 000005
【図４】
2005149339.tif 000006
【図５】
2005149339.tif 000007
【図６】
2005149339.tif 000008
【図７】
2005149339.tif 000009
【図８】
2005149339.tif 000010
【図９】
2005149339.tif 000011
【図１０】
2005149339.tif 000012
【図１１】
2005149339.tif 000013
【図１２】
2005149339.tif 000014
【図１３】
2005149339.tif 000015
【図１４】
2005149339.tif 000016
【図１５】
2005149339.tif 000017
【図１６】
2005149339.tif 000018
【図１７】
2005149339.tif 000019
【図１８】
2005149339.tif 000020
【図１９】
2005149339.tif 000021
【図２０】
2005149339.tif 000022
【図２１】
2005149339.tif 000023