(57)【要約】【課題】  従来の開発では、過去の他プロジェクトのソースプログラムを解析し、ソースレベルでの流用を行うことで、開発工数を削減することを行ってきた。しかし、ソースレベルの流用は、プラットフォームに対する依存度が高く、その都度ソースプログラムを修正しなければならないことと、適用の際、ソースからの観点での流用となり、適応し難いことが挙げられる。【解決手段】  ソースレベルの流用を行わず、ソース生成に必要となるビジネスルールの流用を行うことにより、プラットフォームに依存し難い方式とする。具体的には、ビジネスルールを予め抽出し、テンプレートおよび部品コンテナ、部品として蓄積を行う。他システム開発の際には、この蓄積されたテンプレート、部品コンテナ、部品を流用することで、ソース出力をビジネスルールからの視点で流用することが可能となる。【選択図】  図２
2008117095.tif 000002
【特許請求の範囲】
【請求項１】
利用者により作成された、業務パターンをキーにテンプレート辞書のテンプレートファイルが対応付けられた機能マトリックスおよび各項目の内容を示す辞書に対してＸＭＬ化処理を施し、前記機能マトリックスから、作成すべきソフトウエアのビジネスルールに対応するテンプレートを抽出し、抽出されたテンプレートに対応した業務部品を選択し、選択された業務部品を用いて生成すべきソフトウエアの仕様書を作成することを特徴とするソフトウエア開発方法において、
前記ソフトウエアの機能を示す機能設計書データを記憶しておき、
前記機能設計書データに基づいて、当該ソフトウエアのテーブルに対するアクセス制限を規定し、
規定された前記アクセス制限に基づいて、当該開発における前記ソフトウエアに対するアクセスを制御することを特徴とするソフトウエア開発方法。
【請求項２】
請求項1に記載のソフトウエア開発方法において、
前記テーブルはアクセス制限すべきレコードを含むテーブルであり、
前記アクセス制限は、前記レコードが含まれるテーブルについて、当該テーブルに対してアクセス制限を施すことに対応して、アクセス制限すべきテーブルを特定することで規定することを特徴とするソフトウエア開発方法。
【請求項３】
請求項２に記載のソフトウエア開発方法において、
前記テーブルの特定は、前記各テーブル間のアクセス制限を施す順序を規定することで実現することを特徴とするソフトウエア開発方法。
【請求項４】
請求項３に記載のソフトウエア開発方法において、
前記アクセス制限は、
前記機能設計書データから各テーブルの階層的な関係を示す親子関係を抽出し、
抽出された前記親子関係に基づいて当該アクセス制限を規定することを特徴とするソフトウエア開発方法。
【請求項５】
請求項１乃至４にいずれかに記載のソフトウエア開発方法において、
前記アクセス制限には、当該テーブルに対するアクセス自体の抑止、当該テーブルの変更の抑止および当該テーブルの変更に対するアラーム出力のうち、少なくとも１つを含むことを特徴とするソフトウエア開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエアを効率よく開発するための技術に関する。その中でも特に、他のプロジェクトのソースを流用して、新たなプロジェクトのソフトウエアを開発する技術に関する。
【背景技術】
【０００２】
従来、ソフトウエアの開発において、他プロジェクトのソースを流用することで開発工数の削減を行ってきた。
【０００３】
特に、特許文献１においては、ソフトウエアの生産性を向上させるために、既存のソフトウエアを再利用して新規のソフトウエアを開発することが開示されている（ソフトウエアの流用）。ここでは、プログラマが既存ソフトウエアの仕様を記述したドキュメントやソースプログラムを解析し、修正を行うことが記載されている。
【０００４】
【特許文献１】特許第３１８６１１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したようなソースプログラムを解析したソースレベルでの流用はプラットフォームに対する依存度が高く、その都度ソースプログラムを修正しなくてはいけない、との課題を抱えていた。
【課題を解決するための手段】
【０００６】
そこで、本発明では、仕様書からビジネスルールを抽出し、これを用いてソフトウエアの作成を行う。より詳細には以下の態様が本発明に含まれる。
【０００７】
利用者により作成された、業務パターンをキーにテンプレート辞書のテンプレートファイルが対応付けられた機能マトリックスおよび各項目の内容を示す辞書に対してＸＭＬ化処理を施し、前記機能マトリックスから、作成すべきソフトウエアのビジネスルールに対応するテンプレートを抽出し、抽出されたテンプレートに対応した業務部品を選択し、選択された業務部品を用いて生成すべきソフトウエアの仕様書を作成する。なお、生成する業務が、相関チェックロジックを含む場合は、このロジックに対して、相関チェックマトリックスを使用して行っても良い。また排他制御が必要なプログラムの場合、機能マトリクスに排他情報(アクセス制御)を組み込むことにより、排他情報を保有したプログラムの生成を行うことが出来る。すなわち、本発明には、ＥＲ図などの機能設計書から各テーブルの親子関係を抽出し、これに基づき排他制御を実現することも含まれる。より詳細には、以下の態様も含まれる。
【０００８】
利用者により作成された、業務パターンをキーにテンプレート辞書のテンプレートファイルが対応付けられた機能マトリックスおよび各項目の内容を示す辞書に対してＸＭＬ化処理を施し、前記機能マトリックスから、作成すべきソフトウエアのビジネスルールに対応するテンプレートを抽出し、抽出されたテンプレートに対応した業務部品を選択し、選択された業務部品を用いて生成すべきソフトウエアの仕様書を作成することを特徴とするソフトウエア開発方法において、前記ソフトウエアの機能を示す機能設計書データを記憶しておき、前記機能設計書データに基づいて、当該ソフトウエアのテーブルに対するアクセス制限を規定し、規定された前記アクセス制限に基づいて、当該開発における前記ソフトウエアに対するアクセスを制御するソフトウエア開発方法。
【０００９】
また、こソフトウエア開発方法において、前記テーブルはアクセス制限すべきレコードを含むテーブルであり、前記アクセス制限は、前記レコードが含まれるテーブルについて、当該テーブルに対してアクセス制限を施すことに対応して、アクセス制限すべきテーブルを特定することで規定するソフトウエア開発方法も本発明の一態様である。
【００１０】
さらに、このソフトウエア開発方法において、前記テーブルの特定は、前記各テーブル間のアクセス制限を施す順序を規定することで実現することを特徴とするソフトウエア開発方法も本発明に含まれる。
【００１１】
また、このソフトウエア開発方法において、前記アクセス制限は、前記機能設計書データから各テーブルの階層的な関係を示す親子関係を抽出し、抽出された前記親子関係に基づいて当該アクセス制限を規定することを特徴とするソフトウエア開発方法も本発明に含まれる。
【００１２】
またさらに、これらのソフトウエア開発方法において、前記アクセス制限には、当該テーブルに対するアクセス自体の抑止、当該テーブルの変更の抑止および当該テーブルの変更に対するアラーム出力のうち、少なくとも１つを含むことを特徴とするソフトウエア開発方法も本発明に含まれる。
【００１３】
なお、このソフトウエア開発方法を実現するための装置、コンピュータプログラムおよびこの開発方法で開発されるソフトウエアも本発明に含まれる。
【発明の効果】
【００１４】
本発明によれば、新たなソフトウエア（ソース）の生成を容易に実行することが可能になる。
【発明を実施するための最良の形態】
【００１５】
本発明の実施の形態について、図面を用いて説明する。本実施の形態は、ソフトウエア製品の仲介を例に説明するが、本発明はそれに限定されるものではない。
【００１６】
まず、本実施の形態におけるシステム構成図を図1に示す。コンピュータは、メモリ（101）、ハードディスクを含む外部記憶装置（105）、ＣＰＵ（102）などの処理装置を有し、記憶装置に格納されたプログラムに従って、処理装置が情報処理を実行するものである。外部記憶装置（105）には、図２で示す機能マトリックス（214）含むドキュメント群および、辞書類、ツール群が保存されている。
【００１７】
本機能の概要図を図２に示し、以下に概要を説明する。
【００１８】
本機能で出力するソース（222）及びプログラム仕様書（221）は、業務のテンプレート（225）と機能単位に分割された部品コンテナ（223）と部品コンテナの一部である部品（224）で構成される。これらテンプレート（225）、部品コンテナ（223）、部品（224）には変数化された個所がそれぞれあり、辞書項目（205）を埋め込むことで、ソース（222）及びプログラム仕様書（221）が作成する。なお、部品コンテナ（223）で使用可能な部品（224）は複数あり、部品（224）を選択することで部品コンテナ（223）の機能をカスタマイズすることが可能となる。
【００１９】
本発明で使用する機能は、大きく（１）マトリックスXML化ツール、（２）辞書XML化ツール、（３）ソース、ドキュメント変換エンジンの３つで構成される。
【００２０】
以下に各機能の詳細を示す。
【００２１】
（１）マトリックスXML化ツール（216）
図３に概要図を示す。
【００２２】
機能マトリックス（214）とマトリックス部品紐付けパラメータファイル（215）（以下、パラメータファイルと呼称）を元にプログラムの構造・意味付けを保持した形としてXML化する機能（216）である。
【００２３】
以下に（a）機能マトリックス（214）、（b）パラメータファイルの詳細を示す。
【００２４】
（a）機能マトリックス（214）
機能マトリックス（214）は、業務パターンをキーにテンプレート辞書（207）のテンプレートファイル（225）とマッピングしている。（業務パターン名をキーに辞書中のテンプレートファイルを特定できる）
また、コンテナ名、部品名をキーとして、業務部品辞書（206）の部品コンテナ（223）・部品（224）を論理的にマッピングしている。（パラメータファイル（215）を経由することで、業務部品辞書（206）中の部品コンテナ、部品を特定することができる）なお、機能マトリックス（214）は、それぞれの部品コンテナ（223）・部品（224）の引数となる値（名前）と、キーワード属性をパラメータファイル（215）から取得するためのキーワードを保持している。キーワード属性の内容が、辞書を参照する場合には、ここで入力された値が、辞書の値を取得する際のキーとなる。（キーワード属性の説明は（b）を参照）
（b）パラメータファイル（215）
パラメータファイル（215）は、部品コンテナ名、部品名をそれぞれキーとして業務部品辞書（206）中の部品コンテナファイル（223）・部品ファイル（224）とマッピングしている。（機能マトリックス（214）の部品コンテナ（223）、部品（224）と部品コンテナ（223）、部品辞書（206）のそれぞれのファイル名をリンクさせている）これより、このパラメータファイル（215）の記述次第で、ソース（221）に変換するか、プログラム仕様書（222）に変換するかの選択が可能となる。つまり、パラメータファイル（215）の部品コンテナ名にドキュメント部品コンテナ（208）を指定されている場合には、プログラム仕様書（222）が出力し、ソース部品コンテナ（209）を指定していればソース（221）が出力する仕組みとなる。
【００２５】
また、パラメータファイル（215）は、キーワードに対する値をキーに辞書（205）のデータ項目名を取得するか、機能マトリックス（214）の値そのものを部品等に反映させるかを決定するキーワード属性を保持している。
【００２６】
（２）辞書XML化ツール（218）
図４に概要図を示す。
【００２７】
辞書（205）の項目（項目名、属性、ドメイン等）を、ソース出力に必要な項目のみ抽出し構造・意味付けを保持した形としてテンプレートが解読可能な辞書XMLファイル（219）に変換する機能（218）である。このXMLファイル化された辞書は、上述の値（論理名）をキーとして取得するソース上の「データ項目名」（物理名）が保持している。また、属性チェックで、部品を選択するためのキー情報である属性情報を保持している。辞書（205）を参照する際の処理の流れに関しては、後述の図５のステップ507、ステップ510、ステップ513を参照。
【００２８】
（３）ソース、ドキュメント変換エンジン（220）
機能マトリックスXML（217）から対象のテンプレート（225）と部品コンテナ（224）、部品（223）を選択し、パラメータ化されている箇所に辞書項目を埋め込む機能（ソース、プログラム仕様書出力機能）。本機能の処理の流れについては、後述の図５のステップ519に示す。
【００２９】
次に、本実施の形態の処理内容について、図５を参照しながら詳細を説明する。
【００３０】
ステップ501では機能マトリックス（214）をパラメータファイル（215）を参照してマトリックスXML化ツール（216）でXML化（217）する。（機能マトリックス（214）作成およびXML化の詳細は後述参照。）
ステップ502では、予め登録された辞書（205）を辞書XML化ツール（218）でXML化する。
【００３１】
ステップ503では、ステップ501で作成された機能マトリックスXML（217）を読み込む。
【００３２】
ステップ504では、読込んだ機能マトリックスXML（217）から対象のテンプレート（225）を選択する。
【００３３】
ステップ505では、読込んだ機能マトリックスXML（217）から対象のテンプレート（225）に紐付く部品コンテナ（223）を選択する。本処理については、マトリックスXMLで定義されている部品コンテナ数分繰り返し実行する。
【００３４】
ステップ506では、選択された部品コンテナ（223）をテンプレート（225）に挿入する。
【００３５】
ステップ507では、部品コンテナ（223）の中で、パラメータ化されている箇所を、辞書XML（219）より取得し設定する。
【００３６】
ステップ508では、読込んだ機能マトリックスXML（217）から対象の部品コンテナに紐付く部品（224）を選択する。本処理については、マトリックスXMLで定義されている部品数分繰り返し実行する。
【００３７】
ステップ509では、ステップ508で選択した部品が、属性チェックか判断する。
【００３８】
ステップ510では、ステップ509で、属性チェックの判定ならば、辞書XML（219）から対象項目の属性（半角英数、漢字等）を特定する。
【００３９】
ステップ511では、属性に対応する部品（224）を部品辞書（206）より選択する。
【００４０】
ステップ512では、選択された部品（224）を部品コンテナ（223）に挿入する。
【００４１】
ステップ513では、部品（224）の中で、項目名がパラメータ化されているものを、辞書XML（219）より取得し設定する。
【００４２】
ステップ514では、対象の部品コンテナ（223）の中に部品（224）があるかないかの判断を行う。
【００４３】
ステップ515では、対象のテンプレート（225）の中に部品コンテナ（223）があるかないかの判断を行う。
【００４４】
ステップ516では、ソース（222）または、プログラム仕様書（221）を部品（224）、部品コンテナ（223）の結合されたテンプレート（225）として出力する。ソース（222）、プログラム仕様書（221）のどちらを出力するかは、上述のプロパティファイル（215）の設定による。
【００４５】
以下に上述で記載されている機能マトリックス（214）作成およびXML化の詳細を図6、図7から図20を参照しながら説明する。
【００４６】
（１）機能マトリックス作成手順（607）
ステップ601では開発者が、テンプレート仕様書（202）を基に、使用するテンプレート名を、機能マトリックス（301）上の業務パターンにセットする。作成時の概要を図7に示す。
【００４７】
ステップ602では、その他、プログラム情報（301）に、ソース（222）やプログラム仕様書（221）で共通的に使用する項目・制御情報（言語、モジュール名等の内容）をセットする。作成時の概要を図8に示す。
【００４８】
ステップ603では、テンプレート（225）の中で使用する部品コンテナ（223）を、テンプレート仕様書（202）より選択することと項番を振る作業を行う。なお、この項番は、当該部品コンテナ（223）のアウトプットを他の部品コンテナ（223）および部品（224）で参照する際に使用するためのものであり、部品コンテナ（223）上、一意となるように採番する。特に採番のルールは規定しない。作成時の概要を図9に示す。
【００４９】
ステップ604では、部品コンテナ（223）の中で使用する部品（224）を、部品コンテナ仕様書（203）より選択することと項番を振る作業を行う。なお、この項番は、当該部品（224）のアウトプットを参照する際に使用するためのものであり、部品（224）上、一意となるように採番する。特に採番のルールは規定しない。作成時の概要を図10に示す。
【００５０】
ステップ605では、部品（224）に対して、部品仕様書（204）を参照し、部品（224）に対して設定できるキーワードを記入する。キーワードは、ステップ606でユーザが入力する「値」を促す言葉で表現されている。作成時の概要を図11に示す。
例）キーワード：チェック対象項目  値：生年月日
ステップ606では、キーワードに対して、値を設定することと、値が、他の部品コンテナ（223）、部品（224）のアウトプットを参照する場合は、参照項番をセットする。参照項番は、対象の部品（224）および部品コンテナ（223）以外からの値を参照する場合には、参照先の部品（224）の項番をセットし、値に参照先のキーワードをセットする。作成時の概要を図12に示す。
【００５１】
ステップ601からステップ602を実施することで作成する機能マトリックス（214）を図13に示す。
【００５２】
（２）機能マトリックスXML化手順（517）
ステップ1401では、機能マトリックス（217）のプログラム情報（301）を、項目名に対応する機能マトリックスXML（1501）のタグにセットする。XML作成時の概要を図15に示す。
【００５３】
ステップ1402では機能マトリックスのマトリックス情報（302）のコンテナ名を、コンテナ（name）にセットする。その際に、部品コンテナ（223）の項番をコンテナ（ID）にセットする。コンテナ（file）については、マトリックス情報（302）のコンテナ名をキーとして、パラメータファイル（215）より、参照する辞書（206）の部品コンテナファイル名を取得し、セットする。XML作成時の概要を図16に示す。
【００５４】
ステップ1403では、他の部品（224）が、部品コンテナ（223）のアウトプットを、入力に使用する場合、マトリックス情報（302）のキーワードをコンテナキーワードに値をセットする。セット内容としては、対象の部品（224）のキーワードをコンテナキーワード名（name）にセットし、対象部品（224）の項番をコンテナキーワード名（refid）にセットする。その際に、対象部品（224）のキーワードをキーにパラメータファイル（215）のキーワード属性を取得し、コンテナキーワード名(attr)にセットする。また、逆に部品コンテナ（223）のアウトプットが他の部品（224）に使用されている場合、コンテナキーワード名（setrefid）に、当該の部品（224）の項番をセットする。XML作成時の概要を図17に示す。
【００５５】
ステップ1404では、機能マトリックスのマトリックス情報（302）の部品名を、部品（name）にセットする。その際に、部品（224）の項番をコンテナ名（ID）にセットする。コンテナ名（file）については、マトリックス情報（302）の部品名をキーとして、パラメータファイル（215）より、参照する辞書（206）の部品ファイル名を取得し、セットする。XML作成時の概要を図18に示す。
【００５６】
ステップ1405では、部品（224）が、他の部品（224）のアウトプットを、入力に使用する場合、マトリックス情報（302）のキーワードをキーワードに値をセットする。セット内容としては、対象の部品（224）のキーワードをキーワード名（name）にセットし、対象部品（224）の項番をキーワード名（refid）にセットする。その際に、対象部品（224）のキーワードをキーにパラメータファイル（215）のキーワード属性を取得し、キーワード名(attr)にセットする。また、逆に部品（224）のアウトプットが他の部品（224）に使用されている場合、キーワード名（setrefid）に、当該部品（224）の項番をセットする。XML作成時の概要を図19に示す。
【００５７】
ステップ1401からステップ1405を実施することで作成する機能マトリックスＸＭＬ（217）を図20に示す。
【００５８】
以下に、本実施の形態における効果を下記（１）〜（４）示す。
【００５９】
（１）機能マトリックス（214）を記入することで、ソース（222）を生成するため、言語の特性に依存せずにプログラム生成を可能する。
【００６０】
（２）テンプレート（225）・部品コンテナ（223）・部品（224）を基にプログラムを作成するため、開発者におけるプログラミング能力のバラツキがなくなり、出力するソース（222）の品質が一定となる。
【００６１】
（３）業務機能の流用を行う際に、各システム固有の項目情報（辞書）の変更のみで、システム構築が可能となる。具体的な理由を下記に示す。
【００６２】
機能仕様書（201）からソース（222）へ変換する際、本システムでは、開発者が既存の機能仕様書を大、中、小の区分に分類し対応するテンプレート（225）、部品コンテナ（223）、部品（224）を選択する。分類の指針、方法については、業務機能の大きさ毎に分類されたテンプレート仕様書（202）、部品コンテナ仕様書（203）、部品仕様書（204）に定義されている各情報を基に決定を行う。また、これらの仕様書は、それぞれの辞書（205）の各分類に物理的な紐付け情報を保持している。そのため、各業務機能とテンプレート等のソース（222）、プログラム仕様書（221）を出力する際の部品（224）は、1対1の関係でマッピングがとれていることになる。図21に概要図を示す。
【００６３】
これより、他システム開発の際には、この業務機能からの視点で流用を行うことで、テンプレート等のソース（222）出力する際の部品（224）を流用することが可能となる。また、言語やプラットフォームにおける環境が変化する際にも、業務機能自体の流用は可能であり、業務機能に紐付くテンプレート等を、修正することで、テンプレート等の部品（224）の流用も可能となる。
これら業務機能を予め抽出、蓄積することで、各システム固有の項目情報（辞書）の変更のみで、システム構築が可能となる。
【００６４】
（４）機能マトリックス（214）と辞書（205）を用意することで、ソース（222）とプログラム仕様書（221）の両者を出力することが可能であり、大幅な工数削減となる（設計工程とプログラム工程が同タイミングで完了）。
仕組みとしては、上述にあるように、パラメータファイル（215）の設定次第で部品辞書（206）の、どのファイルとマッピングするか変更可能なため、ソース（222）とプログラム仕様書（221）を切り分けて出力することが可能である。
【００６５】
次に、相関チェックマトリックスを使用する際の、本機能における概要図を図２２に示し、以下に概要を説明する。
【００６６】
本機能は、上述の機能マトリックスを用いた機能に対して、相関チェックロジック部分を独立して作成する機能である。よって、本機能で出力するソース（222）及びプログラム仕様書（221）は、上述の機能で出力されるアウトプットに対して部分的なものである。なお、ソース（222）およびプログラム仕様書（221）に、他の情報と対応付けるための情報を出力してもよい。
【００６７】
また、ソース（222）及びプログラム仕様書（221）を生成するためのインプット情報は、機能マトリックスＸＭＬ（217）と相関チェックマトリックスＸＭＬ（2103）で異なるが、生成の過程（マトリックスからＸＭＬを出力するまでの過程）は同様である。
【００６８】
ここで、使用する追加機能は、相関チェックマトリックスＸＭＬ化ツールである。
【００６９】
図２３に、その内容を示す。
【００７０】
相関チェックマトリックスＸＭＬ化ツールは、相関チェックマトリックス（214）とパラメータファイル（215）を元に相関チェックロジックに特化したプログラムの構造・意味付けを保持した形としてXML化する機能（216）である。
【００７１】
この相関チェックマトリックス（214）は、（イ）条件部（2301）、（ロ）処理部、（ハ）条件ツリー定義部で構成される。（なお、機能マトリックスは、処理部のみで構成する。）各詳細を以下に示す。
【００７２】
（イ）条件部（2301）
条件部（2301）は、項目に対する分岐の条件を定義する部位である。相関チェック部品は、条件の対象項目単位となる。さらに、その項目を分岐条件単位に分割し、ノードIDを付与する。これにより、分岐条件を識別している。
【００７３】
この条件定義には、入力値に対して相関チェック部品によって加工した戻り値に対する条件を指定する方法と、入力項目そのものを条件に指定する方法の2通りがある。（例えば、前者の場合、入力された日付に対して、その日付が、実在日であるか、確認する部品を使用し、部品の戻り値である「真偽」に対して判定を行う方法。後者の場合は、入力された日付が、任意の日付との大小比較方法）
以下、前者を「戻り値の相関チェック」、後者を「入力項目相関チェック」とする。
【００７４】
相関チェック部品の戻り値に対する条件を指定する場合、設定する相関チェック部品の「名前」に関しては、業務部品辞書（206）の部品（224）とマッピングしている。マッピング方法は、上述の機能マトリックスと同様である。なお、マッピングについては、パラメータファイルを経由せずに対応付けても良い。
【００７５】
（ロ）処理部（2303）
条件部（2301）で定義された条件に対して達成した際の、処理内容を定義する部位である。（イ）の条件部（2301）と同様に、相関チェック部品の「名前」については、業務部品辞書（206）の部品（224）とマッピングしている。マッピング方法は、上述の機能マトリックスと同様である。なお、マッピングについては、パラメータファイルを経由せずに対応付けても良い。
【００７６】
（ハ）条件ツリー部（2302）
条件の順序（条件ツリー定義）と条件に対応する処理順序（処理ツリー定義）を定義する部位である。図５に示すように、条件ツリー部（2302）には、条件部（2301）で定義したノードIDを使用し、条件の組み合わせとチェック順序、条件に対応する処理順序を定義する。条件ツリー定義内の「親ノードID」欄にノードIDを定義することで、条件間に階層構造（親子関係）を持たせている。以下、定義した条件の中で優先条件を「親」と呼ぶ。親の条件に付随する条件を「子」と呼ぶ。
【００７７】
親子関係は、「ノードID」欄と「親ノードID」欄で表現する。子となる条件の「親ノード」欄に、親となる条件のノードIDを記述する。ただし、一番目に判断すべき条件の「親ノード」欄は「-」とする。なお、条件ツリー定義は条件ツリー定義1から順に処理を行い、評価順序に従い、処理を行う。
【００７８】
次に、本実施の形態の処理内容について、図24を参照しながら詳細を説明する。
【００７９】
相関チェックマトリックスを使用の際には、図５に対して、相関チェックマトリックスＸＭＬ（2103）
を作成するステップ2404と、図５のステップ519の内、ステップ507とステップ508の間にステップ2402とステップ2403を追加して行う。以下にステップ2404の詳細とステップ2402およびステップ2403の詳細を説明する。
【００８０】
ステップ2401では、相関チェックマトリックス（2101）をパラメータファイル（215）を参照して相関チェックマトリックスXML化ツール（2102）でXML化（2103）する。（相関チェックマトリックス（2101）作成およびXML化の詳細は後述参照。）
ステップ2403では、ステップ508で、参照する部品が、相関チェック部品か否かを判断する。判断材料としては、機能マトリックス（214）の部品名に、相関チェックＩＤが記述されていることである。ただし、相関チェックＩＤ以外に相関チェック部品を判断できれば良い。
例）SOUKAN001
ステップ2402は、ステップ2401で作成された相関チェックマトリックス（2103）を読み込む。
【００８１】
ステップ2402以降の処理については、機能マトリックス（214）からの生成時と変わらない。
【００８２】
以下に上述で記載されている相関チェックマトリックス（2101）作成およびXML化の詳細を図25と図42を参照しながら説明する。
【００８３】
（１）相関チェックマトリックス作成手順
ステップ2501では開発者が、相関チェックマトリックスに相関チェックＩＤをセットする。作成時の概要を図25に示す。相関チェックIDについては、上述にも示す様に、機能マトリックスと紐付く相関チェックIDは、一意に設定されていれば、特にIDの採番方法は指定しない。相関チェックＩＤのセット概要については、図２６参照。図２６においては、「SOUKAN002」が相関チェックID（2601）となる。
【００８４】
ステップ2502では、相関チェックが、「戻り値相関チェック」または、「入力項目の相関チェック」を使用するか選択を行う。具体例については、上記参照。
【００８５】
ステップ2503では、部品コンテナ仕様書（203）を元に、使用する部品を設定する。その内容は、図27に示すとおり、部品コンテナ仕様書（204）の「名称」に規定された「空文字チェック」の内容を条件定義部（2701）の「相関チェック部品」に「名称」の欄に規定する。なお、「相関チェック部品」のＩＤについては、「条件部（2301）」、「処理部」の中で一意になればよい。
【００８６】
ステップ2504では、部品仕様書（201）を元に、選択した部品のキーワードを設定する。その内容は、図28に示すとおり、部品仕様書（204）の「使用するキーワード属性」に規定された「キーワード」の内容を条件定義部（2701）の「キーワード」の欄に規定する。
【００８７】
ステップ2505では、キーワードに対する値を設定する。値については、辞書中の対象のワードを設定する。その内容は、図29に示すように、「キーワード」の項目値を辞書（205）中の「通帳記号」から「項目値」の欄に規定する。
【００８８】
ステップ2506では、相関チェックを行う項目名を設定する。その内容は、図30に示すように、辞書（205）中の「個人法人区分」を「項目名」の欄に規定する。
【００８９】
ステップ2507では、相関チェックを行う項目名に対して比較する条件値を設定する。その内容は、図31に示すように、ステップ2506の比較対象である「”ＨＯＵＪＩＮ”」を「条件値」の欄に規定する。
【００９０】
ステップ2508では、比較方法を設定する。（比較識別子）。その内容は、図32に示すように、ステップ2506とステップ2507で記入した内容を比較する方法を条件定義部（2701）の「式」の欄に規定する。図32の場合は、等号を示す「eq」を設定している。
【００９１】
ステップ2509では、当該、相関チェックロジックに対して、一意になるように、ノードＩＤを設定する。その内容は、図33に示すとおり、条件ツリー部（2302）の「ノードＩＤ」欄に「001」を規定する。なお、ＩＤについては、マトリックス上で一意となればよい。
【００９２】
ステップ25010では、ノードＩＤに紐付く親ノードＩＤを設定する。なお、ノードＩＤに紐付く親ノードＩＤは、複数件指定しても良い。その内容は、図34に示すとおり、条件ツリー部（2302）の「親ノードＩＤ」欄に「ノードＩＤ」が「004」に対して「001」を規定する。なお、「親ノード」が「-」の項目については、ルートとなり、その配下が、「ノードＩＤ：004」、「ノードＩＤ：006」となる。
【００９３】
ステップ25011では、同一の親ノードＩＤの中で、評価順序を設定する。その内容は、図35に示すとおり、条件ツリー部（2302）の「評価順序」欄に「ノードＩＤ」が「004」に対して「1」を規定する。なお、「親ノード」が「-」の項目については、ルートのため固定の「1」となり、「親ノード」が同一のものについては、「1」から順番に採番する。
【００９４】
ステップ25012では、条件に対して、「真」の時の処理する部品を設定する。その内容は、図36に示すとおり、部品仕様書（204）の「名称」に規定された「エラーメッセージの追加」の内容を条件定義部（2701）の「相関チェック部品」に「名前」の欄に規定する。
【００９５】
ステップ25013では、ステップ25012で設定した部品に対してキーワードを設定する。その内容は、図37に示すとおり、部品コンテナ仕様書（204）の「使用するキーワード属性」に規定された「キーワード」の内容（「メッセージＩＤ」）を処理部の「キーワード」の欄に規定する。
【００９６】
ステップ25014では、キーワードに対する値を設定する。その内容は、図38に示すように、ステップ25013で設定したキーワードに対してメッセージＩＤを「値」の欄に規定する。
【００９７】
ステップ25015では、ステップ25010の条件と、ステップ25011の処理を紐付けるため、ステップ25010で設定した「ノードＩＤ」を処理対象ＩＤに設定する。その内容は、図39に示すように、処理部（2303）における「条件ツリー定義（2302）」の「処理対象ＩＤ」の欄にステップ25010で設定した「ノードＩＤ：001」を規定する。
【００９８】
ステップ25016では、処理対象ＩＤの中で、処理順序を設定する。その内容は、図40に示すように、「処理対象ＩＤ」が同一のものに対して、「条件ツリー定義」の「処理順序」の欄に「１」から順に採番を行う。
【００９９】
以上の工程により作成する相関チェックマトリックスを図42に示す。
【０１００】
（２）相関チェックマトリックスXML化手順
ステップ4301では、XMLのヘッダー部（固定値）をセットする。その内容については、図43を参照。
【０１０１】
ステップ4302では、相関チェックマトリックス（2101）の相関チェックIDをセットする。その内容は、図44に示すように、相関チェックマトリックス（2101）の「相関チェックＩＤ」欄の相関チェックＩＤをＸＭＬ上にセットする。
【０１０２】
ステップ4303では、相関チェックマトリックス（2101）の条件部（2301）における条件定義ツリー定義のパターンIDをセットする。その内容は、図45に示すように、相関チェックマトリックス（2101）の「条件部（2301）」の「条件ツリー定義」欄のパターン番号をＸＭＬ上にセットする。
【０１０３】
ステップ4304では、相関チェックマトリックス（2101）の条件定義ツリー定義のノードID、親ID、評価順序をセットする。その内容は、図46に示すように、相関チェックマトリックス（2101）のノードID、親ノードID、評価順序（「001」、「−」、「1」）をＸＭＬ上にセットする。
【０１０４】
ステップ4305では、相関チェックマトリックス（2101）の条件部（2301）の部品を、パラメータ定義を元に変換し、セットする。変換過程については、上述の機能マトリックスＸＭＬの作成手順で示すステップ1404から1405と同じである。その内容については、図47に示す用に、「エラーメッセージ追加」の部品をＸＭＬにセットする。
【０１０５】
ステップ4306では、相関チェックマトリックス（2101）の条件部（2301）における項目名をセットする。その内容は、図48に示すように、相関チェックマトリックス（2101）の「条件部（2301）」の「項目名」欄の値（戻り値.個人法人区分）をＸＭＬ上にセットする。
【０１０６】
ステップ4307では、相関チェックマトリックス（2101）の条件部（2301）における式をセットする。その内容は、図49に示すように、相関チェックマトリックス（2101）の「式」で規定した「eq」をＸＭＬ上にセットする。
【０１０７】
ステップ4308では、相関チェックマトリックス（2101）の条件部（2301）における条件値をセットする。その内容は、図50に示すように、相関チェックマトリックス（2101）の「条件部（2301）」の「条件値」で規定した値（”ＨＯＵＪＩＮ”）をＸＭＬ上にセットする。
【０１０８】
ステップ4309では、ステップ4304と同様に、相関チェックマトリックス（2101）の「処理部」における条件定義ツリー定義の処理対象ID、処理順序IDをセットする。その内容は、図51に示すように、相関チェックマトリックス（2101）の処理対象ID、処理順序（「006」、「1」）をＸＭＬ上にセットする。
【０１０９】
ステップ4310では、相関チェックマトリックス（2101）の条件部（2301）の部品を、パラメータ定義を元に変換しセットする。変換過程については、上述のステップ1404から1405と同じである。その内容については、図52に示す用に、「エラーメッセージ追加」の部品をＸＭＬにセットする。
【０１１０】
以上の工程により作成する相関チェックマトリックス（2103）を図53に示す。この相関チェックマトリックス（2103）は、入力である相関チェックマトリックスが、「条件部（2301）」と「条件ツリー」が機能マトリックスと比較すると追加されているため、出力されるＸＭＬについても、その分の情報が付加されている。
【０１１１】
次にプログラム内に排他制御処理を保有する排他制御フレームの実現方法について述べる。排他制御フレームは、アクセス対象のレコードを含むテーブルを指定することで、ロックすべきテーブル(親)の特定と特定されたテーブル間のロック順序の特定を行う。例えば、図54に示すテーブルA(5404)とテーブルB(5409)とテーブルC(5412)を更新対象にした場合、ロックをすべきテーブルX(5401)とテーブルY(5406)、テーブルZ(5410)(それぞれ各テーブルの親テーブル)を特定する。そして、機能設計書に従い仕様に応じた順序で特定された親テーブル間のロック順序を特定する。
【０１１２】
この処理に関しては、上述の機能マトリックスを用いたソース生成方式に対して機能マトリクスにテーブルロックデータを保有したマトリクス部位を追加することにより実現する。よって、機能マトリクス作成以降のソース生成の流れは同じになる。図55に機能マトリクスに排他制御情報を追加するまでの流れを示す。
【０１１３】
図55に示す様に、本機能では外部設計(5502)とER図(5501)からの情報を元にしたテーブル間の親子関係定義、親テーブル情報定義なるドキュメントが作成されていることを前提としている。親子関係定義とはプログラムが使用するDB環境においてのテーブル同士の親子関係を、設計に基づき図56の様に表形式(5503)でまとめたものであり、親テーブル情報定義は同DB環境においての親テーブル間のロック優先順位を同様に設計に基づき図57の様に定義(5504)したものである。図55に示す排他制御フレームマトリクス開発支援ツール(5505)がこれらのドキュメントを読み込むことで順序立ったテーブルロック情報を保有した排他制御マトリクスを作成することが出来る。
【０１１４】
これらについて例をあげて説明する。
例として図54に示すようなDB環境でソースが生成される場合を想定する。今回、テーブルA(5404)とテーブルB(5409)、テーブルC(5412)に更新をかけるものとする。この時、まず図56に示す親子関係定義(5503)を元に各アクセス対象テーブルの親テーブルを特定する。この場合、テーブルX(5401)(テーブルAの親テーブル)、テーブルY(5406)(テーブルBの親テーブル)、テーブルZ(5410)(テーブルCの親テーブル)となる。次に図57に示すような親テーブル情報定義(5504)により特定されたテーブルX(5401)、テーブルY(5406)、テーブルZ(5410)のアクセス順序(ロック順序)を決定する。この情報を機能マトリクス(214)に組み込むことで、テーブルロック情報を保有したソースを生成することが出来、デッドロックを防ぐことが出来る。
【０１１５】
このロジックを実現するのが排他制御フレームマトリクス開発支援ツールである。具体的な動きをフロー図58に示す。
【０１１６】
ステップ5801では、作業者が業務フレーム支援ツール(5505)にアクセス対象テーブル名を入力し、生成ボタンを押下する。(図59)
ステップ5802では、業務フレーム支援ツール(5505)が、ステップ5801で入力されたテーブル名を基に親テーブル情報定義(5503)を参照する。
【０１１７】
ステップ5803では、業務フレーム支援ツール(5505)が、ステップ5802での参照結果により、各入力テーブルの親テーブル名を特定する(図60)
ステップ5804では、業務フレー支援ツール(5505)が、特定された親テーブル名をキーにしてレコードロック順序定義(5504)を参照する。
【０１１８】
ステップ5805では、業務フレーム支援ツール(5505)が、ステップ5804の参照結果により、各テーブルロック対象親テーブルのロック順序項番を獲得する。(図61)
ステップ5806では、業務フレーム支援ツール(5505)が、各ロック対象親テーブルをロック順序項番により昇順に並べ替えた上、排他制御フレームマトリクス(5506)上に格納する。(図62)
ステップ5807では、作業者が生成された排他制御フレームマトリクス部分を機能マトリクス(214)の該当部分にコピーアンドペーストする。(図63)
これらの作業により排他制御機能を保有した機能マトリクスを作成することが出来る。
【０１１９】
つまり、仕様に基づいた親子関係定義、親テーブル間定義があらかじめ定義されているため、開発者はロック順序を意識することなくマトリクス支援ツールにアクセス対象テーブルを入力するだけで、仕様に沿ったロック順序でテーブルをロックするプログラムを自動的に生成することが可能になる。
【図面の簡単な説明】
【０１２０】
【図１】システム構成図
【図２】機能構成図
【図３】機能マトリックスと機能マトリックスＸＭＬマッピング概要図
【図４】辞書フォーマット（例）と辞書ＸＭＬフォーマット
【図５】ソース／プログラム仕様書出力までのフロー図
【図６】機能マトリックス作成フロー
【図７】機能マトリックス作成時のテンプレート情報のセットサンプル
【図８】機能マトリックス作成時のプログラム情報セットサンプル
【図９】機能マトリックス作成時の部品コンテナセットサンプル
【図１０】機能マトリックス作成時の部品セットサンプル
【図１１】機能マトリックス作成時のキーワードセットサンプル
【図１２】機能マトリックス作成時の値セットサンプル
【図１３】機能マトリックス完成サンプル
【図１４】機能マトリックスＸＭＬ作成フロー
【図１５】機能マトリックスＸＭＬ作成時のプログラム情報セットサンプル
【図１６】機能マトリックスＸＭＬ作成時の部品コンテナ属性セットサンプル
【図１７】機能マトリックスＸＭＬ作成時のコンテナキーワード属性セットサンプル
【図１８】機能マトリックスＸＭＬ作成時の部品属性セットサンプル
【図１９】機能マトリックスＸＭＬ作成時のキーワード・値属性セットサンプル
【図２０】機能マトリックス完成サンプル
【図２１】機能マトリックスからソース生成・ドキュメント出力までの全体像
【図２２】相関チェックマトリックスを使用する際の機能構成図
【図２３】相関チェックマトリックス・XMLマッピング概要図
【図２４】ソース／プログラム仕様書出力までのフロー図（相関チェック部位）
【図２５】相関チェックマトリックス作成フロー
【図２６】相関チェックマトリックス作成時の相関チェックIDのセットサンプル
【図２７】相関チェックマトリックス作成時の条件部の部品名セットサンプル
【図２８】相関チェックマトリックス作成時の条件部のキーワードセットサンプル
【図２９】相関チェックマトリックス作成時の条件部の項目値セットサンプル
【図３０】相関チェックマトリックス作成時の条件部の項目名セットサンプル
【図３１】相関チェックマトリックス作成時の条件部の条件値セットサンプル
【図３２】相関チェックマトリックス作成時の条件部の項目値セットサンプル
【図３３】相関チェックマトリックス作成時の条件ツリーのノードＩＤセットサンプル
【図３４】相関チェックマトリックス作成時の条件ツリーの親ノードＩＤセットサンプル
【図３５】相関チェックマトリックス作成時の条件ツリーの評価順序セットサンプル
【図３６】相関チェックマトリックス作成時の処理部の部品名セットサンプル
【図３７】相関チェックマトリックス作成時の処理部のキーワードセットサンプル
【図３８】相関チェックマトリックス作成時の処理部の値セットサンプル
【図３９】相関チェックマトリックス作成時の処理部の処理対象ＩＤセットサンプル
【図４０】相関チェックマトリックス作成時の処理部の処理順序セットサンプル
【図４１】相関チェックマトリックス完成サンプル
【図４２】相関チェックマトリックスＸＭＬ作成フロー
【図４３】相関チェックマトリックスＸＭＬ作成時のヘッダーセットサンプル
【図４４】相関チェックマトリックスＸＭＬ作成時の相関チェックＩＤセットサンプル
【図４５】相関チェックマトリックスＸＭＬ作成時のパターンセットサンプル
【図４６】相関チェックマトリックスＸＭＬ作成時の評価順序セットサンプル
【図４７】相関チェックマトリックスＸＭＬ作成時の条件部の部品名セットサンプル
【図４８】相関チェックマトリックスＸＭＬ作成時の条件部の項目名セットサンプル
【図４９】相関チェックマトリックスＸＭＬ作成時の条件部の式セットサンプル
【図５０】相関チェックマトリックスＸＭＬ作成時の条件部の条件値セットサンプル
【図５１】相関チェックマトリックスＸＭＬ作成時の処理部条件ツリーセットサンプル
【図５２】相関チェックマトリックスＸＭＬ作成時の処理部の部品セットサンプル
【図５３】相関チェックマトリックスの一例
【図５４】親子関係をもつＤＢ環境のサンプル
【図５５】排他制御マトリックス作成フロー
【図５６】親子関係定義のサンプル
【図５７】親テーブル情報定義のサンプル
【図５８】業務マトリクス出力までの処理フロー
【図５９】業務フレーム支援ツールの概略図
【図６０】業務フレーム支援ツールによる親テーブル特定のメカニズム
【図６１】業務フレーム支援ツールによるロック順序特定のメカニズム
【図６２】排他制御マトリクス生成
【図６３】機能マトリクスへの転記
【符号の説明】
【０１２１】
201…機能仕様書、202…テンプレート仕様書、203…部品コンテナ仕様書、204…部品仕様書、205…辞書、206…業務部品辞書207…テンプレート辞書、214…機能マトリックス、216…マトリックスＸＭＬツール、217…機能マトリックスＸＭＬ、218…辞書ＸＭＬツール、219…辞書ＸＭＬ、220…ソース・プログラム仕様書変換エンジン、221…プログラム仕様書、222…ソースコード、2101…相関チェックマトリックス、2103…相関チェックマトリックスＸＭＬ、2301…条件部、2303…処理部、2302…条件ツリー部、2102…相関チェックマトリックスＸＬ化ツール、5401…テーブルX、5402…テーブルR、5403…テーブルQ、5404…テーブルA、5405…テーブルP、5406…テーブルY、5407…テーブルU、5408…テーブルS、5409…テーブルB、5410…テーブルZ、5411…テーブルT、5412…テーブルC、5501…ER図、5502…外部設計、5503…親子関係定義、5504…親テーブル情報定義、5505…排他制御フレームマトリクス開発支援ツール、5506…排他制御フレームマトリクス
【図１】
2008117095.tif 000003
【図２】
2008117095.tif 000004
【図３】
2008117095.tif 000005
【図４】
2008117095.tif 000006
【図５】
2008117095.tif 000007
【図６】
2008117095.tif 000008
【図７】
2008117095.tif 000009
【図８】
2008117095.tif 000010
【図９】
2008117095.tif 000011
【図１０】
2008117095.tif 000012
【図１１】
2008117095.tif 000013
【図１２】
2008117095.tif 000014
【図１３】
2008117095.tif 000015
【図１４】
2008117095.tif 000016
【図１５】
2008117095.tif 000017
【図１６】
2008117095.tif 000018
【図１７】
2008117095.tif 000019
【図１８】
2008117095.tif 000020
【図１９】
2008117095.tif 000021
【図２０】
2008117095.tif 000022
【図２１】
2008117095.tif 000023
【図２２】
2008117095.tif 000024
【図２３】
2008117095.tif 000025
【図２４】
2008117095.tif 000026
【図２５】
2008117095.tif 000027
【図２６】
2008117095.tif 000028
【図２７】
2008117095.tif 000029
【図２８】
2008117095.tif 000030
【図２９】
2008117095.tif 000031
【図３０】
2008117095.tif 000032
【図３１】
2008117095.tif 000033
【図３２】
2008117095.tif 000034
【図３３】
2008117095.tif 000035
【図３４】
2008117095.tif 000036
【図３５】
2008117095.tif 000037
【図３６】
2008117095.tif 000038
【図３７】
2008117095.tif 000039
【図３８】
2008117095.tif 000040
【図３９】
2008117095.tif 000041
【図４０】
2008117095.tif 000042
【図４１】
2008117095.tif 000043
【図４２】
2008117095.tif 000044
【図４３】
2008117095.tif 000045
【図４４】
2008117095.tif 000046
【図４５】
2008117095.tif 000047
【図４６】
2008117095.tif 000048
【図４７】
2008117095.tif 000049
【図４８】
2008117095.tif 000050
【図４９】
2008117095.tif 000051
【図５０】
2008117095.tif 000052
【図５１】
2008117095.tif 000053
【図５２】
2008117095.tif 000054
【図５３】
2008117095.tif 000055
【図５４】
2008117095.tif 000056
【図５５】
2008117095.tif 000057
【図５６】
2008117095.tif 000058
【図５７】
2008117095.tif 000059
【図５８】
2008117095.tif 000060
【図５９】
2008117095.tif 000061
【図６０】
2008117095.tif 000062
【図６１】
2008117095.tif 000063
【図６２】
2008117095.tif 000064
【図６３】
2008117095.tif 000065