(57)【要約】【課題】トレーサビリティマトリクスを容易に作成すること。【解決手段】抽出部は、文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第１の言語で示された所定の文字列群である第１文字列群と第２の言語で示された所定の文字列群である第２文字列群とをそれぞれ抽出する。配置状態算出部は、第１文字列群及び第２文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。類似度算出部は、影響度に基づいて、第１文字列群に含まれる第１文字列に対する第２文字列群に含まれる第２文字列の関連性の高低を示す類似度をそれぞれ算出する。変換部は、文字ファイルにおける第１文字列を類似度が最も高い第２文字列に変換する。【選択図】        図１
2012164231.tif 000002
【特許請求の範囲】
【請求項１】
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第１の言語で示された所定の文字列群である第１文字列群と第２の言語で示された所定の文字列群である第２文字列群とをそれぞれ抽出する抽出部と、
前記抽出部によって抽出された前記第１文字列群及び前記第２文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出部と、
前記配置状態算出部によって算出された影響度に基づいて、前記第１文字列群に含まれる第１文字列に対する前記第２文字列群に含まれる第２文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出部と、
前記文字ファイルにおける前記第１文字列を前記類似度算出部によって算出された類似度が最も高い第２文字列に変換する変換部と、
を有することを特徴とする言語変換装置。
【請求項２】
前記抽出部が、前記文字ファイルとしてソースコードの木構造から前記第１文字列群と前記第２文字列群とを抽出し、
前記変換部が、前記抽出部によって抽出されたソースコードの木構造における前記第１文字列群に含まれる前記第１文字列を、前記類似度算出部によって算出された類似度が最も高い前記第２文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する第１の情報生成部と、
前記変換部によって第１文字列が第２文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する第２の情報生成部と、
所定の機能に関して前記第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第２情報を用いて算出する確率算出部と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成部とをさらに有することを特徴とする請求項１に記載の言語変換装置。
【請求項３】
言語変換装置で実行される言語変換方法であって、
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第１の言語で示された所定の文字列群である第１文字列群と第２の言語で示された所定の文字列群である第２文字列群とをそれぞれ抽出する抽出工程と、
前記抽出工程によって抽出された前記第１文字列群及び前記第２文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出工程と、
前記配置状態算出工程によって算出された影響度に基づいて、前記第１文字列群に含まれる第１文字列に対する前記第２文字列群に含まれる第２文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出工程と、
前記文字ファイルにおける前記第１文字列を前記類似度算出工程によって算出された類似度が最も高い第２文字列に変換する変換工程と、
を含んだことを特徴とする言語変換方法。
【請求項４】
前記抽出工程が、前記文字ファイルとしてソースコードの木構造から前記第１文字列群と前記第２文字列群とを抽出し、
前記変換工程が、前記抽出工程によって抽出されたソースコードの木構造における前記第１文字列群に含まれる前記第１文字列を、前記類似度算出工程によって算出された類似度が最も高い前記第２文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する第１の情報生成工程と、
前記変換工程によって第１文字列が第２文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する第２の情報生成工程と、
所定の機能に関して前記第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第２情報を用いて算出する確率算出工程と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成工程とをさらに含んだことを特徴とする請求項３に記載の言語変換方法。
【請求項５】
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第１の言語で示された所定の文字列群である第１文字列群と第２の言語で示された所定の文字列群である第２文字列群とをそれぞれ抽出する抽出ステップと、
前記抽出ステップによって抽出された前記第１文字列群及び前記第２文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出ステップと、
前記配置状態算出ステップによって算出された影響度に基づいて、前記第１文字列群に含まれる第１文字列に対する前記第２文字列群に含まれる第２文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出ステップと、
前記文字ファイルにおける前記第１文字列を前記類似度算出ステップによって算出された類似度が最も高い第２文字列に変換する変換ステップと、
をコンピュータに実行させることを特徴とする言語変換プログラム。
【請求項６】
前記抽出ステップが、前記文字ファイルとしてソースコードの木構造から前記第１文字列群と前記第２文字列群とを抽出し、
前記変換ステップが、前記抽出ステップによって抽出されたソースコードの木構造における前記第１文字列群に含まれる前記第１文字列を、前記類似度算出ステップによって算出された類似度が最も高い前記第２文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第１情報を生成する第１の情報生成ステップと、
前記変換ステップによって第１文字列が第２文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第２情報を生成する第２の情報生成ステップと、
所定の機能に関して前記第１情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第２情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第２情報を用いて算出する確率算出ステップと、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成ステップとをさらにコンピュータに実行させることを特徴とする請求項５に記載の言語変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、言語変換装置、言語変換方法及び言語変換プログラムに関する。
【背景技術】
【０００２】
従来、現時点で稼動しているシステムで利用されているソフトウェアの機能をユーザの要求に従って変更する場合がある。かかる場合には、ソフトウェア開発者は、現時点で利用されているソフトウェアが開発された際に作成されたトレーサビリティマトリクス（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）、ワークステーション又は言語変換用の専用装置である。なお、以下では、言語を変換するテキストファイルとして、ソースコードを対象とした場合の言語変換装置について説明する。
【００１２】
入出力制御Ｉ／Ｆ部２は、入力部３、表示部４と制御部６との間での各種情報のやり取りを制御するインタフェースである。入力部３は、例えば、キーボードやタッチパネルなどであり、操作者による種々の情報の入力処理を受け付ける。表示部４は、例えば、ディスプレイなどであり、操作者に対して処理結果を表示出力する。
【００１３】
記憶部５は、図示しないパーサ（parser：構文解析器）によってソースコードから作成された木構造のデータを記憶する。記憶部５は、例えば、ＲＡＭ（Random Access Memory）、フラッシュメモリ（Flash Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、パーサは、言語変換装置１に内蔵される場合であっても、外部に接続される場合であってもよい。また、記憶部５にソースコードが記憶され、内蔵されたパーサによって作成された木構造のデータを記憶部５が記憶する場合であってもよい。
【００１４】
制御部６は、図１に示すように、抽出部６ａと、配置状態算出部６ｂと、類似度算出部６ｃと、変換部６ｄとを有し、記憶部５によって記憶された木構造のデータを用いてソースコードに記述された言語を変換する。なお、以下では、英語で記述された文字を日本語の文字に変換する場合について説明するが、開示の技術はこれに限定されるものではなく、例えば、日本語で記述された文字を英語に変換する場合であってもよい。
【００１５】
抽出部６ａは、ソースコードに含まれる文字列を相互の関連性に従って解析することで求めたソースコードの木構造において、各ノードに配置された文字列から第１の言語で示された所定の文字列群である第１文字列群と第２の言語で示された所定の文字列群である第２文字列群とをそれぞれ抽出する。具体的には、抽出部６ａは、木構造の各ノードに対応するソースコードに記述された関数名、クラス名、モジュール名などの文字列を抽出する。また、抽出部６ａは、木構造の各ノードに対応するソースコードのコメント部分に記述された文字列を抽出する。
【００１６】
例えば、抽出部６ａは、英語で記述された関数名、クラス名、モジュール名などを正規表現などに基づいて抽出する。また、例えば、抽出部６ａは、日本語で記述されたコメントに対して形態素解析を実行してコメントに含まれる名詞などのキーワードを抽出する。図２は、実施例１に係る抽出部６ａによる処理を模式的に示す図である。図２においては、各ノードの上段に英語で記述された関数名、クラス名、モジュール名を示す。また、図２においては、各ノードの下段に日本語で記述されたキーワードを示す。
【００１７】
例えば、抽出部６ａは、図２に示すように、木構造の根ノードに対応するソースコードから「ｐｒｏｊｅｃｔ」を抽出する。同様に、抽出部６ａは、図２に示すように、各ノードに対応するソースコードから英語で記述された関数名、クラス名、モジュール名などを抽出する。また、抽出部６ａは、図２に示すように、各ノードに対応するソースコードのコメントから日本語のキーワードを抽出する。一例を挙げると、抽出部６ａは、図２の最下位のノードに示すように、コメントに対して形態素解析を実行して、「内容」及び「取得」を抽出する。
【００１８】
図１に戻って、配置状態算出部６ｂは、抽出部６ａによって抽出された第１文字列群及び第２文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。具体的には、配置状態算出部６ｂは、木構造における各最下位ノードに対する影響度を算出する。図３は、実施例１に係る配置状態算出部６ｂによる処理１を模式的に示す図である。図３においては、「Ｃｏｏｋｉｅ」の各最下位ノードに対する影響度を算出する場合について示す。
【００１９】
例えば、配置状態算出部６ｂは、図３に示すように、まず、木構造における「Ｃｏｏｋｉｅ」の位置を抽出する。そして、配置状態算出部６ｂは、抽出した「Ｃｏｏｋｉｅ」のトータルの影響度を「１」とし、最下位ノードに対する影響度を算出する。すなわち、配置状態算出部６ｂは、図３に示すように、「ｇｅｔＮａｋａｍｉ」及び「ｃｌｅａｒ」のノードに対してそれぞれ「影響度：０．５」を算出する。また、配置状態算出部６ｂは、図３に示すように、「ｃｏｎｎｅｃｔ」、「ｓｅｔＳｅｃｕｒｉｔｙ」及び「ｉｓＥｎａｂｌｅ」のノードに対してそれぞれ「影響度：０．０」を算出する。
【００２０】
同様に、配置状態算出部６ｂは、抽出部６ａによって抽出されたすべての文字列の最下位ノードに対する影響度を算出する。以下では、図４及び５を用いて算出の例を説明する。図４は、実施例１に係る配置状態算出部６ｂによる処理２を模式的に示す図である。例えば、配置状態算出部６ｂは、図４に示すように、木構造における「クッキー」の位置を抽出する。そして、配置状態算出部６ｂは、抽出した「クッキー」のトータルの影響度を「１」とし、最下位ノードに対する影響度を算出する。
【００２１】
ここで、配置状態算出部６ｂは、図４に示すように、「Ｂｒｏｗｓｅ．ｊａｖａ」のノード及び「ｃｌｅａｒ」のノードに含まれる「クッキー」それぞれのトータルの影響度を「１」として最下位ノードに対する影響度を算出する。例えば、配置状態算出部６ｂは、図４に示すように、「ｇｅｔＮａｋａｍｉ」のノードに対する「クッキー」の「影響度：０．５」と「ｃｌｅａｒ」のノードに対する「影響度：１．５」とを算出する。すなわち、配置状態算出部６ｂは、「ｇｅｔＮａｋａｍｉ」のノードに対して「Ｂｒｏｗｓｅ．ｊａｖａ」から降りてきた「影響度：０．５」を算出する。
【００２２】
そして、配置状態算出部６ｂは、「ｃｌｅａｒ」のノードに対して、「Ｂｒｏｗｓｅ．ｊａｖａ」から降りてきた「影響度：０．５」と「ｃｌｅａｒ」のノードに含まれる「クッキー」の「影響度：１．０」を加算した「影響度：１．５」を算出する。また、配置状態算出部６ｂは、図４に示すように、「ｃｏｎｎｅｃｔ」、「ｓｅｔＳｅｃｕｒｉｔｙ」及び「ｉｓＥｎａｂｌｅ」のノードに対してそれぞれ「影響度：０．０」を算出する。
【００２３】
図５は、実施例１に係る配置状態算出部６ｂによる処理３を模式的に示す図である。例えば、配置状態算出部６ｂは、図５に示すように、「ｇｅｔＮａｋａｍｉ」、「ｃｌｅａｒ」、「ｃｏｎｎｅｃｔ」、「ｓｅｔＳｅｃｕｒｉｔｙ」及び「ｉｓＥｎａｂｌｅ」のノードそれぞれに対して、「セッション」の影響度「０．０」、「０．０」、「１．３３３」、「０．３３３」及び「１．３３３」を算出する。
【００２４】
上記したように、配置状態算出部６ｂは、抽出部６ａによって抽出されたすべての文字列について最下位ノードに対する影響度を算出する。図６は、実施例１に係る配置状態算出部６ｂによる処理結果の一例を示す図である。図６においては、図６の（Ａ）が、日本語のキーワードが影響を与える最下位ノードについて示す。また、図６においては、図６の（Ｂ）が、英語のキーワードが影響を与える最下位ノードについて示す。例えば、図６の（Ａ）に示すように、「クッキー」は、「ｇｅｔＮａｋａｍｉ」及び「ｃｌｅａｒ」にそれぞれに「１」が対応付けられており、影響を与えることを示される。
【００２５】
図１に戻って、類似度算出部６ｃは、配置状態算出部６ｂによって算出された影響度に基づいて、第１文字列群に含まれる第１文字列に対する第２文字列群に含まれる第２文字列の関連性の高低を示す類似度をそれぞれ算出する。具体的には、類似度算出部６ｃは、第１の文字列と第２の文字列との最下位ノードに与える影響度の類似度を算出する。例えば、類似度算出部６ｃは、英語の文字列と日本語の文字列との最下位ノードに与える影響度の類似度を以下に示す式（１）により算出する。
【００２６】
【数１】
2012164231.tif 000003
【００２７】
例えば、類似度算出部６ｃは、式（１）に示す「ａ」を英語の文字列、「ｂ」を日本語の文字列として、Ｃｏｓ類似度を算出することで英語の文字列と日本語の文字列との最下位ノードに与える影響度の類似度を算出する。一例を挙げると、類似度算出部６ｃは、Ｃｏｓ類似度（“Ｃｏｏｋｉｅ”、“クッキー”）や、Ｃｏｓ類似度（“Ｃｏｏｋｉｅ”、“セッション”）などを計算することで、英語の文字列「Ｃｏｏｋｉｅ」と日本語の文字列との類似度を算出する。
【００２８】
図１に戻って、変換部６ｄは、第１文字列を類似度算出部６ｃによって算出された類似度が最も高い第２文字列に変換する。例えば、変換部６ｄは、英語の文字列を類似度の高い日本語の文字列に変換する。一例を挙げると、類似度算出部６ｃが「Ｃｏｏｋｉｅ」に対する類似度を算出した日本語の文字列のうち、「クッキー」との類似度が最も高い場合には、変換部６ｄは、ソースコード中の「Ｃｏｏｋｉｅ」を「クッキー」に変換する。
【００２９】
［実施例１に係る言語変換装置による処理の手順］
実施例１に係る言語変換装置１による処理の手順を説明する。図７は、実施例１に係る言語変換装置１による処理の手順を説明するためのフローチャートである。なお、図７においては、ソースコードに対してパーサによる構文解析が実行され、木構造が生成された後の処理について示す。
【００３０】
図７に示すように、実施例１に係る言語変換装置１においては、抽出部６ａは、ソースコードから生成された木構造の各ノードに配置された文字列から英語キーワード及び日本語キーワードを抽出する（ステップＳ１０１）。そして、配置状態算出部６ｂは、抽出部６ａによって抽出された英語キーワード及び日本語キーワードについて、各キーワードの配置状態に基づいて、各文字列の最下位ノードに対する影響度を算出する（ステップＳ１０２）。
【００３１】
その後、類似度算出部６ｃは、配置状態算出部６ｂによって算出された影響度に基づいて、英語キーワードと日本語キーワードとの類似度を算出する（ステップＳ１０３）。そして、変換部６ｄは、類似度算出部６ｃによって算出された類似度に基づいて、英語キーワードを類似度が最も高い日本語キーワードに変換して（ステップＳ１０４）、処理を終了する。
【００３２】
［実施例１の効果］
上述したように、実施例１によれば、抽出部６ａは、ソースコードに含まれる文字列を相互の関連性に従って解析することで求めたソースコードの木構造において、各ノードに配置された文字列から第１の言語で示された所定の文字列群である第１文字列群と第２の言語で示された所定の文字列群である第２文字列群とをそれぞれ抽出する。そして、配置状態算出部６ｂは、抽出部６ａによって抽出された第１文字列群及び第２文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。そして、類似度算出部６ｃは、配置状態算出部６ｂによって算出された影響度に基づいて、第１文字列群に含まれる第１文字列に対する第２文字列群に含まれる第２文字列の関連性の高低を示す類似度をそれぞれ算出する。そして、変換部６ｄは、ソースコードにおける第１文字列を類似度算出部６ｃによって算出された類似度が最も高い第２文字列に変換する。従って、実施例１に係る言語変換装置１は、ソースコードに含まれる言語を、ソフトウェア開発者が使い慣れた言語に自動で変換することができ、トレーサビリティマトリクスを容易に作成することを可能とする。例えば、ソフトウェア開発者が関数名に記述されたソースコード中の読み出し関係を考慮したトレーサビリティマトリクスを作成する場合であっても、容易に作成することを可能にする。
【実施例２】
【００３３】
［実施例２に係る機能情報生成装置の構成］
上述した実施例１においては、言語変換装置１を単独で用いる場合について説明した。実施例２では、トレーサビリティマトリクスを生成する機能情報生成装置に言語変換装置の機能を内蔵させた場合の実施例について説明する。図８は、実施例２に係る機能情報生成装置１００の構成の一例を説明するための図である。図８に示すように、実施例２に係る機能情報生成装置１００は、入出力制御Ｉ／Ｆ部１０と、入力部２０と、表示部３０と、記憶部４０と、制御部５０とを有している。そして、機能情報生成装置１００は、ソフトウェアの成果物テキストに基づいて、トレーサビリティマトリクスを生成する。なお、機能情報生成装置１００は、例えば、ＰＣ（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）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００９２】
これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００９３】
１  言語変換装置
６ａ  抽出部
６ｂ  配置状態算出部
６ｃ  類似度算出部
６ｄ  変換部
５１  言語変換部
５２  機能ファイル生成部
５３  確率情報生成部
５４  結果ファイル生成部
５５  トレーサビリティマトリクス生成部
１００  機能情報生成装置
【図１】
2012164231.tif 000004
【図２】
2012164231.tif 000005
【図３】
2012164231.tif 000006
【図４】
2012164231.tif 000007
【図５】
2012164231.tif 000008
【図６】
2012164231.tif 000009
【図７】
2012164231.tif 000010
【図８】
2012164231.tif 000011
【図９】
2012164231.tif 000012
【図１０】
2012164231.tif 000013
【図１１】
2012164231.tif 000014
【図１２】
2012164231.tif 000015
【図１３】
2012164231.tif 000016
【図１４】
2012164231.tif 000017
【図１５】
2012164231.tif 000018
【図１６】
2012164231.tif 000019
【図１７】
2012164231.tif 000020
【図１８】
2012164231.tif 000021
【図１９】
2012164231.tif 000022
【図２０】
2012164231.tif 000023
【図２１】
2012164231.tif 000024
【図２２】
2012164231.tif 000025
【図２３】
2012164231.tif 000026
【図２４】
2012164231.tif 000027