説明

開発支援装置

【課題】ソフトウェア開発の完了後等に、修正すべきドキュメントの集合を把握可能とする。
【解決手段】機能識別子などの1以上の属性値を有する1以上のドキュメントを検索するドキュメント検索部と、ドキュメント関係情報を用いて、検索された1以上の各ドキュメントの子を含む子孫のドキュメントを検索する関連ドキュメント検索部と、ドキュメント関係情報を用いて、ドキュメント検索部が検索した1以上のドキュメント、関連ドキュメント検索部が検索した1以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとするドキュメントグループを取得し、出力する開発支援装置により、ソフトウェア開発の完了後等に、修正すべきドキュメントの集合を把握することが容易になる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべきドキュメントの集合を把握することが容易になる開発支援装置等に関するものである。
【背景技術】
【0002】
従来、ソフト資産の管理工数を低減するとともに、システムの変更に伴う影響範囲を高精度にかつ容易に把握することができるソフト資産管理システムがあった(特許文献1参照)。
【0003】
また、従来、仕様の変更を行うことによるリスクの大きさを示す値を客観的に算出するリスク算出プログラムがあった(特許文献2参照)。
【0004】
さらに、従来、ソフトウェア資産の再利用や改造を行う単位で影響する内容の把握を可能にして、ユーザの管理負担及び影響範囲確認の手間を大幅に削減したソフトウェア資産管理システムがあった(特許文献3参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−100078号公報(第1頁、第1図等)
【特許文献2】特開2008−33545号公報(第1頁、第1図等)
【特許文献3】特開2008−123432号公報(第1頁、第1図等)
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の特許文献1の技術においては、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの1以上の集合を把握することができなかった。
【課題を解決するための手段】
【0007】
本第一の発明の開発支援装置は、開発過程において作成される2以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか1以上の属性値を有する2以上のドキュメントを格納し得るドキュメント格納部と、ドキュメント格納部に格納されている2以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、一のドキュメントに関連する下流工程で作成された1以上のドキュメントとの間の親子関係を示すドキュメント関係情報を格納し得るドキュメント関係情報格納部と、1以上の属性値を受け付ける受付部と、ドキュメント格納部から、受付部が受け付けた1以上の属性値を有する1以上のドキュメントを検索するドキュメント検索部と、ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、ドキュメント検索部が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメントを検索する関連ドキュメント検索部と、ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、ドキュメント検索部が検索した1以上のドキュメント、および関連ドキュメント検索部が検索した1以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、1以上のドキュメントグループを取得するドキュメントグループ取得部と、ドキュメントグループ取得部が取得した1以上のドキュメントグループを出力するドキュメントグループ出力部とを具備する開発支援装置である。
【0008】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になる。
【0009】
また、本第二の発明の開発支援装置は、第一の発明に対して、関連ドキュメント検索部は、ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、ドキュメント検索部が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメント、およびドキュメント検索部が検索した1以上の各ドキュメントの先祖のドキュメントである1以上のドキュメントを検索する開発支援装置である。
【0010】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になる。
【0011】
また、本第三の発明の開発支援装置は、第一または第二の発明に対して、開発者を識別する開発者識別子を有する開発者情報を1以上格納し得る開発者情報格納部と、開発者情報格納部から、ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに対して、開発者識別子を取得する開発者識別子取得部と、開発者識別子取得部が取得した開発者識別子を出力する開発者識別子出力部とをさらに具備する開発支援装置である。
【0012】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な要員の把握も容易になる。
【0013】
また、本第四の発明の開発支援装置は、第三の発明に対して、ドキュメントの属性値として、開発難易度を有し、開発者情報は、開発者識別子と開発者のレベルを有し、開発者識別子取得部は、1以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、ドキュメントの数および各ドキュメントの開発難易度とを用いて、開発に必要な開発者のレベルを決定するレベル決定手段と、レベル決定手段が決定したレベルに対応する開発者識別子を取得する開発者識別子取得手段とを具備する開発支援装置である。
【0014】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な要員が適切に把握できる。
【0015】
また、本第五の発明の開発支援装置は、第三または第四の発明に対して、開発者識別子取得部は、開発者情報格納部から、ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに対して、一の開発者識別子を取得する開発支援装置である。
【0016】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な要員が、極めて適切に把握できる。
【0017】
また、本第六の発明の開発支援装置は、第三から第五いずれかの発明に対して、プログラムであるドキュメントから、プログラムの関数の数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得するプログラム情報取得部と、プログラムであるドキュメント、およびプログラムの先祖のドキュメントを、ドキュメント格納部から取得し、取得した1以上の各ドキュメントに対して、プログラムのプログラム情報取得部が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を取得する開発難易度取得部と、開発難易度取得部が取得した開発難易度を、1以上の各ドキュメントの属性値として、ドキュメント格納部に蓄積する開発難易度蓄積部とをさらに具備する開発支援装置である。
【0018】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になり、かつ、保守や新規開発に必要な要員が、極めて適切に把握できる。
【0019】
また、本第七の発明の開発支援装置は、第一から第六いずれかの発明に対して、ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに含まれる1以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する工数算出元情報取得部と、工数算出元情報をパラメータとして工数を算出する工数算出部と、工数算出部が算出した工数を出力する工数出力部とを具備する開発支援装置である。
【0020】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な工数が把握できる。
【0021】
また、本第八の発明の開発支援装置は、第七の発明に対して、工数算出部は、工数を算出する演算式を格納している演算式格納手段と、工数算出元情報を演算式に代入し、演算式を実行して、工数を取得する演算手段とを具備し、受付部は、一のドキュメントグループおよび実績工数を受け付け、工数算出元情報取得部は、受付部が受け付けた一のドキュメントグループの工数算出元情報を取得し、工数算出元情報取得部が取得した工数算出元情報と受付部が受け付けた実績工数とを用いて、演算式格納手段の演算式を更新する演算式更新部をさらに具備する開発支援装置である。
【0022】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になり、かつ、保守や新規開発に必要な工数が把握できる。
【0023】
また、本第九の発明の開発支援装置は、第一から第八いずれかの発明に対して、ドキュメント格納部の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか1以上の属性値を取得する属性値取得部と、属性値取得部が取得した1以上の属性値を、ドキュメント格納部に蓄積する属性値蓄積部とをさらに具備する開発支援装置である。
【0024】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【0025】
また、本第十の発明の開発支援装置は、第九の発明に対して、ドキュメントは、プログラムであり、属性値取得部は、ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、関数名またはメソッド名またはメッセージ名に対応する属性値を取得する開発支援装置である。
【0026】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【0027】
また、本第十一の発明の開発支援装置は、第十の発明に対して、属性値取得部は、取得した属性値を、プログラムの祖先のドキュメントの属性値として付与する開発支援装置である。
【0028】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【0029】
また、本第十二の発明の開発支援装置は、第九の発明に対して、ドキュメントは、自然言語で記載されたドキュメントであり、属性値取得部は、属性値の種類に対応して、手がかり句を管理しており、ドキュメントから、手がかり句を用いて属性値を取得する開発支援装置である。
【0030】
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【0031】
また、本第十三の発明の開発支援装置は、第一から第十二の発明に対して、一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出するドキュメント利用検出部と、ドキュメント利用検出部がドキュメントの表示または流用を検出した場合、一のドキュメントの親ドキュメントが他のドキュメントとなるようにドキュメント関係情報を生成するドキュメント関係情報生成部と、ドキュメント関係情報生成部が生成したドキュメント関係情報を、ドキュメント関係情報格納部に蓄積するドキュメント関係情報蓄積部とをさらに具備する開発支援装置である。
かかる構成により、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが極めて容易になる。
【発明の効果】
【0032】
本発明による開発支援装置によれば、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することが容易になる。
【図面の簡単な説明】
【0033】
【図1】実施の形態1における開発支援装置のブロック図
【図2】同情報取得蓄積手段のブロック図
【図3】同開発支援装置の動作について説明するフローチャート
【図4】同関連ドキュメント取得処理の動作について説明するフローチャート
【図5】同ドキュメントグループ取得処理の動作について説明するフローチャート
【図6】同レベル決定処理の動作について説明するフローチャート
【図7】同工数算出元情報取得処理の動作について説明するフローチャート
【図8】同開発支援装置の動作について説明するフローチャート
【図9】同開発支援装置の動作について説明するフローチャート
【図10】同ドキュメント管理表を示す図
【図11】同ドキュメント関係情報管理表を示す図
【図12】同ルール管理表を示す図
【図13】同開発者情報管理表を示す図
【図14】同ドキュメント格納部のドキュメントを示す図
【図15】同ドキュメント管理表を示す図
【図16】同ドキュメントグループの出力例を示す図
【図17】同レベル決定方法の例を示す図
【図18】同開発者識別子および工数が出力された場合のドキュメントグループの出力例を示す図
【図19】同ドキュメントグループの出力例を示す図
【図20】上記実施の形態におけるコンピュータシステムの概観図
【図21】同コンピュータシステムのブロック図
【発明を実施するための形態】
【0034】
以下、開発支援装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
【0035】
本実施の形態において、上流から下流工程で作成されたドキュメント群がリンク付けされており、改変する機能名などのドキュメント属性値を入力すれば、改変に関連するドキュメントグループが出力される開発支援装置1について説明する。
【0036】
また、本実施の形態において、出力されるドキュメントグループごとに、1以上の開発(または保守)の要員に関する情報を出力する開発支援装置1について説明する。
【0037】
また、本実施の形態において、ドキュメントの難易度などのドキュメントの属性値を自動的に取得したり、開発者や保守要員のレベルなどを自動的に取得したりできる開発支援装置1について説明する。
【0038】
さらに、本実施の形態において、上流のドキュメントと、それに対応する下流のドキュメントなどのドキュメント間の関係であるドキュメント関係情報を自動的に取得できる開発支援装置1について説明する。
【0039】
図1は、本実施の形態における開発支援装置1のブロック図である。また、図2は、情報取得蓄積手段10のブロック図である。
【0040】
開発支援装置1は、ドキュメント格納部101、ドキュメント関係情報格納部102、開発者情報格納部103、受付部104、ドキュメント検索部105、関連ドキュメント検索部106、ドキュメントグループ取得部107、ドキュメントグループ出力部108、開発者識別子取得部109、開発者識別子出力部110、工数算出元情報取得部111、工数算出部112、工数出力部113、プログラム情報取得部114、開発難易度取得部115、開発難易度蓄積部116、属性値取得部117、属性値蓄積部118、ドキュメント利用検出部119、ドキュメント関係情報生成部120、ドキュメント関係情報蓄積部121、演算式更新部122を備える。
【0041】
なお、プログラム情報取得部114、開発難易度取得部115、開発難易度蓄積部116、属性値取得部117、属性値蓄積部118、ドキュメント利用検出部119、ドキュメント関係情報生成部120、ドキュメント関係情報蓄積部121、および演算式更新部122は、情報取得蓄積手段10を構成する。
【0042】
開発者識別子取得部109は、レベル決定手段1091、開発者識別子取得手段1092を備える。また、工数算出部112は、演算式格納手段1121、演算手段1122を備える。
【0043】
ドキュメント格納部101は、開発過程において作成される2以上のドキュメントを格納し得る。また、ドキュメントは、1以上の属性値を有する。なお、ドキュメントが1以上の属性値と対応付けて格納されている場合も、ドキュメントは1以上の属性値を有する、と表現する。また、ここで、属性値とは、例えば、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子などである。また、ドキュメントが1以上の属性値を有することは、ドキュメントが1以上の属性値に対応付けられていることと同意義である。また、開発とは、主として、ソフトウェア開発であるが、ハードウェア開発でも良い。また、開発とは、商品開発、技術開発、研究開発等、問わない。また、ドキュメントとは、ドキュメントの実体とドキュメント識別子でも良いし、ドキュメント識別子だけでも良い。ドキュメントが、ドキュメント識別子だけの場合、ドキュメントの実体は、図示しない他の装置や、開発支援装置1内の図示しない部に存在する。ドキュメントは、例えば、企画書(プロジェクト計画書などと言っても良い。)、設計書、プログラム、テスト計画書、テスト仕様書、テスト結果書などである。また、ドキュメントは、例えば、自然言語で記載されたドキュメントである。設計書は、例えば、概要設計書(外部設計書、基本設計などと言っても良い。)や、詳細設計書(内部設計書などと言っても良い。)などである。また、上記の機能とは、ドキュメントに記載されている機能である。機能は、ソフトウェアやハードウェアが実現する機能である。また、上記の画面とは、ドキュメントに記載されている画面である。また、バッチ処理とは、ドキュメントに記載されているバッチ処理である。また、データベースとは、ドキュメントに記載されているデータベースである。また、データベース識別子とは、データベースを識別する情報であるが、テーブル識別子などでも良い。さらに、ドキュメント格納部101のドキュメントが有する属性値は、通常、手入力により入力されるが、後述するように、自動生成されても良い。つまり、属性値は、自動的にドキュメントから抽出されても良い。属性値を自動生成する具体的な処理方法については後述する。
【0044】
ドキュメント格納部101は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。ドキュメント格納部101にドキュメントが記憶される過程は問わない。例えば、記録媒体を介してドキュメントがドキュメント格納部101で記憶されるようになってもよく、通信回線等を介して送信されたドキュメントがドキュメント格納部101で記憶されるようになってもよく、あるいは、入力デバイスを介して入力されたドキュメントがドキュメント格納部101で記憶されるようになってもよい。
【0045】
ドキュメント関係情報格納部102は、ドキュメント格納部101に格納されている2以上のドキュメント間の関係を示すドキュメント関係情報を格納し得る。ドキュメント関係情報は、例えば、開発過程における上流工程で作成された一のドキュメントと、当該上流工程の一のドキュメントに関連する下流工程で作成された1以上のドキュメントとを識別する情報である。ドキュメント関係情報は、例えば、(概要設計書01,詳細設計書012)である。これは、概要設計書「概要設計書01」をさらに詳細にブレークダウンした詳細設計書が「詳細設計書012」であることを示す。また、ドキュメント関係情報は、例えば、(概要設計書01,(詳細設計書011,詳細設計書012,詳細設計書013))である。これは、概要設計書「概要設計書01」をさらに詳細にブレークダウンした詳細設計書が「詳細設計書011」、「詳細設計書012」、および「詳細設計書013」であることを示す。また、開発過程とは、例えば、要件定義、基本設計(概要設計でも良い)、詳細設計、プログラミング等の開発の上流から下流に至る工程である。また、開発過程とは、例えば、プロジェクト計画、外部設計、内部設計、製造等の上流から下流に至る工程である。また、ドキュメント間の関係とは、例えば、詳細化関係、利用関係などである。詳細化関係とは、上流工程のドキュメントと、当該上流工程のドキュメントの技術内容を詳細化した下流行程のドキュメントとの関係である。利用関係とは、下流工程のドキュメントに記載された内容を、上流工程のドキュメントが利用する関係である。その他、ドキュメント関係情報が示すドキュメント間の関係の意味は種々あり得る。また、ドキュメント関係情報は、通常、ドキュメント間の親子関係を示す。また、2以上の親子関係を示す情報により、ドキュメントの先祖、子孫の関係を把握でき得る。ドキュメント関係情報が「DOC1−DOC2―DOC3−DOC4」という4階層のドキュメント間の関係を示す場合、ドキュメント「DOC1」の子がドキュメント「DOC2」である。また、ドキュメント「DOC1」の子孫はドキュメント「DOC3」「DOC4」である。さらに、ドキュメント「DOC4」の先祖はドキュメント「DOC1」「DOC2」「DOC3」であり、ドキュメント「DOC4」の親は「DOC3」である。また、上記の親子関係とは、通常、一の親のドキュメントに対して、1以上の子のドキュメントがリンクされている関係である。
【0046】
ドキュメント関係情報格納部102は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。ドキュメント関係情報格納部102にドキュメント関係情報が記憶される過程は問わないが、後述するように、自動生成され、記憶されることは好適である。
【0047】
開発者情報格納部103は、開発者を識別する開発者識別子を有する開発者情報を1以上格納し得る。開発者情報は、開発者識別子と開発者のレベルを有することは好適である。開発者のレベルは、以下、開発者レベル、または、単にレベルという。開発者情報は、開発者の現在の仕事の負荷の状況(80%,100%など)や、開発者の開発経験年数や開発経験言語(C言語、アセンブラ、JAVA(登録商標)など)や、開発者が現在従事しているプロジェクト名など、開発者に関する種々の情報を有しても良い。
【0048】
開発者情報格納部103は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。開発者情報格納部103に開発者情報が記憶される過程は問わない。
【0049】
受付部104は、ユーザから情報や命令等を受け付ける。情報は、例えば、修正すべき機能を識別する機能識別子や、大幅改訂すべき画面を識別する画面識別子などの1以上の属性値である。また、ここでの属性値は、通常、改変を要する箇所を特定する情報である。箇所とは、機能や画面やデータベースや、特定のドキュメントや、特定のプログラムの関数などである。また、受付部104が受け付ける情報は、例えば、一のドキュメントグループ(例えば、2以上のドキュメント識別子の集合)および実績工数(例えば、10人月)である。また、受付部104は、ドキュメントグループを出力する指示であるドキュメントグループ出力指示を受け付けても良い。ドキュメントグループ出力指示は、機能識別子や画面識別子などの1以上の属性値を有する。また、受付部104は、工数を算出する演算式を改訂するために、工数算出式の改訂指示を受け付けても良い。改訂指示は、ドキュメントグループを特定する情報、実績工数を有する。また、受付部104は、ドキュメントの開発難易度を自動的に蓄積する指示である開発難易度蓄積指示を受け付けても良い。また、受付部104は、ドキュメントの属性値を自動的に蓄積する指示である属性蓄積指示を受け付けても良い。また、ここで、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
【0050】
情報や命令等の入力手段は、テンキーやキーボードやマウスやメニュー画面によるもの等、何でも良い。受付部104は、テンキーやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
【0051】
ドキュメント検索部105は、受付部104が受け付けた1以上の属性値を有する1以上のドキュメントを、ドキュメント格納部101から検索する。ここで、検索とは、通常、ドキュメント識別子の取得であるが、ドキュメントの実体の取得でも良い。
【0052】
ドキュメント検索部105は、通常、MPUやメモリ等から実現され得る。ドキュメント検索部105の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0053】
関連ドキュメント検索部106は、ドキュメント関係情報格納部102に格納されているドキュメント関係情報を用いて、ドキュメント検索部105が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメントを検索する。また、関連ドキュメント検索部106は、ドキュメント関係情報格納部102に格納されているドキュメント関係情報を用いて、ドキュメント検索部105が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメント、およびドキュメント検索部105が検索した1以上の各ドキュメントの先祖のドキュメントである1以上のドキュメントを検索しても良い。ここで、検索とは、通常、ドキュメント識別子の取得であるが、ドキュメントの実体の取得でも良い。
【0054】
関連ドキュメント検索部106は、通常、MPUやメモリ等から実現され得る。関連ドキュメント検索部106の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0055】
ドキュメントグループ取得部107は、ドキュメント検索部105が検索した1以上のドキュメント、および関連ドキュメント検索部106が検索した1以上のドキュメントを、階層関係(ドキュメント関係情報を用いて取得可能な関係)を構成する最上位のドキュメントごとに、最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、1以上のドキュメントグループを取得する。ドキュメントグループ取得部107は、通常、ドキュメント関係情報格納部102に格納されているドキュメント関係情報を用いて、1以上のドキュメントグループを取得する。ドキュメントグループ取得部107が取得した複数のドキュメントグループにおいて、一部のドキュメントが複数のドキュメントグループに属する場合もあり得る。ここで、ドキュメントグループとは、1以上のドキュメント識別子だけでも良い。また、ドキュメントグループは、1以上のドキュメントの実体だけでも良い。また、ドキュメントグループは、1以上のドキュメント識別子とドキュメントの実体の組でも良い。つまり、ドキュメントグループは、仕事のまとまりを示す情報である、と言える。
【0056】
ドキュメントグループ取得部107は、通常、MPUやメモリ等から実現され得る。ドキュメントグループ取得部107の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0057】
ドキュメントグループ出力部108は、ドキュメントグループ取得部107が取得した1以上のドキュメントグループを出力する。ドキュメントグループの出力態様は問わない。ドキュメントグループ出力部108は、ドキュメントグループを構成する1以上のドキュメントのドキュメント識別子のリストを出力しても良いし、2以上のドキュメントの階層関係とともに、図的に、ドキュメントグループが認識可能なように出力しても良い。ここで、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、外部の装置(例えば、表示装置)への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
【0058】
ドキュメントグループ出力部108は、ディスプレイ等の出力デバイスを含むと考えても含まないと考えても良い。ドキュメントグループ出力部108は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【0059】
開発者識別子取得部109は、開発者情報格納部103から、ドキュメントグループ取得部107が取得した1以上の各ドキュメントグループに対して、開発者識別子を取得する。開発者識別子取得部109は、各ドキュメントグループに対して、当該ドキュメントグループが示す改変箇所(例えば、改変すべきプログラム群)の改変、または開発を行う開発者を示す開発者識別子を取得する。開発者識別子取得部109は、開発者情報格納部103から、ドキュメントグループ取得部107が取得した1以上の各ドキュメントグループに対して、一の開発者識別子を取得する。ここで、開発者識別子取得部109は、例えば、現在、何らのプロジェクトにも参加していない開発者識別子を取得する。つまり、開発者識別子取得部109は、開発者情報格納部103の開発者情報が有する「現プロジェクト名」が「NULL」の開発者情報に含まれる開発者識別子を取得する。また、開発者識別子取得部109は、例えば、一のドキュメントグループに対して、ランダムに、固定人数分(例えば、一名)の開発者識別子を取得しても良い。なお、一のドキュメントグループに対して、1名の開発者の開発者識別子を取得することは好適である。まとまりのある開発(修正)箇所の開発は、複数人で行うより、一人で行う方が、効率や品質が高くなることが多いからである。また、開発者識別子取得部109は、例えば、一のドキュメントグループが有するドキュメントが有する属性値「開発難易度」と、開発者情報が有する属性値「レベル」とを用いて、当該一のドキュメントグループに対応する改変や開発に適任である開発者を選択して、取得する。例えば、開発者識別子取得部109は、一のドキュメントグループが有するドキュメントが有する開発難易度に「高」を含む場合、レベル「高」の開発者識別子を取得したり、一のドキュメントグループが有するドキュメントが有する開発難易度の50%以上が「高」である場合、レベル「高」の開発者識別子を取得したり、一のドキュメントグループが有するドキュメントが有する開発難易度の10%以下のみが「高」である場合、レベル「低」の開発者識別子を取得したりする。開発者識別子取得部109は、ドキュメントグループを構成する1以上のドキュメントの開発難易度に合致するレベルの開発者の開発者識別子を取得すれば良い。ここで、開発難易度とレベルとが合致するか否かの判断方法は種々あり得る。なお、ドキュメントグループは、通常、開発や改良の単位である。
【0060】
開発者識別子取得部109は、通常、MPUやメモリ等から実現され得る。開発者識別子取得部109の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0061】
開発者識別子取得部109を構成するレベル決定手段1091は、1以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、ドキュメントの数、各ドキュメントの開発難易度のうちの1以上の情報を用いて、開発に必要な開発者のレベルを決定する。レベル決定手段1091は、ドキュメントの数が多いほど、また、各ドキュメントの開発難易度が高いほど、高いレベルを取得する。つまり、レベル決定手段1091は、例えば、ドキュメントの数、開発難易度をパラメータとする増加関数によりレベルを決定する。レベル決定手段1091は、通常、MPUやメモリ等から実現され得る。レベル決定手段1091の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0062】
開発者識別子取得手段1092は、レベル決定手段1091が決定したレベルに対応する開発者識別子を取得する。開発者識別子取得手段1092は、通常、MPUやメモリ等から実現され得る。開発者識別子取得手段1092の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0063】
開発者識別子出力部110は、開発者識別子取得部109が取得した開発者識別子を出力する。開発者識別子の出力態様は問わない。開発者識別子出力部110は、通常、ドキュメントグループを識別する情報に対応付けて、開発者識別子を出力する。開発者識別子出力部110は、ドキュメントグループ識別子と開発者識別子の対のリストを出力しても良いし、図的にドキュメントグループ識別子と開発者識別子とを出力しても良い。開発者識別子出力部110は、ディスプレイ等の出力デバイスを含むと考えても含まないと考えても良い。開発者識別子出力部110は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【0064】
工数算出元情報取得部111は、ドキュメントグループ取得部107が取得した1以上の各ドキュメントグループに含まれる1以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する。工数算出元情報取得部111は、ドキュメントグループの一部のドキュメントの開発難易度やドキュメントの量などの工数算出元情報を取得しても良い。工数算出元情報取得部111は、例えば、ドキュメントグループに含まれるドキュメント「プログラム」のステップ数を工数算出元情報として取得しても良いし、ドキュメントグループに含まれるドキュメント「プログラム」のステップ数と開発難易度を工数算出元情報として取得しても良い。工数算出元情報取得部111は、受付部104が受け付けた一のドキュメントグループの工数算出元情報を取得しても良い。なお、上記のドキュメントの量とは、プログラムのステップ数、ドキュメントの行数、章の数、サブセクションの数などのうちの1以上の情報である。
【0065】
工数算出元情報取得部111は、通常、MPUやメモリ等から実現され得る。工数算出元情報取得部111の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0066】
工数算出部112は、工数算出元情報取得部111が取得した工数算出元情報をパラメータとして工数を算出する。工数算出部112は、開発難易度が高いほど、ドキュメントの量が多いほど、工数が大きくなるように工数を算出する。
【0067】
工数算出部112は、通常、MPUやメモリ等から実現され得る。工数算出部112の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0068】
工数算出部112を構成する演算式格納手段1121は、工数を算出する演算式を格納している。演算式は、例えば、開発難易度、ドキュメントの量をパラメータとする増加関数である。演算式格納手段1121は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。演算式格納手段1121に演算式が記憶される過程は問わない。
【0069】
演算手段1122は、工数算出元情報取得部111が取得した工数算出元情報を、演算式格納手段1121の演算式に代入し、当該演算式を実行して、工数を取得する。演算手段1122は、通常、MPUやメモリ等から実現され得る。演算手段1122の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0070】
工数出力部113は、工数算出部112が算出した工数を出力する。工数出力部113は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。工数出力部113は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
【0071】
プログラム情報取得部114は、プログラムであるドキュメントから、プログラムの関数やメソッドやメッセージの数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得する。入出力の数とは、たとえば、プログラム中の関数の引数の数、上位関数にリターンする変数や定数の数などである。ステップ数とは、例えば、プログラムの行数や終端子(C言語では";")の数などである。なお、プログラムから関数やメソッドやメッセージを認識する技術は、通常のコンパイラの技術として公知技術であり、その数を算出することも公知技術である。また、入出力を認識する技術は、通常のコンパイラの技術として公知技術であり、その数を算出することも公知技術である。さらに、ステップ数を算出することも公知技術である。プログラム情報取得部114は、通常、MPUやメモリ等から実現され得る。プログラム情報取得部114の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0072】
開発難易度取得部115は、ドキュメントに対して、開発難易度を取得する。開発難易度取得部115は、プログラムであるドキュメント、およびプログラムの先祖のドキュメントをドキュメント格納部101から取得し、当該取得した1以上の各ドキュメントに対して、プログラム情報取得部114が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を決定する。開発難易度取得部115は、プログラム以外のドキュメントの情報(例えば、ドキュメントの量(頁数、行数など)、機能数(○○機能などの数)など)から、開発難易度を決定しても良い。開発難易度取得部115は、通常、MPUやメモリ等から実現され得る。開発難易度取得部115の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0073】
開発難易度蓄積部116は、開発難易度取得部115が取得した開発難易度を、1以上の各ドキュメントの属性値として、ドキュメント格納部101に蓄積する。開発難易度蓄積部116は、通常、MPUやメモリ等から実現され得る。開発難易度蓄積部116の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0074】
属性値取得部117は、ドキュメント格納部101の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか1以上の属性値を取得する。属性値取得部117は、例えば、属性値の種類に対応して、手がかり句を管理しており、ドキュメントから、手がかり句を用いて属性値を取得する。また、属性値取得部117は、手がかり句を用いて取得しても良いし、ドキュメント構造を用いて取得しても良い。手がかり句とは、「○○機能」「○○画面」「○○処理」「○○データベース」などである。つまり、属性値取得部117は、例えば、ドキュメントを自然言語処理し、当該ドキュメントから自立語を取得し、「○○機能」に合致する場合、当該「○○機能」を機能識別子として取得する。また、上記のドキュメント構造とは、「第1章」「1.2」「2.1.3」などの章、セクション、サブセクションなどの構造である。そして、属性値取得部117は、特定の構造(例えば、サブセクション([1−9].[1−9])のタイトルの中から、手がかり句を用いて属性値を取得する。
【0075】
属性値取得部117は、ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、当該関数名またはメソッド名またはメッセージ名に対応する属性値(機能識別子など)を取得する。なお、かかる場合、例えば、属性値取得部117は、関数名と機能識別子との対応情報を保持している、とする。
【0076】
属性値取得部117は、通常、MPUやメモリ等から実現され得る。属性値取得部117の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0077】
属性値蓄積部118は、属性値取得部117が取得した1以上の属性値を、ドキュメント格納部101に蓄積する。通常、属性値蓄積部118は、1以上の属性値を、ドキュメントと対応付けて蓄積する。なお、属性値蓄積部118は、取得された属性値を、プログラムの祖先や子孫のドキュメントの属性値として蓄積することは好適である。属性値蓄積部118は、通常、MPUやメモリ等から実現され得る。属性値蓄積部118の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0078】
ドキュメント利用検出部119は、一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出する。検出とは、例えば、ドキュメント識別子の取得である。ドキュメント利用検出部119は、編集しているドキュメントのドキュメント識別子と、編集中にオープンされている他のドキュメントのドキュメント識別子を取得する。また、ドキュメント利用検出部119は、コピー&ペースト、またはカット&ペーストの処理を検知し、コピー元またはカット元のドキュメントのドキュメント識別子と、ペースト先のドキュメントのドキュメント識別子を取得する。編集対象のドキュメントのドキュメント識別子、オープンされているドキュメントのドキュメント識別子、コピー元またはカット元のドキュメントのドキュメント識別子、およびペースト先のドキュメントのドキュメント識別子を取得する処理は公知技術である。
【0079】
ドキュメント利用検出部119は、通常、MPUやメモリ等から実現され得る。ドキュメント利用検出部119の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0080】
ドキュメント関係情報生成部120は、ドキュメント利用検出部119がドキュメントの表示または流用を検出した場合、表示されているドキュメントが編集されているドキュメントの親ドキュメントとなり、流用元のドキュメントが流用先のドキュメントの親ドキュメントとなるようにドキュメント関係情報を生成する。ドキュメント関係情報生成部120は、通常、MPUやメモリ等から実現され得る。ドキュメント関係情報生成部120の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0081】
ドキュメント関係情報蓄積部121は、ドキュメント関係情報生成部120が生成したドキュメント関係情報を、ドキュメント関係情報格納部102に蓄積する。ドキュメント関係情報蓄積部121は、通常、MPUやメモリ等から実現され得る。ドキュメント関係情報蓄積部121の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
演算式更新部122は、工数算出元情報取得部111が取得した工数算出元情報と受付部104が受け付けた実績工数とを用いて、演算式格納手段1121の演算式を更新する。演算式が、例えば、「工数(人月)=a1×(ステップ数×(関数の数/500+入力数/3500+出力数/3500)×レベル係数)」である、とする。ここで、a1は定数である。そして、レベル係数は、レベルが「高」の場合は1.1、レベルが「中」の場合は1.0、レベルが「低」の場合は0.9である、とする。また、工数算出元情報は、ここでは、全プログラムのステップ数、全プログラムの関数の数、全プログラムの引数の数の合計である入力数、全プログラムのリターン値の数の合計である出力数である、とする。そして、演算式更新部122は、過去の実績工数(実際にかかった工数)と、その時の条件である工数算出元情報と、パラメータa1とを対応付けて保持している、とする。そして、演算式更新部122は、受付部104が受け付けた実績工数と、当該実績工数に対応する工数算出元情報(工数算出元情報取得部111が取得した工数算出元情報)とを演算式「工数(人月)=a1×(ステップ数×(関数の数/500+入力数/3500+出力数/3500)×レベル係数)」に代入し、a1を取得する。そして、既に格納している1以上のa1と、今回取得したa1とを用いて、a1の平均値を算出する。そして、演算式更新部122は、算出した新しいa1を、演算式格納手段1121の演算式に上書きする。演算式更新部122は、通常、MPUやメモリ等から実現され得る。演算式更新部122の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
【0082】
次に、開発支援装置1の動作について説明する。まず、開発支援装置1が、必要に応じて、ドキュメントグループを出力したり、工数算出の演算式を更新したりする指示について、図3のフローチャートを用いて説明する。
【0083】
(ステップS301)受付部104は、ユーザからドキュメントグループ出力指示を受け付けたか否かを判断する。ドキュメントグループ出力指示を受け付ければステップS302に行き、受け付けなければステップS315に行く。
【0084】
(ステップS302)ドキュメント検索部105は、ステップS301で受け付けられたドキュメントグループ出力指示が有する1以上の属性値(例えば、機能名、画面名など)を、属性値として有する1以上のドキュメントのドキュメント識別子を、ドキュメント格納部101から取得する。
【0085】
(ステップS303)関連ドキュメント検索部106は、ドキュメント関係情報格納部102に格納されているドキュメント関係情報を用いて、ステップS302で取得された1以上のドキュメント識別子で識別される1以上の各ドキュメントに関連するドキュメントを取得する。かかる処理を関連ドキュメント取得処理という。関連ドキュメント取得処理について、図4のフローチャートを用いて説明する。
【0086】
(ステップS304)ドキュメントグループ取得部107は、ステップS302で取得された1以上のドキュメント識別子およびステップS303で取得された1以上のドキュメント識別子と、ドキュメント関係情報とを用いて、1以上のドキュメントグループを取得する。この処理を、ドキュメントグループ取得処理という。ドキュメントグループ取得処理について、図5のフローチャートを用いて説明する。
【0087】
(ステップS305)ドキュメントグループ出力部108は、ステップS304で取得された1以上のドキュメントグループを出力する。
【0088】
(ステップS306)開発者識別子取得部109は、カウンタiに1を代入する。
【0089】
(ステップS307)開発者識別子取得部109は、ステップS305で出力されたドキュメントグループの中で、i番目のドキュメントグループが存在するか否かを判断する。存在すればステップS308に行き、存在しなければステップS301に戻る。
【0090】
(ステップS308)開発者識別子取得部109を構成するレベル決定手段1091は、i番目のドキュメントグループに対して、開発に必要な開発者のレベルを決定する。かかる処理を、レベル決定処理という。レベル決定処理について、図6のフローチャートを用いて説明する。
【0091】
(ステップS309)開発者識別子取得手段1092は、ステップS308で決定されたレベルに対応する1以上の開発者識別子を、開発者情報格納部103から取得する。
【0092】
(ステップS310)開発者識別子出力部110は、ステップS309で取得された開発者識別子を、i番目のドキュメントグループに対応付けて出力する。
【0093】
(ステップS311)工数算出元情報取得部111は、i番目のドキュメントグループに対して、工数算出元情報を取得する。かかる処理を工数算出元情報取得処理という。工数算出元情報取得処理について、図7のフローチャートを用いて説明する。
【0094】
(ステップS312)工数算出部112は、i番目のドキュメントグループに対して、ステップS311で取得された工数算出元情報を、演算式格納手段1121の演算式に代入し、当該演算式を実行して、工数を取得する。
【0095】
(ステップS313)工数出力部113は、i番目のドキュメントグループに対応付けて、工数算出部112が算出した工数を出力する。ステップS301に戻る。
【0096】
(ステップS314)開発者識別子取得部109は、カウンタiを1、インクリメントする。ステップS307に戻る。
【0097】
(ステップS315)受付部104は、ユーザから工数算出式の改訂指示を受け付けたか否かを判断する。改訂指示を受け付ければステップS316に行き、受け付けなければステップS301に戻る。
【0098】
(ステップS316)演算式更新部122は、ステップS315で受け付けた改訂指示が有するドキュメントグループ識別子で特定できる1以上のドキュメント識別子を取得する。
【0099】
(ステップS317)工数算出元情報取得部111は、ステップS316で取得された1以上のドキュメント識別子で識別されるドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する。かかる処理は、工数算出元情報取得処理である。
【0100】
(ステップS318)演算式更新部122は、ステップS315で受け付けた改訂指示が有する実績工数を取得する。
【0101】
(ステップS319)演算式更新部122は、演算式格納手段1121の演算式を読み出す。そして、ステップS317で取得された工数算出元情報、ステップS318で取得した実績工数を、読み出した演算式に適用し、新しい演算式を構成する。
【0102】
(ステップS320)演算式更新部122は、ステップS319で構成した新しい演算式を、演算式格納手段1121に上書きする。ステップS301に戻る。
【0103】
なお、図3のフローチャートにおいて、ドキュメントグループの出力処理、開発者識別子の出力処理、工数の出力処理、および演算式の更新処理は、それぞれ独立に行っても良。また、上記の複数の処理のうち、一つの処理のみ行っても良い。
【0104】
さらに、図3のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【0105】
次に、ステップS303の関連ドキュメント取得処理について、図4のフローチャートを用いて説明する。
【0106】
(ステップS401)関連ドキュメント検索部106は、カウンタiに1を代入する。
【0107】
(ステップS402)関連ドキュメント検索部106は、ステップS302で取得された1以上のドキュメント識別子の中で、i番目のドキュメント識別子が存在するか否かを判断する。存在すればステップS403に行き、存在しなければ上位処理リターンする。
【0108】
(ステップS403)関連ドキュメント検索部106は、ドキュメント関係情報格納部102のドキュメント関係情報を用いて、i番目のドキュメント識別子より下位のドキュメントのドキュメント識別子をすべて取得する。つまり、関連ドキュメント検索部106は、i番目のドキュメント識別子のすべての子のドキュメント識別子を取得する。そして、1以上の各子のドキュメント識別子のさらに子(i番目のドキュメント識別子の孫)のドキュメント識別子をすべて取得する。関連ドキュメント検索部106は、かかる処理を再帰的に繰り返し、ツリー構造を有するドキュメント識別子群の中で、i番目のドキュメント識別子をルートとし、最下位までのドキュメント識別子を取得する。そして、関連ドキュメント検索部106は、取得した1以上のドキュメント識別子を図示しないバッファに書き込む。なお、子のドキュメント識別子とは、子のドキュメントのドキュメント識別子と同意義である。
【0109】
(ステップS404)関連ドキュメント検索部106は、ドキュメント関係情報格納部102のドキュメント関係情報を用いて、i番目のドキュメント識別子の一つの親のドキュメント識別子、およびさらに、その親(祖父)のドキュメント識別子という具合に、直系の先祖の1以上のドキュメント識別子を、ルートのドキュメント識別子まで取得する。そして、関連ドキュメント検索部106は、取得した1以上のドキュメント識別子を図示しないバッファに書き込む。なお、親のドキュメント識別子とは、親のドキュメントのドキュメント識別子と同意義である。
【0110】
(ステップS405)関連ドキュメント検索部106は、カウンタiを1、インクリメントする。ステップS402に戻る。
【0111】
なお、図4のフローチャートにおいて、図示しないバッファに、ステップS302で取得された1以上のドキュメント識別子で識別されるドキュメントに関連するドキュメントのドキュメント識別子が格納された。
【0112】
次に、ステップS304のドキュメントグループ取得処理について、図5のフローチャートを用いて説明する。
【0113】
(ステップS501)ドキュメントグループ取得部107は、カウンタiに1を代入する。
【0114】
(ステップS502)ドキュメントグループ取得部107は、図4のフローチャートにおいて、1以上のドキュメント識別子が書き込まれた図示しないバッファの中に、i番目のドキュメント識別子が存在するか否かを判断する。存在すればステップS503に行き、存在しなければステップS507に行く。
【0115】
(ステップS503)ドキュメントグループ取得部107は、バッファの中のi番目のドキュメント識別子の親のドキュメント識別子を、バッファの中から取得する。
【0116】
(ステップS504)ドキュメントグループ取得部107は、ステップS503で親のドキュメント識別子が取得できたか否かを判断する。取得できればステップS506に行き、取得できなければステップS505に行く。なお、ここでは、図4のフローチャートにおいて、取り出した1以上のドキュメント識別子の中で、i番目のドキュメント識別子が、最上位(ルート)のドキュメント識別子であるか否かを判断していることとなる。なお、ルートのドキュメント識別子は、複数存在することもある。
【0117】
(ステップS505)ドキュメントグループ取得部107は、i番目のドキュメント識別子を、ルートのドキュメント識別子として、図示しないバッファに登録する。なお、ルートのドキュメント識別子ごとに、ドキュメントグループができる。
【0118】
(ステップS506)ドキュメントグループ取得部107は、カウンタiを1、インクリメントする。ステップS502に戻る。
【0119】
(ステップS507)ドキュメントグループ取得部107は、カウンタiに1を代入する。
【0120】
(ステップS508)ドキュメントグループ取得部107は、バッファ(ステップS505で利用されたバッファであり、図4のフローチャートにおいて利用されたバッファではない)内に、i番目のルートのドキュメント識別子が存在するか否かを判断する。i番目のルートのドキュメント識別子が存在すればステップS509に行き、存在しなければ上位処理にリターンする。
【0121】
(ステップS509)ドキュメントグループ取得部107は、図4のフローチャートにおいて、1以上のドキュメント識別子が書き込まれた図示しないバッファの中から、i番目のルートのドキュメント識別子の子孫のすべてのドキュメント識別子を取得する。つまり、ドキュメントグループ取得部107は、図4のフローチャートにおいて、1以上のドキュメント識別子が書き込まれた図示しないバッファの中から、i番目のルートのドキュメント識別子のすべての子のドキュメント識別子を取得し、さらに1以上の各子のドキュメント識別子のさらに子のドキュメント識別子を取得する。そして、かかる処理を再帰的に行う。
【0122】
(ステップS510)ドキュメントグループ取得部107は、i番目のルートのドキュメント識別子と、当該ルートのドキュメント識別子の子孫の1以上のドキュメント識別子(ステップS509で取得したドキュメント識別子)とを有するドキュメントグループを構成する1以上のドキュメント識別子を、図示しないバッファに格納する。この1以上のドキュメント識別子が、i番目のドキュメントグループを構成するドキュメント群の識別子の集合である。
【0123】
(ステップS511)ドキュメントグループ取得部107は、カウンタiを1、インクリメントする。ステップS502に戻る。
【0124】
なお、図5のフローチャートにおいて、ステップS510で、ドキュメントグループごとに、1以上のドキュメント識別子が格納される。
【0125】
次に、ステップS308のレベル決定処理について、図6のフローチャートを用いて説明する。
【0126】
(ステップS601)レベル決定手段1091は、ドキュメントグループが有する1以上のドキュメントの量を取得する。具体的には、例えば、レベル決定手段1091は、ドキュメントグループが有するドキュメント識別子で識別される1以上のドキュメントを、ドキュメント格納部101から読み出し、ドキュメントの数、当該読み出した1以上のドキュメントに含まれるプログラム全体のステップ数、入力の数の合計、出力の数の合計などの1以上の量に関する情報を取得する。なお、ドキュメントの量とは、ドキュメントの数、ステップ数、入力の数の合計、出力の数の合計などのうちの1以上の数値である。
【0127】
(ステップS602)レベル決定手段1091は、カウンタiに1を代入する。
【0128】
(ステップS603)レベル決定手段1091は、i番目のドキュメントが存在するか否かを判断する。i番目のドキュメントが存在すればステップS604に行き、存在しなければステップS606に行く。
【0129】
(ステップS604)レベル決定手段1091は、i番目のドキュメントの属性値である開発難易度を、ドキュメント格納部101から取得する。
【0130】
(ステップS605)レベル決定手段1091は、カウンタiを1、インクリメントする。ステップS603に戻る。
【0131】
(ステップS606)レベル決定手段1091は、ステップS604で取得した1以上のドキュメントの開発難易度から、各開発難易度の値の割合を取得する。なお、開発難易度の値は、例えば、「高(3)」「中(2)」「低(1)」などである。また、開発難易度の値は、5段階でも、10段階等でも良い。
【0132】
(ステップS607)レベル決定手段1091は、ステップS601で取得したドキュメントの量、開発難易度の各値の割合を用いて、レベルを決定する。なお、レベル決定手段1091は、例えば、ドキュメントの量、開発難易度の各値の割合をパラメータとする演算式を保持しており、かかる演算式を用いて、レベルを決定しても良い。演算式は、ドキュメントの量が多いほど、開発難易度の高い値の割合が多いほど、高いレベルを算出するような演算式(ドキュメントの量等をパラメータとする増加関数)である。また、レベル決定手段1091は、例えば、ドキュメントの量の範囲、開発難易度の各値の割合の範囲を軸とする、レベル決定のための管理表を保持しており、かかる管理表を参照して、レベルを決定しても良い。上位処理にリターンする。
【0133】
次に、ステップS311の工数算出元情報取得処理について、図7のフローチャートを用いて説明する。
【0134】
(ステップS701)工数算出元情報取得部111は、初期化処理を行う。初期化処理とは、全ステップ数、全入力数、全出力数を格納する変数に「0」を代入する処理である。
【0135】
(ステップS702)工数算出元情報取得部111は、ドキュメントグループを構成するドキュメントの中のすべてのプログラムを、ドキュメント格納部101から読み出す。
【0136】
(ステップS703)工数算出元情報取得部111は、カウンタiに1を代入する。
【0137】
(ステップS704)工数算出元情報取得部111は、ステップS702で読み出したすべてのプログラムの中に、i番目の関数の定義が存在するか否かを判断する。存在すればステップS705に行き、存在しなければステップS712に行く。
【0138】
(ステップS705)工数算出元情報取得部111は、i番目の関数のステップ数を算出する。
【0139】
(ステップS706)工数算出元情報取得部111は、変数「全ステップ数」に、ステップS705で算出したステップ数を加算する。
【0140】
(ステップS707)工数算出元情報取得部111は、i番目の関数の引数の数を取得する
【0141】
(ステップS708)工数算出元情報取得部111は、変数「全入力数」に、ステップS707で算出したリターン値の数を加算する。
【0142】
(ステップS709)工数算出元情報取得部111は、
【0143】
(ステップS710)工数算出元情報取得部111は、変数「全出力数」に、ステップS709で算出したリターン値を加算する。
【0144】
(ステップS711)工数算出元情報取得部111は、カウンタiを1、インクリメントする。ステップS704に戻る。
【0145】
なお、図7のフローチャートにおいて、工数算出元情報は、プログラムの全ステップ数、全入力数、全出力数であった。しかし、工数算出元情報は、全ドキュメント数などの他の値であっても良い。
【0146】
次に、開発支援装置1が、必要に応じて、開発難易度、ドキュメントの属性値等を自動的に蓄積する処理について、図8のフローチャートを用いて説明する。
【0147】
(ステップS801)受付部104は、開発難易度蓄積指示を受け付けたか否かを判断する。開発難易度蓄積指示を受け付ければステップS802に行き、受け付けなければステップS817に行く。
【0148】
(ステップS802)開発難易度取得部115は、カウンタiに1を代入する。
【0149】
(ステップS803)開発難易度取得部115は、ドキュメント格納部101の中に、i番目のドキュメント「プログラム」が存在するか否かを判断する。プログラム存在すればステップS804に行き、存在しなければステップS811に行く。なお、開発難易度取得部115は、ドキュメントの中をチェックし、プログラムであるか否かを判断しても良いし、ドキュメントの属性値の中のドキュメントの種類の値を取得し、その種類の値が「プログラム」である場合、i番目のドキュメントがプログラムである、と判断しても良い。なお、ドキュメントの種類の値は、外部設計書、内部設計書、プログラム等があり得る。
【0150】
(ステップS804)開発難易度取得部115は、i番目のプログラムのステップ数を取得する。そして、開発難易度取得部115は、i番目のプログラムと対応付けて、ステップ数をバッファに、一時格納する。
【0151】
(ステップS805)開発難易度取得部115は、i番目のプログラムの中の1以上の関数のすべての引数の数を取得する。そして、開発難易度取得部115は、i番目のプログラムと対応付けて、引数の数をバッファに、一時格納する。
【0152】
(ステップS806)開発難易度取得部115は、i番目のプログラムの中の1以上の関数のすべてのリターン値の数を取得する。そして、開発難易度取得部115は、i番目のプログラムと対応付けて、リターン値の数をバッファに、一時格納する。
【0153】
(ステップS807)開発難易度取得部115は、i番目のプログラムの中の全関数の数を取得する。そして、開発難易度取得部115は、i番目のプログラムと対応付けて、全関数の数をバッファに、一時格納する。
【0154】
(ステップS808)開発難易度取得部115は、ステップ数、引数の数(入力数)、リターン値の数(出力数)、全関数の数のうち、1以上の値を用いて、開発難易度を取得する。なお、開発難易度取得部115は、ステップ数、引数の数(入力数)、リターン値の数(出力数)、全関数の数がそれぞれ大きいほど、開発難易度が高くなるように、開発難易度を決定する。
【0155】
(ステップS809)開発難易度蓄積部116は、ステップS808で決定した開発難易度を、i番目のプログラムの属性値として蓄積する。
【0156】
(ステップS810)開発難易度蓄積部116は、カウンタiを1、インクリメントする。ステップS703に戻る。
【0157】
(ステップS811)開発難易度取得部115は、カウンタjに1を代入する。
【0158】
(ステップS812)開発難易度取得部115は、ドキュメント格納部101の中に、プログラム以外のj番目のドキュメントが存在するか否かを判断する。存在すればステップS813に行き、存在しなければステップS801に戻る。
【0159】
(ステップS813)開発難易度取得部115は、ドキュメント関係情報格納部102のドキュメント関係情報を用いて、j番目のドキュメントの下位の1以上のプログラムのドキュメント識別子を取得する。そして、開発難易度取得部115は、取得した1以上のプログラムのステップ数の合計値を算出する。また、開発難易度取得部115は、1以上のプログラムの入力数の合計値を算出する。また、開発難易度取得部115は、1以上のプログラムの出力数の合計値を算出する。また、開発難易度取得部115は、1以上のプログラムの全関数の数の合計値を算出する。そして、開発難易度取得部115は、ここでは、ステップ数の合計値、入力数の合計値、出力数の合計値、および関数の数の合計値を有するプログラム情報を取得する。
【0160】
(ステップS814)開発難易度取得部115は、ステップS813で取得したプログラム情報を用いて、j番目のドキュメントの開発難易度を決定する。なお、ステップ数の合計値、入力数の合計値、出力数の合計値、および関数の数の合計値のそれぞれが多いほど、開発難易度が高くなるように、開発難易度取得部115は、開発難易度を決定する。
【0161】
(ステップS815)開発難易度蓄積部116は、j番目のドキュメントに対応付けて、ステップS814で取得した開発難易度を蓄積する。
【0162】
(ステップS816)開発難易度取得部115は、カウンタjを1、インクリメントする。ステップS812に戻る。
【0163】
(ステップS817)受付部104は、属性蓄積指示を受け付けたか否かを判断する。属性蓄積指示を受け付ければステップS817に行き、受け付けなければステップS801に戻る。
【0164】
(ステップS818)属性値取得部117は、カウンタiに1を代入する。
【0165】
(ステップS819)属性値取得部117は、ドキュメント格納部101にi番目のドキュメントが存在するか否かを判断する。存在すればステップS820に行き、存在しなければステップS801に戻る。
【0166】
(ステップS820)属性値取得部117は、ドキュメント格納部101から、i番目のドキュメントを読み出す。
【0167】
(ステップS821)属性値取得部117は、カウンタjに1を代入する。
【0168】
(ステップS822)属性値取得部117は、属性値取得部117が保持している属性値取得のためのルール(例えば、手がかり句)のうち、j番目のルールが存在するか否かを判断する。j番目のルールが存在すればステップS823に行き、存在しなければステップS827に行く。なお、ルールとは「条件:[漢字列]"機能"に合致すること、取得属性値:[漢字列]機能」である。このルールは、[漢字列]"機能"に合致する(例えば、印刷機能)場合、「[漢字列]機能(例えば、印刷機能)」を、属性値として取得することを示すルールである。
【0169】
(ステップS823)属性値取得部117は、i番目のドキュメントに対して、j番目のルールを適用し、属性値を取得する。なお、ここで、属性値が取得できない場合もある。
【0170】
(ステップS824)属性値取得部117は、ステップS823において、属性値を取得できたか否かを判断する。属性値を取得できればステップS825に行き、属性値を取得できなければステップS826に行く。
【0171】
(ステップS825)属性値蓄積部118は、ステップS823で取得した属性値を、i番目のドキュメントに対応付けて蓄積する。
【0172】
(ステップS826)カウンタjを1、インクリメントする。ステップS822に戻る。
【0173】
(ステップS827)カウンタiを1、インクリメントする。ステップS819に戻る。
【0174】
次に、開発支援装置1が、ドキュメント関係情報を自動的に蓄積する処理について、図9のフローチャートを用いて説明する。なお、図9のフローチャートにおいて、ドキュメント関係情報を蓄積する処理以外の処理は省略している。
【0175】
(ステップS901)ドキュメント利用検出部119は、一のドキュメントが編集中であるか否かを判断する。編集中であればステップS902に行き、編集中でなければステップS901に戻る。
【0176】
(ステップS902)ドキュメント利用検出部119は、編集中のドキュメントのドキュメント識別子(例えば、ファイル名など)を取得する。なお、ドキュメント利用検出部119は、ドキュメントのファイルがオープンされた時に、ドキュメント識別子を取得しても良い。
【0177】
(ステップS903)ドキュメント利用検出部119は、他のドキュメントから文字列等をコピーし、一のドキュメンに、当該文字列等をペーストしたか否かを判断する。なお、ドキュメント利用検出部119は、コピーの命令、ペーストの命令の情報を保持しており、かかる命令が受け付けられたか否かを判断する。コピー&ペーストが行われればステップS904に行き、コピー&ペーストが行われなければステップS901に戻る。
【0178】
(ステップS904)ドキュメント関係情報生成部120は、文字列等をコピーした場合の元のドキュメントのドキュメント識別子を取得する。
【0179】
(ステップS905)ドキュメント関係情報生成部120は、ステップS902で取得した編集中のドキュメントのドキュメント識別子(例えば、DOC1)と、ステップS904で取得したコピー元のドキュメントのドキュメント識別子(例えば、DOC2)とを用いて、ドキュメント関係情報(例えば、(DOC1,DOC2))を生成する。
【0180】
(ステップS906)ドキュメント関係情報蓄積部121は、ステップS905で生成したドキュメント関係情報を、ドキュメント関係情報格納部102に蓄積する。ステップS901に戻る。
【0181】
なお、図9のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
【0182】
また、図9のフローチャートにおいて、ドキュメント関係情報を生成して、蓄積する処理の一例を説明した。
【0183】
以下、本実施の形態における開発支援装置1の具体的な動作について説明する。
【0184】
今、あるソフトウェア開発プロジェクトの複数の開発者たちは、各自で、開発工程におけるドキュメントを作成していく、とする。詳細には、開発者たちは、プロジェクト計画書、外部設計書、内部設計書、およびプログラムという、種々の種類のドキュメントを作成していく、とする。
【0185】
そして、ドキュメントを作成していく過程で、ドキュメントのファイル名、ドキュメントの作成者、およびドキュメントの実体が、ドキュメント格納部101に格納される、とする。かかる場合のドキュメント管理表を図10に示す。図10において、「ID」「属性値」「ドキュメント(実体)」を有するレコードが多数、管理されている。また、図10において、ファイル名、作成者以外の属性値は空である、とする。図10において、「種類」はドキュメントの種類である。また、「難易度」は、開発難易度である。
【0186】
そして、開発者たちは、上流工程で作成したドキュメントから情報をコピー&ペーストしながら、下流のドキュメントを作成していく、とする。かかるドキュメントの作成過程で、ドキュメント利用検出部119は、図9で説明したフローチャートに従って、コピー&ペーストを検出する。そして、ドキュメント関係情報生成部120は、コピー元のドキュメントのドキュメント識別子を親、ペースト先のドキュメントのドキュメント識別子を子とするドキュメント関係情報(例えば、(親のドキュメント識別子,子のドキュメント識別子))を生成する。そして、ドキュメント関係情報蓄積部121は、生成したドキュメント関係情報を、図11に示すように、ドキュメント関係情報格納部102のドキュメント関係情報管理表に蓄積する。図11において、親ドキュメントと子ドキュメントは、それぞれのドキュメント識別子であり、図10のドキュメント管理表の「ID」に対応する。なお、図11において、ID「17」のドキュメントを作成する際に、ID「1」のドキュメントから、情報をコピー&ペーストしたことを示す。また、ID「21」のドキュメントを作成する際に、ID「2」のドキュメントから、情報をコピー&ペーストしたことを示す。
【0187】
また、属性値取得部117は、図12に示すルール管理表を保持している。ルール管理表は、属性値取得部117がドキュメントから属性値を取得するためのルールを管理する表である。ルール管理表は、「ID」「条件」「属性」「属性値」を有するレコードを1以上、管理している。「条件」は、属性値を取得するための条件である。「属性」は、取得した属性値の意味であり、図10のドキュメント管理表のどの属性に、取得した属性値を格納するかを示す情報である。「属性値」は、属性値の取り出し方を示す情報である。図12の「ID=1」のレコードは、ドキュメントのセクションまたはサブセクションのタイトル内に「漢字列」+"機能"の文字列(例えば、「情報システムの印刷機能」の「印刷機能」)を含む場合、条件に合致し、「漢字列」+"機能"(ここでは、「印刷機能」)を属性値として取得し、当該属性値が属性「機能識別子」の属性値として書き込まれる、ことを示す。なお、セクションまたはサブセクションは、ドキュメントの構造であり、例えば、行頭の「1.」「2.」などのセクションを示す数値や、行頭の「第1章」「第2章」などのセクションを示す表現や、行頭の「1.1」「2.3」などのサブセクションを示す数値により判定される。
【0188】
また、図12の「ID=2」のレコードは、ドキュメント内の図[1−9][0−9]*に後続する文字列であり、「文字列」+"画面"に合致する場合、条件に合致し、「文字列」+"画面"(ここでは、「ユーザ定義入力画面」)を属性値として取得し、当該属性値が属性「画面識別子」の属性値として書き込まれる、ことを示す。なお、図12の「ID=2」のレコードについて、「図13 ユーザ定義入力画面」という文字列が存在する場合、属性値「ユーザ定義入力画面」が取得され、当該属性値が属性「画面識別子」に書き込まれる。なお、[1−9][0−9]*は、最初に「1」から「9」の数値が存在し、その後0個(1個、と考えても良い)以上の「0」から「9」の数値が存在することを示す、ことを示す。
【0189】
また、図12の「ID=3」のレコードは、ドキュメント内に「文字列」+"データベース"(改行コードまで)、または「文字列」+"DB"(改行コードまで)が存在する場合、「文字列」+"データベース"を属性値として取得し、当該属性値が属性「DB識別子」の属性値として書き込まれる、ことを示す。
【0190】
また、図12の「ID=4」のレコードは、ドキュメント内に「バッチ名:」が存在する場合、「バッチ名:」に後続する文字列(改行コードまで)を、バッチ識別子の属性値として取得し、蓄積される、ことを示す。
【0191】
また、図12の「ID=5」のレコードは、ドキュメント内の<title>タグの後続する文字列(改行コードまで)を取得し、「[文字列1]の[文字列2]設計書」に合致する場合に、「[文字列2]設計書」を種類の属性値として取得し、書き込む、ことを示す。
【0192】
また、図12の「ID=6」のレコードは、ドキュメント内の<title>タグの後続する文字列(改行コードまで)を取得し、「企画書」を含む場合、「プロジェクト計画書」を種類の属性値として取得し、書き込む、ことを示す。
【0193】
さらに、図12の「ID=7」のレコードは、ドキュメント内に関数の終端子「;」を含む場合、「プログラム」を種類の属性値として取得し、書き込む、ことを示す。なお、終端子の文字列は問わない。
【0194】
以上のように、属性値取得部117は、手がかり表現(例えば、「[文字列1]の[文字列2]設計書」)、手がかり文字(例えば、「;」)や、ドキュメントの構造(例えば、ドキュメントのセクションまたはサブセクション)や、タグ(例えば、<title>)などを用いて、属性値を自動取得する。
【0195】
また、開発者情報格納部103は、図13に示す開発者情報管理表を保持している。開発者情報管理表は、「ID」と開発者情報を有するレコードを1以上、格納している。開発者情報は、「開発者識別子」「レベル」「現プロジェクト」などの属性値を有する。「開発者識別子」は、ここでは開発者名であるが、社員IDなどの識別情報でも良い。「レベル」は、開発者のレベルであり、ここでは「高」「中」「低」のいずれかを採り得る。「現プロジェクト」は、開発者が現在、担当しているプロジェクト名である。
【0196】
また、開発者たちが作成したドキュメントの例を図14に示す。図14において、ドキュメント「ab.doc」「xy.doc」「ac.doc」「bc.c」などのファイルがドキュメント格納部101に格納されていることを示す。
【0197】
かかる状況において、一のユーザは、開発支援装置1に「属性蓄積指示」を入力した、とする。すると、受付部104は、属性蓄積指示を受け付ける。
【0198】
次に、属性値取得部117は、ドキュメント格納部101のドキュメント(図14参照)を順次、読み出し、図12のルール管理表のルールを適用し、各ドキュメントから、属性値を取得する。
【0199】
そして、属性値取得部117は、図14のドキュメント「ab.doc」に、図12の「ID=1」のルールを適用し、「1.1 分析CSV作成機能」の文字列の行頭の「1.1」からサブセクションの行を認識し、機能識別子「分析CSV作成機能」を取得する。そして、属性値蓄積部118は、ドキュメント「ab.doc」の属性「機能識別子」の属性値として「分析CSV作成機能」を書き込む。
【0200】
次に、属性値取得部117は、図14のドキュメント「ab.doc」に、図12の「ID=2」のルールを適用し、「図8 諾否判定画面」の文字列を検出し、属性値「諾否判定画面」を取得する。そして、属性値蓄積部118は、属性値「諾否判定画面」をドキュメント「ab.doc」の画面識別子として書き込む。
【0201】
次に、属性値取得部117は、図14のドキュメント「ab.doc」に、図12の「ID=4」のルールを適用し、「バッチ名:目次途上与信システム」の文字列を検出し、属性値「目次途上与信システム」を取得する。そして、属性値蓄積部118は、当該属性値をドキュメント「ab.doc」のバッチ識別子として書き込む。
【0202】
次に、属性値取得部117は、図14のドキュメント「ab.doc」に、図12の「ID=5」のルールを適用し、「○○システムの外部設計書」を取得する。そして、属性値取得部117は、「○○システムの外部設計書」から属性値「外部設計書」を得る。次に、属性値蓄積部118は、属性値「外部設計書」を、属性「種類」の属性値として書き込む。
【0203】
同様に、属性値取得部117は、他のドキュメントに対しても、図12のルール管理表のルールを適用し、属性値を取得する。そして、属性値蓄積部118は、属性値をドキュメント管理表に蓄積する。そして、図15に示すドキュメント管理表が得られる。
【0204】
次に、一のユーザは、開発支援装置1に「開発難易度蓄積指示」を入力した、とする。すると、受付部104は、開発難易度蓄積指示を受け付ける。
【0205】
次に、開発難易度取得部115は、ドキュメント格納部101の中のドキュメントの種類「プログラム」に対応するドキュメントを、すべて読み出す。
【0206】
次に、開発難易度取得部115は、各プログラム(ドキュメント)のステップ数を取得する。
【0207】
次に、開発難易度取得部115は、各プログラムが有する関数を取得する。そして、開発難易度取得部115は、関数ごとに、引数の数を取得する。また、開発難易度取得部115は、関数ごとに、関数のリターン値の数を取得する。また、開発難易度取得部115は、各プログラム内の関数の数を取得する。開発難易度取得部115は、例えば、保持している開発難易点数の算出式「関数難易点数=f(ステップ数,引数の数,リターン値の数,関数の数)」に、取得したステップ数,引数の数,リターン値の数,関数の数を代入し、演算し、プログラムごとの開発難易点数を取得する。
【0208】
次に、開発難易度取得部115は、開発難易度の取得条件「開発難易点数<a1 の場合は開発難易度が「低」」、「a1<=開発難易点数<a2 の場合は開発難易度が「中」」、「a2<=開発難易点数<=a3 の場合は開発難易度が「高」」に従って、プログラムごとに、開発難易度を取得する。なお、開発難易度取得部115は、開発難易度の取得条件を予め保持している。
【0209】
次に、開発難易度蓄積部116は、各プログラムに対して、取得された開発難易度を書き込む。
【0210】
次に、開発難易度取得部115は、プログラム以外の各ドキュメントに対して、下位のすべてのプログラムを取得する。そして、プログラム以外の各ドキュメントに対して、下位のすべてのプログラムのステップ数の合計値、プログラムの入力数の合計値、プログラムの出力数の合計値、プログラムの全関数の数の合計値を算出する。なお、各プログラムのステップ数、入力数、出力数、関数の数は、既に保持されている。
【0211】
次に、開発難易度取得部115は、取得されたプログラム情報(ステップ数の合計値、入力数の合計値、出力数の合計値、全関数の数)を用いて、各ドキュメントの開発難易度を決定する。なお、ステップ数の合計値、入力数の合計値、出力数の合計値、および関数の数の合計値のそれぞれが多いほど、開発難易度が高くなるように、開発難易度取得部115は、開発難易度を決定する。階層化されたドキュメント階層の中で、一のドキュメントの下位のすべてのプログラムを取得する処理は、図11のドキュメント階層の情報を用いて行い、公知の技術である。
【0212】
次に、開発難易度蓄積部116は、各ドキュメントに対応付けて、開発難易度を蓄積する。以上により、各ドキュメントの開発難易度が蓄積された。
【0213】
次に、一のユーザは、「分析CSV作成機能」に不具合があり、改変が必要である、と気づいたとする。そして、ユーザは、「分析CSV作成機能」を含むドキュメントグループ出力指示を入力する。
【0214】
次に、ドキュメント検索部105は、受け付けられたドキュメントグループ出力指示が有する「分析CSV作成機能」を属性値として有する1以上のドキュメントのドキュメント識別子を、ドキュメント管理表から取得する。そして、ドキュメント検索部105は、ドキュメント識別子「1,3,15」を取得した、とする。
【0215】
次に、関連ドキュメント検索部106は、ドキュメント関係情報管理表(図11参照)に格納されているドキュメント関係情報を用いて、取得された1以上のドキュメント識別子「1,3,15」で識別される各ドキュメントの子を含む子孫のドキュメントのドキュメント識別子を取得する。ここで、関連ドキュメント検索部106は、ドキュメント識別子「17,38,85,92」を取得した、とする。
【0216】
次に、ドキュメントグループ取得部107は、取得されたドキュメント識別子「1,3,15,17,38,85,92」を用いて、以下のように、1以上のドキュメントグループを取得する。つまり、ドキュメントグループ取得部107は、ドキュメント識別子の集合「1,3,15,17,38,85,92」の中に、親の識別子を有さないドキュメント識別子「1,3,15」を、ルートのドキュメント識別子として取得する。次に、ドキュメントグループ取得部107は、各ルートのドキュメント識別子ごとに、子、孫等の子孫のドキュメントのドキュメント識別子であり、ドキュメント識別子の集合「1,3,15,17,38,85,92」の中のドキュメント識別子を取得する。
【0217】
つまり、ドキュメントグループ取得部107は、ルートのドキュメント識別子「1」に対して、子のドキュメント識別子「17」を得る。そして、ドキュメントグループ取得部107は、ドキュメント識別子「1−17」のドキュメントグループを得る。
【0218】
また、ドキュメントグループ取得部107は、ルートのドキュメント識別子「3」に対して、子のドキュメント識別子「17」および「38」を得る。そして、ドキュメントグループ取得部107は、ルートのドキュメント識別子「3」の孫のドキュメントのドキュメント識別子「85」を得る。なお、ドキュメント識別子「85」は、ルートのドキュメント識別子「38」の子のドキュメントのドキュメント識別子である。そして、ドキュメントグループ取得部107は、「3−17」「3−38−85」を有するドキュメントグループを得る。
【0219】
さらに、ドキュメントグループ取得部107は、ルートのドキュメント識別子「15」に対して、子のドキュメントのドキュメント識別子「17」および「92」を得る。そして、ドキュメントグループ取得部107は、「15−17」「15−92」を有するドキュメントグループを得る。
【0220】
以上により、ドキュメントグループ取得部107は、3つのドキュメントグループを取得した。第一のドキュメントグループは、ドキュメント識別子「1,17」のドキュメントを有するドキュメントグループである。第二のドキュメントグループは、ドキュメント識別子「3,17,38,85」のドキュメントを有するドキュメントグループである。第三のドキュメントグループは、ドキュメント識別子「15,17,92」のドキュメントを有するドキュメントグループである。
【0221】
次に、ドキュメントグループ出力部108は、取得された3つのドキュメントグループを出力する。ドキュメントグループの第一の出力例を、図16に示す。図16において、ドキュメントグループごとに、視覚的にドキュメントがグループ化されている。また、図16において、四角形がドキュメントを図式化したものであり、四角形の中の情報がドキュメント識別子である。また、四角形の上部にドキュメントのファイル名、下部に開発難易度が出力されている。ドキュメントグループ出力部108が出力する情報(属性値)や出力態様は問わない。
【0222】
次に、開発者識別子取得部109を構成するレベル決定手段1091は、3つの各ドキュメントグループに対して、開発に必要な開発者のレベルを、以下のように決定する。まず、レベル決定手段1091は、図17に示すレベル決定方法を管理している。図17に示すレベル決定方法において、ドキュメントグループの中に1つでも開発難易度が「高」のドキュメントが存在すれば、開発に必要な開発者のレベルを「高」と決定する、ことを示す。また、図17に示すレベル決定方法において、ドキュメントグループの中で、開発難易度が「中」のドキュメントの割合が50%以上である場合、開発に必要な開発者のレベルを「中」と決定する、ことを示す。さらに、図17に示すレベル決定方法において、開発者のレベルが「高」でもなく、「中」でもないドキュメントグループに対して、開発に必要な開発者のレベルを「低」と決定する、ことを示す。
【0223】
そして、レベル決定手段1091は、図17に示すレベル決定方法を読み出す。そして、各ドキュメントグループに対して、ドキュメントグループ内のドキュメントごとに、その属性値である「難易度」を、ドキュメント管理表から読み出す。次に、レベル決定手段1091は、ドキュメントグループ内のすべてのドキュメントの属性値「難易度」を、図17に示すレベル決定方法に適用し、3つのドキュメントグループの開発者のレベルを決定する。つまり、レベル決定手段1091は、第一のドキュメントグループに対して、開発者のレベルを「低」と決定する。また、第二のドキュメントグループに対して、開発者のレベルを「高」と決定する。さらに、第三のドキュメントグループに対して、開発者のレベルを「中」と決定する。
【0224】
そして、次に、開発者識別子取得手段1092は、ドキュメントグループごとに、決定されたレベルに対応する一人の開発者を識別する開発者識別子を、開発者情報管理表(図13参照)から取得する。ここでは、開発者識別子取得手段1092は、現プロジェクト名がNULL(現在、何らのプロジェクトにも参画していない)であり、各ドキュメントグループのレベルと合致するレベルの開発者識別子を取得する、とする。つまり、開発者識別子取得手段1092は、開発者情報管理表から、第一のドキュメントグループに対して、開発者識別子「田中初美」を取得する。また、開発者識別子取得手段1092は、開発者情報管理表から、第二のドキュメントグループに対して、開発者識別子「高橋広子」を取得する。さらに、開発者識別子取得手段1092は、開発者情報管理表から、第三のドキュメントグループに対して、開発者識別子「山本和夫」を取得する。
【0225】
次に、開発者識別子出力部110は、取得された開発者識別子を、各ドキュメントグループに対応付けて出力する。
【0226】
次に、工数算出元情報取得部111は、各ドキュメントグループに対して、工数算出元情報を取得する。ここでは、工数算出元情報取得部111は、各ドキュメントグループに含まれるすべてのプログラムのステップ数と開発難易度とを取得する、とする。そして、工数算出元情報取得部111は、第一のドキュメントグループに対して、プログラムのステップ数「1080ステップ」と、開発難易度「低」を取得した、とする。また、工数算出元情報取得部111は、第二のドキュメントグループに対して、プログラムのステップ数「2580ステップ」と、開発難易度「高」を取得した、とする。さらに、工数算出元情報取得部111は、第三のドキュメントグループに対して、プログラムのステップ数「4600ステップ」と、開発難易度「中」と決定する。
【0227】
また、ここで、演算式格納手段1121は、「工数=(整数化関数(ステップ数/1000)+1)×難易度係数」という演算式を保持している、とする。整数化関数()とは、()内の数値の整数部のみを取得する処理を行う関数である。また、難易度係数について、開発難易度「低」の場合は難易度係数「1.0」、開発難易度「中」の場合は難易度係数「1.5」、開発難易度「高」の場合は難易度係数「2.0」である、とする。
【0228】
そして、工数算出部112は、第一のドキュメントグループに対して、「工数=(整数化関数(1080/1000)+1)×1.0」を実行し、「工数=2人月」を得る。また、工数算出部112は、第二のドキュメントグループに対して、「工数=(整数化関数(2580/1000)+1)×2.0」を実行し、「工数=6人月」を得る。さらに、工数算出部112は、第三のドキュメントグループに対して、「工数=(整数化関数(4600/1000)+1)×1.5」を実行し、「工数=7.5人月」を得る。
【0229】
次に、工数出力部113は、各ドキュメントグループに対応付けて、工数算出部112が算出した工数を出力する。つまり、工数出力部113は、「第一のドキュメントグループ−2人月」「第二のドキュメントグループ−6人月」「第三のドキュメントグループ−7.5人月」を出力する。
【0230】
なお、開発者識別子および工数が出力された場合の出力例を、図18に示す。図18において、各ドキュメントグループの開発者、工数が認識可能な態様で、開発者識別子と工数が出力されている。さらに、図18において、ドキュメント間の関係(上流工程で作成されたドキュメントか、下流行程で作成されたドキュメントであるか等)が認識可能なように、矢印を用いて、ドキュメントグループ内のドキュメントの関係(上流工程のドキュメント、下流工程のドキュメントなど)が出力されている。
【0231】
また、ドキュメントグループ出力部108、開発者識別子出力部110、および工数出力部113は、図19に示すように、各情報を文字列(リスト形式など)で、出力しても良いことは言うまでもない。
【0232】
次に、上記の3名の者が、実際に開発を行って、実際の開発工数が分かった、とする。そして、第一のドキュメントグループの開発を行った「田中初美」は、2.4人月かかって、担当した開発を完了した、とする。
【0233】
次に、ユーザは、工数算出式の改訂指示を入力した、とする。次に、受付部104は、ユーザから工数算出式の改訂指示を受け付ける。なお、改訂指示には、ドキュメントグループ識別子「1」、工数「2.4人月」が含まれている、とする。
【0234】
次に、演算式更新部122は、改訂指示が有するドキュメントグループ識別子「1」で特定できる1以上のドキュメント識別子「1,17」を取得する。
【0235】
次に、工数算出元情報取得部111は、ドキュメント識別子「1,17」で識別されるドキュメントの開発難易度「低,低」を有する工数算出元情報を取得する。そして、工数算出元情報取得部111は、ドキュメントの開発難易度「低,低」から、ドキュメントグループのレベル「低」を取得する。なお、工数算出元情報取得部111は、図17のレベル決定方法を用いて、ドキュメントグループのレベル「低」を取得する。また、工数算出元情報取得部111は、ドキュメント識別子「17」のドキュメントがプログラムであることを検出し、当該プログラムのステップ数「1080」を取得する。
【0236】
次に、演算式更新部122は、受け付けた改訂指示が有する実績工数「2.4人月」を取得する。
【0237】
次に、演算式更新部122は、演算式格納手段1121の演算式「工数=(整数化関数(ステップ数/1000)+1)×難易度係数」を読み出す。なお、ここでの難易度係数は、ドキュメントグループのレベル「低」に対応する「1.0」である。
【0238】
次に、演算式更新部122は、取得された工数算出元情報「ステップ数=1080」、取得した実績工数「2.4」を、読み出した演算式に適用する。つまり、「2.4=(整数化関数(1080/1000)+1)×難易度係数」により、演算式更新部122は、「難易度係数=1.2」を得る。そして、演算式更新部122は、ドキュメントグループのレベル「低」に対応する新しい演算式「工数=(整数化関数(ステップ数/1000)+1)×1.2」を、演算式格納手段1121に上書きする。
【0239】
以上、本実施の形態によれば、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべき箇所に対応するドキュメントの集合を把握することができる。
【0240】
また、本実施の形態によれば、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、保守や開発に必要な要員の把握も容易になる。
【0241】
なお、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、記録媒体に、開発過程において作成される2以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか1以上の属性値を有する2以上のドキュメントと、前記2以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、当該一のドキュメントに関連する下流工程で作成された1以上のドキュメントとの間の親子関係を示すドキュメント関係情報とを格納ており、コンピュータを、1以上の属性値を受け付ける受付部と、前記記録媒体から、前記受付部が受け付けた1以上の属性値を有する1以上のドキュメントを検索するドキュメント検索部と、前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメントを検索する関連ドキュメント検索部と、前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上のドキュメント、および前記関連ドキュメント検索部が検索した1以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、当該最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、1以上のドキュメントグループを取得するドキュメントグループ取得部と、前記ドキュメントグループ取得部が取得した1以上のドキュメントグループを出力するドキュメントグループ出力部として機能させるためのプログラム、である。
【0242】
また、上記プログラムにおいて、前記関連ドキュメント検索部は、前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメント、および前記前記ドキュメント検索部が検索した1以上の各ドキュメントの先祖のドキュメントである1以上のドキュメントを検索するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0243】
また、上記プログラムにおいて、記憶媒体に、開発者を識別する開発者識別子を有する開発者情報を1以上格納しており、前記記憶媒体から、前記ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに対して、開発者識別子を取得する開発者識別子取得部と、前記開発者識別子取得部が取得した開発者識別子を出力する開発者識別子出力部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0244】
また、上記プログラムにおいて、前記ドキュメントの属性値として、開発難易度を有し、前記開発者情報は、開発者識別子と開発者のレベルを有し、前記開発者識別子取得部は、1以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、当該ドキュメントの数および各ドキュメントの開発難易度とを用いて、開発に必要な開発者のレベルを決定するレベル決定手段と、前記レベル決定手段が決定したレベルに対応する開発者識別子を取得する開発者識別子取得手段とを具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0245】
また、上記プログラムにおいて、前記開発者識別子取得部は、前記記憶媒体から、前記ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに対して、一の開発者識別子を取得するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0246】
また、上記プログラムにおいて、プログラムであるドキュメントから、当該プログラムの関数の数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得するプログラム情報取得部と、前記プログラムであるドキュメント、および前記プログラムの先祖のドキュメントを、前記ドキュメント格納部から取得し、当該取得した1以上の各ドキュメントに対して、前記プログラムの前記プログラム情報取得部が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を取得する開発難易度取得部と、前記開発難易度取得部が取得した開発難易度を、前記1以上の各ドキュメントの属性値として、前記ドキュメント格納部に蓄積する開発難易度蓄積部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0247】
また、上記プログラムにおいて、前記ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに含まれる1以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する工数算出元情報取得部と、前記工数算出元情報をパラメータとして工数を算出する工数算出部と、前記工数算出部が算出した工数を出力する工数出力部とを具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0248】
また、上記プログラムにおいて、前記工数算出部は、工数を算出する演算式を格納している演算式格納手段と、前記工数算出元情報を前記演算式に代入し、当該演算式を実行して、工数を取得する演算手段とを具備し、前記受付部は、一のドキュメントグループおよび実績工数を受け付け、前記工数算出元情報取得部は、前記受付部が受け付けた一のドキュメントグループの工数算出元情報を取得し、前記工数算出元情報取得部が取得した工数算出元情報と前記受付部が受け付けた実績工数とを用いて、前記演算式格納手段の演算式を更新する演算式更新部をさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0249】
また、上記プログラムにおいて、前記記憶媒体の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか1以上の属性値を取得する属性値取得部と、前記属性値取得部が取得した1以上の属性値を、前記記憶媒体に蓄積する属性値蓄積部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0250】
また、上記プログラムにおいて、前記ドキュメントは、プログラムであり、前記属性値取得部は、前記ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、当該関数名またはメソッド名またはメッセージ名に対応する属性値を取得するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0251】
また、上記プログラムにおいて、前記属性値取得部は、前記取得した属性値を、前記プログラムの祖先のドキュメントの属性値として付与するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0252】
また、上記プログラムにおいて、前記ドキュメントは、自然言語で記載されたドキュメントであり、前記属性値取得部は、属性値の種類に対応して、手がかり句を管理しており、前記ドキュメントから、前記手がかり句を用いて属性値を取得するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0253】
また、上記プログラムにおいて、一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出するドキュメント利用検出部と、前記ドキュメント利用検出部がドキュメントの表示または流用を検出した場合、前記一のドキュメントの親ドキュメントが前記他のドキュメントとなるようにドキュメント関係情報を生成するドキュメント関係情報生成部と、前記ドキュメント関係情報生成部が生成したドキュメント関係情報を、前記記憶媒体に蓄積するドキュメント関係情報蓄積部とをさらに具備するものとして、コンピュータを機能させるためのプログラム、であることは好適である。
【0254】
また、図20は、本明細書で述べたプログラムを実行して、上述した実施の形態の開発支援装置等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図20は、このコンピュータシステム340の概観図であり、図21は、コンピュータシステム340の内部構成を示す図である。
【0255】
図20において、コンピュータシステム340は、FDドライブ3411、CD−ROMドライブ3412を含むコンピュータ341と、キーボード342と、マウス343と、モニタ344とを含む。
【0256】
図21において、コンピュータ341は、FDドライブ3411、CD−ROMドライブ3412に加えて、MPU3413と、CD−ROMドライブ3412及びFDドライブ3411に接続されたバス3414と、ブートアッププログラム等のプログラムを記憶するためのROM3415とに接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3416と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3417とを含む。ここでは、図示しないが、コンピュータ341は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
【0257】
コンピュータシステム340に、上述した実施の形態の開発支援装置等の機能を実行させるプログラムは、CD−ROM3501、またはFD3502に記憶されて、CD−ROMドライブ3412またはFDドライブ3411に挿入され、さらにハードディスク3417に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ341に送信され、ハードディスク3417に記憶されても良い。プログラムは実行の際にRAM3416にロードされる。プログラムは、CD−ROM3501、FD3502またはネットワークから直接、ロードされても良い。
【0258】
プログラムは、コンピュータ341に、上述した実施の形態の開発支援装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム340がどのように動作するかは周知であり、詳細な説明は省略する。
【0259】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
【0260】
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【0261】
また、上記各実施の形態において、一の装置に存在する2以上の通信手段(端末情報送信部、端末情報受信部など)は、物理的に一の媒体で実現されても良いことは言うまでもない。
【0262】
また、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【0263】
以上のように、本発明にかかる開発支援装置は、ソフトウェア等の開発の完了後、または開発中に、修正すべき箇所が発見された場合、修正すべきドキュメントの集合を把握することが容易になる。という効果を有し、開発支援装置等として有用である。
【符号の説明】
【0264】
1 開発支援装置
10 情報取得蓄積手段
101 ドキュメント格納部
102 ドキュメント関係情報格納部
103 開発者情報格納部
104 受付部
105 ドキュメント検索部
106 関連ドキュメント検索部
107 ドキュメントグループ取得部
108 ドキュメントグループ出力部
109 開発者識別子取得部
110 開発者識別子出力部
111 工数算出元情報取得部
112 工数算出部
113 工数出力部
114 プログラム情報取得部
115 開発難易度取得部
116 開発難易度蓄積部
117 属性値取得部
118 属性値蓄積部
119 ドキュメント利用検出部
120 ドキュメント関係情報生成部
121 ドキュメント関係情報蓄積部
122 演算式更新部
1091 レベル決定手段
1092 開発者識別子取得手段
1121 演算式格納手段
1122 演算手段

【特許請求の範囲】
【請求項1】
開発過程において作成される2以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか1以上の属性値を有する2以上のドキュメントを格納し得るドキュメント格納部と、
前記ドキュメント格納部に格納されている2以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、当該一のドキュメントに関連する下流工程で作成された1以上のドキュメントとの間の親子関係を示すドキュメント関係情報を格納し得るドキュメント関係情報格納部と、
1以上の属性値を受け付ける受付部と、
前記ドキュメント格納部から、前記受付部が受け付けた1以上の属性値を有する1以上のドキュメントを検索するドキュメント検索部と、
前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメントを検索する関連ドキュメント検索部と、
前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上のドキュメント、および前記関連ドキュメント検索部が検索した1以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、当該最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、1以上のドキュメントグループを取得するドキュメントグループ取得部と、
前記ドキュメントグループ取得部が取得した1以上のドキュメントグループを出力するドキュメントグループ出力部とを具備する開発支援装置。
【請求項2】
前記関連ドキュメント検索部は、
前記ドキュメント関係情報格納部に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメント、および前記前記ドキュメント検索部が検索した1以上の各ドキュメントの先祖のドキュメントである1以上のドキュメントを検索する請求項1記載の開発支援装置。
【請求項3】
開発者を識別する開発者識別子を有する開発者情報を1以上格納し得る開発者情報格納部と、
前記開発者情報格納部から、前記ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに対して、開発者識別子を取得する開発者識別子取得部と、
前記開発者識別子取得部が取得した開発者識別子を出力する開発者識別子出力部とをさらに具備する請求項1または請求項2記載の開発支援装置。
【請求項4】
前記ドキュメントの属性値として、開発難易度を有し、
前記開発者情報は、開発者識別子と開発者のレベルを有し、
前記開発者識別子取得部は、
1以上の各ドキュメントグループに対して、ドキュメントグループに含まれるドキュメントの数と各ドキュメントの開発難易度とを取得し、当該ドキュメントの数および各ドキュメントの開発難易度とを用いて、開発に必要な開発者のレベルを決定するレベル決定手段と、
前記レベル決定手段が決定したレベルに対応する開発者識別子を取得する開発者識別子取得手段とを具備する請求項3記載の開発支援装置。
【請求項5】
前記開発者識別子取得部は、
前記開発者情報格納部から、前記ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに対して、一の開発者識別子を取得する請求項3または請求項4記載の開発支援装置。
【請求項6】
プログラムであるドキュメントから、当該プログラムの関数の数、または入出力の数、またはステップ数のいずれかを含むプログラム情報を、プログラムごとに取得するプログラム情報取得部と、
前記プログラムであるドキュメント、および前記プログラムの先祖のドキュメントを、前記ドキュメント格納部から取得し、当該取得した1以上の各ドキュメントに対して、前記プログラムの前記プログラム情報取得部が取得したプログラム情報を用いて、プログラム情報が有するプログラムの関数の数、または入出力の数、またはステップ数が多いほど開発難易度が大きくなるように開発難易度を取得する開発難易度取得部と、
前記開発難易度取得部が取得した開発難易度を、前記1以上の各ドキュメントの属性値として、前記ドキュメント格納部に蓄積する開発難易度蓄積部とをさらに具備する請求項3から請求項5いずれか記載の開発支援装置。
【請求項7】
前記ドキュメントグループ取得部が取得した1以上の各ドキュメントグループに含まれる1以上のドキュメントの開発難易度、ドキュメントの量のうちのいずれかの情報を有する工数算出元情報を取得する工数算出元情報取得部と、
前記工数算出元情報をパラメータとして工数を算出する工数算出部と、
前記工数算出部が算出した工数を出力する工数出力部とを具備する請求項1から請求項6いずれか記載の開発支援装置。
【請求項8】
前記工数算出部は、
工数を算出する演算式を格納している演算式格納手段と、
前記工数算出元情報を前記演算式に代入し、当該演算式を実行して、工数を取得する演算手段とを具備し、
前記受付部は、
一のドキュメントグループおよび実績工数を受け付け、
前記工数算出元情報取得部は、
前記受付部が受け付けた一のドキュメントグループの工数算出元情報を取得し、
前記工数算出元情報取得部が取得した工数算出元情報と前記受付部が受け付けた実績工数とを用いて、前記演算式格納手段の演算式を更新する演算式更新部をさらに具備する請求項7記載の開発支援装置。
【請求項9】
前記ドキュメント格納部の各ドキュメントから、機能識別子、画面識別子、バッチ識別子、データベース識別子のいずれか1以上の属性値を取得する属性値取得部と、
前記属性値取得部が取得した1以上の属性値を、前記ドキュメント格納部に蓄積する属性値蓄積部とをさらに具備する請求項1から請求項8いずれか記載の開発支援装置。
【請求項10】
前記ドキュメントは、プログラムであり、
前記属性値取得部は、
前記ドキュメントから関数名またはメソッド名またはメッセージ名を取得し、当該関数名またはメソッド名またはメッセージ名に対応する属性値を取得する請求項9記載の開発支援装置。
【請求項11】
一のドキュメントを作成または編集中に、他のドキュメントが表示されていること、または他のドキュメントから情報を流用されていることを検出するドキュメント利用検出部と、
前記ドキュメント利用検出部がドキュメントの表示または流用を検出した場合、前記一のドキュメントの親ドキュメントが前記他のドキュメントとなるようにドキュメント関係情報を生成するドキュメント関係情報生成部と、
前記ドキュメント関係情報生成部が生成したドキュメント関係情報を、前記ドキュメント関係情報格納部に蓄積するドキュメント関係情報蓄積部とをさらに具備する請求項1から請求項10記載の開発支援装置。
【請求項12】
記録媒体に、
開発過程において作成される2以上のドキュメントであり、ドキュメントに対応する開発難易度、機能を識別する機能識別子、画面を識別する画面識別子、バッチ処理を識別するバッチ識別子、利用するデータベースを識別するデータベース識別子のいずれか1以上の属性値を有する2以上のドキュメントと、
前記2以上のドキュメント間の関係であり、開発過程における上流工程で作成された一のドキュメントと、当該一のドキュメントに関連する下流工程で作成された1以上のドキュメントとの間の親子関係を示すドキュメント関係情報とを格納ており、
コンピュータを、
1以上の属性値を受け付ける受付部と、
前記記録媒体から、前記受付部が受け付けた1以上の属性値を有する1以上のドキュメントを検索するドキュメント検索部と、
前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上の各ドキュメントの子を含む子孫のドキュメントである1以上のドキュメントを検索する関連ドキュメント検索部と、
前記記録媒体に格納されているドキュメント関係情報を用いて、前記ドキュメント検索部が検索した1以上のドキュメント、および前記関連ドキュメント検索部が検索した1以上のドキュメントを、階層関係を構成する最上位のドキュメントごとに、当該最上位のドキュメントから最下位のドキュメントまでを一のドキュメントグループとして、1以上のドキュメントグループを取得するドキュメントグループ取得部と、
前記ドキュメントグループ取得部が取得した1以上のドキュメントグループを出力するドキュメントグループ出力部として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2011−210210(P2011−210210A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−80001(P2010−80001)
【出願日】平成22年3月31日(2010.3.31)
【出願人】(302064762)株式会社日本総合研究所 (367)
【Fターム(参考)】