(57)【要約】      （修正有）【課題】ソフトウェア開発の完了後等に、修正すべきドキュメントの集合を把握可能とする。【解決手段】機能識別子などの１以上の属性値を有する１以上のドキュメントを検索するドキュメント検索部と、ドキュメント関係情報を用いて、検索された１以上の各ドキュメントの子を含む子孫のドキュメントを検索する関連ドキュメント検索部と、ドキュメント関係情報を用いて、ドキュメント検索部が検索した１以上のドキュメント、関連ドキュメント検索部が検索した１以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとするドキュメントグループを取得し、出力する開発支援装置により、ソフトウェア開発の完了後等に、修正すべきドキュメントの集合を把握することが容易になる。【選択図】図１
2011210210.tif 000002
【特許請求の範囲】
【請求項１】
開発過程において作成される２以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか１以上の属性値を有する２以上のドキュメントを格納し得るドキュメント格納部と、
前記ドキュメント格納部に格納されている２以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、当該一のドキュメントに関連する下流工程で作成された１以上のドキュメントとの間の親子関係を示すドキュメント関係情報を格納し得るドキュメント関係情報格納部と、
１以上の属性値を受け付ける受付部と、
前記ドキュメント格納部から、前記受付部が受け付けた１以上の属性値を有する１以上のドキュメントを検索するドキュメント検索部と、
前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメントを検索する関連ドキュメント検索部と、
前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上のドキュメント、および前記関連ドキュメント検索部が検索した１以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、当該最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、１以上のドキュメントグループを取得するドキュメントグループ取得部と、
前記ドキュメントグループ取得部が取得した１以上のドキュメントグループを出力するドキュメントグループ出力部とを具備する開発支援装置。
【請求項２】
前記関連ドキュメント検索部は、
前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメント、および前記前記ドキュメント検索部が検索した１以上の各ドキュメントの先祖のドキュメントである１以上のドキュメントを検索する請求項１記載の開発支援装置。
【請求項３】
開発者を識別する開発者識別子を有する開発者情報を１以上格納し得る開発者情報格納部と、
前記開発者情報格納部から、前記ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに対して、開発者識別子を取得する開発者識別子取得部と、
前記開発者識別子取得部が取得した開発者識別子を出力する開発者識別子出力部とをさらに具備する請求項１または請求項２記載の開発支援装置。
【請求項４】
前記ドキュメントの属性値として、開発難易度を有し、
前記開発者情報は、開発者識別子と開発者のレベルを有し、
前記開発者識別子取得部は、
１以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、当該ドキュメントの数および各ドキュメントの開発難易度とを用いて、開発に必要な開発者のレベルを決定するレベル決定手段と、
前記レベル決定手段が決定したレベルに対応する開発者識別子を取得する開発者識別子取得手段とを具備する請求項３記載の開発支援装置。
【請求項５】
前記開発者識別子取得部は、
前記開発者情報格納部から、前記ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに対して、一の開発者識別子を取得する請求項３または請求項４記載の開発支援装置。
【請求項６】
プログラムであるドキュメントから、当該プログラムの関数の数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得するプログラム情報取得部と、
前記プログラムであるドキュメント、および前記プログラムの先祖のドキュメントを、前記ドキュメント格納部から取得し、当該取得した１以上の各ドキュメントに対して、前記プログラムの前記プログラム情報取得部が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を取得する開発難易度取得部と、
前記開発難易度取得部が取得した開発難易度を、前記１以上の各ドキュメントの属性値として、前記ドキュメント格納部に蓄積する開発難易度蓄積部とをさらに具備する請求項３から請求項５いずれか記載の開発支援装置。
【請求項７】
前記ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに含まれる１以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する工数算出元情報取得部と、
前記工数算出元情報をパラメータとして工数を算出する工数算出部と、
前記工数算出部が算出した工数を出力する工数出力部とを具備する請求項１から請求項６いずれか記載の開発支援装置。
【請求項８】
前記工数算出部は、
工数を算出する演算式を格納している演算式格納手段と、
前記工数算出元情報を前記演算式に代入し、当該演算式を実行して、工数を取得する演算手段とを具備し、
前記受付部は、
一のドキュメントグループおよび実績工数を受け付け、
前記工数算出元情報取得部は、
前記受付部が受け付けた一のドキュメントグループの工数算出元情報を取得し、
前記工数算出元情報取得部が取得した工数算出元情報と前記受付部が受け付けた実績工数とを用いて、前記演算式格納手段の演算式を更新する演算式更新部をさらに具備する請求項７記載の開発支援装置。
【請求項９】
前記ドキュメント格納部の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか１以上の属性値を取得する属性値取得部と、
前記属性値取得部が取得した１以上の属性値を、前記ドキュメント格納部に蓄積する属性値蓄積部とをさらに具備する請求項１から請求項８いずれか記載の開発支援装置。
【請求項１０】
前記ドキュメントは、プログラムであり、
前記属性値取得部は、
前記ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、当該関数名またはメソッド名またはメッセージ名に対応する属性値を取得する請求項９記載の開発支援装置。
【請求項１１】
一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出するドキュメント利用検出部と、
前記ドキュメント利用検出部がドキュメントの表示または流用を検出した場合、前記一のドキュメントの親ドキュメントが前記他のドキュメントとなるようにドキュメント関係情報を生成するドキュメント関係情報生成部と、
前記ドキュメント関係情報生成部が生成したドキュメント関係情報を、前記ドキュメント関係情報格納部に蓄積するドキュメント関係情報蓄積部とをさらに具備する請求項１から請求項１０記載の開発支援装置。
【請求項１２】
記録媒体に、
開発過程において作成される２以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか１以上の属性値を有する２以上のドキュメントと、
前記２以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、当該一のドキュメントに関連する下流工程で作成された１以上のドキュメントとの間の親子関係を示すドキュメント関係情報とを格納ており、
コンピュータを、
１以上の属性値を受け付ける受付部と、
前記記録媒体から、前記受付部が受け付けた１以上の属性値を有する１以上のドキュメントを検索するドキュメント検索部と、
前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメントを検索する関連ドキュメント検索部と、
前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上のドキュメント、および前記関連ドキュメント検索部が検索した１以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、当該最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、１以上のドキュメントグループを取得するドキュメントグループ取得部と、
前記ドキュメントグループ取得部が取得した１以上のドキュメントグループを出力するドキュメントグループ出力部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべきドキュメントの集合を把握することが容易になる開発支援装置等に関するものである。
【背景技術】
【０００２】
従来、ソフト資産の管理工数を低減するとともに、システムの変更に伴う影響範囲を高精度にかつ容易に把握することができるソフト資産管理システムがあった（特許文献１参照）。
【０００３】
また、従来、仕様の変更を行うことによるリスクの大きさを示す値を客観的に算出するリスク算出プログラムがあった（特許文献２参照）。
【０００４】
さらに、従来、ソフトウェア資産の再利用や改造を行う単位で影響する内容の把握を可能にして、ユーザの管理負担及び影響範囲確認の手間を大幅に削減したソフトウェア資産管理システムがあった（特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１０００７８号公報（第１頁、第１図等）
【特許文献２】特開２００８−３３５４５号公報（第１頁、第１図等）
【特許文献３】特開２００８−１２３４３２号公報（第１頁、第１図等）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の特許文献１の技術においては、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの１以上の集合を把握することができなかった。
【課題を解決するための手段】
【０００７】
本第一の発明の開発支援装置は、開発過程において作成される２以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか１以上の属性値を有する２以上のドキュメントを格納し得るドキュメント格納部と、ドキュメント格納部に格納されている２以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、一のドキュメントに関連する下流工程で作成された１以上のドキュメントとの間の親子関係を示すドキュメント関係情報を格納し得るドキュメント関係情報格納部と、１以上の属性値を受け付ける受付部と、ドキュメント格納部から、受付部が受け付けた１以上の属性値を有する１以上のドキュメントを検索するドキュメント検索部と、ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、ドキュメント検索部が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメントを検索する関連ドキュメント検索部と、ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、ドキュメント検索部が検索した１以上のドキュメント、および関連ドキュメント検索部が検索した１以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、１以上のドキュメントグループを取得するドキュメントグループ取得部と、ドキュメントグループ取得部が取得した１以上のドキュメントグループを出力するドキュメントグループ出力部とを具備する開発支援装置である。
【０００８】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になる。
【０００９】
また、本第二の発明の開発支援装置は、第一の発明に対して、関連ドキュメント検索部は、ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、ドキュメント検索部が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメント、およびドキュメント検索部が検索した１以上の各ドキュメントの先祖のドキュメントである１以上のドキュメントを検索する開発支援装置である。
【００１０】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になる。
【００１１】
また、本第三の発明の開発支援装置は、第一または第二の発明に対して、開発者を識別する開発者識別子を有する開発者情報を１以上格納し得る開発者情報格納部と、開発者情報格納部から、ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに対して、開発者識別子を取得する開発者識別子取得部と、開発者識別子取得部が取得した開発者識別子を出力する開発者識別子出力部とをさらに具備する開発支援装置である。
【００１２】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な要員の把握も容易になる。
【００１３】
また、本第四の発明の開発支援装置は、第三の発明に対して、ドキュメントの属性値として、開発難易度を有し、開発者情報は、開発者識別子と開発者のレベルを有し、開発者識別子取得部は、１以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、ドキュメントの数および各ドキュメントの開発難易度とを用いて、開発に必要な開発者のレベルを決定するレベル決定手段と、レベル決定手段が決定したレベルに対応する開発者識別子を取得する開発者識別子取得手段とを具備する開発支援装置である。
【００１４】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な要員が適切に把握できる。
【００１５】
また、本第五の発明の開発支援装置は、第三または第四の発明に対して、開発者識別子取得部は、開発者情報格納部から、ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに対して、一の開発者識別子を取得する開発支援装置である。
【００１６】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な要員が、極めて適切に把握できる。
【００１７】
また、本第六の発明の開発支援装置は、第三から第五いずれかの発明に対して、プログラムであるドキュメントから、プログラムの関数の数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得するプログラム情報取得部と、プログラムであるドキュメント、およびプログラムの先祖のドキュメントを、ドキュメント格納部から取得し、取得した１以上の各ドキュメントに対して、プログラムのプログラム情報取得部が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を取得する開発難易度取得部と、開発難易度取得部が取得した開発難易度を、１以上の各ドキュメントの属性値として、ドキュメント格納部に蓄積する開発難易度蓄積部とをさらに具備する開発支援装置である。
【００１８】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になり、かつ、保守や新規開発に必要な要員が、極めて適切に把握できる。
【００１９】
また、本第七の発明の開発支援装置は、第一から第六いずれかの発明に対して、ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに含まれる１以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する工数算出元情報取得部と、工数算出元情報をパラメータとして工数を算出する工数算出部と、工数算出部が算出した工数を出力する工数出力部とを具備する開発支援装置である。
【００２０】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な工数が把握できる。
【００２１】
また、本第八の発明の開発支援装置は、第七の発明に対して、工数算出部は、工数を算出する演算式を格納している演算式格納手段と、工数算出元情報を演算式に代入し、演算式を実行して、工数を取得する演算手段とを具備し、受付部は、一のドキュメントグループおよび実績工数を受け付け、工数算出元情報取得部は、受付部が受け付けた一のドキュメントグループの工数算出元情報を取得し、工数算出元情報取得部が取得した工数算出元情報と受付部が受け付けた実績工数とを用いて、演算式格納手段の演算式を更新する演算式更新部をさらに具備する開発支援装置である。
【００２２】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な工数が把握できる。
【００２３】
また、本第九の発明の開発支援装置は、第一から第八いずれかの発明に対して、ドキュメント格納部の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか１以上の属性値を取得する属性値取得部と、属性値取得部が取得した１以上の属性値を、ドキュメント格納部に蓄積する属性値蓄積部とをさらに具備する開発支援装置である。
【００２４】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【００２５】
また、本第十の発明の開発支援装置は、第九の発明に対して、ドキュメントは、プログラムであり、属性値取得部は、ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、関数名またはメソッド名またはメッセージ名に対応する属性値を取得する開発支援装置である。
【００２６】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【００２７】
また、本第十一の発明の開発支援装置は、第十の発明に対して、属性値取得部は、取得した属性値を、プログラムの祖先のドキュメントの属性値として付与する開発支援装置である。
【００２８】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【００２９】
また、本第十二の発明の開発支援装置は、第九の発明に対して、ドキュメントは、自然言語で記載されたドキュメントであり、属性値取得部は、属性値の種類に対応して、手がかり句を管理しており、ドキュメントから、手がかり句を用いて属性値を取得する開発支援装置である。
【００３０】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【００３１】
また、本第十三の発明の開発支援装置は、第一から第十二の発明に対して、一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出するドキュメント利用検出部と、ドキュメント利用検出部がドキュメントの表示または流用を検出した場合、一のドキュメントの親ドキュメントが他のドキュメントとなるようにドキュメント関係情報を生成するドキュメント関係情報生成部と、ドキュメント関係情報生成部が生成したドキュメント関係情報を、ドキュメント関係情報格納部に蓄積するドキュメント関係情報蓄積部とをさらに具備する開発支援装置である。
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【発明の効果】
【００３２】
本発明による開発支援装置によれば、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になる。
【図面の簡単な説明】
【００３３】
【図１】実施の形態１における開発支援装置のブロック図
【図２】同情報取得蓄積手段のブロック図
【図３】同開発支援装置の動作について説明するフローチャート
【図４】同関連ドキュメント取得処理の動作について説明するフローチャート
【図５】同ドキュメントグループ取得処理の動作について説明するフローチャート
【図６】同レベル決定処理の動作について説明するフローチャート
【図７】同工数算出元情報取得処理の動作について説明するフローチャート
【図８】同開発支援装置の動作について説明するフローチャート
【図９】同開発支援装置の動作について説明するフローチャート
【図１０】同ドキュメント管理表を示す図
【図１１】同ドキュメント関係情報管理表を示す図
【図１２】同ルール管理表を示す図
【図１３】同開発者情報管理表を示す図
【図１４】同ドキュメント格納部のドキュメントを示す図
【図１５】同ドキュメント管理表を示す図
【図１６】同ドキュメントグループの出力例を示す図
【図１７】同レベル決定方法の例を示す図
【図１８】同開発者識別子および工数が出力された場合のドキュメントグループの出力例を示す図
【図１９】同ドキュメントグループの出力例を示す図
【図２０】上記実施の形態におけるコンピュータシステムの概観図
【図２１】同コンピュータシステムのブロック図
【発明を実施するための形態】
【００３４】
以下、開発支援装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
（実施の形態１）
【００３５】
本実施の形態において、上流から下流工程で作成されたドキュメント群がリンク付けされており、改変する機能名などのドキュメント属性値を入力すれば、改変に関連するドキュメントグループが出力される開発支援装置１について説明する。
【００３６】
また、本実施の形態において、出力されるドキュメントグループごとに、１以上の開発（または保守）の要員に関する情報を出力する開発支援装置１について説明する。
【００３７】
また、本実施の形態において、ドキュメントの難易度などのドキュメントの属性値を自動的に取得したり、開発者や保守要員のレベルなどを自動的に取得したりできる開発支援装置１について説明する。
【００３８】
さらに、本実施の形態において、上流のドキュメントと、それに対応する下流のドキュメントなどのドキュメント間の関係であるドキュメント関係情報を自動的に取得できる開発支援装置１について説明する。
【００３９】
図１は、本実施の形態における開発支援装置１のブロック図である。また、図２は、情報取得蓄積手段１０のブロック図である。
【００４０】
開発支援装置１は、ドキュメント格納部１０１、ドキュメント関係情報格納部１０２、開発者情報格納部１０３、受付部１０４、ドキュメント検索部１０５、関連ドキュメント検索部１０６、ドキュメントグループ取得部１０７、ドキュメントグループ出力部１０８、開発者識別子取得部１０９、開発者識別子出力部１１０、工数算出元情報取得部１１１、工数算出部１１２、工数出力部１１３、プログラム情報取得部１１４、開発難易度取得部１１５、開発難易度蓄積部１１６、属性値取得部１１７、属性値蓄積部１１８、ドキュメント利用検出部１１９、ドキュメント関係情報生成部１２０、ドキュメント関係情報蓄積部１２１、演算式更新部１２２を備える。
【００４１】
なお、プログラム情報取得部１１４、開発難易度取得部１１５、開発難易度蓄積部１１６、属性値取得部１１７、属性値蓄積部１１８、ドキュメント利用検出部１１９、ドキュメント関係情報生成部１２０、ドキュメント関係情報蓄積部１２１、および演算式更新部１２２は、情報取得蓄積手段１０を構成する。
【００４２】
開発者識別子取得部１０９は、レベル決定手段１０９１、開発者識別子取得手段１０９２を備える。また、工数算出部１１２は、演算式格納手段１１２１、演算手段１１２２を備える。
【００４３】
ドキュメント格納部１０１は、開発過程において作成される２以上のドキュメントを格納し得る。また、ドキュメントは、１以上の属性値を有する。なお、ドキュメントが１以上の属性値と対応付けて格納されている場合も、ドキュメントは１以上の属性値を有する、と表現する。また、ここで、属性値とは、例えば、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子などである。また、ドキュメントが１以上の属性値を有することは、ドキュメントが１以上の属性値に対応付けられていることと同意義である。また、開発とは、主として、ソフトウェア開発であるが、ハードウェア開発でも良い。また、開発とは、商品開発、技術開発、研究開発等、問わない。また、ドキュメントとは、ドキュメントの実体とドキュメント識別子でも良いし、ドキュメント識別子だけでも良い。ドキュメントが、ドキュメント識別子だけの場合、ドキュメントの実体は、図示しない他の装置や、開発支援装置１内の図示しない部に存在する。ドキュメントは、例えば、企画書（プロジェクト計画書などと言っても良い。）、設計書、プログラム、テスト計画書、テスト仕様書、テスト結果書などである。また、ドキュメントは、例えば、自然言語で記載されたドキュメントである。設計書は、例えば、概要設計書（外部設計書、基本設計などと言っても良い。）や、詳細設計書（内部設計書などと言っても良い。）などである。また、上記の機能とは、ドキュメントに記載されている機能である。機能は、ソフトウェアやハードウェアが実現する機能である。また、上記の画面とは、ドキュメントに記載されている画面である。また、バッチ処理とは、ドキュメントに記載されているバッチ処理である。また、データベースとは、ドキュメントに記載されているデータベースである。また、データベース識別子とは、データベースを識別する情報であるが、テーブル識別子などでも良い。さらに、ドキュメント格納部１０１のドキュメントが有する属性値は、通常、手入力により入力されるが、後述するように、自動生成されても良い。つまり、属性値は、自動的にドキュメントから抽出されても良い。属性値を自動生成する具体的な処理方法については後述する。
【００４４】
ドキュメント格納部１０１は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。ドキュメント格納部１０１にドキュメントが記憶される過程は問わない。例えば、記録媒体を介してドキュメントがドキュメント格納部１０１で記憶されるようになってもよく、通信回線等を介して送信されたドキュメントがドキュメント格納部１０１で記憶されるようになってもよく、あるいは、入力デバイスを介して入力されたドキュメントがドキュメント格納部１０１で記憶されるようになってもよい。
【００４５】
ドキュメント関係情報格納部１０２は、ドキュメント格納部１０１に格納されている２以上のドキュメント間の関係を示すドキュメント関係情報を格納し得る。ドキュメント関係情報は、例えば、開発過程における上流工程で作成された一のドキュメントと、当該上流工程の一のドキュメントに関連する下流工程で作成された１以上のドキュメントとを識別する情報である。ドキュメント関係情報は、例えば、（概要設計書０１，詳細設計書０１２）である。これは、概要設計書「概要設計書０１」をさらに詳細にブレークダウンした詳細設計書が「詳細設計書０１２」であることを示す。また、ドキュメント関係情報は、例えば、（概要設計書０１，（詳細設計書０１１，詳細設計書０１２，詳細設計書０１３））である。これは、概要設計書「概要設計書０１」をさらに詳細にブレークダウンした詳細設計書が「詳細設計書０１１」、「詳細設計書０１２」、および「詳細設計書０１３」であることを示す。また、開発過程とは、例えば、要件定義、基本設計（概要設計でも良い）、詳細設計、プログラミング等の開発の上流から下流に至る工程である。また、開発過程とは、例えば、プロジェクト計画、外部設計、内部設計、製造等の上流から下流に至る工程である。また、ドキュメント間の関係とは、例えば、詳細化関係、利用関係などである。詳細化関係とは、上流工程のドキュメントと、当該上流工程のドキュメントの技術内容を詳細化した下流行程のドキュメントとの関係である。利用関係とは、下流工程のドキュメントに記載された内容を、上流工程のドキュメントが利用する関係である。その他、ドキュメント関係情報が示すドキュメント間の関係の意味は種々あり得る。また、ドキュメント関係情報は、通常、ドキュメント間の親子関係を示す。また、２以上の親子関係を示す情報により、ドキュメントの先祖、子孫の関係を把握でき得る。ドキュメント関係情報が「ＤＯＣ１−ＤＯＣ２―ＤＯＣ３−ＤＯＣ４」という４階層のドキュメント間の関係を示す場合、ドキュメント「ＤＯＣ１」の子がドキュメント「ＤＯＣ２」である。また、ドキュメント「ＤＯＣ１」の子孫はドキュメント「ＤＯＣ３」「ＤＯＣ４」である。さらに、ドキュメント「ＤＯＣ４」の先祖はドキュメント「ＤＯＣ１」「ＤＯＣ２」「ＤＯＣ３」であり、ドキュメント「ＤＯＣ４」の親は「ＤＯＣ３」である。また、上記の親子関係とは、通常、一の親のドキュメントに対して、1以上の子のドキュメントがリンクされている関係である。
【００４６】
ドキュメント関係情報格納部１０２は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。ドキュメント関係情報格納部１０２にドキュメント関係情報が記憶される過程は問わないが、後述するように、自動生成され、記憶されることは好適である。
【００４７】
開発者情報格納部１０３は、開発者を識別する開発者識別子を有する開発者情報を１以上格納し得る。開発者情報は、開発者識別子と開発者のレベルを有することは好適である。開発者のレベルは、以下、開発者レベル、または、単にレベルという。開発者情報は、開発者の現在の仕事の負荷の状況（８０％，１００％など）や、開発者の開発経験年数や開発経験言語（Ｃ言語、アセンブラ、ＪＡＶＡ（登録商標）など）や、開発者が現在従事しているプロジェクト名など、開発者に関する種々の情報を有しても良い。
【００４８】
開発者情報格納部１０３は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。開発者情報格納部１０３に開発者情報が記憶される過程は問わない。
【００４９】
受付部１０４は、ユーザから情報や命令等を受け付ける。情報は、例えば、修正すべき機能を識別する機能識別子や、大幅改訂すべき画面を識別する画面識別子などの１以上の属性値である。また、ここでの属性値は、通常、改変を要する箇所を特定する情報である。箇所とは、機能や画面やデータベースや、特定のドキュメントや、特定のプログラムの関数などである。また、受付部１０４が受け付ける情報は、例えば、一のドキュメントグループ（例えば、２以上のドキュメント識別子の集合）および実績工数（例えば、１０人月）である。また、受付部１０４は、ドキュメントグループを出力する指示であるドキュメントグループ出力指示を受け付けても良い。ドキュメントグループ出力指示は、機能識別子や画面識別子などの１以上の属性値を有する。また、受付部１０４は、工数を算出する演算式を改訂するために、工数算出式の改訂指示を受け付けても良い。改訂指示は、ドキュメントグループを特定する情報、実績工数を有する。また、受付部１０４は、ドキュメントの開発難易度を自動的に蓄積する指示である開発難易度蓄積指示を受け付けても良い。また、受付部１０４は、ドキュメントの属性値を自動的に蓄積する指示である属性蓄積指示を受け付けても良い。また、ここで、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
【００５０】
情報や命令等の入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。受付部１０４は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【００５１】
ドキュメント検索部１０５は、受付部１０４が受け付けた１以上の属性値を有する１以上のドキュメントを、ドキュメント格納部１０１から検索する。ここで、検索とは、通常、ドキュメント識別子の取得であるが、ドキュメントの実体の取得でも良い。
【００５２】
ドキュメント検索部１０５は、通常、ＭＰＵやメモリ等から実現され得る。ドキュメント検索部１０５の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５３】
関連ドキュメント検索部１０６は、ドキュメント関係情報格納部１０２に格納されているドキュメント関係情報を用いて、ドキュメント検索部１０５が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメントを検索する。また、関連ドキュメント検索部１０６は、ドキュメント関係情報格納部１０２に格納されているドキュメント関係情報を用いて、ドキュメント検索部１０５が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメント、およびドキュメント検索部１０５が検索した１以上の各ドキュメントの先祖のドキュメントである１以上のドキュメントを検索しても良い。ここで、検索とは、通常、ドキュメント識別子の取得であるが、ドキュメントの実体の取得でも良い。
【００５４】
関連ドキュメント検索部１０６は、通常、ＭＰＵやメモリ等から実現され得る。関連ドキュメント検索部１０６の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５５】
ドキュメントグループ取得部１０７は、ドキュメント検索部１０５が検索した１以上のドキュメント、および関連ドキュメント検索部１０６が検索した１以上のドキュメントを、階層関係（ドキュメント関係情報を用いて取得可能な関係）を構成する最上位のドキュメントごとに、最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、１以上のドキュメントグループを取得する。ドキュメントグループ取得部１０７は、通常、ドキュメント関係情報格納部１０２に格納されているドキュメント関係情報を用いて、１以上のドキュメントグループを取得する。ドキュメントグループ取得部１０７が取得した複数のドキュメントグループにおいて、一部のドキュメントが複数のドキュメントグループに属する場合もあり得る。ここで、ドキュメントグループとは、１以上のドキュメント識別子だけでも良い。また、ドキュメントグループは、１以上のドキュメントの実体だけでも良い。また、ドキュメントグループは、１以上のドキュメント識別子とドキュメントの実体の組でも良い。つまり、ドキュメントグループは、仕事のまとまりを示す情報である、と言える。
【００５６】
ドキュメントグループ取得部１０７は、通常、ＭＰＵやメモリ等から実現され得る。ドキュメントグループ取得部１０７の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００５７】
ドキュメントグループ出力部１０８は、ドキュメントグループ取得部１０７が取得した１以上のドキュメントグループを出力する。ドキュメントグループの出力態様は問わない。ドキュメントグループ出力部１０８は、ドキュメントグループを構成する１以上のドキュメントのドキュメント識別子のリストを出力しても良いし、２以上のドキュメントの階層関係とともに、図的に、ドキュメントグループが認識可能なように出力しても良い。ここで、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置（例えば、表示装置）への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
【００５８】
ドキュメントグループ出力部１０８は、ディスプレイ等の出力デバイスを含むと考えても含まないと考えても良い。ドキュメントグループ出力部１０８は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００５９】
開発者識別子取得部１０９は、開発者情報格納部１０３から、ドキュメントグループ取得部１０７が取得した１以上の各ドキュメントグループに対して、開発者識別子を取得する。開発者識別子取得部１０９は、各ドキュメントグループに対して、当該ドキュメントグループが示す改変箇所（例えば、改変すべきプログラム群）の改変、または開発を行う開発者を示す開発者識別子を取得する。開発者識別子取得部１０９は、開発者情報格納部１０３から、ドキュメントグループ取得部１０７が取得した１以上の各ドキュメントグループに対して、一の開発者識別子を取得する。ここで、開発者識別子取得部１０９は、例えば、現在、何らのプロジェクトにも参加していない開発者識別子を取得する。つまり、開発者識別子取得部１０９は、開発者情報格納部１０３の開発者情報が有する「現プロジェクト名」が「ＮＵＬＬ」の開発者情報に含まれる開発者識別子を取得する。また、開発者識別子取得部１０９は、例えば、一のドキュメントグループに対して、ランダムに、固定人数分（例えば、一名）の開発者識別子を取得しても良い。なお、一のドキュメントグループに対して、１名の開発者の開発者識別子を取得することは好適である。まとまりのある開発（修正）箇所の開発は、複数人で行うより、一人で行う方が、効率や品質が高くなることが多いからである。また、開発者識別子取得部１０９は、例えば、一のドキュメントグループが有するドキュメントが有する属性値「開発難易度」と、開発者情報が有する属性値「レベル」とを用いて、当該一のドキュメントグループに対応する改変や開発に適任である開発者を選択して、取得する。例えば、開発者識別子取得部１０９は、一のドキュメントグループが有するドキュメントが有する開発難易度に「高」を含む場合、レベル「高」の開発者識別子を取得したり、一のドキュメントグループが有するドキュメントが有する開発難易度の５０％以上が「高」である場合、レベル「高」の開発者識別子を取得したり、一のドキュメントグループが有するドキュメントが有する開発難易度の１０％以下のみが「高」である場合、レベル「低」の開発者識別子を取得したりする。開発者識別子取得部１０９は、ドキュメントグループを構成する１以上のドキュメントの開発難易度に合致するレベルの開発者の開発者識別子を取得すれば良い。ここで、開発難易度とレベルとが合致するか否かの判断方法は種々あり得る。なお、ドキュメントグループは、通常、開発や改良の単位である。
【００６０】
開発者識別子取得部１０９は、通常、ＭＰＵやメモリ等から実現され得る。開発者識別子取得部１０９の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６１】
開発者識別子取得部１０９を構成するレベル決定手段１０９１は、１以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、ドキュメントの数、各ドキュメントの開発難易度のうちの１以上の情報を用いて、開発に必要な開発者のレベルを決定する。レベル決定手段１０９１は、ドキュメントの数が多いほど、また、各ドキュメントの開発難易度が高いほど、高いレベルを取得する。つまり、レベル決定手段１０９１は、例えば、ドキュメントの数、開発難易度をパラメータとする増加関数によりレベルを決定する。レベル決定手段１０９１は、通常、ＭＰＵやメモリ等から実現され得る。レベル決定手段１０９１の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６２】
開発者識別子取得手段１０９２は、レベル決定手段１０９１が決定したレベルに対応する開発者識別子を取得する。開発者識別子取得手段１０９２は、通常、ＭＰＵやメモリ等から実現され得る。開発者識別子取得手段１０９２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６３】
開発者識別子出力部１１０は、開発者識別子取得部１０９が取得した開発者識別子を出力する。開発者識別子の出力態様は問わない。開発者識別子出力部１１０は、通常、ドキュメントグループを識別する情報に対応付けて、開発者識別子を出力する。開発者識別子出力部１１０は、ドキュメントグループ識別子と開発者識別子の対のリストを出力しても良いし、図的にドキュメントグループ識別子と開発者識別子とを出力しても良い。開発者識別子出力部１１０は、ディスプレイ等の出力デバイスを含むと考えても含まないと考えても良い。開発者識別子出力部１１０は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００６４】
工数算出元情報取得部１１１は、ドキュメントグループ取得部１０７が取得した１以上の各ドキュメントグループに含まれる１以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する。工数算出元情報取得部１１１は、ドキュメントグループの一部のドキュメントの開発難易度やドキュメントの量などの工数算出元情報を取得しても良い。工数算出元情報取得部１１１は、例えば、ドキュメントグループに含まれるドキュメント「プログラム」のステップ数を工数算出元情報として取得しても良いし、ドキュメントグループに含まれるドキュメント「プログラム」のステップ数と開発難易度を工数算出元情報として取得しても良い。工数算出元情報取得部１１１は、受付部１０４が受け付けた一のドキュメントグループの工数算出元情報を取得しても良い。なお、上記のドキュメントの量とは、プログラムのステップ数、ドキュメントの行数、章の数、サブセクションの数などのうちの１以上の情報である。
【００６５】
工数算出元情報取得部１１１は、通常、ＭＰＵやメモリ等から実現され得る。工数算出元情報取得部１１１の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６６】
工数算出部１１２は、工数算出元情報取得部１１１が取得した工数算出元情報をパラメータとして工数を算出する。工数算出部１１２は、開発難易度が高いほど、ドキュメントの量が多いほど、工数が大きくなるように工数を算出する。
【００６７】
工数算出部１１２は、通常、ＭＰＵやメモリ等から実現され得る。工数算出部１１２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００６８】
工数算出部１１２を構成する演算式格納手段１１２１は、工数を算出する演算式を格納している。演算式は、例えば、開発難易度、ドキュメントの量をパラメータとする増加関数である。演算式格納手段１１２１は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。演算式格納手段１１２１に演算式が記憶される過程は問わない。
【００６９】
演算手段１１２２は、工数算出元情報取得部１１１が取得した工数算出元情報を、演算式格納手段１１２１の演算式に代入し、当該演算式を実行して、工数を取得する。演算手段１１２２は、通常、ＭＰＵやメモリ等から実現され得る。演算手段１１２２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７０】
工数出力部１１３は、工数算出部１１２が算出した工数を出力する。工数出力部１１３は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。工数出力部１１３は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【００７１】
プログラム情報取得部１１４は、プログラムであるドキュメントから、プログラムの関数やメソッドやメッセージの数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得する。入出力の数とは、たとえば、プログラム中の関数の引数の数、上位関数にリターンする変数や定数の数などである。ステップ数とは、例えば、プログラムの行数や終端子（Ｃ言語では"；"）の数などである。なお、プログラムから関数やメソッドやメッセージを認識する技術は、通常のコンパイラの技術として公知技術であり、その数を算出することも公知技術である。また、入出力を認識する技術は、通常のコンパイラの技術として公知技術であり、その数を算出することも公知技術である。さらに、ステップ数を算出することも公知技術である。プログラム情報取得部１１４は、通常、ＭＰＵやメモリ等から実現され得る。プログラム情報取得部１１４の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７２】
開発難易度取得部１１５は、ドキュメントに対して、開発難易度を取得する。開発難易度取得部１１５は、プログラムであるドキュメント、およびプログラムの先祖のドキュメントをドキュメント格納部１０１から取得し、当該取得した１以上の各ドキュメントに対して、プログラム情報取得部１１４が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を決定する。開発難易度取得部１１５は、プログラム以外のドキュメントの情報（例えば、ドキュメントの量（頁数、行数など）、機能数（○○機能などの数）など）から、開発難易度を決定しても良い。開発難易度取得部１１５は、通常、ＭＰＵやメモリ等から実現され得る。開発難易度取得部１１５の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７３】
開発難易度蓄積部１１６は、開発難易度取得部１１５が取得した開発難易度を、１以上の各ドキュメントの属性値として、ドキュメント格納部１０１に蓄積する。開発難易度蓄積部１１６は、通常、ＭＰＵやメモリ等から実現され得る。開発難易度蓄積部１１６の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７４】
属性値取得部１１７は、ドキュメント格納部１０１の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか１以上の属性値を取得する。属性値取得部１１７は、例えば、属性値の種類に対応して、手がかり句を管理しており、ドキュメントから、手がかり句を用いて属性値を取得する。また、属性値取得部１１７は、手がかり句を用いて取得しても良いし、ドキュメント構造を用いて取得しても良い。手がかり句とは、「○○機能」「○○画面」「○○処理」「○○データベース」などである。つまり、属性値取得部１１７は、例えば、ドキュメントを自然言語処理し、当該ドキュメントから自立語を取得し、「○○機能」に合致する場合、当該「○○機能」を機能識別子として取得する。また、上記のドキュメント構造とは、「第1章」「１．２」「２．１．３」などの章、セクション、サブセクションなどの構造である。そして、属性値取得部１１７は、特定の構造（例えば、サブセクション（［１−９］．［１−９］）のタイトルの中から、手がかり句を用いて属性値を取得する。
【００７５】
属性値取得部１１７は、ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、当該関数名またはメソッド名またはメッセージ名に対応する属性値（機能識別子など）を取得する。なお、かかる場合、例えば、属性値取得部１１７は、関数名と機能識別子との対応情報を保持している、とする。
【００７６】
属性値取得部１１７は、通常、ＭＰＵやメモリ等から実現され得る。属性値取得部１１７の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７７】
属性値蓄積部１１８は、属性値取得部１１７が取得した１以上の属性値を、ドキュメント格納部１０１に蓄積する。通常、属性値蓄積部１１８は、１以上の属性値を、ドキュメントと対応付けて蓄積する。なお、属性値蓄積部１１８は、取得された属性値を、プログラムの祖先や子孫のドキュメントの属性値として蓄積することは好適である。属性値蓄積部１１８は、通常、ＭＰＵやメモリ等から実現され得る。属性値蓄積部１１８の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００７８】
ドキュメント利用検出部１１９は、一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出する。検出とは、例えば、ドキュメント識別子の取得である。ドキュメント利用検出部１１９は、編集しているドキュメントのドキュメント識別子と、編集中にオープンされている他のドキュメントのドキュメント識別子を取得する。また、ドキュメント利用検出部１１９は、コピー＆ペースト、またはカット＆ペーストの処理を検知し、コピー元またはカット元のドキュメントのドキュメント識別子と、ペースト先のドキュメントのドキュメント識別子を取得する。編集対象のドキュメントのドキュメント識別子、オープンされているドキュメントのドキュメント識別子、コピー元またはカット元のドキュメントのドキュメント識別子、およびペースト先のドキュメントのドキュメント識別子を取得する処理は公知技術である。
【００７９】
ドキュメント利用検出部１１９は、通常、ＭＰＵやメモリ等から実現され得る。ドキュメント利用検出部１１９の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００８０】
ドキュメント関係情報生成部１２０は、ドキュメント利用検出部１１９がドキュメントの表示または流用を検出した場合、表示されているドキュメントが編集されているドキュメントの親ドキュメントとなり、流用元のドキュメントが流用先のドキュメントの親ドキュメントとなるようにドキュメント関係情報を生成する。ドキュメント関係情報生成部１２０は、通常、ＭＰＵやメモリ等から実現され得る。ドキュメント関係情報生成部１２０の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００８１】
ドキュメント関係情報蓄積部１２１は、ドキュメント関係情報生成部１２０が生成したドキュメント関係情報を、ドキュメント関係情報格納部１０２に蓄積する。ドキュメント関係情報蓄積部１２１は、通常、ＭＰＵやメモリ等から実現され得る。ドキュメント関係情報蓄積部１２１の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
演算式更新部１２２は、工数算出元情報取得部１１１が取得した工数算出元情報と受付部１０４が受け付けた実績工数とを用いて、演算式格納手段１１２１の演算式を更新する。演算式が、例えば、「工数（人月）＝ａ１×（ステップ数×（関数の数／５００＋入力数／３５００＋出力数／３５００）×レベル係数）」である、とする。ここで、ａ１は定数である。そして、レベル係数は、レベルが「高」の場合は１．１、レベルが「中」の場合は１．０、レベルが「低」の場合は０．９である、とする。また、工数算出元情報は、ここでは、全プログラムのステップ数、全プログラムの関数の数、全プログラムの引数の数の合計である入力数、全プログラムのリターン値の数の合計である出力数である、とする。そして、演算式更新部１２２は、過去の実績工数（実際にかかった工数）と、その時の条件である工数算出元情報と、パラメータａ１とを対応付けて保持している、とする。そして、演算式更新部１２２は、受付部１０４が受け付けた実績工数と、当該実績工数に対応する工数算出元情報（工数算出元情報取得部１１１が取得した工数算出元情報）とを演算式「工数（人月）＝ａ１×（ステップ数×（関数の数／５００＋入力数／３５００＋出力数／３５００）×レベル係数）」に代入し、ａ１を取得する。そして、既に格納している１以上のａ１と、今回取得したａ１とを用いて、ａ１の平均値を算出する。そして、演算式更新部１２２は、算出した新しいａ１を、演算式格納手段１１２１の演算式に上書きする。演算式更新部１２２は、通常、ＭＰＵやメモリ等から実現され得る。演算式更新部１２２の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはＲＯＭ等の記録媒体に記録されている。但し、ハードウェア（専用回路）で実現しても良い。
【００８２】
次に、開発支援装置１の動作について説明する。まず、開発支援装置１が、必要に応じて、ドキュメントグループを出力したり、工数算出の演算式を更新したりする指示について、図３のフローチャートを用いて説明する。
【００８３】
（ステップＳ３０１）受付部１０４は、ユーザからドキュメントグループ出力指示を受け付けたか否かを判断する。ドキュメントグループ出力指示を受け付ければステップＳ３０２に行き、受け付けなければステップＳ３１５に行く。
【００８４】
（ステップＳ３０２）ドキュメント検索部１０５は、ステップＳ３０１で受け付けられたドキュメントグループ出力指示が有する１以上の属性値（例えば、機能名、画面名など）を、属性値として有する１以上のドキュメントのドキュメント識別子を、ドキュメント格納部１０１から取得する。
【００８５】
（ステップＳ３０３）関連ドキュメント検索部１０６は、ドキュメント関係情報格納部１０２に格納されているドキュメント関係情報を用いて、ステップＳ３０２で取得された１以上のドキュメント識別子で識別される１以上の各ドキュメントに関連するドキュメントを取得する。かかる処理を関連ドキュメント取得処理という。関連ドキュメント取得処理について、図４のフローチャートを用いて説明する。
【００８６】
（ステップＳ３０４）ドキュメントグループ取得部１０７は、ステップＳ３０２で取得された１以上のドキュメント識別子およびステップＳ３０３で取得された１以上のドキュメント識別子と、ドキュメント関係情報とを用いて、１以上のドキュメントグループを取得する。この処理を、ドキュメントグループ取得処理という。ドキュメントグループ取得処理について、図５のフローチャートを用いて説明する。
【００８７】
（ステップＳ３０５）ドキュメントグループ出力部１０８は、ステップＳ３０４で取得された１以上のドキュメントグループを出力する。
【００８８】
（ステップＳ３０６）開発者識別子取得部１０９は、カウンタｉに１を代入する。
【００８９】
（ステップＳ３０７）開発者識別子取得部１０９は、ステップＳ３０５で出力されたドキュメントグループの中で、ｉ番目のドキュメントグループが存在するか否かを判断する。存在すればステップＳ３０８に行き、存在しなければステップＳ３０１に戻る。
【００９０】
（ステップＳ３０８）開発者識別子取得部１０９を構成するレベル決定手段１０９１は、ｉ番目のドキュメントグループに対して、開発に必要な開発者のレベルを決定する。かかる処理を、レベル決定処理という。レベル決定処理について、図６のフローチャートを用いて説明する。
【００９１】
（ステップＳ３０９）開発者識別子取得手段１０９２は、ステップＳ３０８で決定されたレベルに対応する１以上の開発者識別子を、開発者情報格納部１０３から取得する。
【００９２】
（ステップＳ３１０）開発者識別子出力部１１０は、ステップＳ３０９で取得された開発者識別子を、ｉ番目のドキュメントグループに対応付けて出力する。
【００９３】
（ステップＳ３１１）工数算出元情報取得部１１１は、ｉ番目のドキュメントグループに対して、工数算出元情報を取得する。かかる処理を工数算出元情報取得処理という。工数算出元情報取得処理について、図７のフローチャートを用いて説明する。
【００９４】
（ステップＳ３１２）工数算出部１１２は、ｉ番目のドキュメントグループに対して、ステップＳ３１１で取得された工数算出元情報を、演算式格納手段１１２１の演算式に代入し、当該演算式を実行して、工数を取得する。
【００９５】
（ステップＳ３１３）工数出力部１１３は、ｉ番目のドキュメントグループに対応付けて、工数算出部１１２が算出した工数を出力する。ステップＳ３０１に戻る。
【００９６】
（ステップＳ３１４）開発者識別子取得部１０９は、カウンタｉを１、インクリメントする。ステップＳ３０７に戻る。
【００９７】
（ステップＳ３１５）受付部１０４は、ユーザから工数算出式の改訂指示を受け付けたか否かを判断する。改訂指示を受け付ければステップＳ３１６に行き、受け付けなければステップＳ３０１に戻る。
【００９８】
（ステップＳ３１６）演算式更新部１２２は、ステップＳ３１５で受け付けた改訂指示が有するドキュメントグループ識別子で特定できる１以上のドキュメント識別子を取得する。
【００９９】
（ステップＳ３１７）工数算出元情報取得部１１１は、ステップＳ３１６で取得された１以上のドキュメント識別子で識別されるドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する。かかる処理は、工数算出元情報取得処理である。
【０１００】
（ステップＳ３１８）演算式更新部１２２は、ステップＳ３１５で受け付けた改訂指示が有する実績工数を取得する。
【０１０１】
（ステップＳ３１９）演算式更新部１２２は、演算式格納手段１１２１の演算式を読み出す。そして、ステップＳ３１７で取得された工数算出元情報、ステップＳ３１８で取得した実績工数を、読み出した演算式に適用し、新しい演算式を構成する。
【０１０２】
（ステップＳ３２０）演算式更新部１２２は、ステップＳ３１９で構成した新しい演算式を、演算式格納手段１１２１に上書きする。ステップＳ３０１に戻る。
【０１０３】
なお、図３のフローチャートにおいて、ドキュメントグループの出力処理、開発者識別子の出力処理、工数の出力処理、および演算式の更新処理は、それぞれ独立に行っても良。また、上記の複数の処理のうち、一つの処理のみ行っても良い。
【０１０４】
さらに、図３のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【０１０５】
次に、ステップＳ３０３の関連ドキュメント取得処理について、図４のフローチャートを用いて説明する。
【０１０６】
（ステップＳ４０１）関連ドキュメント検索部１０６は、カウンタｉに１を代入する。
【０１０７】
（ステップＳ４０２）関連ドキュメント検索部１０６は、ステップＳ３０２で取得された１以上のドキュメント識別子の中で、ｉ番目のドキュメント識別子が存在するか否かを判断する。存在すればステップＳ４０３に行き、存在しなければ上位処理リターンする。
【０１０８】
（ステップＳ４０３）関連ドキュメント検索部１０６は、ドキュメント関係情報格納部１０２のドキュメント関係情報を用いて、ｉ番目のドキュメント識別子より下位のドキュメントのドキュメント識別子をすべて取得する。つまり、関連ドキュメント検索部１０６は、ｉ番目のドキュメント識別子のすべての子のドキュメント識別子を取得する。そして、１以上の各子のドキュメント識別子のさらに子（ｉ番目のドキュメント識別子の孫）のドキュメント識別子をすべて取得する。関連ドキュメント検索部１０６は、かかる処理を再帰的に繰り返し、ツリー構造を有するドキュメント識別子群の中で、ｉ番目のドキュメント識別子をルートとし、最下位までのドキュメント識別子を取得する。そして、関連ドキュメント検索部１０６は、取得した１以上のドキュメント識別子を図示しないバッファに書き込む。なお、子のドキュメント識別子とは、子のドキュメントのドキュメント識別子と同意義である。
【０１０９】
（ステップＳ４０４）関連ドキュメント検索部１０６は、ドキュメント関係情報格納部１０２のドキュメント関係情報を用いて、ｉ番目のドキュメント識別子の一つの親のドキュメント識別子、およびさらに、その親（祖父）のドキュメント識別子という具合に、直系の先祖の１以上のドキュメント識別子を、ルートのドキュメント識別子まで取得する。そして、関連ドキュメント検索部１０６は、取得した１以上のドキュメント識別子を図示しないバッファに書き込む。なお、親のドキュメント識別子とは、親のドキュメントのドキュメント識別子と同意義である。
【０１１０】
（ステップＳ４０５）関連ドキュメント検索部１０６は、カウンタｉを１、インクリメントする。ステップＳ４０２に戻る。
【０１１１】
なお、図４のフローチャートにおいて、図示しないバッファに、ステップＳ３０２で取得された１以上のドキュメント識別子で識別されるドキュメントに関連するドキュメントのドキュメント識別子が格納された。
【０１１２】
次に、ステップＳ３０４のドキュメントグループ取得処理について、図５のフローチャートを用いて説明する。
【０１１３】
（ステップＳ５０１）ドキュメントグループ取得部１０７は、カウンタｉに１を代入する。
【０１１４】
（ステップＳ５０２）ドキュメントグループ取得部１０７は、図４のフローチャートにおいて、１以上のドキュメント識別子が書き込まれた図示しないバッファの中に、ｉ番目のドキュメント識別子が存在するか否かを判断する。存在すればステップＳ５０３に行き、存在しなければステップＳ５０７に行く。
【０１１５】
（ステップＳ５０３）ドキュメントグループ取得部１０７は、バッファの中のｉ番目のドキュメント識別子の親のドキュメント識別子を、バッファの中から取得する。
【０１１６】
（ステップＳ５０４）ドキュメントグループ取得部１０７は、ステップＳ５０３で親のドキュメント識別子が取得できたか否かを判断する。取得できればステップＳ５０６に行き、取得できなければステップＳ５０５に行く。なお、ここでは、図４のフローチャートにおいて、取り出した１以上のドキュメント識別子の中で、ｉ番目のドキュメント識別子が、最上位（ルート）のドキュメント識別子であるか否かを判断していることとなる。なお、ルートのドキュメント識別子は、複数存在することもある。
【０１１７】
（ステップＳ５０５）ドキュメントグループ取得部１０７は、ｉ番目のドキュメント識別子を、ルートのドキュメント識別子として、図示しないバッファに登録する。なお、ルートのドキュメント識別子ごとに、ドキュメントグループができる。
【０１１８】
（ステップＳ５０６）ドキュメントグループ取得部１０７は、カウンタｉを１、インクリメントする。ステップＳ５０２に戻る。
【０１１９】
（ステップＳ５０７）ドキュメントグループ取得部１０７は、カウンタｉに１を代入する。
【０１２０】
（ステップＳ５０８）ドキュメントグループ取得部１０７は、バッファ（ステップＳ５０５で利用されたバッファであり、図４のフローチャートにおいて利用されたバッファではない）内に、ｉ番目のルートのドキュメント識別子が存在するか否かを判断する。ｉ番目のルートのドキュメント識別子が存在すればステップＳ５０９に行き、存在しなければ上位処理にリターンする。
【０１２１】
（ステップＳ５０９）ドキュメントグループ取得部１０７は、図４のフローチャートにおいて、１以上のドキュメント識別子が書き込まれた図示しないバッファの中から、ｉ番目のルートのドキュメント識別子の子孫のすべてのドキュメント識別子を取得する。つまり、ドキュメントグループ取得部１０７は、図４のフローチャートにおいて、１以上のドキュメント識別子が書き込まれた図示しないバッファの中から、ｉ番目のルートのドキュメント識別子のすべての子のドキュメント識別子を取得し、さらに１以上の各子のドキュメント識別子のさらに子のドキュメント識別子を取得する。そして、かかる処理を再帰的に行う。
【０１２２】
（ステップＳ５１０）ドキュメントグループ取得部１０７は、ｉ番目のルートのドキュメント識別子と、当該ルートのドキュメント識別子の子孫の１以上のドキュメント識別子（ステップＳ５０９で取得したドキュメント識別子）とを有するドキュメントグループを構成する１以上のドキュメント識別子を、図示しないバッファに格納する。この１以上のドキュメント識別子が、ｉ番目のドキュメントグループを構成するドキュメント群の識別子の集合である。
【０１２３】
（ステップＳ５１１）ドキュメントグループ取得部１０７は、カウンタｉを１、インクリメントする。ステップＳ５０２に戻る。
【０１２４】
なお、図５のフローチャートにおいて、ステップＳ５１０で、ドキュメントグループごとに、１以上のドキュメント識別子が格納される。
【０１２５】
次に、ステップＳ３０８のレベル決定処理について、図６のフローチャートを用いて説明する。
【０１２６】
（ステップＳ６０１）レベル決定手段１０９１は、ドキュメントグループが有する１以上のドキュメントの量を取得する。具体的には、例えば、レベル決定手段１０９１は、ドキュメントグループが有するドキュメント識別子で識別される１以上のドキュメントを、ドキュメント格納部１０１から読み出し、ドキュメントの数、当該読み出した１以上のドキュメントに含まれるプログラム全体のステップ数、入力の数の合計、出力の数の合計などの１以上の量に関する情報を取得する。なお、ドキュメントの量とは、ドキュメントの数、ステップ数、入力の数の合計、出力の数の合計などのうちの１以上の数値である。
【０１２７】
（ステップＳ６０２）レベル決定手段１０９１は、カウンタｉに１を代入する。
【０１２８】
（ステップＳ６０３）レベル決定手段１０９１は、ｉ番目のドキュメントが存在するか否かを判断する。ｉ番目のドキュメントが存在すればステップＳ６０４に行き、存在しなければステップＳ６０６に行く。
【０１２９】
（ステップＳ６０４）レベル決定手段１０９１は、ｉ番目のドキュメントの属性値である開発難易度を、ドキュメント格納部１０１から取得する。
【０１３０】
（ステップＳ６０５）レベル決定手段１０９１は、カウンタｉを１、インクリメントする。ステップＳ６０３に戻る。
【０１３１】
（ステップＳ６０６）レベル決定手段１０９１は、ステップＳ６０４で取得した１以上のドキュメントの開発難易度から、各開発難易度の値の割合を取得する。なお、開発難易度の値は、例えば、「高（３）」「中（２）」「低（１）」などである。また、開発難易度の値は、５段階でも、１０段階等でも良い。
【０１３２】
（ステップＳ６０７）レベル決定手段１０９１は、ステップＳ６０１で取得したドキュメントの量、開発難易度の各値の割合を用いて、レベルを決定する。なお、レベル決定手段１０９１は、例えば、ドキュメントの量、開発難易度の各値の割合をパラメータとする演算式を保持しており、かかる演算式を用いて、レベルを決定しても良い。演算式は、ドキュメントの量が多いほど、開発難易度の高い値の割合が多いほど、高いレベルを算出するような演算式（ドキュメントの量等をパラメータとする増加関数）である。また、レベル決定手段１０９１は、例えば、ドキュメントの量の範囲、開発難易度の各値の割合の範囲を軸とする、レベル決定のための管理表を保持しており、かかる管理表を参照して、レベルを決定しても良い。上位処理にリターンする。
【０１３３】
次に、ステップＳ３１１の工数算出元情報取得処理について、図７のフローチャートを用いて説明する。
【０１３４】
（ステップＳ７０１）工数算出元情報取得部１１１は、初期化処理を行う。初期化処理とは、全ステップ数、全入力数、全出力数を格納する変数に「０」を代入する処理である。
【０１３５】
（ステップＳ７０２）工数算出元情報取得部１１１は、ドキュメントグループを構成するドキュメントの中のすべてのプログラムを、ドキュメント格納部１０１から読み出す。
【０１３６】
（ステップＳ７０３）工数算出元情報取得部１１１は、カウンタｉに１を代入する。
【０１３７】
（ステップＳ７０４）工数算出元情報取得部１１１は、ステップＳ７０２で読み出したすべてのプログラムの中に、ｉ番目の関数の定義が存在するか否かを判断する。存在すればステップＳ７０５に行き、存在しなければステップＳ７１２に行く。
【０１３８】
（ステップＳ７０５）工数算出元情報取得部１１１は、ｉ番目の関数のステップ数を算出する。
【０１３９】
（ステップＳ７０６）工数算出元情報取得部１１１は、変数「全ステップ数」に、ステップＳ７０５で算出したステップ数を加算する。
【０１４０】
（ステップＳ７０７）工数算出元情報取得部１１１は、ｉ番目の関数の引数の数を取得する
【０１４１】
（ステップＳ７０８）工数算出元情報取得部１１１は、変数「全入力数」に、ステップＳ７０７で算出したリターン値の数を加算する。
【０１４２】
（ステップＳ７０９）工数算出元情報取得部１１１は、
【０１４３】
（ステップＳ７１０）工数算出元情報取得部１１１は、変数「全出力数」に、ステップＳ７０９で算出したリターン値を加算する。
【０１４４】
（ステップＳ７１１）工数算出元情報取得部１１１は、カウンタｉを１、インクリメントする。ステップＳ７０４に戻る。
【０１４５】
なお、図７のフローチャートにおいて、工数算出元情報は、プログラムの全ステップ数、全入力数、全出力数であった。しかし、工数算出元情報は、全ドキュメント数などの他の値であっても良い。
【０１４６】
次に、開発支援装置１が、必要に応じて、開発難易度、ドキュメントの属性値等を自動的に蓄積する処理について、図８のフローチャートを用いて説明する。
【０１４７】
（ステップＳ８０１）受付部１０４は、開発難易度蓄積指示を受け付けたか否かを判断する。開発難易度蓄積指示を受け付ければステップＳ８０２に行き、受け付けなければステップＳ８１７に行く。
【０１４８】
（ステップＳ８０２）開発難易度取得部１１５は、カウンタｉに１を代入する。
【０１４９】
（ステップＳ８０３）開発難易度取得部１１５は、ドキュメント格納部１０１の中に、ｉ番目のドキュメント「プログラム」が存在するか否かを判断する。プログラム存在すればステップＳ８０４に行き、存在しなければステップＳ８１１に行く。なお、開発難易度取得部１１５は、ドキュメントの中をチェックし、プログラムであるか否かを判断しても良いし、ドキュメントの属性値の中のドキュメントの種類の値を取得し、その種類の値が「プログラム」である場合、ｉ番目のドキュメントがプログラムである、と判断しても良い。なお、ドキュメントの種類の値は、外部設計書、内部設計書、プログラム等があり得る。
【０１５０】
（ステップＳ８０４）開発難易度取得部１１５は、ｉ番目のプログラムのステップ数を取得する。そして、開発難易度取得部１１５は、ｉ番目のプログラムと対応付けて、ステップ数をバッファに、一時格納する。
【０１５１】
（ステップＳ８０５）開発難易度取得部１１５は、ｉ番目のプログラムの中の１以上の関数のすべての引数の数を取得する。そして、開発難易度取得部１１５は、ｉ番目のプログラムと対応付けて、引数の数をバッファに、一時格納する。
【０１５２】
（ステップＳ８０６）開発難易度取得部１１５は、ｉ番目のプログラムの中の１以上の関数のすべてのリターン値の数を取得する。そして、開発難易度取得部１１５は、ｉ番目のプログラムと対応付けて、リターン値の数をバッファに、一時格納する。
【０１５３】
（ステップＳ８０７）開発難易度取得部１１５は、ｉ番目のプログラムの中の全関数の数を取得する。そして、開発難易度取得部１１５は、ｉ番目のプログラムと対応付けて、全関数の数をバッファに、一時格納する。
【０１５４】
（ステップＳ８０８）開発難易度取得部１１５は、ステップ数、引数の数（入力数）、リターン値の数（出力数）、全関数の数のうち、１以上の値を用いて、開発難易度を取得する。なお、開発難易度取得部１１５は、ステップ数、引数の数（入力数）、リターン値の数（出力数）、全関数の数がそれぞれ大きいほど、開発難易度が高くなるように、開発難易度を決定する。
【０１５５】
（ステップＳ８０９）開発難易度蓄積部１１６は、ステップＳ８０８で決定した開発難易度を、ｉ番目のプログラムの属性値として蓄積する。
【０１５６】
（ステップＳ８１０）開発難易度蓄積部１１６は、カウンタｉを１、インクリメントする。ステップＳ７０３に戻る。
【０１５７】
（ステップＳ８１１）開発難易度取得部１１５は、カウンタｊに１を代入する。
【０１５８】
（ステップＳ８１２）開発難易度取得部１１５は、ドキュメント格納部１０１の中に、プログラム以外のｊ番目のドキュメントが存在するか否かを判断する。存在すればステップＳ８１３に行き、存在しなければステップＳ８０１に戻る。
【０１５９】
（ステップＳ８１３）開発難易度取得部１１５は、ドキュメント関係情報格納部１０２のドキュメント関係情報を用いて、ｊ番目のドキュメントの下位の１以上のプログラムのドキュメント識別子を取得する。そして、開発難易度取得部１１５は、取得した１以上のプログラムのステップ数の合計値を算出する。また、開発難易度取得部１１５は、１以上のプログラムの入力数の合計値を算出する。また、開発難易度取得部１１５は、１以上のプログラムの出力数の合計値を算出する。また、開発難易度取得部１１５は、１以上のプログラムの全関数の数の合計値を算出する。そして、開発難易度取得部１１５は、ここでは、ステップ数の合計値、入力数の合計値、出力数の合計値、および関数の数の合計値を有するプログラム情報を取得する。
【０１６０】
（ステップＳ８１４）開発難易度取得部１１５は、ステップＳ８１３で取得したプログラム情報を用いて、ｊ番目のドキュメントの開発難易度を決定する。なお、ステップ数の合計値、入力数の合計値、出力数の合計値、および関数の数の合計値のそれぞれが多いほど、開発難易度が高くなるように、開発難易度取得部１１５は、開発難易度を決定する。
【０１６１】
（ステップＳ８１５）開発難易度蓄積部１１６は、ｊ番目のドキュメントに対応付けて、ステップＳ８１４で取得した開発難易度を蓄積する。
【０１６２】
（ステップＳ８１６）開発難易度取得部１１５は、カウンタｊを１、インクリメントする。ステップＳ８１２に戻る。
【０１６３】
（ステップＳ８１７）受付部１０４は、属性蓄積指示を受け付けたか否かを判断する。属性蓄積指示を受け付ければステップＳ８１７に行き、受け付けなければステップＳ８０１に戻る。
【０１６４】
（ステップＳ８１８）属性値取得部１１７は、カウンタｉに１を代入する。
【０１６５】
（ステップＳ８１９）属性値取得部１１７は、ドキュメント格納部１０１にｉ番目のドキュメントが存在するか否かを判断する。存在すればステップＳ８２０に行き、存在しなければステップＳ８０１に戻る。
【０１６６】
（ステップＳ８２０）属性値取得部１１７は、ドキュメント格納部１０１から、ｉ番目のドキュメントを読み出す。
【０１６７】
（ステップＳ８２１）属性値取得部１１７は、カウンタｊに１を代入する。
【０１６８】
（ステップＳ８２２）属性値取得部１１７は、属性値取得部１１７が保持している属性値取得のためのルール（例えば、手がかり句）のうち、ｊ番目のルールが存在するか否かを判断する。ｊ番目のルールが存在すればステップＳ８２３に行き、存在しなければステップＳ８２７に行く。なお、ルールとは「条件：［漢字列］"機能"に合致すること、取得属性値：［漢字列］機能」である。このルールは、［漢字列］"機能"に合致する（例えば、印刷機能）場合、「［漢字列］機能（例えば、印刷機能）」を、属性値として取得することを示すルールである。
【０１６９】
（ステップＳ８２３）属性値取得部１１７は、ｉ番目のドキュメントに対して、ｊ番目のルールを適用し、属性値を取得する。なお、ここで、属性値が取得できない場合もある。
【０１７０】
（ステップＳ８２４）属性値取得部１１７は、ステップＳ８２３において、属性値を取得できたか否かを判断する。属性値を取得できればステップＳ８２５に行き、属性値を取得できなければステップＳ８２６に行く。
【０１７１】
（ステップＳ８２５）属性値蓄積部１１８は、ステップＳ８２３で取得した属性値を、ｉ番目のドキュメントに対応付けて蓄積する。
【０１７２】
（ステップＳ８２６）カウンタｊを１、インクリメントする。ステップＳ８２２に戻る。
【０１７３】
（ステップＳ８２７）カウンタｉを１、インクリメントする。ステップＳ８１９に戻る。
【０１７４】
次に、開発支援装置１が、ドキュメント関係情報を自動的に蓄積する処理について、図９のフローチャートを用いて説明する。なお、図９のフローチャートにおいて、ドキュメント関係情報を蓄積する処理以外の処理は省略している。
【０１７５】
（ステップＳ９０１）ドキュメント利用検出部１１９は、一のドキュメントが編集中であるか否かを判断する。編集中であればステップＳ９０２に行き、編集中でなければステップＳ９０１に戻る。
【０１７６】
（ステップＳ９０２）ドキュメント利用検出部１１９は、編集中のドキュメントのドキュメント識別子（例えば、ファイル名など）を取得する。なお、ドキュメント利用検出部１１９は、ドキュメントのファイルがオープンされた時に、ドキュメント識別子を取得しても良い。
【０１７７】
（ステップＳ９０３）ドキュメント利用検出部１１９は、他のドキュメントから文字列等をコピーし、一のドキュメンに、当該文字列等をペーストしたか否かを判断する。なお、ドキュメント利用検出部１１９は、コピーの命令、ペーストの命令の情報を保持しており、かかる命令が受け付けられたか否かを判断する。コピー＆ペーストが行われればステップＳ９０４に行き、コピー＆ペーストが行われなければステップＳ９０１に戻る。
【０１７８】
（ステップＳ９０４）ドキュメント関係情報生成部１２０は、文字列等をコピーした場合の元のドキュメントのドキュメント識別子を取得する。
【０１７９】
（ステップＳ９０５）ドキュメント関係情報生成部１２０は、ステップＳ９０２で取得した編集中のドキュメントのドキュメント識別子（例えば、ＤＯＣ１）と、ステップＳ９０４で取得したコピー元のドキュメントのドキュメント識別子（例えば、ＤＯＣ２）とを用いて、ドキュメント関係情報（例えば、（ＤＯＣ１，ＤＯＣ２））を生成する。
【０１８０】
（ステップＳ９０６）ドキュメント関係情報蓄積部１２１は、ステップＳ９０５で生成したドキュメント関係情報を、ドキュメント関係情報格納部１０２に蓄積する。ステップＳ９０１に戻る。
【０１８１】
なお、図９のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【０１８２】
また、図９のフローチャートにおいて、ドキュメント関係情報を生成して、蓄積する処理の一例を説明した。
【０１８３】
以下、本実施の形態における開発支援装置１の具体的な動作について説明する。
【０１８４】
今、あるソフトウェア開発プロジェクトの複数の開発者たちは、各自で、開発工程におけるドキュメントを作成していく、とする。詳細には、開発者たちは、プロジェクト計画書、外部設計書、内部設計書、およびプログラムという、種々の種類のドキュメントを作成していく、とする。
【０１８５】
そして、ドキュメントを作成していく過程で、ドキュメントのファイル名、ドキュメントの作成者、およびドキュメントの実体が、ドキュメント格納部１０１に格納される、とする。かかる場合のドキュメント管理表を図１０に示す。図１０において、「ＩＤ」「属性値」「ドキュメント（実体）」を有するレコードが多数、管理されている。また、図１０において、ファイル名、作成者以外の属性値は空である、とする。図１０において、「種類」はドキュメントの種類である。また、「難易度」は、開発難易度である。
【０１８６】
そして、開発者たちは、上流工程で作成したドキュメントから情報をコピー＆ペーストしながら、下流のドキュメントを作成していく、とする。かかるドキュメントの作成過程で、ドキュメント利用検出部１１９は、図９で説明したフローチャートに従って、コピー＆ペーストを検出する。そして、ドキュメント関係情報生成部１２０は、コピー元のドキュメントのドキュメント識別子を親、ペースト先のドキュメントのドキュメント識別子を子とするドキュメント関係情報（例えば、（親のドキュメント識別子，子のドキュメント識別子））を生成する。そして、ドキュメント関係情報蓄積部１２１は、生成したドキュメント関係情報を、図１１に示すように、ドキュメント関係情報格納部１０２のドキュメント関係情報管理表に蓄積する。図１１において、親ドキュメントと子ドキュメントは、それぞれのドキュメント識別子であり、図１０のドキュメント管理表の「ＩＤ」に対応する。なお、図１１において、ＩＤ「１７」のドキュメントを作成する際に、ＩＤ「１」のドキュメントから、情報をコピー＆ペーストしたことを示す。また、ＩＤ「２１」のドキュメントを作成する際に、ＩＤ「２」のドキュメントから、情報をコピー＆ペーストしたことを示す。
【０１８７】
また、属性値取得部１１７は、図１２に示すルール管理表を保持している。ルール管理表は、属性値取得部１１７がドキュメントから属性値を取得するためのルールを管理する表である。ルール管理表は、「ＩＤ」「条件」「属性」「属性値」を有するレコードを１以上、管理している。「条件」は、属性値を取得するための条件である。「属性」は、取得した属性値の意味であり、図１０のドキュメント管理表のどの属性に、取得した属性値を格納するかを示す情報である。「属性値」は、属性値の取り出し方を示す情報である。図１２の「ＩＤ＝１」のレコードは、ドキュメントのセクションまたはサブセクションのタイトル内に「漢字列」＋"機能"の文字列（例えば、「情報システムの印刷機能」の「印刷機能」）を含む場合、条件に合致し、「漢字列」＋"機能"（ここでは、「印刷機能」）を属性値として取得し、当該属性値が属性「機能識別子」の属性値として書き込まれる、ことを示す。なお、セクションまたはサブセクションは、ドキュメントの構造であり、例えば、行頭の「１．」「２．」などのセクションを示す数値や、行頭の「第１章」「第２章」などのセクションを示す表現や、行頭の「１．１」「２．３」などのサブセクションを示す数値により判定される。
【０１８８】
また、図１２の「ＩＤ＝２」のレコードは、ドキュメント内の図［１−９］［０−９］＊に後続する文字列であり、「文字列」＋"画面"に合致する場合、条件に合致し、「文字列」＋"画面"（ここでは、「ユーザ定義入力画面」）を属性値として取得し、当該属性値が属性「画面識別子」の属性値として書き込まれる、ことを示す。なお、図１２の「ＩＤ＝２」のレコードについて、「図１３  ユーザ定義入力画面」という文字列が存在する場合、属性値「ユーザ定義入力画面」が取得され、当該属性値が属性「画面識別子」に書き込まれる。なお、［１−９］［０−９］＊は、最初に「１」から「９」の数値が存在し、その後０個（１個、と考えても良い）以上の「０」から「９」の数値が存在することを示す、ことを示す。
【０１８９】
また、図１２の「ＩＤ＝３」のレコードは、ドキュメント内に「文字列」＋"データベース"（改行コードまで）、または「文字列」＋"ＤＢ"（改行コードまで）が存在する場合、「文字列」＋"データベース"を属性値として取得し、当該属性値が属性「ＤＢ識別子」の属性値として書き込まれる、ことを示す。
【０１９０】
また、図１２の「ＩＤ＝４」のレコードは、ドキュメント内に「バッチ名：」が存在する場合、「バッチ名：」に後続する文字列（改行コードまで）を、バッチ識別子の属性値として取得し、蓄積される、ことを示す。
【０１９１】
また、図１２の「ＩＤ＝５」のレコードは、ドキュメント内の＜ｔｉｔｌｅ＞タグの後続する文字列（改行コードまで）を取得し、「［文字列１］の［文字列２］設計書」に合致する場合に、「［文字列２］設計書」を種類の属性値として取得し、書き込む、ことを示す。
【０１９２】
また、図１２の「ＩＤ＝６」のレコードは、ドキュメント内の＜ｔｉｔｌｅ＞タグの後続する文字列（改行コードまで）を取得し、「企画書」を含む場合、「プロジェクト計画書」を種類の属性値として取得し、書き込む、ことを示す。
【０１９３】
さらに、図１２の「ＩＤ＝７」のレコードは、ドキュメント内に関数の終端子「；」を含む場合、「プログラム」を種類の属性値として取得し、書き込む、ことを示す。なお、終端子の文字列は問わない。
【０１９４】
以上のように、属性値取得部１１７は、手がかり表現（例えば、「［文字列１］の［文字列２］設計書」）、手がかり文字（例えば、「；」）や、ドキュメントの構造（例えば、ドキュメントのセクションまたはサブセクション）や、タグ（例えば、＜ｔｉｔｌｅ＞）などを用いて、属性値を自動取得する。
【０１９５】
また、開発者情報格納部１０３は、図１３に示す開発者情報管理表を保持している。開発者情報管理表は、「ＩＤ」と開発者情報を有するレコードを１以上、格納している。開発者情報は、「開発者識別子」「レベル」「現プロジェクト」などの属性値を有する。「開発者識別子」は、ここでは開発者名であるが、社員ＩＤなどの識別情報でも良い。「レベル」は、開発者のレベルであり、ここでは「高」「中」「低」のいずれかを採り得る。「現プロジェクト」は、開発者が現在、担当しているプロジェクト名である。
【０１９６】
また、開発者たちが作成したドキュメントの例を図１４に示す。図１４において、ドキュメント「ａｂ．ｄｏｃ」「ｘｙ．ｄｏｃ」「ａｃ．ｄｏｃ」「ｂｃ．ｃ」などのファイルがドキュメント格納部１０１に格納されていることを示す。
【０１９７】
かかる状況において、一のユーザは、開発支援装置１に「属性蓄積指示」を入力した、とする。すると、受付部１０４は、属性蓄積指示を受け付ける。
【０１９８】
次に、属性値取得部１１７は、ドキュメント格納部１０１のドキュメント（図１４参照）を順次、読み出し、図１２のルール管理表のルールを適用し、各ドキュメントから、属性値を取得する。
【０１９９】
そして、属性値取得部１１７は、図１４のドキュメント「ａｂ．ｄｏｃ」に、図１２の「ＩＤ＝１」のルールを適用し、「１．１  分析ＣＳＶ作成機能」の文字列の行頭の「１．１」からサブセクションの行を認識し、機能識別子「分析ＣＳＶ作成機能」を取得する。そして、属性値蓄積部１１８は、ドキュメント「ａｂ．ｄｏｃ」の属性「機能識別子」の属性値として「分析ＣＳＶ作成機能」を書き込む。
【０２００】
次に、属性値取得部１１７は、図１４のドキュメント「ａｂ．ｄｏｃ」に、図１２の「ＩＤ＝２」のルールを適用し、「図８  諾否判定画面」の文字列を検出し、属性値「諾否判定画面」を取得する。そして、属性値蓄積部１１８は、属性値「諾否判定画面」をドキュメント「ａｂ．ｄｏｃ」の画面識別子として書き込む。
【０２０１】
次に、属性値取得部１１７は、図１４のドキュメント「ａｂ．ｄｏｃ」に、図１２の「ＩＤ＝４」のルールを適用し、「バッチ名：目次途上与信システム」の文字列を検出し、属性値「目次途上与信システム」を取得する。そして、属性値蓄積部１１８は、当該属性値をドキュメント「ａｂ．ｄｏｃ」のバッチ識別子として書き込む。
【０２０２】
次に、属性値取得部１１７は、図１４のドキュメント「ａｂ．ｄｏｃ」に、図１２の「ＩＤ＝５」のルールを適用し、「○○システムの外部設計書」を取得する。そして、属性値取得部１１７は、「○○システムの外部設計書」から属性値「外部設計書」を得る。次に、属性値蓄積部１１８は、属性値「外部設計書」を、属性「種類」の属性値として書き込む。
【０２０３】
同様に、属性値取得部１１７は、他のドキュメントに対しても、図１２のルール管理表のルールを適用し、属性値を取得する。そして、属性値蓄積部１１８は、属性値をドキュメント管理表に蓄積する。そして、図１５に示すドキュメント管理表が得られる。
【０２０４】
次に、一のユーザは、開発支援装置１に「開発難易度蓄積指示」を入力した、とする。すると、受付部１０４は、開発難易度蓄積指示を受け付ける。
【０２０５】
次に、開発難易度取得部１１５は、ドキュメント格納部１０１の中のドキュメントの種類「プログラム」に対応するドキュメントを、すべて読み出す。
【０２０６】
次に、開発難易度取得部１１５は、各プログラム（ドキュメント）のステップ数を取得する。
【０２０７】
次に、開発難易度取得部１１５は、各プログラムが有する関数を取得する。そして、開発難易度取得部１１５は、関数ごとに、引数の数を取得する。また、開発難易度取得部１１５は、関数ごとに、関数のリターン値の数を取得する。また、開発難易度取得部１１５は、各プログラム内の関数の数を取得する。開発難易度取得部１１５は、例えば、保持している開発難易点数の算出式「関数難易点数＝ｆ（ステップ数，引数の数，リターン値の数，関数の数）」に、取得したステップ数，引数の数，リターン値の数，関数の数を代入し、演算し、プログラムごとの開発難易点数を取得する。
【０２０８】
次に、開発難易度取得部１１５は、開発難易度の取得条件「開発難易点数＜ａ１  の場合は開発難易度が「低」」、「ａ１＜＝開発難易点数＜ａ２  の場合は開発難易度が「中」」、「ａ２＜＝開発難易点数＜＝ａ３  の場合は開発難易度が「高」」に従って、プログラムごとに、開発難易度を取得する。なお、開発難易度取得部１１５は、開発難易度の取得条件を予め保持している。
【０２０９】
次に、開発難易度蓄積部１１６は、各プログラムに対して、取得された開発難易度を書き込む。
【０２１０】
次に、開発難易度取得部１１５は、プログラム以外の各ドキュメントに対して、下位のすべてのプログラムを取得する。そして、プログラム以外の各ドキュメントに対して、下位のすべてのプログラムのステップ数の合計値、プログラムの入力数の合計値、プログラムの出力数の合計値、プログラムの全関数の数の合計値を算出する。なお、各プログラムのステップ数、入力数、出力数、関数の数は、既に保持されている。
【０２１１】
次に、開発難易度取得部１１５は、取得されたプログラム情報（ステップ数の合計値、入力数の合計値、出力数の合計値、全関数の数）を用いて、各ドキュメントの開発難易度を決定する。なお、ステップ数の合計値、入力数の合計値、出力数の合計値、および関数の数の合計値のそれぞれが多いほど、開発難易度が高くなるように、開発難易度取得部１１５は、開発難易度を決定する。階層化されたドキュメント階層の中で、一のドキュメントの下位のすべてのプログラムを取得する処理は、図１１のドキュメント階層の情報を用いて行い、公知の技術である。
【０２１２】
次に、開発難易度蓄積部１１６は、各ドキュメントに対応付けて、開発難易度を蓄積する。以上により、各ドキュメントの開発難易度が蓄積された。
【０２１３】
次に、一のユーザは、「分析ＣＳＶ作成機能」に不具合があり、改変が必要である、と気づいたとする。そして、ユーザは、「分析ＣＳＶ作成機能」を含むドキュメントグループ出力指示を入力する。
【０２１４】
次に、ドキュメント検索部１０５は、受け付けられたドキュメントグループ出力指示が有する「分析ＣＳＶ作成機能」を属性値として有する１以上のドキュメントのドキュメント識別子を、ドキュメント管理表から取得する。そして、ドキュメント検索部１０５は、ドキュメント識別子「１，３，１５」を取得した、とする。
【０２１５】
次に、関連ドキュメント検索部１０６は、ドキュメント関係情報管理表（図１１参照）に格納されているドキュメント関係情報を用いて、取得された１以上のドキュメント識別子「１，３，１５」で識別される各ドキュメントの子を含む子孫のドキュメントのドキュメント識別子を取得する。ここで、関連ドキュメント検索部１０６は、ドキュメント識別子「１７，３８，８５，９２」を取得した、とする。
【０２１６】
次に、ドキュメントグループ取得部１０７は、取得されたドキュメント識別子「１，３，１５，１７，３８，８５，９２」を用いて、以下のように、１以上のドキュメントグループを取得する。つまり、ドキュメントグループ取得部１０７は、ドキュメント識別子の集合「１，３，１５，１７，３８，８５，９２」の中に、親の識別子を有さないドキュメント識別子「１，３，１５」を、ルートのドキュメント識別子として取得する。次に、ドキュメントグループ取得部１０７は、各ルートのドキュメント識別子ごとに、子、孫等の子孫のドキュメントのドキュメント識別子であり、ドキュメント識別子の集合「１，３，１５，１７，３８，８５，９２」の中のドキュメント識別子を取得する。
【０２１７】
つまり、ドキュメントグループ取得部１０７は、ルートのドキュメント識別子「１」に対して、子のドキュメント識別子「１７」を得る。そして、ドキュメントグループ取得部１０７は、ドキュメント識別子「１−１７」のドキュメントグループを得る。
【０２１８】
また、ドキュメントグループ取得部１０７は、ルートのドキュメント識別子「３」に対して、子のドキュメント識別子「１７」および「３８」を得る。そして、ドキュメントグループ取得部１０７は、ルートのドキュメント識別子「３」の孫のドキュメントのドキュメント識別子「８５」を得る。なお、ドキュメント識別子「８５」は、ルートのドキュメント識別子「３８」の子のドキュメントのドキュメント識別子である。そして、ドキュメントグループ取得部１０７は、「３−１７」「３−３８−８５」を有するドキュメントグループを得る。
【０２１９】
さらに、ドキュメントグループ取得部１０７は、ルートのドキュメント識別子「１５」に対して、子のドキュメントのドキュメント識別子「１７」および「９２」を得る。そして、ドキュメントグループ取得部１０７は、「１５−１７」「１５−９２」を有するドキュメントグループを得る。
【０２２０】
以上により、ドキュメントグループ取得部１０７は、３つのドキュメントグループを取得した。第一のドキュメントグループは、ドキュメント識別子「１，１７」のドキュメントを有するドキュメントグループである。第二のドキュメントグループは、ドキュメント識別子「３，１７，３８，８５」のドキュメントを有するドキュメントグループである。第三のドキュメントグループは、ドキュメント識別子「１５，１７，９２」のドキュメントを有するドキュメントグループである。
【０２２１】
次に、ドキュメントグループ出力部１０８は、取得された３つのドキュメントグループを出力する。ドキュメントグループの第一の出力例を、図１６に示す。図１６において、ドキュメントグループごとに、視覚的にドキュメントがグループ化されている。また、図１６において、四角形がドキュメントを図式化したものであり、四角形の中の情報がドキュメント識別子である。また、四角形の上部にドキュメントのファイル名、下部に開発難易度が出力されている。ドキュメントグループ出力部１０８が出力する情報（属性値）や出力態様は問わない。
【０２２２】
次に、開発者識別子取得部１０９を構成するレベル決定手段１０９１は、３つの各ドキュメントグループに対して、開発に必要な開発者のレベルを、以下のように決定する。まず、レベル決定手段１０９１は、図１７に示すレベル決定方法を管理している。図１７に示すレベル決定方法において、ドキュメントグループの中に１つでも開発難易度が「高」のドキュメントが存在すれば、開発に必要な開発者のレベルを「高」と決定する、ことを示す。また、図１７に示すレベル決定方法において、ドキュメントグループの中で、開発難易度が「中」のドキュメントの割合が５０％以上である場合、開発に必要な開発者のレベルを「中」と決定する、ことを示す。さらに、図１７に示すレベル決定方法において、開発者のレベルが「高」でもなく、「中」でもないドキュメントグループに対して、開発に必要な開発者のレベルを「低」と決定する、ことを示す。
【０２２３】
そして、レベル決定手段１０９１は、図１７に示すレベル決定方法を読み出す。そして、各ドキュメントグループに対して、ドキュメントグループ内のドキュメントごとに、その属性値である「難易度」を、ドキュメント管理表から読み出す。次に、レベル決定手段１０９１は、ドキュメントグループ内のすべてのドキュメントの属性値「難易度」を、図１７に示すレベル決定方法に適用し、３つのドキュメントグループの開発者のレベルを決定する。つまり、レベル決定手段１０９１は、第一のドキュメントグループに対して、開発者のレベルを「低」と決定する。また、第二のドキュメントグループに対して、開発者のレベルを「高」と決定する。さらに、第三のドキュメントグループに対して、開発者のレベルを「中」と決定する。
【０２２４】
そして、次に、開発者識別子取得手段１０９２は、ドキュメントグループごとに、決定されたレベルに対応する一人の開発者を識別する開発者識別子を、開発者情報管理表（図１３参照）から取得する。ここでは、開発者識別子取得手段１０９２は、現プロジェクト名がＮＵＬＬ（現在、何らのプロジェクトにも参画していない）であり、各ドキュメントグループのレベルと合致するレベルの開発者識別子を取得する、とする。つまり、開発者識別子取得手段１０９２は、開発者情報管理表から、第一のドキュメントグループに対して、開発者識別子「田中初美」を取得する。また、開発者識別子取得手段１０９２は、開発者情報管理表から、第二のドキュメントグループに対して、開発者識別子「高橋広子」を取得する。さらに、開発者識別子取得手段１０９２は、開発者情報管理表から、第三のドキュメントグループに対して、開発者識別子「山本和夫」を取得する。
【０２２５】
次に、開発者識別子出力部１１０は、取得された開発者識別子を、各ドキュメントグループに対応付けて出力する。
【０２２６】
次に、工数算出元情報取得部１１１は、各ドキュメントグループに対して、工数算出元情報を取得する。ここでは、工数算出元情報取得部１１１は、各ドキュメントグループに含まれるすべてのプログラムのステップ数と開発難易度とを取得する、とする。そして、工数算出元情報取得部１１１は、第一のドキュメントグループに対して、プログラムのステップ数「１０８０ステップ」と、開発難易度「低」を取得した、とする。また、工数算出元情報取得部１１１は、第二のドキュメントグループに対して、プログラムのステップ数「２５８０ステップ」と、開発難易度「高」を取得した、とする。さらに、工数算出元情報取得部１１１は、第三のドキュメントグループに対して、プログラムのステップ数「４６００ステップ」と、開発難易度「中」と決定する。
【０２２７】
また、ここで、演算式格納手段１１２１は、「工数＝（整数化関数（ステップ数／１０００）＋１）×難易度係数」という演算式を保持している、とする。整数化関数（）とは、（）内の数値の整数部のみを取得する処理を行う関数である。また、難易度係数について、開発難易度「低」の場合は難易度係数「１．０」、開発難易度「中」の場合は難易度係数「１．５」、開発難易度「高」の場合は難易度係数「２．０」である、とする。
【０２２８】
そして、工数算出部１１２は、第一のドキュメントグループに対して、「工数＝（整数化関数（１０８０／１０００）＋１）×１．０」を実行し、「工数＝２人月」を得る。また、工数算出部１１２は、第二のドキュメントグループに対して、「工数＝（整数化関数（２５８０／１０００）＋１）×２．０」を実行し、「工数＝６人月」を得る。さらに、工数算出部１１２は、第三のドキュメントグループに対して、「工数＝（整数化関数（４６００／１０００）＋１）×１．５」を実行し、「工数＝７．５人月」を得る。
【０２２９】
次に、工数出力部１１３は、各ドキュメントグループに対応付けて、工数算出部１１２が算出した工数を出力する。つまり、工数出力部１１３は、「第一のドキュメントグループ−２人月」「第二のドキュメントグループ−６人月」「第三のドキュメントグループ−７．５人月」を出力する。
【０２３０】
なお、開発者識別子および工数が出力された場合の出力例を、図１８に示す。図１８において、各ドキュメントグループの開発者、工数が認識可能な態様で、開発者識別子と工数が出力されている。さらに、図１８において、ドキュメント間の関係（上流工程で作成されたドキュメントか、下流行程で作成されたドキュメントであるか等）が認識可能なように、矢印を用いて、ドキュメントグループ内のドキュメントの関係（上流工程のドキュメント、下流工程のドキュメントなど）が出力されている。
【０２３１】
また、ドキュメントグループ出力部１０８、開発者識別子出力部１１０、および工数出力部１１３は、図１９に示すように、各情報を文字列（リスト形式など）で、出力しても良いことは言うまでもない。
【０２３２】
次に、上記の３名の者が、実際に開発を行って、実際の開発工数が分かった、とする。そして、第一のドキュメントグループの開発を行った「田中初美」は、２．４人月かかって、担当した開発を完了した、とする。
【０２３３】
次に、ユーザは、工数算出式の改訂指示を入力した、とする。次に、受付部１０４は、ユーザから工数算出式の改訂指示を受け付ける。なお、改訂指示には、ドキュメントグループ識別子「１」、工数「２．４人月」が含まれている、とする。
【０２３４】
次に、演算式更新部１２２は、改訂指示が有するドキュメントグループ識別子「１」で特定できる１以上のドキュメント識別子「１，１７」を取得する。
【０２３５】
次に、工数算出元情報取得部１１１は、ドキュメント識別子「１，１７」で識別されるドキュメントの開発難易度「低，低」を有する工数算出元情報を取得する。そして、工数算出元情報取得部１１１は、ドキュメントの開発難易度「低，低」から、ドキュメントグループのレベル「低」を取得する。なお、工数算出元情報取得部１１１は、図１７のレベル決定方法を用いて、ドキュメントグループのレベル「低」を取得する。また、工数算出元情報取得部１１１は、ドキュメント識別子「１７」のドキュメントがプログラムであることを検出し、当該プログラムのステップ数「１０８０」を取得する。
【０２３６】
次に、演算式更新部１２２は、受け付けた改訂指示が有する実績工数「２．４人月」を取得する。
【０２３７】
次に、演算式更新部１２２は、演算式格納手段１１２１の演算式「工数＝（整数化関数（ステップ数／１０００）＋１）×難易度係数」を読み出す。なお、ここでの難易度係数は、ドキュメントグループのレベル「低」に対応する「１．０」である。
【０２３８】
次に、演算式更新部１２２は、取得された工数算出元情報「ステップ数＝１０８０」、取得した実績工数「２．４」を、読み出した演算式に適用する。つまり、「２．４＝（整数化関数（１０８０／１０００）＋１）×難易度係数」により、演算式更新部１２２は、「難易度係数＝１．２」を得る。そして、演算式更新部１２２は、ドキュメントグループのレベル「低」に対応する新しい演算式「工数＝（整数化関数（ステップ数／１０００）＋１）×１．２」を、演算式格納手段１１２１に上書きする。
【０２３９】
以上、本実施の形態によれば、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することができる。
【０２４０】
また、本実施の形態によれば、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、保守や開発に必要な要員の把握も容易になる。
【０２４１】
なお、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをＣＤ−ＲＯＭなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、開発過程において作成される２以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか１以上の属性値を有する２以上のドキュメントと、前記２以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、当該一のドキュメントに関連する下流工程で作成された１以上のドキュメントとの間の親子関係を示すドキュメント関係情報とを格納ており、コンピュータを、１以上の属性値を受け付ける受付部と、前記記録媒体から、前記受付部が受け付けた１以上の属性値を有する１以上のドキュメントを検索するドキュメント検索部と、前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメントを検索する関連ドキュメント検索部と、前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上のドキュメント、および前記関連ドキュメント検索部が検索した１以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、当該最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、１以上のドキュメントグループを取得するドキュメントグループ取得部と、前記ドキュメントグループ取得部が取得した１以上のドキュメントグループを出力するドキュメントグループ出力部として機能させるためのプログラム、である。
【０２４２】
また、上記プログラムにおいて、前記関連ドキュメント検索部は、前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した１以上の各ドキュメントの子を含む子孫のドキュメントである１以上のドキュメント、および前記前記ドキュメント検索部が検索した１以上の各ドキュメントの先祖のドキュメントである１以上のドキュメントを検索するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２４３】
また、上記プログラムにおいて、記憶媒体に、開発者を識別する開発者識別子を有する開発者情報を１以上格納しており、前記記憶媒体から、前記ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに対して、開発者識別子を取得する開発者識別子取得部と、前記開発者識別子取得部が取得した開発者識別子を出力する開発者識別子出力部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２４４】
また、上記プログラムにおいて、前記ドキュメントの属性値として、開発難易度を有し、前記開発者情報は、開発者識別子と開発者のレベルを有し、前記開発者識別子取得部は、１以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、当該ドキュメントの数および各ドキュメントの開発難易度とを用いて、開発に必要な開発者のレベルを決定するレベル決定手段と、前記レベル決定手段が決定したレベルに対応する開発者識別子を取得する開発者識別子取得手段とを具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２４５】
また、上記プログラムにおいて、前記開発者識別子取得部は、前記記憶媒体から、前記ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに対して、一の開発者識別子を取得するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２４６】
また、上記プログラムにおいて、プログラムであるドキュメントから、当該プログラムの関数の数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得するプログラム情報取得部と、前記プログラムであるドキュメント、および前記プログラムの先祖のドキュメントを、前記ドキュメント格納部から取得し、当該取得した１以上の各ドキュメントに対して、前記プログラムの前記プログラム情報取得部が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を取得する開発難易度取得部と、前記開発難易度取得部が取得した開発難易度を、前記１以上の各ドキュメントの属性値として、前記ドキュメント格納部に蓄積する開発難易度蓄積部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２４７】
また、上記プログラムにおいて、前記ドキュメントグループ取得部が取得した１以上の各ドキュメントグループに含まれる１以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する工数算出元情報取得部と、前記工数算出元情報をパラメータとして工数を算出する工数算出部と、前記工数算出部が算出した工数を出力する工数出力部とを具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２４８】
また、上記プログラムにおいて、前記工数算出部は、工数を算出する演算式を格納している演算式格納手段と、前記工数算出元情報を前記演算式に代入し、当該演算式を実行して、工数を取得する演算手段とを具備し、前記受付部は、一のドキュメントグループおよび実績工数を受け付け、前記工数算出元情報取得部は、前記受付部が受け付けた一のドキュメントグループの工数算出元情報を取得し、前記工数算出元情報取得部が取得した工数算出元情報と前記受付部が受け付けた実績工数とを用いて、前記演算式格納手段の演算式を更新する演算式更新部をさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２４９】
また、上記プログラムにおいて、前記記憶媒体の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか１以上の属性値を取得する属性値取得部と、前記属性値取得部が取得した１以上の属性値を、前記記憶媒体に蓄積する属性値蓄積部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２５０】
また、上記プログラムにおいて、前記ドキュメントは、プログラムであり、前記属性値取得部は、前記ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、当該関数名またはメソッド名またはメッセージ名に対応する属性値を取得するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２５１】
また、上記プログラムにおいて、前記属性値取得部は、前記取得した属性値を、前記プログラムの祖先のドキュメントの属性値として付与するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２５２】
また、上記プログラムにおいて、前記ドキュメントは、自然言語で記載されたドキュメントであり、前記属性値取得部は、属性値の種類に対応して、手がかり句を管理しており、前記ドキュメントから、前記手がかり句を用いて属性値を取得するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２５３】
また、上記プログラムにおいて、一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出するドキュメント利用検出部と、前記ドキュメント利用検出部がドキュメントの表示または流用を検出した場合、前記一のドキュメントの親ドキュメントが前記他のドキュメントとなるようにドキュメント関係情報を生成するドキュメント関係情報生成部と、前記ドキュメント関係情報生成部が生成したドキュメント関係情報を、前記記憶媒体に蓄積するドキュメント関係情報蓄積部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【０２５４】
また、図２０は、本明細書で述べたプログラムを実行して、上述した実施の形態の開発支援装置等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図２０は、このコンピュータシステム３４０の概観図であり、図２１は、コンピュータシステム３４０の内部構成を示す図である。
【０２５５】
図２０において、コンピュータシステム３４０は、ＦＤドライブ３４１１、ＣＤ−ＲＯＭドライブ３４１２を含むコンピュータ３４１と、キーボード３４２と、マウス３４３と、モニタ３４４とを含む。
【０２５６】
図２１において、コンピュータ３４１は、ＦＤドライブ３４１１、ＣＤ−ＲＯＭドライブ３４１２に加えて、ＭＰＵ３４１３と、ＣＤ−ＲＯＭドライブ３４１２及びＦＤドライブ３４１１に接続されたバス３４１４と、ブートアッププログラム等のプログラムを記憶するためのＲＯＭ３４１５とに接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのＲＡＭ３４１６と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク３４１７とを含む。ここでは、図示しないが、コンピュータ３４１は、さらに、ＬＡＮへの接続を提供するネットワークカードを含んでも良い。
【０２５７】
コンピュータシステム３４０に、上述した実施の形態の開発支援装置等の機能を実行させるプログラムは、ＣＤ−ＲＯＭ３５０１、またはＦＤ３５０２に記憶されて、ＣＤ−ＲＯＭドライブ３４１２またはＦＤドライブ３４１１に挿入され、さらにハードディスク３４１７に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ３４１に送信され、ハードディスク３４１７に記憶されても良い。プログラムは実行の際にＲＡＭ３４１６にロードされる。プログラムは、ＣＤ−ＲＯＭ３５０１、ＦＤ３５０２またはネットワークから直接、ロードされても良い。
【０２５８】
プログラムは、コンピュータ３４１に、上述した実施の形態の開発支援装置等の機能を実行させるオペレーティングシステム（ＯＳ）、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能（モジュール）を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム３４０がどのように動作するかは周知であり、詳細な説明は省略する。
【０２５９】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理（ハードウェアでしか行われない処理）は含まれない。
【０２６０】
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【０２６１】
また、上記各実施の形態において、一の装置に存在する２以上の通信手段（端末情報送信部、端末情報受信部など）は、物理的に一の媒体で実現されても良いことは言うまでもない。
【０２６２】
また、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【０２６３】
以上のように、本発明にかかる開発支援装置は、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべきドキュメントの集合を把握することが容易になる。という効果を有し、開発支援装置等として有用である。
【符号の説明】
【０２６４】
１  開発支援装置
１０  情報取得蓄積手段
１０１  ドキュメント格納部
１０２  ドキュメント関係情報格納部
１０３  開発者情報格納部
１０４  受付部
１０５  ドキュメント検索部
１０６  関連ドキュメント検索部
１０７  ドキュメントグループ取得部
１０８  ドキュメントグループ出力部
１０９  開発者識別子取得部
１１０  開発者識別子出力部
１１１  工数算出元情報取得部
１１２  工数算出部
１１３  工数出力部
１１４  プログラム情報取得部
１１５  開発難易度取得部
１１６  開発難易度蓄積部
１１７  属性値取得部
１１８  属性値蓄積部
１１９  ドキュメント利用検出部
１２０  ドキュメント関係情報生成部
１２１  ドキュメント関係情報蓄積部
１２２  演算式更新部
１０９１  レベル決定手段
１０９２  開発者識別子取得手段
１１２１  演算式格納手段
１１２２  演算手段
【図１】
2011210210.tif 000003
【図２】
2011210210.tif 000004
【図３】
2011210210.tif 000005
【図４】
2011210210.tif 000006
【図５】
2011210210.tif 000007
【図６】
2011210210.tif 000008
【図７】
2011210210.tif 000009
【図８】
2011210210.tif 000010
【図９】
2011210210.tif 000011
【図１０】
2011210210.tif 000012
【図１１】
2011210210.tif 000013
【図１２】
2011210210.tif 000014
【図１３】
2011210210.tif 000015
【図１４】
2011210210.tif 000016
【図１５】
2011210210.tif 000017
【図１６】
2011210210.tif 000018
【図１７】
2011210210.tif 000019
【図１８】
2011210210.tif 000020
【図１９】
2011210210.tif 000021
【図２０】
2011210210.tif 000022
【図２１】
2011210210.tif 000023