(57)【要約】【課題】既存プログラムの仕様を変更又は追加するとき、過去に蓄積された開発知識を効率よく活用する。【解決手段】プログラム情報に含まれる所定のプログラム位置に開発知識として開発ドキュメントを関連付けるソフトウェア開発支援方法であって、入力された開発ドキュメントを自然言語処理することによって、開発ドキュメントのドキュメント特性を生成し、生成されたドキュメント特性に基づいて、開発ドキュメントとプログラム情報とを関連付けるための類似度観点を選択し、選択された類似度観点に基づいて、プログラム情報のプログラム位置を選択し、プログラム情報のプログラム位置に記述された情報とドキュメント特性との類似度を計算し、計算された類似度が所定の値を超えるとき、プログラム位置に開発ドキュメントを関連付ける。【選択図】図１
2008117066.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア開発支援システムにおいて、プログラム情報に含まれる所定のプログラム位置に開発知識として開発ドキュメントを関連付けるソフトウェア開発支援方法であって、
前記ソフトウェア開発システムは、プロセッサと、前記プロセッサに接続されるメモリと、前記プログラム情報及び前記開発ドキュメントの入力を受け付ける入力装置と、を備え、
前記プロセッサは、
前記開発ドキュメントを自然言語処理することによって、前記開発ドキュメントのドキュメント特性を生成し、
前記生成されたドキュメント特性に基づいて、前記開発ドキュメントと前記プログラム情報とを関連付けるための類似度観点を選択し、
前記選択された類似度観点に基づいて、前記プログラム情報のプログラム位置を選択し、
前記プログラム情報のプログラム位置に記述された情報と前記ドキュメント特性との類似度を計算し、
前記計算された類似度が所定の値を超えたとき、前記プログラム位置に前記開発ドキュメントを関連付けることを特徴とするソフトウェア開発支援方法。
【請求項２】
前記ソフトウェア開発システムは、出力装置をさらに備え、
前記出力装置は、前記開発ドキュメントを前記プログラム位置と関連付けて出力することを特徴とする請求項１に記載のソフトウェア開発支援方法。
【請求項３】
前記入力装置は、前記プログラム情報の所定のプログラム位置の入力を受け付け、
前記出力装置は、前記入力されたプログラム位置と、前記開発ドキュメントを関連付けて出力することを特徴とする請求項２に記載のソフトウェア開発支援方法。
【請求項４】
前記プログラム情報は、ソースプログラムであることを特徴とする請求項１に記載のソフトウェア開発支援方法。
【請求項５】
前記プロセッサは、
前記ソースプログラムを解析してプログラム構造情報を生成し、
前記選択された類似度観点を満たす前記プログラム構造情報を選択し、
前記選択されたプログラム構造情報に対応する位置を前記プログラム位置とすることを特徴とする請求項４に記載のソフトウェア開発支援方法。
【請求項６】
前記プロセッサは、
前記プログラム位置に記述されたプログラムコメントを抽出し、
前記抽出されたプログラムコメントを自然言語処理し、
前記自然言語処理されたプログラムコメントと前記ドキュメント特性との類似度を計算し、
前記計算された類似度が所定の値を超えたとき、前記プログラムコメントが記述された位置を前記プログラム位置に前記開発ドキュメントを関連付けることを特徴とする請求項５に記載のソフトウェア開発支援方法。
【請求項７】
前記類似度は、前記自然言語処理されたプログラムコメントと、前記ドキュメント特性との間で一致するキーワードの個数、又は、前記自然言語処理されたプログラムコメント及び前記開発ドキュメントのいずれか一方又は両方に含まれる全キーワード数に対して一致するキーワードの数の割合に基づいて、計算されることを特徴とする請求項６に記載のソフトウェア開発支援方法。
【請求項８】
前記類似度観点は、前記入力装置によって外部から入力された規則に基づいて、選択されることを特徴とする請求項１に記載のソフトウェア開発支援方法。
【請求項９】
前記入力装置は、外部から前記開発ドキュメントと明示的に紐付けされたプログラム位置の入力を受け付け、
前記プロセッサは、
前記開発ドキュメントを前記ドキュメント特性に基づいてグループ化し、
前記グループ化された開発ドキュメントに明示的に紐付けされたプログラム位置のプログラム情報を解析してプログラム特性を抽出し、
前記グループ化された開発ドキュメントのドキュメント特性と前記抽出されたプログラム特性とを対応させ、前記プログラム特性を前記類似度観点と見なすことによって、前記ドキュメント特性に基づいて前記類似度観点を選択する規則を生成し、
前記類似度観点は、前記生成された規則に基づいて、選択されることを特徴とする請求項１に記載のソフトウェア開発支援方法。
【請求項１０】
前記類似度観点は、前記ドキュメント特性に対応する条件部、及び前記類似度観点に対応する結論部によって構成される規則に基づいて、選択されることを特徴とする請求項１に記載のソフトウェア開発支援方法。
【請求項１１】
前記プロセッサは、前記プログラム位置に関連付けられた開発ドキュメントを前記類似度が高い順に出力することを特徴とする請求項１に記載のソフトウェア開発支援方法。
【請求項１２】
前記ソフトウェア開発支援システムは、
ネットワークと接続するインターフェースを備え、
前記ネットワークを介してストレージサブシステムと接続し、前記ストレージサブシステムにおいて実行されたハードウェア又はソフトウェア処理のログ情報を取得し、
前記プロセッサは、
前記プログラム情報のプログラム位置に記述された情報、及び前記プログラム位置のプログラムを実行した際に生成された前記ログ情報を自然言語処理し、
前記自然言語処理されたプログラムコメント及び前記ログ情報と、前記ドキュメント特性との類似度を計算し、
前記計算された類似度が所定の値を超えたとき、前記プログラム位置に前記開発ドキュメントを関連付けることを特徴とする請求項１に記載のソフトウェア開発支援方法。
【請求項１３】
プログラム情報に含まれる所定のプログラム位置に開発知識として開発ドキュメントを関連付けるソフトウェア開発支援装置であって、
プロセッサと、前記プロセッサに接続されるメモリと、前記プログラム情報及び前記開発ドキュメントの入力を受け付ける入力装置と、を備え、
前記プロセッサは、
前記開発ドキュメントを自然言語処理することによって、前記開発ドキュメントのドキュメント特性を生成し、
前記生成されたドキュメント特性に基づいて、前記開発ドキュメントと前記プログラム情報とを関連付けるための類似度観点を選択し、
前記選択された類似度観点に基づいて、前記プログラム情報のプログラム位置を選択し、
前記プログラム情報のプログラム位置に記述された情報と前記ドキュメント特性との類似度を計算し、
前記計算された類似度が所定の値を超えたとき、前記プログラム位置に前記開発ドキュメントを関連付けることを特徴とするソフトウェア開発支援装置。
【請求項１４】
プログラム情報に含まれる所定のプログラム位置に開発知識として開発ドキュメントを関連付ける処理を計算機に実行させるソフトウェア開発支援プログラムであって、
前記開発ドキュメントを自然言語処理することによって、前記開発ドキュメントのドキュメント特性を生成する手順と、
前記生成されたドキュメント特性に基づいて、前記開発ドキュメントと前記プログラム情報とを関連付けるための類似度観点を選択する手順と、
前記選択された類似度観点に基づいて、前記プログラム情報のプログラム位置を選択する手順と、
前記プログラム情報のプログラム位置に記述された情報と前記ドキュメント特性との類似度を計算する手順と、
前記計算された類似度が所定の値を超えたとき、前記プログラム位置に前記開発ドキュメントを関連付ける手順と、を計算機に実行させることを特徴とするソフトウェア開発支援プログラム。
【請求項１５】
ホスト計算機と、ネットワークを介して前記ホスト計算機によって読み書きされるデータを格納するストレージ装置と、前記ストレージ装置と前記ネットワークを介して接続され、前記ホスト計算機で実行されるプログラムに含まれる所定のプログラム位置に開発知識として開発ドキュメントを関連付けて、開発を支援するソフトウェア開発支援装置と、を含む計算機システムであって、
前記ストレージ装置は、前記ネットワークに接続される第１のインターフェースと、前記第１のインターフェースに接続される第１のプロセッサと、前記第１のプロセッサに接続される第１のメモリと、を備え、
前記第１のプロセッサは、前記ホスト計算機からの要求に基づいて実行された処理のログ情報を記録し、
前記ソフトウェア開発支援装置は、前記ネットワークに接続される第２のインターフェースと、前記第２のインターフェースに接続される第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記プログラム情報及び前記開発ドキュメントの入力を受け付ける入力装置と、を備え、
前記第２のプロセッサは、
前記ストレージ装置に記録されたハードウェア又はソフトウェア処理のログ情報を取得し、
前記開発ドキュメントを自然言語処理することによって、前記開発ドキュメントのドキュメント特性を生成し、
前記生成されたドキュメント特性に基づいて、前記開発ドキュメントと、前記プログラム情報又は前記ログ情報とを関連付けるための類似度観点を選択し、
前記選択された類似度観点に基づいて、前記プログラム情報のプログラム位置を選択し、
前記プログラム情報のプログラム位置に記述された情報、及び前記プログラム位置のプログラムを実行した際に生成された前記ログ情報と、前記ドキュメント特性との類似度を計算し、
前記計算された類似度が所定の値を超えたとき、前記プログラム情報のプログラム位置に前記開発ドキュメントを関連付けることを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの設計、開発及び保守を支援する技術に関する。
【背景技術】
【０００２】
ソフトウェア開発の現場において、既存のプログラムに対して仕様を変更及び追加することが広く行われている。その際、当該プログラムに関する十分な参考資料が付随していない場合にも、当該プログラムの動作を迅速に理解し、変更による有害な副作用がないことを容易に確認するためのプログラム分析技術が開示されている。
【０００３】
例えば、特許文献１に開示された技術では、まず、ソースプログラムを構文解析し、実行経路に沿ってプログラム中の構文を探索することによって、変数、定数及びデータファイル間の代入又は比較などの関係を抽出する。そして、抽出した各変数に対し、当該変数の設定箇所を求め、同一変数であっても値の設定箇所ごとに区別して関係を検索することによって、変数及びファイルの代入などの関係を使った変数の影響分析における分析精度の劣化を避けている。
【０００４】
また、半導体の生産における品質管理において、新製品の早期立ち上げ、新製造ラインの早期稼動、量産の高歩留まり維持などを目的として、過去事例データベースから効率的に過去事例情報を検索し、不良解析、原因究明及び原因対策に活用する技術がある。
【０００５】
例えば、特許文献２に開示された技術では、テキストデータ、画像データ及びマップデータの付帯情報である特徴量をキーワードとして過去事例データベースを検索することによって、すべての情報を検査することなく、検査結果データと一致度の高い過去事例情報を過去事例データベースから取得することができる。
【特許文献１】特開２００１−１４２６８８号公報
【特許文献２】特開平１０−２０９２３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１においては、既存プログラムの仕様を変更又は追加する際に、過去の設計、開発及び保守時に蓄積された開発知識を効率よく活用することができないという問題点があった。
【０００７】
また、特許文献２においては、不良の原因元に関する過去事例情報しか取得できないという問題点があった。
【０００８】
本発明の目的は、不良の因果関係、モジュール結合度、ハードウェアとソフトウェアとの協調動作といった様々な関係性を示唆するプログラム構造、機能類似性及び開発履歴等と関連度の高い開発ドキュメントを特定することにある。
【０００９】
さらに、前述のプログラム構造、機能類似性及び開発履歴等と関連するプログラム位置を特定し、当該プログラム位置と前述の開発ドキュメントを関連付けて出力することによって、ソフトウェア及びシステムの開発者に前述の開発ドキュメントを効率的に参照させることにある。
【課題を解決するための手段】
【００１０】
本発明の代表的な一形態では、ソフトウェア開発支援システムにおいて、入力されたプログラム情報の所定のプログラム位置に開発知識として開発ドキュメントを関連付けるソフトウェア開発支援方法であって、前記ソフトウェア開発システムは、プロセッサと、前記プロセッサに接続されるメモリと、前記プログラム情報及び前記開発ドキュメントの入力を受け付ける入力装置と、前記入力されたプログラム情報及び前記開発ドキュメントを格納する記憶装置と、を備え、前記プロセッサは、前記開発ドキュメントを自然言語処理することによって、前記開発ドキュメントのドキュメント特性を生成し、前記生成されたドキュメント特性に基づいて、前記開発ドキュメントと前記プログラム情報とを関連付けるための類似度観点を選択し、前記選択された類似度観点に基づいて、前記プログラム情報のプログラム位置を選択し、前記プログラム情報のプログラム位置に記述された情報と前記ドキュメント特性との類似度を計算し、前記計算された類似度が所定の値を超えたとき、前記プログラム位置に前記開発ドキュメントを関連付ける。
【発明の効果】
【００１１】
本発明の一形態によれば、ソフトウェア及びシステムの開発者がプログラム論理構造を参照するとき、当該プログラム論理構造と関連度の高い開発知識も併せて参照することが可能となる。
【発明を実施するための最良の形態】
【００１２】
本発明は、不良の因果関係及びモジュール結合度、ハードウェアとソフトウェアとの協調動作等を示唆するプログラム構造、機能類似性、開発履歴等の情報と関連度の高い開発ドキュメントを特定するという目的を有する。本発明は、（１）開発ドキュメントのドキュメント特性に応じて適切な類似度観点を選択し、（２）当該類似度観点に基づいて開発ドキュメントとの類似度計算を行うべきプログラム位置を絞り込み、（３）当該プログラム位置のプログラムコメントと開発ドキュメントの類似度を計算することによって、所期の目的を実現する。以下、具体的な実施形態について説明する。
【００１３】
（第１の実施形態）
図１は、第１の実施形態のソフトウェア開発支援システム１００の構成図である。
【００１４】
ソフトウェア開発支援システム１００は、ＣＰＵ１０１、メモリ１０２、及び外部インターフェース１１０を備える。ＣＰＵ１０１、メモリ１０２、及び外部インターフェース１１０は、バス１２２を介して相互に接続される。また、外部インターフェース１１０は、入力装置１１１、出力装置１１２、外部記憶装置１１３及び通信装置１２１と接続される。
【００１５】
入力装置１１１は、利用者がソフトウェア開発支援システム１００に情報を入力するための装置である。また、入力装置１１１は、ソースプログラム及び開発ドキュメントの入力を受け付ける機能、及び処理プログラムの実行指示又はパラメータなどの入力を受け付ける機能を有する。出力装置１１２は、例えば、ソースプログラムと開発ドキュメントとを関連付けた結果を表示し、具体的にはディスプレイなどである。
【００１６】
外部記憶装置１１３は、処理プログラムとして、プログラム構造解析部１０３、プログラムコメント抽出部１０４、開発知識体系生成部１０５、及び開発知識体系検索部１０９を保持する。開発知識体系生成部１０５は、自然言語処理部１０６、類似度観点選択部１０７、及び類似度計算部１０８を含む。以下、すべての処理プログラムは、実行時にメモリ１０２に読み込まれ、ＣＰＵ１０１によって実行されるものとする。
【００１７】
また、外部記憶装置１１３は、ソースプログラム記憶部１１４、開発ドキュメント記憶部１１７、辞書情報記憶部１１８、及び類似度観点ルール記憶部１１９を含む。
【００１８】
ソースプログラム記憶部１１４は、入力装置１１１を介して外部から入力されたソースプログラムを格納する。ソースプログラムとは、人間がプログラミング言語を用いて記述したソフトウェアの設計図である。ソースプログラムは、そのままでは計算機上で実行することはできず、コンパイラなどのソフトウェアによってオブジェクトコード(ネイティブコード)と呼ばれるコンピュータに理解できる形式に変換され、実行される。
【００１９】
開発ドキュメント記憶部１１７は、入力装置１１１を介して外部から入力された開発ドキュメントを格納する。開発ドキュメントとは、例えば不良報告書、仕様書、及び議事録などのソフトウェア及びシステムの開発に付随して作成されるドキュメント形式の成果物である。開発ドキュメントには、非定型のドキュメントのほかに、章立て及び項目がテンプレート化された定型ドキュメント、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書などの構造化ドキュメントも含むものとする。定型ドキュメントの具体例を図２に示す。
【００２０】
図２は、第１の実施形態の定型ドキュメントの開発ドキュメントの一例を示す図である。図２に示す開発ドキュメントは、過去に発生した不具合の現象及び原因、対策などを記載した不良報告書である。
【００２１】
図２に示す不良報告書は、項目と項目に対応する内容によって構成されている。項目には、「タイトル」、「現象」、「原因」、「対策方法」、「再発防止策」が挙げられている。このように、項目と項目に対応する内容に含まれるキーワードなどを利用して、プログラム情報と関連付ける。
【００２２】
辞書情報記憶部１１８は、入力装置１１１を介して外部から入力された辞書情報を格納する。辞書情報とは、例えば類語辞書、構文辞書、又はシソーラス（言葉を文字ではなく意味で整理した辞書）等を電子化した情報であって、自然言語処理を支援するための知識体系である。
【００２３】
類似度観点ルール記憶部１１９は、入力装置１１１を介して外部から入力された類似度観点ルールを格納する。
【００２４】
プログラム情報と開発ドキュメントとを関連付けるとき、両者の関係は、様々な観点で比較される。類似度観点とは、プログラム情報と開発ドキュメントとを関連付けるために着目する観点であって、不良の因果関係、モジュール結合度、ハードウェアとソフトウェアとの協調動作などを示唆するプログラム構造、機能類似性、開発履歴などが挙げられる。具体的には、開発ドキュメントが特定の不良について記載されたものであれば、当該不良を発生させやすい「プログラム構造」を類似度観点とすることができる。また、当該不良が発生する処理と類似する機能を有する処理が存在すれば、「機能類似性」を類似度観点として、特定の不良について記載された開発ドキュメントを当該類似する機能を有する処理に関連付けることができる。
【００２５】
また、類似度とは、ある類似度観点において、プログラム情報で記述された内容と、開発ドキュメントに記述された内容とが類似する程度を数値化したものである。例えば、類似度観点が「不良の因果関係」であれば、プログラム情報にて定義される処理の構造と、開発ドキュメントに記述された不良原因箇所の処理構造とが類似する程度を数値化したものとなる。
【００２６】
また、類似度観点ルールとは、開発ドキュメントと関連度の高い類似度観点を選択するための指標である。類似度観点ルールは、開発ドキュメントのドキュメント特性（例えばキーワードの内容、出現位置又は出現分布など）と類似度観点との関連付けを、例えば、If-Thenルールで表現したものである。If-Thenルールは、条件部と結論部によって構成され、開発ドキュメントのドキュメント特性が条件部を満たすならば、結論部の類似度観点と開発ドキュメントの関連度が十分に高いとみなすルールである。類似度観点ルールの詳細は、図４を用いて後述する。
【００２７】
さらに、外部記憶装置１１３は、プログラム構造情報記憶部１１５及びプログラムコメント記憶部１１６を含む。プログラム構造解析部１０３は、ソースプログラム記憶部１１４から読み出したソースプログラムの構造を解析し、結果をプログラム構造情報記憶部１１５に格納する。プログラムの構造情報とは、プログラムに含まれる関数及び変数の定義位置、関数間の呼び出し関係、変数の代入／参照関係などを可視化し、ソフトウェア及びシステムの開発者がプログラムの論理構造を理解することを支援するための情報である。
【００２８】
プログラムコメント抽出部１０４は、ソースプログラム記憶部１１４から読み出したソースプログラムからプログラムコメントを抽出し、外部記憶装置１１３のプログラムコメント記憶部１１６に格納する。プログラムコメントとは、ソースプログラム内に実行される処理を記述された構文とは別に、プログラム内容を説明する目的で記載されたメモ情報である。プログラムコメントは、一般的に、プログラミング言語固有の識別子によって識別される。例えば、Ｊａｖａ（登録商標）言語では、「//」から改行までの間と、「/*」から「*/」までの間がプログラムコメントとして解釈される。
【００２９】
自然言語処理部１０６は、辞書情報記憶部１１８から読み出した辞書情報を必要に応じて参照し、プログラムコメント記憶部１１６及び開発ドキュメント記憶部１１７から読み出されたプログラムコメント及び開発ドキュメントを自然言語処理する。自然言語処理とは、コンピュータに自然言語を処理又は理解させるための技術である。例えば、日本語を処理するための基礎技術として、形態素解析、構文解析、語義の曖昧性解消、照応解析などがある。
【００３０】
類似度観点選択部１０７は、開発ドキュメントの自然言語処理結果に対して、類似度観点ルール記憶部１１９から読み出した類似度観点選択ルールを適用し、開発ドキュメントとの関連度が所定の値を超える類似度観点を選択する。
【００３１】
類似度計算部１０８は、選択された類似度観点と、プログラム構造情報記憶部１１５から読み出したプログラム構造情報とを比較し、選択された類似度観点に適合するプログラム位置を選択する。プログラム位置とは、主として、処理が記述されたソースプログラム上の位置であって、ソースプログラムに対応するプログラム情報（例えば、フローチャートなどの設計書）の位置であってもよい。
【００３２】
類似度観点に適合するプログラム位置とは、例えば、類似度観点が特定の「グローバルテーブルの共有」であれば、当該グローバルテーブルを共有しているすべての位置となる。同様に、選択された類似度観点に応じて、インターフェースを共有しているすべての位置、親子関数の互いの定義位置、タイミング判定条件が類似しているすべての位置、カウンタリセット条件が類似しているすべての位置、同一時期に仕様を変更したすべての位置などが類似度観点に適合するプログラム位置となる。
【００３３】
また、類似度計算部１０８は、選択されたプログラム位置のプログラムコメントと開発ドキュメントの類似度を計算する。また、プログラムコメントとの類似度が所定の値を超える開発ドキュメントを、プログラムコメントが記述されたプログラム位置の開発知識とみなし、外部記憶装置１１３の開発知識体系記憶部１２０に書き込む。
【００３４】
開発知識体系検索部１０９は、選択されたプログラム位置の開発知識に該当する開発ドキュメントを、開発知識体系記憶部１２０から検索し、当該プログラム位置と関連付けて出力装置１１２から出力する。
【００３５】
次に、ソフトウェア開発支援システム１００を構成する各部の動作について説明する。
【００３６】
図３は、第１の実施形態のソースプログラムなどのプログラム情報と開発ドキュメントとを関連付ける手順を示すフローチャートである。本処理は、ソフトウェア開発支援システム１００のバックエンドで実行される。
【００３７】
ソフトウェア開発支援システム１００は、まず、入力装置１１１からソースプログラムの入力を受け付ける（ステップ３００）。入力されたソースプログラムは、ソースプログラム記憶部１１４に格納される。このとき、ソースプログラムではなく、プログラム仕様書などのプログラム構造情報を入力するようにしてもよい。プログラム構造情報を入力した場合には、後述するプログラム構造の解析処理を実行しなくてもよい。
【００３８】
次に、プログラム構造解析部１０３は、ソースプログラム記憶部１１４に格納されたソースプログラムを読み出し、プログラムの構造を解析してプログラム構造情報を生成する（ステップ３０１）。生成されたプログラム構造情報は、プログラム構造情報記憶部１１５に格納される。
【００３９】
プログラムコメント抽出部１０４は、ソースプログラム記憶部１１４に格納されたソースプログラムを読み出し、ソースプログラムからプログラムコメントを抽出する（ステップ３０２）。抽出されたプログラムコメントは、プログラムコメント記憶部１１６に格納される。
【００４０】
続いて、ソフトウェア開発支援システム１００は、入力装置１１１から辞書情報の入力を受け付ける（ステップ３０３）。入力された辞書情報は、辞書情報記憶部１１８に格納される。
【００４１】
さらに、自然言語処理部１０６は、プログラムコメント記憶部１１６及び辞書情報記憶部１１８からプログラムコメント及び辞書情報を読み出し、必要に応じて辞書情報を参照しながら、プログラムコメントを自然言語処理する（ステップ３０４）。自然言語処理されたプログラムコメントは、プログラムコメント記憶部１１６に格納される。
【００４２】
ソフトウェア開発支援システム１００は、入力装置１１１から類似度観点ルールの入力を受け付ける（ステップ３０５）。入力された類似度観点ルールは、類似度観点ルール記憶部１１９に格納される。
【００４３】
ソフトウェア開発支援システム１００は、入力装置１１１から開発ドキュメントの入力を受け付ける（ステップ３０６）。入力された開発ドキュメントは、開発ドキュメント記憶部１１７に格納される。
【００４４】
自然言語処理部１０６は、開発ドキュメント記憶部１１７及び辞書情報記憶部１１８から開発ドキュメント及び辞書情報を読み出し、必要に応じて辞書情報を参照しながら開発ドキュメントを自然言語処理する（ステップ３０７）。自然言語処理した開発ドキュメントは、開発ドキュメント記憶部１１７に格納される。
【００４５】
続いて、類似度観点選択部１０７は、開発ドキュメントと関連度が高い類似度観点を選択する（ステップ３０８）。詳細には、類似度観点選択部１０７は、まず、開発ドキュメント記憶部１１７及び類似度観点ルール記憶部１１９から開発ドキュメントの自然言語処理結果及び類似度観点ルールを読み出す。さらに、開発ドキュメントの自然言語処理結果が類似度観点ルールの条件部を満たすルールを抽出し、当該ルールの結論部を開発ドキュメントとの関連度が所定の値を超える類似度観点として選択する。そして、類似度観点選択部１０７は、選択された類似度観点を保持する。
【００４６】
ここで、類似度観点ルールについて、図４を用いて具体的に説明し、具体的に類似度観点を選択する手順について説明する。
【００４７】
図４は、第１の実施形態の類似度観点ルールの具体例を示す表である。第１の実施形態の類似度観点ルールは、前述したIf-Thenルールが採用され、条件部５００及び結論部５０１によって構成される。
【００４８】
条件部５００は、データ／項目５０２とキーワード５０３とを含み、開発ドキュメントのドキュメント特性を格納する。開発ドキュメントは、自然言語処理されることによって、データ又は項目と対応するキーワードが抽出される。そこで、類似度観点選択部１０７は、開発ドキュメントから抽出されたデータ又は項目及びキーワードを、条件部５００に含まれるデータ／項目５０２及びキーワード５０３と比較して、結論部５０１を選択する。
【００４９】
結論部５０１は、大分類５０４と小分類５０５とを含み、類似度観点を格納する。結論部５０１は、データ／項目５０２及びキーワード５０３に格納された情報と関連する類似度観点を大分類５０４及び小分類５０５に分類して格納する。
【００５０】
具体的に類似度観点ルールのレコード５０６を参照すると、データ／項目５０２には「指定なし」、キーワード５０３には「構成情報  ａｎｄ  回復失敗」と登録されている。データ／項目５０２に値が指定されていないため、自然言語処理された開発ドキュメント全体で「構成情報」及び「回復失敗」というキーワードが含まれていれば、条件部を満たすことを示している。このとき、選択される類似度観点は、大分類５０４が「プログラム構造」、小分類５０５が「グローバルテーブルの共有」となる。すなわち、開発ドキュメントに「構成情報」及び「回復失敗」というキーワードが含まれているとき、「プログラム構造」及び「グローバルテーブルの共有」に関連する処理に着目すべきことがわかる。
【００５１】
ここで、図３のフローチャートの説明に戻る。
【００５２】
類似度計算部１０８は、ステップ３０８の処理で類似度観点選択部１０７によって選択された類似度観点と適合するプログラム構造情報対応するプログラム位置を選択する（ステップ３０９）。具体的には、類似度計算部１０８は、まず、ステップ３０８の処理で類似度観点選択部１０７によって選択された類似度観点を読み出す。さらに、プログラム構造情報記憶部１１５から、プログラム構造情報を読み出す。そして、ステップ３０８の処理で選択された類似度観点とプログラム構造情報と比較し、当該類似度観点に適合するプログラム位置を選択し、結果を保持する。
【００５３】
続いて、類似度計算部１０８は、ステップ３０９の処理で選択されたプログラム位置の内容と、開発ドキュメントとの類似度を計算する（ステップ３１０）。具体的には、類似度計算部１０８は、まず、プログラムコメント記憶部１１６からプログラムコメントの自然言語処理結果を読み出し、さらに、開発ドキュメント記憶部１１７から開発ドキュメントの自然言語処理結果を読み出す。そして、ステップ３０９の処理で選択されたプログラム位置の内容と開発ドキュメントとの類似度を計算し、類似度計算部１０８に保持する。
【００５４】
プログラムコメントと開発ドキュメントとの類似度を計算する方法としては、例えば、プログラムコメントと開発ドキュメントの間で一致するキーワードの個数に基づく方法がある。このとき、一致するキーワードの個数が多い場合などには、キーワードごとに重み付けをしてもよい。また、プログラムコメントと開発ドキュメントの間で一致するキーワードの比率に基づいてもよい。一致するキーワードの比率は、例えば、プログラムコメント及び開発ドキュメントのいずれか一方又は両方に含まれる全キーワード数に対する一致キーワード数の割合とすることができる。
【００５５】
プログラム構造情報と開発ドキュメントとの類似度は、例えば、記述されている構文及び変数に基づいて、計算することができる。
【００５６】
類似度計算部１０８は、ステップ３１０の処理によって計算されたプログラムコメントと開発ドキュメントとの類似度に基づいて、プログラムコメントと開発ドキュメントとの組合わせ情報を開発知識体系記憶部１２０に格納する（ステップ３１１）。具体的には、プログラムコメントと開発ドキュメントとの類似度が所定の値を超えるとき、当該開発ドキュメントをプログラムコメントが記載されているプログラム位置の開発知識とみなす。
【００５７】
ソフトウェア開発支援システム１００は、ステップ３０７からステップ３１１の処理を入力された開発ドキュメントについて繰り返す（ステップ３１２）。入力されたすべての管発ドキュメントについて処理が完了すると（ステップ３１２の結果が「ＮＯ」）、本処理は終了する（ステップ３１３）。
【００５８】
以上がプログラム情報と開発ドキュメントとを関連付けて開発知識として記録する処理の説明である。以下、蓄積された開発知識をプログラム情報と関連付けて出力する処理について説明する。
【００５９】
図５は、第１の実施形態のプログラム位置を指定して関連する開発ドキュメントを表示する手順を示すフローチャートである。
【００６０】
ソフトウェア開発支援システム１００は、入力装置１１１によって、プログラム位置情報の入力を受け付ける（ステップ４００）。入力されたプログラム位置は、開発知識体系検索部１０９に記録される。
【００６１】
開発知識体系検索部１０９は、プログラム位置と開発ドキュメントとの組合せ情報を開発知識体系記憶部１２０から検索し、入力されたプログラム位置に対応する開発ドキュメントを取得する（ステップ４０１）。
【００６２】
開発知識体系検索部１０９は、ステップ４０１の処理で取得された開発ドキュメントを、該当するプログラム位置と関連付けて出力装置１１２から出力し（ステップ４０２）、その後、本処理を終了する（ステップ４０３）。
【００６３】
また、プログラム位置と関連付けして開発ドキュメントを出力する方法としては、例えば、エディタに表示されたソースプログラム内から開発ドキュメントにリンクを張る方法などがある。プログラム位置と関連付けして開発ドキュメントを出力する方法の具体例を図６に示す。
【００６４】
図６は、第１の実施形態のプログラム位置と関連付けして開発ドキュメントを出力する具体例を示す図である。図の左側がソースプログラムを表示及び編集するエディタ画面であり、右側は関連ドキュメントを示している。
【００６５】
図の左側は、ＪＡＶＡ言語で記述されたプログラムを表示している。「//」で開始されるコメント行には、「排他制御ロジックＤ」と記述されている。開発知識体系記憶部１２０には、当該コメント行に対応するプログラム位置と、図の右側に表示された「不良報告書００Ｘ」との組合わせ情報が記録されている。
【００６６】
そこで、開発知識体系検索部１０９は、エディタ上のコメント行を選択すると、図５に示した処理が実行され、関連する開発ドキュメントとして「不良報告書００Ｘ」を検索し、図６に示すように表示する。
【００６７】
「不良報告書００Ｘ」には、「対策方法」に「排他制御ロジックＤ」が含まれているため、「不良報告書００Ｘ」を自然言語処理したとき、キーワードとして「排他制御ロジックＤ」が抽出される。そこで、ソースプログラムにコメントとして「排他制御ロジックＤ」が記述されていると、当該プログラム位置と類似度が高い開発ドキュメントとして「不良報告書００Ｘ」が検索されることとなる。
【００６８】
第１の実施形態によれば、ソフトウェア及びシステムの開発者がプログラム論理構造を確認するとき、当該プログラム論理構造と関連する開発知識も併せて確認することが可能となる。これによって、プログラム論理構造から自明又は推定可能な不良の原因元と影響先、仕様の変更元と影響先、仕様の提供元と利用先に該当する各々のソフトウェア部位に対して、各組合せの関係性に起因する問題点及び注意点を取り扱った開発ドキュメントを開発知識として関連付けすることが可能となる。
【００６９】
また、第１の実施形態によれば、ソフトウェア及びシステムの設計、開発及び保守時に、不良の原因元と影響先に対して、双方の関係性に起因する問題点及び注意点について言及した開発知識を提供することが可能となる。
【００７０】
さらに、第１の実施形態によれば、仕様の変更元と影響先、又は仕様の提供元と利用先に対して、双方の関係性に起因する問題点及び注意点について言及した開発知識を提供することが可能となる。
【００７１】
また、第１の実施形態によれば、ハードウェアの仕様変更及び不良による影響を受けやすいソフトウェア部位に対して、双方の関係性に起因する問題点及び注意点について言及した開発知識を提供することが可能となる。
【００７２】
（第２の実施形態）
第１の実施形態では、入力装置１１１から入力された類似度観点ルールを用いていたが、第２の実施形態では、類似度観点ルールを入力された開発ドキュメント及びソースプログラムに基づいて、自動的に生成する。また、類似度観点選択部１０７が開発ドキュメント記憶部１１７及び類似度観点ルール記憶部１１９から開発ドキュメントの自然言語処理結果及び類似度観点ルールを読み出す前に、ソフトウェア開発支援システム１００の内部で類似度観点ルールを生成する。以下、第１の実施形態と共通する処理については説明を省略し、相違点のみについて説明する。
【００７３】
図７は、第２の実施形態のソフトウェア開発支援システム１００の構成図である。
【００７４】
第２の実施形態のソフトウェア開発支援システム１００は、第１の実施形態の構成に加え、外部記憶装置１１３に類似度観点ルール生成部１２３、ドキュメント特性情報記憶部１２４、ドキュメント・グループ情報記憶部１２５、共通プログラム特性情報記憶部１２６、及びテーブル結合結果記憶部１２７を備える。
【００７５】
類似度観点ルール生成部１２３は、類似度観点ルールを生成する手順を定義したプログラムである。類似度観点ルール生成部１２３は、ドキュメント特性情報記憶部１２４、ドキュメント・グループ情報記憶部１２５、共通プログラム特性情報記憶部１２６、及びテーブル結合結果記憶部１２７に格納する情報を生成する。図１２にて、類似度観点ルールを生成する具体的な手順について説明する。
【００７６】
ドキュメント特性情報記憶部１２４は、開発ドキュメントを自然言語処理することによって抽出されたキーワード等のドキュメント特性情報を格納する。ドキュメント特性情報とは、例えば、キーワードの内容、出現位置、又は出現分布などである。図８にて、ドキュメント特性情報の具体例について説明する。
【００７７】
ドキュメント・グループ情報記憶部１２５は、ドキュメント特性情報記憶部１２４に格納されたドキュメント特性情報に基づいて開発ドキュメントをグループ化した情報を格納する。図９にて、開発ドキュメントのグループ化情報の具体例について説明する。
【００７８】
共通プログラム特性情報記憶部１２６は、ドキュメント・グループ情報記憶部１２５に格納されたグループ化情報に基づいて、各グループに属する開発ドキュメントに明示的に紐付けされたプログラム位置のプログラム情報を解析してプログラム特性情報を抽出し、開発ドキュメント・グループと関連度の高いプログラム特性情報として格納する。図１０にて、開発ドキュメント・グループと関連度の高いプログラム特性情報の具体例について説明する。
【００７９】
テーブル結合結果記憶部１２７は、開発ドキュメントのドキュメント特性情報、グループ化情報、及び前記グループ化された開発ドキュメントと関連度の高いプログラム特性情報を結合し、ドキュメント特性情報とプログラム特性情報の組合せの情報を格納する。図１１にて、ドキュメント特性情報とプログラム特性情報の組合せの情報の具体例について説明する。
【００８０】
図８は、第２の実施形態のドキュメント特性情報記憶部１２４に格納されたドキュメント特性情報の具体例を示す図である。ドキュメント特性情報は、データ／項目、キーワード、及び出願頻度を含む。具体的には、図８を参照すると、「不良報告書００１」には、ドキュメント全体として「構成情報」及び「回復失敗」というキーワードが５回出現していることがわかる。
【００８１】
図９は、第２の実施形態の開発ドキュメントのグループ化情報の具体例を示す図である。ドキュメントのグループ化情報は、開発ドキュメント・グループの名称と、当該開発ドキュメント・グループを構成する開発ドキュメントの名称とを含む。具体的には、図９を参照すると、「グループＡ」には、「不良報告書００１」、「不良報告書００５」及び「不良報告書０３６」が含まれる。
【００８２】
図１０は、第２の実施形態の開発ドキュメント・グループと関連度の高いプログラム特性情報との対応情報の具体例を示す図である。プログラム特性情報は、大分類と小分類によって構成されている。具体的には、図１０を参照すると、「グループＡ」には、プログラム特性情報として、大分類「プログラム構造」、小分類「グローバルテーブルの共有」が対応する。
【００８３】
図１１は、第２の実施形態のドキュメント特性情報とプログラム特性情報との組合せ情報の具体例を示す図である。ドキュメント特性情報とプログラム特性情報との組合せ情報は、図８〜図１０に示した情報を組合せることによって生成する。具体的には、図８のドキュメント特性情報の「開発ドキュメント」と、図９の開発ドキュメントのグループ化情報の「開発ドキュメント」とを対応させる。さらに、図９の開発ドキュメントのグループ化情報の「開発ドキュメント・グループ」と、図１０の開発ドキュメント・グループとプログラム特性情報との対応情報の「開発ドキュメント・グループ」とを対応させて結合する。その結果、例えば、開発ドキュメント「不良報告書００１」は、大分類「プログラム構造」及び小分類「グローバルテーブルの共有」のプログラム特性情報に対応する。
【００８４】
図１２は、第２の実施形態の類似度観点ルールを生成する手順を説明するフローチャートである。なお、ソースプログラムなどのプログラム情報と開発ドキュメントとを関連付ける手順は、図３に示した第１の実施形態の手順と同じである。本処理では、前述のように、入力された類似度観点ルールを読み出す替わりに、図３のステップ３０８の処理を実行する前に類似度観点ルールを生成する。以下、類似度観点ルールを生成する手順を説明する。
【００８５】
類似度観点ルール生成部１２３は、まず、開発ドキュメント記憶部１１７から開発ドキュメント１件分の自然言語処理結果を読み出し、開発ドキュメントのドキュメント特性情報を生成する（ステップ１２００）。抽出されたドキュメント特性情報は、外部記憶装置１１３のドキュメント特性情報記憶部１２４に格納される。
【００８６】
ドキュメント特性情報を生成する方法としては、例えば、単一の開発ドキュメント内における出現頻度は高いが開発ドキュメント全体で平均した出現頻度は低いキーワードを抽出、又は、開発ドキュメント全体において特定の項目内でのみ出現頻度が高いキーワードを抽出して生成する。
【００８７】
類似度観点ルール生成部１２３は、開発ドキュメント記憶部１１７に格納されたすべての開発ドキュメントの中で、ドキュメント特性情報が生成されていない開発ドキュメントが存在するか否かを判定する（ステップ１２０１）。類似度観点ルール生成部１２３は、開発ドキュメント記憶部１１７に未処理の開発ドキュメントがある場合には（ステップ１２０１の結果が「Ｙｅｓ」）、ステップ１２００の処理を繰り返す。すべての開発ドキュメントについて、ドキュメント特性情報が生成された場合には（ステップ１２０１の結果が「Ｎｏ」）、ステップ１２０２の処理を実行する。
【００８８】
類似度観点ルール生成部１２３は、開発ドキュメントをグループ化する（ステップ１２０２）。具体的には、ドキュメント特性情報記憶部１２４からすべての開発ドキュメントのドキュメント特性情報を読み出し、当該ドキュメント特性情報を用いて開発ドキュメント間の類似度を計算する。そして、当該類似度が所定の値を超える開発ドキュメントを抽出してグループ化し、開発ドキュメントのグループ化情報としてドキュメント・グループ情報記憶部１２５に格納する。
【００８９】
ここで、開発ドキュメント間の類似度を計算する方法としては、例えば双方のドキュメント特性情報で一致するキーワード（重み付け可）の個数又は比率（双方のドキュメント特性情報に含まれる全キーワード数に対する一致キーワード数の割合）を調べる方法などがある。また、開発ドキュメントをグループ化する際には、単一の開発ドキュメントが複数のグループに属してもよい。
【００９０】
類似度観点ルール生成部１２３は、開発ドキュメント・グループと関連度の高いプログラム特性情報を生成する（ステップ１２０３）。具体的には、ドキュメント・グループ情報記憶部１２５から１件分のグループ化情報を読み出す。そして、当該グループを構成する一つ以上の開発ドキュメントと明示的に紐付けされたすべてのプログラム位置のプログラム構造情報、プログラムコメント、開発履歴などの情報を収集し、当該収集情報に共通するプログラム特性情報を抽出し、開発ドキュメント・グループと関連度の高いプログラム特性情報として共通プログラム特性情報記憶部１２６に書き込む。
【００９１】
ここで、開発ドキュメントと明示的に紐付けされたプログラム位置の情報としては、例えば、不良報告書に記載された不良発生場所、又は仕様書に記載された実装場所などがある。また、多くのプログラム位置に共通するプログラム特性情報を抽出する方法としては、例えば、所定の個数又は比率を超えるプログラム位置に共通するプログラム特性を抽出する方法などがある。
【００９２】
類似度観点ルール生成部１２３は、ドキュメント・グループ情報記憶部１２５に格納されたすべての開発ドキュメント・グループについて、関連度の高いプログラム特性情報が抽出されたか否かを判定する（ステップ１２０４）。未処理の開発ドキュメント・グループが存在する場合には（ステップ１２０４の結果が「ＹＥＳ」）、ステップ１２０３の処理を繰り返す。また、すべての開発ドキュメント・グループについて、関連度の高いプログラム特性情報が抽出された場合にはステップ１２０５の処理を実行する。
【００９３】
類似度観点ルール生成部１２３は、ドキュメント特性とプログラム特性情報の組合せ情報を生成する（ステップ１２０５）。具体的には、ドキュメント特性情報記憶部１２４から開発ドキュメントのドキュメント特性情報を、ドキュメント・グループ情報記憶部１２５から開発ドキュメントのグループ化情報を、共通プログラム特性情報記憶部１２６から開発ドキュメント・グループと関連度の高いプログラム特性情報をそれぞれ読み出す。そして、開発ドキュメントのグループ化情報を結合キーとして、テーブル形式の開発ドキュメントのドキュメント特性情報と、テーブル形式の開発ドキュメント・グループと関連度の高いプログラム特性情報を結合し、ドキュメント特性とプログラム特性情報の組合せ情報としてテーブル結合結果記憶部１２７に書き込む。
【００９４】
最後に、類似度観点ルール生成部１２３は、テーブル結合結果記憶部１２７に格納されたドキュメント特性とプログラム特性情報との組合せ情報から代表的な組合せを選択し、類似度観点ルールとみなして類似度観点ルール記憶部１１９に書き込む（ステップ１２０６）。代表的な組合せ情報を選択する方法としては、例えば所定の個数又は比率を超える組合せ情報を選択する方法などがある。
【００９５】
類似度観点ルール生成部１２３は、その後、類似度観点ルール生成処理を終了する（ステップ１２０７）。そして、ソフトウェア開発支援システム１００は、図３のステップ３０８以降の処理を実行し、開発知識体系を構築する。
【００９６】
第２の実施の形態によれば、類似度観点ルールを入力された開発ドキュメントに基づいて、自動的に生成することによって、類似度観点ルールを作成及び入力する労力を軽減することができる。
【００９７】
また、第２の実施の形態によれば、類似度観点ルール生成時の入力データとなる開発ドキュメント及びソースプログラムの蓄積量が増加するにしたがって精度が向上し、類似度観点ルールの品質が向上することが期待できる。さらに、時間の経過とともに開発ドキュメント及びソースプログラムの特性が変動した場合にも、当該変動内容を類似度観点ルールに自動的に反映させることが可能となる。
【００９８】
（第３の実施形態）
第１及び第２の実施形態では、開発知識体系検索部１０９によって検索された開発ドキュメントをプログラム位置と関連付けて出力装置１１２から出力していたが、第３の実施形態では、プログラム構造情報と関連付けて開発ドキュメントを出力する。
【００９９】
具体的には、図５のフローチャートのステップ４０２の処理において、開発知識体系検索部１０９は、プログラム構造情報記憶部１１５から該当するプログラム位置に対応するプログラム構造情報を読み出す。そして、ステップ４０１の処理で検索された開発ドキュメントを、該当するプログラム位置のプログラム構造情報と関連付けして出力装置１１２から出力する。
【０１００】
プログラム構造情報と関連付けて開発ドキュメントを出力する方法としては、例えば、プログラム構造情報として関数一覧、変数一覧、関数間の呼び出し関係、変数の代入／参照関係などを表示する際に、当該関数及び当該変数の表示部分から開発ドキュメントにリンクを張る方法などがある。
【０１０１】
第３の実施形態によれば、ソフトウェア及びシステムの開発者がプログラム論理構造を確認する際に、当該プログラム論理構造と関連度の高い開発知識も併せて確認することが可能となる。具体的には、例えば、プログラム論理構造から自明又は推定可能な不良の原因元と影響先、仕様の変更元と影響先、仕様の提供元と利用先に該当する各々のソフトウェア部位に対し、各組合せの関係性に起因する問題点や注意点を取り扱った開発ドキュメントを開発知識として関連付けすることが可能となる。
【０１０２】
（第４の実施形態）
第１から第３の実施形態では、開発ドキュメントは、開発知識体系検索部１０９によって、対応するプログラム位置又はプログラム構造情報と関連付けて、出力装置１１２から出力されていた。
【０１０３】
第４の実施形態では、類似度計算部１０８は、図３のステップ３１１の処理において、所定の値を超える類似度を持つプログラム位置と開発ドキュメントに加え、類似度との組合せ情報を開発知識体系記憶部１２０に格納する。
【０１０４】
また、開発知識体系検索部１０９は、図５のステップ４０１の処理において、開発知識体系記憶部１２０からプログラム位置と開発ドキュメントと類似度との組合せ情報を読み出す。さらに、入力されたプログラム位置情報と等しいプログラム位置の開発知識に該当する開発ドキュメントと類似度を検索する。
【０１０５】
さらに、開発知識体系検索部１０９は、ステップ４０２の処理において、ステップ４０１の処理で検索された開発ドキュメントを、該当するプログラム位置又はプログラム構造情報と関連付けて、類似度の高い順に出力装置１１２から出力する。
【０１０６】
第４の実施形態によれば、プログラム位置又はプログラム構造情報と関連付けられた開発ドキュメントの個数が多い場合に、各々の開発ドキュメントの開発知識としての重要性を類似度で代替し、例えば、類似度が所定の値を超える開発ドキュメントのみを確認するなどの開発ドキュメントの優先順位付けが可能となる。
【０１０７】
（第５の実施形態）
第１から第４の実施形態では、ソフトウェア開発支援システムのみの単独構成であったが、第５の実施形態では、ソフトウェア開発支援システム１００に加え、ネットワークを介して接続されたホスト計算機及びストレージサブシステムを含む。
【０１０８】
図１３は、第５の実施形態のソフトウェア開発支援システム１００の構成図である。
【０１０９】
第５の実施形態のシステムは、ソフトウェア開発支援システム１００、ホスト２０９及びストレージサブシステム２１０によって構成される。ソフトウェア開発支援システム１００、ホスト２０９及びストレージサブシステム２１０は、ネットワーク２２１を介して相互に接続される。
【０１１０】
ソフトウェア開発支援システム１００は、図１に示した第１の実施形態の構成と同じであり、同等の機能を有するものとする。なお、外部記憶装置１１３には、ストレージサブシステム２１０で実行された処理のログが格納されるハードウェア／ソフトウェア（Ｈ／Ｓ）ログ記憶部１２８が含まれる。
【０１１１】
ホスト２０９は、ネットワーク２２１を介して、ソフトウェア開発支援システム１００及びストレージサブシステム２１０に接続する。ホスト２０９は、ストレージサブシステム２１０に格納されたリソースにアクセスし、所定の業務処理を実行する。
【０１１２】
ストレージサブシステム２１０は、ＣＰＵ２１１、メモリ２１２、及び外部インターフェース２１６を含む。ＣＰＵ２１１、メモリ２１２、及び外部インターフェース２１６は、バス２２０を介して相互に接続される。外部インターフェース２１６には、外部記憶装置２１７、ハードウェア／ソフトウェアログ記憶装置２１８、及び通信装置２１９が接続される。
【０１１３】
メモリ２１２は、システム制御部２１３、キャッシュ２１４、及びハードウェア／ソフトウェアログ生成部２１５を含む。
【０１１４】
システム制御部２１３は、ホスト２０９から外部記憶装置２１７に対するデータの入出力を制御する。キャッシュ２１４は、ホスト２０９から外部記憶装置２１７に対するデータの入出力を高速化するための一時記憶領域である。
【０１１５】
ハードウェア／ソフトウェアログ生成部２１５は、ストレージサブシステムを構成するハードウェアとソフトウェアの双方に関する正常処理及び異常処理のログを生成し、当該ログをハードウェア／ソフトウェアログ記憶装置２１８に記録する。
【０１１６】
ソフトウェア開発支援システム１００は、ネットワーク２２１を介して、ストレージサブシステム２１０のハードウェア／ソフトウェアログ記憶装置２１８からハードウェア／ソフトウェアログを読み出し、外部記憶装置１１３のハードウェア／ソフトウェアログ記憶部１２８に書き込む。
【０１１７】
第１から第４の実施形態では、自然言語処理部１０６がプログラムコメントを自然言語処理し、結果をプログラムコメント記憶部１１６に書き込んでいた（図３のステップ３０４）。さらに、類似度計算部１０８が選択されたプログラム位置のプログラム内容を説明するプログラムコメントと開発ドキュメントとの類似度を計算していた（図３のステップ３１０）。
【０１１８】
一方、第５の実施形態では、自然言語処理部１０６は、プログラムコメント記憶部１１６からプログラムコメントを読み出し、ハードウェア／ソフトウェアログ記憶部１２８からハードウェア／ソフトウェアログを読み出す。そして、自然言語処理部１０６は、読み出したプログラムコメント及びハードウェア／ソフトウェアログを自然言語処理し、結果をプログラムコメント記憶部１１６及びハードウェア／ソフトウェアログ記憶部１２８にそれぞれ書き込む（図３のステップ３０４）。
【０１１９】
さらに、類似度計算部１０８が保持する選択されたプログラム位置を読み出し、当該プログラム位置のプログラム内容を説明するプログラムコメント及びハードウェア／ソフトウェアログと開発ドキュメントの類似度を計算する（図３のステップ３１０）。
【０１２０】
プログラムコメント及びハードウェア／ソフトウェアログと開発ドキュメントとの類似度を計算する方法としては、例えば、まず、プログラムコメントと開発ドキュメントとの類似度を第１の類似度とする。さらに、選択されたプログラム位置のプログラム処理と明示的に紐付けされたハードウェア／ソフトウェアログと開発ドキュメントとの類似度を第２の類似度とする。そして、第１の類似度と第２の類似度の加重和を計算し、結果をプログラムコメント及びハードウェア／ソフトウェアログと開発ドキュメントの類似度とみなす方法などがある。
【０１２１】
第５の実施形態によれば、プログラム構造情報及びプログラムコメントからソフトウェアに関する開発知識体系を構築できるのみでなく、ハードウェア／ソフトウェアログも対象とすることによって、ハードウェアとソフトウェアの双方に関する開発知識体系を構築することが可能となる。具体的には、例えばハードウェアの仕様変更及び不良による影響を受けやすいソフトウェア部位に対し、双方の関係性に起因する問題点及び注意点を取り扱った開発ドキュメントを開発知識として関連付けることが可能となる。
【０１２２】
本発明は、ソフトウェア及びシステムの設計、開発及び保守の支援用途と同様に、開発ドキュメントの生成を伴うハードウェアの設計、開発及び保守の支援用途にも適用できる。また、第１から第５の実施形態は、コンピュータで読み取り可能なプログラムとして、記憶媒体に保持して利用することが可能である。さらに、コンピュータで読み取り可能なプログラムとして、ネットワークを通じて配布することも可能である。
【図面の簡単な説明】
【０１２３】
【図１】第１の実施形態のソフトウェア開発支援システムの構成図。
【図２】第１の実施形態の定型ドキュメントの開発ドキュメントの一例を示す図。
【図３】第１の実施形態のソースプログラムなどのプログラム情報と開発ドキュメントとを関連付ける手順を示すフローチャート。
【図４】第１の実施形態の類似度観点ルールの具体例を示す図。
【図５】第１の実施形態のプログラム位置を指定して関連する開発ドキュメントを表示する手順を示すフローチャート。
【図６】第１の実施形態のプログラム位置と関連付けして開発ドキュメントを出力する具体例を示す図。
【図７】第２の実施形態のソフトウェア開発支援システムの構成図。
【図８】第２の実施形態のドキュメント特性情報記憶部に格納されたドキュメント特性情報の具体例を示す図。
【図９】第２の実施形態の開発ドキュメントのグループ化情報の具体例を示す図。
【図１０】第２の実施形態の開発ドキュメント・グループと関連度の高いプログラム特性情報との対応情報の具体例を示す図。
【図１１】第２の実施形態のドキュメント特性情報とプログラム特性情報との組合せ情報の具体例を示す図。
【図１２】第２の実施形態の類似度観点ルールを生成する手順を説明するフローチャート。
【図１３】第５の実施形態のソフトウェア開発支援システムの構成図。
【符号の説明】
【０１２４】
１００    ソフトウェア開発支援システム
１０１    ＣＰＵ
１０２    メモリ
１０３    プログラム構造解析部
１０４    プログラムコメント抽出部
１０５    開発知識体系生成部
１０６    自然言語処理部
１０７    類似度観点選択部
１０８    類似度計算部
１０９    開発知識体系検索部
１１０    外部インターフェース
１１１    入力装置
１１２    出力装置
１１３    外部記憶装置
１１４    ソースプログラム記憶部
１１５    プログラム構造情報記憶部
１１６    プログラムコメント記憶部
１１７    開発ドキュメント記憶部
１１８    辞書情報記憶部
１１９    類似度観点ルール記憶部
１２０    開発知識体系記憶部
１２１    通信装置
１２２    バス
２０９    ホスト
２１０    ストレージサブシステム
２１１    ＣＰＵ
２１２    メモリ
２１３    システム制御部
２１４    キャッシュ
２１５    ハードウェア／ソフトウェアログ生成部
２１６    外部インターフェース
２１７    外部記憶装置
２１８    ハードウェア／ソフトウェアログ記憶装置
２１９    通信装置
２２０    バス
２２１    ネットワーク
【図１】
2008117066.tif 000003
【図２】
2008117066.tif 000004
【図３】
2008117066.tif 000005
【図４】
2008117066.tif 000006
【図５】
2008117066.tif 000007
【図６】
2008117066.tif 000008
【図７】
2008117066.tif 000009
【図８】
2008117066.tif 000010
【図９】
2008117066.tif 000011
【図１０】
2008117066.tif 000012
【図１１】
2008117066.tif 000013
【図１２】
2008117066.tif 000014
【図１３】
2008117066.tif 000015