(57)【特許請求の範囲】
【請求項１】
開発対象ソフトウェアのコンポーネントの要素であるサービスインタフェース、テーブル及びそれらの間の依存関係に関する定義データを格納するコンポーネント要素定義記憶部、前記依存関係に関して不正な依存関係を規定するポリシーデータを格納する依存関係ポリシー記憶部、前記ポリシーに反する依存関係を改善する案を格納する改善策記憶部、及び前記依存関係ポリシー記憶部に格納されている前記不正な依存関係を規定するポリシーデータを用いて、前記コンポーネント要素定義記憶部に格納されている前記依存関係の中から前記ポリシーに反する依存関係を検出し、前記改善策記憶部に格納されている前記ポリシーに反する依存関係を改善する案を用いて、検出した前記ポリシーに反する依存関係の改善案の候補を出力する依存関係分析部を有することを特徴とするコンポーネント分割支援装置。
【請求項２】
前記コンポーネント要素定義記憶部に格納されている前記定義データの各々に対して、前記定義データの変更の可否を示す定義固定フラグを設け、前記依存関係分析部は、前記ポリシーに反する依存関係を検出するにあたって、前記ポリシーに反する依存関係及び該依存関係に関係する前記コンポーネントの要素の定義データの少なくとも一つに対応して前記定義固定フラグが前記定義データの変更の否を示すとき、前記ポリシーに反する依存関係の検出対象から除外することを特徴とする請求項１に記載のコンポーネント分割支援装置。
【請求項３】
前記コンポーネント要素定義記憶部に格納されている前記定義データの各々に対して、前記定義データの変更の可否を示す定義固定フラグを設け、前記依存関係分析部は、前記検出したポリシーに反する依存関係の改善策の候補を出力するにあたって、前記定義固定フラグが前記定義データの変更の否を示す定義データを変更する改善策を前記改善策の候補から除外することを特徴とする請求項１に記載のコンポーネント分割支援装置。
【請求項４】
前記依存関係ポリシー記憶部に格納されている前記不正な依存関係を規定するポリシーデータの各々に対して評価点を設け、前記依存関係分析部は、前記評価点を用いて、検出した前記ポリシーに反する依存関係の改善案の前記候補の改善度合いを示す評価点と共に前記候補を出力することを特徴とする請求項１に記載のコンポーネント分割支援装置。
【請求項５】
開発対象ソフトウェアのコンポーネントの要素であるサービスインタフェース、テーブル及びそれらの間の依存関係に関する定義データ、前記依存関係に関して不正な依存関係を規定するポリシーデータ、及び前記ポリシーに反する依存関係を改善する案を格納する記憶装置と、前記依存関係に関する定義データを登録要求する入力装置と、前記入力装置からの前記依存関係に関する定義データを登録要求に応じて、前記不正な依存関係を規定するポリシーデータを用いて、前記登録要求された依存関係が前記ポリシーに反する依存関係であるか否かを判定し、前記登録要求された依存関係が前記ポリシーに反する依存関係であると判定したときに、前記ポリシーに反する依存関係を改善する案を用いて、前記ポリシーに反する依存関係の改善案の候補を求めるプロセッサと、前記求めた改善案の候補を出力する表示装置とを有することを特徴とするコンポーネント分割支援装置。
【請求項６】
前記記憶装置は、前記定義データの各々に対して、前記定義データの変更の可否を示す定義固定フラグを格納し、前記プロセッサは、前記ポリシーに反する依存関係を検出するにあたって、前記ポリシーに反する依存関係及び該依存関係に関係する前記コンポーネントの要素の定義データの少なくとも一つに対応して、前記記憶装置に格納されている前記定義固定フラグが前記定義データの変更の否を示すとき、前記ポリシーに反する依存関係の検出対象から除外することを特徴とする請求項５に記載のコンポーネント分割支援装置。
【請求項７】
前記記憶装置は、前記定義データの各々に対して、前記定義データの変更の可否を示す定義固定フラグを格納し、前記プロセッサは、前記判定したポリシーに反する依存関係の改善策の候補を出力するにあたって、前記記憶装置に格納されている、前記定義固定フラグが前記定義データの変更の否を示す定義データを変更する改善策を前記改善策の候補から除外することを特徴とする請求項５に記載のコンポーネント分割支援装置。
【請求項８】
入力装置が、開発対象ソフトウェアのコンポーネントの要素であるサービスインタフェース、テーブル及びそれらの間の依存関係に関する定義データの登録要求の入力を受け付け記憶装置に格納し、プロセッサが、前記依存関係に関する定義データを登録要求に応じて、記憶装置に格納されている、前記定義データ、前記依存関係に関して不正な依存関係を規定するポリシーデータを用いて、前記登録要求された依存関係が前記ポリシーに反する依存関係であるか否かを判定し、前記登録要求された依存関係が前記ポリシーに反する依存関係であると判定したときに、前記記憶装置に格納されている、前記ポリシーに反する依存関係を改善する改善案データを用いて、前記ポリシーに反する依存関係の改善案の候補を求め、前記求めた改善案の候補を表示装置に出力することを特徴とするコンポーネント分割支援方法。
【請求項９】
前記プロセッサは、前記定義データの各々に対応付けられた、前記定義データの変更の可否を示す定義固定フラグを用いて、前記ポリシーに反する依存関係を検出するにあたって、前記ポリシーに反する依存関係及び該依存関係に関係する前記コンポーネントの要素の定義データの少なくとも一つに対応した前記定義固定フラグが前記定義データの変更の否を示すとき、前記ポリシーに反する依存関係の検出対象から除外することを特徴とする請求項８に記載のコンポーネント分割支援方法。
【請求項１０】
前記プロセッサは、前記定義データの各々に対応付けられた、前記定義データの変更の可否を示す定義固定フラグを用いて、前記判定したポリシーに反する依存関係の改善策の候補を出力するにあたって、前記定義固定フラグが前記定義データの変更の否を示す定義データを変更する改善策を前記改善策の候補から除外することを特徴とする請求項８に記載のコンポーネント分割支援方法。
【請求項１１】
記憶装置に格納されている、開発対象ソフトウェアのコンポーネントの要素であるサービスインタフェース、テーブル及びそれらの間の依存関係に関する定義データ、前記依存関係に関して不正な依存関係を規定するポリシーデータ、及び前記ポリシーに反する依存関係を改善する改善案データを用いて、前記依存関係に関する定義データの登録要求を入力し、前記依存関係に関する定義データを登録要求に応じて、前記不正な依存関係を規定するポリシーデータを用いて、前記登録要求された依存関係が前記ポリシーに反する依存関係であるか否かを判定し、前記登録要求された依存関係が前記ポリシーに反する依存関係であると判定したときに、前記ポリシーに反する依存関係を改善する改善案データを用いて、前記ポリシーに反する依存関係の改善案の候補を求め、前記求めた改善案の候補を出力する手順をコンピュータに実行させることを特徴とするコンポーネント分割支援プログラム。
【請求項１２】
前記定義データの各々に対応付けられた、前記定義データの変更の可否を示す定義固定フラグを用いて、前記ポリシーに反する依存関係を検出するにあたって、前記ポリシーに反する依存関係及び該依存関係に関係する前記コンポーネントの要素の定義データの少なくとも一つに対応した前記定義固定フラグが前記定義データの変更の否を示すとき、前記ポリシーに反する依存関係の検出対象から除外する手順をコンピュータに実行させることを特徴とする請求項11に記載のコンポーネント分割支援プログラム。
【請求項１３】
前記定義データの各々に対応付けられた、前記定義データの変更の可否を示す定義固定フラグを用いて、前記判定したポリシーに反する依存関係の改善策の候補を出力するにあたって、前記定義固定フラグが前記定義データの変更の否を示す定義データを変更する改善策を前記改善策の候補から除外する手順をコンピュータに実行させることを特徴とする請求項11に記載のコンポーネント分割支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを利用したソフトウェアの開発において、ソフトウェア開発者が実施するコンポーネント分割を支援する装置、及びその方法とプログラムに関する。
【背景技術】
【０００２】
ソフトウェアの開発では、開発対象のソフトウェアを、要求仕様が決まった直後にコンポーネントに分割することが多い。ここでコンポーネントとは、最終的にプログラムとして実装される機能と、コンポーネント内部に隠蔽される機能をコンポーネント外部から参照できるようにするためのサービスインタフェース、コンポーネントの機能が扱うデータ（データベースを利用したソフトウェア開発の場合、データはデータベースのテーブルである。）を要素として有する論理的なモジュールのことである。ここでコンポーネント分割とは、要求仕様などで定義される機能やデータを構造化し、コンポーネントの要素であるコンポーネントの機能、サービスインタフェース及びテーブルへ変換し、これらをまとめてコンポーネントを構成することである。
【０００３】
開発対象が大規模なソフトウェアを開発する際には、コンポーネント分割によって最終的にプログラムとして実装される多くの機能やそれらの機能で利用するデータを、開発の初期段階でコンポーネントして整理することができ、最終的に品質の高いソフトウェアを開発できるようになる。また、コンポーネント分割した単位に開発者を組織し、コンポーネント単位で開発を進めることができるため、開発を実施しやすくする。しかし、コンポーネント分割の仕方によっては、コンポーネント間に依存関係ができるなどにより、最終的に品質の低いソフトウェアが作られたり、コンポーネント単位の開発も難しくなる。
【０００４】
特許文献１では、ソフトウェア開発後に開発したプログラムのモジュール分割を評価する方法を提案している。特許文献１では、所与のプログラムのソースコードを分析し、モジュールとしてクラスを対象とし、さらにモジュール間の依存関係（メソッド同士の呼び出しなど）を分析し、所定の算式によって各種依存関係に対する評価値を算出する。これによって、従来、主観に頼りがちだったモジュール分割に対して、妥当なモジュール分割であるかどうかの客観的評価の判断材料を与える。
【０００５】
【特許文献１】特開2000-215045
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１では、ソースコードが存在するプログラムのモジュール分割を評価する技術が開示されている。しかし、これから開発するソフトウェアのコンポーネント分割を支援することに関しては、特許文献1ではその技術の外としている。
【０００７】
コンポーネント単位でのソフトウェア開発を行いやすく、かつ最終的に品質の高いソフトウェアを作れるようにするために、それらの阻害要因となる依存関係の有無などを予めポリシーとして規定しておき、規定したポリシーに反しないようにコンポーネント分割を行うようにすることが考えられる。ただし、要求仕様の数が多くなればなるほど、コンポーネント分割のパターンも多くなり、全てのポリシーに反しないようなコンポーネント分割のパターンを選択することは難しい。
【０００８】
また、コンポーネント分割後に、要求仕様が追加・変更されることによってコンポーネントを再分割する必要が生じることがある。この際、既に分割済みのコンポーネントとその要素への影響を少なくし、かつポリシーに反しないようにコンポーネントを再分割することは、既存のコンポーネントの数と要求仕様の追加・変更の数が多いほど難しくなる。
【０００９】
本発明の目的は、コンポーネント分割の際にポリシーに反するコンポーネント要素間の依存関係を検出し、検出した不正依存関係に対する改善策の候補を出力する、コンポーネント分割支援装置、及びその方法とプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明のコンポーネント分割支援装置は次のような態様である。開発対象ソフトウェアのコンポーネントの要素であるサービスインタフェース、テーブル及びそれらの間の依存関係に関する定義データを格納するコンポーネント要素定義記憶部、前記依存関係に関して不正な依存関係を規定するポリシーデータを格納する依存関係ポリシー記憶部、ポリシーに反する依存関係を改善する案を格納する改善策記憶部、及び依存関係ポリシー記憶部に格納されている不正な依存関係を規定するポリシーデータを用いて、コンポーネント要素定義記憶部に格納されている依存関係の中からポリシーに反する依存関係を検出し、改善策記憶部に格納されている前記ポリシーに反する依存関係を改善する案を用いて、検出したポリシーに反する依存関係の改善案の候補を出力する依存関係分析部を有する。
【００１１】
本発明の他の態様は、入力装置、表示装置、記憶装置及びプロセッサを有するコンピュータにより、上記各記憶部の内容が記憶装置に格納され、上記依存関係分析部の処理をプロセッサで実行するコンポーネント分割支援方法及びそのプログラムである。
【発明の効果】
【００１２】
本発明によれば、開発対象ソフトウェアのコンポーネント分割において、ユーザは依存関係ポリシーに反するコンポーネント要素間の依存関係を確認することができる。また不正依存関係に対する改善策が出力されるので、コンポーネント分割作業が容易になる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を詳細に説明する。本実施形態に係るコンポーネント分割支援装置100は、図１に示すようにコンポーネント要素定義編集部102、コンポーネント要素定義操作部104、改善策適用部106、依存関係分析部108、コンポーネント要素定義記憶部150、改善策記憶部170、依存関係ポリシー記憶部180、及び依存関係分析結果記憶部190を有する。図中の矢印は構成要素間におけるデータの流れを示す。
【００１４】
コンポーネント分割支援装置100は、図２に示すように、CPU(プロセッサ) 201、主記憶装置（メモリ）202、入力装置203、表示装置204、及び外部記憶装置205を有する計算機システムを用いて実現される。
【００１５】
コンポーネント要素定義記憶部150、改善策記憶部170、依存関係ポリシー180および依存関係分析結果記憶部190は、外部記憶装置205に記憶され、CPU201によるプログラムの実行に伴って、主記憶装置202との間でデータの読み書きが行われる。コンポーネント要素定義編集部102、コンポーネント要素定義操作部104、改善策適用部106および依存関係分析部108は、主記憶装置202に格納され、CPU201によって実行されるプログラムである。
【００１６】
図3に、コンポーネント要素定義記憶部150、改善策記憶部170、依存関係ポリシー180および依存関係分析結果記憶部190の構成を示す。
【００１７】
図3（a）に示すコンポーネント要素定義記憶部150は、コンポーネント定義3000、サービスインタフェース定義3050、テーブル定義3100、コンポーネント間依存関係定義3150、サービスインタフェース間依存関係定義3200、サービスインタフェース・テーブル依存関係定義3250およびテーブル間依存関係定義3300を有する。
【００１８】
コンポーネント定義3000は、コンポーネントの定義データを格納するためのテーブルである。コンポーネント定義3000は、図８にコンポーネント定義3000によって定義されるデータの一例を示すように、コンポーネント定義3000によって定義するデータを一意に識別するためのコンポーネントID 802と、コンポーネントの名前を表すコンポーネント名804を有する。
【００１９】
サービスインタフェース定義3050は、コンポーネント定義3000で定義されるコンポーネントに属するサービスインタフェースの定義データを格納するためのテーブルである。サービスインタフェースとは、コンポーネント内部にあり、かつコンポーネント外部から隠蔽される（最終的にプログラムとなる）機能を、コンポーネント外部から参照できるようにするためのインタフェースである。サービスインタフェース定義3050は、図９にサービスインタフェース定義3050によって定義されるデータの一例を示すように、サービスインタフェース定義3050によって定義するデータを一意に識別するためのサービスインタフェースID 902、サービスインタフェースの名前を表すサービスインタフェース名904、サービスインタフェースが属するコンポーネントを指定するための所属コンポーネントID 906、及びこのサービスインタフェース定義のデータ変更の可否を示す定義固定フラグ908を有する。
【００２０】
テーブル定義3100は、コンポーネント定義3000で定義されるコンポーネントに属するテーブルの定義データを格納するためのテーブルである。テーブル定義3100は、図１０にテーブル定義3100によって定義されるデータの一例を示すように、テーブル定義3100によって定義するデータを一意に識別するためのテーブルID 1002、テーブルの名前を表すテーブル名1004、テーブルが属するコンポーネントを指定するための所属コンポーネントID 1006、及びこのテーブル定義のデータ変更の可否を示す定義固定フラグ1008を有する。
【００２１】
コンポーネント間依存関係定義3150は、コンポーネント定義3000で定義される任意の２つのコンポーネント間の依存関係の定義データを格納するためのテーブルである。コンポーネント間依存関係定義3150は、図１１にコンポーネント間依存関係定義3150によって定義されるデータの一例を示すように、コンポーネント間依存関係3150によって定義するデータを一意に識別するためのコンポーネント間依存関係ID 1102、コンポーネント間依存関係の関連元（依存元）のコンポーネントのデータを指定するための関連元コンポーネントID 1104、及びコンポーネント依存関係の関連先(依存先)のコンポーネントを指定するための関連先コンポーネントID 1106を有する。
【００２２】
サービスインタフェース間依存関係定義3200は、サービスインタフェース定義3050で定義される任意の２つのサービスインタフェース間の依存関係の定義データを格納するためのテーブルである。サービスインタフェース間の依存関係とは、サービスインタフェースを公開している（最終的にプログラムとなる）機能が他の機能を呼び出すために他の機能が有するサービスインタフェースを参照することを意味する。サービスインタフェース間依存関係定義3200は、図１２にサービスインタフェース間依存関係定義3200によって定義されるデータの一例を示すように、サービスインタフェース間依存関係3200によって定義するデータを一意に識別するためのサービスインタフェース間依存関係ID 1202、サービスインタフェース間依存関係の関連元のサービスインタフェースを指定するための関連元サービスインタフェースID 1204、サービスインタフェース間依存関係の関連先のサービスインタフェースを指定するための関連先サービスインタフェースID 1206、及びこのサービスインタフェース間依存関係定義のデータ変更の可否を示す定義固定フラグ1208を有する。
【００２３】
サービスインタフェース・テーブル依存関係定義3250は、サービスインタフェース定義2050で定義されるサービスインタフェースと、テーブル定義3100で定義されるテーブルとの、依存関係の定義データを格納するためのテーブルである。サービスインタフェースとテーブルとの依存関係とは、サービスインタフェースを有する（最終的にプログラムとなる）機能がテーブルを参照することを意味する。サービスインタフェース・テーブル依存関係定義3250は、図１３にサービスインタフェース・テーブル依存関係定義3250によって定義されるデータの一例を示すように、サービスインタフェース・テーブル依存関係定義3250によって定義するデータを一意に識別するためのサービスインタフェース・テーブル依存関係ID 1302、サービスインタフェース・テーブル依存関係の関連元であるサービスインタフェースを指定するための関連元サービスインタフェース定義ID 1304、サービスインタフェース・テーブル依存関係の関連先であるテーブルを指定するための関連先テーブルID 1306、及びこのサービスインタフェース・テーブル依存関係定義のデータ変更の可否を示す定義固定フラグ 1308を有する。
【００２４】
テーブル間依存関係定義3300は、テーブル定義3100で定義される任意の２つのテーブル間の依存関係の定義データを格納するためのテーブルである。テーブル間の依存関係とは、あるテーブルの外部キーと他のテーブルの主キーとの間に存在する関係を意味する。テーブル間依存関係定義3300は、図１４にテーブル間依存関係定義3300によって定義されるデータの一例を示すように、テーブル間依存関係定義3300によって定義するデータを一意に識別するためのテーブル間依存関係ID 1402、テーブル間依存関係の関連元のテーブルを指定するための関連元テーブルID 1404、テーブル間依存関係の関連先のテーブルを指定するための関連先テーブルID 1406、及びこのテーブル間依存関係定義のデータ変更の可否を示す定義固定フラグ1408を有する。
【００２５】
図3(b)に示す改善策記憶部170は、不正依存関係改善策定義3350を有する。
【００２６】
不正依存関係改善策定義3350は、依存関係分析部108において検出する不正な依存関係、すなわち、不正なサービスインタフェース間依存関係、不正なサービスインタフェース・テーブル依存関係、及び不正なテーブル間依存関係に対して、それぞれの不正な依存関係を改善するためのプログラムへのポインタを格納するためのテーブルである。不正依存関係改善策定義3350は、図１５に不正依存関係改善策定義3350によって定義されるデータの一例を示すように、不正依存関係改善策定義3350によって定義するデータを一意に識別するための不正依存関係改善策ID 1502、不正な依存関係を改善するための不正依存関係改善策プログラムへのポインタである不正依存関係改善策プログラムID 1504、不正依存関係改善策の内容を示す不正依存関係改善策内容1506、及び不正依存関係改善策プログラムID 1504が対象とする不正依存関係ポリシー定義3400のデータを指定する不正依存関係ポリシーID 1508を有する。
【００２７】
図3(ｃ)に示す依存関係ポリシー記憶部180は、不正依存関係ポリシー定義3400を有する。
【００２８】
不正依存関係ポリシー定義3400は、依存関係分析部108において不正な依存関係を発見するための不正依存関係ポリシープログラムへのポインタを格納するためのテーブルである。不正依存関係ポリシー定義3400は、図１６に不正依存関係ポリシー定義3400によって定義されるデータの一例を示すように、不正依存関係ポリシー定義3400によって定義するデータを一意に識別するための不正依存関係ポリシーID 1602、不正な依存関係を発見するための不正依存関係ポリシープログラムへのポインタである不正依存関係ポリシープログラムID 1604、不正依存関係ポリシープログラムID 1604が指定するプログラムが不正依存関係として検出した場合に検出した不正依存関係の不正度合い示す不正依存関係ポリシー点(評価点) 1606、及び不正依存関係ポリシーの内容を示す不正依存関係ポリシー内容1608を有する。
【００２９】
図3(ｄ)に示す依存関係分析結果記憶部190は、不正依存関係分析結果3500、及び不正依存関係改善案3550を有する。
【００３０】
不正依存関係分析結果3500は、依存関係分析部108において検出した不正依存関係分析結果を格納するためのテーブルである。不正依存関係分析結果3500は、図１７に不正依存関係分析結果3500によって定義されるデータの一例を示すように、不正依存関係分析結果3500によって定義するデータを一意に識別するための不正依存関係分析結果ID 1702、不正な依存関係のデータのIDすなわち、不正なサービスインタフェース間依存関係のID 1202、不正なサービスインタフェース・テーブル依存関係のID 1302、または不正なテーブル間依存関係のID1402を指定する不正依存関係ID 1704と、不正依存関係を検出した不正依存関係ポリシー定義3400のデータ1602を指定する不正依存関係ポリシーID 1706を有する。
【００３１】
不正依存関係改善案3550は、図１８に不正依存関係改善案3550によって定義されるデータの一例を示すように、不正依存関係改善案3550によって定義するデータを一意に識別するための不正依存関係改善案ID 1802、不正依存関係分析結果3500のデータを指定する不正依存関係分析結果ID 1804、不正依存関係改善案定義3350のデータを指定する不正依存関係改善策ID 1806、及び不正依存関係に対して改善策を仮適用した結果に対する不正依存関係評価点から算出される不正依存関係改善結果評価点1808を有する。
【００３２】
コンポーネント要素定義編集部102について、図4の処理フローにしたがって説明する。
【００３３】
ステップ402では、図１９に示す編集メニュー画面1900を表示装置204に表示する。次に、入力装置203を通じて、図１９中のコンポーネント定義編集ボタン1902、サービスインタフェース定義編集ボタン1904、テーブル定義編集ボタン1906、コンポーネント間依存関係定義編集ボタン1908、サービスインタフェース間依存関係定義編集ボタン1910、サービスインタフェース・テーブル依存関係定義編集ボタン1912、テーブル間依存関係定義編集ボタン1914、及び改善策適用ボタン1916の一つが押されたことを判定した場合、押されたボタンに対応してステップ404〜ステップ420(ただし、ステップ418を除く)の一つに処理を移す。入力装置203を通じて、図１９中の終了ボタン1918が押されたことを判定した場合、処理を終了する。
【００３４】
ステップ404では、図２０に示すコンポーネント定義編集画面2000を表示装置204に表示する。このとき、コンポーネント定義3000のデータをコンポーネント要素定義記憶部150から読込み、読み込んだデータを図２０中の2020に示すように一覧にして表示する。入力装置203を通じて、カーソル2022が示すようにコンポーネント定義3000のデータが選択された場合、そのデータの内容であるコンポーネントID 2002とコンポーネント名2004とを表示する。
【００３５】
入力装置203を通じてコンポーネント名2004が変更され、登録ボタン2006が押されたことを判定した場合には、変更内容を反映したコンポーネント定義3000のデータをコンポーネント要素定義記憶部150に格納する。また、変更内容を反映して、一覧2020の表示を変える。
【００３６】
入力装置203を通じて新規ボタン2012が押されたことを判定した場合には、新たなコンポーネントIDを生成して2002に表示し、入力装置203を通じてコンポーネント名2004が入力され、登録ボタン2006が押されたことを判定した場合には、新たに作成したコンポーネントID 2002と入力されたコンポーネント名2004を有するコンポーネント定義3000のデータを作成してコンポーネント要素定義記憶部150に格納する。また、作成したコンポーネント定義3000のデータを一覧2020に追加表示する。
【００３７】
入力装置203を通じて、図２０中の終了ボタン2010が押されたことを判定した場合、ステップ402に処理を移す。以上のようにして、ユーザはコンポーネント定義3000のデータを編集する。
【００３８】
ステップ406では、図２１に示すサービスインタフェース定義編集画面2100を表示装置204に表示する。このとき、サービスインタフェース定義3050のデータをコンポーネント要素定義記憶部150から読み込み、読み込んだデータを図２１中の2120に示すように一覧にして表示する。
【００３９】
入力装置203を通じて、カーソル2122が示すようにサービスインタフェース定義3050のデータが選択された場合、そのデータの内容であるサービスインタフェースID 2102、サービスインタフェース名2104、所属コンポーネントID 2106、及び定義固定フラグ2108を表示する。
【００４０】
入力装置203を通じて削除ボタン2112が押されたことを判定し、定義固定フラグ2108が“FALSE”であり、かつ表示されているサービスインタフェース定義3050に関係する、コンポーネント要素記憶部150内のサービスインタフェース間依存関係定義3200のデータとサービスインタフェース・テーブル依存関係定義3250のデータとを参照し、これらデータの定義固定フラグ1208及び1308が“FALSE”の場合、表示されているサービスインタフェース定義3050のデータと、これに関係するサービスインタフェース間依存関係定義3200のデータ及びサービスインタフェース・テーブル依存関係定義3250のデータとをコンポーネント要素記憶部150から削除する。削除したデータを一覧表示2120から消去する。
【００４１】
入力装置203を通じてサービスインタフェース名2104や所属コンポーネントID 2106が変更され、かつ定義固定フラグ2108が“FALSE”であり、登録ボタン2110が押されたことを判定した場合には、変更内容を反映したサービスインタフェース定義3050のデータをコンポーネント要素定義記憶部150に格納する。また、変更内容を反映して、一覧2120の表示を変える。
【００４２】
入力装置203を通じて定義固定フラグ2108が“TRUE”から“FALSE”または“FALSE”から“TRUE”に変更され場合、変更内容を反映したサービスインタフェース定義3050のデータをコンポーネント要素定義記憶部150に格納する。また、変更内容を反映して、一覧2020の表示を変える。
【００４３】
入力装置203を通じて新規ボタン2116が押されたことを判定した場合には、新たなサービスインタフェースIDを生成し2102に表示し、入力装置203を通じてサービスインタフェース名2104、所属コンポーネントID 2106、及び定義固定フラグ2108とが入力され、登録ボタン2110が押されたことを判定した場合には、新たに作成したサービスインタフェースID 2102、入力されたサービスインタフェース名2104、所属コンポーネントID 2106、及び定義固定フラグ2108を有するサービスインタフェース定義3050のデータを作成してコンポーネント要素定義記憶部150に格納する。また、作成したサービスインタフェース定義3050のデータを一覧2120に追加表示する。
【００４４】
入力装置203を通じて、図２１中の終了ボタン2114が押されたことを判定した場合、ステップ402に処理を移す。以上のようにして、ユーザはサービスインタフェース定義3050のデータを編集する。
【００４５】
ステップ408では、図２２に示すテーブル定義編集画面2200を表示装置204に表示する。このとき、テーブル定義3100のデータをコンポーネント要素定義記憶部150から読み込み、読み込んだデータを図２２中の2220に示すように一覧にして表示する。
【００４６】
入力装置203を通じて、カーソル2222が示すようにテーブル定義3100のデータが選択された場合、そのデータの内容であるテーブルID 2202、テーブル名2204、所属コンポーネントID 2206、及び定義固定フラグ2208を表示する。
【００４７】
入力装置203を通じて削除ボタン2212が押されたことを判定し、定義固定フラグ2208が“FALSE”であり、かつ、表示されているテーブル定義3050に関係する、コンポーネント要素記憶部150内のサービスインタフェース・テーブル依存関係定義3250のデータとテーブル間依存関係定義3300のデータとを参照し、これらデータの定義固定フラグ1308及び1408が“FALSE”の場合は、表示されているテーブル定義3100のデータと、これに関係するサービスインタフェース・テーブル依存関係定義3250のデータ及びテーブル間依存関係定義3300のデータとをコンポーネント要素記憶部150から削除する。削除したデータを一覧表示2220から消去する。
【００４８】
入力装置203を通じてテーブル名2204や所属コンポーネントID 2206が変更され、かつ定義固定フラグ2208が“FALSE”であり、登録ボタン2210が押されたことを判定した場合には、変更内容を反映したテーブル定義3100のデータをコンポーネント要素定義記憶部150に格納する。また、変更内容を反映して、一覧2220の表示を変える。
【００４９】
入力装置203を通じて定義固定フラグ2208が“TRUE”から“FALSE”または“FALSE”から“TRUE”に変更され場合、変更内容を反映したテーブル定義3100のデータをコンポーネント要素定義記憶部150に格納する。また、変更内容を反映して、一覧2220の表示を変える。
【００５０】
入力装置203を通じて新規ボタン2216が押されたことを判定した場合には、新たなテーブルIDを生成して2202に表示し、入力装置203を通じてテーブル名2204、所属コンポーネントID 2206、及び定義固定フラグ2208が入力され、登録ボタン2210が押されたことを判定した場合には、新たに作成したテーブルID 2202と入力されたテーブル名2204、所属コンポーネントID 2206、及び定義固定フラグ2208とを有するテーブル定義3100のデータを作成してコンポーネント要素定義記憶部150に格納する。また、作成したテーブル定義3100のデータを一覧2220に追加表示する。
【００５１】
入力装置203を通じて、図２２中の終了ボタン2214が押されたことを判定した場合、ステップ402に処理を移す。以上のようにして、ユーザはテーブル定義3100のデータを編集する。
【００５２】
ステップ410では、図２８に示すコンポーネント間依存関係定義編集画面2800を表示装置204に表示する。このとき、コンポーネント間依存関係定義3150のデータと関係するコンポーネント定義3000のデータをコンポーネント要素定義記憶部150から読み込み、読み込んだデータの一覧を図２８中の2820に示すようなマトリックスによって表示する。マトリックスの縦軸がコンポーネント間依存関係の関連元(依存元)を示し、マトリックスの横軸がコンポーネント間依存関係の関連先(依存先)を示す。コンポーネント間に依存関係が存在する（縦軸に示すコンポーネントが横軸に示すコンポーネントに依存する）場合は、該当するマトリックスのセルにチェック印2822を表示する。
【００５３】
チェック印2822があるマトリックスのセルが入力装置203を通じて選択された場合、選択されたセルに対応する関連元のコンポーネント名を関連元名2802に、選択されたセルに対応する関連先のコンポーネント名を関連先名2804に、関係があることを示すために関係フラグ2806を“TRUE”として、それぞれ表示する。チェック印が無いマトリックスのセルが入力装置203を通じて選択された場合、選択されたセルに対応する関連元のコンポーネント名を関連元名2802に、選択されたセルに対応する関連先のコンポーネント名を関連先名2804に、関係が無いことを示すために関係フラグ2806を“FALSE”として、それぞれ表示する。
【００５４】
表示した関係フラグ2806が“FALSE”だったのが“TRUE”に変更され、入力装置203を通じて登録ボタン2808が押された場合は、コンポーネント間に新たな依存関係が作成されたので、コンポーネント間依存関係ID 1102を生成し、関連元名2802に対応するコンポーネントID 802を関連元コンポーネントID 1104とし、関連先名2804に対応するコンポーネントID 802を関連先コンポーネントID 1106とするコンポーネント間依存関係定義3150のデータを作成し、作成したデータをコンポーネント要素定義記憶部150に格納する。マトリックス2820の、作成したデータに対応するセルにチェック印を表示する。
【００５５】
表示した関係フラグ2806が“TRUE”だったのが変更されずに、入力装置203を通じて登録ボタン2808が押された場合は、コンポーネント間の依存関係の内容（関連元名2802及び関連先名2804の一方）が変更されたこととみなし、領域2801に表示しているコンポーネント間依存関係定義3150のデータを、登録ボタン2808が押された時点で表示されている関連元名2802と関連先名2804とに変更し、変更したコンポーネント間依存関係定義3150のデータをコンポーネント要素定義記憶部150に格納する。このデータ変更に応じて、マトリックス2820の該当するセルのチェック印を変更表示する。
【００５６】
入力装置203を通じて、図２8中の終了ボタン2810が押されたことを判定した場合、ステップ402に処理を移す。以上のようにして、ユーザはコンポーネント間依存関係定義3150のデータを編集する。
【００５７】
ステップ412では、図２３に示すサービスインタフェース間依存関係定義編集画面2300を表示装置204に表示する。このとき、サービスインタフェース間依存関係定義3200のデータと関係するコンポーネント定義3000のデータとサービスインタフェース定義3050のデータとをコンポーネント要素定義記憶部150から読み込み、読み込んだデータの一覧を図２３中の2320に示すようなマトリックスによって表示する。マトリックスの縦軸がサービスインタフェース間依存関係の関連元(依存元)を示し、マトリックスの横軸がサービスインタフェース間依存関係の関連先(依存先)を示す。サービスインタフェース間に依存関係が存在する（縦軸に示すサービスインタフェースが横軸に示すサービスインタフェースに依存する）場合は、該当するマトリックスのセルにチェック印2322を表示する。
【００５８】
また、不正依存関係分析結果3500のデータを依存関係分析結果記憶部190から読み込み、読み込んだデータに該当するサービスインタフェース間の依存関係すなわち不正なサービスインタフェース間の依存関係は、該当するセルを2326に示すようにハッチング表示する。
【００５９】
チェック印2322があるマトリックスのセルが入力装置203を通じて選択された場合、選択されたセルに該当するサービスインタフェース間依存関係定義3200のデータの内容を表示する。この表示データの内容は、依存関係ポリシー記憶部180から読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシー内容1608を示す不正依存関係ポリシー内容2302（これはカーソル2324によって指定されたサービスインタフェース間依存関係が不正依存関係（ハッチング表示されている）の場合に存在する）、サービスインタフェース間依存関係3200の関連元のサービスインタフェース名904を示す関連元名2304、サービスインタフェース間依存関係3200の関連先のサービスインタフェース名904を示す関連先名2306、定義固定フラグ1208に該当する定義固定フラグ2308、及びサービスインタフェース間に依存関係があることを示す関係フラグ2310として“TRUE”である。
【００６０】
チェック印が無いマトリックスのセル2328が入力装置203を通じ選択された場合、選択されたセル2328に該当するサービスインタフェース間依存関係定義3200のデータの関連元のサービスインタフェース名を関連元名2304に、選択されたセルに該当するサービスインタフェース間依存関係定義3200のデータの関連先のサービスインタフェース名を関連先名2306にそれぞれ表示する。さらに、定義固定フラグ2308を“FALSE”として、サービスインタフェース間の依存関係が無いことを示すために関係フラグ2310を“FALSE”として表示する。
【００６１】
表示した関係フラグ2310が“FALSE”だったのが“TRUE”に変更され、入力装置203を通じて登録ボタン2312が押された場合は、サービスインタフェース間に新たな依存関係が作成されたので、サービスインタフェース間依存関係ID 1202を生成し、関連元名2304に対応するサービスインタフェースID 902を関連元サービスインタフェースID 1204とし、関連先名2306に対応するサービスインタフェースID902を関連先サービスインタフェースID 1206とするサービスインタフェース間依存関係定義3200のデータを作成し、作成したデータをコンポーネント要素定義記憶部150に格納する。マトリックス2320の、作成したデータに対応するセルにチェック印を表示する。
【００６２】
表示した関係フラグ2310の“TRUE”が変更されずに、入力装置203を通じて登録ボタン2312が押された場合は、サービスインタフェース間の依存関係の内容（関連元名2304、関連先名2306、及び定義固定フラグ2308の少なくとも一つ）が変更されたので、該当するサービスインタフェース間依存関係定義3200のデータを、登録ボタン2312が押された時点で表示されている関連元名2304、関連先名2306、及び定義固定フラグ2308に変更し、変更したサービスインタフェース間依存関係定義3200のデータをコンポーネント要素定義記憶部150に格納する。このデータ変更に応じて、マトリックス2320の該当するセルのチェック印を変更表示する。
【００６３】
表示した関係フラグ2310の“TRUE”が“FALSE”に変更され、かつ定義固定フラグ2308が“FALSE”である場合は、サービスインタフェース間の依存関係を削除することとみなし、表示されているサービスインタフェース間依存関係に該当するサービスインタフェース間依存関係定義3200のデータをコンポーネント要素定義記憶部150から削除する。この削除に応じて、マトリックス2320の該当するセルのチェック印を消去する。
【００６４】
入力装置203を通じて登録ボタン2312が押され、かつ依存関係チェックフラグ2360にチェック印がある場合、依存関係分析部108の処理を呼び出し、その依存関係分析結果を反映した2320のマトリックスを前述の方法で再作成し表示装置204に表示する。
【００６５】
不正依存関係ポリシー内容2302が表示されており、かつ改善策提示ボタン2314が入力装置203を通じて押されたことを判定した場合、ステップ418に処理を移す。
【００６６】
入力装置203を通じて、図２３中の終了ボタン2316が押されたことを判定した場合、ステップ402に処理を移す。以上のようにして、ユーザはサービスインタフェース間依存関係定義3200のデータを編集する。
【００６７】
ステップ414では、図２４に示すサービスインタフェース・テーブル依存関係定義編集画面2400を表示装置204に表示する。サービスインタフェース・テーブル依存関係定義3250のデータと関係するコンポーネント定義3000のデータとサービスインタフェース定義3050のデータとテーブル定義3100とをコンポーネント要素定義記憶部150から読み込み、読み込んだデータの一覧を図２４中の2420に示すようなマトリックスによって表示する。マトリックスの縦軸がサービスインタフェース・テーブル依存関係の関連元であるサービスインタフェースを示し、マトリックスの横軸がサービスインタフェース・テーブル依存関係の関連先であるテーブルを示す。
【００６８】
サービスインタフェース・テーブル間に依存関係が存在する場合は該当するマトリックスのセルにチェック印2422を表示する。また、不正依存関係分析結果3500のデータを依存関係分析結果記憶部190から読み込み、読み込んだデータに該当するサービスインタフェースとテーブルの依存関係、すなわち不正なサービスインタフェースとテーブルの依存関係は、該当するセルをハッチング2426表示する。
【００６９】
入力装置203を通じて、マトリックスのハッチング2426されているセルに該当するサービスインタフェース・テーブル依存関係定義3250のデータが入力装置203を通じて選択された場合、選択されたサービスインタフェース・テーブル依存関係定義3250のデータの内容を表示する。この表示データの内容は、依存関係ポリシー記憶部180から読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシー内容1608を示す不正依存関係ポリシー内容2402（これはカーソル2424によって指定されたサービスインタフェース間依存関係が不正依存関係の場合だけ存在する）、サービスインタフェースとテーブルとの間の依存関係の関連元であるサービスインタフェース名904を示す関連元名2404、サービスインタフェースとテーブルの依存関係の関連先であるテーブル名1004を示す関連先名2406、定義固定フラグ1308に該当する定義固定フラグ2408、及びサービスインタフェースとテーブルとの間に依存関係があることを示す関係フラグ2410として“TRUE”である。
【００７０】
また、チェック印が無いマトリックスのセル2428が入力装置203を通じて選択された場合、選択されたセル2428に対応したサービスインタフェース・テーブル依存関係定義3250のデータの関連元であるサービスインタフェース名を関連元名2402に、サービスインタフェース・テーブル依存関係定義3250のデータの関連先であるテーブル名を関連先名2406に、定義固定フラグ2408に“FALSE”を、さらにサービスインタフェースとテーブルとの間に依存関係が無いことを示すために関係フラグ2410に“FALSE”を表示する。
【００７１】
表示した関係フラグ2410の“FALSE”が“TRUE”に変更され、入力装置203を通じて登録ボタン2412が押された場合は、サービスインタフェースとテーブルの間に新たな依存関係が作成されたので、サービスインタフェース・テーブル依存関係ID 1302を生成し、関連元名2404に対応するサービスインタフェースID 902を関連元サービスインタフェースID 1304とし、関連先名2406に対応するテーブルID 1002を関連先テーブルID 1306とするサービスインタフェース・テーブル依存関係定義3250のデータを作成し、作成したデータをコンポーネント要素定義記憶部150に格納する。マトリックス2420の、作成したデータに対応するセルにチェック印を表示する。
【００７２】
表示した関係フラグ2410の“TRUE”が変更されずに、入力装置203を通じて登録ボタン2412が押された場合は、サービスインタフェースとテーブルの間の依存関係の内容（関連元名2404か関連先名2406か定義固定フラグ2408）が変更されたので、該当するサービスインタフェース・テーブル依存関係定義3250のデータを、登録ボタン2412が押された時点で表示されている関連元名2404、関連先名2406、及び定義固定フラグ2408に変更し、変更したサービスインタフェース・テーブル依存関係定義3250のデータをコンポーネント要素定義記憶部150に格納する。このデータ変更に応じて、マトリックス2420の該当するセルのチェック印を変更表示する。
【００７３】
表示した関係フラグ2410の“TRUE”が“FALSE”に変更され、かつ定義固定フラグ2408が“FALSE”である場合は、サービスインタフェースとテーブルとの間の依存関係の削除であるので、表示されているサービスインタフェースとテーブルとの間の依存関係に該当するサービスインタフェース・テーブル依存関係定義3250のデータをコンポーネント要素定義記憶部150から削除する。この削除に応じて、マトリックス2420の該当するセルのチェック印を消去する。
【００７４】
入力装置203を通じて登録ボタン2412が押され、かつ依存関係チェックフラグ2460にチェック印がある場合、依存関係分析部108の処理を呼び出し、その依存関係分析結果を反映した2420のマトリックスを前述の方法で再作成し表示装置204に表示する。
【００７５】
不正依存関係ポリシー内容2402が表示されており、かつ改善策提示ボタン2414が入力装置203を通じて押されたことを判定した場合、ステップ418に処理を移す。
【００７６】
入力装置203を通じて、図２４中の終了ボタン2416が押されたことを判定した場合、ステップ402に処理を移す。以上のようにして、ユーザはサービスインタフェース・テーブル依存関係定義3250のデータを編集する。
【００７７】
ステップ416では、図２５に示すテーブル間依存関係定義編集画面2500を表示装置204に表示する。テーブル間依存関係定義3300のデータと関係するコンポーネント定義3000のデータとテーブル定義3100のデータとをコンポーネント要素定義記憶部150から読み込み、読み込んだデータの一覧を図２５中の2520に示すようなマトリックスによって表示する。マトリックスの縦軸がテーブル間依存関係の関連元を示し、マトリックスの横軸がテーブル間依存関係の関連先を示す。
【００７８】
テーブル間に依存関係が存在する場合は該当するマトリックスのセルにチェック印2522を表示する。不正依存関係分析結果3500のデータを依存関係分析結果記憶部190から読み込み、読み込んだデータに該当するテーブル間の依存関係、すなわち不正なテーブル間の依存関係は、該当するセルをハッチング表示2526する。
【００７９】
チェック印2522があるマトリックスのセルが入力装置203を通じて選択された場合、選択されたセルに該当するテーブル間依存関係定義3300のデータの内容を表示する。この表示データの内容は、依存関係ポリシー記憶部180から読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシー内容1608を示す不正依存関係ポリシー内容2302（これはカーソル2524によって指定されたテーブル間依存関係が不正依存関係の場合だけ存在する）、テーブル間依存関係の関連元のテーブル名1004を示す関連元名2504、テーブル間依存関係の関連先のテーブル名1004を示す関連先名2506、定義固定フラグ1408に該当する定義固定フラグ2508、及びテーブル間に依存関係があることを示す関係フラグ2510としての“TRUE”である。
【００８０】
チェック印が無いマトリックスのセル2528が入力装置203を通じて選択された場合、選択されたセル2528に対応したテーブル間依存関係定義3300のデータの関連元のテーブル名を関連元名2504に、選択されたセルに対応したテーブル間依存関係定義3300のデータの関連先のテーブル名を関連先名2506に、定義固定フラグ2508に“FALSE”を、さらにテーブル間の依存関係が無いことを示すために関係フラグ2510に“FALSE”を表示する。
【００８１】
表示した関係フラグ2510の“FALSE”が“TRUE”に変更され、入力装置203を通じて登録ボタン2512が押された場合は、テーブル間に新たな依存関係が作成されたので、テーブル間依存関係ID 1402を生成し、関連元名2504に対応するテーブルID 1002を関連元テーブルID 1404とし、関連先名2506に対応するテーブルID1002を関連先テーブルID 1406とするテーブル間依存関係定義3300のデータを作成し、作成したデータをコンポーネント要素定義記憶部150に格納する。マトリックス2520の、作成したデータに対応するセルにチェック印を表示する。
【００８２】
表示した関係フラグ2510の“TRUE”が変更されずに、入力装置203を通じて登録ボタン2512が押された場合は、テーブル間の依存関係の内容（関連元名2504、関連先名2506、及び定義固定フラグ2508の一つ）が変更されたこととみなし、該当するテーブル間依存関係定義3300のデータを、登録ボタン2512が押された時点で表示されている関連元名2504と関連先名2506と定義固定フラグ2508に変更し、変更したテーブル間依存関係定義3300のデータをコンポーネント要素定義記憶部150に格納する。このデータ変更に応じて、マトリックス2520の該当するセルのチェック印を変更表示する。
【００８３】
表示した関係フラグ2510の“TRUE”が“FALSE”に変更されかつ定義固定フラグ2508が“FALSE”である場合は、テーブル間の依存関係を削除することとみなし、2501に表示されているテーブル間依存関係に該当するテーブル間依存関係定義3300のデータをコンポーネント要素定義記憶部150から削除する。この削除に応じて、マトリックス2520の該当するセルのチェック印を消去する。
【００８４】
入力装置203を通じて登録ボタン2512が押され、かつ依存関係チェックフラグ2560にチェック印がある場合、依存関係分析部108の処理を呼び出し、その依存関係分析結果を反映した2520のマトリックスを前述の方法で再作成し表示装置204に表示する。
【００８５】
不正依存関係ポリシー内容2502が表示されており、かつ改善策提示ボタン2514が入力装置203を通じて押されたことを判定した場合、ステップ418に処理を移す。
【００８６】
入力装置203を通じて、図２５中の終了ボタン2516が押されたことを判定した場合、ステップ402に処理を移す。以上のようにして、ユーザはテーブル間依存関係定義3300のデータを編集する。
【００８７】
なお、図２３〜図２５の説明において、入力装置203を通じて登録ボタンが押され、かつ依存関係チェックフラグにチェック印がある場合、依存関係分析部108の処理を呼び出すようにしたが、データの一覧を表示する段階、又はチェック印があるセルが選択された段階で、依存関係分析部108の処理を呼び出してもよい。
【００８８】
図4のステップ412〜416のいずれかから処理が移る(図23〜図25のいずれかの改善案提示ボタンが押されたときに処理が移る)ステップ418では、図２６に示す不正依存関係改善策適用画面(1) 2600を表示装置204に表示する。不正依存関係ポリシー内容2602にはステップ418を呼び出した画面に表示されていた不正依存関係ポリシー内容を、不正依存関係関連元名2604にはステップ418を呼び出した画面に表示されていた関連元名を、不正依存関係関連先名2606にはステップ418を呼び出した画面に表示されていた関連先名を、それぞれ表示する。
【００８９】
不正依存関係関連元名2604と不正依存関係関連先名2606に該当する、サービスインタフェース間依存関係定義3150のデータ、サービスインタフェース・テーブル依存関係定義3250、及びテーブル間依存関係3300の一つのデータをコンポーネント要素定義記憶部150から読み込む。読み込んだそれら依存関係定義のデータのサービスインタフェース間依存関係ID 1202、サービスインタフェース間依存関係ID 1302、及びテーブル間依存関係ID 1402のいずれか一つと同じ値を不正依存関係ID1704に有する不正依存関係分析結果3500のデータを依存関係分析結果記憶部190から読み込む。読み込んだ不正依存関係分析結果3500のデータの不正依存関係分析結果ID 1702と同じ値を不正依存関係改善策定義3350に有するデータを依存関係ポリシー記憶部180から読み込む。読み込んだ不正依存関係改善策定義3350の不正依存関係改善策内容1506を不正依存関係改善策結果評価点1808の低い順に表2608として表示する。
【００９０】
入力装置203を通じてカーソル2650によって改善策が選択され、入力装置203を通じて改善策適用ボタン2610が押されたことを判定した場合、2650で選択された改善策を適用するために、改善策適用部106の処理を呼び出す。改善策適用部106の処理を呼び出す際には、2650で選択された改善策に対応する不正依存関係改善策ID 1502と、2604および2606に対応する不正依存関係ID 1704を渡す。改善策適用部106の処理が終了したならば、改善策が適用されたコンポーネント要素定義（コンポーネント定義3000、サービスインタフェース定義3050とテーブル定義3100、コンポーネント間依存関係定義3150、サービスインタフェース間依存関係定義3200、サービスインタフェース・テーブル依存関係定義3250、及びテーブル間依存関係定義3300）のデータをコンポーネント要素定義記憶部150に格納する。入力装置203を通じて図２６中の終了ボタン2612が押されたことを判定した場合、ステップ418を呼び出したステップに処理を戻す。
【００９１】
ステップ420では、図２７に示す不正依存関係改善策適用画面(2) 2700を表示装置204に表示する。不正依存関係改善案3550のデータ全てを依存関係分析結果記憶部190から読み込む。読み込んだ不正依存関係改善案3550のデータの不正依存関係改善策結果評価点1808が小さい順に表2706を作成し表示する。
【００９２】
表2706の作成にあたり、読み込んだ不正依存関係改善案3550のデータの不正依存関係改善結果評価点1808を評価点2720として表示する。
【００９３】
表2706の作成にあたり、読み込んだ不正依存関係改善案3550のデータの不正依存関係分析結果ID 1804から不正依存関係分析結果3500のデータを読み込む。読み込んだ不正依存関係分析結果3500のデータの不正依存関係ID 1704から各種依存関係（サービスインタフェース間依存関係定義3200、サービスインタフェース・テーブル依存関係定義3250、またはテーブル間依存関係3300）のデータを読み込む。それら読み込んだ各種依存関係のデータに関連するサービスインタフェース定義3050またはテーブル定義3100のデータを読み込む。読み込んだサービスインタフェース定義3050のデータのサービスインタフェース名904または読み込んだテーブル定義3100のデータのテーブル名1004を、表2706の不正依存関係2712の、関連元名2718または関連先名2720として表示する。
【００９４】
表2706の作成にあたり、読み込んだ不正依存関係改善案3550のデータの不正依存関係改善策ID 1806から不正依存関係改善策定義3350のデータを読み込む。読み込んだ不正依存関係改善策定義3350のデータの不正依存関係ポリシーID 1508に該当する不正依存関係ポリシー定義3400のデータを読み込む。読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシー内容1608を不正依存関係ポリシー内容2714として表示する。
【００９５】
表2706の作成にあたり、読み込んだ不正依存関係改善案3550のデータの不正依存関係改善策ID 1806から不正依存関係改善策定義3350のデータを読み込む。読み込んだ不正依存関係改善策定義3350のデータの不正依存関係改善内容1506を改善策2716として表示する。
【００９６】
入力装置203を通じてカーソル2750によって改善策が選択され、入力装置203を通じて改善策適用ボタン2708が押されたことを判定した場合、カーソル2750で選択された改善策を適用するために、改善策適用部106の処理を呼び出す。改善策適用部106の処理を呼び出す際には、2750で選択された改善策に対応する不正依存関係改善策ID 1502と、関連元名2718および関連先名2720に対応する不正依存関係ID 1704とを渡す。改善策適用部106の処理が完了したならば、改善策が適用されたコンポーネント要素定義（コンポーネント定義3000、サービスインタフェース定義3050、テーブル定義3100、コンポーネント間依存関係定義3150、サービスインタフェース間依存関係定義3200、サービスインタフェース・テーブル依存関係定義3250、及びテーブル間依存関係定義3300）のデータをコンポーネント要素定義記憶部150に格納する。
【００９７】
入力装置203を通じて図２７中の終了ボタン2710が押されたことを判定した場合、ステップ402に処理を移す。
【００９８】
コンポーネント要素定義操作部104について、図5の表を用いて説明する。図5の表は、縦軸がコンポーネント要素定義操作部104の呼び出し時に主記憶装置202に存在する各データ（コンポーネント要素定義操作部104以外の部位でコンポーネント要素定義記憶部150から読み出されたデータ）を示し、横軸が各データに対する操作を示している。
【００９９】
図5に示す表中の○の意味は、○の該当行の最左に示すデータに対して、○の該当列の最上に示す操作がコンポーネント要素定義操作部104に存在することを意味する。図5に示す表中の×の意味は、×の該当行の最左に示すデータに対して、×の該当列の最上に示す操作がコンポーネント要素定義操作部104に存在しないことを意味する。○で示すデータに対する操作のいずれかは、改善策適用部106から呼び出され実行される。以下、○で示すデータに対する各操作について説明する。
【０１００】
サービスインタフェース定義3050に対する追加502の操作では、該操作で生成するサービスインタフェースIDと、該操作を呼び出した部位から渡されるサービスインタフェース名、所属コンポーネントID、及び定義固定フラグに基づいて、サービスインタフェース定義3050のデータを作成し、作成したデータを主記憶装置202に格納する。
【０１０１】
サービスインタフェース定義3050に対する削除504の操作では、該操作を呼び出した部位から渡されるサービスインタフェースIDに該当するサービスインタフェース定義3050のデータを主記憶装置202から削除する。ただし、サービスインタフェース定義3050のデータの定義固定フラグが“TRUE”の場合は、該操作を実行せずにエラーを該操作の呼び出し元に戻し、処理を終了する。
【０１０２】
サービスインタフェース定義3050に対する移動506の操作では、該操作を呼び出した部位から渡されるサービスインタフェースIDに該当するサービスインタフェース定義3050のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータの所属コンポーネントIDを、該操作を呼び出した部位から渡される所属コンポーネントIDに変更し、変更したデータを主記憶装置202に格納する。ただし、サービスインタフェース定義3050のデータの定義固定フラグが“TRUE”の場合は、該操作を実行せずにエラーを該操作の呼び出し元に戻し、処理を終了する。  サービスインタフェース定義3050に対する統合508の操作によって、既存の２つのサービスインタフェースを統合し、新たにサービスインタフェースを１つ作成し、統合対象となった既存の２つのサービスインタフェースを削除する。統合することによって作られるサービスインタフェースは、統合対象となった２つのサービスインタフェースと関連するサービスインタフェースやテーブルとの依存関係を引き継ぐ。これを実現するためのサービスインタフェース定義3050に対する統合508の操作を次に説明する。
【０１０３】
該操作508を呼び出した部位から統合対象である２つのサービスインタフェースのサービスインタフェースIDが渡されるので、渡された１つのサービスインタフェースIDに該当するサービスインタフェース定義3050のデータ（これを以下「サービスインタフェースＡ」とする）と、渡された他の１つのサービスインタフェースIDに該当するサービスインタフェース定義3050のデータ（これを以下「サービスインタフェースＢ」とする）を、主記憶装置202から読み込む。サービスインタフェースＡおよびサービスインタフェースＢのサービスインタフェースIDの値と同じ値を関連元サービスインタフェースIDまたは関連先サービスインタフェースIDに持つサービスインタフェース間依存関係定義のデータおよびサービスインタフェース・テーブル依存関係定義のデータを主記憶装置202から読み込む。
【０１０４】
次に、該操作508で生成するサービスインタフェースIDと、該操作508を呼び出した部位から渡されたサービスインタフェース名、所属コンポーネントID、及び定義固定フラグに基づいて、サービスインタフェース定義3050のデータを作成し、この作成したデータを主記憶装置202に格納する。先に主記憶装置202から読み込んだサービスインタフェース間依存関係定義のデータとサービスインタフェース・テーブル依存関係定義データの関連元サービスインタフェースIDまたは関連先サービスインタフェースIDの値を先に生成したサービスインタフェースIDに変更し、変更したサービスインタフェース間依存関係定義のデータとサービスインタフェース・テーブル依存関係定義データを主記憶装置202に格納する。
【０１０５】
ただし、該操作ではサービスインタフェースＡおよびサービスインタフェースＢの定義固定フラグが“TRUE”の場合、または主記憶装置202から読み込むサービスインタフェースＡおよびサービスインタフェースＢのサービスインタフェースIDの値と同じ値を関連元サービスインタフェースIDまたは関連先サービスインタフェースIDに持つサービスインタフェース間依存関係定義のデータおよびサービスインタフェース・テーブル依存関係定義のデータの定義固定フラグが“TRUE”の場合、該操作を実行せずにエラーを該操作の呼び出し元に戻し、処理を終了する。
【０１０６】
サービスインタフェース定義3050に対する定義固定フラグ変更510の操作では、該操作を呼び出した部位から渡されるサービスインタフェースIDに該当するサービスインタフェース定義3050のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータの定義固定フラグに対して該操作510を呼び出した部位から渡される定義固定フラグに変更し、変更したデータを主記憶装置202に格納する。
【０１０７】
サービスインタフェース定義3050に対する名前変更512の操作では、該操作512を呼び出した部位から渡されるサービスインタフェースIDに該当するサービスインタフェース定義3050のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータのサービスインタフェース名に対して該操作512を呼び出した部位から渡されるサービスインタフェース名に変更し、変更したデータを主記憶装置202に格納する。ただし、サービスインタフェース定義3050のデータの定義固定フラグが“TRUE”の場合は、該操作を実行せずにエラーを該操作512の呼び出し元に戻し、処理を終了する。
【０１０８】
テーブル定義3100に対する追加502の操作では、該操作で生成するテーブルIDと該操作を呼び出した部位から渡されるテーブル名と所属コンポーネントIDと定義固定フラグに基づいて、テーブル定義3050のデータを作成し、作成したデータを主記憶装置202に格納する。
テーブル定義3100に対する削除504の操作では、該操作504を呼び出した部位から渡されるテーブルIDに該当するテーブル定義3050のデータを主記憶装置202から削除する。ただし、テーブル定義3100のデータの定義固定フラグが“TRUE”の場合は、該操作を実行せずにエラーを該操作504の呼び出し元に戻し、処理を終了する。
【０１０９】
テーブル定義3100に対する移動506の操作では、該操作506を呼び出した部位から渡されるテーブルIDに該当するテーブル定義3100のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータの所属コンポーネントIDに対して該操作506を呼び出した部位から渡される所属コンポーネントIDに変更し、変更したデータを主記憶装置202に格納する。ただし、テーブル定義3100のデータの定義固定フラグが“TRUE”の場合は、該操作を実行せずにエラーを該操作の呼び出し元に戻し、処理を終了する。
【０１１０】
テーブル定義3100に対する統合508の操作によって、既存の２つのテーブルを統合し、新たにテーブルを１つ作成し、統合対象となった既存の２つのテーブルを削除する。統合することによって作られるテーブルは、統合対象となった２つのテーブルと関連するサービスインタフェースやテーブルとの依存関係を引き継ぐ。これを実現するためのテーブル定義3100に対する統合508の操作を次に説明する。
【０１１１】
該操作508を呼び出した部位から統合対象である２つのテーブルのテーブルIDが渡されるので、渡された１つのテーブルIDに該当するテーブル定義3100のデータ（これを以下「テーブルＡ」とする）と、渡された他の１つのテーブルIDに該当するテーブル定義3100のデータ（これを以下「テーブルＢ」とする）を、主記憶装置202から読み込む。テーブルＡおよびテーブルＢのテーブルIDの値と同じ値を関連元テーブルIDまたは関連先テーブルIDに持つテーブル間依存関係定義のデータおよびサービスインタフェース・テーブル依存関係定義のデータを主記憶装置202から読み込む。次に、該操作508で生成するテーブルID、該操作508を呼び出した部位から渡されるテーブル名、所属コンポーネントID、及び定義固定フラグに基づいて、テーブル定義3100のデータを作成し、この作成したデータを主記憶装置202に格納する。先に主記憶装置202から読み込んだテーブル間依存関係定義のデータとサービスインタフェース・テーブル依存関係定義データの関連元テーブルIDまたは関連先テーブルIDの値を先に生成したテーブルIDに変更し、変更したテーブル間依存関係定義のデータとサービスインタフェース・テーブル依存関係定義データを主記憶装置202に格納する。
【０１１２】
ただし、該操作508ではテーブルＡおよびテーブルＢの定義固定フラグが“TRUE”の場合、または主記憶装置202から読み込むテーブルＡおよびテーブルＢのテーブルIDの値と同じ値を関連元テーブルIDまたは関連先テーブルIDに持つテーブル間依存関係定義のデータおよびサービスインタフェース・テーブル依存関係定義のデータの定義固定フラグが“TRUE”の場合、該操作508を実行せずにエラーを該操作の呼び出し元に戻し、処理を終了する。
【０１１３】
テーブル定義3100に対する定義固定フラグ変更510の操作では、該操作510を呼び出した部位から渡されるテーブルIDに該当するテーブル定義3100のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータの定義固定フラグに対して該操作510を呼び出した部位から渡される定義固定フラグに変更し、変更したデータを主記憶装置202に格納する。
【０１１４】
テーブル定義3100に対する名前変更512の操作では、該操作512を呼び出した部位から渡されるテーブルIDに該当するテーブル定義3100を主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータのテーブル名に対して該操作512を呼び出した部位から渡されるテーブル名に変更し、変更したデータを主記憶装置202に格納する。ただし、テーブル定義3100のデータの定義固定フラグが“TRUE”の場合は、該操作を実行せずにエラーを該操作の呼び出し元に戻し、処理を終了する。
【０１１５】
コンポーネント間依存関係定義3150に対する追加502の操作では、該操作502で生成するコンポーネント間依存関係IDと該操作502を呼び出した部位から渡される関連元コンポーネントIDと関連先コンポーネントIDとに基づいて、コンポーネント間依存関係定義3150のデータを作成し、作成したデータを主記憶装置202に格納する。
【０１１６】
コンポーネント間依存関係定義3150に対する削除504の操作では、該操作504を呼び出した部位から渡されるコンポーネント間依存関係IDに該当するコンポーネント間依存関係定義3150のデータを主記憶装置202から削除する。
【０１１７】
サービスインタフェース間依存関係定義3200に対する追加502の操作では、該操作502で生成するサービスインタフェース間依存関係IDと該操作502を呼び出した部位から渡される関連元サービスインタフェースID、関連先サービスインタフェースID、及び定義固定フラグに基づいて、サービスインタフェース間依存関係定義3200のデータを作成し、作成したデータを主記憶装置202に格納する。
【０１１８】
サービスインタフェース間依存関係定義3200に対する削除504の操作では、該操作504を呼び出した部位から渡されるサービスインタフェース間依存関係IDに該当するサービスインタフェース間依存関係定義3200のデータを主記憶装置202から削除する。ただし、サービスインタフェース間依存関係定義3200のデータの定義固定フラグが“TRUE”の場合は、該操作504を実行せずにエラーを該操作の呼び出し元に戻し、処理を終了する。
【０１１９】
サービスインタフェース間依存関係定義3200に対する定義固定フラグ変更510の操作では、該操作510を呼び出した部位から渡されるサービスインタフェース間依存関係IDに該当するサービスインタフェース間依存関係定義3200のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータの定義固定フラグに対して該操作510を呼び出した部位から渡される定義固定フラグに変更し、変更したデータを主記憶装置202に格納する。
【０１２０】
サービスインタフェース・テーブル依存関係定義3250に対する追加502の操作では、該操作502で生成するサービスインタフェース・テーブル依存関係ID、該操作502を呼び出した部位から渡される関連元サービスインタフェースID、関連先テーブルID、及び定義固定フラグIDに基づいて、サービスインタフェース・テーブル依存関係定義3250のデータを作成し、作成したデータを主記憶装置202に格納する。
【０１２１】
サービスインタフェース・テーブル依存関係定義3250に対する削除504の操作では、該操作504を呼び出した部位から渡されるサービスインタフェース・テーブル依存関係IDに該当するサービスインタフェース・テーブル依存関係定義3250のデータを主記憶装置202から削除する。ただし、サービスインタフェース・テーブル依存関係定義3250のデータの定義固定フラグが“TRUE”の場合は、該操作504を実行せずにエラーを該操作504の呼び出し元に戻し、処理を終了する。
【０１２２】
サービスインタフェース・テーブル依存関係定義3250に対する定義固定フラグ変更510の操作では、該操作510を呼び出した部位から渡されるサービスインタフェース・テーブル依存関係IDに該当するサービスインタフェース・テーブル依存関係定義3250のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータの定義固定フラグに対して該操作510を呼び出した部位から渡される定義固定フラグに変更し、変更したデータを主記憶装置202に格納する。
【０１２３】
テーブル間依存関係定義3300に対する追加502の操作では、該操作502で生成するテーブル間依存関係ID、該操作502を呼び出した部位から渡される関連元テーブルID、関連先テーブルID、及び定義固定フラグIDに基づいて、テーブル間依存関係定義3300のデータを作成し、作成したデータを主記憶装置202に格納する。
【０１２４】
テーブル間依存関係定義3300に対する削除504の操作では、該操作504を呼び出した部位から渡されるテーブル間依存関係IDに該当するテーブル間依存関係定義3300のデータを主記憶装置202から削除する。ただし、テーブル間依存関係定義3300のデータの定義固定フラグが“TRUE”の場合は、該操作504を実行せずにエラーを該操作504の呼び出し元に戻し、処理を終了する。
【０１２５】
テーブル間依存関係定義3300に対する定義固定フラグ変更510の操作では、該操作510を呼び出した部位から渡されるテーブル間依存関係IDに該当するテーブル間依存関係定義3300のデータを主記憶装置202から読み込み、読み込んだデータを主記憶装置202から削除し、読み込んだデータの定義固定フラグに対して該操作510を呼び出した部位から渡される定義固定フラグに変更し、変更したデータを主記憶装置202に格納する。
【０１２６】
改善策適用部106について、図6の処理フローにしたがって説明する。
【０１２７】
改善策適用部106を呼び出した部位（図26の改善策適用ボタン2610又は図27の改善策適用ボタン2708の選択により呼び出す図4のステップ418又はステップ420、又は後述の依存関係分析部108）から渡される不正依存関係改善策IDに該当する不正依存関係改善策定義3350のデータを改善策記憶部170から読み出す（ステップ602）。
【０１２８】
読み出した不正依存関係改善策定義3350のデータの不正依存関係改善策プログラムID1504に該当する不正依存関係改善策プログラムを主記憶装置202から読み出し実行する（ステップ604）。読み出した不正依存関係改善策プログラムの中では必要に応じてコンポーネント要素定義記憶部150の処理を呼び出し、その処理が終了後に、該操作の呼び出し元に処理を戻す。ただし、コンポーネント要素定義記憶部150の処理中にエラーが発生した場合、エラーを該操作の呼び出し元に戻し、終了する。
【０１２９】
依存関係分析部108について、図7の処理フローにしたがって説明する。
【０１３０】
依存関係ポリシー記憶部180に格納されている不正依存関係ポリシー定義3400のデータを読み込む（ステップ702）。
【０１３１】
コンポーネント要素定義（コンポーネント定義3000、サービスインタフェース定義3050、テーブル定義3100、コンポーネント間依存関係定義3150、サービスインタフェース間依存関係定義3200、サービスインタフェース・テーブル依存関係定義3250、及びテーブル間依存関係定義3300）のデータをコンポーネント要素定義記憶部150から読み込む。そして、不正依存関係ポリシー定義3400のデータの不正依存関係ポリシープログラムID 1604に該当するプログラムを主記憶装置202から読み出して実行することによって、読み込んだコンポーネント要素定義のデータに存在する不正な依存関係を発見する（ステップ704）。
【０１３２】
不正依存関係ポリシープログラムよって不正依存関係が発見された場合、新たに不正依存関係分析結果ID 1702生成して、新たな不正依存関係分析結果3500のデータを作成する。新たなデータの不正依存関係ポリシーID 1706は、発見された不正依存関係ポリシープログラムのポインタを不正依存関係ポリシープログラムID 1604として有する不正依存関係ポリシー定義3400のデータの不正依存関係ポリシーID 1602である。新たなデータの不正依存関係ID 1704は、発見された不正依存関係のID（不正な依存関係がサービスインタフェース間依存関係であればサービスインタフェース間依存関係ID 1202であり、サービスインタフェース・テーブル依存関係であればサービスインタフェース・テーブル依存関係ID 1302であり、テーブル間依存関係であればテーブル間依存関係ID 1402）である。作成した不正依存関係分析結果3500のデータを依存関係分析結果記憶部190に格納する。また、読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシー点1606とから不正依存関係評価点を算出する。不正な依存関係の特定と不正依存関係評価点については、後で例を用いて説明する。
【０１３３】
不正依存関係があった場合はステップ708に処理を移し、無かった場合は終了する(ステップ706)。
【０１３４】
不正依存関係分析結果3500のデータを依存関係分析結果記憶部190から読み込み、読み込んだ不正依存関係分析結果3500のデータを一つずつ取り出しながら、読み込んだ不正依存関係分析結果3500のデータの数だけステップ710〜ステップ720の処理を繰り返し実行する（ステップ708、ステップ722）。
【０１３５】
取り出した不正依存関係分析結果3500のデータの不正依存関係ポリシーID 1706と同じ値を不正依存関係ポリシーID 1602として持つ不正依存関係ポリシー定義3400のデータを読み込み、さらに読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシーID1602と同じ値を不正依存関係ポリシーID 1508として持つ不正依存関係改善策定義3350のデータを読み込む。読み込んだ不正依存関係改善策定義3350のデータを一つずつ取り出しながら、読み込んだ不正依存関係改善策定義3350のデータの数だけステップ712〜ステップ718の処理を繰り返し実行する（ステップ710、ステップ720）。
【０１３６】
取り出した不正依存関係改善策定義3350のデータを仮適用するために、改善策適用部106の処理を呼び出す。このとき、改善策適用部106の処理に対して、ステップ710で取り出した改善策の不正依存関係改善策プログラムID 1504と、ステップ708で取り出した不正依存関係分析結果3500のデータの不正依存関係ID 1704を渡す（ステップ712）。
【０１３７】
読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシープログラムID 1604に該当するプログラムを主記憶装置202から読み出して実行することによって、ステップ712で改善策を仮適用したサービスインタフェース間やサービスインタフェースとテーブルとの間やテーブル間に存在する不正な依存関係を特定し、ステップ702で読み込んだ不正依存関係ポリシー定義3400のデータの不正依存関係ポリシー点1606から不正依存関係評価点を算出する（ステップ714）。
【０１３８】
新たに不正依存関係改善案 ID1802を生成し、新たな不正依存関係改善案3550のデータを作成する（ステップ718）。新たなデータの不正依存関係分析結果ID 1804は、ステップ708で取り出した不正依存関係分析結果3500のデータの不正依存関係分析結果ID 1704である。新たなデータの不正依存関係改善策ID 1806は、ステップ710で取り出した不正依存関係改善策定義3350のデータの不正依存関係改善策ID 1502である。新たなデータの不正依存関係改善結果評価点1808は、ステップ714で算出した不正依存関係評価点からステップ704で算出した不正依存関係評価点を引いたものである。作成した不正依存関係改善案3550のデータを依存関係分析結果記憶部に格納する。
【０１３９】
以下では、ステップ704およびステップ714において不正な依存関係を特定する不正依存関係ポリシープログラムについて説明する。なお、不正依存関係ポリシープログラムにおいては、各依存関係のデータの定義固定フラグ（1208、1308、又は1408）が“TRUE”である場合は、ユーザが意図的に依存関係を作ったことと見なし、無条件にポリシー違反としないことにする。
【０１４０】
不正依存関係ポリシー定義3400の「同一コンポ内でのサービス呼び出し」1620に対応する不正依存関係ポリシープログラムについて説明する。「同一コンポ内でのサービス呼び出し」とは、あるコンポーネントのあるサービスインタフェースを公開している(他から呼び出される)と、その機能(処理)の実行中に、それと同じコンポーネントの別のサービスインタフェースを呼び出すことを意味する。すなわち、同じコンポーネントに属すサービスインタフェース間に依存関係が存在することである。サービスインタフェースは機能をコンポーネントの外部に公開するという定義であり、「同一コンポ内でのサービス呼び出し」はその定義に反することから不正な依存関係とする。
【０１４１】
例えば、サービスインタフェース間依存関係定義3200のデータの一例である1220では、関連元サービスインタフェースID 1204“Serv0011”で指定されるサービスインタフェースは、サービスインタフェース定義3050のデータから所属コンポーネントIDが“Comp001”のコンポーネントに属す。また、関連先サービスインタフェースID 1206“Serv0012”で指定されるサービスインタフェースは、サービスインタフェース定義3050のデータから所属コンポーネントIDが“Comp001”のコンポーネントに属す。さらに定義固定フラグが“FALSE”であることから、1220に示されるサービスインタフェース間依存関係定義のデータは、不正な依存関係「同一コンポ内でのサービス呼び出し」であると認識され、例えばステップ704では、不正依存関係分析結果3500のデータ(図7の1720)が作成される。以上の例に示すような処理を実行する不正依存関係ポリシープログラムによって、「同一コンポ内でのサービス呼び出し」という不正依存関係を検出することができる。
【０１４２】
不正依存関係ポリシー定義3400の「他コンポのテーブル直接参照」1622に対応する不正依存関係ポリシープログラムについて説明する。「他コンポのテーブル直接参照」とは、あるコンポーネントに属すあるサービスインタフェースを公開している(他から呼び出される)と、その機能(処理)の実行中に、それとは別のコンポーネントに属すテーブルを参照することである。すなわち、あるコンポーネントに属すあるサービスインタフェースと別のコンポーネントのあるテーブルとの間に依存関係が存在することである。「他コンポのテーブル直接参照」は、あるコンポーネントの機能が別のコンポーネントのテーブルを、サービスインタフェースを介さずに、直接的に参照するため、テーブル変更時の影響が波及するなどにより、保守性が低下する要因となる。
【０１４３】
例えば、サービスインタフェース・テーブル依存関係定義3250のデータの一例である1310では、関連元サービスインタフェースID 1304“Serv0011”で指定されるサービスインタフェースはサービスインタフェース定義3050のデータから所属コンポーネントIDが“Comp001”のコンポーネントに属す。また、関連先テーブルID 1306“Tbl0021”で指定されるテーブルはテーブル定義3100のデータから所属コンポーネントIDが“Comp002”のコンポーネントに属す。さらに定義固定フラグ1308が“FALSE”であることから、1310に示されるサービスインタフェース・テーブル依存関係定義のデータは、不正な依存関係「他コンポのテーブル直接参照」であると認識され、例えばステップ704では不正依存関係分析結果3500のデータ(図7の1722)が作成される。以上の例に示すような処理を実行する不正依存関係ポリシープログラムによって、「他コンポのテーブル直接参照」という不正依存関係を検出することができる。
【０１４４】
不正依存関係ポリシー定義3400の「コンポ間依存関係とサービスインタフェース間依存関係との相違」1624に対応する不正依存関係ポリシープログラムについて説明する。「コンポ間依存関係とサービスインタフェース間依存関係との相違」とは、コンポーネントに跨るあるサービスインタフェース間依存関係が、コンポーネントに跨る他の依存関係と逆向きであり、コンポーネント間に相互依存が発生する可能性がある状態を意味する。これによって、コンポーネントに跨るサービスインタフェース間依存関係の向きを、コンポーネント間依存関係に準ずるように定義することができ、コンポーネント間の相互依存を防止することができるようになる。
【０１４５】
また、「コンポ間依存関係とサービスインタフェース間依存関係との相違」は、コンポーネント間に依存関係が無いにも関わらず、それらコンポーネントに属すサービスインタフェースの間に依存関係が存在することも意味する。これによって、コンポーネント分割の過程で予め定義されたコンポーネント間の依存関係が無いと定めたにも関わらず、それらのコンポーネントに跨ってサービスインタフェース間に依存関係ができることを防止することができる。
【０１４６】
例えば、サービスインタフェース間依存関係定義3200のデータの一例である1222では、関連元サービスインタフェースID 1204“Serv0021”で指定されるサービスインタフェースはサービスインタフェース定義3050のデータから所属コンポーネントIDが“Comp002”のコンポーネントに属す。また、関連先サービスインタフェースID 1206“Serv0011”で指定されるサービスインタフェースはサービスインタフェース定義3050のデータからから所属コンポーネントIDが“Comp001”のコンポーネントに属す。一方、コンポーネント間依存関係定義のデータの一例である1120の関連元コンポーネントID 1104が“Comp001”であり、関連先コンポーネントID 1106が“Comp0002”であるので、テーブル間依存関係とコンポーネント間依存関係の方向が逆向きである。さらに定義固定フラグ1208が“FALSE”であることから、1222に示されるサービスインタフェース間依存関係定義3200のデータは、不正な依存関係「コンポ間依存関係とサービスインタフェース間依存関係との相違」であると認識され、例えばステップ704では不正依存関係分析結果3500のデータ(図7の1724)が作成される。以上の例に示すような処理を実行する不正依存関係ポリシープログラムによって、「コンポ間依存関係とサービスインタフェース間依存関係との相違」という不正依存関係を検出することができる。
【０１４７】
不正依存関係ポリシー定義3400の「コンポ間依存関係とテーブル間依存関係との相違」1626に対応する不正依存関係ポリシープログラムについて説明する。「コンポ間依存関係とテーブル間依存関係との相違」とは、コンポーネントに跨るあるテーブル間依存関係が、コンポーネントに跨る他の依存関係と逆向きであることによって、コンポーネント間に相互依存が発生する可能性がある状態を意味する。これによって、コンポーネントに跨るテーブル間依存関係の向きを、コンポーネント間依存関係に準ずるように定義することができ、コンポーネント間の相互依存を防止することができるようになる。
【０１４８】
また、「コンポ間依存関係とテーブル間依存関係との相違」は、コンポーネント間に依存関係が無いにも関わらず、それらコンポーネントに属すテーブルの間に依存関係が存在することも意味する。これによって、コンポーネント分割の過程で予め定義されたコンポーネント間の依存関係が無いと定めたにも関わらず、それらのコンポーネントに跨ってテーブル間に依存関係ができることを防止することができる。
【０１４９】
例えば、テーブル間依存関係定義3300のデータの一例である1410では、関連元テーブルID 1404“Tbl0021”で指定されるテーブルはテーブル定義3100のデータから所属コンポーネントIDが“Comp002”のコンポーネントに属す。また、関連先テーブルID 1406“Tbl0011”で指定されるテーブルはテーブル定義3100のデータから所属コンポーネントIDが“Comp001”のコンポーネントに属す。一方コンポーネント間依存関係定義のデータの一例である1120の関連元コンポーネントID 1104が“Comp001”であり関連先コンポーネントID 1106が“Comp0002”であり、テーブル間依存関係とコンポーネント間依存関係の方向が逆向きである。さらに定義固定フラグ1408が“FALSE”であることから、1410に示されるテーブル間依存関係定義3300のデータは、不正な依存関係「コンポ間依存関係とテーブル間依存関係との相違」であると認識され、例えばステップ704では不正依存関係分析結果3500のデータ(図7の1726)が作成される。以上の例に示すような処理を実行する不正依存関係ポリシープログラムによって、「コンポ間依存関係とテーブル間依存関係との相違」という不正依存関係を検出することができる。
【０１５０】
以上では、不正依存関係ポリシープログラムのプログラムの一例として、「同一コンポ内でのサービス呼び出し」、「他コンポのテーブル直接参照」、「コンポ間依存関係とサービスインタフェース間依存関係との相違」、及び「コンポ間依存関係とテーブル間依存関係との相違」を示したが、他の不正依存関係ポリシープログラムについても同様にして不正な依存関係を検出する処理を実行することにより、各種不正依存関係を検出することができる。
【０１５１】
以下、図6のステップ604における改善策適用について詳しく説明するために、まず用いるデータの例を説明する。コンポーネント定義3000(図8)のデータとして820及び821がある。サービスインタフェース定義3050(図9)のデータとして920がある。テーブル定義3100(図10)のデータとして1020及び1022がある。コンポーネント間依存関係定義3150(図11)のデータとして1120がある。サービスインタフェース・テーブル依存関係定義3250(図13)のデータとして1310及び1312がある。テーブル間依存関係定義3300(図14)のデータとして1410がある。この場合を図２９のように示す。
【０１５２】
図２９中の、2902は820に、 2904は821に、 2906は920に、 2908は1020に、 2910は1022に、2912は1222に、2914は1220に、2916は1410に、2918は1120に、それぞれ対応している。また、不正依存関係ポリシー定義3400(図16)のデータとして1620、1622、1624、及び1626があった場合、不正な依存関係として「他コンポのテーブル直接参照」1622に該当する2912、及び「コンポ間依存関係とテーブル間依存関係との相違」1626に該当する2916を検出できる。以下、図２９に示したコンポーネント設計例の「他コンポのテーブル直接参照」2912を改善するための改善策３つを適用する場合を説明する。
【０１５３】
不正依存関係改善策定義3350のデータの一例である1520の不正依存関係改善策プログラムID 1504“hpro001”に対応する不正依存関係改善策プログラムである「関連元サービスインタフェース移動」とは、他のコンポーネントのテーブルを直接参照する、あるコンポーネントに属すサービスインタフェースを、テーブルと同じ他のコンポーネントに移動させることによって、「他コンポのテーブル直接参照」を改善する改善策である。サービスインタフェースの移動は、コンポーネント要素定義操作部104のサービスインタフェース定義3050に対する移動の操作(図5の506)による。
【０１５４】
この改善策を図２９に示すコンポーネント設計例の2912に適用した結果を、図３０に示す。図３０のコンポーネント設計では、“コンポ２” 2904に“サービス１１” 2906を移動し、図29の2912の「他コンポのテーブル直接参照」は改善された。しかし、図30に示すように、2914が新たに「他コンポのテーブル直接参照」になる。以上の例に示すような処理を実行する不正依存関係改善プログラムによって図29の2912の「他コンポのテーブル直接参照」を改善することができる。
【０１５５】
不正依存関係改善策定義3350のデータの一例である1522の不正依存関係改善策プログラムID 1504“hpro002”に対応する不正依存関係改善策プログラムである「関連先テーブル移動」とは、サービスインタフェースが直接参照先するテーブルを、サービスインタフェースと同じコンポーネントに移動させることによって、「他コンポのテーブル直接参照」を改善する改善策である。テーブルの移動は、コンポーネント要素定義操作部104のテーブル定義3100に対する移動の操作(図5の506)による。
【０１５６】
この改善策を図２９に示すコンポーネント設計例の2912に適用した結果を、図３１に示す。図３１のコンポーネント設計では、“テーブル２１” 2910が“コンポ１” 2902に移動し、2912の「他コンポのテーブル直接参照」は改善された。またこれによって、2916の「コンポ間依存関係とテーブル間依存関係との相違」という不正な依存関係も改善される。以上の例に示すような処理を実行する不正依存関係改善プログラムによって2912の「他コンポのテーブル直接参照」を改善することができる。
【０１５７】
不正依存関係改善策定義3350のデータの一例である1524の不正依存関係改善策プログラムID 1504“hpro003”に対応する不正依存関係改善策プログラムである「関連先サービスインタフェース作成」は、あるサービスインタフェースが直接参照するテーブルにアクセスする新たなサービスインタフェースをテーブルと同じコンポーネントに追加し、追加したサービスインタフェースを介してテーブルを参照することによって（サービスインタフェース間依存関係の削除と追加）、「他コンポのテーブル直接参照」を改善する改善策である。新たなサービスインタフェースの追加は、コンポーネント要素定義操作部104のサービスインタフェース定義3050に対する追加の操作(図5の502)による。また、サービスインタフェース間依存関係の削除と追加は、コンポーネント要素定義操作部104のサービスインタフェース間依存関係定義3200に対する削除と追加(図5の504と502)による。
【０１５８】
この改善策を、図２９に示すコンポーネント設計例の2912に適用した結果を、図３２に示す。図３２のコンポーネント設計では、2912が削除され、新たな“サービス２２” 2920、新たなサービスインタフェース間依存関係2922、及び新たなサービスインタフェース・テーブル間依存関係2924が追加されている。以上の例に示すような処理を実行する不正依存関係改善プログラムによって2912の「他コンポのテーブル直接参照」を改善することができる。
【０１５９】
以上では、不正依存関係改善プログラムの一例として「他コンポのテーブル直接参照」を改善する不正依存関係改善プログラムについて説明したが、他の不正依存関係改善プログラムについても同様に、コンポーネント要素定義操作部104の各種操作を利用して実現することができ、各不正依存関係を改善することができる。
【０１６０】
以下、ステップ704やステップ706で実施する不正依存関係評価点（コンポーネント設計に対する不正依存関係ポリシー点1606の総和）の算出について例を用いて説明する。不正依存関係評価点の算出例を説明するにあたり、ここでは、不正依存関係ポリシー定義3400(図16)のデータとして「同一コンポ内でのサービス呼び出し」1620、「他コンポのテーブル直接参照」1622、「コンポ間依存関係とサービスインタフェース間依存関係との相違」1624、及び「コンポ間依存関係とテーブル間依存関係との相違」1626があるとする。さらに、図２９〜図３２のコンポーネント設計を例にしてそれぞれの不正依存関係評価点について説明する。
図２９に示すコンポーネント設計における不正依存関係評価点の算出について説明する。2912は、「他コンポのテーブル直接参照」1622に該当するので不正依存関係ポリシー点は５点である。2914は、該当する不正依存関係ポリシーが無いので０点である。2916は、「コンポ間依存関係とテーブル間依存関係との相違」1626に該当するので不正依存関係ポリシー点は３点である。以上から図２９に示すコンポーネント設計における不正依存関係評価点は８点（＝５点＋０点＋３点）である。
【０１６１】
図３０に示すコンポーネント設計における不正依存関係評価点を算出について説明する。2912は、該当する不正依存関係ポリシーが無いので０点である。2914は、「他コンポのテーブル直接参照」1622に該当するので不正依存関係ポリシー点は５点である。2916は、「コンポ間依存関係とテーブル間依存関係との相違」1626に該当するので不正依存関係ポリシー点は３点である。以上から図３０に示すコンポーネント設計における不正依存関係評価点は「８点（＝０点＋５点＋３点）」である。このとき、不正依存関係改善結果評価点1808（元の設計である図２９の不正依存関係評価点８点に比した改善度合いを示す点）は０点であり、例えばステップ718を通じて1820のような不正依存関係改善案3550のデータが作成される。
【０１６２】
図３１に示すコンポーネント設計における不正依存関係評価点を算出について説明する。2912、2914、及び2916は、該当する不正依存関係ポリシーが無いので０点である。以上から図３１に示すコンポーネント設計における不正依存関係評価点は「０点（＝０点＋０点＋０点）」である。このとき、不正依存関係改善結果評価点1808は−８点であり、例えばステップ718を通じて1822のような不正依存関係改善案3550のデータが作成される。
【０１６３】
図３２に示すコンポーネント設計における評価点を算出について説明する。2914、2922、及び2924は、該当する不正依存関係ポリシーが無いので０点である。2916は、「コンポ間依存関係とテーブル間依存関係との相違」1626に該当するので不正依存関係ポリシー点は３点である。以上から図３２に示すコンポーネント設計における不正依存関係評価点は「３点（＝０点＋０点＋０点＋３点）」である。このとき、不正依存関係改善結果評価点は−５点であり、例えばステップ718を通じて1824のような不正依存関係改善案3550のデータが作成される。
【０１６４】
以上から、図２９に示すコンポーネント設計から図３１のコンポーネント設計に変更させる「関連先テーブル移動」という改善策が、不正依存関係を改善するための最も有効な改善策である。
【０１６５】
ただし、テーブル定義のデータである1022の定義固定フラグが“TRUE”であった場合にはテーブルを移動することができないので、改善策「関連テーブル移動」することができず（コンポーネント要素定義操作部104のテーブル定義に対する移動の操作でエラーが生じる）ため改善案からは除外され、この場合には図２９に示すコンポーネント設計から図３２のコンポーネント設計に変更させる「関連先サービスインタフェース作成」という改善策が、不正依存関係を改善するための最も有効な改善策になる。
【０１６６】
なお、不正依存改善結果評価点の定義から、不正依存改善結果評価点が正の数である場合は、改善策を適用することによって不正な依存関係が増えたことを意味し改悪されたことを示唆する。
【０１６７】
改善案は、コンポーネント要素定義編集部102のステップ418やステップ420において、不正依存関係改善評価点の小さい順に並べられて、表示装置204に図２６の2608や図２７の2706のように表示されるので、ユーザは不正な依存関係を改善する効果の高い改善策を選びやすくなる。
【０１６８】
本実施形態のコンポーネント分割支援装置によれば、ポリシーに反するコンポーネント要素間の依存関係を検出し、検出した不正依存関係に対する改善策の候補の提示と適用を図ることができる。結果として、コンポーネント分割作業の確実性を高めることを可能にする。
【図面の簡単な説明】
【０１６９】
【図１】本発明の実施形態に係るコンポーネント分割支援装置の構成図である。
【図２】コンポーネント分割支援装置を実現する計算機システム構成である。
【図３】コンポーネント分割支援装置のテーブル構成例である。
【図４】コンポーネント要素定義編集部の処理フローである。
【図５】コンポーネント要素定義操作部の処理内容の一例を示す表である。
【図６】改善策適用部の処理フローである。
【図７】依存関係分析部の処理フローである。
【図８】コンポーネント定義の構成及びデータの一例を示す図である。
【図９】サービスインタフェース定義の構成及びデータの一例を示す図である。
【図１０】テーブル定義の構成及びデータの一例を示す図である。
【図１１】コンポーネント間依存関係定義の構成及びデータの一例を示す図である。
【図１２】サービスインタフェース間依存関係定義の構成及びデータの一例を示す図である。
【図１３】サービスインタフェース・テーブル依存関係定義の構成及びデータの一例を示す図である。
【図１４】テーブル間依存関係定義の構成及びデータの一例を示す図である。
【図１５】不正依存関係改善策定義の構成及びデータの一例を示す図である。
【図１６】不正依存関係ポリシー定義の構成及びデータの一例を示す図である。
【図１７】不正依存関係分析結果の構成及びデータの一例を示す図である。
【図１８】不正依存関係改善案の構成及びデータの一例を示す図である。
【図１９】編集メニュー画面の一例である。
【図２０】コンポーネント定義編集画面の一例である。
【図２１】サービスインタフェース定義編集画面の一例である。
【図２２】テーブル定義編集画面の一例である。
【図２３】サービスインタフェース間依存関係定義編集画面の一例である。
【図２４】サービスインタフェース・テーブル依存関係定義編集画面の一例である。
【図２５】テーブル間依存関係定義編集画面の一例である。
【図２６】不正依存関係改善策適用画面の一例である。
【図２７】不正依存関係改善策適用画面の一例である。
【図２８】コンポーネント間依存関係定義編集画面の一例である。
【図２９】コンポーネント設計の一例である。
【図３０】コンポーネント設計の一例である。
【図３１】コンポーネント設計の一例である。
【図３２】コンポーネント設計の一例である。
【符号の説明】
【０１７０】
100：コンポーネント分割支援装置、102：コンポーネント要素定義編集部、104：コンポーネント要素操作部、106：改善策適用部、108：依存関係分析部、150：コンポーネント要素定義記憶部、170：改善策記憶部、180：依存関係ポリシー記憶部、190：依存関係分析結果記憶部、203：入力装置、204：出力装置。
【図１】
0005041986.tif 000002
【図２】
0005041986.tif 000003
【図３】
0005041986.tif 000004
【図４】
0005041986.tif 000005
【図５】
0005041986.tif 000006
【図６】
0005041986.tif 000007
【図７】
0005041986.tif 000008
【図８】
0005041986.tif 000009
【図９】
0005041986.tif 000010
【図１０】
0005041986.tif 000011
【図１１】
0005041986.tif 000012
【図１２】
0005041986.tif 000013
【図１３】
0005041986.tif 000014
【図１４】
0005041986.tif 000015
【図１５】
0005041986.tif 000016
【図１６】
0005041986.tif 000017
【図１７】
0005041986.tif 000018
【図１８】
0005041986.tif 000019
【図１９】
0005041986.tif 000020
【図２０】
0005041986.tif 000021
【図２１】
0005041986.tif 000022
【図２２】
0005041986.tif 000023
【図２３】
0005041986.tif 000024
【図２４】
0005041986.tif 000025
【図２５】
0005041986.tif 000026
【図２６】
0005041986.tif 000027
【図２７】
0005041986.tif 000028
【図２８】
0005041986.tif 000029
【図２９】
0005041986.tif 000030
【図３０】
0005041986.tif 000031
【図３１】
0005041986.tif 000032
【図３２】
0005041986.tif 000033