(57)【要約】【課題】設計情報の再利用に関するメトリクスを容易に取得したり、設計情報の変更の影響範囲を容易に把握したりすることができる設計情報管理装置を提供する。【解決手段】設計情報管理装置は、プロジェクト情報格納部と、設計情報格納部と、情報操作部とを持つ。設計情報格納部は、プロジェクト識別子と、設計情報を識別するための設計情報識別子と、親の設計情報が存在する場合に親を特定するための親情報と、設計内容を表す内容情報と、を含んだ設計情報を記憶する。情報操作部は、設計情報を更新する場合には変更前の設計情報についての現在状態情報を無効とし変更後の設計情報を作成し変更後の設計情報における親情報が変更前の設計情報を指すように設定し、情報を複製する場合には複製先の設計情報を作成して複製元の設計情報の内容情報を複製先の設計情報に複製し複製先の設計情報における親情報が複製元の設計情報を指すように設定する。【選択図】図１
2018049397.tif 000002
【特許請求の範囲】
【請求項１】
プロジェクトを識別するためのプロジェクト識別子を含むプロジェクト情報を記憶するプロジェクト情報格納部と、
前記プロジェクト識別子と、前記プロジェクト内において設計情報を識別するための設計情報識別子と、複製元または変更元である親の設計情報が存在する場合に前記親を特定するための親情報と、設計情報が有効であるか無効であるかを表す現在状態情報と、設計内容を表す内容情報と、を含んだ設計情報を記憶する設計情報格納部と、
前記プロジェクト情報および前記設計情報を、作成し、更新し、あるいは削除する機能を有し、前記設計情報を更新する場合には変更前の前記設計情報についての前記現在状態情報を無効とするとともに変更後の前記設計情報を作成し前記変更後の設計情報における前記親情報が前記変更前の設計情報を指すように設定し、前記設計情報を複製する場合には複製先の前記設計情報を作成して複製元の前記設計情報の前記内容情報を複製先の設計情報に複製するとともに複製先の設計情報における前記親情報が前記複製元の設計情報を指すように設定する、情報操作部と、
を備える設計情報管理装置。
【請求項２】
指定された前記設計情報を起点として、設計情報の前記親情報に基づいて前記起点から親の方向の設計情報を順次たどるとともに前記起点の設計情報の内容情報が存在する最古の親を特定し、特定された前記最古の親から設計情報の前記親情報に基づいて子の方向の設計情報を順次たどることによって、前記起点の設計情報の前記内容情報を変更する場合に影響を受ける可能性のある範囲を検出する変更影響検出部、
をさらに備える請求項１に記載の設計情報管理装置。
【請求項３】
前記設計情報が持つ前記親情報に基づいて、指定された指定プロジェクトについて、前記指定プロジェクトが他のプロジェクトの設計情報を再利用した数に関する統計である第１統計情報と、前記指定プロジェクトが前記指定プロジェクト自身の設計情報を再利用した数に関する統計である第２統計情報と、他のプロジェクトが前記指定プロジェクトの設計情報を再利用した数に関する統計である第３統計情報とを算出するメトリクス計測部、
をさらに備える請求項１または請求項２に記載の設計情報管理装置。
【請求項４】
コンピューターを、
プロジェクトを識別するためのプロジェクト識別子を含むプロジェクト情報を記憶するプロジェクト情報格納部、
前記プロジェクト識別子と、前記プロジェクト内において設計情報を識別するための設計情報識別子と、複製元または変更元である親の設計情報が存在する場合に前記親を特定するための親情報と、設計情報が有効であるか無効であるかを表す現在状態情報と、設計内容を表す内容情報と、を含んだ設計情報を記憶する設計情報格納部、
前記プロジェクト情報および前記設計情報を、作成し、更新し、あるいは削除する機能を有し、前記設計情報を更新する場合には変更前の前記設計情報についての前記現在状態情報を無効とするとともに変更後の前記設計情報を作成し前記変更後の設計情報における前記親情報が前記変更前の設計情報を指すように設定し、前記設計情報を複製する場合には複製先の前記設計情報を作成して複製元の前記設計情報の前記内容情報を複製先の設計情報に複製するとともに複製先の設計情報における前記親情報が前記複製元の設計情報を指すように設定する、情報操作部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、設計情報管理装置およびプログラムに関する。
【背景技術】
【０００２】
情報システムやコンピューターソフトウェア等の開発を行う際には、その過程の一つとして設計プロセスが実行される。設計プロセスにおいては、開発者は設計情報を作成する。
設計情報は、当該設計情報を識別するための識別子と、設計情報の内容そのものとを持つものである。設計情報は、開発のライフサイクルを通じて作成され、更新され、削除され、あるいは検索されるものである。設計情報の保管には、設計情報の作成、更新、削除の履歴を管理するため、構成管理システム等を利用する。
【０００３】
また、設計情報は、再利用される場合がある。これは、過去の設計情報の少なくとも一部を再利用するほうが、新たにゼロから設計情報を作成するよりコストが少ない場合があるためである。設計情報を再利用する場合には、既存の設計情報を複製し、新しい設計情報に識別子を新たに与えて、構成管理システムに格納する。
【０００４】
例えば、特許文献１には、設計データ（設計書）の再利用を可能としたシステムが記載されている。このシステムでは、設計データ個別の識別ＩＤを付してリポジトリに記憶させるとともに、個々の設計データに関連する設計理由を別のリポジトリ１６に記憶させ、設計理由に基づいた検索により設計データの再利用を可能としている。
また、例えば、特許文献２には、ソフトウェア部品の設計情報をデータベースに格納し、キーワードにより検索可能としたシステムが記載されている。
なお、ここで、設計情報の再利用とは、既存の設計情報を複製して別目的でそのまま利用したり、既存の設計情報を複製してからさらに変更を加えて利用したりすることである。
【０００５】
しかしながら、従来技術による設計情報の管理の方法には、大きく、２つの課題がある。第１の課題は、設計情報の再利用に関するメトリクスを取得できるようにすることである。また、第２の課題は、設計情報が再利用された状況において、その設計情報を変更する場合に、変更の影響範囲を取得できるようにすることである。各課題について、次に、より詳細に説明する。
【０００６】
第１の課題に関して、従来技術による構成管理システムは、設計情報の再利用は可能であるものの、その再利用に関するメトリクスを適切に且つ簡便に取得することができない可能性があった。
前述の通り、設計情報の再利用の主たる目的は、開発コストの削減である。なお、設計情報の再利用には、次の２種類の態様があった。第１は、プロジェクト内での設計情報の再利用である。第２は、プロジェクトをまたがった設計情報の再利用、即ち、他プロジェクトの設計情報を再利用して自プロジェクトの設計情報として活用する態様である。設計情報の再利用によってプロジェクトのコスト削減を目指す立場からは、各種指標（メトリクス）を簡単に取得することが望まれる。ここで、メトリクスとは、具体的には、設計情報がプロジェクト内で再利用された割合や、自プロジェクトが他プロジェクトの設計情報を再利用した割合や、自プロジェクトの設計情報を他プロジェクトが再利用した割合などである。しかしながら、従来技術による構成管理システムは、管理対象である設計情報がどの設計情報から再利用されたかという情報を持っておらず、そのため、上記のようなメトリクスを計測することが簡単にはできない可能性があった。
【０００７】
第２の課題に関して、従来技術による構成管理システムは、設計情報の再利用は可能であるものの、ある設計情報が他のどの設計情報から再利用されたかという情報を持っていなかった。そのため、設計情報を変更しようとしたときに、その変更の影響範囲を簡単に検出することが出来ない可能性があった。
ある設計情報が再利用される場合、その設計情報は、複数のプロジェクトの複数の設計情報の再利用元になり得る。再利用した設計情報に何らかの変更を加える必要が生じた場合、その変更を再利用元の設計情報にも反映させる必要がある可能性もある。また、再利用元の設計情報にも変更を行う必要があるなら、当該設計情報を再利用元とする全ての再利用先の設計情報にも、その変更を反映させる必要がある可能性がある。再利用によってプロジェクトのコスト削減を目指す立場からは、ある設計情報を変更する場合、その影響範囲として変更対象の設計情報の再利用元の設計情報と、その再利用元から再利用された全ての設計情報を、適切に知ることが必要である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−３３０９９８号公報
【特許文献２】特開２００６−０１８４４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明が解決しようとする課題は、設計情報の再利用に関するメトリクスを容易に取得したり、設計情報の変更の影響範囲を容易に把握したりすることができる設計情報管理装置およびプログラムを提供することである。
【課題を解決するための手段】
【００１０】
実施形態の設計情報管理装置は、プロジェクト情報格納部と、設計情報格納部と、情報操作部とを持つ。プロジェクト情報格納部は、プロジェクトを識別するためのプロジェクト識別子を含むプロジェクト情報を記憶する。設計情報格納部は、前記プロジェクト識別子と、前記プロジェクト内において設計情報を識別するための設計情報識別子と、複製元または変更元である親の設計情報が存在する場合に前記親を特定するための親情報と、設計情報が有効であるか無効であるかを表す現在状態情報と、設計内容を表す内容情報と、を含んだ設計情報を記憶する。情報操作部は、前記プロジェクト情報および前記設計情報を、作成し、更新し、あるいは削除する機能を有し、前記設計情報を更新する場合には変更前の前記設計情報についての前記現在状態情報を無効とするとともに変更後の前記設計情報を作成し前記変更後の設計情報における前記親情報が前記変更前の設計情報を指すように設定し、前記設計情報を複製する場合には複製先の前記設計情報を作成して複製元の前記設計情報の前記内容情報を複製先の設計情報に複製するとともに複製先の設計情報における前記親情報が前記複製元の設計情報を指すように設定する。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態の設計情報管理装置１の概略機能構成を示すブロック図。
【図２】第１の実施形態の設計情報管理装置１のメニュー画面を示す概略図。
【図３】第１の実施形態の設計情報管理装置１のプロジェクト作成画面を示す概略図。
【図４】第１の実施形態の設計情報管理装置１のプロジェクト選択画面を示す概略図。
【図５】第１の実施形態の設計情報管理装置１のプロジェクト複製画面を示す概略図。
【図６】第１の実施形態の設計情報管理装置１のプロジェクト削除画面を示す概略図。
【図７】第１の実施形態の設計情報管理装置１の設計情報作成画面を示す概略図。
【図８】第１の実施形態の設計情報管理装置１のプロジェクトメトリクス表示画面を示す概略図。
【図９】第１の実施形態の設計情報管理装置１の設計情報選択画面を示す概略図。
【図１０】第１の実施形態の設計情報管理装置１の設計情報編集画面を示す概略図。
【図１１】第１の実施形態の設計情報管理装置１の設計情報複製画面を示す概略図。
【図１２】第１の実施形態の設計情報管理装置１の設計情報削除画面を示す概略図。
【図１３】第１の実施形態の設計情報管理装置１の設計情報変更影響範囲表示画面（その１）を示す概略図。
【図１４】第１の実施形態の設計情報管理装置１の設計情報変更影響範囲表示画面（その２）を示す概略図。
【図１５】第１の実施形態のプロジェクト情報格納部２１の仕様を示す概略図。
【図１６】第１の実施形態の設計情報格納部２２の仕様を示す概略図である。
【図１７】第１の実施形態の情報操作部１１の仕様を示す概略図。
【図１８】第１の実施形態の情報操作部１１のプロジェクト作成メソッドの詳細な処理手順等を説明するための概略図。
【図１９】第１の実施形態の情報操作部１１のプロジェクト識別子一覧取得メソッドの詳細な処理手順等を説明するための概略図。
【図２０】第１の実施形態の情報操作部１１のプロジェクト複製メソッドの詳細な処理手順等を説明するための概略図。
【図２１】第１の実施形態の情報操作部１１のプロジェクト削除メソッドの詳細な処理手順等を説明するための概略図。
【図２２】第１の実施形態の情報操作部１１の設計情報作成メソッドの詳細な処理手順等を説明するための概略図。
【図２３】第１の実施形態の情報操作部１１の設計情報識別子一覧取得メソッドの詳細な処理手順等を説明するための概略図。
【図２４】第１の実施形態の情報操作部１１の設計情報複製メソッドの詳細な処理手順等を説明するための概略図。
【図２５】第１の実施形態の情報操作部１１の設計情報削除メソッドの詳細な処理手順等を説明するための概略図。
【図２６】第１の実施形態の情報操作部１１の設計情報更新メソッドの詳細な処理手順等を説明するための概略図。
【図２７】第１の実施形態の情報操作部１１のメソッド「getユニークID」の詳細な処理手順等を説明するための概略図。
【図２８】第１の実施形態の変更影響検出部１２が設計情報の変更の履歴をたどって、影響範囲を検出する処理を説明するための、変更履歴の概略図（その１）。
【図２９】第１の実施形態の変更影響検出部１２が設計情報の変更の履歴をたどって、影響範囲を検出する処理を説明するための、変更履歴の概略図（その２）。
【図３０】第１の実施形態の変更影響検出部１２が設計情報の変更の履歴をたどって、影響範囲を検出する処理を説明するための、変更履歴の概略図（その３）。
【図３１】第１の実施形態の変更影響検出部１２の仕様を示す概略図。
【図３２】第１の実施形態の変更影響検出部１２の変更影響範囲検出メソッドの詳細な処理手順等を説明するための概略図。
【図３３】第１の実施形態の変更影響検出部１２の設定先祖設計情報取得メソッドの詳細な処理手順等を説明するための概略図。
【図３４】第１の実施形態の変更影響検出部１２の子孫取得メソッドの詳細な処理手順等を説明するための概略図。
【図３５】第１の実施形態のメトリクス計測部１３の仕様を示す概略図。
【図３６】第１の実施形態のメトリクス計測部１３のメトリクス計測メソッドの詳細な処理手順等を説明するための概略図。
【図３７】第１の実施形態のメトリクス計測部１３が有する再利用設計情報取得メソッドの詳細な処理手順等を説明するための概略図。
【図３８】第１の実施形態のメトリクス計測部１３が有する被再利用設計情報取得メソッドの詳細な処理手順等を説明するための概略図。
【図３９】第１の実施形態のメトリクス計測部１３が有する「get先祖」メソッドの詳細な処理手順等を説明するための概略図。
【図４０】第１の実施形態のメトリクス計測部１３が有する「is子孫」メソッドの詳細な処理手順等を説明するための概略図。
【発明を実施するための形態】
【００１２】
以下、実施形態の設計情報管理装置およびプログラムを、図面を参照して説明する。
【００１３】
図１は、本実施形態による設計情報管理装置の概略機能構成を示すブロック図である。図示するように、設計情報管理装置１は、インタフェース部１０と、情報操作部１１と、変更影響検出部１２と、メトリクス計測部１３と、プロジェクト情報格納部２１と、設計情報格納部２２とを含んで構成される。設計情報管理装置１を構成する上記の各部は、例えば、電子回路を用いて実現される。一例として、各部は、ＣＰＵ（中央処理装置）がコンピュータープログラムを実行する形態で実現されてもよい。また、各部は、情報を記憶するために半導体メモリーや磁気ハードディスク装置等の記憶手段を含んで構成される場合もある。
また、設計情報管理装置１は、端末装置３０に接続され、端末装置３０との間で情報のやり取りを行う。
設計情報管理装置１は、例えば、サーバーコンピューターを用いて実現される。また、端末装置３０としては、例えば、パーソナルコンピューターや、タブレット端末や、スマートフォンや、ウェアラブル端末などが用いられる。
設計情報管理装置１と端末装置３０とは、例えば、通信ネットワーク（ＷＡＮやＬＡＮ）を用いて接続される。設計情報管理装置１と端末装置３０との間では、例えば、インターネットプロトコル（ＩＰ）を用いた通信が行われる。
なお、各部の機能は、次に説明する通りである。
【００１４】
インタフェース部１０は、端末装置３０と、設計情報管理装置１内の各部とを接続し、仲介する機能を有する。具体的には、インタフェース部１０は、端末装置３０からの指示を受信して設計情報管理装置１内の各部に伝えたり、逆に各部から渡される情報を表示するために端末装置３０側に送信したりする。
【００１５】
情報操作部１１は、インタフェース部１０を経由して受けた指示により、プロジェクト情報や設計情報を操作する。具体的には、情報操作部１１は、プロジェクト情報格納部２１に格納されたプロジェクト情報や、設計情報格納部２２に格納された設計情報を、作成したり、更新したり、削除したり、検索したりする。
【００１６】
より詳細には、情報操作部１１は、プロジェクト情報および設計情報を、作成し、更新し、あるいは削除する機能を有する。また、情報操作部１１は、設計情報を更新する場合には変更前の設計情報についての現在状態情報を無効とするとともに変更後の設計情報を作成し変更後の設計情報における親情報が変更前の設計情報を指すように設定する。また、情報操作部１１は、設計情報を複製する場合には複製先の設計情報を作成して複製元の設計情報の内容情報を複製先の設計情報に複製するとともに複製先の設計情報における親情報が複製元の設計情報を指すように設定する。
【００１７】
変更影響検出部１２は、インタフェース部１０を経由して受けた指示に基づき、設計情報の変更の影響範囲を検出する。
より詳細には、変更影響検出部１２は、指定された前記設計情報を起点として、設計情報の前記親情報に基づいて前記起点から親の方向の設計情報を順次たどるとともに前記起点の設計情報の内容情報が存在する最古の親を特定する。そして、変更影響検出部１２は、特定された前記最古の親から設計情報の前記親情報に基づいて子の方向の設計情報を順次たどることによって、前記起点の設計情報の前記内容情報を変更する場合に影響を受ける可能性のある範囲を検出する。
【００１８】
メトリクス計測部１３は、インタフェース部１０を経由して受けた指示に基づき、プロジェクトのメトリクスを計測する。
より詳細には、メトリクス計測部１３は、設計情報が持つ親情報に基づいて、指定された指定プロジェクトについて、指定プロジェクトが他のプロジェクトの設計情報を再利用した数に関する統計である第１統計情報と、指定プロジェクトが指定プロジェクト自身の設計情報を再利用した数に関する統計である第２統計情報と、他のプロジェクトが指定プロジェクトの設計情報を再利用した数に関する統計である第３統計情報とを算出する。また、メトリクス計測部１３は、後述するメソッドを用いて、設計情報間の履歴をたどりながら、利用／被利用の関係を取得する。また、メトリクス計測部１３は、得られた利用／被利用の関係に基づいて、設計情報の数等に関する統計的計算を行うことにより、上記の統計情報を算出する。
【００１９】
プロジェクト情報格納部２１は、プロジェクト情報格納部は、システム開発プロジェクトやソフトウェア開発プロジェクトの識別子の情報を格納する。
具体的には、プロジェクト情報格納部２１は、プロジェクトを識別するためのプロジェクト識別子を含むプロジェクト情報を記憶する。
プロジェクト情報格納部２１に格納されるプロジェクト情報の各インスタンスは、次の（１）および（２）の情報を持つ。
（１）変数id  ：  ストリング（String）型
（２）変数current  ：  ブーレアン（Boolean）型
上記の変数idは、プロジェクト識別子の文字列を格納する。また、変数currentは、そのプロジェクト情報が有効（true）であるか無効（false）であるかを表すものである。
なお、ある時点において、有効なプロジェクト（current=true）は、プロジェクト識別子（変数id）によってユニークに識別可能である。
【００２０】
設計情報格納部２２は、システム開発プロジェクトやソフトウェア開発プロジェクトで定義される設計情報（システムやソフトウェア等の仕様）の識別子と、具体的な設計内容とから成る設計情報を格納する。
設計情報格納部２２は、設計情報を記憶する。設計情報は、属するプロジェクトを識別するためのプロジェクト識別子を含む。また、設計情報は、前記プロジェクト内において設計情報を識別するための設計情報識別子を含む。また、設計情報は、複製元または変更元である親の設計情報が存在する場合に前記親を特定するための親情報を含む。また、設計情報は、設計情報が有効であるか無効であるかを表す現在状態情報を含む。また、設計情報は、設計内容を表す内容情報を含む。
【００２１】
設計情報格納部２２に格納される設計情報の各インスタンスは、次の（３）から（８）までの情報を持つ。
（３）変数id  ：  ストリング型
（４）変数parentId  ：  ストリング型（親情報）
（５）変数current  ：  ブーレアン型（現在状態情報）
（６）変数projectId  ：  ストリング型
（７）変数specId  ：  ストリング型
（８）変数contents   Map<String,String>型
変数idは、設計情報のインスタンスをユニークに識別するための識別情報である。
変数parentIdは、当該設計情報の親の設計情報のidを格納する。変数parentIdは、親識別子とも呼ばれる。例えば、ある設計情報が複製されたとき、複製元設計情報が親であり、複製先設計情報が子である。また、例えば、ある設計情報が更新（内容変更）されたとき、更新前の設計情報が親であり、更新後の設計情報が子である。
変数currentは、当該設計情報インスタンスが有効（true）であるか無効（false）であるかを表す。
変数projectIdは、当該設計情報インスタンスが属するプロジェクトを識別するための情報である。当該変数projectIdの値は、プロジェクト情報格納部２１に格納されるプロジェクト情報の変数projectIdと関連付けられる。
変数specIdは、当該設計情報を識別するための情報である。
変数contentsは、設計情報の内容を保持するものである。設計情報の内容は、属性名（ストリング型）と属性値（ストリング型）とのペアのリストとして表現される。
なお、設計情報の主キーは、上記の変数idである。変数idは、設計情報のインスタンスをユニークに識別する。また、ある時点において、有効な設計情報（current=true）は、プロジェクト識別子（変数projectId）と設計情報識別子（変数specId）との組み合わせによってユニークに特定される。
【００２２】
端末装置３０は、設計情報管理装置１との間で、データをやりとりする。端末装置３０は、ユーザーによって使用される。端末装置３０は、ユーザーの操作に基づいて、設計情報管理装置１のインタフェース部１０に対する指示を送信したり、インタフェース部１０から送られてくる情報を自身の画面に表示したりする。具体的には、端末装置３０は、プロジェクト情報や設計情報を、作成し、更新し、削除し、検索するための指示をインタフェース部１０に送信する。また、端末装置３０は、設計情報の変更の影響範囲を表示させたり、設計情報の再利用に関するメトリクスを表示させたりするための指示を、インタフェース部１０に送信する。
【００２３】
図２は、設計情報管理装置１のメニュー画面を示す概略図である。このメニュー画面は、インタフェース部１０の機能により、端末装置３０の画面に表示されるものである。図示するように、メニュー画面は、クリック可能な複数のメニュー項目を含んでいる。図内において、下線を引いた項目は、クリック可能なメニュー項目である。クリック可能なメニュー項目は、ユーザーのクリック操作により遷移するリンク先の情報（ＵＲＩ等）に関連付けられている。なお、メニュー項目の中には、状況（コンテキスト）に応じて表示されたり表示されなかったりするものもある。
【００２４】
具体的には、メニュー画面は、クリック可能なメニュー項目として、「プロジェクト作成」、「プロジェクト選択」を含んでいる。
また、上記の「プロジェクト選択」によってプロジェクトが選択済みである場合には、選択済みプロジェクトの識別子が表示される。図示する例では、選択済みプロジェクトは「ＸＸ社向け勤怠システム」である。
また、プロジェクトが選択済みである場合には、クリック可能なメニュー項目として、「プロジェクト複製」、「プロジェクト削除」、「プロジェクトメトリクス表示」、「設計情報作成」、「設計情報選択」が表示される。これらのメニュー項目の機能は、選択済みのプロジェクトを対象とした各種処理のためのものである。
【００２５】
また、上記の「設計情報選択」によって設計情報が選択済みである場合（この場合には、前提として、プロジェクトも選択済みである）には、選択済み設計情報の識別子が表示される。図示する例では、選択済み設計情報は「ユーザー管理機能」である。
また、設計情報が選択済みである場合には、クリック可能なメニュー項目として、「設計情報編集」、「設計情報複製」、「設計情報削除」、「設計情報変更影響範囲表示」が表示される。これらのメニュー項目の機能は、選択済みのプロジェクトの、選択済みの設計情報を対象とした各種処理のためのものである。
【００２６】
図３から図１４までにおいては、設計情報管理装置１のユーザーインタフェース（画面等）の観点から、各部の機能を説明する。
【００２７】
図３は、設計情報管理装置１のプロジェクト作成画面を示す概略図である。前述のメニュー画面で「プロジェクト作成」が選択された場合に、インタフェース部１０は、このプロジェクト作成画面を表示する。
【００２８】
図示するように、プロジェクト作成画面は、プロジェクト識別子を入力するための入力欄と、「プロジェクト作成」のボタンとを含んでいる。ユーザー（例えば、システム開発担当者）は、キーボード等を操作して入力欄にプロジェクト識別子を入力し、「プロジェクト作成」ボタンを押す操作を行うことができる。その操作が為されると、インタフェース部１０は、情報操作部１１のプロジェクト作成メソッドを呼び出す。このプロジェクト作成メソッドが呼ばれると、情報操作部１１は、プロジェクト新規作成メソッドを実行する。また、プロジェクト新規作成が行われると、インタフェース部１０は、新規に作成されたプロジェクトのプロジェクト識別子を、選択済みのプロジェクト識別子として記憶する。またこれに伴い、インタフェース部１０は、前述のメニュー画面に、選択済みのプロジェクト識別子を表示する。
【００２９】
図４は、設計情報管理装置１のプロジェクト選択画面を示す概略図である。前述のメニュー画面で「プロジェクト選択」が選択された場合に、インタフェース部１０は、このプロジェクト選択画面を表示する。
【００３０】
図示するように、プロジェクト選択画面は、プロジェクト識別子の一覧リストを含んだ表示を行う。図示する例では、「ＸＸ社様向け勤怠システム」や「ＸＸ社様向け受注システム」などといったプロジェクト識別子のリストが表示されている。これらのプロジェクト識別子は、プロジェクト情報格納部２１に格納されているものである。なお、インタフェース部１０は、情報操作部１１のプロジェクト識別子一覧取得メソッドを呼び出すことにより、このプロジェクト選択画面に表示するためのプロジェクト識別子の一覧を取得する。プロジェクト選択画面は、表示されたプロジェクト識別子の一覧リストからユーザーが一つを選択できるように構成されている。表示されている一覧リストからユーザーが一つのプロジェクト識別子を選択する操作を行うと、インタフェース部１０はそのプロジェクト識別子を、選択されたプロジェクト識別子として記憶する。またこれに伴い、インタフェース部１０は、前述のメニュー画面に、選択済みのプロジェクト識別子を表示する。
【００３１】
図５は、設計情報管理装置１のプロジェクト複製画面を示す概略図である。前述のメニュー画面で「プロジェクト複製」が選択された場合に、インタフェース部１０は、このプロジェクト複製画面を表示する。
【００３２】
図示するように、プロジェクト複製画面は、その時点での選択済みプロジェクト識別子を表示する。この選択済みプロジェクトが、複製処理における複製元のプロジェクトとなる。また、プロジェクト複製画面は、プロジェクト識別子入力欄（「複製して作成するプロジェクト識別子」と表示されている欄）とプロジェクト複製ボタンを含んでいる。ユーザーは、このプロジェクト複製画面におけるプロジェクト識別子入力欄に、プロジェクト識別子を入力し、プロジェクト複製ボタンを押下することができる。ユーザーの操作によってプロジェクト複製ボタンが押下されると、インタフェース部１０は、情報操作部１１のプロジェクト複製メソッドを呼び出す。すると、情報操作部１１は、プロジェクト複製メソッドを実行する。その結果として、情報操作部１１は、複製元のプロジェクトを複製して、新たなプロジェクトを生成する。複製により生成された新たなプロジェクト情報もまた、プロジェクト情報格納部２１に格納される。プロジェクトの複製の処理が終了すると、インタフェース部１０は、生成されたプロジェクト識別子を、選択されたプロジェクト識別子として記憶する。またこれに伴い、インタフェース部１０は、前述のメニュー画面に、選択済みのプロジェクト識別子を表示する。
【００３３】
図６は、設計情報管理装置１のプロジェクト削除画面を示す概略図である。前述のメニュー画面で「プロジェクト削除」が選択された場合に、インタフェース部１０は、このプロジェクト削除画面を表示する。
【００３４】
図示するように、プロジェクト削除画面は、その時点での選択済みプロジェクト識別子を表示する。この選択済みプロジェクトが、ここで削除処理の対象となるプロジェクトである。また、プロジェクト複製画面は、プロジェクト削除ボタンをも表示している。
ユーザーは、このプロジェクト削除ボタンを押下することができる。ユーザーの操作によってプロジェクト削除ボタンが押下されると、インタフェース部１０は、情報操作部１１のプロジェクト削除メソッドを呼び出す。すると、情報操作部１１は、プロジェクト削除メソッドを実行する。プロジェクトの削除の処理はその時点での選択済みのプロジェクトを削除するものであるので、削除処理が完了すると選択されたプログラムはなくなる。したがって、インタフェース部１０は、記憶されていた選択済みプロジェクト識別子をクリアする。またこれに伴い、インタフェース部１０は、前述のメニュー画面を、選択済みプロジェクト識別子が存在しない状態に更新する。
【００３５】
図７は、設計情報管理装置１の設計情報作成画面を示す概略図である。前述のメニュー画面で「設計情報作成」が選択された場合に、インタフェース部１０は、この設計情報作成画面を表示する。
【００３６】
図示するように、設計情報作成画面は、その時点での選択済みプロジェクト識別子を表示する。この選択済みプロジェクトは、ここで設計情報を作成する対象のプロジェクトである。また、設計情報作成画面は、設計情報識別子入力欄と、設計情報入力欄と設計情報作成ボタンをも含んでいる。ユーザーは、設計情報識別子入力欄に設計情報識別子を入力し、設計情報作成ボタンを押下することができる。また、このとき、ユーザーが設計情報入力欄に設計情報を入力できるようにしてもよい。ユーザーが設計情報作成ボタンを押下すると、インタフェース部１０は、情報操作部１１の設計情報作成メソッドを呼び出す。すると、情報操作部１１は、設計情報作成メソッドを実行し、設計情報を作成する。情報操作部１１が作成した設計情報は、設計情報格納部２２に格納される。
【００３７】
図８は、設計情報管理装置１のプロジェクトメトリクス表示画面を示す概略図である。前述のメニュー画面で「プロジェクトメトリクス表示」が選択された場合に、インタフェース部１０は、このプロジェクトメトリクス表示画面を表示する。
【００３８】
図示するように、プロジェクトメトリクス表示画面は、その時点での選択済みプロジェクト識別子を表示する。また、プロジェクトメトリクス表示画面は、その選択済みのプロジェクトが有する設計情報の個数を表示する。図示する例では、設計情報の個数は１０００である。また、プロジェクトメトリクス表示画面は、その選択済みのプロジェクトのメトリクスを表示する。図示する例では、プロジェクトメトリクス表示画面は、メトリックスとして、再利用元プロジェクトに関する統計情報（図内の左側）と、再利用先プロジェクトに関する統計情報（図内の右側）とを含む。
【００３９】
再利用元プロジェクトに関する情報としては、再利用元のプロジェクトの名称（プロジェクト識別子）とその再利用元プロジェクトから再利用した数（再利用数）とのペアのリストが含まれる。図示する例では、第１番目に「プロジェクトＸ」（再利用数１００個）、第２番目に「プロジェクトＹ」（再利用数５００個）が、リストされている。
また、再利用先プロジェクトに関する情報としては、再利用先のプロジェクトの名称（プロジェクト識別子）とその再利用先プロジェクトによって再利用された数（被再利用数）とのペアのリストが含まれる。図示する例では、第１番目に「プロジェクトＺ」（被再利用数１００個）、第２番目に「プロジェクトＷ」（被再利用数５０個）が、リストされている。
【００４０】
なお、メニュー画面で「プロジェクトメトリクス表示」が選択されると、インタフェース部１０は、メトリクス計測部１３のプロジェクトメトリクス計測メソッドを呼び出す。メトリクス計測部１３は、呼ばれたプロジェクトメトリクス計測メソッドを実行し、その結果として、プロジェクトメトリクスの情報をインタフェース部１０に返す。メトリクス計測部１３から結果を受け取ったインタフェース部１０は、上で説明したプロジェクトメトリクス表示画面を表示する。
【００４１】
図９から図１４までは、設計情報の選択、編集、複製、削除と、設計情報の変更の影響範囲表示に関する画面を示すものである。
【００４２】
図９は、設計情報管理装置１の設計情報選択画面を示す概略図である。前述のメニュー画面で「設計情報選択」が選択された場合に、インタフェース部１０は、この設計情報選択画面を表示する。
【００４３】
図示するように、設計情報選択画面は、選択済みのプロジェクト識別子を表示する。また、設計情報選択画面は、選択されているプロジェクトに関して、設計情報識別子の一覧リストを含んだ表示を行う。図示する例では、「ログイン機能」や「ログイン画面」などといった設計情報識別子のリストが表示されている。これらの設計情報識別子は、プロジェクト識別子と関連付ける形で、設計情報格納部２２に格納されている。インタフェース部１０は、情報操作部１１の設計情報識別子一覧取得メソッドを呼び出すことにより、この設計情報識別子の一覧リストを取得する。ユーザーは、設計情報選択画面において、設計情報識別子の一つを選択することができる。そして、ユーザーが設計情報識別子を選択すると、インタフェース部１０は、その設計情報識別子を、選択済み設計情報識別子として記憶する。また、それとともに、インタフェース部１０は、前述のメニュー画面内に選択済み設計情報の識別子を表示する。
【００４４】
図１０は、設計情報管理装置１の設計情報編集画面を示す概略図である。前述のメニュー画面で「設計情報編集」が選択された場合に、インタフェース部１０は、この設計情報編集画面を表示する。設計情報編集画面は、選択済みのプロジェクト識別子と、選択済みの設計情報識別子とを表示する。この選択されたプロジェクトの、選択された設計情報が、設計情報編集画面における編集対象の情報である。
【００４５】
また、設計情報編集画面は、編集対象である設計情報に含まれる、属性名と属性値のペアのリストが表示される。図示する例では、属性名「説明」に対応して属性値「ユーザー情報を管理する機能」が表示され、また属性名「データ」に対応して属性値「ユーザー情報テーブル」が表示され、また他の属性に関しても同様である。
また、設計情報編集画面は、設計情報更新ボタンを有している。ユーザーは、表示されている設計情報（属性名に対する属性値）を編集することができ、また、設計情報更新ボタンを押下することにより、編集した設計情報により設計情報格納部２２に格納されている設計情報を更新する指示を行うことができる。ユーザーが設計情報降雨真ボタンを押下すると、インタフェース部１０は、情報操作部１１の設計情報更新メソッドを呼び出す。そして、情報操作部１１は、設計情報更新メソッドを実行することにより、設計情報格納部２２に格納されている当該設計情報の更新を行う。
【００４６】
図１１は、設計情報管理装置１の設計情報複製画面を示す概略図である。前述のメニュー画面で「設計情報複製」が選択された場合に、インタフェース部１０は、この設計情報複製画面を表示する。
【００４７】
設計情報複製画面は、選択済みのプロジェクト識別子と、選択済みの設計情報識別子とを表示する。この選択されたプロジェクトの、選択された設計情報が、複製元となる設計情報である。また、設計情報複製画面は、複製先のプロジェクト識別子を指定するための複製先プロジェクト識別子入力欄と、複製先の設計情報識別子を指定するための設計情報識別子入力欄と、設計情報複製ボタンとを有している。ユーザーは、複製先プロジェクト識別子入力欄に複製先プロジェクト識別子を入力し、設計情報識別子入力欄に設計情報識別子を入力し、そして設計情報複製ボタンを押すことができる。ユーザーが設計情報複製ボタンを押下する操作を行うと、インタフェース部１０は、情報操作部１１の設計情報複製メソッドを呼び出す。すると、情報操作部１１は、設計情報複製メソッドを実行して、設計情報の複製を行う。
【００４８】
図１２は、設計情報管理装置１の設計情報削除画面を示す概略図である。前述のメニュー画面で「設計情報削除」が選択された場合に、インタフェース部１０は、この設計情報削除画面を表示する。
【００４９】
設計情報削除画面は、選択済みのプロジェクト識別子と、選択済みの設計情報識別子とを表示する。この選択されたプロジェクトの、選択された設計情報が、削除対象となる設計情報である。また、設計情報削除画面は、設計情報削除ボタンを有している。ユーザーは、設計情報削除画面において、設計情報削除ボタンを押下することができる。ユーザーが設計情報削除ボタンを押下すると、インタフェース部１０は、情報操作部１１の設計情報削除メソッドを呼び出す。すると、情報操作部１１は、設計情報削除メソッドを実行し、選択されていた設計情報を削除する。また、選択されていた設計情報が削除されると、インタフェース部１０は、記憶していた選択済み設計情報識別子の情報をクリアする。またこれに伴い、インタフェース部１０は、前述のメニュー画面を、選択済み設計情報が存在しない状態に更新する。
【００５０】
図１３は、設計情報管理装置１の設計情報変更影響範囲表示画面（その１）を示す概略図である。前述のメニュー画面で「設計情報変更影響範囲表示画面」が選択された場合に、インタフェース部１０は、この設計情報変更影響範囲表示画面を表示する。
【００５１】
設計情報変更影響範囲表示画面は、選択されたプロジェクト識別子の情報と、選択された設計情報識別子の情報とが表示されている。図示する例では、選択済みプロジェクト識別子は「ＸＸ社様向け勤怠システム」である。また、選択済み設計情報識別子は「ユーザー管理機能」である。また、設計情報変更影響範囲表示画面は、選択された設計情報における、属性名と属性値のペアのリストを表示している。
【００５２】
ユーザーは、このリストに含まれる属性名のうち一つを選択することができる。ユーザーがリスト中から属性名を選択する操作を行うと、インタフェース部１０は、変更影響検出部１２の設計情報変更影響範囲検出メソッドを呼び出す。すると、変更影響検出部１２は、設計情報変更影響範囲検出メソッドを実行して、結果として設計情報変更影響範囲の情報を取得する。そして、変更影響検出部１２は、設計情報変更影響範囲の情報をインタフェース部１０に返す。そして、インタフェース部１０は、変更影響検出部１２から取得した設計情報変更影響範囲の情報を、設計情報変更影響範囲表示画面を表示する。
【００５３】
図１４は、設計情報管理装置１の設計情報変更影響範囲表示画面（その２）を示す概略図である。図１３に示した画面が表示されている状態でユーザーが属性名を選択した後、インタフェース部１０が変更影響検出部１２から取得した設計情報変更影響範囲の情報を表示した画面が、この図１４の画面である。図示する例では、選択済み属性名が「説明」である場合の変更影響範囲が表示されている。この設計情報変更影響範囲表示画面（その２）は、選択された属性名「説明」の設計情報が変更された場合の設計情報変更影響範囲に含まれる設計情報の一覧リストを表示している。変更影響範囲とは、選択済みである属性名の設計情報が変更された場合に影響を受ける可能性のある範囲である。図示するように、変更影響範囲は、プロジェクト識別子と設計情報識別子とのペアのリストとして表示される。図示する例では、選択済み属性名「説明」に対応して、プロジェクト識別子「プロジェクトＸ」と設計情報識別子「ユーザー管理機能」とのペアや、プロジェクト識別子「プロジェクトＺ」と設計情報識別子「担当者管理機能」とのペアなどが、変更影響範囲として表示されている。
【００５４】
以上、インタフェース部１０が表示する画面構成例に基づいて、説明した。なお、設計情報管理装置１が設計情報を管理するための各種処理を行う際に、ユーザーインタフェースが上で説明したものと異なっていてもよい。
【００５５】
次に、図１５から図４０までを参照しながら、設計情報管理装置１を構成する各部のうち、情報操作部１１とプロジェクト情報格納部２１と設計情報格納部２２の、より具体的な処理の内容について、説明する。
【００５６】
図１５は、プロジェクト情報格納部２１の仕様を示す概略図である。なお、図内には、便宜上、行番号を示している。
なお、以下において、ストリングとは、文字列である。
第１行目から第３行目までは、プロジェクト情報格納部２１に関するスキーマ（データ）の定義を示す。スキーマは、ブーレアン（Boolean）型の変数currentと、ストリング（String）型の変数idとを含む。これらの変数は、プロジェクト情報格納部２１に格納されるプロジェクトのインスタンスごとに独立の値を保持する変数である。変数currentは、そのプロジェクトがその時点で有効であるか無効であるかを表す。変数値trueが「有効」を表し、変数値falseが「無効」を表す。また、変数idは、プロジェクト識別子を保持する変数である。
【００５７】
第４行目から第８行目までは、プロジェクト情報格納部２１が有するメソッドの仕様の定義を表す。なお、下の説明において、メソッドinsertおよびupdateのパラメーターであるプロジェクト情報は、有効・無効状態（current）とプロジェクト識別子（id）とを変数として有するオブジェクトである。
プロジェクト情報格納部２１は、メソッドとして、insert，update，select，findを有する。メソッドinsertのパラメーターはプロジェクト情報である。メソッドupdateのパラメーターは検索条件とプロジェクト情報である。メソッドselectのパラメーターは検索条件である。なお、メソッドselectは、検索結果としてカーソルを返す。カーソルは、検索結果に含まれる複数の実体（オブジェクト指向におけるインスタンス。あるいは、リレーショナルデータモデルにおける行。）に順次アクセスするためのオブジェクトである。メソッドfindのパラメーターは検索条件である。
メソッドinsertは、新たなプロジェクト情報をプロジェクト情報格納部２１に挿入するものである。メソッドupdateは、プロジェクト情報格納部２１に既に格納されているプロジェクト情報の内容を更新するものである。メソッドselectおよびfindは、プロジェクト情報格納部２１に格納されているプロジェクトのうち、引数として指定された検索条件に合致するものを返すものである。なお、メソッドselectが検索条件に合致する実体を複数返すのに対して、メソッドfindは検索条件に合致する単一の実体を返す。
【００５８】
第９行目から第１１行目までは、上記のカーソルのメソッドの仕様の定義を表す。カーソルは、メソッドとして、hasNextとnextを有する。hasNextもnextも、パラメーターを持たない。メソッドhasNextは、次の実体がまだあるか否かを示すBoolean値を返す。hasNextの値がtrue（真）であるとき、次の実体がまだあることを表す。hasNextの値がfalse（真）であるとき、次の実体がもうないことを表す。メソッドnextは、hasNextの値がtrueである場合に、次の実体を返す。メソッドnextを実行すると、カーソルが指し示す位置は、次の実体に移動する。
【００５９】
図１６は、設計情報格納部２２の仕様を示す概略図である。なお、図内には、便宜上、行番号を示している。
第１行目から第８行目までは、設計情報格納部２２に関するスキーマの定義を示す。ここでのスキーマは、ストリング型の変数idと、ストリング型の変数parentIdと、ブーレアン型の変数currentと、ストリング型の変数projectIdと、ストリング型の変数specIdと、ストリングとストリングとのペアの集合の変数であるcontentsとを含む。変数idは、識別子を格納するものである。変数parentIdは、設計情報の親識別子（親情報）を格納するものである。変数currentは、その設計情報が有効であるか無効であるかを表す。値trueが「有効」に対応し、値falseが「無効」に対応する。変数projectIdは、当該設計情報のプロジェクト識別子を格納するものである。変数specIdは、当該設計情報の設計情報識別子を格納するものである。変数contentsは、設計情報の内容を格納する。この設計情報の内容は、属性名（ストリング）と属性値（ストリング）とのペア（対応関係）の集合である。
【００６０】
第９行目から第１３行目までは、設計情報格納部２２が有するメソッドの仕様の定義を表す。設計情報格納部２２は、メソッドとして、insert，update，select，findを有する。なお、これらのメソッドは、プロジェクト情報格納部２１を対象とするか設計情報格納部２２を対象とするかが異なるだけで、図１５において説明したそれぞれ同名のメソッドと同様の機能を有するものである。よって、ここでは、詳細な説明を省略する。
【００６１】
第１４行目から第１６行目までは、カーソルのメソッドの仕様の定義を表す。カーソルは、メソッドとして、hasNextとnextを有する。なお、これらのメソッドは、プロジェクト情報格納部２１を対象とするか設計情報格納部２２を対象とするかが異なるだけで、図１５において説明したそれぞれ同名のメソッドと同様の機能を有するものである。よって、ここでは、詳細な説明を省略する。
【００６２】
図１７は、情報操作部１１の仕様を示す概略図である。なお、図内には、便宜上、行番号を示している。
同図（第１行目から第１２行目まで）は、情報操作部１１が有するメソッドの仕様の定義を表す。情報操作部１１は、メソッドとして、プロジェクト作成、プロジェクト識別子一覧取得、プロジェクト複製、プロジェクト削除、設計情報作成、設計情報識別子一覧取得、設計情報複製、設計情報削除、設計情報更新、およびgetユニークIdを有する。
これらの各メソッドの詳細な内容と処理手順については、次の図１８から図２７までを参照しながら説明する。
【００６３】
図１８は、情報操作部１１のプロジェクト作成メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、プロジェクト作成メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述しているように、プロジェクト作成メソッドは、パラメーターとしてプロジェクト識別子を有する。プロジェクト識別子は、ストリング型である。
第２行目から第５行目までは、処理手続の内容を記述している。
第２行目において、オブジェクトproject（プロジェクト情報）を初期化する。
第３行目において、オブジェクトprojectの変数idに、パラメーターであるプロジェクト識別子の値を代入する。
第４行目において、オブジェクトprojectの変数currentに、true（真）を代入する。このtrueは、当該プロジェクトが有効であることを表す値である。
そして、第４行目において、上記のオブジェクトprojectを引数として指定して、プロジェクト情報格納部２１のメソッドinsertを呼び出す。
以上の手順により、情報操作部１１のプロジェクト作成メソッドは、プロジェクト情報格納部２１に、新規のプロジェクトの情報を作成する。
【００６４】
図１９は、情報操作部１１のプロジェクト識別子一覧取得メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、プロジェクト識別子一覧取得メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、プロジェクト識別子一覧取得メソッドはパラメーターを持たない。
第２行目から第８行目までは、処理手続の内容を記述している。
第２行目において、プロジェクト情報格納部２１のメソッドselectを呼び出す。このとき、引数である検索条件として「current=true」を指定する。つまり、プロジェクト情報格納部２１に格納されている、現在有効な全てのプロジェクトの情報を抽出する。そして、メソッドselectの結果である戻り値を、オブジェクトcursor（カーソル）に代入する。
第３行目において、変数（オブジェクト）resultを初期化する。つまり、変数resultに空リストが格納されている状態とする。
【００６５】
第４行目から第７行目まではオブジェクトcursorに次の要素が残っている間繰り返されるループの処理である。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第２行目のメソッドselectで抽出されたプロジェクト情報の各々についての処理を行う。
第５行目において、オブジェクトprojectに、オブジェクトcursorの要素であるnextを代入する。つまり、未処理のプロジェクト情報を１つ、オブジェクトprojectに代入する。
第６行目において、オブジェクトresultのメソッドaddを呼び出す。このとき、オブジェクトprojectの変数であるid（プロジェクト識別子）を、メソッドaddの引数として指定する。このメソッドaddを実行することにより、オブジェクトresultが有するリストに、現在のprojectのid（プロジェクト識別子）を要素として加える。
第７行目は、第４行目からのループ（while文）の終了を示す。
第８行目において、プロジェクト識別子一覧取得メソッドは、戻り値としてオブジェクトresultを呼び出し元に返す。
以上の手順により、情報操作部１１のプロジェクト識別子一覧取得メソッドは、プロジェクト情報格納部２１に格納されているすべての有効プロジェクトの、プロジェクト識別子のリストを取得する。
【００６６】
図２０は、情報操作部１１のプロジェクト複製メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、プロジェクト複製メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目から第２行目に記述するように、プロジェクト複製メソッドは、複製元プロジェクト識別子と、複製先プロジェクト識別子とを、パラメーターとして持つ。これらの複製元プロジェクト識別子および複製先プロジェクト識別子は、それぞれストリング型である。
第３行目から第４行目のコメントは、プロジェクト複製メソッドが、複製元プロジェクトに属するすべての設計情報を複製先プロジェクトに複製するものであることを表す。
第５行目から第１３行目までは、処理手続の内容を記述している。
第５行目から第６行目において、設計情報格納部２２のメソッドselectを呼び出す。このとき、引数である検索条件として「プロジェクトid=複製元プロジェクト識別子」および「current=true」を指定する。つまり、このメソッドselectを呼び出すことにより、プロジェクト複製メソッドのパラメーターである複製元プロジェクト識別子に該当するプロジェクトの、すべての有効な設計情報を抽出する。そして、メソッドselectの結果である戻り値を、オブジェクトcursor（カーソル）に代入する。
【００６７】
第７行目から第１３行目までのwhile文は、オブジェクトcursorに次の要素が残っている間繰り返されるループの処理を記述する。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第５行目のメソッドselectで抽出された、複製元プロジェクトにおけるすべての設計情報の各々についての処理を行う。
第８行目において、オブジェクトspec（設計情報）に、オブジェクトcursorの要素であるnextを代入する。つまり、未処理の設計情報を１つ、オブジェクトspecに代入する。
第９行目から第１２行目までにおいて、情報操作部１１自身の設計情報複製メソッドを呼び出す。このとき、指定する引数は次の通りである。即ち、複製元のプロジェクト識別子は、上記のspec（設計情報）の変数であるprojectId（プロジェクト識別子）である。複製元の設計情報識別子は、同じくspecの変数であるspecId（設計情報識別子）である。複製先のプロジェクト識別子は、パラメーターで指定された複製先プロジェクト識別子である。複製先の設計情報識別子は、specの変数であるspecId、つまり複製元と同一の設計情報識別子である。この設計情報複製メソッドの呼び出しで、設計情報の１つが複製される。
第１３行目は、第７行目から始まるwhile文の終わりを示す。
以上の手順により、情報操作部１１のプロジェクト複製メソッドは、設計情報格納部２２に格納されている、特定のプロジェクトのすべての設計情報を、他のプロジェクトの設計情報として複製する。
【００６８】
図２１は、情報操作部１１のプロジェクト削除メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、プロジェクト削除メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、プロジェクト削除メソッドは、プロジェクト識別子を、パラメーターとして持つ。
第２行目から第３行目のコメントは、プロジェクト削除メソッドが、指定されたプロジェクトに属するすべての設計情報を削除するとともに、そのプロジェクトの情報を無効にすることを、表している。
第４行目から第１２行目までは、処理手続の内容を記述している。
第４行目から第５行目において、設計情報格納部２２のメソッドselectを呼び出す。このとき、引数である検索条件として「プロジェクトid=プロジェクト識別子」および「current=true」を指定する。つまり、このメソッドselectを呼び出すことにより、削除対象のプロジェクトに属するすべての有効な設計情報を抽出する。そして、メソッドselectの結果である戻り値を、オブジェクトcursor（カーソル）に代入する。
【００６９】
第６行目から第９行目までのwhile文は、オブジェクトcursorに次の要素が残っている間繰り返されるループの処理を記述する。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第４行目のメソッドselectで抽出された設計情報の各々についての処理を行う。
第７行目において、オブジェクトspec（設計情報）に、オブジェクトcursorの要素であるnextを代入する。つまり、while文中で未処理の設計情報を１つ、オブジェクトspecに代入する。
第８行目において、情報操作部１１自身の設計情報削除メソッドを呼び出す。このとき、引数として、その時点でオブジェクトspecに格納されているprojectId（プロジェクト識別子）およびspecId（設計情報識別子）を指定する。この設計情報削除メソッドを呼び出すことにより、オブジェクトspecで指定される設計情報を削除する。
第９行目は、第６行目から始まるwhile文の終わりを示す。
【００７０】
第１０行目において、プロジェクト情報格納部２１のメソッドfindを呼び出す。このとき、検索条件として、「id=プロジェクト識別子」を指定する。つまり、プロジェクト情報格納部２１内に格納されているプロジェクト情報であって、現在削除対象としているプロジェクトの情報を探し出す。そして、メソッドfindからの戻り値であるプロジェクト情報を、オブジェクトprojectに代入する。
第１１行目において、オブジェクトprojectの変数currentにfalse（偽）を代入する。つまり、現在削除対象であるプロジェクト情報を、無効とする。
第１２行目において、プロジェクト情報格納部２１のメソッドupdateを呼び出す。このとき、検索条件として「id=プロジェクト識別子」を指定する。つまり、現在削除対象としているプロジェクトを、更新の対象とする。また、更新するデータとしてオブジェクトprojectを指定する。第１１行目において説明した通り、オブジェクトprojectの変数currentにはfalseが格納されている。つまり、このメソッドupdateを呼び出すことにより、プロジェクト情報格納部２１に格納されているプロジェクト情報において、削除対象であるプロジェクトを無効にする。
以上の手順により、情報操作部１１のプロジェクト削除メソッドは、設計情報格納部２２に格納されている、特定のプロジェクトのすべての設計情報を削除する。また、プロジェクト情報格納部２１に格納されているプロジェクト情報において、そのプロジェクトを無効とする。
【００７１】
図２２は、情報操作部１１の設計情報作成メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、設計情報作成メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、設計情報作成メソッドは、プロジェクト識別子と、設計情報識別子と、内容とを、パラメーターとして持つ。
第２行目から第９行目までは、処理手続の内容を記述している。
第２行目において、オブジェクトspec（設計情報）を初期化する。
第３行目において、getユニークIDメソッドを呼び出すことによって、一意に識別可能な識別子を生成する。そして、生成された識別子を、オブジェクトspecの変数idに格納する。
第４行目において、オブジェクトspecの変数parentId（親ＩＤ）をヌル（null）に設定する。
第５行目において、オブジェクトspecの変数currentをtrue（真）に設定する。つまり、この設計情報が有効であるという値を設定する。
第６行目において、オブジェクトspecの変数projectId（プロジェクト識別子）に、パラメーターであるプロジェクト識別子の値を代入する。
第７行目において、オブジェクトspecの変数specId（設計情報識別子）に、パラメーターである設計情報識別子の値を代入する。
第８行目において、オブジェクトspecの変数contentsに、パラメーターである内容の値を代入する。
以上の第２行目から第８行目までに記述されている手続で、オブジェクトspecに、必要な値が格納された。
そして、第９行目において、設計情報格納部２２のメソッドinsertを呼び出す。このとき、引数として、上記のオブジェクトspecを指定する。これにより、設計情報格納部２２に、第２行目から第８行目までの手続で設定した設計情報が、設計情報格納部２２に格納（挿入）される。
以上の手順により、情報操作部１１の設計情報作成メソッドは、設計情報格納部２２に、新たな設計情報を作成する。
【００７２】
図２３は、情報操作部１１の設計情報識別子一覧取得メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、設計情報識別子一覧取得メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、設計情報識別子一覧取得メソッドは、検索条件を、パラメーターとして持つ。
第２行目から第８行目までは、処理手続の内容を記述している。
第２行目において、設計情報格納部２２のメソッドselectを呼び出す。このとき、設計情報識別子一覧取得メソッドのパラメーターである検索条件を、そのまま、このメソッドselectの引数として指定する。そして、メソッドselectからの戻り値を、オブジェクトcursor（カーソル）に代入する。
第３行目において、変数（オブジェクト）resultを初期化する。つまり、変数resultに空リストが格納されている状態とする。このresultは、下の第４行目から第７行目までのループ処理において、設計情報識別子を順次追加していくためのリスト（配列）である。
【００７３】
第４行目から第７行目までのwhile文は、オブジェクトcursorに次の要素が残っている間繰り返されるループの処理を記述する。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第２行目のメソッドselectで抽出された設計情報の各々についての処理を行う。
第５行目において、オブジェクトspec（設計情報）に、オブジェクトcursorの要素であるnextを代入する。つまり、未処理の設計情報を１つ、オブジェクトspecに代入する。
第６行目において、オブジェクトresultのメソッドaddを呼び出す。このとき、オブジェクトspecの変数であるspecId（設計情報識別子）を、メソッドaddの引数として指定する。このメソッドaddを実行することにより、オブジェクトresultが有するリストに、現在のspecのspecId（設計情報識別子）を要素として加える。
第７行目は、第４行目から始まるwhile文の終わりを示す。
第８行目において、設計情報識別子一覧取得メソッドは、戻り値としてオブジェクトresultを呼び出し元に返す。
以上の手順により、情報操作部１１の設計情報識別子一覧取得メソッドは、設計情報格納部２２に格納されている、検索条件に応じた設計情報の、設計情報識別子のリストを取得する。
【００７４】
図２４は、情報操作部１１の設計情報複製メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、設計情報複製メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目から第２行目に記述するように、設計情報複製メソッドは、複製元プロジェクト識別子と、複製元設計情報識別子と、複製先プロジェクト識別子と、複製先設計情報識別子とを、パラメーターとして持つ。
第３行目から第１２行目までは、処理手続の内容を記述している。
第３行目から第４行目の記述において、設計情報格納部２２のメソッドfindを呼び出す。このとき引数として指定する検索条件は、「projectId=複製元プロジェクト識別子」と、「specId=複製元設計情報識別子」と、「current=true」である。これら３つの条件の論理積が、検索条件となる。つまり、このメソッドfindを実行することにより、パラメーター（複製元プロジェクト識別子と複製元設計情報識別子）で特定された設計情報であって、現在有効である設計情報を見つける。メソッドfindの結果である設計情報は、オブジェクトspec（第１の設計情報）に代入される。
【００７５】
第５行目において、オブジェクトspec2（第２の設計情報，複製先の設計情報のためのオブジェクト）を初期化する。
第６行目において、オブジェクトspec2の変数idに、前述のメソッドgetユニークIDで生成した一意に識別可能な識別情報を、代入する。
第７行目において、オブジェクトspec2の変数parentIdにオブジェクトspecの変数idの値を代入する。つまり、複製元の設計情報のＩＤを、複製先の設計情報における親ＩＤとする。このように、変数parentIdを、複製等における設計情報間の親子関係を表すために用いる。
第８行目において、オブジェクトspec2の変数currentにtrue（真）を代入する。つまり、spec2を有効とするための値を代入する。
第９行目において、オブジェクトspec2の変数projectIdに、設計情報複製メソッドのパラメーターである複製先プロジェクト識別子を代入する。
第１０行目において、オブジェクトspec2の変数specIdに、設計情報複製メソッドのパラメーターである複製先設計情報識別子を代入する。
第１１行目において、オブジェクトspec2の変数contentsに、オブジェクトspec（複製元の設計情報）の変数contentsの値を代入する。つまり、オブジェクトspec2の設計情報の内容を、オブジェクトspecの設計情報の内容と同一にする（複製する）。
【００７６】
以上、第５行目から第１１行目までの処理で、複製先の設計情報を保持するオブジェクトspec2に値が設定された。
そして、第１２行目において、設計情報格納部２２のメソッドinsertを呼び出す。このときに指定する引数は、オブジェクトspec2である。つまり、第５行目から第１１行目までにおいて設定した値を有するオブジェクトspec2を、新たに、設計情報格納部２２に格納する（挿入する）。
以上の手順により、情報操作部１１の設計情報複製メソッドは、設計情報格納部２２に格納されているあるひとつの設計情報を、複製し、設計情報格納部２２内に新たな設計情報を生成する。また、このとき、複製元の設計情報と複製先の設計情報との間に、親子関係の情報を設定する。具体的には、複製先の設計情報に含まれる変数parentIdに、複製元の設計情報のＩＤを格納させるようにする。
【００７７】
図２５は、情報操作部１１の設計情報削除メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、設計情報削除メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、設計情報削除メソッドは、プロジェクト識別子と、設計情報識別子とを、パラメーターとして持つ。
第２行目から第５行目までは、処理手続の内容を記述している。
第２行目から第３行目までの記述において、設計情報格納部２２のメソッドfindを呼び出す。このとき、引数として指定する検索条件は、「projectId=プロジェクト識別子」と、「specId=設計情報識別子」と、「current=true」である。これら３つの条件の論理積が、検索条件となる。つまり、このメソッドfindを実行することにより、パラメーター（プロジェクト識別子と設計情報識別子）で特定された設計情報であって、現在有効である設計情報を見つける。メソッドfindの結果である設計情報は、オブジェクトspec（設計情報）に代入される。
【００７８】
第４行目において、オブジェクトspecの変数currentに、false（偽）を代入する。即ち、設計情報が無効であることを表す値を設定する。
第５行目において、設計情報格納部２２のメソッドupdateを呼び出す。このとき、引数として指定する検索条件は、「id=spec.id」である。つまり、第２行目のメソッドfindで見つけられた設計情報が、メソッドupdateによる更新の対象となる。また、第２行目から第４行目までの処理においてオブジェクトspecに設定された値によって、当該設計情報を更新する。つまり、当該設計情報の変数currentの値をfalse（偽）に設定する。即ち、当該設計情報を無効とする。このようにして、指定された設計情報を設計情報格納部２２内において削除（無効化）する。
以上の手順により、情報操作部１１の設計情報削除メソッドは、設計情報格納部２２に格納されているあるひとつの設計情報を、削除（無効化）する。
【００７９】
図２６は、情報操作部１１の設計情報更新メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、設計情報更新メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、設計情報更新メソッドは、プロジェクト識別子と、設計情報識別子と、内容を、パラメーターとして持つ。
第２行目から第１３行目までは、処理手続の内容を記述している。
第２行目から第３行目までの記述において、設計情報格納部２２のメソッドfindを呼び出す。このとき、引数として指定する検索条件は、「projectId=プロジェクト識別子」と、「specId=設計情報識別子」と、「current=true」である。これら３つの条件の論理積が、検索条件となる。つまり、このメソッドfindを実行することにより、パラメーター（プロジェクト識別子と設計情報識別子）で特定された設計情報であって、現在有効である設計情報を見つける。メソッドfindの結果である設計情報は、オブジェクトspec（第１の設計情報）に代入される。
第４行目において、オブジェクトspecの変数currentにfalse（偽）を代入する。即ち、オブジェクトspecの内容が無効であることを表す値を設定する。
第５行目において、設計情報格納部２２のupdateメソッドを呼び出す。このとき、検索条件としては、「id=spec.id」を指定する。つまり、第２行目で読み出した検索条件を更新の対象とする。また、更新する値としては、オブジェクトspecの値を使用する。つまり、当該設計情報を無効化する。これにより、更新前の設計情報は、無効の状態（current=false）で設計情報格納部２２内に残る。
【００８０】
第６行目から第１３行目までの処理においては、更新後の設計情報を設計情報格納部２２に挿入する。
第６行目において、オブジェクトspec2（第２の設計情報）を初期化する。
第７行目において、オブジェクトspec2の変数idに、getユニークIDメソッドで生成したユニークな識別情報を代入する。
第８行目において、オブジェクトspec2の変数parentIdに、オブジェクトspec（第１の設計情報）の変数idの値を代入する。つまり、設計情報を更新する場合、更新前の設計情報を親として、更新後の設計情報を子として、管理できるように、変数parentIdの値を設定する。
第９行目において、オブジェクトspec2の変数currentに、true（真）を代入する。すなわち、オブジェクトspec2が有効であることを表す値を設定する。
第１０行目において、オブジェクトspec2の変数projectId（プロジェクト識別子）に、オブジェクトspec（第１の設計情報）の変数projectIdの値を代入する。
第１１行目において、オブジェクトspec2の変数specId（設計情報識別子）に、オブジェクトspec（第１の設計情報）の変数specIdの値を代入する。
つまり、更新の前後において、プロジェクト識別子と設計情報識別子は、変わらない。
第１２行目において、オブジェクトspec2の変数contentsに、設計情報更新メソッドのパラメーターである内容の値を代入する。つまり、この更新により、設計情報の内容を変えることができる。
以上、第６行目から第１２行目までの処理で、オブジェクトspec2に値が設定された。
そして、第１３行目において、設計情報格納部２２のメソッドinsertを呼び出す。このとき、引数としてはオブジェクトspec2を指定する。つまり、設計情報格納部２２に、オブジェクトspec2の値を有する設計情報が新たに挿入される。
以上の手順により、情報操作部１１の設計情報更新メソッドは、設計情報格納部２２に格納されているあるひとつの設計情報の内容を更新する。ただし、更新前の設計情報も、無効（current=false）の状態で、設計情報格納部２２内に残る。また、更新後の設計情報のparentIdに、更新前の設計情報のＩＤが格納される。これにより、更新前の設計情報（親）と更新後の設計情報（子）とは、親子関係として関連付けられる。
【００８１】
図２７は、情報操作部１１のメソッド「getユニークID」の詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、メソッド「getユニークID」の機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、メソッドgetユニークIDは、パラメーターを持たない。
第２行目は、当該メソッドの静的変数idを定義する。静的変数の値は、メソッドの処理が終了しても維持される。つまり、メソッドgetユニークIDが呼ばれたときに、第５行目の処理によって静的変数idの値は更新される。そのとき更新された静的変数の値はそのまま維持され、次回にメソッドgetユニークIDが呼ばれたときには、メソッドへのエントリーの時点で、前回の処理における更新後の値を保持している。なお、静的変数idの初期値は０である。即ち、メソッドgetユニークIDが最初に呼ばれるときの静的変数idの値は０である。
第３行目から第４行目までのコメントは、メソッドgetユニークIDが、毎回異なる値を返すメソッドであることを示している。つまり、メソッドgetユニークIDが毎回異なる値を返すため、例えば設計情報をユニークに識別するための識別情報としてその値を使用できることを意味する。
第５行目から第６行目までは、処理手続の内容を記述している。
第５行目において、静的変数idの値をインクリメントする（＋１する）。
第６行目において、その時点での静的変数idの値を、メソッドgetユニークIDからの戻り値として返す。
以上の手順により、メソッド「getユニークID」は、識別情報として使用できるユニークなＩＤを取得する。
【００８２】
次に、変更影響検出部１２の具体的な動作について説明する。
図２８，図２９，図３０は、変更影響検出部１２が設計情報の変更の履歴をたどって、影響範囲を検出する処理を説明するための、変更履歴の概略図である。
【００８３】
まず図２８を参照しながら、図示する例における設計情報の履歴を説明する。同図において、Ｓ１〜Ｓ１５は、設計情報の履歴の連鎖における各過程に対応する。
図２８のＳ１において、ある設計情報が新規に作成された。
そして、Ｓ１が変更されてＳ２となった。つまり、Ｓ１はＳ２の親であり、Ｓ２はＳ１の子である。
次に、Ｓ２をコピー（複製）してＳ３が生成された。つまり、Ｓ２はＳ３の親であり、Ｓ３はＳ２の子である。
次に、Ｓ３は、プロジェクトＺ３にコピーされ、Ｓ４が生成された。つまり、Ｓ３はＳ４の親であり、Ｓ４はＳ３の子である。
次に、Ｓ４は、プロジェクトＺ３内で変更されＳ５となった。つまり、Ｓ４はＳ５の親であり、Ｓ５はＳ４の子である。
一方、Ｓ３は、枝分かれした。即ち、Ｓ３はプロジェクトＹ内で変更されＳ６となった。つまりＳ３はＳ６の親であり、Ｓ６はＳ３の子である。
また、プロジェクトＹがコピーされて「プロジェクトＹ＿コピー」が生成された際、Ｓ６がコピーされてＳ７となった。つまり、Ｓ６はＳ７の親であり、Ｓ７はＳ６の子である。
そして、「プロジェクトＹ＿コピー」において、Ｓ７は変更されてＳ８となった。つまりＳ７はＳ８の親であり、Ｓ８はＳ７の子である。
そして、「プロジェクトＹ＿コピー」においてさらに、Ｓ８は変更されてＳ９となった。つまりＳ８はＳ９の親であり、Ｓ９はＳ８の子である。
一方、Ｓ８は枝分かれし、プロジェクトＺ１にコピーされ、さらに２度変更されて、これらの過程で、Ｓ１０、Ｓ１１、Ｓ１２が生じた。ここでも、親子関係が保持されている。
また、Ｓ１０はさらに枝分かれし、プロジェクトＺ２にコピーされ、さらに２度変更されて、これらの過程で、Ｓ１３、Ｓ１４、Ｓ１５が生じた。ここでも、親子関係が保持されている。
【００８４】
上記のように、履歴は、木構造を有する。つまり、ある設計情報の子の設計情報は、０個、１個または複数であり得る。一方、ある設計情報の親の設計情報は、０個または１個である。そして、ある設計情報の親の設計情報が０個であるのは、その設計情報が新規に作成された場合である。言い換えれば、ある設計情報の親の設計情報が０個であるのは、その設計情報が上記の木構造における根のノードに相当する場合である。
【００８５】
上記の、コピーや変更の過程で、Ｓ６において初めて、つまり、Ｓ３を変更してＳ６が生成されたときに、設計情報内に「ＸＸ」という特定の記述が生じた。つまり、Ｓ６の子や孫たちは、この「ＸＸ」という記述を引き継いでいる可能性がある。
そして、Ｓ９において、当該プロジェクトの担当者が、その記述「ＸＸ」の修正を検討した。担当者は、「ＸＸ」を修正した場合の影響範囲を知ることを望んだ。
そういった状況において、変更影響検出部１２は、影響範囲を検出するための処理を行う。
【００８６】
図２９は、変更影響検出部１２が、履歴をたどりながら変更影響を検出する処理の途中経過状況を示す概略図である。つまり、Ｓ９における記述「ＸＸ」を修正した場合の影響範囲を検出するため、変更影響検出部１２は、Ｓ９から、親の方向への探索を行う。そして、変更影響検出部１２は、記述「ＸＸ］が最初に出現した設計情報がＳ６であったことを検出する。つまり、変更影響検出部１２は、Ｓ９を起点として履歴を遡り、Ｓ８、Ｓ７、Ｓ６には記述「ＸＸ」が存在するものの、Ｓ６の親であるＳ３には記述「ＸＸ］が存在しないことを検出する。つまり、変更影響検出部１２は、記述「ＸＸ」が出現した最初の設計情報がＳ６であったことを検出する。
【００８７】
図３０は、変更影響検出部１２が、図２９の状況に続いて、さらに変更影響を検出する処理の経過状況を示す概略図である。つまり、Ｓ６が記述「ＸＸ」が出現した最初の設計情報であったため、変更影響検出部１２は、次に、Ｓ６を起点として子の方向への履歴の探索を行う。そして、その子の方向への探索の中で、記述「ＸＸ」が修正も削除もされていない設計情報を、すべて抽出する。つまり、図示する履歴において、設計情報Ｓ６，Ｓ７，Ｓ８，Ｓ９，Ｓ１０，Ｓ１１，Ｓ１２，Ｓ１３，Ｓ１４，Ｓ１５が変更の影響の可能性がある範囲である。
【００８８】
以上の変更影響検出部１２の処理の手順をまとめると、次の通りである。
ｓｔｅｐ  １：変更影響検出部１２は、まず変更したい特定の設計情報の特定の属性（属性名と属性値のペア）を見つける（図３０の例におけるＳ９）。
ｓｔｅｐ  ２：次に、変更影響検出部１２は、その設計情報の先祖（つまり、親の方向。言い換えれば、複製元および変更元）をたどり、特定の属性の属性値が、変更したい設計情報の属性値と一致する最古の設計情報を見つける（図３０の例におけるＳ６）。
ｓｔｅｐ  ３：そして、ｓｔｅｐ  ２で見つけた最古の設計情報の子孫（複製先および変更先）の設計情報をすべて収取する。
ｓｔｅｐ  ４：上記のｓｔｅｐ  ３で収集した結果を、変更影響範囲とする。
【００８９】
次に、図３１から図３４までを参照しながら、変更影響検出部１２の、より具体的な処理の内容について、説明する。
図３１は、変更影響検出部１２の仕様を示す概略図である。なお、図内には、便宜上、行番号を示している。
同図（第１行目から第４行目まで）は、変更影響検出部１２が有するメソッドの仕様の定義を表す。変更影響検出部１２は、メソッドとして、変更影響範囲検出、設定先祖設計情報取得、子孫取得を有する。
これらの各メソッドの詳細な内容と処理手順については、次の図３２から図３４までを参照しながら説明する。
【００９０】
図３２は、変更影響検出部１２の変更影響範囲検出メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、変更影響範囲検出メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、変更影響範囲検出メソッドは、設計情報識別子と、属性名とを、パラメーターとして持つ。
第２行目から第７行目までは、処理手続の内容を記述している。
第２行目において、設計情報格納部２２のメソッドfindを呼び出す。このとき、引数として指定する検索条件は「specId=設計情報識別子」である。つまり、変更影響範囲検出メソッドのパラメーターである設計情報識別子に等しいspecIdを有する設計情報を探す。そして、メソッドfindから返された結果を、オブジェクトspecに代入する。
第３行目において、変更影響検出部１２自身の設定先祖設計情報取得メソッドを呼び出す。このとき、引数として、上記のオブジェクトspecと、変更影響範囲検出メソッドのパラメーターである属性名とを指定する。設定先祖設計情報取得メソッドは、指定した属性名に関して、最古の先祖の設計情報を返す。そして、設定先祖設計情報取得メソッドから返された設計情報を、オブジェクト「先祖」に代入する。
第４行目のコメントは、第３行目の処理が、目的の属性値を設定した先祖を探す処理であることを示している。
第５行目において、変更影響検出部１２自身の子孫取得メソッドを呼び出す。このとき、引数として、上の第３号目の処理で取得したオブジェクト「先祖」を指定する。子孫取得メソッドから戻された子孫の設計情報のリストを、オブジェクト「子孫リスト」に代入する。
第６行目のコメントは、第５行目の処理が、指定したオブジェクト「先祖」の子孫である設計情報のリストを取得するものであることを示している。
第行目において、変更影響範囲検出メソッドからの戻り値として、第５行目の処理で得られた子孫リストを返す。
以上の手順により、変更影響検出部１２の変更影響範囲検出メソッドは、設計情報を変更した場合の影響範囲を、設計情報のリストとして、取得することができる。
【００９１】
図３３は、変更影響検出部１２の設定先祖設計情報取得メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、設定先祖設計情報取得メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
この設定先祖設計情報取得メソッドは、上述した変更影響範囲検出メソッドから呼び出される。また、この設定先祖設計情報取得メソッドは、当該設定先祖設計情報取得メソッド自身を再帰的に呼び出す。設定先祖設計情報取得メソッドは、特定の属性における設計情報の内容を設定した最古の先祖を探して取得するものである。
第１行目に記述するように、設定先祖設計情報取得メソッドは、設計情報と、属性名とを、パラメーターとして持つ。
第２行目から第３行目までのコメントは、設定先祖設計情報取得メソッドの処理概要として、設計情報の履歴を親方向（先祖の方向）にたどり、属性名に対応する属性値が親と異なる設計情報を返すことを示している。ただし、親がない場合には、その設計情報自身を返すことを示している。
【００９２】
第４行目から第１０行目までは、処理手続の内容を記述している。
第４行目のｉｆ文は、パラメーターである設計情報の変数parentIdにヌル（null）以外の値が格納されているか否かを判断するためのものである。
第４行目に記述された条件が真である場合には、第５行目から第９行目までの処理を実行する。第４行目に記述された条件が偽である場合には、第５行目から第９行目までの処理は実行されない。
第５行目において、設計情報格納部２２のメソッドfindを用いて、親の設計情報を探し、得られた結果である設計情報（親の設計情報）をオブジェクトparentに代入する。
第６行目のｉｆ文は、現在の設計情報における属性値と親の設計情報における属性値とが同一であるか否かを判断するためのものである。この条件が真である場合（つまり属性値が同一である場合）には、さらに上の親を探索するために、設定先祖設計情報取得メソッドを再帰的に呼び出す。このときに指定する引数は、上記のparentと、パラメーターである属性名である。そして、再帰的に呼び出した設定先祖設計情報取得メソッドからの戻り値を、戻り値として返す。
第６行目のｉｆ文の条件が偽であった場合には、第７行目の処理は実行されない。
第９行目は、第４行目の左カーリーブレースに対応する右カーリーブレースであり、第４行目のｉｆ文の終わりを示す。
第１０行目の処理として、設計情報（パラメーターである設計情報を、戻り値として返す。なお、この第１０行目の処理が行われるのは、第４行目のｉｆ文の条件が偽であった場合、あるいは第６行目のｉｆ文の条件が偽であった場合、である。
以上の手順により、変更影響検出部１２の設定先祖設計情報取得メソッドは、特定の属性値を設定した最古の先祖である設計情報を取得する。
【００９３】
図３４は、変更影響検出部１２の子孫取得メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、子孫取得メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
この子孫取得メソッドは、上述した変更影響範囲検出メソッドから呼び出される。また、この子孫取得メソッドは、当該子孫取得メソッド自身を再帰的に呼び出す。子孫取得メソッドは、履歴における子孫を探索しながら、子孫リストに設計情報を追加していくものである。
第１行目に記述するように、子孫取得メソッドは、設計情報を、パラメーターとして持つ。
第２行目から第９行目までは、処理手続の内容を記述している。
第２行目において、変数（オブジェクト）resultを初期化する。つまり、変数resultに空リストが格納されている状態とする。
【００９４】
第３行目において、設計情報格納部２２のメソッドselectを呼び出す。このとき、引数として指定する検索条件は「parentId=設計情報.id」である。つまり、子孫取得メソッドのパラメーターである設計情報が親であるような設計情報を、メソッドselectによって抽出する。つまり、パラメーターとして指定された設計情報の１世代下の子の設計情報を抽出する。そして、メソッドselectからの戻り値を、オブジェクトcursorに代入する。
第４行目から第８行目までのwhile文は、上記のオブジェクトcursorに次の要素が残っている間繰り返されるループの処理を記述する。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第３行目のメソッドselectで抽出された子の設計情報の各々についての処理を行う。
第５行目において、オブジェクトchildに、オブジェクトcursorの要素であるnextを代入する。つまり、メソッドselectで抽出された子の設計情報のうち、未処理の設計情報を１つ、オブジェクトchildに代入する。
第６行目において、オブジェクトresultのメソッドaddを呼び出す。このとき、引数として、上記のオブジェクトchildを指定する。このメソッドaddを実行することにより、設計情報のリストを格納するオブジェクトであるresultに、オブジェクトchildの内容が一要素として追加される。
第７行目において、子孫取得メソッドを再帰的に呼び出す。このとき、引数として、オブジェクトchildを指定する。この第７行目の処理は、オブジェクトchildが表す設計情報のさらに子孫の設計情報を探索するものである。そして、子孫取得メソッドから返される戻り値（childより下の子孫の設計情報のリスト）を、メソッドaddにより、オブジェクトresultに追加する。
第８行目は、第４行目からのwhile文の終わりを示す。
第９行目において、オブジェクトresultをメソッドの戻り値として返す。
以上の手順により、変更影響検出部１２の子孫取得メソッドは、パラメーターとして指定された設計情報の、子孫である設計情報を収集し、それらの設計情報のリストを返す。この子孫取得メソッドが前述の変更影響範囲検出メソッド（図３２）から呼ばれることにより、特定の先祖の子孫にあたる設計情報をすべて抽出することができる。
【００９５】
次に、図３５から図４０までを参照しながら、メトリクス計測部１３の、より具体的な処理の内容について、説明する。
図３５は、メトリクス計測部１３の仕様を示す概略図である。なお、図内には、便宜上、行番号を示している。
同図（第１行目から第６行目まで）は、メトリクス計測部１３が有するメソッドの仕様の定義を表す。メトリクス計測部１３は、メソッドとして、メトリクス計測、再利用設計情報取得、被再利用設計情報取得、get先祖、is子孫を有する。
これらの各メソッドの詳細な内容と処理手順については、次の図３６から図４０までを参照しながら説明する。
【００９６】
図３６は、メトリクス計測部１３のメトリクス計測メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、メトリクス計測メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、メトリクス計測メソッドは、プロジェクト識別子を、パラメーターとして持つ。
第２行目から第１２行目までは、処理手続の内容を記述している。
第２行目において、再利用設計情報リストを初期化する。
第３行目において、被再利用設計情報リストを初期化する。
【００９７】
第４行目において、プロジェクト情報格納部２１のメソッドselectを呼び出す。このとき、引数の検索条件として「current=true」を指定する。つまり、メソッドselectにより、有効なプロジェクトのプロジェクト情報を抽出する。そして、メソッドselectからの戻り値を、オブジェクトcursorに代入する。
第５行目から第１１行目までのwhile文は、上記のオブジェクトcursorに次の要素が残っている間繰り返されるループの処理を記述する。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第４行目のメソッドselectで抽出されたプロジェクト情報の各々についての処理を行う。
第６行目において、変数（オブジェクト）である「他project」に、オブジェクトcursorの要素であるnextを代入する。つまり、メソッドselectで抽出されたプロジェクト情報のうち、未処理のプロジェクト情報を１つ、オブジェクト「他project」に代入する。
第７行目から第８行目において、メトリクス計測部１３自身のメソッドである再利用設計情報取得メソッドを呼び出す。このとき、メトリクス計測メソッドのパラメーターであるプロジェクト識別子と、上記のオブジェクト「他project」の要素であるid（プロジェクト情報識別子）とを引数として指定する。再利用設計情報取得メソッドの処理内容については後述する。そして、再利用設計情報取得メソッドから返される戻り値を、「他project」のidに関連付ける形で、再利用設計情報リスト内に格納する。
第９行目から第１０行目において、メトリクス計測部１３自身のメソッドである被再利用設計情報取得メソッドを呼び出す。このとき、メトリクス計測メソッドのパラメーターであるプロジェクト識別子と、上記のオブジェクト「他project」の要素であるid（プロジェクト情報識別子）とを引数として指定する。被再利用設計情報取得メソッドの処理内容については後述する。そして、被再利用設計情報取得メソッドから返される戻り値を、「他project」のidに関連付ける形で、被再利用設計情報リスト内に格納する。
第１１行目は、第５行目のwhile文の終わりを示す。
【００９８】
第１２行目において、上のwhile文の処理で得られた再利用設計情報リストおよび被再利用設計情報リストを、メトリクス分析メソッドの戻り値として返す。
以上の手順により、指定されたプロジェクトに関して、他のプロジェクトから再利用した設計情報の情報（再利用設計情報リスト）と、他のプロジェクトによって再利用された設計情報の情報（被再利用設計情報リスト）とを、取得することができる。
【００９９】
図３７は、メトリクス計測部１３が有する再利用設計情報取得メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、再利用設計情報取得メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目から第２行目に記述するように、再利用設計情報取得メソッドは、自プロジェクト識別子と、他プロジェクト識別子とを、パラメーターとして持つ。これら両方のパラメーターは、いずれもストリング型である。
第３行目から第１０行目までは、処理手続の内容を記述している。
【０１００】
第３行目において、変数（オブジェクト）resultを初期化する。つまり、変数resultに空リストが格納されている状態とする。
第４行目から第５行目において、設計情報格納部２２のメソッドselectを呼び出す。このとき、引数として指定する検索条件は、「projectId=自プロジェクト識別子」および「current=true」である。これら２つの条件の論理積が、検索条件である。つまり、このメソッドselectにより、設計情報格納部２２に格納されている設計情報であって、自プロジェクトの有効な設計情報のみを抽出する。そして、メソッドselectからの戻り値を、オブジェクトcursorに代入する。
【０１０１】
第６行目から第９行目までのwhile文は、上記のオブジェクトcursorに次の要素が残っている間繰り返されるループの処理を記述する。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第４行目のメソッドselectで抽出された設計情報の各々についての処理を行う。
第７行目において、オブジェクトspecに、オブジェクトcursorの要素であるnextを代入する。つまり、未処理の設計情報を１つ、オブジェクトspecに代入する。
第８行目において、「is子孫」メソッドを呼び出す。「is子孫」メソッドの詳細については、後述する。このとき、引数として、再利用設計情報取得メソッドのパラメーターである他プロジェクト識別子と、上記のオブジェクトspecとを指定する。そして、第８行目のｉｆ文は、このis子孫メソッドから返される戻り値の真偽を判断する。真である場合、つまりオブジェクトspecが表す設計情報（自プロジェクト内の設計情報）が、他プロジェクト識別子で指定されるプロジェクトからの再利用である場合には、オブジェクトresultのaddメソッドを呼び出す。即ち、当該設計情報（spec）をresultのリストに追加する。is子孫メソッドからの戻り値が偽である場合には、このresultのリストへの追加は行われない。
第９行目は、第６行目からのwhile文の終わりを示す。
【０１０２】
第１０行目において、オブジェクトresultを、当メソッドからの戻り値として返す。
以上の手順により、再利用設計情報取得メソッドは、他プロジェクト設計情報で指定されるプロジェクトからの再利用による設計情報（自プロジェクト内の設計情報）のリストを取得する。これに基づき、他プロジェクトから再利用した設計情報に関する統計を計算することも可能となる。
【０１０３】
図３８は、メトリクス計測部１３が有する被再利用設計情報取得メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、被再利用設計情報取得メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目から第２行目に記述するように、被再利用設計情報取得メソッドは、自プロジェクト識別子と、他プロジェクト識別子とを、パラメーターとして持つ。これら両方のパラメーターは、いずれもストリング型である。
第３行目から第１１１行目までは、処理手続の内容を記述している。
【０１０４】
第３行目において、変数（オブジェクト）resultを初期化する。つまり、変数resultに空リストが格納されている状態とする。
第４行目から第５行目において、設計情報格納部２２のメソッドselectを呼び出す。このとき、引数として指定する検索条件は、「projectId=他プロジェクト識別子」および「current=true」である。これら２つの条件の論理積が、検索条件である。つまり、このメソッドselectにより、設計情報格納部２２に格納されている設計情報であって、他プロジェクトの有効な設計情報のみを抽出する。そして、メソッドselectからの戻り値を、オブジェクトcursorに代入する。
【０１０５】
第６行目から第９行目までのwhile文は、上記のオブジェクトcursorに次の要素が残っている間繰り返されるループの処理を記述する。オブジェクトcursorの変数hasNextについては、既に説明した通りである。つまり、このループでは、第４行目のメソッドselectで抽出された設計情報の各々についての処理を行う。
第７行目において、オブジェクトspecに、オブジェクトcursorの要素であるnextを代入する。つまり、未処理の設計情報を１つ、オブジェクトspecに代入する。
第８行目において、「get先祖」メソッドを呼び出す。「get先祖」メソッドの詳細については、後述する。このとき、引数として、被再利用設計情報取得メソッドのパラメーターである他プロジェクト識別子と、上記のオブジェクトspecとを指定する。そして、第８行目のｉｆ文は、このget先祖メソッドから返される戻り値の真偽を判断する。真である場合、つまりオブジェクトspecが表す設計情報が、自プロジェクト識別子で指定されるプロジェクトから再利用されたものである場合には、オブジェクトresultのaddメソッドを呼び出し、当該設計情報（spec）をresultのリストに追加する。get先祖メソッドからの戻り値が偽である場合には、このresultのリストへの追加は行われない。
第９行目は、第６行目からのwhile文の終わりを示す。
【０１０６】
第１０行目において、オブジェクトresultのuniqメソッドを呼び出す。このとき、引数の指定はない。第１０行目のコメントにも記載されているように、このuniqメソッドは、オブジェクトresultが有するリスト（配列）の中の重複した要素を取り除く処理を行う。つまり、uniqメソッドを実行した結果、オブジェクトresultのリストの各要素はユニークなものばかりとなる。
第１１行目において、オブジェクトresultを、当メソッドからの戻り値として返す。
以上の手順により、被再利用設計情報取得メソッドは、自プロジェクト識別子で指定されるプロジェクトが含む設計情報が再利用されることとなった、他のプロジェクト内の設計情報のリストを取得する。なお、このリストは、上で述べたように、重複分は削除されている。これに基づき、他プロジェクトで再利用されている設計情報に関する統計を計算することも可能となる。
【０１０７】
図３９は、メトリクス計測部１３が有する「get先祖」メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、「get先祖」メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、get先祖メソッドは、プロジェクト識別子と、設計情報とを、パラメーターとして持つ。
第２行目から第３行目のコメントが示すように、このget先祖メソッドは、パラメーターであるプロジェクト識別子が示すプロジェクトに属している先祖の設計情報を返すものである。そのプロジェクトに先祖がない場合には当該メソッドはヌル（null）を返す。
第３行目から第１１行目までは、処理手続の内容を記述している。
【０１０８】
第４行目のｉｆ文は、パラメーターで指定された設計情報の要素であるprojectId（プロジェクト識別子）が、パラメーターで指定されたプロジェクトと等しいか否かを判断する。これが真である場合（等しい場合）には、当該設計情報を、戻り値として返し、このメソッドの処理を終了する。これが偽である場合（異なる場合）には、次の第５行目の処理に進む。
第５行目のｉｆ文は、パラメーターで指定された設計情報の要素であるparentId（親の設計情報のＩＤ）が、ヌル（null）であるか否かを判断する。これが真である場合（親がヌルである場合、即ち、親がない場合）には、偽（false）を戻り値として返し、このメソッドの処理を終了する。これが偽である場合（ヌル以外の親ＩＤが格納されている場合、即ち、親がある場合）には、次の第６行目の処理に進む。
第６行目において、設計情報格納部２２のメソッドfindを呼び出す。このとき、引数として指定する「id=設計情報．parentId」である。つまり、パラメーターで指定された設計情報の、親の設計情報を探す。そして、メソッドfindからの戻り値である設計情報を、オブジェクトparentに代入する。
第７行目において、get先祖メソッドを再帰的に呼び出す。このとき、パラメーターとして指定されたプロジェクト識別子と、上記のparentとを、引数として指定する。そして、呼び出したget先祖メソッドから返された戻り値を、戻り値として返す。
以上の手順により、get先祖メソッドは、指定された設計情報の、指定されたプロジェクトに属する先祖を取得する。
【０１０９】
図４０は、メトリクス計測部１３が有する「is子孫」メソッドの詳細な処理手順等を説明するための概略図である。同図は、疑似コードを用いて、「is子孫」メソッドの機能を示している。なお、図内には、便宜上、行番号を示している。
第１行目に記述するように、is子孫メソッドは、プロジェクト識別子と、設計情報とを、パラメーターとして持つ。
第２行目から第３行目のコメントが示すように、このis子孫メソッドは、パラメーターで指定された設計情報の先祖が、パラメーターで指定されたプロジェクトに属している場合に真（true）を返す。また、そうでない場合に偽（false）を返す。
第３行目から第８行目までは、処理手続の内容を記述している。
【０１１０】
第４行目のｉｆ文では、get先祖メソッドを呼び出す。その際、引数として、パラメーターで指定されたプロジェクト識別子および設計情報を指定する。get先祖メソッドから返される戻り値がヌル（null）であるとき、即ちこの設計情報の先祖が、指定されたプロジェクト識別子のプロジェクト内に存在しないとき、第５行目の処理として、偽（false）を、is子孫メソッドの戻り値として返す。
第６行目のelse節の部分に制御が渡るのは、第４行目で行った判断の結果が偽である場合である。このとき、第６行目の処理として、真（true）を、is子孫メソッドの戻り値として返す。
以上の手順により、is子孫メソッドは、指定された設計情報が、指定されたプロジェクトの子孫であるか否かを判断し、真偽値を返す。
【０１１１】
以上説明したように、この実施形態によれば、設計情報の複製（再利用）や設計情報の変更に関して、前後の設計情報を親子関係として捉え、履歴の情報を保持する。よって、複製や変更の履歴に基づいて設計情報を管理することができる。
また、ある設計情報について変更した場合に、履歴情報をたどることにより、その変更が、他の設計情報（自プロジェクト内、および他プロジェクト）に与える影響の範囲を、効率よく検出することができる。
また、設計情報の再利用等に関して、各種のメトリクスを計測することができる。これにより、設計情報の再利用による生産性の向上を、定量的に評価することが可能となる。
【０１１２】
上記実施形態では、設計情報管理装置１が変更影響検出部１２を持つこととしたが、設計情報管理装置１が変更影響検出部１２を持たない構成としてもよい。この場合でも、設計情報管理装置１は、設計情報の複製の履歴や変更の履歴の情報を保持し、分析することができる。また、メトリクス計測部１３により、設計情報の再利用に関するメトリクスを計測することができる。
【０１１３】
また、上記実施形態では、設計情報管理装置１がメトリクス計測部１３を持つこととしたが、設計情報管理装置１がメトリクス計測部１３を持たない構成としてもよい。この場合でも、設計情報管理装置１は、設計情報の複製の履歴や変更の履歴の情報を保持し、分析することができる。また、変更影響検出部１２が存在する場合には、前記の親子関係をたどっていくことにより、ある設計情報の内容を変更した場合にその変更が影響する範囲を検出することができる。
【０１１４】
また、上記実施形態では、設計情報間の親子関係をデータとして表現するために子の側の設計情報内に、親の設計情報の識別情報を保持することとしたが、データの表現形態は任意である。例えば、逆に、親の側に子の設計情報の識別情報を保持するようにしてもよい。また、その他のデータ表現によって、設計情報間の親子関係を保持するようにしてもよい。
【０１１５】
また、上記実施形態では、メトリクスとして、他のプロジェクトからの設計情報の再利用の量（件数等）や、自プロジェクトからの設計情報の再利用の量（件数等）や、他プロジェクトによる自プロジェクトの設計情報の再利用の量（件数等）を計測することとした。この他にも、メトリクスとして、例えば、全設計要素（設計情報）数に対する、再利用した設計要素数の比率を算出するようにしてもよい。また、メトリクスとして、例えば、再利用した設計要素のうち、全属性数に対する、再利用の際に変更のない属性数の比率を算出するようにしてもよい。また、メトリクスとして、再利用された設計要素が当初作成された日時と、再利用された日時との差分（日時の差の長さ）を算出するようにしてもよい。また、メトリクスとして、あるプロジェクトの設計情報を再利用したプロジェクトの数を算出するようにしてもよい。また、メトリクスとして、全設計要素の、被再利用の寿命の最大値を算出するようにしてもよい。これらにより、開発生産性を評価することができる。
【０１１６】
以上説明した少なくともひとつの実施形態によれば、情報操作部が、設計情報を更新する場合には変更前と変更後の設計情報を設計情報格納部内に格納し、変更前と変更後の設計情報を親子関係として、親情報を設定する。これにより、設計情報の変更履歴をたどることができる。また、情報操作部が、設計情報を複製する場合には複製元と複製先の設計情報を設計情報格納部内に格納し、複製元と複製先の設計情報を親子関係として、親情報を設定する。これにより、設計情報の再利用の履歴をたどることができる。
【０１１７】
なお、上述した実施形態における設計情報管理装置の少なくとも一部の機能をコンピューターで実現するようにしても良い。その場合、機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【０１１８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１１９】
１…設計情報管理装置、１０…インタフェース部、１１…情報操作部、１２…変更影響検出部、１３…メトリクス計測部、２１…プロジェクト情報格納部、２２…設計情報格納部、３０…端末装置
【図１】
2018049397.tif 000003
【図２】
2018049397.tif 000004
【図３】
2018049397.tif 000005
【図４】
2018049397.tif 000006
【図５】
2018049397.tif 000007
【図６】
2018049397.tif 000008
【図７】
2018049397.tif 000009
【図８】
2018049397.tif 000010
【図９】
2018049397.tif 000011
【図１０】
2018049397.tif 000012
【図１１】
2018049397.tif 000013
【図１２】
2018049397.tif 000014
【図１３】
2018049397.tif 000015
【図１４】
2018049397.tif 000016
【図１５】
2018049397.tif 000017
【図１６】
2018049397.tif 000018
【図１７】
2018049397.tif 000019
【図１８】
2018049397.tif 000020
【図１９】
2018049397.tif 000021
【図２０】
2018049397.tif 000022
【図２１】
2018049397.tif 000023
【図２２】
2018049397.tif 000024
【図２３】
2018049397.tif 000025
【図２４】
2018049397.tif 000026
【図２５】
2018049397.tif 000027
【図２６】
2018049397.tif 000028
【図２７】
2018049397.tif 000029
【図２８】
2018049397.tif 000030
【図２９】
2018049397.tif 000031
【図３０】
2018049397.tif 000032
【図３１】
2018049397.tif 000033
【図３２】
2018049397.tif 000034
【図３３】
2018049397.tif 000035
【図３４】
2018049397.tif 000036
【図３５】
2018049397.tif 000037
【図３６】
2018049397.tif 000038
【図３７】
2018049397.tif 000039
【図３８】
2018049397.tif 000040
【図３９】
2018049397.tif 000041
【図４０】
2018049397.tif 000042