(57)【要約】【課題】  マスタメンテナンスなど、システム共通機能の開発スピードアップが求められる中、高品質、高生産性のＷｅｂアプリケーション・システムが必要となっている。【解決手段】  基盤部分に追加すべきUOCを定義書より指定し必要最小限の開発工数でシステムを構築できるアプリケーションの自動生成装置を構築した。より具体的には、マスタメンテナンスなどパターン化が可能なシステム開発において、効率よく開発するためのカスタマイズ可能箇所を特定するものである。特定の方法は、ファイルやデータベースを利用して、カスタマイズ挿入箇所を画面単位、機能単位、操作単位の組み合わせにて特定する。【選択図】  図１
2009251975.tif 000002
【特許請求の範囲】
【請求項１】
パターン化が可能なＷｅｂアプリケーションを生成するＷｅｂアプリケーション自動生成装置において、
複数のＷｅｂアプリケーションを格納する記憶手段と、
前記複数のＷｅｂアプリケーションのうち、当該生成において利用するＷｅｂアプリケーションを特定する手段と、
特定された前記Ｗｅｂアプリケーションについて、当該生成におけるカスタマイズ可能箇所を特定する手段とを有し、
特定された前記カスタマイズ可能箇所について開発を行うことで開発の局所化を可能となることを特徴とするＷｅｂアプリケーション自動生成装置。
【請求項２】
請求項１に記載のＷｅｂアプリケーション自動生成装置において、
前記特定する手段は、前記記憶装置の内容に従って、前記カスタマイズ挿入箇所を画面単位、機能単位、操作単位の組み合わせにて特定することを特徴とするＷｅｂアプリケーション自動生成装置。
【請求項３】
請求項１または２のいずれかに記載のWebアプリケーション自動生成装置において、
前記カスタマイズ可能の箇所に対してカスタマイズ処理を施すことで再利用可能なＷｅｂアプリケーションを生成する手段をさらに有することを特徴とするＷｅｂアプリケーション自動生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム開発におけるデータベースのメンテナンス機能を保有するシステムが含まれる。
【背景技術】
【０００２】
近年、インターネット、イントラネット上のＷｅｂアプリケーション・システムが普及してきている。システム開発における開発手法においても、多様化が進んでいる。その中で、システム開発を効率的に行うための一手段として、ERPパッケージなど、各種パッケージソフトを利用したパッケージベースの開発やシステムフレームワークを利用したスクラッチ開発、既存システムからの移行開発（マイグレーション）が多く行われている。例えば、特許文献１には、 Ｗｅｂアプリケーション・システムの開発作業を軽減させ、スピードアップを図り、かつ、複雑なシステムや機能拡張などに対応するためにも、各コンポーネントの対応を明確にし、それぞれの役割を分離して設計することを目的とし、以下の構成が開示されている。Ｗｅｂアプリケーション・システムの開発において、それぞれの画面に対応させて、サーブレット、JSP、およびBeanの各コンポーネントを１対１の関係で定義し、各コンポーネントの対応を明確にする。画面デザインから各コンポーネントの定義を対応表として生成し、その対応表と設計ドキュメントの情報を利用して、サーブレット、JSP、およびBeanのコードを自動生成することで、開発作業を単純にし、軽減することを可能にしている。
【０００３】
【特許文献１】特開２００６−２３６３７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したアプリケーション・システム開発において、開発サイクルはますます短くなってきている。特に業務系アプリケーション・システムや業務サービスをＷｅｂ上で公開する場合、その開発サイクルを短縮することは顧客ニーズとして強い要求事項である。特に、システム共通的な機能（データベースのマスタメンテナンス機能（以降、マスタメンテナンス）等）において、できる限りコストをかけずに開発を実施できることが重要となっている。
【０００５】
しかしながら、システム共通的な機能であり、ある程度パターン化が可能な機能おいて、上記従来技術では、開発工数が多くかかり、十分に納期を短縮できるとは言えない。特許文献１では、各コンポーネントそれぞれについて、処理が必要になるため、開発工数が中々削減できない。
【課題を解決するための手段】
【０００６】
そこで、本発明では、マスタメンテナンスなどパターン化が可能なシステム開発において、効率よく開発するためのカスタマイズ可能箇所を特定するものである。特定の方法は、ファイルやデータベースを利用して、カスタマイズ挿入箇所を画面単位、機能単位、操作単位の組み合わせにて特定する。そして、特定されたカスタマイズ可能箇所に基づき、開発箇所を局所化（すなわち、特定の箇所を開発）するものである。
【発明の効果】
【０００７】
本発明によれば、開発工数をより削減することが可能になる。
【発明を実施するための最良の形態】
【０００８】
本発明の実施の形態について、図面を用いて説明する。本実施の形態は、マスタメンテナンスの例に説明するが、本発明はそれに限定されるものではない。
【０００９】
まず、本実施の形態における開発の流れを図1に示す。本事例は、プレゼンテーション層（P層）、ファンクション層（F層）、データベースアクセス層（D層）の3層アーキテクチャで構成されるマスタメンテナンスシステムである。最初に、テーブル設計００１にて、メンテナンス対象となるデータベースのテーブル名称、カラム名称、属性、サイズを定義する。テーブル設計の情報を元に、UOC定義書００２内にて、追加したいソースコードをP層UOC定義書、F層UOC定義書、SQL定義書に定義する。SQL定義書で指定した、SQL実行用のD層はF層で利用可能である。次に、自動生成装置００３にて、作成したテーブル定義書００１とUOC定義書００２を入力として、各機能別のUOC用ソースとＤ層ソース００４と画面表示XML００５を出力する。詳細は後述する。UOC用ソース００４は開発者によって必要なUOCの開発作業００６を実施後、アプリケーションサーバ００７に配置する。以上の作業手順により、一連の開発作業を完了し、開発を完了できる。
【００１０】
図２は、図１で生成した画面表示XML、D層ソースを元にマスタメンテナンスを行うための基本機能である、検索、登録、更新、削除、アップロード、ダウンロードを実施できる画面の画面遷移図１００を示したものである。データベース間の関連チェックなど業務固有の処理がないマスタメンテシステムの場合、利用者はコーディングレス（ＵＯＣの必要なく）で簡単にマスタメンテナンスシステムを構築可能なものである。
【００１１】
図３は、図１で生成したソース及び画面表示XMLを利用して実行する処理の内容を示す。メンテナンス画面利用したデータベースへの登録処理を実施後、結果画面へ画面遷移を行う例を示す。F層実行前UOC２００では、利用者から画面Aを介して登録ボタンの押下を受け付け、最初に呼出すことができるUOCポイントである。このUOCでは入力チェック、データ変換、データ加工などの処理を追加できる。エラーが発生した場合は、元の画面Aに戻ることも可能である。次にF層を呼び出し、登録処理を行う。F層にて登録処理を行う際、他テーブルとの関連チェックや、他テーブルへの検索・登録・更新・削除処理を行うための処理について、D層を呼出す前に実施することができるのが、D層実行前UOC２０１である。次に自テーブルの登録用D層を呼び出し、データベースに登録処理を行う。登録処理が完了後、Ｄ層実行前ＵＯＣ２０１と同様に他テーブルに登録・更新・削除する場合や登録結果を元に個別の業務処理を実施したい場合に、追加できるのがD層実行後UOC２０２である（例えば、個別業務処理要求を利用者から受け付け、それに従って処理する）。その後、P層に戻りF層実行後の処理を追加できるのがF層実行後UOC２０３である。ここでは、次の画面遷移先指定やイベントの後処理が追加できる。ここも上述と同様に、利用者からの入力に基づいて追加等を行う。
【００１２】
次に、画面を表示する直前に実行できるのが画面出力UOC２０４である。ここでは画面表示を行う上での表示変換やデータ変換を行うことができる。また、画面表示XML２０５で設定された値によって個々のUOC実行可否をコントロールしている。
【００１３】
図４は、銀行マスタのテーブル定義書例３００である。図５は、住所マスタのテーブル定義書例３１０である。図６は、P層UOC定義書で定義する設計書の例、Ｐ層ＵＯＣ定義書例３２０である。マスタ単位にどの画面で、どの操作時にUOCを実行するかを定義する。対象のマスタ名称を記入し、各画面単位に指定可能な操作を選ぶ。図６の例では、銀行マスタにおいてメンテナンス画面の登録ボタン押下時のＦ層呼出直前、更新ボタン押下時のＦ層呼出直前、Ｆ層呼出直後のUOC、メンテナンス画面表示直前のUOCを出力する例と、住所マスタにおける各画面において各ＵＯＣ呼出箇所を実行する例である。
【００１４】
図７は、F層UOC定義書で定義する設計書の例、Ｆ層ＵＯＣ定義書例３３０である。F層UOC定義書では、マスタ単位のデータ処理（登録、更新、削除、検索）においてD層呼出前とD層呼出後にUOCが追加できる。さらに、出力するUOCコードそのものを自動生成する機能としてSQL定義書と連携し、D層呼出ソースを出力することができる。自動生成パターンの例は、件数取得D層の呼び出しとデータ取得のD層の呼び出しを自動生成可能としている例である。さらに、エラーが発生した場合やメッセージを画面に補足したい場合の連携用メッセージIDを指定可能としている。銀行マスタの登録処理の例では、Ｄ層呼出前の件数取得用Ｄ層ＳＱＬとして図８のＳＱＬ定義書例３４０のＳＱＬ００１を利用してＦ層ＵＯＣを実行する例である。住所マスタの例では、各処理、各操作においてＵＯＣを実行する例である。
【００１５】
図８は、図７で指定したSQLIDの実体を記述するSQL定義書３４０の設計書の例、ＳＱＬ定義書例３４０である。SQL単位にSQLIDを設定し、管理する。ここでは、クラス名、メソッド名の指定があるが指定なしの場合はデフォルトの名称をSQLIDより自動生成するものとする。
【００１６】
図９は、P層UOC定義書とF層UOC定義書で設定した後、出力する画面表示XMLの例、画面表示ＸＭＬ例４００を示す。P層UOC定義書を読み込んだ情報より出力先は、検索画面の場合Searchタグ、登録画面の場合Registerタグ、メンテナンス画面の場合Menteタグと、画面単位にタグを分けており、画面単位にUOC起動フラグを追加しやすい構成としているが、別タグで定義してもよい。ここで示す出力有無を示す属性値として、F層呼出直前UOCはcheck-before、F層呼出直後UOCはcheck-after、画面表示直前UOCはconvert-cdに指定できる。check-beforeとcheck-afterは各画面単位に複数のイベントが存在するため、実行有無を0と１で表現した10桁文字列のパターンによって、起動の有無を制御する。ここでは、０を実行しない、１を実行するとしている。例えば、各イベントを実行する場合は、”1111111111”となる。また、検索画面の1桁目は“検索ボタン”でメンテナンス画面の1桁目は“登録ボタン”のように画面単位に必要となるイベント（ボタン）は異なることが想定されるが、各画面単位に各桁で利用するボタンのイベントIDの下1桁を0〜9とネーミングルールを決めることで画面単位に異なるイベントがあった場合においても、各画面単位のボタンに対応した制御が可能である。
【００１７】
次に、F層UOC定義書を読み込んだ情報より出力先はマスタ情報全体に共通の情報としてMasterInfoタグに属性値flayer-cdに設定している。ここでは、マスタ情報全体に有効な場所に設定しているが、個別のタグを定義して設定してもよいし、P層UOCの場合に個別に属性値を分けてもよい。また、ここでは、呼出を行わない場合を０とし、D層呼出前UOCを実行する場合を１、D層呼出後UOCを実行する場合を２、D層呼出前UOC 、D層呼出後UOC の両方を呼出す場合を３としている。
【００１８】
図１０は、図８で作成したSQL002が、SQLとして組み立てられた例、ＳＱＬ実行例４１０である。図６、図７、図８は、データベースのテーブルで表現してもよい。
【００１９】
以下、本実施の形態の処理内容について、説明する。
まず、図１１にてP層UOCに関連したオブジェクト指向のプログラム言語OOP（object-oriented programming）ソースとXMLを生成する流れを説明する。
【００２０】
ステップ５００１において、ベースとなるマスタのマスタ名称を取得する。これは、図４，５に示すテーブル定義情報を読み込み取得する。
【００２１】
次に、ステップ５００２にてP層定義書からマスタ名称単位に、対象画面と操作情報を読み込み５００３にて図４、図５で読み込んだテーブル定義情報のマスタ名称と図６のP層UOC定義書から読み込んだマスタ名称が同じであると判断した場合に、マスタ単位に情報を保持しているXMLにUOC起動情報を５００４ステップにて追加する。起動情報は、どの画面でどの操作のUOCを起動するかを出力し、図６で読み込んだ情報の銀行マスタの例では、メンテナンス画面にて、登録ボタン押下された際、（F層呼出直前）、更新ボタン（F層呼出直後）、画面表示時の３つのパターンにてUOCを起動する指定を受け付け、図９のXMLにてF層呼出直前UOCでは、“1000000000”の値が、F層呼出直後UOCでは、"0100000000"が、画面表示UOCでは“１”を設定している。ここでは、実行有無を０が実行しない、１が実行するとしており、登録ボタンは先頭から1番目、更新ボタンは先頭から2番目の数字で表現している。ここで追加できるマスタ単位の起動レベルは、イベント単位（ボタン単位）であるが、定義書の画面と操作で“すべて”を選んだ場合、すべてのイベントでUOCが起動可能となる(但し、この場合、一部例外を設けても構わない)。さらに、マスタ名に”すべて“を選んだ場合は、５００１の全てのマスタ名に対し、UOC起動を設定する。次に、５００５ステップにてUOCの元ソースとなるテンプレートを読み込み、OOPソース（すなわち、アプリケーションプログラムのソース）を出力する。ここで出力されるOOPソースがカスタマイズ可能箇所であるが、後に使わないとなった場合において、該当のXMLの値を0から1に変更すればUOC起動のON/OFFを制御できる。本作業は、1行単位に実施し個別のUOC情報を構築して出力可能としており、５００６ステップにて各行を実施したか、すなわち、未チェックの次データ行が存在するかをチェックし、終了する。
【００２２】
次に、図１２にてF層UOCに関連したOOPソースとXMLを生成する流れを説明する。ステップ６００１において、ベースとなるマスタのマスタ名称、カラム情報（属性名、カラム名、型名）を取得する。次にステップ６００２にてF層UOC定義書を読み込み６００３で読み込んだテーブル情報（マスタ名称）と同じマスタ名称の場合に、XMLにUOC起動情報を６００４ステップにて追加する。ここでは、銀行マスタと住所マスタが一致し、銀行マスタ用のXMでは、登録機能のD層呼出前、更新機能のD層呼出前とD層呼出後、削除機能のD層呼出前であり、図９に示すようなflayer-cd=”1320000000”を追加する。ここで追加できる起動レベルは、マスタ単位に、登録機能、更新機能、削除機能など機能単位に起動可能となる。定義書の処理と操作で“すべて“を選んだ場合、すべての機能でUOCが起動可能となる。さらに、マスタ名に”すべて“を選んだ場合は、６００１の全てのマスタ名に対し、UOC起動を設定する。次に６００５ステップにてSQL定義書を読み込み、６００６ステップにてSQLIDをキーとしてF層UOC定義書とマッピングを行う。例えば、SQL002では、図１０のようなSQL「SELECT  count(*)  FROM  ZIP_MAST  WHERE ZIP_CD=’002’;」を組み立てる。メッセージIDが設定されている場合は、メッセージID情報も同時に保持する。このSQL実行においては、MSG002を保持する。次に６００７ステップにてUOCの元ソースとなるテンプレートを読み込みステップ６００１で保持していた、属性名、カラム名、型名の情報を元に、OOPソースを出力する。エラーが発生した場合は、MSG002を設定するソースを出力する。本作業は、1行単位に実施し個別のUOC情報を構築して出力可能としており、６００８ステップにて全行を実施したかチェックし、終了する。
F層UOC定義書にてSQLタイプ、SQLID、メッセージIDが指定されていない場合は、SQL実行処理を出力しない空のスケルトンソースを出力する。
【００２３】
また、Ｐ層ＵＯＣ定義書，Ｆ層ＵＯＣ定義書で生成したソースは、再利用部品として利用が可能である。
【００２４】
以上の本発明の実施の形態によれば、（１）カスタマイズ可能箇所を局所化、最小化することで開発工数削減に繋がる。また、（２）簡単なシステム構築の場合と、複雑なチェックを行うようなシステム開発場合で動的に実行可否を変更できる。さらに、（３）局所呼び出しで利用した部品を再利用できる。
【図面の簡単な説明】
【００２５】
【図１】作業の全体図である
【図２】画面遷移図である
【図３】UOCを追加する場合の処理方式を示した全体図である
【図４】銀行マスタテーブル定義書例である
【図５】住所マスタテーブル定義書例である
【図６】P層UOC定義書例である
【図７】F層UOC定義書例である
【図８】SQL定義書例である
【図９】画面表示XML例である
【図１０】SQL実行例である
【図１１】P層UOC生成フローである
【図１２】F層ＵＯＣ生成フローである
【符号の説明】
【００２６】
００１…ER図などでテーブル設計をする作業
００２…UOCを追加するための定義書類
００３…アプリケーションプログラムを出力する自動生成装置
００４…自動生成したアプリケーションプログラムのソース群
００５…自動生成したXML
００６…生成したソースのコンパイル、ビルド作業
００７…アプリケーションサーバへの構築作業
１００…マスタメンテナンスを実現した場合の画面遷移図
２００…F層を実行する直前に呼出されるUOC
２０１…D層を実行する直前に呼出されるUOC
２０２…D層を実行する直後に呼出されるUOC
２０３…F層を実行する直後に呼出されるUOC
２０４…画面出力する直前に呼出されるUOC
【図１】
2009251975.tif 000003
【図２】
2009251975.tif 000004
【図３】
2009251975.tif 000005
【図４】
2009251975.tif 000006
【図５】
2009251975.tif 000007
【図６】
2009251975.tif 000008
【図７】
2009251975.tif 000009
【図８】
2009251975.tif 000010
【図９】
2009251975.tif 000011
【図１０】
2009251975.tif 000012
【図１１】
2009251975.tif 000013
【図１２】
2009251975.tif 000014