言語変換装置、言語変換方法及び言語変換プログラム
【課題】トレーサビリティマトリクスを容易に作成すること。
【解決手段】抽出部は、文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する。配置状態算出部は、第1文字列群及び第2文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。類似度算出部は、影響度に基づいて、第1文字列群に含まれる第1文字列に対する第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する。変換部は、文字ファイルにおける第1文字列を類似度が最も高い第2文字列に変換する。
【解決手段】抽出部は、文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する。配置状態算出部は、第1文字列群及び第2文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。類似度算出部は、影響度に基づいて、第1文字列群に含まれる第1文字列に対する第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する。変換部は、文字ファイルにおける第1文字列を類似度が最も高い第2文字列に変換する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、言語変換装置、言語変換方法及び言語変換プログラムに関する。
【背景技術】
【0002】
従来、現時点で稼動しているシステムで利用されているソフトウェアの機能をユーザの要求に従って変更する場合がある。かかる場合には、ソフトウェア開発者は、現時点で利用されているソフトウェアが開発された際に作成されたトレーサビリティマトリクス(Traceability Matrix)を参照することにより、変更すべきソースコードを特定する。
【0003】
トレーサビリティマトリクスは、要件、機能及びソースコードなどが対応付けられた表である。例えば、機能設計書中のどの機能がソースコード中のどの部分によって実現されているか、或いは、機能設計書に記載された機能と要件定義書に記載された要件との対応関係などが示されている。なお、ここでいう要件とは、ユーザによって所望されるシステムやソフトウェアの仕様である。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】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”
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した従来技術では、トレーサビリティマトリクスの作成に手間がかかる場合があった。具体的には、トレーサビリティマトリクスは、ソフトウェアを開発する際に、ソフトウェア開発者が要件、機能及びソースコードなどを手作業で対応付けることにより作成される。従って、例えば、ソースコードに記述された関数の呼出し関係を考慮してトレーサビリティマトリクスを作成する場合には、ソースコードのコメント部分とは異なる言語で記述された内容に基づいてトレーサビリティマトリクスを作成することとなり、作成に手間がかかる。
【0006】
そこで、本願に開示する技術は、上述した従来技術の問題に鑑みてなされたものであって、トレーサビリティマトリクスを容易に作成することを可能とする言語変換装置、言語変換方法及び言語変換プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するため、開示の装置は、文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出部と、前記抽出部によって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出部と、前記配置状態算出部によって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出部と、前記文字ファイルにおける前記第1文字列を前記類似度算出部によって算出された類似度が最も高い第2文字列に変換する変換部とを有することを特徴とする。
【発明の効果】
【0008】
開示の方法は、トレーサビリティマトリクスを容易に作成することを可能とする。
【図面の簡単な説明】
【0009】
【図1】図1は、実施例1に係る言語変換装置の構成の一例を説明するための図である。
【図2】図2は、実施例1に係る抽出部による処理を模式的に示す図である。
【図3】図3は、実施例1に係る配置状態算出部による処理1を模式的に示す図である。
【図4】図4は、実施例1に係る配置状態算出部による処理2を模式的に示す図である。
【図5】図5は、実施例1に係る配置状態算出部による処理3を模式的に示す図である。
【図6】図6は、実施例1に係る配置状態算出部による処理結果の一例を示す図である。
【図7】図7は、実施例1に係る言語変換装置による処理の手順を説明するためのフローチャートである。
【図8】図8は、実施例2に係る機能情報生成装置の構成の一例を説明するための図である。
【図9】図9は、トレーサビリティマトリクスの例1を説明するために図である。
【図10】図10は、トレーサビリティマトリクスの例2を説明するために図である。
【図11】図11は、実施例2に係る成果物テキスト記憶部によって記憶される情報の一例を示す図である。
【図12】図12は、実施例2に係る機能ファイル記憶部によって記憶される機能ファイルの一例を説明するための図である。
【図13】図13は、実施例2に係る確率情報記憶部によって記憶される確率情報の一例を説明するための図である。
【図14】図14は、実施例2に係る結果ファイル記憶部によって記憶される結果ファイルの一例を説明するための図である。
【図15】図15は、実施例2に係るトレーサビリティマトリクス記憶部によって記憶されるトレーサビリティマトリクスの一例を説明するための図である。
【図16】図16は、実施例2に係る言語変換部による処理を模式的に示す図である。
【図17】図17は、実施例2に係る機能ファイル生成部による処理の一例を模式的に示す図である。
【図18】図18は、実施例2に係る確率情報生成部による処理の一例を模式的に示す図である。
【図19】図19は、実施例2に係る結果ファイル生成部による処理の一例を模式的に示す図である。
【図20】図20は、実施例2に係るトレーサビリティマトリクス生成部の処理の一例を説明するための図である。
【図21】図21は、実施例2に係る機能情報生成装置のユースケースを説明するための図である。
【図22】図22は、実施例2に係る機能情報生成装置によるトレーサビリティマトリクス生成処理の手順を示すフローチャートである。
【図23】図23は、実施例2に係る機能情報生成装置による処理の手順を示すシーケンス図である。
【図24】図24は、実施例2に係る言語変換生成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、本願の開示する言語変換装置、言語変換方法及び言語変換プログラムの実施例を詳細に説明する。なお、本願の開示する言語変換装置、言語変換方法及び言語変換プログラムは、以下の実施例により限定されるものではない。
【実施例1】
【0011】
[実施例1に係る言語変換装置の構成]
実施例1に係る言語変換装置の構成について説明する。図1は、実施例1に係る言語変換装置1の構成の一例を説明するための図である。図1に示すように、実施例1に係る言語変換装置1は、入出力制御I/F部2と、入力部3と、表示部4と、記憶部5と、制御部6とを有する。言語変換装置1は、例えば、PC(Personal Computer)、ワークステーション又は言語変換用の専用装置である。なお、以下では、言語を変換するテキストファイルとして、ソースコードを対象とした場合の言語変換装置について説明する。
【0012】
入出力制御I/F部2は、入力部3、表示部4と制御部6との間での各種情報のやり取りを制御するインタフェースである。入力部3は、例えば、キーボードやタッチパネルなどであり、操作者による種々の情報の入力処理を受け付ける。表示部4は、例えば、ディスプレイなどであり、操作者に対して処理結果を表示出力する。
【0013】
記憶部5は、図示しないパーサ(parser:構文解析器)によってソースコードから作成された木構造のデータを記憶する。記憶部5は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、パーサは、言語変換装置1に内蔵される場合であっても、外部に接続される場合であってもよい。また、記憶部5にソースコードが記憶され、内蔵されたパーサによって作成された木構造のデータを記憶部5が記憶する場合であってもよい。
【0014】
制御部6は、図1に示すように、抽出部6aと、配置状態算出部6bと、類似度算出部6cと、変換部6dとを有し、記憶部5によって記憶された木構造のデータを用いてソースコードに記述された言語を変換する。なお、以下では、英語で記述された文字を日本語の文字に変換する場合について説明するが、開示の技術はこれに限定されるものではなく、例えば、日本語で記述された文字を英語に変換する場合であってもよい。
【0015】
抽出部6aは、ソースコードに含まれる文字列を相互の関連性に従って解析することで求めたソースコードの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する。具体的には、抽出部6aは、木構造の各ノードに対応するソースコードに記述された関数名、クラス名、モジュール名などの文字列を抽出する。また、抽出部6aは、木構造の各ノードに対応するソースコードのコメント部分に記述された文字列を抽出する。
【0016】
例えば、抽出部6aは、英語で記述された関数名、クラス名、モジュール名などを正規表現などに基づいて抽出する。また、例えば、抽出部6aは、日本語で記述されたコメントに対して形態素解析を実行してコメントに含まれる名詞などのキーワードを抽出する。図2は、実施例1に係る抽出部6aによる処理を模式的に示す図である。図2においては、各ノードの上段に英語で記述された関数名、クラス名、モジュール名を示す。また、図2においては、各ノードの下段に日本語で記述されたキーワードを示す。
【0017】
例えば、抽出部6aは、図2に示すように、木構造の根ノードに対応するソースコードから「project」を抽出する。同様に、抽出部6aは、図2に示すように、各ノードに対応するソースコードから英語で記述された関数名、クラス名、モジュール名などを抽出する。また、抽出部6aは、図2に示すように、各ノードに対応するソースコードのコメントから日本語のキーワードを抽出する。一例を挙げると、抽出部6aは、図2の最下位のノードに示すように、コメントに対して形態素解析を実行して、「内容」及び「取得」を抽出する。
【0018】
図1に戻って、配置状態算出部6bは、抽出部6aによって抽出された第1文字列群及び第2文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。具体的には、配置状態算出部6bは、木構造における各最下位ノードに対する影響度を算出する。図3は、実施例1に係る配置状態算出部6bによる処理1を模式的に示す図である。図3においては、「Cookie」の各最下位ノードに対する影響度を算出する場合について示す。
【0019】
例えば、配置状態算出部6bは、図3に示すように、まず、木構造における「Cookie」の位置を抽出する。そして、配置状態算出部6bは、抽出した「Cookie」のトータルの影響度を「1」とし、最下位ノードに対する影響度を算出する。すなわち、配置状態算出部6bは、図3に示すように、「getNakami」及び「clear」のノードに対してそれぞれ「影響度:0.5」を算出する。また、配置状態算出部6bは、図3に示すように、「connect」、「setSecurity」及び「isEnable」のノードに対してそれぞれ「影響度:0.0」を算出する。
【0020】
同様に、配置状態算出部6bは、抽出部6aによって抽出されたすべての文字列の最下位ノードに対する影響度を算出する。以下では、図4及び5を用いて算出の例を説明する。図4は、実施例1に係る配置状態算出部6bによる処理2を模式的に示す図である。例えば、配置状態算出部6bは、図4に示すように、木構造における「クッキー」の位置を抽出する。そして、配置状態算出部6bは、抽出した「クッキー」のトータルの影響度を「1」とし、最下位ノードに対する影響度を算出する。
【0021】
ここで、配置状態算出部6bは、図4に示すように、「Browse.java」のノード及び「clear」のノードに含まれる「クッキー」それぞれのトータルの影響度を「1」として最下位ノードに対する影響度を算出する。例えば、配置状態算出部6bは、図4に示すように、「getNakami」のノードに対する「クッキー」の「影響度:0.5」と「clear」のノードに対する「影響度:1.5」とを算出する。すなわち、配置状態算出部6bは、「getNakami」のノードに対して「Browse.java」から降りてきた「影響度:0.5」を算出する。
【0022】
そして、配置状態算出部6bは、「clear」のノードに対して、「Browse.java」から降りてきた「影響度:0.5」と「clear」のノードに含まれる「クッキー」の「影響度:1.0」を加算した「影響度:1.5」を算出する。また、配置状態算出部6bは、図4に示すように、「connect」、「setSecurity」及び「isEnable」のノードに対してそれぞれ「影響度:0.0」を算出する。
【0023】
図5は、実施例1に係る配置状態算出部6bによる処理3を模式的に示す図である。例えば、配置状態算出部6bは、図5に示すように、「getNakami」、「clear」、「connect」、「setSecurity」及び「isEnable」のノードそれぞれに対して、「セッション」の影響度「0.0」、「0.0」、「1.333」、「0.333」及び「1.333」を算出する。
【0024】
上記したように、配置状態算出部6bは、抽出部6aによって抽出されたすべての文字列について最下位ノードに対する影響度を算出する。図6は、実施例1に係る配置状態算出部6bによる処理結果の一例を示す図である。図6においては、図6の(A)が、日本語のキーワードが影響を与える最下位ノードについて示す。また、図6においては、図6の(B)が、英語のキーワードが影響を与える最下位ノードについて示す。例えば、図6の(A)に示すように、「クッキー」は、「getNakami」及び「clear」にそれぞれに「1」が対応付けられており、影響を与えることを示される。
【0025】
図1に戻って、類似度算出部6cは、配置状態算出部6bによって算出された影響度に基づいて、第1文字列群に含まれる第1文字列に対する第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する。具体的には、類似度算出部6cは、第1の文字列と第2の文字列との最下位ノードに与える影響度の類似度を算出する。例えば、類似度算出部6cは、英語の文字列と日本語の文字列との最下位ノードに与える影響度の類似度を以下に示す式(1)により算出する。
【0026】
【数1】
【0027】
例えば、類似度算出部6cは、式(1)に示す「a」を英語の文字列、「b」を日本語の文字列として、Cos類似度を算出することで英語の文字列と日本語の文字列との最下位ノードに与える影響度の類似度を算出する。一例を挙げると、類似度算出部6cは、Cos類似度(“Cookie”、“クッキー”)や、Cos類似度(“Cookie”、“セッション”)などを計算することで、英語の文字列「Cookie」と日本語の文字列との類似度を算出する。
【0028】
図1に戻って、変換部6dは、第1文字列を類似度算出部6cによって算出された類似度が最も高い第2文字列に変換する。例えば、変換部6dは、英語の文字列を類似度の高い日本語の文字列に変換する。一例を挙げると、類似度算出部6cが「Cookie」に対する類似度を算出した日本語の文字列のうち、「クッキー」との類似度が最も高い場合には、変換部6dは、ソースコード中の「Cookie」を「クッキー」に変換する。
【0029】
[実施例1に係る言語変換装置による処理の手順]
実施例1に係る言語変換装置1による処理の手順を説明する。図7は、実施例1に係る言語変換装置1による処理の手順を説明するためのフローチャートである。なお、図7においては、ソースコードに対してパーサによる構文解析が実行され、木構造が生成された後の処理について示す。
【0030】
図7に示すように、実施例1に係る言語変換装置1においては、抽出部6aは、ソースコードから生成された木構造の各ノードに配置された文字列から英語キーワード及び日本語キーワードを抽出する(ステップS101)。そして、配置状態算出部6bは、抽出部6aによって抽出された英語キーワード及び日本語キーワードについて、各キーワードの配置状態に基づいて、各文字列の最下位ノードに対する影響度を算出する(ステップS102)。
【0031】
その後、類似度算出部6cは、配置状態算出部6bによって算出された影響度に基づいて、英語キーワードと日本語キーワードとの類似度を算出する(ステップS103)。そして、変換部6dは、類似度算出部6cによって算出された類似度に基づいて、英語キーワードを類似度が最も高い日本語キーワードに変換して(ステップS104)、処理を終了する。
【0032】
[実施例1の効果]
上述したように、実施例1によれば、抽出部6aは、ソースコードに含まれる文字列を相互の関連性に従って解析することで求めたソースコードの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する。そして、配置状態算出部6bは、抽出部6aによって抽出された第1文字列群及び第2文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。そして、類似度算出部6cは、配置状態算出部6bによって算出された影響度に基づいて、第1文字列群に含まれる第1文字列に対する第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する。そして、変換部6dは、ソースコードにおける第1文字列を類似度算出部6cによって算出された類似度が最も高い第2文字列に変換する。従って、実施例1に係る言語変換装置1は、ソースコードに含まれる言語を、ソフトウェア開発者が使い慣れた言語に自動で変換することができ、トレーサビリティマトリクスを容易に作成することを可能とする。例えば、ソフトウェア開発者が関数名に記述されたソースコード中の読み出し関係を考慮したトレーサビリティマトリクスを作成する場合であっても、容易に作成することを可能にする。
【実施例2】
【0033】
[実施例2に係る機能情報生成装置の構成]
上述した実施例1においては、言語変換装置1を単独で用いる場合について説明した。実施例2では、トレーサビリティマトリクスを生成する機能情報生成装置に言語変換装置の機能を内蔵させた場合の実施例について説明する。図8は、実施例2に係る機能情報生成装置100の構成の一例を説明するための図である。図8に示すように、実施例2に係る機能情報生成装置100は、入出力制御I/F部10と、入力部20と、表示部30と、記憶部40と、制御部50とを有している。そして、機能情報生成装置100は、ソフトウェアの成果物テキストに基づいて、トレーサビリティマトリクスを生成する。なお、機能情報生成装置100は、例えば、PC(Personal Computer)、ワークステーション又は機能情報生成用の専用装置である。
【0034】
ここで、まず、トレーサビリティマトリクスについて説明する。図9は、トレーサビリティマトリクスの例1を説明するための図である。図9においては、ソフトウェアが有する機能と要件とを対応付けたトレーサビリティマトリクスを示している。例えば、トレーサビリティマトリクスは、図9に示すように、要件とモジュール名とが対応付けられる。ここで、要件とは、ユーザによって所望されるシステムやソフトウェアの仕様である。要件としては、例えば、図9に示すように、「機器登録確認」、「会員登録」、「会員登録確認」、「アプリケーションダウンロード」、「利用権入手確認」などが含まれている。また、モジュール名とは、所定の機能を実現するためのプログラム群の名称である。モジュール名としては、例えば、図9に示すように、「所有:2−4−1制御モジュール」、「所有:2−4−2DBアクセス制御」、「所有:2−4−3鍵管理」、「所有:2−4−4ログ管理」、「NI2−3−1通信監理」、「NI2−3−2制御モジュール」などが含まれている。
【0035】
トレーサビリティマトリクスの一例を挙げると、図9に示すように、「要件:アプリケーションダウンロード」において「モジュール名:NI2−3−1通信監理、機能名:通信初期化機能」、「モジュール名:NI2−3−1通信監理、機能名:電文送受信機能」の項目にそれぞれ「○」が示されている。上記した情報は、「アプリケーションダウンロード」の仕様を満たすためには、「NI設計書2−3−1」に示された「通信初期化機能」と「電文送受信機能」とが必要であることを意味する。
【0036】
また、トレーサビリティマトリクスは、機能と要件とを対応付けたものだけではなく、例えば、機能とソースコードとを対応付けたものも作成される。図10は、トレーサビリティマトリクスの例2を説明するために図である。例えば、トレーサビリティマトリクスは、図10に示すように、モジュール名とクラスとが対応付けられる。ここで、クラスとは、プログラミングにおいてデータと操作手順とをまとめたオブジェクトを定義したものである。
【0037】
図8に戻って、入出力制御I/F部10は、入力部20、表示部30と記憶部40、制御部50との間での各種情報のやり取りを制御するインタフェースである。入力部20は、例えば、キーボードやタッチパネルなどであり、操作者による種々の情報の入力処理を受け付ける。例えば、入力部20は、機能設計書に記述された機能の抽出に関する情報の入力処理を受け付ける。表示部30は、例えば、ディスプレイなどであり、操作者に対して処理結果を表示出力する。例えば、表示部30は、後述する制御部50によって生成されたトレーサビリティマトリクスを表示出力する。
【0038】
記憶部40は、図8に示すように、成果物テキスト記憶部41と、機能ファイル記憶部42と、確率情報記憶部43と、結果ファイル記憶部44と、トレーサビリティマトリクス記憶部45とを有する。記憶部40は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【0039】
成果物テキスト記憶部41は、ソフトウェアに関与する各種テキストファイルを記憶する。具体的には、成果物テキスト記憶部41は、ソフトウェアの開発に際して作成された機能設計書、要件定義書、ソースコード、Read Meなどの成果物テキストを記憶する。図11は、実施例2に係る成果物テキスト記憶部41によって記憶される情報の一例を示す図である。例えば、成果物テキスト記憶部41は、図11に示すように、機能設計書及びソースコードなどを記憶する。一例を挙げると、成果物テキスト記憶部41は、図11に示すように、「第1章 システムの説明 このシステムは〜〜」などが記述された機能設計書を記憶する。また、成果物テキスト記憶部41は、図11に示すように、クラス名「##DataSend.pl」、「##作成日 20100911」、「##作成者 nagano」などが記述されたソースコードを記憶する。
【0040】
図8に戻って、機能ファイル記憶部42は、後述する制御部50によって生成された機能ファイルを記憶する。具体的には、機能ファイル記憶部42は、後述する制御部50が成果物テキスト記憶部41によって記憶された機能設計書から生成した機能ファイルを記憶する。図12は、実施例2に係る機能ファイル記憶部42によって記憶される機能ファイルの一例を説明するための図である。
【0041】
例えば、機能ファイル記憶部42は、機能の説明に記述された文字列に含まれる名詞を機能ごとに対応付けた機能ファイルを記憶する。一例を挙げると、機能ファイル記憶部42は、図12に示すように、「<func>データ送信機能</func>」に「クライアント 名詞」、「サーバ 名詞」、「以下 名詞」、「情報 名詞」などを対応付けた機能ファイルを記憶する。
【0042】
図8に戻って、確率情報記憶部43は、後述する制御部50によって生成された確率情報を記憶する。具体的には、確率情報記憶部43は、後述する制御部50が成果物テキスト記憶部41によって記憶されたソースコードを用いて生成した確率情報を記憶する。図13は、実施例2に係る確率情報記憶部43によって記憶される確率情報の一例を説明するための図である。
【0043】
例えば、確率情報記憶部43は、ソースコードに記述された文字列に含まれる名詞と、当該ソースコードに含まれるクラス名と、総和とを対応付けた確率情報を記憶する。一例を挙げると、確率情報記憶部43は、図13に示すように、「作成日」に「DataSend.pl:1」、「algo.pl:0」、「DataTrans.pl:1」、「Serch.pl:1」などを対応付けた確率情報を記憶する。上記した情報は、「DataSend.pl」、「DataTrans.pl」及び「Serch.pl」のクラス内のコメントに「作成日」が記述されていることを意味する。そして、確率情報記憶部43は、図13に示すように、「作成日」に「総和(作成日)=3」を対応付けて記憶する。上記した情報は、「作成日」が記述されたクラス名が「3つ」あることを意味する。同様に、確率情報記憶部43は、「作成者」、「本プログラム」、「・・・」、「クライアント」、「情報」、「社員番号」、「・・・」、「暗号化」、「解除」などに、クラス名と総和とを対応付けた確率情報を記憶する。
【0044】
図8に戻って、結果ファイル記憶部44は、後述する制御部50によって生成された結果ファイルを記憶する。具体的には、結果ファイル記憶部44は、後述する制御部50が、機能ファイル記憶部42によって記憶された機能ファイルと、確率情報記憶部43によって記憶された確率情報とを用いて生成した結果ファイルを記憶する。図14は、実施例2に係る結果ファイル記憶部44によって記憶される結果ファイルの一例を説明するための図である。
【0045】
例えば、結果ファイル記憶部44は、図14に示すように、機能ごとにクラスの確率が示された結果ファイルを記憶する。一例を挙げると、結果ファイル記憶部44は、「<func>データ送信機能</func>」に「DataSend.pl:50%」、「algo.pl:15%」、「hoge.pl:5%」が示された結果ファイルを記憶する。上記した例は、「DataSend.pl」が用いられる場合の「50%」が「データ送信機能」に用いられることを意味する。また、「algo.pl」が用いられる場合の「15%」が「データ送信機能」に用いられることを意味する。また、「hoge.pl」が用いられる場合の「5%」が「データ送信機能」に用いられることを意味する。同様に、結果ファイル記憶部44は、図14に示すように、「<func>データ暗号化機能</func>」に「DataSend.pl:0%」、「algo.pl:55%」、「hoge.pl:5%」が示された結果ファイルを記憶する。
【0046】
図8に戻って、トレーサビリティマトリクス記憶部45は、後述する制御部50によって生成されたトレーサビリティマトリクスを記憶する。図15は、実施例2に係るトレーサビリティマトリクス記憶部45によって記憶されるトレーサビリティマトリクスの一例を説明するための図である。
【0047】
例えば、トレーサビリティマトリクス記憶部45は、図15に示すように、「データ送信機能」に「DataSend.pl:○」、「algo.pl:○」、「DataTrans.pl」、「Serch.pl」などを対応付けたトレーサビリティマトリクスを記憶する。上記した情報は、「データ送信機能」を実現するために、「DataSend.pl」及び「algo.pl」などが必要であることを意味する。
【0048】
図8に戻って、制御部50は、言語変換部51と、機能ファイル生成部52と、確率情報生成部53と、結果ファイル生成部54と、トレーサビリティマトリクス生成部55とを有し、成果物テキスト記憶部41によって記憶されたソースコードと機能設計書とに基づいてトレーサビリティマトリクスを生成する。制御部50は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路、又は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路などである。
【0049】
言語変換部51は、成果物テキスト記憶部41によって記憶されたソースコードにおいて英語で記述された文字列を日本語で記述された文字列に変換する。なお、図8に示す言語変換部51は、実施例1に係る言語変換装置1に対応する。図16は、実施例2に係る言語変換部51による処理を模式的に示す図である。
【0050】
図16に示すように、言語変換部51は、まず、成果物テキストによって記憶されたソースコードを読み出し、読み出したソースコードに対してパーサにより構文解析を実行する。すなわち、言語変換部51は、ソースコードを構文解析することで、木構造のデータを生成する。例えば、言語変換部51は、図16に示すように、ソースコードから「eventBlock」、「eventDec」、「eventDec」などのノードを有する木構造のデータを生成する。
【0051】
ここで、各ノードには対応したコメントが平文で入っている。例えば、図16に示すように、「doorClosed」のノードには、クラス名「class:EfncDecode」に対応するコメント「本クラスは暗号化データを解除する」が入っている。そして、言語変換部51は、木構造の各ノードに入っているコメントに対して形態素解析を実行する。例えば、言語変換部51は、図16に示すように、「本クラスは暗号化データを解除する」に対して形態素解析を実行して、「本クラス 名詞」、「は 助詞」、「暗号化 名詞」などの品詞ごとの文字列に分割する。
【0052】
そして、言語変換部51は、形態素解析によって分割した文字列から名詞を抽出する。例えば、言語変換部51は、図16に示すように、「本クラス 名詞」、「暗号化 名詞」を抽出する。その後、言語変換部51は、文字列ごとの最下位ノードへの影響度の類似度に基づいて、類似度の高い英語キーワードを日本語キーワードに変換する。例えば、言語変換部51は、図16に示すように、ソースコードにおけるクラス名「Efnc_main」及び「EfncDecode」をそれぞれ「暗号化」及び「解除」に変換する。
【0053】
図8に戻って、機能ファイル生成部52は、ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する。具体的には、機能ファイル生成部52は、成果物テキスト記憶部41によって記憶された機能設計書から機能及び該機能に対応するテキストのデータを抽出する。そして、機能ファイル生成部52は、抽出した機能ごとに対応するテキストに含まれる名詞を抽出し、抽出した名詞を機能に対応付けた機能ファイルを生成する。そして、機能ファイル生成部52は、生成した機能ファイルを機能ファイル記憶部42に格納する。
【0054】
図17は、実施例2に係る機能ファイル生成部52による処理の一例を模式的に示す図である。例えば、機能ファイル生成部52は、図17の(A)に示す機能設計書を成果物テキスト記憶部41から読み出し、読み出した機能設計書をルールベース(rule base)に基づいて機能及び該機能に対応するテキストごとに分割する。ここで、ルールベースとは、機能とテキストとの組合せのルールを概念化したものである。すなわち、機能ファイル生成部52は、ルールベースに基づいて機能設計書中の機能とテキストとの組合せを推定し、推定した組合せのデータを機能設計書から分割する。
【0055】
例えば、機能ファイル生成部52は、図17の(B)に示すように、「<func>データ送信機能</func>」及び該機能に対応するテキスト「<txt>クライアントからサーバへ以下の情報を送信する機能 ・ユーザ名 ・社員番号</txt>」を機能設計書から分割する。同様に、機能ファイル生成部52は、図17の(B)に示すように、「<func>データ暗号化機能</func>」、「<func>検索機能</func>」などを機能設計書から分割する。なお、図17に示す機能ファイルにおいては、funcタグに機能名、txtタグに対応するテキストが入ったXML形式で示される。
【0056】
そして、機能ファイル生成部52は、分割した機能ごとのテキストに対して形態素解析を実行して、テキストを品詞ごとに分割する。例えば、機能ファイル生成部52は、図17の(C)に示すように、「<func>データ送信機能</func>」に対応するテキストに対して形態素解析を実行して、「クライアント 名詞」、「から 助詞」、「サーバ 名詞」、「へ 助詞」、「以下 名詞」、「の 助詞」、「情報 名詞」などに分割する。そして、機能ファイル生成部52は、品詞ごとに分割した文字から名詞を抽出して、機能に対応付けた機能ファイルを生成する。例えば、機能ファイル生成部52は、図17の(D)に示すように、「<func>データ送信機能</func>」に「クライアント 名詞」、「サーバ 名詞」、「以下 名詞」、「情報 名詞」などを対応付けた機能ファイルを生成して機能ファイル記憶部42に格納する。なお、形態素解析は、例えば、MeCabなどの形態素解析器によって実行される。また、上記した機能ファイルの生成においては、ルールベースに基づいて機能及び該機能に対応するテキストを分割する場合について説明したが、開示の技術はこれに限定されるものではなく、例えば、ソフトウェア開発者が手作業で分割する場合であってもよい。
【0057】
図8に戻って、確率情報生成部53は、言語変換部51によって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞がソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する。具体的には、確率情報生成部53は、第2の文字ファイルを用いたベイズ(Bayes)学習により確率情報を生成する。図18は、実施例2に係る確率情報生成部53による処理の一例を模式的に示す図である。
【0058】
例えば、確率情報生成部53は、図18の(A)に示すソースコードを成果物テキスト記憶部41から読み出す。そして、確率情報生成部53は、図18の(B)に示すように、読み出したソースコードのコメント部分に対して形態素解析を実行して、「DataSend.pl 未知語」、「本プログラム 名詞」、「は 助詞」、「フォーム 名詞」、「に 助詞」などに分割する。そして、確率情報生成部53は、図18の(C)に示すように、品詞ごとに分割した文字から名詞「作成日」、「作成者」、「本プログラム」、「フォーム」などを抽出する。さらに、確率情報生成部53は、図18の(D)に示すように、抽出した名詞ごとのベイズ学習により、確率情報を生成する。ここで、ベイズの定理について説明する。ベイズの定理とは、ある結果が得られた場合に、その結果を反映した事後確率を求める確率論の定理である。すなわち、確率情報生成部53は、所定の名詞(w)が出現した場合に、該名詞(w)が出現したテキストがカテゴリ(c)である確率P(w|c)を示す確率情報を生成する。
【0059】
例えば、確率情報生成部53は、図18の(D)に示すように、「作成日」に「DataSend.pl:1」、「algo.pl:0」、「DataTrans.pl:1」、「Serch.pl:1」などのクラスと、「総和(作成日)=3」とを対応付けた確率情報を生成する。すなわち、確率情報生成部53は、「作成日」が記述されたテキストは、「1/3」が「DataSend.pl」であり、「1/3」が「DataTrans.pl」であり、残りの「1/3」が「Serch.pl」であることを示す確率情報を生成する。そして、確率情報生成部53は、生成した確率情報を確率情報記憶部43に格納する。同様に、確率情報生成部53は、図18の(D)に示すように、「作成者」、「本プログラム」、「・・・」、「クライアント」、「情報」、「社員番号」、「・・・」、「暗号化」、「解除」などに対するベイズ学習により確率情報を生成する。
【0060】
図8に戻って、結果ファイル生成部54は、所定の機能に関して第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述されたソースコードの項目全てを第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を第2情報を用いて算出する。具体的には、結果ファイル生成部54は、機能ファイルと、確率情報生成部53がベイズ学習により生成した確率情報とを用いたベイズ推定により確率を算出する。図19は、実施例2に係る結果ファイル生成部54による処理の一例を模式的に示す図である。
【0061】
例えば、結果ファイル生成部54は、図19の(A)に示す「データ送信機能」の機能ファイルを機能ファイル記憶部42から読み出し、「データ送信機能」に対する結果ファイルを生成する。この時、結果ファイル生成部54は、まず、確率情報記憶部43によって記憶された確率情報を参照して、「データ送信機能」の機能ファイルに含まれる全ての名詞の確率情報を取得する。そして、結果ファイル生成部54は、取得した確率情報において、「データ送信機能」の機能ファイルに含まれる全ての名詞について、該名詞が記述されていた各クラスの情報を取得する。そして、結果ファイル生成部54は、取得した各クラスが記述された場合のソースコードが「データ送信機能」である確率を算出する。
【0062】
一例を挙げると、結果ファイル生成部54は、「DataSend.pl」が記述された場合のソースコードが「データ送信機能」である確率P(データ送信機能|DataSend.pl)を以下に示す式により算出する。
【0063】
結果ファイル生成部54は、「P(データ送信機能|DataSend.pl)」=「データ送信機能の機能ファイルに含まれる名詞のうち「DataSend.pl」と対応付けられた全ての名詞の結合確率ΠP(x)」を算出する。すなわち、結果ファイル生成部54は、図13に示す確率情報を参照して、「作成日」、「作成者」、「本プログラム」、「クライアント」、「情報」、「社員番号」などについて、それぞれが記述された場合の「DataSend.pl」である確率を算出し、算出した確率の積を算出する。
【0064】
同様に、結果ファイル生成部54は、取得したクラスについて「結合確率ΠP(x)」を算出する。そして、結果ファイル生成部54は、算出した「結合確率ΠP(x)」を「データ送信機能」に対応付けた結果ファイルを生成して、生成した結果ファイルを結果ファイル記憶部44に格納する。例えば、結果ファイル生成部54は、図19の(B)に示すように、「<func>データ送信機能</func>」に「DataSend.pl 50%」、「algo.pl 15%」及び「hoge.pl 5%」を対応付けた結果ファイルを生成する。
【0065】
なお、各名詞が記述された場合に「DataSend.pl」である確率は、以下の式により算出される。例えば、「クライアント」が記述された場合に「DataSend.pl」である確率P(クライアント)は、P(クライアント)=(DataSend.pl中のクライアントの出現数/DataSend.plの数)/{(DataSend.pl中のクライアントの出現数/DataSend.plの数)+(DataSend.pl以外のクライアントの出現数/DataSend.pl以外の数)}により算出される。
【0066】
図8に戻って、トレーサビリティマトリクス生成部55は、算出された確率の値が所定の閾値を超える項目を特定し、当該項目と所定の機能とに対応関係があることを示す機能情報を生成する。具体的には、トレーサビリティマトリクス生成部55は、結果ファイル記憶部44によって記憶された結果ファイルを参照して、確率が任意の閾値を超えたクラスと機能とを関連付けたトレーサビリティマトリクスを生成する。図20は、実施例2に係るトレーサビリティマトリクス生成部55の処理の一例を説明するための図である。
【0067】
例えば、任意の閾値が「10%」であった場合には、トレーサビリティマトリクス生成部55は、図20の(B)に示すように、図20の(A)に示す結果ファイルにおいて確率が10%を超えたクラス「DataSend.pl」及び「algo.pl」と、機能「データ送信機能」とを関連付けたトレーサビリティマトリクスを生成する。そして、トレーサビリティマトリクス生成部55は、生成したトレーサビリティマトリクスをトレーサビリティマトリクス記憶部45に格納する。なお、閾値は、機能情報生成装置100の管理者や操作者によって任意に決定される。
【0068】
また、トレーサビリティマトリクス生成部55は、生成したトレーサビリティマトリクスを表示部30にて表示させるように制御する。ここで、本願の開示する機能情報生成装置100のユースケースについて図21を用いて説明する。図21は、実施例2に係る機能情報生成装置100のユースケースを説明するための図である。図21においては、ソフトウェア開発者によって指定された機能に関連するソースコードを表示する場合について示す。例えば、実施例2に係る機能情報生成装置100は、図21に示すように、事前処理として機能設計書に対してテキスト分割、形態素解析、名詞抽出することにより機能ファイルを生成し、機能ファイル記憶部42に格納する。同時に、機能情報生成装置100は、図21に示すように、事前処理としてソースコードに対して言語変換、形態素解析、名詞抽出、ベイズ学習を実行することにより確率情報を生成し、確率情報記憶部43に格納する。
【0069】
そして、ソフトウェア開発者によって機能が指定されると、結果ファイル生成部54が指定された機能に相当する機能ファイルを機能ファイル記憶部42から読み出す。さらに、結果ファイル生成部54は、読み出した機能ファイルと確率情報記憶部43によって記憶された確率情報とに基づいてベイズ推定を実行することで結果ファイルを生成する。そして、トレーサビリティマトリクス生成部55が、結果ファイル生成部54によって生成された結果ファイルトレーサビリティマトリクスを生成するとともに、指定された機能に関連するクラスを表示部30に表示させる。なお、図21に示すユースケースは、あくまで一例である。例えば、実施例2に係る機能情報生成装置100は、機能設計書及びソースコードが入力された時点で、トレーサビリティマトリクスを自動的に生成するように設定することも可能である。なお、上記した実施例2では、言語変換部を備えた機能情報生成装置について説明したが、開示の技術はこれに限定されるものではなく、例えば、実施例1に記載した言語変換装置1にトレーサビリティマトリクスを生成する機能を備えさせることも可能である。
【0070】
[実施例2に係る機能情報生成装置による処理の手順]
次に、実施例2に係る機能情報生成装置100による処理の手順について、図22及び23を用いて説明する。図22は、実施例2に係る機能情報生成装置100によるトレーサビリティマトリクス生成処理の手順を示すフローチャートである。
【0071】
図22に示すように、実施例2に係る機能情報生成装置100においては、ソフトウェア開発者によって成果物テキストがアップロードされると(ステップS201肯定)、言語変換部51は、アップロードされたソースコードの言語を変換する(ステップS202)。そして、機能ファイル生成部52は、機能設計書を用いて機能ファイルを生成する(ステップS203)。そして、確率情報生成部53は、ソースコードを用いて確率情報を生成する(ステップS204)。
【0072】
その後、ソフトウェア開発者によって機能が指定されると(ステップS205肯定)、結果ファイル生成部54は、機能ファイル生成部52によって生成された機能ファイルを取得し(ステップS206)、確率情報生成部53によって生成された確率情報を参照して、ベイズ推定により結果ファイルを生成する(ステップS207)。
【0073】
続いて、トレーサビリティマトリクス生成部55は、結果ファイル生成部54によって生成された結果ファイルに基づいてトレーサビリティマトリクスを生成し(ステップS208)、ソフトウェア開発者によって指定された機能に関連するクラスを表示部30に表示させ(ステップS209)、処理を終了する。なお、実施例2に係る機能情報生成装置100は、成果物テキストがアップロードされるまで待機状態である(ステップS201否定)。また、実施例2に係る機能情報生成装置100は、ソフトウェア開発者から機能が指定されるまで待機状態である(ステップS205否定)。また、上述した処理の手順では、機能ファイルを生成した後に確率情報を生成する場合について説明したが、開示の技術はこれに限定されるものではなく、生成の順番は任意であり、同時に生成することも可能である。
【0074】
図23は、実施例2に係る機能情報生成装置100による処理の手順を示すシーケンス図である。図23に示すように、実施例2に係る機能情報生成装置100においては、システム開発担当者である開発者Bによって機能設計書がアップロードされると(ステップS301)、機能ファイル生成部52は、アップロードされた機能設計書を用いて機能ファイルを生成する(ステップS302)。そして、開発者Bによってソースコードがアップロードされると(ステップS303)、言語変換部51は、アップロードされたソースコードの言語を変換する(ステップS304)。そして、確率情報生成部53は、言語変換されたソースコードを用いて確率情報を生成する(ステップS305)。
【0075】
続いて、機能追加担当者である開発者Aによって機能が指定されると(ステップS306)、結果ファイル生成部54は、機能ファイル生成部52によって生成された機能ファイルを取得し(ステップS307)、確率情報生成部53によって生成された確率情報を参照して、結果ファイルを生成する(ステップS308)。結果ファイル生成部54によって結果ファイルが生成されると、トレーサビリティマトリクス生成部55は、生成された結果ファイルに基づいて、トレーサビリティマトリクスを生成し(ステップS309)、指定された機能に関連するクラスの情報を表示部30に表示させる(ステップS310)ことで、開発者Aに提示する。
【0076】
[実施例2の効果]
上述したように、実施例2によれば、機能ファイル生成部52は、ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す機能ファイルを生成する。そして、確率情報生成部53は、言語変換部51によって英語キーワードが日本語キーワードに変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る確率情報を生成する。そして、結果ファイル生成部54は、所定の機能に関して機能ファイルに対応付けられている全ての名詞について、いずれかの名詞が記述されたソースコードの項目全てを確率情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を確率情報を用いて算出する。そして、トレーサビリティマトリクス生成部55は、前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する。従って、実施例2に係る機能情報生成装置100は、関数名などに記述されたソースコードの呼出し関係を考慮することができ、精度の高いトレーサビリティマトリクスを生成することを可能にする。
【実施例3】
【0077】
これまで実施例1及び2について説明したが、本願が開示する技術は実施例1及び2に限定されるものではない。すなわち、これらの実施例は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
【0078】
(1)対象となるテキストファイル
上記した実施例1では、言語を変換するテキストファイルとしてソースコードを用いる場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、図書情報や評判情報などの他のテキストファイルにおける言語を変換する場合にも適用可能である。
【0079】
(2)類似度の計算
上述した実施例1では、類似度としてCos類似度を算出する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、木構造における文字列の位置関係から類似度を算出する場合であってもよい。
【0080】
(3)形態素解析
上記した実施例1及び2では、機能設計書を機能ごとにテキスト分割し、テキスト部分に対して形態素解析を実行する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、機能名に対して形態素解析を実行する場合であってもよい。
【0081】
(4)名詞抽出
上記した実施例1及び2では、テキストファイルから名詞を抽出する際に、単独の名詞を抽出する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、連続する名詞を複合した複合名詞を処理対象とする場合であってもよい。
【0082】
(5)名詞の重要度
上記した実施例2では、名詞の出現数に基づいて確率情報を生成する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、名詞の重要度に応じて重み付けをして確率情報を生成する場合であってもよい。かかる場合には、例えば、tf−idfによりソースコード中の特徴的な名詞を抽出し、抽出した名詞に対して所定の重み付けをして確率情報を生成する。
【0083】
(6)ベイズ推定
上述した実施例2では、単純なベイズ推定により結果ファイルを生成する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、Graham方式やRobinson方式などにより確率情報を出現数で示したり、機能ファイルに記述する名詞を絞り込こんだり、などのアレンジを実行する場合であってもよい。
【0084】
(7)システム構成等
例えば、各装置の分散・統合の具体的形態(例えば、図8の形態)は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、機能ファイル記憶部42と確率情報記憶部43とを一つの記憶部として統合してもよく、一方、結果ファイル生成部54を、機能ファイルを取得する機能ファイル取得部と、結果ファイルを生成する生成部とに分散してもよい。
【0085】
また、制御部6を言語変換装置1の外部装置としてネットワーク経由で接続するようにしてもよく、或いは抽出部6a、配置状態算出部6b、類似度算出部6cを別の装置がそれぞれ有し、ネットワークに接続されて協働することで、上述した言語変換装置1の機能を実現するようにしてもよい。
【0086】
(8)言語変換プログラム
上記実施例1で説明した言語変換装置1は、あらかじめ用意されたプログラムをコンピュータで実行することで実現することもできる。そこで、以下では、図1に示した言語変換装置1と同様の機能を実現する言語変換プログラムを実行するコンピュータの一例を説明する。
【0087】
図24は、実施例3に係る言語変換プログラムを実行するコンピュータ1000を示す図である。図24に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0088】
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
【0089】
ここで、図24に示すように、ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。実施例3に係る言語変換プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施例で説明した抽出部6aと同様の情報処理を実行する抽出ステップと、配置状態算出部6bと同様の情報処理を実行する配置状態算出ステップと、類似度算出部6cと同様の情報処理を実行する類似度算出ステップと、変換部6dと同様の情報処理を実行する変換ステップとが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
【0090】
また、上記実施例で説明した記憶部5に記憶されるデータのように、言語変換プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、抽出ステップと、配置状態算出ステップと、類似度算出ステップと、変換ステップとを実行する。
【0091】
なお、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0092】
これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0093】
1 言語変換装置
6a 抽出部
6b 配置状態算出部
6c 類似度算出部
6d 変換部
51 言語変換部
52 機能ファイル生成部
53 確率情報生成部
54 結果ファイル生成部
55 トレーサビリティマトリクス生成部
100 機能情報生成装置
【技術分野】
【0001】
この発明は、言語変換装置、言語変換方法及び言語変換プログラムに関する。
【背景技術】
【0002】
従来、現時点で稼動しているシステムで利用されているソフトウェアの機能をユーザの要求に従って変更する場合がある。かかる場合には、ソフトウェア開発者は、現時点で利用されているソフトウェアが開発された際に作成されたトレーサビリティマトリクス(Traceability Matrix)を参照することにより、変更すべきソースコードを特定する。
【0003】
トレーサビリティマトリクスは、要件、機能及びソースコードなどが対応付けられた表である。例えば、機能設計書中のどの機能がソースコード中のどの部分によって実現されているか、或いは、機能設計書に記載された機能と要件定義書に記載された要件との対応関係などが示されている。なお、ここでいう要件とは、ユーザによって所望されるシステムやソフトウェアの仕様である。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】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”
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した従来技術では、トレーサビリティマトリクスの作成に手間がかかる場合があった。具体的には、トレーサビリティマトリクスは、ソフトウェアを開発する際に、ソフトウェア開発者が要件、機能及びソースコードなどを手作業で対応付けることにより作成される。従って、例えば、ソースコードに記述された関数の呼出し関係を考慮してトレーサビリティマトリクスを作成する場合には、ソースコードのコメント部分とは異なる言語で記述された内容に基づいてトレーサビリティマトリクスを作成することとなり、作成に手間がかかる。
【0006】
そこで、本願に開示する技術は、上述した従来技術の問題に鑑みてなされたものであって、トレーサビリティマトリクスを容易に作成することを可能とする言語変換装置、言語変換方法及び言語変換プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するため、開示の装置は、文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出部と、前記抽出部によって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出部と、前記配置状態算出部によって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出部と、前記文字ファイルにおける前記第1文字列を前記類似度算出部によって算出された類似度が最も高い第2文字列に変換する変換部とを有することを特徴とする。
【発明の効果】
【0008】
開示の方法は、トレーサビリティマトリクスを容易に作成することを可能とする。
【図面の簡単な説明】
【0009】
【図1】図1は、実施例1に係る言語変換装置の構成の一例を説明するための図である。
【図2】図2は、実施例1に係る抽出部による処理を模式的に示す図である。
【図3】図3は、実施例1に係る配置状態算出部による処理1を模式的に示す図である。
【図4】図4は、実施例1に係る配置状態算出部による処理2を模式的に示す図である。
【図5】図5は、実施例1に係る配置状態算出部による処理3を模式的に示す図である。
【図6】図6は、実施例1に係る配置状態算出部による処理結果の一例を示す図である。
【図7】図7は、実施例1に係る言語変換装置による処理の手順を説明するためのフローチャートである。
【図8】図8は、実施例2に係る機能情報生成装置の構成の一例を説明するための図である。
【図9】図9は、トレーサビリティマトリクスの例1を説明するために図である。
【図10】図10は、トレーサビリティマトリクスの例2を説明するために図である。
【図11】図11は、実施例2に係る成果物テキスト記憶部によって記憶される情報の一例を示す図である。
【図12】図12は、実施例2に係る機能ファイル記憶部によって記憶される機能ファイルの一例を説明するための図である。
【図13】図13は、実施例2に係る確率情報記憶部によって記憶される確率情報の一例を説明するための図である。
【図14】図14は、実施例2に係る結果ファイル記憶部によって記憶される結果ファイルの一例を説明するための図である。
【図15】図15は、実施例2に係るトレーサビリティマトリクス記憶部によって記憶されるトレーサビリティマトリクスの一例を説明するための図である。
【図16】図16は、実施例2に係る言語変換部による処理を模式的に示す図である。
【図17】図17は、実施例2に係る機能ファイル生成部による処理の一例を模式的に示す図である。
【図18】図18は、実施例2に係る確率情報生成部による処理の一例を模式的に示す図である。
【図19】図19は、実施例2に係る結果ファイル生成部による処理の一例を模式的に示す図である。
【図20】図20は、実施例2に係るトレーサビリティマトリクス生成部の処理の一例を説明するための図である。
【図21】図21は、実施例2に係る機能情報生成装置のユースケースを説明するための図である。
【図22】図22は、実施例2に係る機能情報生成装置によるトレーサビリティマトリクス生成処理の手順を示すフローチャートである。
【図23】図23は、実施例2に係る機能情報生成装置による処理の手順を示すシーケンス図である。
【図24】図24は、実施例2に係る言語変換生成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0010】
以下に添付図面を参照して、本願の開示する言語変換装置、言語変換方法及び言語変換プログラムの実施例を詳細に説明する。なお、本願の開示する言語変換装置、言語変換方法及び言語変換プログラムは、以下の実施例により限定されるものではない。
【実施例1】
【0011】
[実施例1に係る言語変換装置の構成]
実施例1に係る言語変換装置の構成について説明する。図1は、実施例1に係る言語変換装置1の構成の一例を説明するための図である。図1に示すように、実施例1に係る言語変換装置1は、入出力制御I/F部2と、入力部3と、表示部4と、記憶部5と、制御部6とを有する。言語変換装置1は、例えば、PC(Personal Computer)、ワークステーション又は言語変換用の専用装置である。なお、以下では、言語を変換するテキストファイルとして、ソースコードを対象とした場合の言語変換装置について説明する。
【0012】
入出力制御I/F部2は、入力部3、表示部4と制御部6との間での各種情報のやり取りを制御するインタフェースである。入力部3は、例えば、キーボードやタッチパネルなどであり、操作者による種々の情報の入力処理を受け付ける。表示部4は、例えば、ディスプレイなどであり、操作者に対して処理結果を表示出力する。
【0013】
記憶部5は、図示しないパーサ(parser:構文解析器)によってソースコードから作成された木構造のデータを記憶する。記憶部5は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、パーサは、言語変換装置1に内蔵される場合であっても、外部に接続される場合であってもよい。また、記憶部5にソースコードが記憶され、内蔵されたパーサによって作成された木構造のデータを記憶部5が記憶する場合であってもよい。
【0014】
制御部6は、図1に示すように、抽出部6aと、配置状態算出部6bと、類似度算出部6cと、変換部6dとを有し、記憶部5によって記憶された木構造のデータを用いてソースコードに記述された言語を変換する。なお、以下では、英語で記述された文字を日本語の文字に変換する場合について説明するが、開示の技術はこれに限定されるものではなく、例えば、日本語で記述された文字を英語に変換する場合であってもよい。
【0015】
抽出部6aは、ソースコードに含まれる文字列を相互の関連性に従って解析することで求めたソースコードの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する。具体的には、抽出部6aは、木構造の各ノードに対応するソースコードに記述された関数名、クラス名、モジュール名などの文字列を抽出する。また、抽出部6aは、木構造の各ノードに対応するソースコードのコメント部分に記述された文字列を抽出する。
【0016】
例えば、抽出部6aは、英語で記述された関数名、クラス名、モジュール名などを正規表現などに基づいて抽出する。また、例えば、抽出部6aは、日本語で記述されたコメントに対して形態素解析を実行してコメントに含まれる名詞などのキーワードを抽出する。図2は、実施例1に係る抽出部6aによる処理を模式的に示す図である。図2においては、各ノードの上段に英語で記述された関数名、クラス名、モジュール名を示す。また、図2においては、各ノードの下段に日本語で記述されたキーワードを示す。
【0017】
例えば、抽出部6aは、図2に示すように、木構造の根ノードに対応するソースコードから「project」を抽出する。同様に、抽出部6aは、図2に示すように、各ノードに対応するソースコードから英語で記述された関数名、クラス名、モジュール名などを抽出する。また、抽出部6aは、図2に示すように、各ノードに対応するソースコードのコメントから日本語のキーワードを抽出する。一例を挙げると、抽出部6aは、図2の最下位のノードに示すように、コメントに対して形態素解析を実行して、「内容」及び「取得」を抽出する。
【0018】
図1に戻って、配置状態算出部6bは、抽出部6aによって抽出された第1文字列群及び第2文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。具体的には、配置状態算出部6bは、木構造における各最下位ノードに対する影響度を算出する。図3は、実施例1に係る配置状態算出部6bによる処理1を模式的に示す図である。図3においては、「Cookie」の各最下位ノードに対する影響度を算出する場合について示す。
【0019】
例えば、配置状態算出部6bは、図3に示すように、まず、木構造における「Cookie」の位置を抽出する。そして、配置状態算出部6bは、抽出した「Cookie」のトータルの影響度を「1」とし、最下位ノードに対する影響度を算出する。すなわち、配置状態算出部6bは、図3に示すように、「getNakami」及び「clear」のノードに対してそれぞれ「影響度:0.5」を算出する。また、配置状態算出部6bは、図3に示すように、「connect」、「setSecurity」及び「isEnable」のノードに対してそれぞれ「影響度:0.0」を算出する。
【0020】
同様に、配置状態算出部6bは、抽出部6aによって抽出されたすべての文字列の最下位ノードに対する影響度を算出する。以下では、図4及び5を用いて算出の例を説明する。図4は、実施例1に係る配置状態算出部6bによる処理2を模式的に示す図である。例えば、配置状態算出部6bは、図4に示すように、木構造における「クッキー」の位置を抽出する。そして、配置状態算出部6bは、抽出した「クッキー」のトータルの影響度を「1」とし、最下位ノードに対する影響度を算出する。
【0021】
ここで、配置状態算出部6bは、図4に示すように、「Browse.java」のノード及び「clear」のノードに含まれる「クッキー」それぞれのトータルの影響度を「1」として最下位ノードに対する影響度を算出する。例えば、配置状態算出部6bは、図4に示すように、「getNakami」のノードに対する「クッキー」の「影響度:0.5」と「clear」のノードに対する「影響度:1.5」とを算出する。すなわち、配置状態算出部6bは、「getNakami」のノードに対して「Browse.java」から降りてきた「影響度:0.5」を算出する。
【0022】
そして、配置状態算出部6bは、「clear」のノードに対して、「Browse.java」から降りてきた「影響度:0.5」と「clear」のノードに含まれる「クッキー」の「影響度:1.0」を加算した「影響度:1.5」を算出する。また、配置状態算出部6bは、図4に示すように、「connect」、「setSecurity」及び「isEnable」のノードに対してそれぞれ「影響度:0.0」を算出する。
【0023】
図5は、実施例1に係る配置状態算出部6bによる処理3を模式的に示す図である。例えば、配置状態算出部6bは、図5に示すように、「getNakami」、「clear」、「connect」、「setSecurity」及び「isEnable」のノードそれぞれに対して、「セッション」の影響度「0.0」、「0.0」、「1.333」、「0.333」及び「1.333」を算出する。
【0024】
上記したように、配置状態算出部6bは、抽出部6aによって抽出されたすべての文字列について最下位ノードに対する影響度を算出する。図6は、実施例1に係る配置状態算出部6bによる処理結果の一例を示す図である。図6においては、図6の(A)が、日本語のキーワードが影響を与える最下位ノードについて示す。また、図6においては、図6の(B)が、英語のキーワードが影響を与える最下位ノードについて示す。例えば、図6の(A)に示すように、「クッキー」は、「getNakami」及び「clear」にそれぞれに「1」が対応付けられており、影響を与えることを示される。
【0025】
図1に戻って、類似度算出部6cは、配置状態算出部6bによって算出された影響度に基づいて、第1文字列群に含まれる第1文字列に対する第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する。具体的には、類似度算出部6cは、第1の文字列と第2の文字列との最下位ノードに与える影響度の類似度を算出する。例えば、類似度算出部6cは、英語の文字列と日本語の文字列との最下位ノードに与える影響度の類似度を以下に示す式(1)により算出する。
【0026】
【数1】
【0027】
例えば、類似度算出部6cは、式(1)に示す「a」を英語の文字列、「b」を日本語の文字列として、Cos類似度を算出することで英語の文字列と日本語の文字列との最下位ノードに与える影響度の類似度を算出する。一例を挙げると、類似度算出部6cは、Cos類似度(“Cookie”、“クッキー”)や、Cos類似度(“Cookie”、“セッション”)などを計算することで、英語の文字列「Cookie」と日本語の文字列との類似度を算出する。
【0028】
図1に戻って、変換部6dは、第1文字列を類似度算出部6cによって算出された類似度が最も高い第2文字列に変換する。例えば、変換部6dは、英語の文字列を類似度の高い日本語の文字列に変換する。一例を挙げると、類似度算出部6cが「Cookie」に対する類似度を算出した日本語の文字列のうち、「クッキー」との類似度が最も高い場合には、変換部6dは、ソースコード中の「Cookie」を「クッキー」に変換する。
【0029】
[実施例1に係る言語変換装置による処理の手順]
実施例1に係る言語変換装置1による処理の手順を説明する。図7は、実施例1に係る言語変換装置1による処理の手順を説明するためのフローチャートである。なお、図7においては、ソースコードに対してパーサによる構文解析が実行され、木構造が生成された後の処理について示す。
【0030】
図7に示すように、実施例1に係る言語変換装置1においては、抽出部6aは、ソースコードから生成された木構造の各ノードに配置された文字列から英語キーワード及び日本語キーワードを抽出する(ステップS101)。そして、配置状態算出部6bは、抽出部6aによって抽出された英語キーワード及び日本語キーワードについて、各キーワードの配置状態に基づいて、各文字列の最下位ノードに対する影響度を算出する(ステップS102)。
【0031】
その後、類似度算出部6cは、配置状態算出部6bによって算出された影響度に基づいて、英語キーワードと日本語キーワードとの類似度を算出する(ステップS103)。そして、変換部6dは、類似度算出部6cによって算出された類似度に基づいて、英語キーワードを類似度が最も高い日本語キーワードに変換して(ステップS104)、処理を終了する。
【0032】
[実施例1の効果]
上述したように、実施例1によれば、抽出部6aは、ソースコードに含まれる文字列を相互の関連性に従って解析することで求めたソースコードの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する。そして、配置状態算出部6bは、抽出部6aによって抽出された第1文字列群及び第2文字列群に含まれる文字列それぞれについて、木構造における配置状態から文字列相互の影響度を算出する。そして、類似度算出部6cは、配置状態算出部6bによって算出された影響度に基づいて、第1文字列群に含まれる第1文字列に対する第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する。そして、変換部6dは、ソースコードにおける第1文字列を類似度算出部6cによって算出された類似度が最も高い第2文字列に変換する。従って、実施例1に係る言語変換装置1は、ソースコードに含まれる言語を、ソフトウェア開発者が使い慣れた言語に自動で変換することができ、トレーサビリティマトリクスを容易に作成することを可能とする。例えば、ソフトウェア開発者が関数名に記述されたソースコード中の読み出し関係を考慮したトレーサビリティマトリクスを作成する場合であっても、容易に作成することを可能にする。
【実施例2】
【0033】
[実施例2に係る機能情報生成装置の構成]
上述した実施例1においては、言語変換装置1を単独で用いる場合について説明した。実施例2では、トレーサビリティマトリクスを生成する機能情報生成装置に言語変換装置の機能を内蔵させた場合の実施例について説明する。図8は、実施例2に係る機能情報生成装置100の構成の一例を説明するための図である。図8に示すように、実施例2に係る機能情報生成装置100は、入出力制御I/F部10と、入力部20と、表示部30と、記憶部40と、制御部50とを有している。そして、機能情報生成装置100は、ソフトウェアの成果物テキストに基づいて、トレーサビリティマトリクスを生成する。なお、機能情報生成装置100は、例えば、PC(Personal Computer)、ワークステーション又は機能情報生成用の専用装置である。
【0034】
ここで、まず、トレーサビリティマトリクスについて説明する。図9は、トレーサビリティマトリクスの例1を説明するための図である。図9においては、ソフトウェアが有する機能と要件とを対応付けたトレーサビリティマトリクスを示している。例えば、トレーサビリティマトリクスは、図9に示すように、要件とモジュール名とが対応付けられる。ここで、要件とは、ユーザによって所望されるシステムやソフトウェアの仕様である。要件としては、例えば、図9に示すように、「機器登録確認」、「会員登録」、「会員登録確認」、「アプリケーションダウンロード」、「利用権入手確認」などが含まれている。また、モジュール名とは、所定の機能を実現するためのプログラム群の名称である。モジュール名としては、例えば、図9に示すように、「所有:2−4−1制御モジュール」、「所有:2−4−2DBアクセス制御」、「所有:2−4−3鍵管理」、「所有:2−4−4ログ管理」、「NI2−3−1通信監理」、「NI2−3−2制御モジュール」などが含まれている。
【0035】
トレーサビリティマトリクスの一例を挙げると、図9に示すように、「要件:アプリケーションダウンロード」において「モジュール名:NI2−3−1通信監理、機能名:通信初期化機能」、「モジュール名:NI2−3−1通信監理、機能名:電文送受信機能」の項目にそれぞれ「○」が示されている。上記した情報は、「アプリケーションダウンロード」の仕様を満たすためには、「NI設計書2−3−1」に示された「通信初期化機能」と「電文送受信機能」とが必要であることを意味する。
【0036】
また、トレーサビリティマトリクスは、機能と要件とを対応付けたものだけではなく、例えば、機能とソースコードとを対応付けたものも作成される。図10は、トレーサビリティマトリクスの例2を説明するために図である。例えば、トレーサビリティマトリクスは、図10に示すように、モジュール名とクラスとが対応付けられる。ここで、クラスとは、プログラミングにおいてデータと操作手順とをまとめたオブジェクトを定義したものである。
【0037】
図8に戻って、入出力制御I/F部10は、入力部20、表示部30と記憶部40、制御部50との間での各種情報のやり取りを制御するインタフェースである。入力部20は、例えば、キーボードやタッチパネルなどであり、操作者による種々の情報の入力処理を受け付ける。例えば、入力部20は、機能設計書に記述された機能の抽出に関する情報の入力処理を受け付ける。表示部30は、例えば、ディスプレイなどであり、操作者に対して処理結果を表示出力する。例えば、表示部30は、後述する制御部50によって生成されたトレーサビリティマトリクスを表示出力する。
【0038】
記憶部40は、図8に示すように、成果物テキスト記憶部41と、機能ファイル記憶部42と、確率情報記憶部43と、結果ファイル記憶部44と、トレーサビリティマトリクス記憶部45とを有する。記憶部40は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【0039】
成果物テキスト記憶部41は、ソフトウェアに関与する各種テキストファイルを記憶する。具体的には、成果物テキスト記憶部41は、ソフトウェアの開発に際して作成された機能設計書、要件定義書、ソースコード、Read Meなどの成果物テキストを記憶する。図11は、実施例2に係る成果物テキスト記憶部41によって記憶される情報の一例を示す図である。例えば、成果物テキスト記憶部41は、図11に示すように、機能設計書及びソースコードなどを記憶する。一例を挙げると、成果物テキスト記憶部41は、図11に示すように、「第1章 システムの説明 このシステムは〜〜」などが記述された機能設計書を記憶する。また、成果物テキスト記憶部41は、図11に示すように、クラス名「##DataSend.pl」、「##作成日 20100911」、「##作成者 nagano」などが記述されたソースコードを記憶する。
【0040】
図8に戻って、機能ファイル記憶部42は、後述する制御部50によって生成された機能ファイルを記憶する。具体的には、機能ファイル記憶部42は、後述する制御部50が成果物テキスト記憶部41によって記憶された機能設計書から生成した機能ファイルを記憶する。図12は、実施例2に係る機能ファイル記憶部42によって記憶される機能ファイルの一例を説明するための図である。
【0041】
例えば、機能ファイル記憶部42は、機能の説明に記述された文字列に含まれる名詞を機能ごとに対応付けた機能ファイルを記憶する。一例を挙げると、機能ファイル記憶部42は、図12に示すように、「<func>データ送信機能</func>」に「クライアント 名詞」、「サーバ 名詞」、「以下 名詞」、「情報 名詞」などを対応付けた機能ファイルを記憶する。
【0042】
図8に戻って、確率情報記憶部43は、後述する制御部50によって生成された確率情報を記憶する。具体的には、確率情報記憶部43は、後述する制御部50が成果物テキスト記憶部41によって記憶されたソースコードを用いて生成した確率情報を記憶する。図13は、実施例2に係る確率情報記憶部43によって記憶される確率情報の一例を説明するための図である。
【0043】
例えば、確率情報記憶部43は、ソースコードに記述された文字列に含まれる名詞と、当該ソースコードに含まれるクラス名と、総和とを対応付けた確率情報を記憶する。一例を挙げると、確率情報記憶部43は、図13に示すように、「作成日」に「DataSend.pl:1」、「algo.pl:0」、「DataTrans.pl:1」、「Serch.pl:1」などを対応付けた確率情報を記憶する。上記した情報は、「DataSend.pl」、「DataTrans.pl」及び「Serch.pl」のクラス内のコメントに「作成日」が記述されていることを意味する。そして、確率情報記憶部43は、図13に示すように、「作成日」に「総和(作成日)=3」を対応付けて記憶する。上記した情報は、「作成日」が記述されたクラス名が「3つ」あることを意味する。同様に、確率情報記憶部43は、「作成者」、「本プログラム」、「・・・」、「クライアント」、「情報」、「社員番号」、「・・・」、「暗号化」、「解除」などに、クラス名と総和とを対応付けた確率情報を記憶する。
【0044】
図8に戻って、結果ファイル記憶部44は、後述する制御部50によって生成された結果ファイルを記憶する。具体的には、結果ファイル記憶部44は、後述する制御部50が、機能ファイル記憶部42によって記憶された機能ファイルと、確率情報記憶部43によって記憶された確率情報とを用いて生成した結果ファイルを記憶する。図14は、実施例2に係る結果ファイル記憶部44によって記憶される結果ファイルの一例を説明するための図である。
【0045】
例えば、結果ファイル記憶部44は、図14に示すように、機能ごとにクラスの確率が示された結果ファイルを記憶する。一例を挙げると、結果ファイル記憶部44は、「<func>データ送信機能</func>」に「DataSend.pl:50%」、「algo.pl:15%」、「hoge.pl:5%」が示された結果ファイルを記憶する。上記した例は、「DataSend.pl」が用いられる場合の「50%」が「データ送信機能」に用いられることを意味する。また、「algo.pl」が用いられる場合の「15%」が「データ送信機能」に用いられることを意味する。また、「hoge.pl」が用いられる場合の「5%」が「データ送信機能」に用いられることを意味する。同様に、結果ファイル記憶部44は、図14に示すように、「<func>データ暗号化機能</func>」に「DataSend.pl:0%」、「algo.pl:55%」、「hoge.pl:5%」が示された結果ファイルを記憶する。
【0046】
図8に戻って、トレーサビリティマトリクス記憶部45は、後述する制御部50によって生成されたトレーサビリティマトリクスを記憶する。図15は、実施例2に係るトレーサビリティマトリクス記憶部45によって記憶されるトレーサビリティマトリクスの一例を説明するための図である。
【0047】
例えば、トレーサビリティマトリクス記憶部45は、図15に示すように、「データ送信機能」に「DataSend.pl:○」、「algo.pl:○」、「DataTrans.pl」、「Serch.pl」などを対応付けたトレーサビリティマトリクスを記憶する。上記した情報は、「データ送信機能」を実現するために、「DataSend.pl」及び「algo.pl」などが必要であることを意味する。
【0048】
図8に戻って、制御部50は、言語変換部51と、機能ファイル生成部52と、確率情報生成部53と、結果ファイル生成部54と、トレーサビリティマトリクス生成部55とを有し、成果物テキスト記憶部41によって記憶されたソースコードと機能設計書とに基づいてトレーサビリティマトリクスを生成する。制御部50は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路、又は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路などである。
【0049】
言語変換部51は、成果物テキスト記憶部41によって記憶されたソースコードにおいて英語で記述された文字列を日本語で記述された文字列に変換する。なお、図8に示す言語変換部51は、実施例1に係る言語変換装置1に対応する。図16は、実施例2に係る言語変換部51による処理を模式的に示す図である。
【0050】
図16に示すように、言語変換部51は、まず、成果物テキストによって記憶されたソースコードを読み出し、読み出したソースコードに対してパーサにより構文解析を実行する。すなわち、言語変換部51は、ソースコードを構文解析することで、木構造のデータを生成する。例えば、言語変換部51は、図16に示すように、ソースコードから「eventBlock」、「eventDec」、「eventDec」などのノードを有する木構造のデータを生成する。
【0051】
ここで、各ノードには対応したコメントが平文で入っている。例えば、図16に示すように、「doorClosed」のノードには、クラス名「class:EfncDecode」に対応するコメント「本クラスは暗号化データを解除する」が入っている。そして、言語変換部51は、木構造の各ノードに入っているコメントに対して形態素解析を実行する。例えば、言語変換部51は、図16に示すように、「本クラスは暗号化データを解除する」に対して形態素解析を実行して、「本クラス 名詞」、「は 助詞」、「暗号化 名詞」などの品詞ごとの文字列に分割する。
【0052】
そして、言語変換部51は、形態素解析によって分割した文字列から名詞を抽出する。例えば、言語変換部51は、図16に示すように、「本クラス 名詞」、「暗号化 名詞」を抽出する。その後、言語変換部51は、文字列ごとの最下位ノードへの影響度の類似度に基づいて、類似度の高い英語キーワードを日本語キーワードに変換する。例えば、言語変換部51は、図16に示すように、ソースコードにおけるクラス名「Efnc_main」及び「EfncDecode」をそれぞれ「暗号化」及び「解除」に変換する。
【0053】
図8に戻って、機能ファイル生成部52は、ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する。具体的には、機能ファイル生成部52は、成果物テキスト記憶部41によって記憶された機能設計書から機能及び該機能に対応するテキストのデータを抽出する。そして、機能ファイル生成部52は、抽出した機能ごとに対応するテキストに含まれる名詞を抽出し、抽出した名詞を機能に対応付けた機能ファイルを生成する。そして、機能ファイル生成部52は、生成した機能ファイルを機能ファイル記憶部42に格納する。
【0054】
図17は、実施例2に係る機能ファイル生成部52による処理の一例を模式的に示す図である。例えば、機能ファイル生成部52は、図17の(A)に示す機能設計書を成果物テキスト記憶部41から読み出し、読み出した機能設計書をルールベース(rule base)に基づいて機能及び該機能に対応するテキストごとに分割する。ここで、ルールベースとは、機能とテキストとの組合せのルールを概念化したものである。すなわち、機能ファイル生成部52は、ルールベースに基づいて機能設計書中の機能とテキストとの組合せを推定し、推定した組合せのデータを機能設計書から分割する。
【0055】
例えば、機能ファイル生成部52は、図17の(B)に示すように、「<func>データ送信機能</func>」及び該機能に対応するテキスト「<txt>クライアントからサーバへ以下の情報を送信する機能 ・ユーザ名 ・社員番号</txt>」を機能設計書から分割する。同様に、機能ファイル生成部52は、図17の(B)に示すように、「<func>データ暗号化機能</func>」、「<func>検索機能</func>」などを機能設計書から分割する。なお、図17に示す機能ファイルにおいては、funcタグに機能名、txtタグに対応するテキストが入ったXML形式で示される。
【0056】
そして、機能ファイル生成部52は、分割した機能ごとのテキストに対して形態素解析を実行して、テキストを品詞ごとに分割する。例えば、機能ファイル生成部52は、図17の(C)に示すように、「<func>データ送信機能</func>」に対応するテキストに対して形態素解析を実行して、「クライアント 名詞」、「から 助詞」、「サーバ 名詞」、「へ 助詞」、「以下 名詞」、「の 助詞」、「情報 名詞」などに分割する。そして、機能ファイル生成部52は、品詞ごとに分割した文字から名詞を抽出して、機能に対応付けた機能ファイルを生成する。例えば、機能ファイル生成部52は、図17の(D)に示すように、「<func>データ送信機能</func>」に「クライアント 名詞」、「サーバ 名詞」、「以下 名詞」、「情報 名詞」などを対応付けた機能ファイルを生成して機能ファイル記憶部42に格納する。なお、形態素解析は、例えば、MeCabなどの形態素解析器によって実行される。また、上記した機能ファイルの生成においては、ルールベースに基づいて機能及び該機能に対応するテキストを分割する場合について説明したが、開示の技術はこれに限定されるものではなく、例えば、ソフトウェア開発者が手作業で分割する場合であってもよい。
【0057】
図8に戻って、確率情報生成部53は、言語変換部51によって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞がソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する。具体的には、確率情報生成部53は、第2の文字ファイルを用いたベイズ(Bayes)学習により確率情報を生成する。図18は、実施例2に係る確率情報生成部53による処理の一例を模式的に示す図である。
【0058】
例えば、確率情報生成部53は、図18の(A)に示すソースコードを成果物テキスト記憶部41から読み出す。そして、確率情報生成部53は、図18の(B)に示すように、読み出したソースコードのコメント部分に対して形態素解析を実行して、「DataSend.pl 未知語」、「本プログラム 名詞」、「は 助詞」、「フォーム 名詞」、「に 助詞」などに分割する。そして、確率情報生成部53は、図18の(C)に示すように、品詞ごとに分割した文字から名詞「作成日」、「作成者」、「本プログラム」、「フォーム」などを抽出する。さらに、確率情報生成部53は、図18の(D)に示すように、抽出した名詞ごとのベイズ学習により、確率情報を生成する。ここで、ベイズの定理について説明する。ベイズの定理とは、ある結果が得られた場合に、その結果を反映した事後確率を求める確率論の定理である。すなわち、確率情報生成部53は、所定の名詞(w)が出現した場合に、該名詞(w)が出現したテキストがカテゴリ(c)である確率P(w|c)を示す確率情報を生成する。
【0059】
例えば、確率情報生成部53は、図18の(D)に示すように、「作成日」に「DataSend.pl:1」、「algo.pl:0」、「DataTrans.pl:1」、「Serch.pl:1」などのクラスと、「総和(作成日)=3」とを対応付けた確率情報を生成する。すなわち、確率情報生成部53は、「作成日」が記述されたテキストは、「1/3」が「DataSend.pl」であり、「1/3」が「DataTrans.pl」であり、残りの「1/3」が「Serch.pl」であることを示す確率情報を生成する。そして、確率情報生成部53は、生成した確率情報を確率情報記憶部43に格納する。同様に、確率情報生成部53は、図18の(D)に示すように、「作成者」、「本プログラム」、「・・・」、「クライアント」、「情報」、「社員番号」、「・・・」、「暗号化」、「解除」などに対するベイズ学習により確率情報を生成する。
【0060】
図8に戻って、結果ファイル生成部54は、所定の機能に関して第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述されたソースコードの項目全てを第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を第2情報を用いて算出する。具体的には、結果ファイル生成部54は、機能ファイルと、確率情報生成部53がベイズ学習により生成した確率情報とを用いたベイズ推定により確率を算出する。図19は、実施例2に係る結果ファイル生成部54による処理の一例を模式的に示す図である。
【0061】
例えば、結果ファイル生成部54は、図19の(A)に示す「データ送信機能」の機能ファイルを機能ファイル記憶部42から読み出し、「データ送信機能」に対する結果ファイルを生成する。この時、結果ファイル生成部54は、まず、確率情報記憶部43によって記憶された確率情報を参照して、「データ送信機能」の機能ファイルに含まれる全ての名詞の確率情報を取得する。そして、結果ファイル生成部54は、取得した確率情報において、「データ送信機能」の機能ファイルに含まれる全ての名詞について、該名詞が記述されていた各クラスの情報を取得する。そして、結果ファイル生成部54は、取得した各クラスが記述された場合のソースコードが「データ送信機能」である確率を算出する。
【0062】
一例を挙げると、結果ファイル生成部54は、「DataSend.pl」が記述された場合のソースコードが「データ送信機能」である確率P(データ送信機能|DataSend.pl)を以下に示す式により算出する。
【0063】
結果ファイル生成部54は、「P(データ送信機能|DataSend.pl)」=「データ送信機能の機能ファイルに含まれる名詞のうち「DataSend.pl」と対応付けられた全ての名詞の結合確率ΠP(x)」を算出する。すなわち、結果ファイル生成部54は、図13に示す確率情報を参照して、「作成日」、「作成者」、「本プログラム」、「クライアント」、「情報」、「社員番号」などについて、それぞれが記述された場合の「DataSend.pl」である確率を算出し、算出した確率の積を算出する。
【0064】
同様に、結果ファイル生成部54は、取得したクラスについて「結合確率ΠP(x)」を算出する。そして、結果ファイル生成部54は、算出した「結合確率ΠP(x)」を「データ送信機能」に対応付けた結果ファイルを生成して、生成した結果ファイルを結果ファイル記憶部44に格納する。例えば、結果ファイル生成部54は、図19の(B)に示すように、「<func>データ送信機能</func>」に「DataSend.pl 50%」、「algo.pl 15%」及び「hoge.pl 5%」を対応付けた結果ファイルを生成する。
【0065】
なお、各名詞が記述された場合に「DataSend.pl」である確率は、以下の式により算出される。例えば、「クライアント」が記述された場合に「DataSend.pl」である確率P(クライアント)は、P(クライアント)=(DataSend.pl中のクライアントの出現数/DataSend.plの数)/{(DataSend.pl中のクライアントの出現数/DataSend.plの数)+(DataSend.pl以外のクライアントの出現数/DataSend.pl以外の数)}により算出される。
【0066】
図8に戻って、トレーサビリティマトリクス生成部55は、算出された確率の値が所定の閾値を超える項目を特定し、当該項目と所定の機能とに対応関係があることを示す機能情報を生成する。具体的には、トレーサビリティマトリクス生成部55は、結果ファイル記憶部44によって記憶された結果ファイルを参照して、確率が任意の閾値を超えたクラスと機能とを関連付けたトレーサビリティマトリクスを生成する。図20は、実施例2に係るトレーサビリティマトリクス生成部55の処理の一例を説明するための図である。
【0067】
例えば、任意の閾値が「10%」であった場合には、トレーサビリティマトリクス生成部55は、図20の(B)に示すように、図20の(A)に示す結果ファイルにおいて確率が10%を超えたクラス「DataSend.pl」及び「algo.pl」と、機能「データ送信機能」とを関連付けたトレーサビリティマトリクスを生成する。そして、トレーサビリティマトリクス生成部55は、生成したトレーサビリティマトリクスをトレーサビリティマトリクス記憶部45に格納する。なお、閾値は、機能情報生成装置100の管理者や操作者によって任意に決定される。
【0068】
また、トレーサビリティマトリクス生成部55は、生成したトレーサビリティマトリクスを表示部30にて表示させるように制御する。ここで、本願の開示する機能情報生成装置100のユースケースについて図21を用いて説明する。図21は、実施例2に係る機能情報生成装置100のユースケースを説明するための図である。図21においては、ソフトウェア開発者によって指定された機能に関連するソースコードを表示する場合について示す。例えば、実施例2に係る機能情報生成装置100は、図21に示すように、事前処理として機能設計書に対してテキスト分割、形態素解析、名詞抽出することにより機能ファイルを生成し、機能ファイル記憶部42に格納する。同時に、機能情報生成装置100は、図21に示すように、事前処理としてソースコードに対して言語変換、形態素解析、名詞抽出、ベイズ学習を実行することにより確率情報を生成し、確率情報記憶部43に格納する。
【0069】
そして、ソフトウェア開発者によって機能が指定されると、結果ファイル生成部54が指定された機能に相当する機能ファイルを機能ファイル記憶部42から読み出す。さらに、結果ファイル生成部54は、読み出した機能ファイルと確率情報記憶部43によって記憶された確率情報とに基づいてベイズ推定を実行することで結果ファイルを生成する。そして、トレーサビリティマトリクス生成部55が、結果ファイル生成部54によって生成された結果ファイルトレーサビリティマトリクスを生成するとともに、指定された機能に関連するクラスを表示部30に表示させる。なお、図21に示すユースケースは、あくまで一例である。例えば、実施例2に係る機能情報生成装置100は、機能設計書及びソースコードが入力された時点で、トレーサビリティマトリクスを自動的に生成するように設定することも可能である。なお、上記した実施例2では、言語変換部を備えた機能情報生成装置について説明したが、開示の技術はこれに限定されるものではなく、例えば、実施例1に記載した言語変換装置1にトレーサビリティマトリクスを生成する機能を備えさせることも可能である。
【0070】
[実施例2に係る機能情報生成装置による処理の手順]
次に、実施例2に係る機能情報生成装置100による処理の手順について、図22及び23を用いて説明する。図22は、実施例2に係る機能情報生成装置100によるトレーサビリティマトリクス生成処理の手順を示すフローチャートである。
【0071】
図22に示すように、実施例2に係る機能情報生成装置100においては、ソフトウェア開発者によって成果物テキストがアップロードされると(ステップS201肯定)、言語変換部51は、アップロードされたソースコードの言語を変換する(ステップS202)。そして、機能ファイル生成部52は、機能設計書を用いて機能ファイルを生成する(ステップS203)。そして、確率情報生成部53は、ソースコードを用いて確率情報を生成する(ステップS204)。
【0072】
その後、ソフトウェア開発者によって機能が指定されると(ステップS205肯定)、結果ファイル生成部54は、機能ファイル生成部52によって生成された機能ファイルを取得し(ステップS206)、確率情報生成部53によって生成された確率情報を参照して、ベイズ推定により結果ファイルを生成する(ステップS207)。
【0073】
続いて、トレーサビリティマトリクス生成部55は、結果ファイル生成部54によって生成された結果ファイルに基づいてトレーサビリティマトリクスを生成し(ステップS208)、ソフトウェア開発者によって指定された機能に関連するクラスを表示部30に表示させ(ステップS209)、処理を終了する。なお、実施例2に係る機能情報生成装置100は、成果物テキストがアップロードされるまで待機状態である(ステップS201否定)。また、実施例2に係る機能情報生成装置100は、ソフトウェア開発者から機能が指定されるまで待機状態である(ステップS205否定)。また、上述した処理の手順では、機能ファイルを生成した後に確率情報を生成する場合について説明したが、開示の技術はこれに限定されるものではなく、生成の順番は任意であり、同時に生成することも可能である。
【0074】
図23は、実施例2に係る機能情報生成装置100による処理の手順を示すシーケンス図である。図23に示すように、実施例2に係る機能情報生成装置100においては、システム開発担当者である開発者Bによって機能設計書がアップロードされると(ステップS301)、機能ファイル生成部52は、アップロードされた機能設計書を用いて機能ファイルを生成する(ステップS302)。そして、開発者Bによってソースコードがアップロードされると(ステップS303)、言語変換部51は、アップロードされたソースコードの言語を変換する(ステップS304)。そして、確率情報生成部53は、言語変換されたソースコードを用いて確率情報を生成する(ステップS305)。
【0075】
続いて、機能追加担当者である開発者Aによって機能が指定されると(ステップS306)、結果ファイル生成部54は、機能ファイル生成部52によって生成された機能ファイルを取得し(ステップS307)、確率情報生成部53によって生成された確率情報を参照して、結果ファイルを生成する(ステップS308)。結果ファイル生成部54によって結果ファイルが生成されると、トレーサビリティマトリクス生成部55は、生成された結果ファイルに基づいて、トレーサビリティマトリクスを生成し(ステップS309)、指定された機能に関連するクラスの情報を表示部30に表示させる(ステップS310)ことで、開発者Aに提示する。
【0076】
[実施例2の効果]
上述したように、実施例2によれば、機能ファイル生成部52は、ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す機能ファイルを生成する。そして、確率情報生成部53は、言語変換部51によって英語キーワードが日本語キーワードに変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る確率情報を生成する。そして、結果ファイル生成部54は、所定の機能に関して機能ファイルに対応付けられている全ての名詞について、いずれかの名詞が記述されたソースコードの項目全てを確率情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を確率情報を用いて算出する。そして、トレーサビリティマトリクス生成部55は、前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する。従って、実施例2に係る機能情報生成装置100は、関数名などに記述されたソースコードの呼出し関係を考慮することができ、精度の高いトレーサビリティマトリクスを生成することを可能にする。
【実施例3】
【0077】
これまで実施例1及び2について説明したが、本願が開示する技術は実施例1及び2に限定されるものではない。すなわち、これらの実施例は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
【0078】
(1)対象となるテキストファイル
上記した実施例1では、言語を変換するテキストファイルとしてソースコードを用いる場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、図書情報や評判情報などの他のテキストファイルにおける言語を変換する場合にも適用可能である。
【0079】
(2)類似度の計算
上述した実施例1では、類似度としてCos類似度を算出する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、木構造における文字列の位置関係から類似度を算出する場合であってもよい。
【0080】
(3)形態素解析
上記した実施例1及び2では、機能設計書を機能ごとにテキスト分割し、テキスト部分に対して形態素解析を実行する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、機能名に対して形態素解析を実行する場合であってもよい。
【0081】
(4)名詞抽出
上記した実施例1及び2では、テキストファイルから名詞を抽出する際に、単独の名詞を抽出する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、連続する名詞を複合した複合名詞を処理対象とする場合であってもよい。
【0082】
(5)名詞の重要度
上記した実施例2では、名詞の出現数に基づいて確率情報を生成する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、名詞の重要度に応じて重み付けをして確率情報を生成する場合であってもよい。かかる場合には、例えば、tf−idfによりソースコード中の特徴的な名詞を抽出し、抽出した名詞に対して所定の重み付けをして確率情報を生成する。
【0083】
(6)ベイズ推定
上述した実施例2では、単純なベイズ推定により結果ファイルを生成する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、Graham方式やRobinson方式などにより確率情報を出現数で示したり、機能ファイルに記述する名詞を絞り込こんだり、などのアレンジを実行する場合であってもよい。
【0084】
(7)システム構成等
例えば、各装置の分散・統合の具体的形態(例えば、図8の形態)は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、機能ファイル記憶部42と確率情報記憶部43とを一つの記憶部として統合してもよく、一方、結果ファイル生成部54を、機能ファイルを取得する機能ファイル取得部と、結果ファイルを生成する生成部とに分散してもよい。
【0085】
また、制御部6を言語変換装置1の外部装置としてネットワーク経由で接続するようにしてもよく、或いは抽出部6a、配置状態算出部6b、類似度算出部6cを別の装置がそれぞれ有し、ネットワークに接続されて協働することで、上述した言語変換装置1の機能を実現するようにしてもよい。
【0086】
(8)言語変換プログラム
上記実施例1で説明した言語変換装置1は、あらかじめ用意されたプログラムをコンピュータで実行することで実現することもできる。そこで、以下では、図1に示した言語変換装置1と同様の機能を実現する言語変換プログラムを実行するコンピュータの一例を説明する。
【0087】
図24は、実施例3に係る言語変換プログラムを実行するコンピュータ1000を示す図である。図24に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0088】
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
【0089】
ここで、図24に示すように、ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。実施例3に係る言語変換プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施例で説明した抽出部6aと同様の情報処理を実行する抽出ステップと、配置状態算出部6bと同様の情報処理を実行する配置状態算出ステップと、類似度算出部6cと同様の情報処理を実行する類似度算出ステップと、変換部6dと同様の情報処理を実行する変換ステップとが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
【0090】
また、上記実施例で説明した記憶部5に記憶されるデータのように、言語変換プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、抽出ステップと、配置状態算出ステップと、類似度算出ステップと、変換ステップとを実行する。
【0091】
なお、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0092】
これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0093】
1 言語変換装置
6a 抽出部
6b 配置状態算出部
6c 類似度算出部
6d 変換部
51 言語変換部
52 機能ファイル生成部
53 確率情報生成部
54 結果ファイル生成部
55 トレーサビリティマトリクス生成部
100 機能情報生成装置
【特許請求の範囲】
【請求項1】
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出部と、
前記抽出部によって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出部と、
前記配置状態算出部によって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出部と、
前記文字ファイルにおける前記第1文字列を前記類似度算出部によって算出された類似度が最も高い第2文字列に変換する変換部と、
を有することを特徴とする言語変換装置。
【請求項2】
前記抽出部が、前記文字ファイルとしてソースコードの木構造から前記第1文字列群と前記第2文字列群とを抽出し、
前記変換部が、前記抽出部によって抽出されたソースコードの木構造における前記第1文字列群に含まれる前記第1文字列を、前記類似度算出部によって算出された類似度が最も高い前記第2文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する第1の情報生成部と、
前記変換部によって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する第2の情報生成部と、
所定の機能に関して前記第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第2情報を用いて算出する確率算出部と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成部とをさらに有することを特徴とする請求項1に記載の言語変換装置。
【請求項3】
言語変換装置で実行される言語変換方法であって、
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出工程と、
前記抽出工程によって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出工程と、
前記配置状態算出工程によって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出工程と、
前記文字ファイルにおける前記第1文字列を前記類似度算出工程によって算出された類似度が最も高い第2文字列に変換する変換工程と、
を含んだことを特徴とする言語変換方法。
【請求項4】
前記抽出工程が、前記文字ファイルとしてソースコードの木構造から前記第1文字列群と前記第2文字列群とを抽出し、
前記変換工程が、前記抽出工程によって抽出されたソースコードの木構造における前記第1文字列群に含まれる前記第1文字列を、前記類似度算出工程によって算出された類似度が最も高い前記第2文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する第1の情報生成工程と、
前記変換工程によって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する第2の情報生成工程と、
所定の機能に関して前記第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第2情報を用いて算出する確率算出工程と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成工程とをさらに含んだことを特徴とする請求項3に記載の言語変換方法。
【請求項5】
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出ステップと、
前記抽出ステップによって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出ステップと、
前記配置状態算出ステップによって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出ステップと、
前記文字ファイルにおける前記第1文字列を前記類似度算出ステップによって算出された類似度が最も高い第2文字列に変換する変換ステップと、
をコンピュータに実行させることを特徴とする言語変換プログラム。
【請求項6】
前記抽出ステップが、前記文字ファイルとしてソースコードの木構造から前記第1文字列群と前記第2文字列群とを抽出し、
前記変換ステップが、前記抽出ステップによって抽出されたソースコードの木構造における前記第1文字列群に含まれる前記第1文字列を、前記類似度算出ステップによって算出された類似度が最も高い前記第2文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する第1の情報生成ステップと、
前記変換ステップによって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する第2の情報生成ステップと、
所定の機能に関して前記第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第2情報を用いて算出する確率算出ステップと、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成ステップとをさらにコンピュータに実行させることを特徴とする請求項5に記載の言語変換プログラム。
【請求項1】
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出部と、
前記抽出部によって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出部と、
前記配置状態算出部によって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出部と、
前記文字ファイルにおける前記第1文字列を前記類似度算出部によって算出された類似度が最も高い第2文字列に変換する変換部と、
を有することを特徴とする言語変換装置。
【請求項2】
前記抽出部が、前記文字ファイルとしてソースコードの木構造から前記第1文字列群と前記第2文字列群とを抽出し、
前記変換部が、前記抽出部によって抽出されたソースコードの木構造における前記第1文字列群に含まれる前記第1文字列を、前記類似度算出部によって算出された類似度が最も高い前記第2文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する第1の情報生成部と、
前記変換部によって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する第2の情報生成部と、
所定の機能に関して前記第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第2情報を用いて算出する確率算出部と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成部とをさらに有することを特徴とする請求項1に記載の言語変換装置。
【請求項3】
言語変換装置で実行される言語変換方法であって、
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出工程と、
前記抽出工程によって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出工程と、
前記配置状態算出工程によって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出工程と、
前記文字ファイルにおける前記第1文字列を前記類似度算出工程によって算出された類似度が最も高い第2文字列に変換する変換工程と、
を含んだことを特徴とする言語変換方法。
【請求項4】
前記抽出工程が、前記文字ファイルとしてソースコードの木構造から前記第1文字列群と前記第2文字列群とを抽出し、
前記変換工程が、前記抽出工程によって抽出されたソースコードの木構造における前記第1文字列群に含まれる前記第1文字列を、前記類似度算出工程によって算出された類似度が最も高い前記第2文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する第1の情報生成工程と、
前記変換工程によって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する第2の情報生成工程と、
所定の機能に関して前記第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第2情報を用いて算出する確率算出工程と、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成工程とをさらに含んだことを特徴とする請求項3に記載の言語変換方法。
【請求項5】
文字ファイルに含まれる文字列を相互の関連性に従って解析することで求めた文字ファイルの木構造において、各ノードに配置された文字列から第1の言語で示された所定の文字列群である第1文字列群と第2の言語で示された所定の文字列群である第2文字列群とをそれぞれ抽出する抽出ステップと、
前記抽出ステップによって抽出された前記第1文字列群及び前記第2文字列群に含まれる文字列それぞれについて、前記木構造における配置状態から文字列相互の影響度を算出する配置状態算出ステップと、
前記配置状態算出ステップによって算出された影響度に基づいて、前記第1文字列群に含まれる第1文字列に対する前記第2文字列群に含まれる第2文字列の関連性の高低を示す類似度をそれぞれ算出する類似度算出ステップと、
前記文字ファイルにおける前記第1文字列を前記類似度算出ステップによって算出された類似度が最も高い第2文字列に変換する変換ステップと、
をコンピュータに実行させることを特徴とする言語変換プログラム。
【請求項6】
前記抽出ステップが、前記文字ファイルとしてソースコードの木構造から前記第1文字列群と前記第2文字列群とを抽出し、
前記変換ステップが、前記抽出ステップによって抽出されたソースコードの木構造における前記第1文字列群に含まれる前記第1文字列を、前記類似度算出ステップによって算出された類似度が最も高い前記第2文字列に変換し、
ソフトウェアが有する機能が記述された機能設計書から、当該機能ごとに、当該機能を示す文字列に含まれる名詞を抽出し、抽出した名詞と当該機能との対応関係を示す第1情報を生成する第1の情報生成ステップと、
前記変換ステップによって第1文字列が第2文字列に変換されたソースコードから名詞を抽出し、抽出した各名詞が前記ソースコードに含まれる各項目において出現する頻度から当該各名詞が出現する確率を項目ごとに算出し得る第2情報を生成する第2の情報生成ステップと、
所定の機能に関して前記第1情報に対応付けられている全ての名詞について、いずれかの名詞が記述された前記ソースコードの項目全てを前記第2情報を用いて特定し、特定した項目それぞれが当該所定の機能である確率を前記第2情報を用いて算出する確率算出ステップと、
前記算出された確率の値が所定の閾値を超える項目を特定し、当該項目と前記所定の機能とに対応関係があることを示す機能情報を生成する機能情報生成ステップとをさらにコンピュータに実行させることを特徴とする請求項5に記載の言語変換プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2012−164231(P2012−164231A)
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願番号】特願2011−25480(P2011−25480)
【出願日】平成23年2月8日(2011.2.8)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願日】平成23年2月8日(2011.2.8)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]