(57)【特許請求の範囲】
【請求項１】
ソフトウェアが有する機能が記述された第１の文字ファイルから、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する第１情報生成部と、
前記ソフトウェアに関連する第２の文字ファイルから名詞を抽出し、抽出した各名詞が前記第２の文字ファイルに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する第２情報生成部と、
所定の機能に関して前記第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記第２の文字ファイルの項目全てを前記第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第２情報を用いて算出する確率算出部と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成部と、
を有し、
前記第２情報生成部は、前記第２の文字ファイルを用いたベイズ学習により前記第２情報を生成し、
前記確率算出部は、前記第１情報と、前記第２情報生成部がベイズ学習により生成した前記第２情報とを用いたベイズ推定により前記確率を算出することを特徴とする機能情報生成装置。
【請求項２】
機能情報生成装置で実行される機能情報生成方法であって、
ソフトウェアが有する機能が記述された第１の文字ファイルから、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する第１情報生成工程と、
前記ソフトウェアに関連する第２の文字ファイルから名詞を抽出し、抽出した各名詞が前記第２の文字ファイルに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する第２情報生成工程と、
所定の機能に関して前記第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記第２の文字ファイルの項目全てを前記第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第２情報を用いて算出する確率算出工程と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成工程と、
を含み、
前記第２情報生成工程は、前記第２の文字ファイルを用いたベイズ学習により前記第２情報を生成し、
前記確率算出工程は、前記第１情報と、前記第２情報生成工程がベイズ学習により生成した前記第２情報とを用いたベイズ推定により前記確率を算出することを特徴とする機能情報生成方法。
【請求項３】
ソフトウェアが有する機能が記述された第１の文字ファイルから、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する第１情報生成ステップと、
前記ソフトウェアに関連する第２の文字ファイルから名詞を抽出し、抽出した各名詞が前記第２の文字ファイルに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する第２情報生成ステップと、
所定の機能に関して前記第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記第２の文字ファイルの項目全てを前記第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第２情報を用いて算出する確率算出ステップと、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成ステップと、
をコンピュータに実行させ、
前記第２情報生成ステップは、前記第２の文字ファイルを用いたベイズ学習により前記第２情報を生成し、
前記確率算出ステップは、前記第１情報と、前記第２情報生成ステップがベイズ学習により生成した前記第２情報とを用いたベイズ推定により前記確率を算出することを特徴とする機能情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機能情報生成装置、機能情報生成方法及び機能情報生成プログラムに関する。
【背景技術】
【０００２】
従来、現時点で稼動しているシステムで利用されているソフトウェアの機能をユーザの要求に従って変更する場合がある。かかる場合には、ソフトウェア開発者は、現時点で利用されているソフトウェアが開発された際に作成されたトレーサビリティマトリクス（Traceability  Matrix）を参照することにより、変更すべきソースコードを特定する。
【０００３】
トレーサビリティマトリクスは、要件、機能及びソースコードなどが対応付けられた表である。例えば、機能設計書中のどの機能がソースコード中のどの部分によって実現されているか、或いは、機能設計書に記載された機能と要件定義書に記載された要件との対応関係などが示されている。なお、ここでいう要件とは、ユーザによって所望されるシステムやソフトウェアの仕様である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Jay Xiong, Jonathan Xiong: “The DP&T Model: The Defect Prevention and Traceability - Driven Model for Software Engineering”, Proceedings of the International Conference on Software Engineering Research and Practice & Conference on Programming Languages and Compilers (SERP 2006), pp.24-30”
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、ユーザの要求に柔軟に対応することができない場合があった。具体的には、トレーサビリティマトリクスは、ソフトウェアを開発する際に、ソフトウェア開発者が要件、機能及びソースコードなどを手作業で対応付けることにより作成される。従って、トレーサビリティマトリクスを作成するための作業コストが高いため、要件が変わりやすいプロジェクト以外においては、トレーサビリティマトリクスが作成されることが少ない。その結果、例えば、トレーサビリティマトリクスが作成されていないソフトウェアに対してユーザから機能の変更要求があった場合などに柔軟に対応することができない。
【０００６】
そこで、本願に開示する技術は、上述した従来技術の問題に鑑みてなされたものであって、ユーザの要求に柔軟に対応することを可能とする機能情報生成装置、機能情報生成方法及び機能情報生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、開示の装置は、ソフトウェアが有する機能が記述された第１の文字ファイルから、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する第１情報生成部と、前記ソフトウェアに関連する第２の文字ファイルから名詞を抽出し、抽出した各名詞が前記第２の文字ファイルに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する第２情報生成部と、所定の機能に関して前記第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記第２の文字ファイルの項目全てを前記第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第２情報を用いて算出する確率算出部と、前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成部とを有することを特徴とする。
【発明の効果】
【０００８】
開示の方法は、ユーザの要求に柔軟に対応することを可能にする。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例１に係る機能情報生成装置の構成の一例を説明するための図である。
【図２】図２は、トレーサビリティマトリクスの例１を説明するための図である。
【図３】図３は、トレーサビリティマトリクスの例２を説明するための図である。
【図４】図４は、実施例１に係る成果物テキスト記憶部によって記憶される情報の一例を示す図である。
【図５】図５は、実施例１に係る機能ファイル記憶部によって記憶される機能ファイルの一例を説明するための図である。
【図６】図６は、実施例１に係る確率情報記憶部によって記憶される確率情報の一例を説明するための図である。
【図７】図７は、実施例１に係る結果ファイル記憶部によって記憶される結果ファイルの一例を説明するための図である。
【図８】図８は、実施例１に係るトレーサビリティマトリクス記憶部によって記憶されるトレーサビリティマトリクスの一例を説明するための図である。
【図９】図９は、実施例１に係る機能ファイル生成部による処理の一例を模式的に示す図である。
【図１０】図１０は、実施例１に係る確率情報生成部による処理の一例を模式的に示す図である。
【図１１】図１１は、実施例１に係る結果ファイル生成部による処理の一例を模式的に示す図である。
【図１２】図１２は、実施例１に係るトレーサビリティマトリクス生成部の処理の一例を説明するための図である。
【図１３】図１３は、実施例１に係る機能情報生成装置のユースケースを説明するための図である。
【図１４】図１４は、実施例１に係る機能情報生成装置によるトレーサビリティマトリクス生成処理の手順を示すフローチャートである。
【図１５】図１５は、実施例１に係る機能情報生成装置による処理の手順を示すシーケンス図である。
【図１６】図１６は、実施例２に係る機能情報生成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本願の開示する機能情報生成装置、機能情報生成方法及び機能情報生成プログラムの実施例を詳細に説明する。なお、本願の開示する機能情報生成装置、機能情報生成方法及び機能情報生成プログラムは、以下の実施例により限定されるものではない。
【実施例１】
【００１１】
［実施例１に係る機能情報生成装置の構成］
実施例１に係る機能情報生成装置の構成について説明する。図１は、実施例１に係る機能情報生成装置１００の構成の一例を説明するための図である。図１に示すように、実施例１に係る機能情報生成装置１００は、入出力制御Ｉ／Ｆ部１０と、入力部２０と、表示部３０と、記憶部４０と、制御部５０とを有している。そして、機能情報生成装置１００は、ソフトウェアの成果物テキストに基づいて、トレーサビリティマトリクスを生成する。なお、機能情報生成装置１００は、例えば、ＰＣ（Personal Computer）、ワークステーション又は機能情報生成用の専用装置である。
【００１２】
ここで、まず、トレーサビリティマトリクスについて説明する。図２は、トレーサビリティマトリクスの例１を説明するための図である。図２においては、ソフトウェアが有する機能と要件とを対応付けたトレーサビリティマトリクスを示している。例えば、トレーサビリティマトリクスは、図２に示すように、要件とモジュール名とが対応付けられる。ここで、要件とは、ユーザによって所望されるシステムやソフトウェアの仕様である。要件としては、例えば、図２に示すように、「機器登録確認」、「会員登録」、「会員登録確認」、「アプリケーションダウンロード」、「利用権入手確認」などが含まれている。また、モジュール名とは、所定の機能を実現するためのプログラム群の名称である。モジュール名としては、例えば、図２に示すように、「所有：２−４−１制御モジュール」、「所有：２−４−２ＤＢアクセス制御」、「所有：２−４−３鍵管理」、「所有：２−４−４ログ管理」、「ＮＩ２−３−１通信管理」、「ＮＩ２−３−２制御モジュール」などが含まれている。
【００１３】
トレーサビリティマトリクスの一例を挙げると、図２に示すように、「要件：アプリケーションダウンロード」において「モジュール名：ＮＩ２−３−１通信管理、機能名：通信初期化機能」、「モジュール名：ＮＩ２−３−１通信管理、機能名：電文送受信機能」の項目にそれぞれ「○」が示されている。上記した情報は、「アプリケーションダウンロード」の仕様を満たすためには、「ＮＩ設計書２−３−１」に示された「通信初期化機能」と「電文送受信機能」とが必要であることを意味する。
【００１４】
また、トレーサビリティマトリクスは、機能と要件とを対応付けたものだけではなく、例えば、機能とソースコードとを対応付けたものも作成される。図３は、トレーサビリティマトリクスの例２を説明するための図である。例えば、トレーサビリティマトリクスは、図３に示すように、モジュール名とクラスとが対応付けられる。ここで、クラスとは、プログラミングにおいてデータと操作手順とをまとめたオブジェクトを定義したものである。
【００１５】
上記したように、トレーサビリティマトリクスは、ソフトウェアの機能と要件、或いは、機能とソースコードとが項目ごとに細分化されて作成される。従って、ソフトウェア開発者が手作業で作成する従来技術では作業コストが高くなるため、トレーサビリティマトリクスは、要件が変更されやすいプロジェクトにおいてのみ作成されることとなる。その結果、例えば、トレーサビリティマトリクスが作成されていないソフトウェアに対してユーザから機能の変更要求があった場合などに柔軟に対応することができない。
【００１６】
そこで、本願の開示する機能情報生成装置１００は、トレーサビリティマトリクスを自動で生成することができ、ユーザの要求に柔軟に対応することを可能にする。なお、以下では、ソフトウェアの機能設計書とソースコードとを用いてトレーサビリティマトリクスを生成する場合について説明するが、開示の技術はこれに限定されるものではなく、機能設計書と要件定義書を用いてトレーサビリティマトリクスを生成する場合であってもよい。
【００１７】
図１に戻って、入出力制御Ｉ／Ｆ部１０は、入力部２０、表示部３０と記憶部４０、制御部５０との間での各種情報のやり取りを制御するインタフェースである。入力部２０は、例えば、キーボードやタッチパネルなどであり、操作者による種々の情報の入力処理を受け付ける。例えば、入力部２０は、機能設計書に記述された機能の抽出に関する情報の入力処理を受け付ける。表示部３０は、例えば、ディスプレイなどであり、操作者に対して処理結果を表示出力する。例えば、表示部３０は、後述する制御部５０によって生成されたトレーサビリティマトリクスを表示出力する。
【００１８】
記憶部４０は、図１に示すように、成果物テキスト記憶部４１と、機能ファイル記憶部４２と、確率情報記憶部４３と、結果ファイル記憶部４４と、トレーサビリティマトリクス記憶部４５とを有する。記憶部４０は、例えば、ＲＡＭ（Random Access Memory）、フラッシュメモリ（Flash Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【００１９】
成果物テキスト記憶部４１は、ソフトウェアに関与する各種テキストファイルを記憶する。具体的には、成果物テキスト記憶部４１は、ソフトウェアの開発に際して作成された機能設計書、要件定義書、ソースコード、Read  Meなどの成果物テキストを記憶する。図４は、実施例１に係る成果物テキスト記憶部４１によって記憶される情報の一例を示す図である。例えば、成果物テキスト記憶部４１は、図４に示すように、機能設計書及びソースコードなどを記憶する。一例を挙げると、成果物テキスト記憶部４１は、図４に示すように、「第１章  システムの説明  このシステムは〜〜」などが記述された機能設計書を記憶する。また、成果物テキスト記憶部４１は、図４に示すように、クラス名「＃＃ＤａｔａＳｅｎｄ．ｐｌ」、「＃＃作成日  ２０１００９１１」、「＃＃作成者  ｎａｇａｎｏ」などが記述されたソースコードを記憶する。
【００２０】
図１に戻って、機能ファイル記憶部４２は、後述する制御部５０によって生成された機能ファイルを記憶する。具体的には、機能ファイル記憶部４２は、後述する制御部５０が成果物テキスト記憶部４１によって記憶された機能設計書から生成した機能ファイルを記憶する。図５は、実施例１に係る機能ファイル記憶部４２によって記憶される機能ファイルの一例を説明するための図である。
【００２１】
例えば、機能ファイル記憶部４２は、機能の説明に記述された文字列に含まれる名詞を機能ごとに対応付けた機能ファイルを記憶する。一例を挙げると、機能ファイル記憶部４２は、図５に示すように、「＜ｆｕｎｃ＞データ送信機能＜／ｆｕｎｃ＞」に「クライアント  名詞」、「サーバ  名詞」、「以下  名詞」、「情報  名詞」などを対応付けた機能ファイルを記憶する。
【００２２】
図１に戻って、確率情報記憶部４３は、後述する制御部５０によって生成された確率情報を記憶する。具体的には、確率情報記憶部４３は、後述する制御部５０が成果物テキスト記憶部４１によって記憶されたソースコードを用いて生成した確率情報を記憶する。図６は、実施例１に係る確率情報記憶部４３によって記憶される確率情報の一例を説明するための図である。
【００２３】
例えば、確率情報記憶部４３は、ソースコードのコメントに記述された文字列に含まれる名詞と、当該ソースコードに含まれるクラス名と、総和とを対応付けた確率情報を記憶する。一例を挙げると、確率情報記憶部４３は、図６に示すように、「作成日」に「ＤａｔａＳｅｎｄ．ｐｌ：１」、「ａｌｇｏ．ｐｌ：０」、「ＤａｔａＴｒａｎｓ．ｐｌ：１」、「Ｓｅｒｃｈ．ｐｌ：１」などを対応付けた確率情報を記憶する。上記した情報は、「ＤａｔａＳｅｎｄ．ｐｌ」、「ＤａｔａＴｒａｎｓ．ｐｌ」及び「Ｓｅｒｃｈ．ｐｌ」のクラス内のコメントに「作成日」が記述されていることを意味する。そして、確率情報記憶部４３は、図６に示すように、「作成日」に「総和（作成日）＝３」を対応付けて記憶する。上記した情報は、「作成日」が記述されたクラス名が「３つ」あることを意味する。同様に、確率情報記憶部４３は、「作成者」、「本プログラム」、「・・・」、「クライアント」、「サーバ」、「以下」、「情報」などに、クラス名と総和とを対応付けた確率情報を記憶する。
【００２４】
図１に戻って、結果ファイル記憶部４４は、後述する制御部５０によって生成された結果ファイルを記憶する。具体的には、結果ファイル記憶部４４は、後述する制御部５０が、機能ファイル記憶部４２によって記憶された機能ファイルと、確率情報記憶部４３によって記憶された確率情報とを用いて生成した結果ファイルを記憶する。図７は、実施例１に係る結果ファイル記憶部４４によって記憶される結果ファイルの一例を説明するための図である。
【００２５】
例えば、結果ファイル記憶部４４は、図７に示すように、機能ごとにクラスの確率が示された結果ファイルを記憶する。一例を挙げると、結果ファイル記憶部４４は、「＜ｆｕｎｃ＞データ送信機能＜／ｆｕｎｃ＞」に「ＤａｔａＳｅｎｄ．ｐｌ：５０％」、「ａｌｇｏ．ｐｌ：１５％」、「ｈｏｇｅ．ｐｌ：５％」が示された結果ファイルを記憶する。上記した例は、「ＤａｔａＳｅｎｄ．ｐｌ」が用いられる場合の「５０％」が「データ送信機能」に用いられることを意味する。また、「ａｌｇｏ．ｐｌ」が用いられる場合の「１５％」が「データ送信機能」に用いられることを意味する。また、「ｈｏｇｅ．ｐｌ」が用いられる場合の「５％」が「データ送信機能」に用いられることを意味する。同様に、結果ファイル記憶部４４は、図７に示すように、「＜ｆｕｎｃ＞データ暗号化機能＜／ｆｕｎｃ＞」に「ＤａｔａＳｅｎｄ．ｐｌ：０％」、「ａｌｇｏ．ｐｌ：５５％」、「ｈｏｇｅ．ｐｌ：５％」が示された結果ファイルを記憶する。
【００２６】
図１に戻って、トレーサビリティマトリクス記憶部４５は、後述する制御部５０によって生成されたトレーサビリティマトリクスを記憶する。図８は、実施例１に係るトレーサビリティマトリクス記憶部４５によって記憶されるトレーサビリティマトリクスの一例を説明するための図である。
【００２７】
例えば、トレーサビリティマトリクス記憶部４５は、図８に示すように、「データ送信機能」に「ＤａｔａＳｅｎｄ．ｐｌ：○」、「ａｌｇｏ．ｐｌ：○」、「ＤａｔａＴｒａｎｓ．ｐｌ」、「Ｓｅｒｃｈ．ｐｌ」などを対応付けたトレーサビリティマトリクスを記憶する。上記した情報は、「データ送信機能」を実現するために、「ＤａｔａＳｅｎｄ．ｐｌ」及び「ａｌｇｏ．ｐｌ」などが必要であることを意味する。
【００２８】
図１に戻って、制御部５０は、機能ファイル生成部５１と、確率情報生成部５２と、結果ファイル生成部５３と、トレーサビリティマトリクス生成部５４とを有し、成果物テキスト記憶部４１によって記憶された成果物テキストに基づいてトレーサビリティマトリクスを生成する。制御部５０は、例えば、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）などの電子回路、又は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの集積回路などである。
【００２９】
機能ファイル生成部５１は、ソフトウェアが有する機能が記述された第１の文字ファイルから、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する。具体的には、機能ファイル生成部５１は、成果物テキスト記憶部４１によって記憶された機能設計書から機能及び該機能に対応するテキストのデータを抽出する。そして、機能ファイル生成部５１は、抽出した機能ごとに対応するテキストに含まれる名詞を抽出し、抽出した名詞を機能に対応付けた機能ファイルを生成する。そして、機能ファイル生成部５１は、生成した機能ファイルを機能ファイル記憶部４２に格納する。
【００３０】
図９は、実施例１に係る機能ファイル生成部５１による処理の一例を模式的に示す図である。例えば、機能ファイル生成部５１は、図９の（Ａ）に示す機能設計書を成果物テキスト記憶部４１から読み出し、読み出した機能設計書をルールベース（rule  base）に基づいて機能及び該機能に対応するテキストごとに分割する。ここで、ルールベースとは、機能とテキストとの組合せのルールを概念化したものである。すなわち、機能ファイル生成部５１は、ルールベースに基づいて機能設計書中の機能とテキストとの組合せを推定し、推定した組合せのデータを機能設計書から分割する。
【００３１】
例えば、機能ファイル生成部５１は、図９の（Ｂ）に示すように、「＜ｆｕｎｃ＞データ送信機能＜／ｆｕｎｃ＞」及び該機能に対応するテキスト「＜ｔｘｔ＞クライアントからサーバへ以下の情報を送信する機能  ・ユーザ名  ・社員番号＜／ｔｘｔ＞」を機能設計書から分割する。同様に、機能ファイル生成部５１は、図９の（Ｂ）に示すように、「＜ｆｕｎｃ＞データ暗号化機能＜／ｆｕｎｃ＞」、「＜ｆｕｎｃ＞検索機能＜／ｆｕｎｃ＞」などを機能設計書から分割する。なお、図９に示す機能ファイルにおいては、ｆｕｎｃタグに機能名、ｔｘｔタグに対応するテキストが入ったＸＭＬ形式で示される。
【００３２】
そして、機能ファイル生成部５１は、分割した機能ごとのテキストに対して形態素解析を実行して、テキストを品詞ごとに分割する。例えば、機能ファイル生成部５１は、図９の（Ｃ）に示すように、「＜ｆｕｎｃ＞データ送信機能＜／ｆｕｎｃ＞」に対応するテキストに対して形態素解析を実行して、「クライアント  名詞」、「から  助詞」、「サーバ  名詞」、「へ  助詞」、「以下  名詞」、「の  助詞」、「情報  名詞」などに分割する。そして、機能ファイル生成部５１は、品詞ごとに分割した文字から名詞を抽出して、機能に対応付けた機能ファイルを生成する。例えば、機能ファイル生成部５１は、図９の（Ｄ）に示すように、「＜ｆｕｎｃ＞データ送信機能＜／ｆｕｎｃ＞」に「クライアント  名詞」、「サーバ  名詞」、「以下  名詞」、「情報  名詞」などを対応付けた機能ファイルを生成して機能ファイル記憶部４２に格納する。なお、形態素解析は、例えば、ＭｅＣａｂなどの形態素解析器によって実行される。また、上記した機能ファイルの生成においては、ルールベースに基づいて機能及び該機能に対応するテキストを分割する場合について説明したが、開示の技術はこれに限定されるものではなく、例えば、ソフトウェア開発者が手作業で分割する場合であってもよい。
【００３３】
図１に戻って、確率情報生成部５２は、ソフトウェアに関連する第２の文字ファイルから名詞を抽出し、抽出した各名詞が第２の文字ファイルに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する。具体的には、確率情報生成部５２は、第２の文字ファイルを用いたベイズ（Bayes）学習により確率情報を生成する。図１０は、実施例１に係る確率情報生成部５２による処理の一例を模式的に示す図である。
【００３４】
例えば、確率情報生成部５２は、図１０の（Ａ）に示すソースコードを成果物テキスト記憶部４１から読み出す。そして、確率情報生成部５２は、図１０の（Ｂ）に示すように、読み出したソースコードのコメント部分に対して形態素解析を実行して、「ＤａｔａＳｅｎｄ．ｐｌ  未知語」、「本プログラム  名詞」、「は  助詞」、「フォーム  名詞」、「に  助詞」などに分割する。そして、確率情報生成部５２は、図１０の（Ｃ）に示すように、品詞ごとに分割した文字から名詞「作成日」、「作成者」、「本プログラム」、「フォーム」などを抽出する。さらに、確率情報生成部５２は、図１０の（Ｄ）に示すように、抽出した名詞ごとのベイズ学習により、確率情報を生成する。ここで、ベイズの定理について説明する。ベイズの定理とは、ある結果が得られた場合に、その結果を反映した事後確率を求める確率論の定理である。すなわち、確率情報生成部５２は、所定の名詞（ｗ）が出現した場合に、該名詞（ｗ）が出現したテキストがカテゴリ（ｃ）である確率Ｐ（ｗ｜ｃ）を示す確率情報を生成する。
【００３５】
例えば、確率情報生成部５２は、図１０の（Ｄ）に示すように、「作成日」に「ＤａｔａＳｅｎｄ．ｐｌ：１」、「ａｌｇｏ．ｐｌ：０」、「ＤａｔａＴｒａｎｓ．ｐｌ：１」、「Ｓｅｒｃｈ．ｐｌ：１」などのクラスと、「総和（作成日）＝３」とを対応付けた確率情報を生成する。すなわち、確率情報生成部５２は、「作成日」が記述されたテキストは、「１／３」が「ＤａｔａＳｅｎｄ．ｐｌ」であり、「１／３」が「ＤａｔａＴｒａｎｓ．ｐｌ」であり、残りの「１／３」が「Ｓｅｒｃｈ．ｐｌ」であることを示す確率情報を生成する。そして、確率情報生成部５２は、生成した確率情報を確率情報記憶部４３に格納する。同様に、確率情報生成部５２は、図１０の（Ｄ）に示すように、「作成者」、「本プログラム」、「・・・」、「クライアント」、「情報」、「社員番号」などに対するベイズ学習により確率情報を生成する。
【００３６】
図１に戻って、結果ファイル生成部５３は、所定の機能に関して第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された第２の文字ファイルの項目全てを第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を第２情報を用いて算出する。具体的には、結果ファイル生成部５３は、機能ファイルと、確率情報生成部５２がベイズ学習により生成した確率情報とを用いたベイズ推定により確率を算出する。図１１は、実施例１に係る結果ファイル生成部５３による処理の一例を模式的に示す図である。
【００３７】
例えば、結果ファイル生成部５３は、図１１の（Ａ）に示す「データ送信機能」の機能ファイルを機能ファイル記憶部４２から読み出し、「データ送信機能」に対する結果ファイルを生成する。この時、結果ファイル生成部５３は、まず、確率情報記憶部４３によって記憶された確率情報を参照して、「データ送信機能」の機能ファイルに含まれる全ての名詞の確率情報を取得する。そして、結果ファイル生成部５３は、取得した確率情報において、「データ送信機能」の機能ファイルに含まれる全ての名詞について、該名詞が記述されていた各クラスの情報を取得する。そして、結果ファイル生成部５３は、取得した各クラスが記述された場合のソースコードが「データ送信機能」である確率を算出する。
【００３８】
一例を挙げると、結果ファイル生成部５３は、「ＤａｔａＳｅｎｄ．ｐｌ」が記述された場合のソースコードが「データ送信機能」である確率Ｐ（データ送信機能｜ＤａｔａＳｅｎｄ．ｐｌ）を以下に示す式により算出する。
【００３９】
結果ファイル生成部５３は、「Ｐ（データ送信機能｜ＤａｔａＳｅｎｄ．ｐｌ）」＝「データ送信機能の機能ファイルに含まれる名詞のうち「ＤａｔａＳｅｎｄ．ｐｌ」と対応付けられた全ての名詞の結合確率ΠＰ（ｘ）」を算出する。すなわち、結果ファイル生成部５３は、図６に示す確率情報を参照して、「作成日」、「作成者」、「本プログラム」、「クライアント」、「情報」、「社員番号」などについて、それぞれが記述された場合の「ＤａｔａＳｅｎｄ．ｐｌ」である確率を算出し、算出した確率の積を算出する。
【００４０】
同様に、結果ファイル生成部５３は、取得したクラスについて「結合確率ΠＰ（ｘ）」を算出する。そして、結果ファイル生成部５３は、算出した「結合確率ΠＰ（ｘ）」を「データ送信機能」に対応付けた結果ファイルを生成して、生成した結果ファイルを結果ファイル記憶部４４に格納する。例えば、結果ファイル生成部５３は、図１１の（Ｂ）に示すように、「＜ｆｕｎｃ＞データ送信機能＜／ｆｕｎｃ＞」に「ＤａｔａＳｅｎｄ．ｐｌ  ５０％」、「ａｌｇｏ．ｐｌ  １５％」及び「ｈｏｇｅ．ｐｌ  ５％」を対応付けた結果ファイルを生成する。
【００４１】
なお、各名詞が記述された場合に「ＤａｔａＳｅｎｄ．ｐｌ」である確率は、以下の式により算出される。例えば、「クライアント」が記述された場合に「ＤａｔａＳｅｎｄ．ｐｌ」である確率Ｐ（クライアント）は、Ｐ（クライアント）＝（ＤａｔａＳｅｎｄ．ｐｌ中のクライアントの出現数／ＤａｔａＳｅｎｄ．ｐｌの数）／｛（ＤａｔａＳｅｎｄ．ｐｌ中のクライアントの出現数／ＤａｔａＳｅｎｄ．ｐｌの数）＋（ＤａｔａＳｅｎｄ．ｐｌ以外のクライアントの出現数／ＤａｔａＳｅｎｄ．ｐｌ以外の数）｝により算出される。
【００４２】
図１に戻って、トレーサビリティマトリクス生成部５４は、算出された確率の値が所定の閾値を超える項目を特定し、当該項目と所定の機能とに対応関係があることを示す機能情報を生成する。具体的には、トレーサビリティマトリクス生成部５４は、結果ファイル記憶部４４によって記憶された結果ファイルを参照して、確率が任意の閾値を超えたクラスと機能とを関連付けたトレーサビリティマトリクスを生成する。図１２は、実施例１に係るトレーサビリティマトリクス生成部５４の処理の一例を説明するための図である。
【００４３】
例えば、任意の閾値が「１０％」であった場合には、トレーサビリティマトリクス生成部５４は、図１２の（Ｂ）に示すように、図１２の（Ａ）に示す結果ファイルにおいて確率が１０％を超えたクラス「ＤａｔａＳｅｎｄ．ｐｌ」及び「ａｌｇｏ．ｐｌ」と、機能「データ送信機能」とを関連付けたトレーサビリティマトリクスを生成する。そして、トレーサビリティマトリクス生成部５４は、生成したトレーサビリティマトリクスをトレーサビリティマトリクス記憶部４５に格納する。なお、閾値は、機能情報生成装置１００の管理者や操作者によって任意に決定される。
【００４４】
また、トレーサビリティマトリクス生成部５４は、生成したトレーサビリティマトリクスを表示部３０にて表示させるように制御する。ここで、本願の開示する機能情報生成装置１００のユースケースについて図１３を用いて説明する。図１３は、実施例１に係る機能情報生成装置１００のユースケースを説明するための図である。図１３においては、ソフトウェア開発者によって指定された機能に関連するソースコードを表示する場合について示す。例えば、実施例１に係る機能情報生成装置１００は、図１３に示すように、事前処理として機能設計書に対してテキスト分割、形態素解析、名詞抽出することにより機能ファイルを生成し、機能ファイル記憶部４２に格納する。同時に、機能情報生成装置１００は、図１３に示すように、事前処理としてソースコードのコメント部分に対して形態素解析、名詞抽出、ベイズ学習を実行することにより確率情報を生成し、確率情報記憶部４３に格納する。
【００４５】
そして、ソフトウェア開発者によって機能が指定されると、結果ファイル生成部５３が指定された機能に相当する機能ファイルを機能ファイル記憶部４２から読み出す。さらに、結果ファイル生成部５３は、読み出した機能ファイルと確率情報記憶部４３によって記憶された確率情報とに基づいてベイズ推定を実行することで結果ファイルを生成する。そして、トレーサビリティマトリクス生成部５４が、結果ファイル生成部５３によって生成された結果ファイルトレーサビリティマトリクスを生成するとともに、指定された機能に関連するクラスを表示部３０に表示させる。なお、図１３に示すユースケースは、あくまで一例である。例えば、実施例１に係る機能情報生成装置１００は、機能設計書及びソースコードが入力された時点で、トレーサビリティマトリクスを自動的に生成するように設定することも可能である。
【００４６】
［実施例１に係る機能情報生成装置による処理の手順］
次に、実施例１に係る機能情報生成装置１００による処理の手順について、図１４及び１５を用いて説明する。図１４は、実施例１に係る機能情報生成装置１００によるトレーサビリティマトリクス生成処理の手順を示すフローチャートである。
【００４７】
図１４に示すように、実施例１に係る機能情報生成装置１００においては、ソフトウェア開発者によって成果物テキストがアップロードされると（ステップＳ１０１肯定）、機能ファイル生成部５１は、機能設計書を用いて機能ファイルを生成する（ステップＳ１０２）。そして、確率情報生成部５２は、ソースコードを用いて確率情報を生成する（ステップＳ１０３）。
【００４８】
その後、ソフトウェア開発者によって機能が指定されると（ステップＳ１０４肯定）、結果ファイル生成部５３は、機能ファイル生成部５１によって生成された機能ファイルを取得し（ステップＳ１０５）、確率情報生成部５２によって生成された確率情報を参照して、ベイズ推定により結果ファイルを生成する（ステップＳ１０６）。
【００４９】
続いて、トレーサビリティマトリクス生成部５４は、結果ファイル生成部５３によって生成された結果ファイルに基づいてトレーサビリティマトリクスを生成し（ステップＳ１０７）、ソフトウェア開発者によって指定された機能に関連するクラスを表示部３０に表示させ（ステップＳ１０８）、処理を終了する。なお、実施例１に係る機能情報生成装置１００は、成果物テキストがアップロードされるまで待機状態である（ステップＳ１０１否定）。また、実施例１に係る機能情報生成装置１００は、ソフトウェア開発者から機能が指定されるまで待機状態である（ステップＳ１０４否定）。また、上述した処理の手順では、機能ファイルを生成した後に確率情報を生成する場合について説明したが、開示の技術はこれに限定されるものではなく、生成の順番は任意であり、同時に生成することも可能である。
【００５０】
図１５は、実施例１に係る機能情報生成装置１００による処理の手順を示すシーケンス図である。図１５に示すように、実施例１に係る機能情報生成装置１００においては、システム開発担当者である開発者Ｂによって機能設計書がアップロードされると（ステップＳ２０１）、機能ファイル生成部５１は、アップロードされた機能設計書を用いて機能ファイルを生成する（ステップＳ２０２）。そして、開発者Ｂによってソースコードがアップロードされると（ステップＳ２０３）、確率情報生成部５２は、アップロードされたソースコードを用いて確率情報を生成する（ステップＳ２０４）。
【００５１】
続いて、機能追加担当者である開発者Ａによって機能が指定されると（ステップＳ２０５）、結果ファイル生成部５３は、機能ファイル生成部５１によって生成された機能ファイルを取得し（ステップＳ２０６）、確率情報生成部５２によって生成された確率情報を参照して、結果ファイルを生成する（ステップＳ２０７）。結果ファイル生成部５３によって結果ファイルが生成されると、トレーサビリティマトリクス生成部５４は、生成された結果ファイルに基づいて、トレーサビリティマトリクスを生成し（ステップＳ２０８）、指定された機能に関連するクラスの情報を表示部３０に表示させることで（ステップＳ２０９）、開発者Ａに提示する。
【００５２】
［実施例１の効果］
上述したように、実施例１によれば、機能ファイル生成部５１は、ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す機能ファイルを生成する。そして、確率情報生成部５２は、ソフトウェアに関連するソースコードから名詞を抽出し、抽出した各名詞がソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る確率情報を生成する。そして、結果ファイル生成部５３は、所定の機能に関して機能ファイルに対応付けられている全ての名詞について、いずれかの名詞が記述されたソースコードの項目全てを確率情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を確率情報を用いて算出する。そして、トレーサビリティマトリクス生成部５４は、算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示すトレーサビリティマトリクスを生成する。従って、実施例１に係る機能情報生成装置１００は、トレーサビリティマトリクスを自動で生成することができ、ユーザの要求に柔軟に対応することを可能にする。
【００５３】
また、実施例１によれば、確率情報生成部５２は、ソースコードを用いたベイズ学習により確率情報を生成する。そして、結果ファイル生成部５３は、機能ファイルと、確率情報生成部５２がベイズ学習により生成した確率情報とを用いたベイズ推定により前記確率を算出する。従って、実施例１に係る機能情報生成装置１００は、機能とソースコードとの関連について既知の情報から未知の情報を容易に推定することを可能にする。
【実施例２】
【００５４】
これまで実施例１について説明したが、本願が開示する技術は実施例１に限定されるものではない。すなわち、これらの実施例は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
【００５５】
（１）形態素解析
上記した実施例１では、機能設計書を機能ごとにテキスト分割し、テキスト部分に対して形態素解析を実行する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、機能名に対して形態素解析を実行する場合であってもよい。
【００５６】
（２）名詞抽出
上記した実施例１では、機能設計書及びソースコードから名詞を抽出する際に、単独の名詞を抽出する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、連続する名詞を複合した複合名詞を処理対象とする場合であってもよい。
【００５７】
（３）名詞の重要度
上記した実施例１では、名詞の出現数に基づいて確率情報を生成する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、名詞の重要度に応じて重み付けをして確率情報を生成する場合であってもよい。かかる場合には、例えば、ｔｆ−ｉｄｆによりソースコード中の特徴的な名詞を抽出し、抽出した名詞に対して所定の重み付けをして確率情報を生成する。
【００５８】
（４）ベイズ推定
上述した実施例１では、単純なベイズ推定により結果ファイルを生成する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、Ｇｒａｈａｍ方式やＲｏｂｉｎｓｏｎ方式などにより確率情報を出現数で示したり、機能ファイルに記述する名詞を絞り込こんだり、などのアレンジを実行する場合であってもよい。
【００５９】
（５）システム構成等
例えば、各装置の分散・統合の具体的形態（例えば、図１の形態）は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、機能ファイル記憶部４２と確率情報記憶部４３とを一つの記憶部として統合してもよく、一方、結果ファイル生成部５３を、機能ファイルを取得する機能ファイル取得部と、結果ファイルを生成する生成部とに分散してもよい。
【００６０】
また、制御部５０を機能情報生成装置１００の外部装置としてネットワーク経由で接続するようにしてもよく、或いは、結果ファイル生成部５３、トレーサビリティマトリクス生成部５４を別の装置がそれぞれ有し、ネットワークに接続されて協働することで、上述した機能情報生成装置１００の機能を実現するようにしてもよい。
【００６１】
（６）機能情報生成プログラム
上記実施例で説明した機能情報生成装置１００は、あらかじめ用意されたプログラムをコンピュータで実行することで実現することもできる。そこで、以下では、図１に示した機能情報生成装置１００と同様の機能を実現する機能情報生成プログラムを実行するコンピュータの一例を説明する。
【００６２】
図１６は、実施例２に係る機能情報生成プログラムを実行するコンピュータ１０００を示す図である。図１６に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。 
【００６３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。 
【００６４】
ここで、図１６に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。実施例２に係る機能情報生成プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。具体的には、上記実施例で説明した機能ファイル生成部５１と同様の情報処理を実行する第１情報生成ステップと、確率情報生成部５２と同様の情報処理を実行する第２情報生成ステップと、結果ファイル生成部５３と同様の情報処理を実行する確率算出ステップと、トレーサビリティマトリクス生成部５４と同様の情報処理を実行する機能情報生成ステップとが記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。 
【００６５】
また、上記実施例で説明した成果物テキスト記憶部４１に記憶されるデータのように、機能情報生成プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュールやプログラムデータを必要に応じてＲＡＭ１０１２に読み出して、第１情報生成ステップと、第２情報生成ステップと、確率算出ステップと、機能情報生成ステップとを実行する。
【００６６】
なお、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００６７】
これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００６８】
５１  機能ファイル生成部
５２  確率情報生成部
５３  結果ファイル生成部
５４  トレーサビリティマトリクス生成部
１００  機能情報生成装置
【図１】
0005456707.tif 000002
【図２】
0005456707.tif 000003
【図３】
0005456707.tif 000004
【図４】
0005456707.tif 000005
【図５】
0005456707.tif 000006
【図６】
0005456707.tif 000007
【図７】
0005456707.tif 000008
【図８】
0005456707.tif 000009
【図９】
0005456707.tif 000010
【図１０】
0005456707.tif 000011
【図１１】
0005456707.tif 000012
【図１２】
0005456707.tif 000013
【図１３】
0005456707.tif 000014
【図１４】
0005456707.tif 000015
【図１５】
0005456707.tif 000016
【図１６】
0005456707.tif 000017