(57)【特許請求の範囲】
【請求項１】
ソフトウェアの設計書の作成をコンピュータに実行させる設計書作成プログラムであって、
少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得する実行ログ取得処理と、
前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成するログ抽出処理と、
前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得するＳＱＬ解析処理と、
前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する設計書作成処理と、
を、コンピュータに実行させることを特徴とする設計書作成プログラム。
【請求項２】
前記設計書作成処理は、さらに、
前記テーブル・クラス関係表に基づいて、少なくとも、前記テーブル名に対応するテーブルを図式化したテーブルオブジェクトと、前記クラス名に対応するクラスを図式化したクラスオブジェクトと、前記各ＳＱＬデータ操作言語に対応し該オブジェクト間を接続する図式化されたコネクタと、に基づいて、前記テーブル・クラス関係表を図式化する
ことを特徴とする請求項１に記載の設計書作成プログラム。
【請求項３】
前記テーブルオブジェクトに対する前記ＳＱＬデータ操作言語については、前記コネクタの始点、終点、及び該テーブルオブジェクトとの接点位置の組み合わせによって定義され、前記クラスオブジェクトに対する該ＳＱＬデータ操作言語については、該コネクタの始点、終点、及び該クラスオブジェクトとの接点位置との組み合わせによって定義された図式化接点定義に基づいて、前記設計書作成処理は、前記テーブル・クラス関係表を図式化する
ことを特徴とする請求項２に記載の設計書作成プログラム。
【請求項４】
前記設計書作成プログラムは、さらに、
前記ログ抽出情報から前記処理種別が操作開始または処理開始を示す情報を有するログを抽出し、該各ログから前記シーケンス番号と前記クラス名と該処理種別と前記処理内容情報とのデータ項目を選択したログを、クラスの遷移を解析するためのクラス遷移情報として取得するクラス解析処理、
をコンピュータに実行させ、
前記設計書作成処理は、さらに、
前記クラス遷移情報から前記クラス名を重複なく取得し、前記クラス遷移情報から前記処理内容情報を取得し、該クラス名と該処理内容情報との組み合わせを表すマトリックスを作成し、該クラス遷移情報内の前記処理種別を前記シーケンス番号順に検索して該処理種別に操作開始が現れる毎に該各検索した処理種別に対応するクラス名に採番し、前記作成したマトリックスの対応する位置に該採番した番号を配置することにより、前記設計書
としてクラス遷移表を作成する
ことを特徴とする請求項１に記載の設計書作成プログラム。
【請求項５】
前記ログ抽出情報には、さらに、前記操作開始の要求の指示をしたユーザ名が含まれ、
前記設計書作成処理は、さらに、
前記ログ抽出情報から前記ＳＱＬを含む前記ログの有する前記ユーザ名を重複なく取得し、前記ＳＱＬ解析情報から前記テーブル名を重複なく取得し、該ユーザ名と該テーブル名との組み合わせを表すマトリックスを作成し、該ユーザ名毎に、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・ユーザ関係表を作成する
ことを特徴とする請求項１に記載の設計書作成プログラム。
【請求項６】
ソフトウェアの設計書の作成を支援する設計書作成装置であって、
少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得する実行ログ取得手段と、
前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成するログ抽出手段と、
前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得するＳＱＬ解析手段と、
前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する設計書作成手段と、
を備えることを特徴とする設計書作成装置。
【請求項７】
ソフトウェアの設計書の作成をする設計書作成方法であって、
少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得し、
前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成し、
前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得し、
前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する、
ことを特徴とする設計書作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフトウェアの設計書作成に関する。
【背景技術】
【０００２】
アプリケーションソフトの開発では、システム構造設計時、ユースケース・テーブルマトリックスやエンティティマトリックスを作成する。実際に作成したソフトウェアについては、仕様通りに動作する事かどうか試験工程で確認される。
【０００３】
特にＷｅｂアプリケーションソフトの多くはＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）を使用しており、プログラムによってデータを参照・更新するシステムがほとんどと言っても過言ではない。また、ＷＥＢアプリケーションは、サーバサイドでの改造のみで利用者の利便性の向上が図れるなどの利点がある。一方で、Ｗｅｂアプリケーションは、クライアント・サーバシステムに比べて、ソフトウェアの改造要求の頻度が高く、短期間での改造を求められる。
【０００４】
ソフトウェアの開発においては、上流工程で仕様書を作成し、画面仕様書、テーブル仕様書を作成する。そして、どの操作をすると、どのデータを参照し、どのデータを更新するかを、ソフトウェア構造設計書として設計する。試験工程では、実際に作成したソフトが仕様書の要求通りに動作するか否かを画面や帳票などに出力することで検証する。
【０００５】
既存のシステムの改造をする場合、そのシステム設計書を入手し、そのシステム概要を把握し、改造点を洗い出し、改造システムの設計、作成、検証を行う。この場合に使用するのは現設計の設計書、プログラムソース、出力となる画面、及び帳票であり、これらを基に既存システムを解析し、改造システムを設計する。
【０００６】
図１０は、従来におけるソフトウェア開発の概念図である。ソフトウェアの開発は、一般的に、要求仕様、設計工程、製造工程、試験工程の流れで進んで行く。（１）は、設計工程の生産物からソースプログラムを生成する従来技術である。（２）は、ソースプログラムから設計書を生成する従来技術である。（４）は、実行ログから操作マニュアルを生成する従来技術である。
【０００７】
従来、オブジェクト指向プログラムの生成や解析においては、開発フレームワークのような設計書からソースプログラムを自動生成する技術およびソースプログラムから設計書を自動生成する技術がある（例えば、特許文献１〜３）。また、実行中プログラムからロギング情報を取得し、操作マニュアルを作成する技術として、「マニュアル類の自動作成、更新方法」がある（例えば、特許文献４）。また、分散ＤＢＭＳの障害時のリカバリ方式として、ホストでチェックポイント時のＤＢＭＳのバックアップと、端末で実行したＳＱＬのログを保持し、端末障害時にホストで保持するＤＢＭＳのバックアップに対し、ＳＱＬのログからロールバック、ロールフォワードを実行し、端末ＲＤＢＭＳを作成し直す技術として、「リカバリ方式」がある（例えば、特許文献５）。また、Ｊｏｂ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ（ＪＣＬ、ジョブ制御言語）に関し、プログラムとファイルの相関図を作成する技術として、「要素項目処理相関分析システム」がある（例えば、特許文献６）。
【特許文献１】特開平１１−９５９９０号公報
【特許文献２】特開平１０−１９８５５６号公報
【特許文献３】特開２０００−１１２７４２号公報
【特許文献４】特開平６−６７８６４号公報
【特許文献５】特開昭６３−１８３７４６号公報
【特許文献６】特開昭６１−０１５２３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来の方式では、検証方法が画面や帳票などを確認することであり、各検証の記録は試験項目の合否として管理される。しかしながら、このような過去の検証の証拠を全て記憶、記録することは大変難しい。
【０００９】
また、システムの改造においては、現在稼動中のシステムのソフトウェア構造を把握するところから作業が始まる。しかしながら、ソフトウェア構造の把握において膨大な設計書を理解したり、設計書に不足や不備があれば更に膨大なソースを解析する事になる。
【００１０】
このようなソース解析においては、従来技術のソースプログラムから設計書を自動生成する技術は有効である。例えば、ソースプログラムからオブジェクトの関連を静的に把握する事は可能である。しかしながら、プログラムロジック等により動的に生成されるＳＱＬ命令や、ＲＤＢＭＳに格納されたデータによって動的に変化する内容を自動解析する方法はなく、ソースコードを読んで解析するしかない。このソースコードの解読は、非常に時間がかかると同時に、解読結果に誤りが発生する可能性が高い。
【００１１】
また、実行中プログラムからロギング情報を取得して操作マニュアルを作成する技術として、特許文献４がある。ところが、特許文献４では、実行時のロギング情報から作成する対象が操作マニュアルであり、ソフトウェアの構造設計書を作成する事はできない。よって改造時等の構造分析に必要な情報を取得することができない。
【００１２】
特許文献５の技術は、障害時にＤＢＭＳ自体をどの時点まで再作成可能とするかの手法である。この手法において、ロギングしたＳＱＬは、ロールバック、ロールフォワードの為に使用するものであり、ＳＱＬ文を構文解析してどのテーブルを変更したかを解析するものではない。
【００１３】
特許文献６の技術は、ＪＣＬの定義により静的にプログラムとファイルの相関関係を提供する手段である。この手法は、前述のソースプログラムからクラス関連図を静的に出力する技術と同様に、静的解析には有効ではある。しかしながら、ＪＣＬという規定の定義言語に依存した技術であるため、オンラインＷｅｂアプリケーション開発におけるオブジェクトとテーブルの相関関係を取得する事はできない。
【００１４】
また、図１０において、（２）はプログラムソースと設計との整合を確認できるものでるが、実動作と設計との整合を確認できなかった。また、（４）は実行ログから仕様書レベルの操作マニュアルを作成するものであるが、ソフトウェア構造設計書を生成するものではなかった。このように、従来、（３）実行ログから設計書を生成する技術はなかった。
【００１５】
また、従来のソースプログラムの解析において、ソースコードは静的なものであり、クラス関連の解析結果は網羅的であるが、プログラムロジックにより動的に生成するＳＱＬ文を知ることはできない。そのため、クラス・エンティティマトリックスを生成する事はできなかった。
【００１６】
このように、従来、ソースコードなどから仕様書を自動的に生成する技術があるが、ＳＱＬ文など、実行時の値を見なければ、どの処理が、どのファイルを操作しているかの判断できない部分については、ソースコードから仕様書を生成することができない。
【００１７】
上記課題に鑑み、実行プログラムのから出力された実行ログに基づいて、実際に実行されたオブジェクトとそのオブジェクトで使用するテーブルとの関係を示す設計書を容易に作成することを目的とする。さらに、そのオブジェクト間遷移の関係、または操作ユーザと操作ユーザによりアクセスされたテーブルとの関係を示す設計書を容易に作成することを目的とする。
【課題を解決するための手段】
【００１８】
本明細書で開示のソフトウェアの設計書の作成をコンピュータに実行させる設計書作成プログラムは、少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得する実行ログ取得処理と、前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成するログ抽出処理と、前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得するＳＱＬ解析処理と、前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する設計書作成処理と、を、コンピュータに実行させることを特徴とする。
【００１９】
このように構成することにより、実行プログラムから出力された実行ログに基づいて、実際に実行されたオブジェクトとそのオブジェクトで使用するテーブルとの関係を示す設計書を容易に作成することができる。
【００２０】
前記設計書作成プログラムの前記設計書作成処理は、さらに、前記テーブル・クラス関係表に基づいて、少なくとも、前記テーブル名に対応するテーブルを図式化したテーブルオブジェクトと、前記クラス名に対応するクラスを図式化したクラスオブジェクトと、前記各ＳＱＬデータ操作言語に対応し該オブジェクト間を接続する図式化されたコネクタと、に基づいて、前記テーブル・クラス関係表を図式化することを特徴とする。
【００２１】
このように構成することにより、前記テーブルとクラスとの関係が視覚的により分かりやすい設計書を作成することができる。
前記設計書作成プログラムにおいて、前記テーブルオブジェクトに対する前記ＳＱＬデータ操作言語については、前記コネクタの始点、終点、及び該テーブルオブジェクトとの接点位置の組み合わせによって定義され、前記クラスオブジェクトに対する該ＳＱＬデータ操作言語については、該コネクタの始点、終点、及び該クラスオブジェクトとの接点位置との組み合わせによって定義された図式化接点定義に基づいて、前記設計書作成処理は、前記テーブル・クラス関係表を図式化することを特徴とする。
【００２２】
このように構成することにより、図式化接点定義に基づいて、前記テーブル・クラス関係表を図式化することができる。
前記設計書作成プログラムは、さらに、前記ログ抽出情報から前記処理種別が操作開始または処理開始を示す情報を有するログを抽出し、該各ログから前記シーケンス番号と前
記クラス名と該処理種別と前記処理内容情報とのデータ項目を選択したログを、クラスの遷移を解析するためのクラス遷移情報として取得するクラス解析処理、をコンピュータに実行させ、前記設計書作成処理は、さらに、前記クラス遷移情報から前記クラス名を重複なく取得し、前記クラス遷移情報から前記処理内容情報を取得し、該クラス名と該処理内容情報との組み合わせを表すマトリックスを作成し、該クラス遷移情報内の前記処理種別を前記シーケンス番号順に検索して該処理種別に操作開始が現れる毎に該各検索した処理種別に対応するクラス名に採番し、前記作成したマトリックスの対応する位置に該採番した番号を配置することにより、前記設計書としてクラス遷移表を作成することを特徴とする。
【００２３】
このように構成することにより、実行プログラムから出力された実行ログに基づいて、実際に実行されたオブジェクト間遷移の関係を示す設計書を容易に作成することができる。
【００２４】
前記ログ抽出情報には、さらに、前記操作開始の要求の指示をしたユーザ名が含まれ、前記設計書作成処理は、さらに、前記ログ抽出情報から前記ＳＱＬを含む前記ログの有する前記ユーザ名を重複なく取得し、前記ＳＱＬ解析情報から前記テーブル名を重複なく取得し、該ユーザ名と該テーブル名との組み合わせを表すマトリックスを作成し、該ユーザ名毎に、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・ユーザ関係表を作成することを特徴とする。
【００２５】
このように構成することにより、実行プログラムから出力された実行ログに基づいて、操作ユーザと操作ユーザによりアクセスされたテーブルとの関係を示す設計書を容易に作成することができる。
【００２６】
本明細書で開示のソフトウェアの設計書の作成を支援する設計書作成装置は、少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得する実行ログ取得手段と、前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成するログ抽出手段と、前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得するＳＱＬ解析手段と、前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する設計書作成手段と、を備えることを特徴とする。
【００２７】
このように構成することにより、実行プログラムから出力された実行ログに基づいて、実際に実行されたオブジェクトとそのオブジェクトで使用するテーブルとの関係を示す設計書を容易に作成することができる。
【００２８】
本明細書で開示のソフトウェアの設計書の作成をする設計書作成方法は、少なくとも、
クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得し、前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成し、前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得し、前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する、ことを特徴とする。
【００２９】
このように構成することにより、実行プログラムから出力された実行ログに基づいて、実際に実行されたオブジェクトとそのオブジェクトで使用するテーブルとの関係を示す設計書を容易に作成することができる。
【発明の効果】
【００３０】
本明細書で開示のプログラムを用いることにより、実行プログラムから出力された実行ログに基づいて、実際に実行されたオブジェクトとそのオブジェクトで使用するテーブルとの関係を示す設計書を容易に作成することができる。さらに、そのオブジェクト間遷移の関係、または操作ユーザと操作ユーザによりアクセスされたテーブルとの関係を示す設計書を容易に作成することができる。
【発明を実施するための最良の形態】
【００３１】
図１は、本実施形態における実行ログによるエンティティマトリックス自動生成処理システムの全体のフローを示す。従来技術として、ソース解析処理部１０２により、ソースプログラム１０１の網羅的な解析によるクラス関連図１０３が生成される手法は存在していた。
【００３２】
本実施形態では、以下のことを実現する。まず、ソースプログラム１０１をビルドして、実行形式プログラム１０５を作成し、運用システムのサーバ１０４に搭載する。サーバ１０４は、クライアント端末１０７からの所定の操作を受け付けると、運用システム用ＲＤＢＭＳ１０６を参照／更新し、その要求に対する処理を行う。
【００３３】
その操作に応じてサーバ１０４が処理を実行した後、実行ログ１０９が出力される。ログとして出力する項目については、ログ出力レベル定義１０８で実行時の定義レベルを調整することにより、出力の有無指定が可能である。
【００３４】
ここで、実行ログ１０９は、オブジェクトメソッドの開始時、ＳＱＬ発行時、メソッドの終了時、の最低３箇所で出力されるように、所定のコードがソースプログラム１０１に実装されている。
【００３５】
さらに、実行時に与えられるセッションＩＤやユーザＩＤなどと共に、所定の出力項目をログとして出力するようにソースプログラム１０１に実装している。そのように出力項目を選択する理由は、後述の解析の入力となるデータを出力させるためである。
【００３６】
エンティティマトリックス自動生成システム１１０は、実行ログ定義ファイル１１１、ログ解析処理部（ログ抽出処理部）１１２、解析用ＲＤＢＭＳ１１３、クラス解析処理部１１４、ＳＱＬ解析処理部１１５、設計書作成処理部１１６、図式化接点定義７１０を有する。
【００３７】
ログ解析処理部（ログ抽出処理部）１１２は、実行ログ定義ファイル１１１に基づいて、実行ログ１０９を解析して所定のログを抽出し、その抽出したログをログ抽出情報として解析用ＲＤＢＭＳ１１３に格納する。
【００３８】
実行ログ定義ファイル１１１には、実行ログ１０９のフォーマットを読み取るための実行ログ定義情報が、実行ログ１０９の出力結果に合わせて定義されている。ログ解析処理部１１２は、実行ログ１０９と実行ログ定義情報を読み込み、実行ログ定義情報に従って解析に必要であるとして定義された項目のみを抽出する。それから、ログ解析処理部１１２は、その抽出したログに対して時系列にシーケンス番号を付加し、ログ抽出情報として解析用ＲＤＢＭＳ１１３に格納する。
【００３９】
クラス解析処理部１１４は、ログ抽出情報に基づいて、クラス遷移に関する情報を解析する。通常、Ｗｅｂアプリケーションは、クライアントからの要求を受け付ける操作受付クラスが実装されている。クラス解析処理部１１４は、操作受付クラスの操作名に始まって、クライアントに要求内容を返すまでのクラス遷移を解析する。
【００４０】
ＳＱＬ解析処理部１１５は、ログ抽出情報に基づいて、発行されたＳＱＬ文を解析し、ＳＱＬ文の構文解析を行う。ＳＱＬ解析処理部１１５は、ＳＱＬ文構文解析を行うことにより、アクセスするテーブル名、フィールド名、アクセス対象レコードを分析する。ＳＱＬ文の構文は、使用するＲＤＭＳの種類により多少の構文の違いはある。そこで、ＳＱＬ解析処理部１１５は、実行プログラム中で使用されたＲＤＢＭＳの仕様におうじた構文解析処理を行う。本実施形態では、ＳＱＬの構文解析によりアクセスするテーブル名、フィールド名を取得する例を後述する。
【００４１】
設計書作成処理部１１６は、ログ解析処理部１１２、クラス解析処理部１１４、及びＳＱＬ解析処理部１１５の処理結果からシーケンス番号によって結合されるログ抽出情報の各項目を、クラス単位、テーブル単位、ユーザ単位などのさまざまな角度から解析する。具体的には、設計書作成処理部１１６は、代表的にはクラス遷移図、クラス・エンティティマトリックス、ユーザ・エンティティマトリックス、及び関係図を作成する。その他にもユーザ毎に、いつ、だれが、どのデータをどのようにアクセスしたか等の追跡や、利用者と利用操作の関連など各種解析もすることができる。
【００４２】
設計書作成処理部１１６は、クラス遷移作成処理部１１６ａ、マトリックス作成処理部１１６ｂ、図式化処理部１１６ｃからなる。クラス遷移作成処理部１１６ａは、クラス遷移図１１７を作成する。マトリックス作成処理部１１６ｂは、所定のマトリックス１１８を作為する。図式化処理部１１６ｃは、作成されたマトリックス１１８を図式化（１１９）して出力する。
【００４３】
上述の通り、実行ログ定義ファイル１１１に基づいてログ解析処理部１１２により抽出されたログ抽出情報から、クラス解析処理部１１４、ＳＱＬ解析処理部１１５、および設計書作成処理部１１６により、クラス遷移図１１７およびマトリックス１１８等の設計書が作成される。
【００４４】
なお、上述の機能の実装の形態としては、オンラインシステムに組み込む形態でもよい
し、単純にオフラインで実行する形態のいずれでもよい。いずれかの形態においてもソフトウェア設計書レベルのドキュメントを作成することができる。また、セキュリティの監査の記録としてのユーザアクセス履歴のエビデンスを提供することもできる。
【００４５】
図１によれば新規アプリケーションの作成時には、エンティティマトリックス自動生成装置１１０の存在を前提としたプログラム開発を実施し、実行ログを用いて動作検証を行うに際して、確実な検証を容易に行うことができる。これにより、ソフトウェア開発期間短縮、品質向上を図ることができる。
【００４６】
また、既存ソフトウェアにおいては、ＳＱＬの実行ログやクラス遷移の実行ログを出力しているソフトウェアであれば、実行ログ定義をカスタマイズすることにより本実施形態を部分的に適用することができるので、改造時のソフトウェア構造の把握が容易になる。
【００４７】
図２Ａ及び図２Ｂは、本実施形態における実行ログ出力クラスのソースプログラム１０１への実装とログ出力例を示す。図２Ａは、ソースプログラム１０１の構成の概要を示す。ソースプログラム１０１のクラスは、通常、操作受付クラス、業務処理クラス、及びＳＱＬクラスから構成される。
【００４８】
操作受付クラスは、ユーザからの操作を受け付けるクラスである。業務処理クラスは、所定の業務処理を実行するクラスである。
同図では、操作受付クラスとしてクラスＡ，Ｂがある。操作受付クラスＡから呼び出されるＳＱＬクラスとしてクラスＣ，Ｄがある。操作受付クラスＢから呼び出されるＳＱＬクラスとしてクラスＥがある。ディスパッチャーによりクラスに基づくディスパッチ処理が行われる。
【００４９】
図２Ｂは、図２ＡのクラスＡ，Ｂ，Ｃに対応するソースプログラムの実装例である。操作受付クラスのオブジェクトメソッドの開始時点（２０１，２０３）と終了時点（２０２，２０４）で、何の操作を開始・終了するかのログを出力する。業務処理クラスなどは、各メソッドの開始（２０５，２０８）と終了（２０７，２１０）をログ出力する。ＳＱＬ処理クラスは、ＳＱＬ命令を発行する為にＳＱＬ文の生成が完了した時点（２０６，２０９）でログを出力する。
【００５０】
このように、ソースプログラム１０１にログを出力するための実装を行う。これらのログ出力の為に、ログ出力クラス２１１を設ける。ログ出力クラス２１１は、ログ出力レベル定義１０８を用いて、システム動作時に環境設定情報としてログレベルを指定可能な手法とし、この環境設定に指定のログレベルにより出力するか否かを判定し出力する。
【００５１】
ログ出力クラス２１１のｐｒｉｎｔメソッドは、ログレベルを判定するものであり、「level」、「sessionID」、「userID」、「ClassName」、「MethodName」、「Process」、「inf」を引数として、「システム時刻，apllog，sessionID，userID，ClassName，MethodName，Process，inf」をファイルに出力する。引数「level」は、ログレベルを示し、検証の段階と運用の段階で解析するログデータの量の必要度を変えるものである。
【００５２】
Ｌｏｇ．ｐｒｉｎｔ（２０１〜２１０）がソースプログラム１０１に実装されている。このプログラムを実行させると、実行ログ１０９が出力される。上述の通り、Ｌｏｇ．ｐｒｉｎｔ（２０１〜２１０）は、オブジェクトメソッドの開始時、ＳＱＬ発行時、メソッドの終了時、の最低３箇所で出力されるように、ソースプログラムにコーディングされている。ログ出力項目の形式は、このログ出力クラス２１１でファイル出力する時に決定し、ファイル出力する。
【００５３】
このように、対象のソースコード中に、実行時のＳＱＬ文の値を出力するコード（「Ｌｏｇ．ｐｒｉｎｔ」）を記載しておく。そして、そのソースコードをビルドしたプログラムを実行したときに、ＳＱＬのどの処理が、どのテーブルまたはファイルを操作したかに関するログファイル（実行ログ１０９）を出力させることができる。
【００５４】
図３は、本実施形態におけるログ解析処理部１１２で実行される処理概要を示す。ログ出力クラス２１１によりファイル出力された実行ログ１０９を解析する場合、ログ出力クラス２１１で決定した出力形式に合わせて作成したログ出力定義ファイル１１１を用いて、実行ログ１０９を解析する必要がある。
【００５５】
ログ出力定義ファイル１１１には、例えば、実行ログ１０９から目的とするログを抽出するための抽出キーワード、区切り記号定義、時刻形式定義、内容出現順定義、抽出有無定義等を設定することができる。抽出キーワードの一例として、「KeyWord=apllog」、「Proc=操作開始」、「Proc=処理開始」、「Proc=SQL文」が定義されている。
【００５６】
「KeyWord=apllog」は、引数「level」として「apllog」が設定されているログを抽出することを定義している。実行ログ１０９に当該アプリケーション以外のフレームワーク等のログが含まれる場合を想定し、アプリケーションのログのみ抽出する為に、KeyWordで指定のログのみを抽出する。上述の通り、引数「level」のログレベルを調整することにより、解析の必要度に応じて、クラス開始ログのみを抽出したり、ＳＱＬログのみを抽出することができる。
【００５７】
「Proc=操作開始」、「Proc=処理開始」、「Proc=SQL文」は、引数「Proc」として「操作開始」、「処理開始」、または「SQL文」が設定されているログを抽出することを定義している。
【００５８】
区切り記号定義の一例として、「Sprit=，」が定義されている。時刻形式定義の一例として、「TimeFormat=yyyy/mm/dd hh:mm:ss:sss」が定義されている。
内容出現順定義、抽出有無定義の一例として、「Time=No」、「KeyWord=No」（ apllog）、「sessionID=Yes」（セッションID）、「userID=Yes」（ユーザID）、「ClassName=Yes」（クラス名）、「MethodName=Yes」（メソッド名）、「Proc=Yes」（処理種別）、「Inf=Yes」（情報）が定義されている。これらの定義は、１行のログの中で、ログの出現順序の定義と項目の抽出有無の定義により必要な項目のみ抽出するためのものである。
【００５９】
ログ解析処理部１１２の動作について説明する。ログ解析処理部１１２は、実行ログ１０９と実行ログ定義ファイル１１１を読み込む。ログ解析処理部１１２は、実行ログ定義ファイル１１１に基づいて、実行ログ１０９から抽出キーワードで指定されたキーワードを含む行を抽出する（Ｓ１）。
【００６０】
次に、ログ解析処理部１１２は、Ｓ１で抽出したログから、実行ログ定義ファイル１１１に基づいて、抽出有無定義=Yesの項目に対応する内容を取得して、ログ抽出情報として解析用ＲＤＢＭＳ１１３に格納する（Ｓ２）。このとき、取得された時系列のログに対して一意のシーケンス番号（ＳＥＱ）を付加し、ログ抽出情報として解析用ＲＤＢＭＳ１１３のログ抽出テーブル３０１に格納する。
【００６１】
ログ抽出テーブル３０１は、例えば、「ＳＥＱ」、「セッションＩＤ」、「ユーザＩＤ」、「クラス名」、「メソッド名」、「処理種別」、「情報」のデータ項目から構成される。これらのデータ項目は、実行ログ定義ファイル１１１で抽出有無定義=Yesとして定義された項目に対応する。
【００６２】
なお、図２Ｂで示したＬｏｇ．ｐｒｉｎｔメソッドを実装しているプログラムであれば、過去に作成したシステムであっても、その実行ログの出力に合わせてログ定義ファイルを作成すれば解析する事ができる。
【００６３】
図４は、本実施形態におけるクラス解析処理部１１４で実行される処理概要を示す。クラス解析処理部１１４は、ログ抽出テーブル３０１を用いてクラス遷移に関係する情報を抽出する。具体的には、クラス解析処理部１１４は、ログ抽出テーブル３０１から処理種別が「操作開始」、「処理開始」のレコードを抽出し、シーケンス番号、クラス名、処理種別、情報のデータ項目からなるクラス遷移テーブル４０１を作成する（Ｓ１１）。
【００６４】
図５は、本実施形態におけるＳＱＬ解析処理部１１５で実行される処理概要を示す。ＳＱＬ解析処理部１１５は、ログ抽出テーブル３０１から処理種別が「ＳＱＬ文」のレコードを解析対象とする（Ｓ２１）。
【００６５】
次に、ＳＱＬ解析処理部１１５は、ログ抽出テーブル３０１の「情報」フィールドのＳＱＬ文から、ＳＱＬ文のキーワード（データ操作言語及びそのデータ操作言語において用いられる句）に基づいて、ＳＥＬＥＣＴ文解析処理Ｓ２２−１、ＳＥＬＥＣＴ文解析処理Ｓ２２−２、ＩＮＳＥＲＴ文解析処理Ｓ２２−３，ＤＥＬＥＴＥ文解析処理Ｓ２２−４等の解析処理を行う。その解析結果であるシーケンス番号と、テーブル名を抽出する（Ｓ２２）。すなわち、ＳＱＬ解析処理部１１５は、ログ抽出テーブル３０１に保存したＳＱＬ文からＳＱＬ文の種類、使用するテーブル、参照するフィールドを抽出する。副参照等の複雑なＳＱＬ文についても繰返し解析処理を行い、１つのＳＱＬ文で使用する全てのテーブル名を抽出する。詳細な解析を必要とする場合は、ＷＨＥＲＥ句や設定内容などの解析を追加する。
【００６６】
例えば、ＳＥＱ＝３の「情報」フィールドに格納されているＳＥＬＥＣＴ文５０１の場合、“ＳＥＬＥＣＴ”キーワードから“ＦＲＯＭ”キーワードの間にカンマ区切りで出現するフィールド名“Ｆ１”，“Ｆ２”を取得し、“ＦＲＯＭ”キーワードから“ＷＨＥＲＥ”キーワードの間にカンマ区切りで出現するテーブル名“Ｔ１”を取得する。また、ＳＥＱ＝６の「情報」フィールドに格納されているＵＰＤＡＴＥ文５０２の場合、“ＵＰＤＡＴＥ”キーワードから“ＳＥＴ”キーワードの間に出現するテーブル名“Ｔ１”を取得し、“ＳＥＴ”キーワードから“ＷＨＥＲＥ”キーワードの間に出現するフィールド名“Ｆ１”を取得する。
【００６７】
このようにして、ＳＱＬ文で使用しているテーブル名、フィールド名などを各解析処理に対応するＳＱＬ解析テーブル５１０（ＳＥＬＥＣＴテーブル５１１、ＳＥＬＥＣＴフィールドテーブル５１２、ＵＰＤＡＴＥテーブル５１３、ＵＰＤＡＴＥフィールドテーブル５１４、ＩＮＳＥＲＴテーブル５１５、ＤＥＬＥＴＥテーブル５１６）にシーケンス番号と共に格納する。例えば、ＳＥＬＥＣＴ文５０１から抽出されたＦ１，２は、ＳＥＱ＝３とともに、ＳＥＬＥＣＴフィールドテーブル５１２に格納される。ＳＥＬＥＣＴ文５０１から抽出されたＴ１は、ＳＥＱ＝３とともに、ＳＥＬＥＣＴテーブル５１１に格納される。ＵＰＤＡＴＥ文５０２から抽出されたＦ１は、ＳＥＱ＝６とともに、ＵＰＤＡＴＥフィールドテーブル５１４に格納される。ＵＰＤＡＴＥ文５０２から抽出されたＴ１は、ＳＥＱ＝６とともに、ＵＰＤＡＴＥテーブル５１３に格納される。
【００６８】
図６Ａは、本実施形態における設計書作成処理部１１６のクラス遷移作成処理部１１６ａで実行されるクラス遷移図作成処理の概要を示す。クラス遷移作成処理部１１６ａは、設計書フォーマット（クラス遷移図）の横軸を作成する為に、クラス遷移テーブル４０１から、重複のない形式でクラス名を取り出し、設計書（クラス遷移図を構成する表）に配置する（Ｓ３１）。
【００６９】
次に、クラス遷移作成処理部１１６ａは、設計書フォーマット（クラス遷移図）の縦軸を作成する為に、クラス遷移テーブル４０１の「情報」フィールドから、クラス名と操作名と重複が無い形式で操作（検索操作、登録操作）を取り出し、クラス遷移図を構成する表に配置する（Ｓ３２）。
【００７０】
そうして、クラス遷移作成処理部１１６ａは、シーケンス番号の順番にクラス遷移テーブル４０１を走査し、縦軸、横軸に該当したナンバリングを行う（Ｓ３３）。すなわち、シーケンス番号順に、操作開始毎に、設計書フォーマットのクラス名が一致するものにナンバリングを行う。このようにして、クラス遷移図６０１が作成される。
【００７１】
クラス遷移図６０１からは、「検索操作」の場合には、クラスＡ、クラスＣの順でクラスが遷移したことが分かる。「登録操作」の場合には、クラスＡ，クラスＤの順でクラスが遷移したことが分かる。このように、クラス遷移図６０１からは、操作内容に影響するクラス及びその遷移順を把握することができる。
【００７２】
図６Ｂは、本実施形態における設計書作成処理部１１６のマトリックス作成処理部１１６ｂで実行されるエンティティマトリックス作成処理の概要を示す。マトリックス作成処理部１１６ｂは、用途に応じて、ログ抽出テーブル３０１の「ＳＱＬ文」レコードの「クラス名」または「ユーザ名」等を重複の無い形式で抽出し、設計書フォーマットの横軸に配置する（Ｓ４１）。ここで、「クラス名」、「ユーザ名」を横軸にした設計書をそれぞれ、クラスマトリックス６０２、ユーザマトリックス６０３という。
【００７３】
次に、マトリックス作成処理部１１６ｂは、ＳＱＬ解析処理部１１５で生成したＳＱＬ解析テーブル群５１０から「テーブル名」を重複の無い形式で取り出し、設計書（クラスマトリックス６０２、ユーザマトリックス６０３）の縦軸に配置する（Ｓ４２）。
【００７４】
それから、マトリックス作成処理部１１６ｂは、ログ抽出テーブル３０１とＳＱＬ解析テーブル群５１０をシーケンス番号で結合し、クラス名とテーブル名又はユーザ名が一致する場合、マトリックスの対応するセルに、Ｓ（ＳＥＬＥＣＴ）、Ｕ（ＵＰＤＡＴＥ）、Ｉ（ＩＮＳＥＲＴ）、Ｄ（ＤＥＬＥＴＥ）の記号を記載する。
【００７５】
クラスマトリックス６０２からは、クラスＣにおいてテーブルＴ１に対してＳＥＬＥＣＴ処理が実行され、クラスＤにおいてテーブルＴ１に対してＵＰＤＡＴＥ処理が実行され、クラスＸにおいてテーブルＴ１０に対してＩＮＳＥＲＴ処理が実行され、クラスＹにおいてテーブルＴ１１に対してＤＥＬＥＴＥ処理が実行されたことが分かる。このように、クラスマトリックス６０２からは、どのクラスがどのテーブルに対してどのような処理を行ったかを把握することができる。
【００７６】
ユーザマトリックス６０３からは、ユーザ９９９がテーブルＴ１に対してＳＥＬＥＣＴ処理とＵＰＤＡＴＥ処理を行い、ユーザ００１がテーブルＴ１０に対してはＩＮＳＥＲＴ処理を行い、テーブルＴ１１に対してはＤＥＬＥＴＥ処理を行ったことが分かる。このように、ユーザマトリックス６０３からは、どのユーザがどのテーブルに対してどのような処理を行ったかを把握することができる。したがって、セキュリティの観点から、どのユーザがそのデータを参照・更新等したかを把握することができる。
【００７７】
このように、ログ抽出テーブル３０１から、クラス遷移テーブル４０１及びＳＱＬ解析テーブル５１０を生成して、それらのデータを解析することで、クラス遷移図６０１、クラスマトリックス６０２、ユーザマトリックス６０３の各設計書を作成することができる。
【００７８】
上述したように、エンティティマトリックス自動生成システム１１０を用いれば、実行されたプログラムにより、ユーザ名と、クラス名と、メソッド名と、実行した処理種別と、実行したデータの操作と、ＳＱＬ文が関連付けられて実行ログ１０９として出力される。
【００７９】
その実行ログ１０９から、「処理種別」が「操作開始」あるいは「処理開始」のレコードを抽出してクラス遷移テーブル４０１として記録する。
また、実行されたデータ操作が「ＳＥＬＥＣＴ」、「ＵＰＤＡＴＥ」、「ＩＮＳＥＲＴ」、「ＤＥＬＥＴＥ」の命令であれば、どのシークエンスで、どのテーブルを参照することで行ったかを、その命令ごとに集計し、ＳＱＬ解析テーブル５１０として記録する。
【００８０】
クラス遷移テーブル４０１から、実行したデータ操作と、その操作をどのクラスがどの順に行ったかを抽出して、クラス遷移図６０１として出力することができる。
また、ＳＱＬ解析テーブル５１０とＳＥＬＥＣＴテーブル５１１、ＵＰＤＡＴＥテーブル５１３、ＩＮＳＥＲＴテーブル５１５、ＤＥＬＥＴＥテーブル５１６から、どのクラスが、どのテーブルをどのような操作で用いたかを関連付けたクラスマトリックス６０２と、どのユーザがどのテーブルをどのような操作で用いたかを関連付けたユーザマトリックス６０３とを出力することができる。
【００８１】
ところで、上記では、クラスとテーブルとの関係をマトリックスで表したが、以下では、図７Ａ〜図７Ｄを用いて、クラスマトリックス６０２から、テーブルとクラスとの関係を図式化する方式について説明する。
【００８２】
図７Ａは、本実施形態における図式化オブジェクトの一例を示す。符号７０１は、テーブルのオブジェクトを示す。符号７０３は、テーブル図式化オブジェクト７０１の接点を拡張する為の図式化オブジェクトを示す（以下、テーブル拡張子と記載。ＥＴ：Ｅｘｔｅｎｄ  Ｔａｂｌｅと略す。）。符号７０２は、クラスの図式化オブジェクトを示す。符号７０４は、クラス図式化オブジェクト７０２の接点を拡張する為の図式化オブジェクトを示す（以下、クラス拡張子と記載。EC：Ｅｘｔｅｎｄ  Ｃｌａｓｓと略す。）。
【００８３】
符号７０５で示すコネクタは、ＤＥＬＥＴＥ処理を示す。符号７０６で示すコネクタは、ＩＮＳＥＲＴ処理を示す。符号７０７で示すコネクタは、ＵＰＤＡＴＥ処理を示す。符号７０８で示すコネクタは、ＳＥＬＥＣＴ処理を示す。
【００８４】
図７Ｂは、本実施形態における図式化オブジェクトの図式化接点定義７１０を示す。図式化接点定義７１０では、テーブル、クラス、ＥＴ、ＥＣの間において、なされる処理（ＤＥＬＥＴＥ、ＩＮＳＥＲＴ、ＵＰＤＡＴＥ，ＳＥＬＥＣＴ）を、各図式化オブジェクトに対するコネクタの向きで表すことを定義している。
【００８５】
△は、テーブルオブジェクト（テーブル拡張子オブジェクトを含む）同士、クラスオブジェクト（クラス拡張子オブジェクト含む）同士のコネクタの開始点、終了点を示す。○は、テーブルオブジェクトとクラスオブジェクト間のコネクタ（矢印）の開始点、終了点を示す。
【００８６】
例えば、テーブルオブジェクト７０１とＤＥＬＥＴＥコネクタ７０５の場合、テーブルオブジェクト７０１の「上中点」とＤＥＬＥＴＥを示す矢印７０５の終了点が接することを表している。
【００８７】
また、例えば、クラスオブジェクト７０２とＤＥＬＥＴＥコネクタ７０５の場合、クラ
スオブジェクト７０２の「上中点」とＤＥＬＥＴＥを示す矢印７０５の開始点が接することを表している。
【００８８】
また、例えば、ＥＴオブジェクト７０３とＤＥＬＥＴＥコネクタ７０５の場合、ＥＴ７０３の「上中点」とＤＥＬＥＴＥを示す矢印７０５の終了点が接し、「下中点」とＤＥＬＥＴＥを示す矢印７０５の開始点が接し、「右中点」とＤＥＬＥＴＥを示す矢印７０５の終了点が接することを表している。
【００８９】
図７Ｃは、図式化接点定義７１０に基づいて、テーブルオブジェクトとコネクタオブジェクト、クラスオブジェクトとコネクタオブジェクト、ＥＴオブジェクトとコネクタオブジェクト、及びＥＣオブジェクトとのコネクタオブジェクトを図式化した例を示す。
【００９０】
符号７１１は、テーブルオブジェクトに対してなされる処理（ＤＥＬＥＴＥ、ＩＮＳＥＲＴ、ＵＰＤＡＴＥ，ＳＥＬＥＣＴ）を図式化したイメージ概念である。符号７１２は、クラスオブジェクトがテーブルオブジェクトに対して行う処理（ＤＥＬＥＴＥ、ＩＮＳＥＲＴ、ＵＰＤＡＴＥ，ＳＥＬＥＣＴ）を図式化したイメージ概念である。
【００９１】
符号７１３は、テーブル拡張子（ＥＴ）とＤＥＬＥＴＥコネクタとの関係を図式化したイメージ概念である。符号７１４は、テーブル拡張子（ＥＴ）とＩＮＳＥＲＴコネクタとの関係を図式化したイメージ概念である。符号７１５は、テーブル拡張子（ＥＴ）とＵＰＤＡＴＥコネクタとの関係を図式化したイメージ概念である。符号７１６は、テーブル拡張子（ＥＴ）とＳＥＬＥＣＴコネクタとの関係を図式化したイメージ概念である。
【００９２】
符号７１７は、クラス拡張子（ＥＣ）とＤＥＬＥＴＥコネクタとの関係を図式化したイメージ概念である。符号７１８は、クラス拡張子（ＥＣ）とＩＮＳＥＲＴコネクタとの関係を図式化したイメージ概念である。符号７１９は、クラス拡張子（ＥＣ）とＵＰＤＡＴＥコネクタとの関係を図式化したイメージ概念である。符号７２０は、クラス拡張子（ＥＣ）とＳＥＬＥＣＴコネクタとの関係を図式化したイメージ概念である。
【００９３】
図７Ｄは、本実施形態におけるクラスマトリックスから、テーブルとクラスの関係を図式化するフローを示す。図７Ｅは、図７Ｄのフローに基づいて図式化されたテーブルとクラスの関係を示す。以下では、クラスマトリックス７３０を例に、図７Ｅを参照しながら、図７Ｄのフローを説明する。
【００９４】
まず、図式化処理部１１６ｃは、クラスマトリックス７３０の縦軸を構成する各テーブル名に対応するテーブルオブジェクトＴ１（７４１）、Ｔ１０（７４２）、Ｔ１１（７４３）を配置する（Ｓ５１）。
【００９５】
次に、図式化処理部１１６ｃは、クラスマトリックス７３０の横軸を構成するクラス名に対応するクラスオブジェクトＣ（７４４），Ｄ（７４５），Ｘ（７４６），Ｙ（７４７）を配置する（Ｓ５２）。
【００９６】
図式化処理部１１６ｃは、クラスマトリックスの組み合わせ［ｎ］（テーブル・クラスマトリックス７３０の場合、ｎ＝１〜１２）のうち、まず、組み合わせ［１］を処理対象とする（Ｓ５３）。本例では、組み合わせ［１］＝（Ｔ１，Ｃ）である。
【００９７】
図式化処理部１１６ｃは、組み合わせ［ｎ］のセル内のＤ／Ｉ／Ｕ／Ｓの記号を検出する（Ｓ５４）。本例では、組み合わせ［１］について、‘Ｓ’と‘Ｕ’の記号が検出される。なお、記号が検出されない場合には、Ｓ５９へ進む。
【００９８】
Ｓ５５で記号が検出された場合、図式化処理部１１６ｃは、その記号に基づいて、図式化接点定義７１０に従い拡張子とコネクタを追加し、図式化接点定義に従い接点結合する（Ｓ５６）。この例では検出された１つ目の記号‘Ｓ’（ＳＥＬＥＣＴ処理）について、次の（i）〜（v）を行う。
（i）処理対象のテーブルオブジェクトに、１つのテーブル拡張子オブジェクト（ＥＴ）を追加する。本例では、Ｔ１（７４１）にＥＴ（７５１）を追加する。
（ii）その処理対象のテーブルオブジェクトとそのテーブル拡張子オブジェクト（ＥＴ）を関係付けるためのＳＥＬＥＣＴコネクタを追加する。Ｔ１（７４１）の下中点を開始点、Ｔ１拡張子（７５１）の上中点を終了点とする。既にＴ１のテーブル拡張子が存在する場合は、そのテーブル拡張子同士を接合する。
（iii）処理対象のクラスオブジェクトに、１つのクラス拡張子オブジェクトを追加する。本例では、Ｃ（７４４）に、ＥＣ（７６２）を追加する。
（iv）その処理対象のクラスオブジェクトとそのクラス拡張子オブジェクト（ＥＣ）を関係づけるためのＳＥＬＥＣＴコネクタを追加する。Ｃ（７４４）の左中点を終了点、Ｃ拡張子（７５２）の右中点を開始点とする。既にＣのクラス拡張子が存在する場合は、そのクラス拡張子同士を接合する。
（v）処理対象のテーブルと処理対象のクラスを関係付けるためのＳＥＬＥＣＴコネクタを追加する。Ｔ１拡張子（７５１）の右中点を開始点、Ｃ拡張子（７６２）の下中点を終了点とする。
【００９９】
記号‘Ｓ’についてＳ５６の処理が終了したら、図式化処理部１１６ｃは、次の記号‘Ｕ’を処理対象として（Ｓ５７で「Ｎｏ」、Ｓ５８）、Ｓ５６を行う。Ｓ５４で検出したすべての記号についてＳ５６の処理が終了したら（Ｓ５７で「Ｙｅｓ」）、図式化処理部１１６ｃは次のテーブルを処理対象とする（Ｓ５９で「Ｎｏ」、Ｓ６０）。本例では、組み合わせ［２］＝（Ｔ１０，Ｃ）が次の処理対象となる。この組み合わせ［２］について、Ｓ５４〜５９を繰り返す。組み合わせ［３］についても同様にＳ５４〜Ｓ５９を繰り返す。クラスＣに対するテーブルの全組み合わせが終了したら（Ｓ５９で「Ｙｅｓ」）、次のクラスを処理対象とする（Ｓ６１で「Ｎｏ」、Ｓ６２）。本例では、次のクラスであるクラスＤが処理対象となる。このようにして、テーブルとクラスのすべての組み合わせ［１］〜［１２］について処理が終了したら（Ｓ６１で「Ｙｅｓ」）、本フローは終了する。
【０１００】
そうすると、図式化処理部１１６ｃは、図７Ｄのフローに基づいて図式化されたテーブルとクラスの関係図７４０を、ディスプレイまたはプリンタに出力する。このようにして、クラスマトリックスを視覚的に分かりやすくすることができる。その結果、テーブル構造変更時の影響範囲の把握が可能となる。
【０１０１】
なお、本実施形態では、一例としてクラスマトリックスの図式化について説明したが、ユーザマトリックス、クラス遷移図、その他のマトリックスも同様の手法により図式化することができる。
【０１０２】
図８Ａは、本実施形態におけるオンライン環境下でのエンティティマトリックス自動生成処理システムの例を示す。Ｗｅｂ  ＡＰ（ウェブアプリケーション）サーバ８０１には、運用システム８０２とエンティティマトリックス自動生成処理システム１１０ａを搭載している。同図では、エンティティマトリックス自動生成処理システム１１０ａは、オンラインかつリアルタイムで稼動する。
【０１０３】
運用システム８０２は、所定のプログラムにより実現されるシステムであって、そのソースプログラムには図２Ａ及び図２Ｂで説明したようにログ出力クラス２１１が実装してある。
【０１０４】
エンティティマトリックス自動生成処理システム１１０ａは、ログ解析処理部１１２、解析用ＲＤＢＭＳ１１３、クラス解析処理部１１４、ＳＱＬ解析処理部１１５、設計書作成処理部１１６を有する。
【０１０５】
運用システム８０２は、クライアント端末８３０から所定の操作を受け付けると、ＤＢサーバ８１０に問い合わせを行う。その問い合わせに応じて、ＤＢサーバ８１０は運用システム用ＲＤＢＭＳ８１１により所定の処理を行い、その処理結果を運用システム８０２に返信する。運用システム８０２は、その処理結果をクライアント端末８３０に返信する。このようにして、運用システム８０２は稼動し、その稼動結果を実行ログ１０９として出力する。
【０１０６】
実行ログ１０９はオンラインでリアルタイムにエンティティマトリックス自動生成処理システム１１０ａに送られる。実行ログ取得部８５１は、実行ログ１０９を読み込む。
すると、ログ解析処理部１１２は、記憶部８５２に格納された実行ログ定義ファイル１１１に基づいて、実行ログ１０９を解析してログ抽出情報を作成する。ログ解析処理部１１２は、ログ抽出情報をＤＢサーバ８２０の実行ログ解析用ＲＤＢＭＳ８２１に格納する。このログ抽出情報から、クラス解析処理部１１４、ＳＱＬ解析処理部１１５、および設計書作成処理部１１６により、クラス遷移図１１７およびマトリックス１１８が作成される。また、設計書作成処理部１１６は、記憶部８５２に格納された図式化接点定義７１０に基づいて、図式化された関係図１１９等の設計書を作成する。
【０１０７】
図８Ｂは、本実施形態におけるオフライン環境下でのエンティティマトリックス自動生成処理システムの例を示す。図８Ａと異なり、図８Ｂではエンティティマトリックス自動生成システム１１０ｂはＷｅｂ  ＡＰサーバ８０１とは独立している。そして、運用システム８０２とエンティティマトリックス自動生成システム１１０ｂとは通信ネットワーク等を介して接続されていない。
【０１０８】
図８Ｂにおいて、運用システム８０２から出力された実行ログ１０９は、人手によりエンティティマトリックス自動生成システム１１０ｂへ入力される以外は、図８Ａと同様である。
【０１０９】
図９は、本実施形態におけるエンティティマトリックス自動生成処理システム１１０のハードウェア環境の構成ブロック図である。同図においてエンティティマトリックス自動生成処理システム１１０は、制御部９０２、リードオンリメモリ（ＲＯＭ）９０３、ランダムアクセスメモリ（ＲＡＭ）９０６、通信インターフェース（以下、インターフェースをＩ／Ｆという）９０４、記憶装置９０７、出力Ｉ／Ｆ９０１、入力Ｉ／Ｆ９０５、可搬型記憶媒体の読み取り装置９０８等と、これらの全てが接続されたバス９０９、出力Ｉ／Ｆ９０１に接続している出力装置９１０、入力Ｉ／Ｆ９０５に接続している入力装置９１１によって構成されている。
【０１１０】
記憶装置９０７としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができる。このような記憶装置９０７またはＲＯＭ９０３には、上記の実施形態で用いたフローのプログラムが格納されている。また、記憶装置９０７には、実行ログ定義ファイル１１１、解析用ＲＤＢＭＳ１１３、図式化接点定義７１０が格納されている。なお、解析用ＲＤＢＭＳ１１３は、外部のＤＢサーバに格納してもよい。ＲＡＭ９０６は、作業用の記憶領域である。
【０１１１】
本実施形態にかかるプログラムは、制御部９０２を、ログ解析処理部１１２、クラス解析処理部１１４、ＳＱＬ解析処理部１１５、設計書作成処理部１１６として機能させるこ
とができる。このプログラムは、ネットワーク９１２を介してプログラム提供者側から提供されて、記憶装置９０７に格納してもよい。また、このプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体を読み取り装置９０８にセットし、制御部９０２によってそのプログラムを読み込んで実行してもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、フラッシュメモリなど様々な形式の記憶媒体を使用することができる。
【０１１２】
また、入力装置９１１には、キーボード、マウス、または電子カメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力装置９１０には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク９１２は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【０１１３】
このように、本実施形態によれば、アプリケーションソフトウェアが生成する実行ログから、用途に応じて決定される項目に基づいて、必要なログを抽出することができる。その抽出した実行ログから実際に実行された処理ルートについてクラスの動作遷移を分析することができる。
【０１１４】
また、抽出した実行ログから実際に実行されたＳＱＬ文を取り出し、ＳＱＬ文を構文解析しアクセスしたテーブルの情報を判別し分析することができる。実動作におけるクラス遷移図やプログラム実行によりアクセスされたテーブルについて、その分析結果に基づいて、クラスとテーブルとの関連、テーブルとユーザとの関連等のマトリックス図を作成することができる。
【０１１５】
なお、実行ログ出力はアプリケーションで生成するものであり、Ｊａｖａ（登録商標）、ＶＢ（ビジュアルベーシック）やＣなど言語には依存しない。また、本実施形態はＷｅｂアプリケーションに限定されず、クライアント・サーバシステム、バッチシステム等のシステムでも実行することができる。
【０１１６】
従来のログは、主に各アプリケーションのロジックの履歴を残す事が中心であり、実行ログを追跡しても、どのユーザが行った操作かの判別できない場合が多い。しかしながら、本実施形態によれば、アプリケーションソフトのソースプログラムに出力ログクラスのメソッドをコーディングしている。これにより、通常のログだけでなく、プログラム構造の構成要素であるクラス名及びメソッド名、実行時に与えられる利用ユーザ名、実行時にＲＤＢＭＳに命令として出力したＳＱＬ文などの規定の項目を同時に実行ログとして出力することができる。
【０１１７】
また、従来のログ解析においては、多量のログの中から解析に必要な部分を手作業で取り出す作業を繰返し、必要な情報を全て集めてから解析を開始する事が多い。しかしながら、本実施形態によれば、プログラム動作時に生成する実行ログから、目的とする分析を行う為に必要なログ（行）を取り出して、必要な項目を抽出することができる。
【０１１８】
そのようにして抽出されたログから、プログラム構造の構成要素であるオブジェクトクラスが、利用者の操作によって実際にどのような順番で実行されたかを分析することができる。
【０１１９】
また、そのようにして抽出されたログの中のＳＱＬ文は、ＲＤＢＭＳに対するＳＱＬ命令であり、プログラムロジックで生成した結果である。よって、このＳＱＬ文を構文解析し、操作対象のテーブル情報を判定することができる。
【０１２０】
そうして、これらのデータ（クラス解析結果とＳＱＬ文解析結果）を用いて、人が見て判りやすい表形式のマトリックス表として、クラス遷移、クラス・エンティティマトリックス、ユーザ・エンティティマトリックスなどを出力することができる。
【０１２１】
また、本実施形態によれば、オンライン環境、オフライン環境のいずれの環境においても実行ログの解析を可能とすることができる。
本明細書で開示したシステム、または既存のシステムにおいて本明細書で開示したプログラムにより解析可能な実行ログを出力しているシステムにおいては、以下の効果がある。（１）試験工程での動作確認において、仕様との整合の明確化を図ることができる。（２）システムエンハンスなど、担当者が変わった時であっても、既存システムを正確に把握することができる。（３）テーブル構造変更時の影響範囲の把握が可能となる。（４）システム改造等において、現状動作を正しく把握し、テーブル、プログラム変更規模の見積もり精度を向上させることができる。（５）稼動中のシステムにおいては、ユーザ操作の履歴追跡が可能であり、セキュリティ上のアクセス履歴として利用できる。
【０１２２】
本明細書に開示のシステムは、新規アプリケーションソフトウェアの開発において要求通りの動作ができているか否かを検証する場面で利用するものである。また、アプリケーションソフトウェアの改造において稼動中の既存システムの動作を把握する場面で利用するものである。
【０１２３】
また、通常、実行ログ解析は不具合の調査や統計的利用の局面での利用される事が多い。そこで、本実施形態では、実行ログの利用シーンとして、システム構造解析やセキュリティ上のアクセス履歴追跡などソフトウェア開発の上流工程の改善のために用いることができるようにする。
【０１２４】
また、本明細書に開示の実行ログ解析においては、実動作により実際に選択されたルートやＳＱＬ文を確実に知ることができる。しかしながら、その選択されたルートは網羅的ではなく、実際に動作したルートのみである。よって利用の場面においては、従来技術と本明細書に開示の技術との２つの解析方法の両方を適用することにより、システムの動作を短期間で確実に把握可能となる。
【０１２５】
なお、本明細書に開示のシステムは、以上に述べた実施の形態に限定されるものではなく、本明細書に開示の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１２６】
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
ソフトウェアの設計書の作成をコンピュータに実行させる設計書作成プログラムであって、
少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得する実行ログ取得処理と、
前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成するログ抽出処理と、
前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬ
の操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得するＳＱＬ解析処理と、
前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する設計書作成処理と、
を、コンピュータに実行させることを特徴とする設計書作成プログラム。
（付記２）
前記設計書作成処理は、さらに、
前記テーブル・クラス関係表に基づいて、少なくとも、前記テーブル名に対応するテーブルを図式化したテーブルオブジェクトと、前記クラス名に対応するクラスを図式化したクラスオブジェクトと、前記各ＳＱＬデータ操作言語に対応し該オブジェクト間を接続する図式化されたコネクタと、に基づいて、前記テーブル・クラス関係表を図式化する
ことを特徴とする付記１に記載の設計書作成プログラム。
（付記３）
前記テーブルオブジェクトに対する前記ＳＱＬデータ操作言語については、前記コネクタの始点、終点、及び該テーブルオブジェクトとの接点位置の組み合わせによって定義され、前記クラスオブジェクトに対する該ＳＱＬデータ操作言語については、該コネクタの始点、終点、及び該クラスオブジェクトとの接点位置との組み合わせによって定義された図式化接点定義に基づいて、前記設計書作成処理は、前記テーブル・クラス関係表を図式化する
ことを特徴とする付記２に記載の設計書作成プログラム。
（付記４）
前記設計書作成プログラムは、さらに、
前記ログ抽出情報から前記処理種別が操作開始または処理開始を示す情報を有するログを抽出し、該各ログから前記シーケンス番号と前記クラス名と該処理種別と前記処理内容情報とのデータ項目を選択したログを、クラスの遷移を解析するためのクラス遷移情報として取得するクラス解析処理、
をコンピュータに実行させ、
前記設計書作成処理は、さらに、
前記クラス遷移情報から前記クラス名を重複なく取得し、前記クラス遷移情報から前記処理内容情報を取得し、該クラス名と該処理内容情報との組み合わせを表すマトリックスを作成し、該クラス遷移情報内の前記処理種別を前記シーケンス番号順に検索して該処理種別に操作開始が現れる毎に該各検索した処理種別に対応するクラス名に採番し、前記作成したマトリックスの対応する位置に該採番した番号を配置することにより、前記設計書としてクラス遷移表を作成する
ことを特徴とする付記１に記載の設計書作成プログラム。
（付記５）
前記ログ抽出情報には、さらに、前記操作開始の要求の指示をしたユーザ名が含まれ、
前記設計書作成処理は、さらに、
前記ログ抽出情報から前記ＳＱＬを含む前記ログの有する前記ユーザ名を重複なく取得し、前記ＳＱＬ解析情報から前記テーブル名を重複なく取得し、該ユーザ名と該テーブル名との組み合わせを表すマトリックスを作成し、該ユーザ名毎に、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・ユーザ関係表を作成する
ことを特徴とする付記１に記載の設計書作成プログラム。
（付記６）
前記ログ抽出処理は、少なくとも、実行ログ情報から抽出するログを特定する抽出キーワード、該抽出した各ログに含まれる項目のうちいずれを取得する抽出するかが定義され
た実行ログ定義情報に基づいて、前記取得した実行ログ情報から前記抽出情報を生成する
ことを特徴とする付記１に記載の設計書作成プログラム。
（付記７）
前記ログを出力するプログラムは、ユーザからの操作を受け付ける操作受付クラスのオブジェクトメソッドと、業務処理を行う業務処理クラスのオブジェクトメソッドと、ＳＱＬの発行処理を行うＳＱＬクラスのオブジェクトメソッドとを構成に含むプログラムである
ことを特徴とする付記１に記載の設計書作成プログラム。
（付記８）
ソフトウェアの設計書の作成を支援する設計書作成装置であって、
少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得する実行ログ取得手段と、
前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成するログ抽出手段と、
前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得するＳＱＬ解析手段と、
前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する設計書作成手段と、
を備えることを特徴とする設計書作成装置。
（付記９）
前記設計書作成手段は、さらに、
前記テーブル・クラス関係表に基づいて、少なくとも、前記テーブル名に対応するテーブルを図式化したテーブルオブジェクトと、前記クラス名に対応するクラスを図式化したクラスオブジェクトと、前記各ＳＱＬデータ操作言語に対応し該オブジェクト間を接続する図式化されたコネクタと、に基づいて、前記テーブル・クラス関係表を図式化する
ことを特徴とする付記８に記載の設計書作成装置。
（付記１０）
前記テーブルオブジェクトに対する前記ＳＱＬデータ操作言語については、前記コネクタの始点、終点、及び該テーブルオブジェクトとの接点位置の組み合わせによって定義され、前記クラスオブジェクトに対する該ＳＱＬデータ操作言語については、該コネクタの始点、終点、及び該クラスオブジェクトとの接点位置との組み合わせによって定義された図式化接点定義に基づいて、前記設計書作成手段は、前記テーブル・クラス関係表を図式化する
ことを特徴とする付記９に記載の設計書作成装置。
（付記１１）
前記設計書作成装置は、さらに、
前記ログ抽出情報から前記処理種別が操作開始または処理開始を示す情報を有するログを抽出し、該各ログから前記シーケンス番号と前記クラス名と該処理種別と前記処理内容情報とのデータ項目を選択したログを、クラスの遷移を解析するためのクラス遷移情報として取得するクラス解析手段、
を備え、
前記設計書作成手段は、さらに、
前記クラス遷移情報から前記クラス名を重複なく取得し、前記クラス遷移情報から前記処理内容情報を取得し、該クラス名と該処理内容情報との組み合わせを表すマトリックスを作成し、該クラス遷移情報内の前記処理種別を前記シーケンス番号順に検索して該処理種別に操作開始が現れる毎に該各検索した処理種別に対応するクラス名に採番し、前記作成したマトリックスの対応する位置に該採番した番号を配置することにより、前記設計書としてクラス遷移表を作成する
ことを特徴とする付記８に記載の設計書作成装置。
（付記１２）
前記ログ抽出情報には、さらに、前記操作開始の要求の指示をしたユーザ名が含まれ、
前記設計書作成手段は、さらに、
前記ログ抽出情報から前記ＳＱＬを含む前記ログの有する前記ユーザ名を重複なく取得し、前記ＳＱＬ解析情報から前記テーブル名を重複なく取得し、該ユーザ名と該テーブル名との組み合わせを表すマトリックスを作成し、該ユーザ名毎に、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・ユーザ関係表を作成する
ことを特徴とする付記８に記載の設計書作成装置。
（付記１３）
前記ログ抽出手段は、少なくとも、実行ログ情報から抽出するログを特定する抽出キーワード、該抽出した各ログに含まれる項目のうちいずれを取得する抽出するかが定義された実行ログ定義情報に基づいて、前記取得した実行ログ情報から前記抽出情報を生成する
ことを特徴とする付記８に記載の設計書作成装置。
（付記１４）
前記ログを出力するプログラムは、ユーザからの操作を受け付ける操作受付クラスのオブジェクトメソッドと、業務処理を行う業務処理クラスのオブジェクトメソッドと、ＳＱＬの発行処理を行うＳＱＬクラスのオブジェクトメソッドとを構成に含むプログラムである
ことを特徴とする付記８に記載の設計書作成装置。
（付記１５）
ソフトウェアの設計書の作成をする設計書作成方法であって、
少なくとも、クラス名及びメソッド名と、該操作受付クラスの実行開始を示す操作開始、該業務処理クラスの実行開始を示す処理開始、及びＳＱＬの発行を示すＳＱＬ発行のいずれかを示す処理種別と、該処理種別に対応して実行された処理内容を示す処理内容情報と、をログとして出力するように実装されたプログラムの実行によって出力された複数のログからなる実行ログ情報を取得し、
前記取得した実行ログ情報から、少なくとも、前記クラス名、前記メソッド名、前記処理種別、及び前記処理内容情報の項目を選択したログを抽出し、該抽出した各ログに時系列順にシーケンス番号を付与した情報であるログ抽出情報を生成し、
前記ログ抽出情報から前記処理種別が前記ＳＱＬ発行を示すログを抽出し、該ログの有する処理内容情報から該ＳＱＬの内容を解析し、該ＳＱＬのデータ操作言語毎に該ＳＱＬの操作対象のテーブル名と該ＳＱＬを発行した旨を示すログに付与された前記シーケンス番号とを関連付けた情報を、ＳＱＬ解析情報として取得し、
前記ログ抽出情報から前記ＳＱＬを含むログの有する前記クラス名を取得し、前記ＳＱＬ解析情報から前記テーブル名を取得し、該クラス名と該テーブル名との組み合わせを表すマトリックスを作成し、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・クラス関係表を作成する、
ことを特徴とする設計書作成方法。
（付記１６）
前記設計書作成方法は、さらに、
前記テーブル・クラス関係表に基づいて、少なくとも、前記テーブル名に対応するテーブルを図式化したテーブルオブジェクトと、前記クラス名に対応するクラスを図式化したクラスオブジェクトと、前記各ＳＱＬデータ操作言語に対応し該オブジェクト間を接続する図式化されたコネクタと、に基づいて、前記テーブル・クラス関係表を図式化する
ことを特徴とする付記１５に記載の設計書作成方法。
（付記１７）
前記テーブルオブジェクトに対する前記ＳＱＬデータ操作言語については、前記コネクタの始点、終点、及び該テーブルオブジェクトとの接点位置の組み合わせによって定義され、前記クラスオブジェクトに対する該ＳＱＬデータ操作言語については、該コネクタの始点、終点、及び該クラスオブジェクトとの接点位置との組み合わせによって定義された図式化接点定義に基づいて、前記テーブル・クラス関係表を図式化する
ことを特徴とする付記１６に記載の設計書作成方法。
（付記１８）
前記設計書作成方法において、さらに、
前記ログ抽出情報から前記処理種別が操作開始または処理開始を示す情報を有するログを抽出し、該各ログから前記シーケンス番号と前記クラス名と該処理種別と前記処理内容情報とのデータ項目を選択したログを、クラスの遷移を解析するためのクラス遷移情報として取得し、
前記クラス遷移情報から前記クラス名を重複なく取得し、前記クラス遷移情報から前記処理内容情報を取得し、該クラス名と該処理内容情報との組み合わせを表すマトリックスを作成し、該クラス遷移情報内の前記処理種別を前記シーケンス番号順に検索して該処理種別に操作開始が現れる毎に該各検索した処理種別に対応するクラス名に採番し、前記作成したマトリックスの対応する位置に該採番した番号を配置することにより、前記設計書としてクラス遷移表を作成する
ことを特徴とする付記１５に記載の設計書作成方法。
（付記１９）
前記ログ抽出情報には、さらに、前記操作開始の要求の指示をしたユーザ名が含まれ、
前記ログ抽出情報から前記ＳＱＬを含む前記ログの有する前記ユーザ名を重複なく取得し、前記ＳＱＬ解析情報から前記テーブル名を重複なく取得し、該ユーザ名と該テーブル名との組み合わせを表すマトリックスを作成し、該ユーザ名毎に、前記シーケンス番号に基づいて、前記ＳＱＬデータ操作言語を特定する記号を該マトリックスに配置することにより、前記設計書としてテーブル・ユーザ関係表を作成する
ことを特徴とする付記１５に記載の設計書作成方法。
（付記２０）
前記ログの抽出において、少なくとも、実行ログ情報から抽出するログを特定する抽出キーワード、該抽出した各ログに含まれる項目のうちいずれを取得する抽出するかが定義された実行ログ定義情報に基づいて、前記取得した実行ログ情報から前記抽出情報を生成する
ことを特徴とする付記１５に記載の設計書作成方法。
（付記２１）
前記ログを出力するプログラムは、ユーザからの操作を受け付ける操作受付クラスのオブジェクトメソッドと、業務処理を行う業務処理クラスのオブジェクトメソッドと、ＳＱＬの発行処理を行うＳＱＬクラスのオブジェクトメソッドとを構成に含むプログラムである
ことを特徴とする付記１５に記載の設計書作成方法。
【図面の簡単な説明】
【０１２７】
【図１】本実施形態における実行ログによるエンティティマトリックス自動生成処理システムの全体のフローを示す。
【図２Ａ】本実施形態におけるソースプログラム１０１の構成の概要を示す。
【図２Ｂ】図２ＡのクラスＡ，Ｂ，Ｃに対応するソースプログラムの実装例である。
【図３】本実施形態におけるログ解析処理部１１２で実行される処理概要を示す。
【図４】本実施形態におけるクラス解析処理部１１４で実行される処理概要を示す。
【図５】本実施形態におけるＳＱＬ解析処理部１１５で実行される処理概要を示す。
【図６Ａ】本実施形態における設計書作成処理部１１６のクラス遷移作成処理部１１６ａで実行されるクラス遷移図作成処理の概要を示す。
【図６Ｂ】本実施形態における設計書作成処理部１１６のマトリックス作成処理部１１６ｂで実行されるエンティティマトリックス作成処理の概要を示す。
【図７Ａ】本実施形態における図式化オブジェクトの一例を示す。
【図７Ｂ】本実施形態における図式化オブジェクトの図式化接点定義７１０を示す。
【図７Ｃ】図式化接点定義７１０に基づいて、テーブルオブジェクトとコネクタオブジェクト、クラスオブジェクトとコネクタオブジェクト、ＥＴオブジェクトとコネクタオブジェクト、及びＥＣオブジェクトとのコネクタオブジェクトを図式化した例を示す。
【図７Ｄ】本実施形態におけるクラスマトリックスから、テーブルとクラスの関係を図式化するフローを示す。
【図７Ｅ】図７Ｄのフローに基づいて図式化されたテーブルとクラスの関係を示す。
【図８Ａ】本実施形態におけるオンライン環境下でのエンティティマトリックス自動生成処理システムの例を示す。
【図８Ｂ】本実施形態におけるオフライン環境下でのエンティティマトリックス自動生成処理システムの例を示す。
【図９】本実施形態におけるエンティティマトリックス自動生成処理システム１１０のハードウェア環境の構成ブロック図である。
【図１０】従来におけるソフトウェア開発の概念図である。
【符号の説明】
【０１２８】
１０１  ソースプログラム
１０８  ログ出力レベル定義
１０９  実行ログ
１１０  エンティティマトリックス自動生成システム
１１１  実行ログ定義ファイル
１１２  ログ解析処理部
１１３  解析用ＲＤＢＭＳ
１１４  クラス解析処理部
１１５  ＳＱＬ解析処理部
１１６  設計書作成処理部
１１６ａ  クラス遷移作成処理部
１１６ｂ  マトリックス作成処理部
１１６ｃ  図式化処理部
３０１  ログ抽出テーブル
４０１  クラス遷移テーブル
６０１  クラス遷移図
６０２  クラスマトリックス
６０３  ユーザマトリックス
７１０  図式化接点定義
８５１  実行ログ取得部
８５２  記憶部
【図１】
0005045517.tif 000002
【図２Ａ】
0005045517.tif 000003
【図２Ｂ】
0005045517.tif 000004
【図７Ｄ】
0005045517.tif 000005
【図３】
0005045517.tif 000006
【図４】
0005045517.tif 000007
【図５】
0005045517.tif 000008
【図６Ａ】
0005045517.tif 000009
【図６Ｂ】
0005045517.tif 000010
【図７Ａ】
0005045517.tif 000011
【図７Ｂ】
0005045517.tif 000012
【図７Ｃ】
0005045517.tif 000013
【図７Ｅ】
0005045517.tif 000014
【図８Ａ】
0005045517.tif 000015
【図８Ｂ】
0005045517.tif 000016
【図９】
0005045517.tif 000017
【図１０】
0005045517.tif 000018