説明

開発支援システム、開発支援方法及び開発支援プログラム

【課題】システム開発において用いる変数やメソッドの名称について、効率的なプログラムの設計や開発及びソースコードの確認の容易化を支援するための開発支援システム、開発支援方法及び開発支援プログラムを提供する。
【解決手段】コーディング支援サーバ20の制御部21は、コーディングを行なう開発対象情報を取得し、この開発対象情報に基づいて、辞書を特定する。そして、コーディングにおいてコメント入力を検知した場合、コメントに含まれるキーワードを取得する。更に、アクセス修飾子を取得し、アクセス修飾子に応じて検索範囲を特定する。そして、キーワードを用いて、名称辞書データ記憶部23において名称事例の検索、翻訳辞書データ記憶部24を用いて翻訳を行ない、名称候補を出力する。名称が決定された場合、名称辞書データ記憶部23に名称事例を登録する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システムで用いるプログラムの設計や開発を支援するための開発支援システム、開発支援方法及び開発支援プログラムに関する。
【背景技術】
【0002】
プログラムの設計や開発において変数やメソッドを作成する場合、その名称を決める必要がある。この場合、名称の決め方について、統一性を確保するために、命名規則が設定されていることもある。しかしながら、プログラムの設計時や開発時に命名規則を意識する必要があり、作業負担が大きくなる。後から各種名称を命名規則に従って名称の修正を行なう場合も負担が大きく、予期しない問題が発生することもある。そこで、ユーザのプログラムを作成作業にリアルタイムに同期しながら現在のスコープやデータ型に応じた変数名を自動生成するプログラム作成支援システムが検討されている(例えば、特許文献1を参照。)。この文献に記載されたプログラム作成支援システムにおいては、プログラムコードの入力位置のスコープに応じた命名規則を記憶した命名規則記憶手段と、データ型に対応したデータ名および変数名を記憶したデータ型情報記憶手段とを備える。そして、任意の入力情報と一致するデータ型情報がデータ型情報記憶手段に記憶されているかを検索する。そして、データ型情報に基づいてスコープを判定し、スコープに対応した命名規則を命名規則記憶手段から取得する。更に、命名規則に従いデータ型情報に対応した変数名およびデータ名とを生成して自動入力する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−258848号公報(第1頁、図1)
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、設計・開発対象のすべてのプログラムについて、統一的に命名規則を適用したのでは、プログラム設計・開発の担当者や確認者において煩雑になる場合がある。例えば、誤記の抑制や一覧性の向上のためには、できるだけ短い名称が望ましい。一方、短い名称を用いた場合、多くの変数を利用する必要性があるシステムにおいては、変数の自由度が少なくなってしまうという問題がある。
【0005】
本発明は、上記問題点を解決するためになされたものであり、その目的は、システム開発において用いる変数やメソッドの名称について、効率的なプログラムの設計や開発及びソースコードの確認の容易化を支援するための開発支援システム、開発支援方法及び開発支援プログラムを提供することにある。
【課題を解決するための手段】
【0006】
上記問題点を解決するために、請求項1に記載の発明は、キーワードに対応して参考名称を記録した辞書記憶手段と、入出力手段に接続される制御手段とを備えた開発支援システムであって、前記制御手段が、前記入出力手段から、開発対象プログラムのソースコードに用いる変数、メソッド又はクラスについての説明文を取得する手段と、前記説明文からキーワードを抽出する手段と、前記抽出したキーワードに対応する参考名称を前記辞書記憶手段において検索し、取得した参考名称を名称候補として前記入出力手段に出力する手段と、前記入出力手段に出力された名称候補を利用して決定された名称を参考名称として、前記キーワードに対応させて前記辞書記憶手段に登録する手段とを備えたことを要旨とする。
【0007】
請求項2に記載の発明は、請求項1に記載の開発支援システムにおいて、前記辞書記憶手段において、参考名称は分野に関連付けられて記録されており、前記制御手段が、前記開発対象プログラムが用いられる分野を特定し、前記特定した分野に関連付けられた参考名称を検索することを要旨とする。
【0008】
請求項3に記載の発明は、請求項1又は2に記載の開発支援システムにおいて、前記開発対象プログラムが含まれるシステムの属性情報を取得し、前記属性情報に基づいて、名称候補の長さ基準を決定し、前記辞書記憶手段において、前記長さ基準に基づいた優先順位で参考名称基準に基づいて特定した参考名称を名称候補として出力することを要旨とする。
【0009】
請求項4に記載の発明は、請求項3に記載の開発支援システムにおいて、前記属性情報として、前記開発対象プログラムが含まれるシステムの規模を取得し、前記規模に基づいて、名称候補の長さ基準を決定することを要旨とする。
【0010】
請求項5に記載の発明は、請求項3又は4に記載の開発支援システムにおいて、前記属性情報として、前記開発対象プログラムが含まれるシステムの設計書ファイルを取得し、前記設計書ファイルにおいて、前記辞書記憶手段に記録された各キーワードの利用回数を算出し、前記利用回数に基づいて、名称候補の長さ基準を決定することを要旨とする。
【0011】
請求項6に記載の発明は、キーワードに対応して参考名称を記録した辞書記憶手段と、入出力手段に接続される制御手段とを備えた開発支援システムを用いて、開発を支援するための方法であって、前記制御手段が、前記入出力手段から、開発対象プログラムのソースコードに用いる変数、メソッド又はクラスについての説明文を取得する段階と、前記説明文からキーワードを抽出する段階と、前記抽出したキーワードに対応する参考名称を前記辞書記憶手段において検索し、取得した参考名称を名称候補として前記入出力手段に出力する段階と、前記入出力手段に出力された名称候補を利用して決定された名称を参考名称として、前記キーワードに対応させて前記辞書記憶手段に登録する段階とを備えたことを要旨とする。
【0012】
請求項7に記載の発明は、キーワードに対応して参考名称を記録した辞書記憶手段と、入出力手段に接続される制御手段とを備えた開発支援システムを用いて、開発を支援するためのプログラムであって、前記制御手段を、前記入出力手段から、開発対象プログラムのソースコードに用いる変数、メソッド又はクラスについての説明文を取得する手段、前記説明文からキーワードを抽出する手段、前記抽出したキーワードに対応する参考名称を前記辞書記憶手段において検索し、取得した参考名称を名称候補として前記入出力手段に出力する手段、前記入出力手段に出力された名称候補を利用して決定された名称を参考名称として、前記キーワードに対応させて前記辞書記憶手段に登録する手段として機能させることを要旨とする。
【0013】
(作用)
請求項1、6、7に記載の発明によれば、制御手段が、入出力手段から、開発対象プログラムのソースコードに用いる変数、メソッド又はクラスについての説明文を取得する。次に、説明文からキーワードを抽出し、抽出したキーワードに対応する参考名称を辞書記憶手段において検索し、取得した参考名称を名称候補として入出力手段に出力する。そして、入出力手段に出力された名称候補を利用して決定された名称を参考名称として、キーワードに対応させて辞書記憶手段に登録する。これにより、説明文に基づいて、利用実績がある名称を候補として特定して、出力することができる。
【0014】
請求項2に記載の発明によれば、制御手段が、開発対象プログラムが用いられる分野を特定し、この分野に関連付けられた参考名称を検索する。これにより、プログラムの適用分野に応じて名称候補を出力することができる。
【0015】
請求項3に記載の発明によれば、開発対象プログラムが含まれるシステムの属性情報を取得し、属性情報に基づいて、名称候補の長さ基準を決定し、辞書記憶手段において、長さ基準に基づいた優先順位で参考名称を名称候補として出力する。名称は短い方が使いやすいが、短いと名称選択の幅が狭くなる。そこで、開発対象プログラムの組込先のシステムの属性に応じて、名称の長さを決定することができる。
【0016】
請求項4に記載の発明によれば、属性情報として、開発対象プログラムが含まれるシステムの規模を取得する。規模が大きい場合、多様な名称を使う必要がある可能性があり、開発対象プログラムの組込先のシステムの規模に基づいて、名称候補の長さ基準を決定することができる。
【0017】
請求項5に記載の発明によれば、属性情報として、開発対象プログラムが含まれるシステムの設計書ファイルを取得し、設計書ファイルにおいて、辞書記憶手段に記録された各キーワードの利用回数を算出する。キーワードの利用回数が大きい場合、このキーワードに関して多様な名称を使う必要がある可能性があり、利用回数に基づいて、名称候補の長さ基準を決定することができる。
【発明の効果】
【0018】
本発明によれば、システム開発において用いる変数やメソッドの名称について、効率的なプログラムの設計や開発及びソースコードの確認の容易化を支援するための開発支援システム、開発支援方法及び開発支援プログラムを提供することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の第1の実施形態のシステム概略図。
【図2】本発明の第1の実施形態のデータ記憶部に記録されたデータの説明図であって、(a)は利用者データ記憶部、(b)は名称辞書データ記憶部、(c)は翻訳辞書データ記憶部に記録されたデータの説明図。
【図3】本発明の第1の実施形態における処理手順の説明図。
【図4】本発明の第1の実施形態における処理手順の説明図。
【図5】本発明の第2の実施形態における処理手順の説明図。
【発明を実施するための形態】
【0020】
<第1の実施形態>
以下、本発明を具体化した一実施形態を、図1〜図4を用いて説明する。本実施形態では、開発対象システムにおいて用いられるモジュールにおけるプログラムの設計や開発を支援するための開発支援システムを想定する。ここでは、本発明の開発支援方法を、プログラムの開発(コーディング)時に利用する場合を想定するが、プログラムの設計時に利用することも可能である。本実施形態の開発支援システムでは、図1に示すように、クライアント端末10に接続されたコーディング支援サーバ20を用いる。
【0021】
クライアント端末10は、システム開発において、モジュールのコーディング(ソースコードの作成)を行なう担当者や、作成されたソースコードを確認する担当者が使用するコンピュータ端末(入出力手段)である。このクライアント端末10は、ネットワークを介してデータを送信する機能や、受信したデータを表示する機能等を有する。このため、クライアント端末10は、図示しない制御部、キーボード、マウス等の入力手段、ディスプレイ等の出力手段、通信手段等を備えている。
【0022】
コーディング支援サーバ20は、制御部21、利用者データ記憶部22、名称辞書データ記憶部23、翻訳辞書データ記憶部24、プログラムリソース記憶部25、API仕様書記憶部26を備えている。本実施形態では、名称辞書データ記憶部23、翻訳辞書データ記憶部24が辞書記憶手段として機能する。
【0023】
この制御部21は、図示しないCPU等の制御手段、RAM及びROM等のメモリを有し、開発支援処理を実行する。具体的には、後述する各処理(属性取得段階、辞書特定段階、コーディング段階、候補検索段階、翻訳段階、辞書更新段階、仕様書生成段階、コード表示段階等の各処理)を実行する。このための開発支援プログラムを実行することにより、コーディング支援サーバ20の制御部21は、図1に示すように、属性取得手段211、辞書特定手段212、コーディング手段213、候補検索手段214、翻訳手段215、辞書更新手段216、仕様書生成手段217、コード表示手段218として機能する。
【0024】
属性取得手段211は、クライアント端末10から、コーディング対象のシステムの属性情報を取得する処理を実行する。
辞書特定手段212は、取得した属性情報に用いて、コーディング時に用いる辞書を特定する処理を実行する。
【0025】
コーディング手段213は、クライアント端末10において入力されたコーディング内容を取得する処理を実行する。そして、コーディング手段213は、作成されたソースコードを逐次、プログラムリソース記憶部25に記録する。
【0026】
候補検索手段214は、コーディングにおいて設定される変数、メソッド、クラスについての参考名称を検索する処理を実行する。
翻訳手段215は、説明文に含まれるキーワードを翻訳する処理を実行する。
辞書更新手段216は、変数、メソッド、クラスについて決定された名称を名称辞書データ記憶部23に登録する処理を実行する。
【0027】
仕様書生成手段217は、作成されたプログラムのソースコードからアプリケーションインターフェース(API)仕様書を生成する処理を実行する。この仕様書生成手段217としては、公知のJavadoc(登録商標)機能を用いることが可能である。この仕様書生成手段217は、ソースコードに含まれるコメント文から所定のタグ(仕様タグ)を読み出し、このタグに対応する記述内容を取得する。例えば、タグ「@param 」を読み出した場合には、メソッドの引数や総称型のパラメータの名称や概要を取得する。
コード表示手段218は、クライアント端末10において、モジュールのソースコードを表示するとともに、このソースコードを翻訳した結果を出力する処理を実行する。
【0028】
利用者データ記憶部22には、図2(a)に示すように、本システムを利用する担当者を管理するための利用者管理レコード220が記録されている。この利用者管理レコード220は、担当者情報が登録された場合に記録される。利用者管理レコード220は、利用者ID、スキルレベルに関するデータを含んで構成される。
【0029】
利用者IDデータ領域には、各担当者を特定するための識別子に関するデータが記録されている。
スキルレベルデータ領域には、この担当者のスキルを評価したレベルに関するデータが記録されている。
【0030】
名称辞書データ記憶部23には、図2(b)に示すように、変数、メソッド、クラスについての名称の候補を出力するための名称事例レコード230が記録されている。この名称事例レコード230は、ソースコードに含まれる単語が登録された場合に記録される。名称事例レコード230は、分野、名称事例、システム名、クラス名、パッケージ名、種別、関連語に関するデータを含んで構成される。
【0031】
分野データ領域には、コーディング対象のシステムの利用分野を特定するための識別子に関するデータが記録されている。
名称事例データ領域には、この分野において用いられた名称の事例に関するデータが記録されている。本実施形態では、この名称事例は、ソースコードに用いる名称を決めるための参考名称として利用される。
【0032】
システム名データ領域、クラス名データ領域、パッケージ名データ領域には、それぞれ名称事例が利用されたシステム、クラス、パッケージを特定するための識別子に関するデータが記録されている。
【0033】
種別データ領域には、この名称事例が利用された対象(変数、メソッド、クラス)を特定するための識別子に関するデータが記録されている。
関連語データ領域には、名称事例について、ソースコードのコメント文に用いられるキーワードに関するデータが記録されている。コメント文から複数のキーワードを抽出した場合には、このデータ領域に、抽出したすべてのキーワードを関連語として記録する。
【0034】
翻訳辞書データ記憶部24には、図2(c)に示すように、ソースコードを翻訳するための単語レコード240が記録されている。この単語レコード240は、ソースコードに含まれる単語が登録された場合に記録される。単語レコード240は、見出し語、スキルレベル、翻訳語に関するデータを含んで構成される。
【0035】
見出し語データ領域には、ソースコードに用いられるキーワード(コマンド名や変数名等)に関するデータが記録されている。
スキルレベルデータ領域には、利用者のスキルを評価したレベルを特定するための識別子に関するデータが記録されている。
翻訳語データ領域には、この見出し語を、スキルレベルに応じて翻訳した内容に関するデータが記録されている。本実施形態では、この翻訳語も、ソースコードに用いる名称を決めるための参考名称として利用される。
【0036】
プログラムリソース記憶部25には、開発対象システムにおいて用いられているモジュールのプログラムリソース(ソースコード)が記録されている。このプログラムリソースは、クライアント端末10においてコーディングが行なわれた場合に記録される。このプログラムリソースには、HTMLによって作成された画面制御モジュール、Java(登録商標)によって作成されたプログラムモジュール、データベースに対する一連の処理手順を一つのDB処理プログラムにまとめたストアドプロシージャ(SP)モジュール等が含まれる。
【0037】
API仕様書記憶部26には、仕様書生成手段217において生成されたAPI仕様書ファイルが記録される。このAPI仕様書は、ソースコードを確認するための仕様書生成処理が行なわれた場合に記録される。このAPI仕様書ファイルには、アプリケーションプログラミングインターフェースに関する仕様が記録される。具体的には、変数、メソッド又はクラスの名称に対して仕様情報が記録される。
【0038】
上記のように構成された開発支援システムを用いて、コーディング及びソースコード解析を支援するための処理手順を、図3〜図4に従って説明する。ここでは、コーディング支援処理(図3)、仕様書生成処理(図4)、ソースコード表示処理(図4)の順番に説明する。
【0039】
(コーディング支援処理)
まず、コーディング支援処理を、図3に従って説明する。このコーディング支援処理においては、ソースコードにおける変数、メソッド、クラスの名称を決定する。ここでは、変数やメソッドを決定する場合を想定する。コーディングを行なう場合、担当者は、クライアント端末10を用いて、コーディング支援サーバ20にアクセスする。
【0040】
まず、コーディング支援サーバ20の制御部21は、開発対象情報の設定処理を実行する(ステップS1−1)。具体的には、制御部21の属性取得手段211は、クライアント端末10のディスプレイに属性選択画面を出力する。この属性選択画面には、開発対象システム(開発対象プログラム)の分野、システム名、パッケージ名、クラス名を入力する入力欄が設けられている。そして、属性取得手段211は、クライアント端末10から、この属性選択画面において入力された分野、システム名、パッケージ名、クラス名を取得する。
【0041】
次に、コーディング支援サーバ20の制御部21は、辞書の特定処理を実行する(ステップS1−2)。具体的には、制御部21の辞書特定手段212は、名称辞書データ記憶部23において、クライアント端末10から取得した分野が設定されている名称事例レコード230を抽出する。
【0042】
次に、コーディング支援サーバ20の制御部21は、コメント入力処理を実行する(ステップS1−3)。具体的には、コーディング担当者は、クライアント端末10においてソースコードの作成を行なう。この場合、ソースコードにおいて変数、メソッド、クラスを使用する場合、これらについての説明をコメント文として入力する。このコメント文には、予め定められた内容については予め定められた形式で、所定の仕様タグを関連付けて記述する。クライアント端末10においてコメント文の入力を検知した場合、制御部21のコーディング手段213は、入力されたコメント文をクライアント端末10から取得する。
【0043】
次に、コーディング支援サーバ20の制御部21は、コメントに含まれるキーワードの取得処理を実行する(ステップS1−4)。具体的には、制御部21の候補検索手段214は、コメント文の形態素解析を行ない、出現頻度が高い名詞をキーワードとして抽出する。
【0044】
次に、コーディング支援サーバ20の制御部21は、アクセス修飾子の取得処理を実行する(ステップS1−5)。具体的には、制御部21の候補検索手段214は、コーディングされる変数、メソッド、クラスにおいて設定されたアクセス修飾子を取得する。このアクセス修飾子は、他のクラス又は他のパッケージからの参照を制御するための修飾子であり、「public」、「protected 」、「private 」がある。ここで、「public」はすべてのクラスからのアクセスを許容し、「protected 」は同一パッケージからのアクセスを許容し、「private 」は同一クラス内だけのアクセスを許容する。また、アクセス修飾子がない場合には、同一クラス内、同一パッケージからのアクセスを許容する。
【0045】
次に、コーディング支援サーバ20の制御部21は、アクセス修飾子が「private 」かどうかについての判定処理を実行する(ステップS1−6)。具体的には、制御部21の候補検索手段214は、クライアント端末10から取得したアクセス修飾子に基づいて判定する。ここで、アクセス修飾子が「public」、「protected 」の場合や、アクセス修飾子がない場合は、「private 」でないことになる。
【0046】
アクセス修飾子が「private 」でない場合(ステップS1−6において「NO」の場合)、コーディング支援サーバ20の制御部21は、アクセス修飾子に応じて検索範囲の特定処理を実行する(ステップS1−7)。具体的には、制御部21の候補検索手段214は、アクセス修飾子の種類(「public」、「protected 」)に応じて、検索範囲を特定する。具体的には、候補検索手段214は、アクセス修飾子が「public」の場合には、同一システムに使用されている名称事例(使用済範囲)と、同一システム以外に使用されている名称事例(使用可能範囲)とを分けて検索範囲とする。アクセス修飾子が「protected 」の場合には、同一パッケージに使用されている名称事例(使用済範囲)と、同一パッケージ以外に使用されている名称事例(使用可能範囲)とを分けて検索範囲とする。
なお、アクセス修飾子が「private 」の場合(ステップS1−6において「YES」の場合)、アクセス修飾子に応じて検索範囲の特定処理(ステップS1−7)をスキップする。
【0047】
次に、コーディング支援サーバ20の制御部21は、名称事例の検索処理を実行する(ステップS1−8)。具体的には、制御部21の候補検索手段214は、コメント文から取得したキーワードを、名称辞書データ記憶部23において検索する。この場合、候補検索手段214は、ステップS1−4において取得したキーワードが関連語データ領域に記録されたすべての名称事例レコード230を検索する。本実施形態では、キーワードを含む関連語や、キーワードを構成する文字列と所定割合以上で部分一致している関連語を検索する曖昧検索を行なう。また、ステップS1−4において複数のキーワードを取得した場合には、少なくとも1以上のキーワードが記録された関連語データ領域に記録された名称事例レコード230を検索する。そして、候補検索手段214は、アクセス修飾子が「public」、「protected 」の場合には、使用済範囲の名称事例レコード230と、使用可能範囲の名称事例レコード230とを分けて検索する。一方、アクセス修飾子が「private 」の場合には、すべての名称事例レコード230を使用可能範囲として検索する。
【0048】
次に、コーディング支援サーバ20の制御部21は、登録があるかどうかについて判定処理を実行する(ステップS1−9)。具体的には、制御部21の候補検索手段214は、名称辞書データ記憶部23において、キーワードに対応する名称事例レコード230を抽出できた場合には、登録があることになる。
【0049】
名称事例の登録がない場合(ステップS1−9において「NO」の場合)、コーディング支援サーバ20の制御部21は、翻訳処理を実行する(ステップS1−10)。具体的には、制御部21の翻訳手段215は、翻訳辞書データ記憶部24を用いて、キーワードが見出し語として記録された単語レコード240を検索し、この単語レコード240に記録された翻訳語を取得する。
【0050】
なお、名称事例の登録がある場合(ステップS1−9において「YES」の場合)、コーディング支援サーバ20の制御部21は、翻訳処理(ステップS1−10)をスキップする。
【0051】
そして、コーディング支援サーバ20の制御部21は、名称候補の出力処理を実行する(ステップS1−11)。具体的には、制御部21のコーディング手段213は、ステップS1−8において抽出した名称事例又はステップS1−10において抽出した翻訳語を名称候補として、クライアント端末10のディスプレイに出力する。ここで、ステップS1−8において抽出した名称事例については、使用済範囲の名称事例レコード230に記録された名称事例は同一名称の利用を禁止する候補として、使用可能範囲の名称事例レコード230に記録された名称事例は同一名称の利用を許容する候補として出力する。
【0052】
次に、コーディング支援サーバ20の制御部21は、名称の決定処理を実行する(ステップS1−12)。具体的には、コーディング担当者は、出力された名称候補を参照して、コーディングに用いる名称を決定する。この場合、制御部21のコーディング手段213は、クライアント端末10において設定された名称を取得する。
【0053】
次に、コーディング支援サーバ20の制御部21は、名称事例の登録処理を実行する(ステップS1−13)。具体的には、制御部21の辞書更新手段216は、決定した名称を記録した名称事例レコード230を生成し、名称辞書データ記憶部23に記録する。この名称事例レコード230には、クライアント端末10から取得した分野、システム名、パッケージ名、クラス名を記録する。
【0054】
(仕様書生成処理)
次に、仕様書生成処理を、図4に従って説明する。この場合、担当者は、クライアント端末10を用いて、コーディング支援サーバ20にアクセスする。
【0055】
まず、コーディング支援サーバ20の制御部21は、ソースコードの指定処理を実行する(ステップS2−1)。具体的には、制御部21の仕様書生成手段217は、プログラムリソース記憶部25に記録されているプログラム名の一覧を、クライアント端末10のディスプレイに出力する。そして、担当者は、クライアント端末10において、確認対象のプログラム名のソースコードを、プログラムリソース記憶部25において指定する。この場合、仕様書生成手段217は、指定されたプログラムのソースコードをプログラムリソース記憶部25から取得する。
【0056】
次に、コーディング支援サーバ20の制御部21は、API仕様書の生成処理を実行する(ステップS2−2)。具体的には、制御部21の仕様書生成手段217は、取得したソースコードにおいて、仕様タグを特定して、この仕様タグに関連付けられた記述内容を特定する。そして、この記述内容を記録したAPI仕様書ファイルを生成する。
【0057】
次に、コーディング支援サーバ20の制御部21は、API仕様書の登録処理を実行する(ステップS2−3)。具体的には、制御部21の仕様書生成手段217は、作成したAPI仕様書ファイルを、プログラム名に関連付けてAPI仕様書記憶部26に記録する。
【0058】
(ソースコード表示処理)
次に、ソースコード表示処理を、図4に従って説明する。各ソースコードを確認する場合、担当者は、クライアント端末10を用いて、コーディング支援サーバ20にアクセスする。この場合、担当者を特定するためのログイン認証が行なわれる。
【0059】
ここでは、まず、コーディング支援サーバ20の制御部21は、第1フレーム表示処理を実行する(ステップS3−1)。具体的には、制御部21のコード表示手段218は、クライアント端末10のディスプレイに、コード翻訳画面を出力する。このコード翻訳画面は、コードを表示する左フレーム(第1フレーム)と、このソースコードの翻訳語を表示する右フレーム(第2フレーム)とから構成される。ここで、コード表示手段218は、プログラムリソース記憶部25から取得したソースコードを、コード翻訳画面の左フレームに出力する。
【0060】
次に、コーディング支援サーバ20の制御部21は、ネスト構造毎に表示変更処理を実行する(ステップS3−2)。具体的には、制御部21のコード表示手段218は、左フレームに表示されたソースコードにおいて、ネスト構造を特定する。そして、コード表示手段218は、ネスト構造毎に、ソースコードの表示色を変更する。
【0061】
また、コーディング支援サーバ20の制御部21は、第2フレーム表示処理を実行する(ステップS3−3)。具体的には、制御部21のコード表示手段218は、プログラムリソース記憶部25から取得したソースコードを、第1フレームのソースコードの表示行と一致するように、第2フレームに表示する。
【0062】
次に、コーディング支援サーバ20の制御部21は、API仕様書の検索処理を実行する(ステップS3−4)。具体的には、制御部21のコード表示手段218は、API仕様書記憶部26において、確認対象のソースコードのプログラム名が記録されたAPI仕様書ファイルを検索する。
【0063】
次に、コーディング支援サーバ20の制御部21は、API仕様書が登録されているかどうかについての判定処理を実行する(ステップS3−5)。具体的には、制御部21のコード表示手段218は、API仕様書記憶部26からAPI仕様書ファイルを抽出できた場合には、API仕様書が登録されていることになる。
【0064】
API仕様書が登録されている場合(ステップS3−5において「YES」の場合)、コーディング支援サーバ20の制御部21は、API仕様書の表示処理を実行する(ステップS3−6)。具体的には、制御部21のコード表示手段218は、第2フレームに表示された変数、メソッド又はクラスの名称を抽出する。次に、コード表示手段218は、API仕様書ファイルにおいて、第2フレームから抽出した変数、メソッド又はクラスの仕様情報が記録された場所を特定する。そして、コード表示手段218は、第2フレームに表示された変数、メソッド又はクラスの名称に対して、API仕様書ファイルの仕様情報を表示できるように、各仕様情報が記録された場所に特定したリンク情報を設定する。
【0065】
API仕様書が登録されていない場合(ステップS3−5において「NO」の場合)、コーディング支援サーバ20の制御部21は、API仕様書の表示処理(ステップS3−6)をスキップする。
次に、コーディング支援サーバ20の制御部21は、スキルレベルの特定処理を実行する(ステップS3−7)。具体的には、制御部21のコード表示手段218は、アクセス時のログイン認証において特定した利用者管理レコード220に記録されたスキルレベルを取得する。
【0066】
次に、コーディング支援サーバ20の制御部21は、翻訳対象語の特定処理を実行する(ステップS3−8)。具体的には、制御部21のコード表示手段218は、第2フレームに表示されたソースコードに含まれる単語を、順次、翻訳対象語として抽出する。
【0067】
次に、コーディング支援サーバ20の制御部21は、翻訳処理を実行する(ステップS3−9)。具体的には、制御部21のコード表示手段218は、抽出した翻訳対象語と、名称辞書データ記憶部23に記録された単語レコード240に記録された見出し語とを比較する。翻訳対象語が見出し語として登録されている場合、コード表示手段218は、ステップS3−7において特定したスキルレベルに応じた翻訳語を単語レコード240から抽出する。そして、コード表示手段218は、第2フレームに表示された翻訳対象語を翻訳語に置換して表示する。なお、翻訳対象語が見出し語として登録されていない場合や、スキルレベルに応じた翻訳語が登録されていない場合には、そのままソースコードを残しておく。
【0068】
本実施形態によれば、以下のような効果を得ることができる。
(1)本実施形態においては、コーディング支援サーバ20の制御部21は、入力されたコメントに含まれるキーワードを取得する(ステップS1−4)。そして、制御部21は、名称事例の検索処理を実行し(ステップS1−8)、名称候補を出力する(ステップS1−11)。これにより、コメント文に基づいて、利用実績がある名称候補を出力することができる。
【0069】
(2)本実施形態においては、名称事例の登録がない場合(ステップS1−9において「NO」の場合)、コーディング支援サーバ20の制御部21は、翻訳処理を実行し(ステップS1−10)、名称候補の出力処理を実行する(ステップS1−11)。これにより、利用実績がない場合にも、翻訳語による名称候補を出力することができる。
【0070】
(3)本実施形態においては、コーディング支援サーバ20の制御部21は、アクセス修飾子を取得する(ステップS1−5)。そして、アクセス修飾子が「private 」でない場合(ステップS1−6において「NO」の場合)、コーディング支援サーバ20の制御部21は、アクセス修飾子に応じて検索範囲の特定処理を実行する(ステップS1−7)。アクセス修飾子により、変数やメソッドの利用が許容される範囲は変化するが、この範囲を考慮して、名称候補を出力することができる。
【0071】
(4)本実施形態においては、コーディング支援サーバ20の制御部21は、名称の決定処理(ステップS1−12)、名称事例の登録処理を実行する(ステップS1−13)。これにより、決定した名称を辞書に反映させて、後続のコーディングにおいて名称候補として利用することができる。
【0072】
(5)本実施形態においては、コーディング支援サーバ20の制御部21は、第1フレーム表示処理を実行し(ステップS3−1)、ネスト構造毎に表示変更処理を実行する(ステップS3−2)。更に、制御部21は、第2フレーム表示処理を実行する(ステップS3−3)。ここで、API仕様書が登録されている場合(ステップS3−5において「YES」の場合)、コーディング支援サーバ20の制御部21は、API仕様書の表示処理を実行する(ステップS3−6)。これにより、API仕様書を参照して、コーディング内容を確認することができる。
【0073】
(6)本実施形態においては、コーディング支援サーバ20の制御部21は、スキルレベルの取得処理を実行する(ステップS3−7)。これにより、スキルレベルに応じて、理解しやすい翻訳文を提供することができる。
【0074】
<第2の実施形態>
本発明を具体化した第2の実施形態を図5に従って説明する。第2の実施形態は、第1の実施形態のコーディング支援処理において、システム規模や設計書を利用する構成であり、同様の部分については詳細な説明を省略する。この場合、コーディング支援サーバ20は、設計書データ記憶部に接続できるようにしておく。この設計書データ記憶部には、システム開発時における基本設計や詳細設計において作成された設計書に関するファイルが記録されている。更に、候補検索手段214に、システム規模、利用頻度に対応させて、名称長さの基準文字数を決定するための長さ決定テーブルを保持させておく。この長さ決定テーブルにおいては、システム規模が大きい場合や利用頻度が高い場合に、名称の構成文字数が多くなるように設定された基準文字数が記録されている。
【0075】
まず、コーディング支援サーバ20の制御部21は、開発対象情報の設定処理を実行する(ステップS4−1)。具体的には、制御部21の属性取得手段211は、クライアント端末10のディスプレイに属性選択画面を出力する。この属性選択画面には、開発対象プログラムの分野、システム名、パッケージ名、クラス名を入力する入力欄が設けられている。
【0076】
更に、この属性選択画面には、システムの規模を入力する入力欄が設けられている。この入力欄には、システム規模において想定されるコーディング行数やモジュール数を設定する。そして、属性取得手段211は、この属性選択画面において入力された分野、システム名、パッケージ名、クラス名及びシステム規模を取得する。
【0077】
次に、コーディング支援サーバ20の制御部21は、ステップS1−2と同様に、辞書の特定処理を実行する(ステップS4−2)。
次に、コーディング支援サーバ20の制御部21は、設計書の取得処理を実行する(ステップS4−3)。具体的には、制御部21の候補検索手段214は、設計書データ記憶部から開発対象プログラムの設計書ファイルを取得する。
【0078】
次に、コーディング支援サーバ20の制御部21は、設計書からキーワードの取得処理を実行する(ステップS4−4)。具体的には、制御部21の候補検索手段214は、変数、メソッド、クラスにおいて使用されるキーワードを抽出する。
【0079】
次に、コーディング支援サーバ20の制御部21は、各キーワードの利用頻度の算出処理を実行する(ステップS4−5)。具体的には、制御部21の候補検索手段214は、各キーワードの利用回数を算出し、キーワード総数で除算することにより利用頻度を算出する。
【0080】
次に、コーディング支援サーバ20の制御部21は、システム規模、利用頻度に応じて名称の長さの基準文字数の決定処理を実行する(ステップS4−6)。具体的には、制御部21の候補検索手段214は、取得したシステム規模、利用頻度に応じた基準文字数を、長さ決定テーブルを用いて決定する。
【0081】
次に、コーディング支援サーバ20の制御部21は、ステップS1−3〜S1−5と同様に、コメント入力処理(ステップS4−7)、コメントに含まれるキーワードの取得処理(ステップS4−8)、アクセス修飾子の取得処理(ステップS4−9)を実行する。
【0082】
次に、コーディング支援サーバ20の制御部21は、ステップS1−6と同様に、「private 」かどうかについての判定処理を実行する(ステップS4−10)。そして、「private 」でない場合(ステップS4−10において「NO」の場合)、コーディング支援サーバ20の制御部21は、ステップS1−7と同様に、アクセス修飾子に応じて検索範囲の特定処理を実行する(ステップS4−11)。
【0083】
そして、コーディング支援サーバ20の制御部21は、ステップS1−8と同様に、名称事例の検索処理(ステップS4−12)を実行し、ステップS1−9と同様に、登録があるかどうかについての判定処理(ステップS4−13)を実行する。
【0084】
名称事例の登録がない場合(ステップS4−13において「NO」の場合)、コーディング支援サーバ20の制御部21は、ステップS1−10と同様に、翻訳処理を実行する(ステップS4−14)。なお、名称事例の登録がある場合(ステップS4−13において「YES」の場合)、コーディング支援サーバ20の制御部21は、翻訳処理(ステップS4−14)をスキップする。
【0085】
次に、コーディング支援サーバ20の制御部21は、基準文字数に応じて優先順位の決定処理を実行する(ステップS4−15)。具体的には、制御部21の候補検索手段214は、名称候補の文字数が基準文字数に近い順番に、名称候補を出力する優先順位を決定する。
【0086】
次に、コーディング支援サーバ20の制御部21は、ステップS1−11と同様に、名称候補の出力処理を実行する(ステップS4−16)。この場合、制御部21のコーディング手段213は、ステップS4−15において決定した優先順位の順番で名称候補をクライアント端末10のディスプレイに出力する。そして、コーディング支援サーバ20の制御部21は、ステップS1−12、S1−13と同様に、名称の決定処理(ステップS4−17)、名称事例の登録処理(ステップS4−18)を実行する。
【0087】
本実施形態によれば、以下のような効果を得ることができる。
(7)本実施形態においては、候補検索手段214に、システム規模、利用頻度に対応させて、名称長さの基準文字数を決定するための長さ決定テーブルを保持させておく。この長さ決定テーブルにおいては、システム規模が大きい程、利用頻度が高い程、名称の構成文字数が多くなるように設定された基準文字数が記録されている。そして、コーディング支援サーバ20の制御部21は、開発対象情報の設定処理を実行する(ステップS4−1)。ここでは、システム規模を取得する。更に、コーディング支援サーバ20の制御部21は、各キーワードの利用頻度の算出処理を実行する(ステップS4−5)。そして、コーディング支援サーバ20の制御部21は、システム規模、利用頻度に応じて名称の長さ基準の基準文字数の決定処理を実行する(ステップS4−6)。具体的には、制御部21の候補検索手段214は、取得したシステム規模、利用頻度に応じた基準文字数を、長さ決定テーブルを用いて決定する。そして、コーディング支援サーバ20の制御部21は、基準文字数に応じて優先順位の決定処理を実行する(ステップS4−15)。
【0088】
これにより、システム規模が大きい場合には、構成文字数が多い名称候補を選択することにより、名称決定の自由度を向上させることができる。また、キーワードの利用頻度が高い場合にも、文字数が多い名称候補を選択することにより、名称決定の自由度を向上させることができる。
【0089】
なお、上記各実施形態は以下のように変更してもよい。
・ 上記各実施形態では、名称事例の登録がない場合(ステップS1−9、S4−13において「NO」の場合)、コーディング支援サーバ20の制御部21は、翻訳処理を実行する(ステップS1−10、S4−14)。これに代えて、名称事例の登録がある場合にも翻訳処理を行なうようにしてもよい。
【0090】
・ 上記各実施形態では、コーディング支援サーバ20の制御部21は、翻訳処理を実行する(ステップS3−9、S4−14)。ここでは、翻訳辞書データ記憶部24を用いて、翻訳対象語を翻訳する。この場合、ソースコードの構造に応じて、意訳するようにしてもよい。この場合には、翻訳辞書データ記憶部24には、見出し語を含む構文に応じて、意訳する翻訳パターンを記録しておく。例えば、翻訳語の品詞を特定して、日本語として読みやすい順番に並び替える。
【0091】
・ 上記各実施形態では、名称辞書データ記憶部23の名称事例レコード230は、分野、名称事例、システム名、クラス名、パッケージ名、種別、関連語に関するデータを含んで構成される。そして、コーディング支援サーバ20の制御部21は、名称事例の検索処理を実行する(ステップS1−8、S4−12)。ここでは、候補検索手段214は、コメント文から取得したキーワードが関連語データ領域に記録された名称事例レコード230を検索する。名称事例の検索方法は、これに限定されるものではない。例えば、コメント文から取得したキーワードを翻訳し、この翻訳語を用いて、名称事例レコード230に記録された名称事例を曖昧検索するようにしてもよい。この場合には、翻訳語の一部一致や子音配列が一致する名称事例レコード230を検索する。
【0092】
・ 上記各実施形態では、コーディング支援サーバ20の制御部21は、アクセス修飾子に応じて検索範囲の特定処理を実行する(ステップS1−7、S4−11)。ここで、アクセス修飾子が設定されていない場合には、継承元クラスの構成によって決定するようにしてもよい。具体的には、継承元クラスを特定し、この継承元クラスにおいて規定されたアクセス修飾子を用いて、検索範囲を決定する。
【0093】
・ 上記第2の実施形態では、この長さ決定テーブルにおいて、利用頻度が高い場合に、名称の構成文字数が多くなるように設定された基準文字数を記録した。そして、基準文字数に応じて優先順位の決定処理(ステップS4−15)において、名称候補の文字数が基準文字数に近い順番に、名称候補を出力する優先順位を決定する。優先順位の決定方法は、基準文字数に近い順番に限定されるものではない。名称を付与する変数、メソッド又はクラスの使用頻度予測値を予め登録しておき、この使用頻度予測値に応じて、文字数を制御するようにしてもよい。例えば、使用頻度予測値が大きく、よく使用される可能性がある変数、メソッド又はクラスについては、基準文字数に対して所定範囲内で短くしたものを許容し、これらの優先順位を高くする制御を行なう。
【符号の説明】
【0094】
10…クライアント端末、20…コーディング支援サーバ、21…制御部、211…属性取得手段、212…辞書特定手段、213…コーディング手段、214…候補検索手段、215…翻訳手段、216…辞書更新手段、217…仕様書生成手段、218…コード表示手段、22…利用者データ記憶部、23…名称辞書データ記憶部、24…翻訳辞書データ記憶部、25…プログラムリソース記憶部、26…API仕様書記憶部。

