(57)【特許請求の範囲】
【請求項１】
それぞれ固有のカスタマイズインタフェースを通じて取得した設計情報を取り込んで、求められた演算処理機能を実現するソースコードを生成するための基礎データを集合したプログラム部品を、配列順を指定した状態で記憶装置に記憶させるデザインエディタと、
前記プログラム部品を前記配列順にソースコードに変換して連結したものを出力するコードジェネレータと、
前記コードジェネレータが前記プログラム部品をソースコードに変換する動作を実行するときに、前記ソースコードに変換されたプログラムの論理チェックを行うコードインスペクタと、
前記論理チェックによりエラーが検出されたときに、該当するエラーの原因となったプログラム部品と、そのプログラム部品の設計情報とを、表示出力装置に出力する欠陥ポイントフォーカスコントローラを備えたことを特徴とするプログラム開発ツール。
【請求項２】
請求項１に記載のプログラム開発ツールにおいて、
前記設計情報には、プログラムの解釈に必要な情報を含むフリー記述が含まれ、前記欠陥ポイントフォーカスコントローラは、該当するエラーの原因となったプログラム部品と、そのプログラム部品の設計情報と、対応するソースコードリストとフリー記述とを、表示出力装置に出力することを特徴とするプログラム開発ツール。
【請求項３】
請求項２に記載のプログラム開発ツールにおいて、
前記欠陥ポイントフォーカスコントローラは、フリー記述のエラーの原因となった箇所を指定して、表示出力装置に出力することを特徴とするプログラム開発ツール。
【請求項４】
請求項１乃至３のいずれかに記載のプログラム開発ツールにおいて、
前記プログラム部品は、求められた演算処理機能を実現するソースコードの、骨組みになるソースコードで記述したテンプレートを含むことを特徴とするプログラム開発ツール。
【請求項５】
請求項４に記載のプログラム開発ツールにおいて、
前記設計情報は、求められた演算処理機能を特定するための定義データと、プログラムの解釈に必要な情報を含むフリー記述と、前後のプログラム部品との接続関係を示す接続情報とを含むことを特徴とするプログラム開発ツール。
【請求項６】
請求項１乃至５のいずれかに記載のプログラム開発ツールにおいて、
プログラム部品は、構文要素コンポーネントと、データベース処理コンポーネントと、ファイル入出力コンポーネントとを含むことを特徴とするプログラム開発ツール。
【請求項７】
請求項１乃至６のいずれかに記載のプログラム開発ツールにおいて、
前記カスタマイズインタフェースは、複数のプログラム部品に共通の設計情報を取得するために、定義ファイルデータベースを参照することを特徴とするプログラム開発ツール。
【請求項８】
請求項１乃至７のいずれかに記載のプログラム開発ツールにおいて、
前記カスタマイズインタフェースは、カスタマイズ後のプログラム部品に対して、入力された設計情報をそのまま再現できる形式で設計情報を一体化させて、記憶装置に記憶させておくことを特徴とするプログラム開発ツール。
【請求項９】
請求項１乃至８のいずれかに記載のプログラム開発ツールにおいて、
前記コードジェネレータは、カスタマイズされたプログラム部品から、そのプログラム部品毎に求められた機能を実現するクラス毎ソースコードを生成することを特徴とするプログラム開発ツール。
【請求項１０】
請求項１乃至９のいずれかに記載のプログラム開発ツールにおいて、
前記コードジェネレータは、配列順に従ってプログラム部品毎にソースコードを生成するときに、これらのソースコードを連結するための連結用のソースコードも生成することを特徴とするプログラム開発ツール。
【請求項１１】
請求項１０に記載のプログラム開発ツールにおいて、
前記フリー記述はソースコードに挿入されるとともに、前記連結用のソースコード中にも挿入されることを特徴とするプログラム開発ツール。
【請求項１２】
請求項１乃至１１のいずれかに記載のプログラム開発ツールにおいて、
前記コードジェネレータは、コードインスペクタに対して、プログラム部品を組み合わせた結果生成されたソースコードが文法的に正しいかどうかと、実行速度が妥当かどうかの診断を依頼することを特徴とするプログラム開発ツール。
【請求項１３】
請求項１乃至１２のいずれかに記載のプログラム開発ツールにおいて、
前記設計情報には、プログラムの解釈に必要な情報を含むフリー記述が含まれ、
プログラム部品と、そのプログラム部品の設計情報と、フリー記述とを、表示出力装置に出力する設計情報出力コントローラを備えたことを特徴とするプログラム開発ツール。
【請求項１４】
請求項１乃至１２のいずれかに記載のプログラム開発ツールにおいて、
前記設計情報には、プログラムの解釈に必要な情報を含むフリー記述が含まれ、
プログラム部品毎に、そのプログラム部品の設計情報と、ソースコードとを、表示出力装置に出力する設計情報出力コントローラを備えたことを特徴とするプログラム開発ツール。
【請求項１５】
コンピュータを、
請求項１に記載の各手段として機能させるプログラム開発ツール用プログラム。
【請求項１６】
請求項１５に記載のプログラム開発ツール用プログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＪＡＶＡ（サンマイクロシステムズ社登録商標）によるバッチシステムの構築を自動化するツールを提供するプログラム開発ツールに関する。
【背景技術】
【０００２】
ハードウエアやＯＳ（オペレーティングシステム）に依存しないＪＡＶＡのような言語の利用度が高まっている。しかしながら、プログラム開発にあたっては、コーディングをして、デバッグをして、リトライしながらプログラムを完成させるという手順が要求される。一定の汎用的な処理を実行するモジュールを利用して、プログラム作成のための負荷を軽減することも行われている。また、指定された設計に基づいてソースコードを自動的に生成する技術も開発されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１５２６６７号公報
【特許文献２】特開２０１０−７９８０３号公報
【特許文献３】特開２００７−１２２５８６号公報
【特許文献４】特開２００６−２３６３７５号公報
【特許文献５】特開２００４−２６５２７８号公報
【特許文献６】特開２００２−２２２０９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
既知の従来の技術には、次のような解決すべき課題があった。
モジュールを組み込んだプログラムについても、コーディングとデバッグは不可欠である。プログラム開発ツールを補助的に利用する従来の方法では、作業性の向上に限界がある。プログラムの作成のためのロードを軽減し、コーディングのミスの発生を抑制し、作成後のプログラムの解析を容易にするツールの開発が望まれる。
上記の課題を解決するために、本発明は次のようなプログラム開発ツールを提供することを目的とする。
（１）ソフトウエアの生産性の向上を図る。
（２）高品質なソフトウエアを提供できる環境を作る。
（３）保守性を向上させる。
【課題を解決するための手段】
【０００５】
以下の構成はそれぞれ上記の課題を解決するための手段である。
〈構成１〉
それぞれ固有のカスタマイズインタフェースを通じて取得した設計情報を取り込んで、求められた演算処理機能を実現するソースコードを生成するための基礎データを集合したプログラム部品を、配列順を指定した状態で記憶装置に記憶させるデザインエディタと、前記プログラム部品を前記配列順にソースコードに変換して連結したものを出力するコードジェネレータと、前記コードジェネレータが前記プログラム部品をソースコードに変換する動作を実行するときに、前記ソースコードに変換されたプログラムの論理チェックを行うコードインスペクタと、前記論理チェックによりエラーが検出されたときに、該当するエラーの原因となったプログラム部品と、そのプログラム部品の設計情報とを、表示出力装置に出力する欠陥ポイントフォーカスコントローラを備えたことを特徴とするプログラム開発ツール。
【０００６】
〈構成２〉
構成１に記載のプログラム開発ツールにおいて、前記設計情報には、プログラムの解釈に必要な情報を含むフリー記述が含まれ、前記欠陥ポイントフォーカスコントローラは、該当するエラーの原因となったプログラム部品と、そのプログラム部品の設計情報と、対応するソースコードリストとフリー記述とを、表示出力装置に出力することを特徴とするプログラム開発ツール。
【０００７】
〈構成３〉
構成２に記載のプログラム開発ツールにおいて、前記欠陥ポイントフォーカスコントローラは、フリー記述のエラーの原因となった箇所を指定して、表示出力装置に出力することを特徴とするプログラム開発ツール。
【０００８】
〈構成４〉
構成１乃至３のいずれかに記載のプログラム開発ツールにおいて、前記プログラム部品は、求められた演算処理機能を実現するソースコードの、骨組みになるソースコードで記述したテンプレートを含むことを特徴とするプログラム開発ツール。
【０００９】
〈構成５〉
構成４に記載のプログラム開発ツールにおいて、前記設計情報は、求められた演算処理機能を特定するための定義データと、プログラムの解釈に必要なフリー記述と、前後のプログラム部品との接続関係を示す接続情報とを含むことを特徴とするプログラム開発ツール。
【００１０】
〈構成６〉
構成１乃至５のいずれかに記載のプログラム開発ツールにおいて、プログラム部品は、構文要素コンポーネントと、データベース処理コンポーネントと、ファイル入出力コンポーネントと、その他のコンポーネントを含むことを特徴とするプログラム開発ツール。
【００１１】
〈構成７〉
構成１乃至６のいずれかに記載のプログラム開発ツールにおいて、前記カスタマイズインタフェースは、複数のプログラム部品に共通の設計情報を取得するために、定義ファイルデータベースを参照することを特徴とするプログラム開発ツール。
【００１２】
〈構成８〉
構成１乃至７のいずれかに記載のプログラム開発ツールにおいて、前記カスタマイズインタフェースは、カスタマイズ後のプログラム部品に対して、入力された設計情報をそのまま再現できる形式で設計情報を一体化させて、記憶装置に記憶させておくことを特徴とするプログラム開発ツール。
【００１３】
〈構成９〉
構成１乃至８のいずれかに記載のプログラム開発ツールにおいて、前記コードジェネレータは、カスタマイズされたプログラム部品から、そのプログラム部品毎に求められた機能を実現するクラス毎ソースコードを生成することを特徴とするプログラム開発ツール。
【００１４】
〈構成１０〉
構成１乃至９のいずれかに記載のプログラム開発ツールにおいて、前記コードジェネレータは、配列順に従ってプログラム部品毎にソースコードを生成するときに、これらのソースコードを連結するための連結用のソースコードも生成することを特徴とするプログラム開発ツール。
【００１５】
〈構成１１〉
構成１０に記載のプログラム開発ツールにおいて、フリー記述はソースコードに挿入されるとともに、前記連結用のソースコード中にも挿入されることを特徴とするプログラム開発ツール。
【００１６】
〈構成１２〉
構成１乃至１１のいずれかに記載のプログラム開発ツールにおいて、前記コードジェネレータは、コードインスペクタに対して、プログラム部品を組み合わせた結果生成されたソースコードが文法的に正しいかどうかと、実行速度が妥当かどうかの診断を依頼することを特徴とするプログラム開発ツール。
【００１７】
〈構成１３〉
構成１乃至１２のいずれかに記載のプログラム開発ツールにおいて、
前記設計情報には、プログラムの解釈に必要な情報を含むフリー記述が含まれ、
プログラム部品と、そのプログラム部品の設計情報と、フリー記述とを、表示出力装置に出力する設計情報出力コントローラを備えたことを特徴とするプログラム開発ツール。
〈構成１４〉
構成１乃至１２のいずれかに記載のプログラム開発ツールにおいて、
前記設計情報には、プログラムの解釈に必要な情報を含むフリー記述が含まれ、
プログラム部品毎に、そのプログラム部品の設計情報と、ソースコードとを、表示出力装置に出力する設計情報出力コントローラを備えたことを特徴とするプログラム開発ツール。
【００１８】
〈構成１５〉
コンピュータを、構成１に記載の各手段として機能させるプログラム開発ツール用プログラム。
〈構成１６〉
構成１５に記載のプログラム開発ツール用プログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の効果】
【００１９】
〈構成１の効果〉
一定の機能を持つプログラム部品に設計情報を入力してカスタマイズし、これらを配列するだけで、プログラムを生産できる。エラーを検出したときにはプログラム部品毎に設計情報を表示して修正する。従って、ユーザはソースコードの解析や編集を必要としない。
〈構成２と１３と１４の効果〉
プログラム部品とフリー記述とその他の設計情報とソースコードを一覧することにより、プログラムの論理の流れをほぼ正確に把握することができる。
〈構成３の効果〉
フリー記述の不具合（エラー）箇所を指摘して、修正作業を容易にすることができる。
〈構成４の効果〉
コードジェネレータは、骨組みになるソースコードと設計情報を参照しながら、求められた演算処理機能を実現するソースコードに変換することができる。
〈構成５の効果〉
骨組みになるソースコードに、定義データと設定データとフリー記述と接続情報を含めれば、これらを使用して自動的に目的とするソースコードに変換をすることができる。
〈構成６の効果〉
プログラム部品を、構文要素コンポーネントと、データベース処理コンポーネントと、ファイル入出力コンポーネントと、その他のコンポーネントとに分類して、それぞれ所定の演算処理機能を実現するソースコードを生成するための基礎データ群を準備するとよい。単機能のプログラム部品を自由に配列して、任意のプログラムを生産できる。
〈構成７の効果〉
複数のプログラム部品に対する設計情報の取得を最小限の入力作業で済ませることができる。
〈構成８の効果〉
プログラム部品にそのままの形式で設計情報を一体化させておけば、プログラムの解析のために、プログラム部品と入力された設計情報とを自動的に表示することができる。
〈構成９の効果〉
プログラム部品毎にクラス毎ソースコードを生成して、これらを関係付けることにより、オブジェクト指向プログラミング技術を利用したプログラムを自動生成できる。
〈構成１０の効果〉
ユーザは、プログラム部品の接続のためのソースコード生成も行わなくて済む。
〈構成１１の効果〉
フリー記述を任意の場所に挿入することで、プログラムの解析を容易にする。
〈構成１２の効果〉
実行速度の妥当性も検査対象とするので、プログラムの品質を向上させることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の概略を示す概念図である。
【図２】本発明を実現するための一例を示すシステム構成ブロック図である。
【図３】カスタマイズインタフェース４２の説明図である。
【図４】コードジェネレータ４４の動作説明図である。
【図５】コードインスペクタの動作説明図である。
【図６】デザインエディタの動作説明図である。
【図７】プロジェクト作成手順を示すプログラム動作フローチャートである。
【図８】ソースコード生成処理後のプログラム動作フローチャートである。
【発明を実施するための形態】
【００２１】
本発明のプログラム開発ツールは、プログラム自動生成機能を持つ。用途は限定されない汎用的なものである。プログラム部品（バッチコンポーネント）をカスタマイズする機能と、プログラム部品コーディングし、点検をして、プログラムを自動生成する機能を持つ。以下、本発明の実施の形態を実施例毎に詳細に説明する。
【実施例１】
【００２２】
図１は、本発明の概略を示す概念図である。
本発明では、ユーザ側から見た場合に、プログラムで実行される必要な全ての処理を、プログラム部品２８を組み合わせて配列したものになるように、ユーザインタフェースを構成する。ユーザは、プログラム部品２８を操作の簡易なカスタマイズインタフェース４２を利用して部品単位でカスタマイズし、プログラム部品を自由に配列する。ユーザがソースコードを記述する必要はない。その後、コードジェネレータ４４が、配列されたプログラム部品２８を自動的にクラス毎ソースコード４０に変換する。
【００２３】
ユーザは、プログラム部品２８をカスタマイズするときに、プログラムの解釈に必要なフリー記述を含む設計情報３２を入力することができる。コードジェネレータ４４がソースコードに変換をする動作中にプログラムの論理チェックを行う。コードジェネレータ４４の動作をＧＩコントローラ４８が検出して、コードインスペクタ４６を起動する。これにより、コーディングのつど論理チェックが実行される。コーディングにエラーを検出したときには、設計情報出力コントローラ５２がレポートを出力する。レポートには、例えば、プログラム部品毎に、カスタマイズをした情報とフリー記述を列挙する。同時に、欠陥ポイントフォーカスコントローラ５０は、エラーを生じたプログラム部品とカスタマイズをした箇所を指摘する。これが、生産性と保守管理性の向上に大きく貢献する。
【００２４】
［システム構成］
図２は本発明を実現するための一例を示すシステム構成ブロック図である。
本発明のプログラム開発ツールは、汎用のコンピュータ１２により実現することができる。このコンピュータ１２には、ディスプレイ１４、本体制御部１６，キーボード１８、マウス２０といったマンマシンインタフェース用ハードウエアが設けられている。ディスプレイ１４はコンピュータ１２で処理をした結果を出力するための任意の構成の表示出力装置である。キーボード１８やマウス２０は、ユーザがコンピュータに指示を入力するための装置である。
【００２５】
コンピュータ１２は演算処理装置２２と記憶装置２４を備えている。演算処理装置２２や記憶装置２４は、コンピュータ１２の本体制御部１６に内蔵されていても外付けされていても構わない。演算処理装置２２は、インストールされたコンピュータプログラムにより図示した手段として機能する。図示した手段は、それぞれ本発明のプログラム開発ツール１０の主要な機能ブロックである。また、演算処理装置２２の動作のためにあるいは動作中に、記憶装置２４に図示したようなデータが記憶されている。以下、プログラム部品及び各手段としようするデータについて、順に説明する。
【００２６】
［プログラム部品］
プログラム部品２８（バッチコンポーネント）とは、一定の処理機能を持つプログラムモジュールのことである。プログラムモジュールとは、プログラムで使用される処理をモジュール化したものである。既知のプログラムモジュールは、引数を与えると所定の処理を実行するような小単位の実行プログラムで構成される場合が多い。一方、本発明のプログラム部品２８は、プログラム部品毎に固有のカスタマイズインタフェース４２を通じて取得した設計情報３２を取り込んで、求められた機能を実現する（クラス毎）ソースコード４０を生成するための基礎データを集合したモジュールである。
【００２７】
プログラム部品は、構文要素コンポーネントと、データベース処理コンポーネントと、ファイル入出力コンポーネントと、その他のコンポーネントに分類することができる。
それぞれの分類には、例えば、下記のようなコンポーネントが含まれる。
（構文要素コンポーネント）
クラス定義コンポーネント
インスタンス変数宣言コンポーネント
Getter 定義コンポーネント
Setter 定義コンポーネント
メソッド定義コンポーネント
制御構造コンポーネント
if コンポーネント
switch コンポーネント
for コンポーネント
例外処理コンポーネント
try catch コンポーネント
throw コンポーネント
Import 定義コンポーネント
インタフェイス定義コンポーネント
変数宣言コンポーネント
メソッド宣言コンポーネント
（データベース処理コンポーネント）
DB 駆動表ループ・コンポーネント
コントロールブレイクDB 駆動表ループ・コンポーネント
DB 出力処理コンポーネント
（ファイル入出力コンポーネント）
FILE 駆動表ループ・コンポーネント
コントロールブレイクFILE 駆動表ループ・コンポーネント
FILE 出力処理コンポーネント
マルチレイアウトFILE 駆動表ループ・コンポーネント
マルチレイアウトFILE 出力処理コンポーネント
マッチング処理ループ・コンポーネント
（その他）
フリー記述
初期処理
終了処理
【００２８】
［カスタマイズインタフェース］
図３はカスタマイズインタフェース４２の説明図である。
この図を用いて、プログラム部品２８の一例とカスタマイズインタフェース４２の機能を説明する。プログラム部品２８は、例えば、骨組みになるソースコードで記述したテンプレート３０を含む。カスタマイズインタフェース４２は、プログラム部品２８をカスタマイズするために、プログラム部品毎に固有の設計情報３２を取り込む機能を持つ。取り込まれた設計情報３２は、テンプレート３０の属性データのようにしてプログラム部品２８と一体化され、記憶装置２４（図１）に記憶される。
【００２９】
設計情報３２は、例えば、定義データ３４と設定データ３６とフリー記述３８と接続情報３９を含む。図２では、プログラム部品２８としてｉｆコンポーネントを例示した。このコンポーネント固有のカスタマイズインタフェース４２として、ｉｆコンポーネント設計情報入力画面６８を例示した。テキストボックス７２とテキストボックス７４とテキストボックス７６に、ｉｆコンポーネントに求められた機能を実現するための、条件と、その条件が成立した場合の処理と不成立の場合の処理とを入力する。
【００３０】
これらには、単に数式等を入力すればよい。ソースコードを意識する必要はない。これらは、定義データ３４あるいは設定データ３６に相当するデータである。ドロップダウンリスト７０と７８は、接続情報３９を入力するためのものである。前後に配置される他のコンポーネントを特定する名称あるいは識別記号等を入力する。入力処理を終了してその設定をするときにはコマンドボタン８２を操作し、処理を中断するときにはコマンドボタン８４を操作する。
【００３１】
テンプレート３０と設計情報３２を参照すれば、そのプログラム部品２８に求められた機能を実現するクラス毎ソースコード４０を生成できる。プログラム部品２８毎に、１個または複数個のクラス毎ソースコード４０が生成される。また、複数のプログラム部品２８からソースコードを生成するときに、プログラム部品間を接続するためのクラス毎ソースコード４０も生成される。カスタマイズインタフェース４２は、複数のプログラム部品２８に共通の設計情報３２を取得するために、定義ファイルデータベース５３を利用することができる。これにより、複数のプログラム部品に対する設計情報３２の取得を最小限の入力作業で済ませることができる。
【００３２】
例えば、変数の定義と、直前の処理から受け継ぐ変数の設定、後続する処理への変数の受け渡し処理等は、多くのプログラム部品に共通するので、定義ファイルデータベース５３から定義データ３４を取得するとよい。ｉｆコンポーネントの場合にも、「ｉｆ文」とその中に含める式と、前後処理とが、カスタマイズ後のプログラム部品２８の主要な内容になる。このほかに、プログラム部品の識別情報や名称等の管理情報を含めるとよい。
【００３３】
［フリー記述］
プログラム部品２８には、任意の場所にフリー記述３８を組み込むことができる。ｉｆコンポーネント設計情報入力画面６８では、テキストボックス８０を利用して、フリー記述３８を取得する。フリー記述とは、プログラム中で、プログラムの処理手順やプログラム部品の機能やその他、プログラムの解釈に有用なコメントを含む記述のことである。変数の設定や簡単な演算式をフリー記述に含めることもできる。本発明では、ユーザが直接ソースコード中にフリー記述を書き込むことはしないので、カスタマイズインタフェース４２を用いて、プログラム部品２８毎に自由にフリー記述３８を挿入するように設定することができる構成とした。フリー記述を利用することで、ユーザは限りあるプログラム部品を使用して、柔軟にプログラムを作成できる。
【００３４】
なお、設計情報入力画面６８により入力された設計情報３２は、不具合が生じた場合のプログラムの見直しや保守管理に非常に重要な役割を果たす。また、本発明では、不具合の修正をソースコードベースで行う必要がない。不具合が検出されたときには、該当するプログラム部品を指摘し、そのプログラム部品２８に設定された設計情報３２を表示する。即ち、図の設計情報入力画面６８を表示して、再考の上設計情報３２を再度入力するようにユーザに要求すればよい。従って、カスタマイズ後のプログラム部品２８には、入力された設計情報３２をそのまま再現できる形式で設計情報３２を一体化させて記憶させておくことが好ましい。例えば、ｉｆコンポーネントの場合には、例えば、テンプレートとして「if *1 then *2」というデータと、「*1: A=B」「*1: C=D+E」（A=BとC=D+Eとは、入力された設計情報）とを保存しておけばよい。
【００３５】
［コードジェネレータ］
図４はコードジェネレータ４４の動作説明図である。
コードジェネレータ４４は、上記の要領でカスタマイズされたプログラム部品２８から、そのプログラム部品２８毎に求められた機能を実現するクラス毎ソースコード４０を生成する。プログラム部品毎にソースコードが生成され、これらが、指定された順に連結される。コードジェネレータ４４は、プログラム部品２８を配列するときに、これらを連結するための連結用のソースコードも生成する。このとき、上記のフリー記述３８は、ソースコードの先頭、中間、最後尾等の任意の場所に挿入される。また、この連結用のソースコード中にも、フリー記述を挿入できる。ユーザが意識することなく、オブジェクト指向プログラミング技術に基づく高品質のプログラムが自動的に生成できる。
【００３６】
コードジェネレータ４４がソースコードを生成するときに、ＧＩコントローラ４８がその状態を検出して、コードインスペクタ４６を起動させる。コードインスペクタ４６は、ソースコードの生成と同時にプログラムの論理チェックをして、その結果をディスプレイ１４（図２）等に表示する。もし、不具合が検出されたときには、設計情報出力コントローラ５２を起動する。設計情報出力コントローラ５２は解析情報５４を出力する。
【００３７】
解析情報５４には、プログラム部品２８毎に、設計情報３２とこれに含まれたフリー記述３８が一覧できるように表示される。これで、プログラムの論理の流れをほぼ正確に把握することができる。また、設計情報出力コントローラ５２はソースコードリスト５６を出力することもできる。プログラム部品名と設計情報とソースコードとが対応付けられて表示される。これにより、プログラムの不具合箇所を確認して修正することができる。
なお、本発明では、コードジェネレータ４４がプログラム部品２８から自動的にソースコードを生成するのみで、ユーザは直接ソースコードを入力できないようにしている。この場合、エラーが生じるのは、フリー記述を含む設計情報の部分以外に無い。また、ユーザの設計思想を書き込めるのはフリー記述だけだである。従って、解析情報５４に、プログラム部品２８毎に、設計情報３２とこれに含まれたフリー記述３８が一覧できるように表示するだけで、エラーのチェックと修正ができるという効果がある。ユーザの入力するデータと自動的に生成するソースコードとを当初から完全に分離しているから、こうした処理ができる。
【００３８】
コードジェネレータは、コードインスペクタ４６に対して、プログラム部品を組み合わせた結果生成されたソースコードか文法的に正しいかどうか、実行速度が妥当かどうかの診断を依頼することが好ましい。また、コードジェネレータは、次のような機能を持つことが好ましい。即ち、オブジェクト指向に基づくクラスとメソッドのコード生成をする。さらに、安全なＳＱＬ文の生成をする。
【００３９】
さらに、指定された言語ロケールに従ったコメント文（フリー記述と同等のもの）を挿入する。また、他のドキュメンテーションツールに連携可能なコメント文の挿入をする。即ち、特定のエディタに頼らないコメント文の編集機能を付与する。さらに、可読性の高いソースの生成をする。そして、指定されたコーディング規約に準拠したコードの生成を可能にする。コーディング規約として、標準形式か利用者の特有の形式を含むかを指定できる。
【００４０】
［コードインスペクタ］
図５は、コードインスペクタの動作説明図である。
コードインスペクタ４６は、プログラム部品単位、プロジェクト単位等、指定された単位で、プログラムの論理チェックをし、その結果を出力する。なお、プロジェクトとは、全てのソースコードとプログラム部品を含む、プログラム制作のために必要なデータ一式のことをいう。また、これらのソースコードをコンパイルしたバッチプログラムを製品２６（図１）と呼ぶ。コードインスペクタ４６がプログラムの不具合を検出して、上記の解析情報５４やソースコードリスト５６のようなレポートを出力したとき、ユーザがただちにその不具合の修正に着手できる状態にしたい。欠陥ポイントフォーカスコントローラ５０は、コードインスペクタ４６の依頼を受けて、該当する不具合のあるプログラム部品２８を検出する。さらに、フリー記述の文法解釈もして、フリー記述の中の不具合のある箇所を検出して表示することもできる。
【００４１】
そして、そのカスタマイズに使用したカスタマイズインタフェース４２を表示して、当初入力された設計情報３２を表示する。さらに、このほかに、図示しない不具合の解析結果を解析情報５４に含めて表示するとよい。修正案を表示するのもよい。不具合が検出された理由を表示すればよい。なお、ソースコードとフリー記述との対応関係を明らかにするように、例えば、両者に同一のマークを付けるとよい。
【００４２】
［ランタイム手段］
コードインスペクタ４６は、プログラムの論理解析とともに、下記の点検をランタイム手段に依頼する。ランタイム手段は、生成したプログラムについて、下記の点検をする。即ち、ＳＱＬ文が効率良く実行されるかどうかの点検、定義可能な全てのファイル操作が効率良く実行されるかどうかの点検、自前のバッチフレームワークの動作が保証されることの点検、外部のフレームワークを利用した場合のオーバーヘッドが寡少かどうかの点検をする。以上のような点検を、プログラム部品毎に、さらに生成されたプログラム全体について自動的に実行するので、高品質で保守管理の容易なプログラムが自動生成できる。
【００４３】
［デザインエディタ］
図６は、デザインエディタの動作説明図である。
デザインエディタ４１は、プログラム部品２８の個別のカスタマイズと、配列順を指定する処理のほか、プロジェクト全体についての編集と、フリー記述の挿入等の処理を実行する。さらに、データベースアクセス用プログラム部品５８と、ファイルアクセス用プログラム部品６０と、バッチフレームワーク取り込み用プログラム部品６２（ラッパクラスを利用）と、例外処理のクラス６４とを、全てのバッチプログラムに自動的に組み込む。これで、全てのバッチプログラムに最小限必要な機能を自動的に付与することができる。そして、プロジェクトが完成すると、プロジェクト確認画面６６を表示する。プロジェクト確認画面６６は、使用したプログラム部品を処理順に配列して見せるものになる。
【実施例２】
【００４４】
図７は、プロジェクト作成手順を示すプログラム動作フローチャートである。
まず、ステップＳ１１で、デザインエディタ４１を起動する。その後、ステップＳ１２で、必要なプログラム部品２８の選択を受け付ける。次いで、ステップＳ１３で、図３に示したような設計情報入力画面６８の表示をする。ステップＳ１４では、この画面６８を使用した定義データ３４の入力を受付ける。
【００４５】
続いて、ステップＳ１５で、設定データ３６の入力を受付ける。次に、ステップＳ１６で、フリー記述３８の入力を受付ける。ステップＳ１７で、接続情報３９の入力を受付ける。なお、ステップＳ１４〜１７の処理の順序は自由であり、一部を省略することができる。また、定義ファイルを参照してデータ入力をすることもできる。
【００４６】
ステップＳ１８では、プログラム部品の設計情報の入力が終了したかどうかという判断をする。図３のコマンドボタン８２が操作されると、この判断の結果がイエスとなり、ステップＳ１９に移行する。ノーのときはステップＳ１２〜１８の処理を繰り返す。ステップＳ１９に移行したときは、必要な全てのプログラム部品について、設計情報３２の入力が終了している。
【００４７】
ここで、全体を確認するために、プロジェクト確認画面の表示をする。ステップＳ２０では、プログラム部品を連結する部分へのフリー記述の入力を受付ける。ステップＳ２１では、プロジェクト全体の編集が終了したかどうかという判断をする。この判断の結果がイエスのときは、ステップＳ２２に進み、常駐部品の付加をする。常駐部品とは、例えば、ユーザが予め設定した各プログラム部品に共通のデータである。常駐部品には、図６で説明したデータやプロパティコードと呼ばれているデータを含む。ノーのときはステップＳ１９〜２１を繰り返す。以上の手順で、ソースコード生成準備が完了する。
【００４８】
図８は、ソースコード生成処理後のプログラム動作フローチャートである。
まず、ステップＳ３１で、コードジェネレータ４４が起動する。ステップＳ３２で、プログラム部品単位でソースコードへの変換処理が行われ、クラス毎ソースコードを生成する。ステップＳ３３では、コードインスペクタ４６を起動する。ステップＳ３４では、プログラムの欠陥（不具合）を検出したかどうかという判断をする。この判断の結果がイエスのときはステップＳ３５の処理に移行し、ノーのときはステップＳ３９の処理に移行する。
【００４９】
ステップＳ３５では、欠陥ポイントの抽出をする。ステップＳ３６では、その欠陥を生じたプログラム部品の特定をする。ステップＳ３７では、プログラム部品の設計情報の修正を促すために、デザインエディタ４１を起動する。ステップＳ３８では、該当箇所のフォ−カス表示をして、修正を受け付ける。即ち、不具合が生じたプログラム部品の該当箇所を明示してディスプレイに表示し、適切な修正を受け付ける。その後、再びステップＳ３１に戻り、ソースコード生成のやり直しをする。
【００５０】
以上の処理で、プログラムの不具合が無くなると、ステップＳ３９では、解析結果を出力するかどうかという判断をする。この判断の結果がイエスのときはステップＳ４０の処理に移行し、ノーのときは処理を終了する。欠陥ポイントが検出されたときには、必ず解析結果を出力する。それ以外の場合には、ユーザの要求により解析結果を出力する。ステップＳ４０では、解析結果を示す情報の出力をする。ステップＳ４１では、ソースコードリストの出力をする。図４で説明したとおりの出力である。以上で、プログラムが完成する。
【００５１】
以上説明したプログラム開発ツール１０によれば、全てのバッチシステムをＪＡＶＡで自動生成することが可能になる。また、汎用性が高く、高生産性、高品質、高保守性を実現することができる。しかも、オブジェクト指向プログラミング技術を意識しないで、簡便に高機能のプログラムを生成できる。さらに、任意のタイミングで任意の部分について、静的解析と検証を容易にできるという効果がある。
【００５２】
なお、上記の演算処理装置で実行されるコンピュータプログラムは、機能ブロックで図示した単位でモジュール化されてもよいし、複数の機能ブロックを組み合わせて一体化されてもよい。また、上記のコンピュータプログラムは、既存のアプリケーションプログラムに組み込んで使用してもよい。本発明を実現するためのコンピュータプログラムは、例えばＣＤ−ＲＯＭのようなコンピュータで読み取り可能な記録媒体に記録して、任意の情報処理装置にインストールして利用することができる。
【符号の説明】
【００５３】
１０  プログラム開発ツール
１２  コンピュータ
１４  ディスプレイ
１６  本体制御部
１８  キーボード
２０  マウス
２２  演算処理装置
２４  記憶装置
２６  製品
２８  プログラム部品
３０  テンプレート
３２  設計情報
３４  定義データ
３６  設定データ
３８  フリー記述
３９  接続情報
４０  クラス毎ソースコード
４１  デザインエディタ
４２  カスタマイズインタフェース
４４  コードジェネレータ
４６  コードインスペクタ
４８  ＧＩコントローラ
５０  欠陥ポイントフォーカスコントローラ
５２  設計情報出力コントローラ
５３  定義ファイルデータベース
５４  解析情報
５６  ソースコードリスト
５８  データベースアクセス用プログラム部品
６０  ファイルアクセス用プログラム部品
６２  バッチフレームワーク取り込み用プログラム部品
６４  例外処理のクラス
６６  プロジェクト確認画面
６８  設計情報入力画面
７０  ドロップダウンリスト
７２  テキストボックス
７４  テキストボックス
７６  テキストボックス
７８  ドロップダウンリスト
８０  テキストボックス
８２  コマンドボタン
８４  コマンドボタン
【図１】
0005539921.tif 000002
【図２】
0005539921.tif 000003
【図３】
0005539921.tif 000004
【図４】
0005539921.tif 000005
【図５】
0005539921.tif 000006
【図６】
0005539921.tif 000007
【図７】
0005539921.tif 000008
【図８】
0005539921.tif 000009