【特許請求の範囲】
【請求項1】
キーワードに対応して参考名称を記録した辞書記憶手段と、
入出力手段に接続される制御手段とを備えた開発支援システムであって、
前記制御手段が、
前記入出力手段から、開発対象プログラムのソースコードに用いる変数、メソッド又はクラスについての説明文を取得する手段と、
前記説明文からキーワードを抽出する手段と、
前記抽出したキーワードに対応する参考名称を前記辞書記憶手段において検索し、取得した参考名称を名称候補として前記入出力手段に出力する手段と、
前記入出力手段に出力された名称候補を利用して決定された名称を参考名称として、前記キーワードに対応させて前記辞書記憶手段に登録する手段と
を備えたことを特徴とする開発支援システム。
【請求項2】
前記辞書記憶手段において、参考名称は分野に関連付けられて記録されており、
前記制御手段が、前記開発対象プログラムが用いられる分野を特定し、前記特定した分野に関連付けられた参考名称を検索することを特徴とする請求項1に記載の開発支援システム。
【請求項3】
前記開発対象プログラムが含まれるシステムの属性情報を取得し、
前記属性情報に基づいて、名称候補の長さ基準を決定し、
前記辞書記憶手段において、前記長さ基準に基づいた優先順位で参考名称を名称候補として出力することを特徴とする請求項1又は2に記載の開発支援システム。
【請求項4】
前記属性情報として、前記開発対象プログラムが含まれるシステムの規模を取得し、
前記規模に基づいて、名称候補の長さ基準を決定することを特徴とする請求項3に記載の開発支援システム。
【請求項5】
前記属性情報として、前記開発対象プログラムが含まれるシステムの設計書ファイルを取得し、
前記設計書ファイルにおいて、前記辞書記憶手段に記録された各キーワードの利用回数を算出し、前記利用回数に基づいて、名称候補の長さ基準を決定することを特徴とする請求項3又は4に記載の開発支援システム。
【請求項6】
キーワードに対応して参考名称を記録した辞書記憶手段と、
入出力手段に接続される制御手段とを備えた開発支援システムを用いて、開発を支援するための方法であって、
前記制御手段が、
前記入出力手段から、開発対象プログラムのソースコードに用いる変数、メソッド又はクラスについての説明文を取得する段階と、
前記説明文からキーワードを抽出する段階と、
前記抽出したキーワードに対応する参考名称を前記辞書記憶手段において検索し、取得した参考名称を名称候補として前記入出力手段に出力する段階と、
前記入出力手段に出力された名称候補を利用して決定された名称を参考名称として、前記キーワードに対応させて前記辞書記憶手段に登録する段階と
を備えたことを特徴とする開発支援方法。
【請求項7】
キーワードに対応して参考名称を記録した辞書記憶手段と、
入出力手段に接続される制御手段とを備えた開発支援システムを用いて、開発を支援するためのプログラムであって、
前記制御手段を、
前記入出力手段から、開発対象プログラムのソースコードに用いる変数、メソッド又はクラスについての説明文を取得する手段、
前記説明文からキーワードを抽出する手段、
前記抽出したキーワードに対応する参考名称を前記辞書記憶手段において検索し、取得した参考名称を名称候補として前記入出力手段に出力する手段、
前記入出力手段に出力された名称候補を利用して決定された名称を参考名称として、前記キーワードに対応させて前記辞書記憶手段に登録する手段
として機能させることを特徴とする開発支援プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−238160(P2012−238160A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2011−106415(P2011−106415)
【出願日】平成23年5月11日(2011.5.11)
【出願人】(592131906)みずほ情報総研株式会社 (187)
【Fターム(参考)】