JP5323107B2 - ソフトウェア部品管理装置およびソフトウェア部品管理プログラム - Google Patents

ソフトウェア部品管理装置およびソフトウェア部品管理プログラム Download PDF

Info

Publication number
JP5323107B2
JP5323107B2 JP2011026770A JP2011026770A JP5323107B2 JP 5323107 B2 JP5323107 B2 JP 5323107B2 JP 2011026770 A JP2011026770 A JP 2011026770A JP 2011026770 A JP2011026770 A JP 2011026770A JP 5323107 B2 JP5323107 B2 JP 5323107B2
Authority
JP
Japan
Prior art keywords
software component
function name
function
similarity
registered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011026770A
Other languages
English (en)
Other versions
JP2012168598A (ja
Inventor
愛 高見
勝行 井上
操代 藤岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2011026770A priority Critical patent/JP5323107B2/ja
Publication of JP2012168598A publication Critical patent/JP2012168598A/ja
Application granted granted Critical
Publication of JP5323107B2 publication Critical patent/JP5323107B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、ソフトウェアを再利用可能な部品の単位として管理するソフトウェア部品管理装置に関する。
ソフトウェアの開発コストを低減する効率的なソフトウェア開発技術が求められているが、その中にソフトウェアの再利用という考えがある。ソフトウェアの再利用はソフトウェア開発における成果物を新規の開発の際に再度活用しようとする思想であり、再利用可能なソフトウェアを部品化したもの(以下、ソフトウェア部品という)を予め管理しておき、ソフトウェア部品単位で流用する。
ここで、管理しているソフトウェア部品を流用するためには、管理している数々のソフトウェア部品の中から、流用したいソフトウェア部品を検索する必要がある。そのためには、ソフトウェア部品と、ソフトウェア部品が有する機能を示した説明文や語句とを対応付けて、その説明文や語句を対象として検索を行うと言った方法が採られる。しかし、ソフトウェア部品が有する機能を過不足なく表現した説明文や語句を対応付けることは容易ではない。
例えば、特許文献1で開示されている方式では、ソフトウェア部品と仕様書を管理し、設計情報の関連を示すタグ情報を付加することにより、成果物間の関連を記録している。
部品や仕様書に変更があれば、タグを介した関連を見ることにより、変更の影響を受ける成果物を抽出することができる。
また、特許文献2で開示されている方式では、仕様書から作成した機能ツリーとソースとを対応付けたリンク情報を記録している。機能ツリーに変更があった場合に、ソースの変更箇所を抽出することもできる。
さらに、設計情報や機能情報との対応を関連付けるだけでなく、検索自体を容易にすることを目的とした技術も存在する。特許文献3で開示されている方式では、ソフトウェア部品を検索する際の検索キーを、予めソフトウェア部品に対応付けられている設計書から自動抽出する構成を採っている。
特開2008−123432号公報 特許第4360942号公報 特開平8−297571号公報
しかしながら、特許文献1に記載の技術では、設計情報のタグを介して、機能とソフトウェア部品が関連付けられているため、同等のタグが付けられない場合は関連がないことになってしまう。
特許文献2に記載の技術では、機能ツリーの変更に応じて、ソースコードの変更箇所を抽出しユーザに提示することが可能であるが、そもそも流用すべきソフトウェア部品を検索する方法は提供していない。
また、特許文献3に記載の技術では、ソフトウェア部品を検索するための検索キーを整備しているが、検索対象となる設計書の語句に統一性がなければ、同様の機能を持つ部品が存在しても、同じ検索キーでは検索できない。ソフトウェア部品を管理する期間は長期に及ぶ場合、表記や部門における用語が変化してしまう。
本発明は上記のような問題点を解消するためになされたもので、ソフトウェア部品を検索する際に、所望の機能を持つソフトウェア部品を容易に検索できるとともに、検索に際して有用な情報を作業者に大きな負担を与えずに抽出することが可能で、また、ソフトウェア部品の機能の表現に表記のゆれがある場合でも共通した機能名称を付加することができるソフトウェア部品管理装置を提供することを目的とする。
本発明に係るソフトウェア部品管理装置の態様は、ソフトウェア部品を登録するとともに、登録済みのソフトウェア部品から所望のソフトウェア部品を検索可能なソフトウェア部品管理装置であって、前記ソフトウェア部品の登録の際に、前記登録済みのソフトウェア部品および登録対象のソフトウェア部品を解析し、前記登録対象のソフトウェア部品について、類似する前記登録済みのソフトウェア部品の機能名称を外部から選択可能に提示し、当該外部から選択された機能名称と前記登録対象のソフトウェア部品とを対応させた機能名称とソフトウェア部品との対応関係情報としてデータベースに保存する機能名称解析部と、前記所望のソフトウェア部品を検索する際に、前記データベースに保存された前記機能名称とソフトウェア部品との対応関係情報から、前記所望のソフトウェア部品に関連したソフトウェア部品を抽出して出力するソフトウェア部品検索部とを備えている。
本発明に係るソフトウェア部品管理装置の態様によれば、登録対象のソフトウェア部品について、類似する前記登録済みのソフトウェア部品の機能名称を外部から選択可能に提示し、当該外部から選択された機能名称と前記登録対象のソフトウェア部品とを対応させた機能名称とソフトウェア部品との対応関係情報としてデータベースに保存することで、登録済みのソフトウェア部品と共通した機能名称を付けることができる。また、ソフトウェア部品の機能の表現の表記のゆれによって検索結果から漏れることを防ぐことが可能となる。また、所望のソフトウェア部品を検索する際には、所望のソフトウェア部品に関連したソフトウェア部品を抽出して出力するので、所望の機能を持つソフトウェア部品を容易に検索できるとともに、検索に際して有用な情報を作業者に大きな負担を与えずに抽出することが可能となる。
本発明の実施の形態1に係るソフトウェア部品管理装置の概略構成を示すブロック図である。 本発明の実施の形態1に係るソフトウェア部品管理装置のハードウェア構成を示すブロック図である。 本発明の実施の形態1に係るソフトウェア部品登録部の概略構成を示すブロック図である。 本発明の実施の形態1に係る機能名称解析部の概略構成を示すブロック図である。 本発明の実施の形態1に係る機能名称解析部でソフトウェア部品を登録する処理を示すフローチャートである。 本発明の実施の形態1に係るソフトウェア部品類似解析部を示すブロック図である。 本発明の実施の形態1に係るソフトウェア部品類似解析部での解析処理を示すフローチャートである。 本発明の実施の形態1に係る公開関数変数解析部で、ソフトウェア部品のソースコード中で部品外に公開されている関数および変数を解析する処理を示すフローチャートである。 本発明の実施の形態1に係る外部変数解析部で、ソフトウェア部品のソースコード中で使用している外部変数を解析する処理を示すフローチャートである。 本発明の実施の形態1に係る外部関数解析部で、ソフトウェア部品のソースコード中で呼び出している外部関数を解析する処理を示すフローチャートである。 本発明の実施の形態1に係る類似度算出部の構成を示すブロック図である。 本発明の実施の形態1に係る類似度算出部での類似度を算出処理を示すフローチャートである。 本発明の実施の形態1に係る類似度算出部で登録対象部品の公開関数と既存部品の公開関数の類似度を算出する処理を示すフローチャートである。 本発明の実施の形態1に係る類似度算出部で登録対象部品の公開変数と既存部品の公開変数の類似度を算出する処理を示すフローチャートである。 本発明の実施の形態1に係る類似度算出部で登録対象部品の外部関数と既存部品の外部関数の類似度を算出する処理を示すフローチャートである。 本発明の実施の形態1に係る類似度算出部で登録対象部品の外部変数と既存部品の外部変数の類似度を算出する処理を示すフローチャートである。 本発明の実施の形態1に係るソフトウェア部品−機能名称関連解析部の構成を示すブロック図である。 本発明の実施の形態1に係るソフトウェア部品−機能名称関連解析部で登録対象部品の機能名称を解析する処理を示すフローチャートである。 本発明の実施の形態1に係る機能名称−ソフトウェア部品対応表更新部の構成を示すブロック図である。 機能名称−ソフトウェア部品対応表更新部の動作を説明するフローチャートである。 本発明の実施の形態1に係るソフトウェア部品検索部の概略構成を示すブロック図である。 本発明の実施の形態1に係るソフトウェア部品検索部で機能名称を入力としてソフトウェア部品を検索する処理を示すフローチャートである。 本発明の実施の形態1に係るソフトウェア部品検索部の概略構成を示すブロック図である。 本発明の実施の形態1に係るソフトウェア部品検索部で、既存部品を入力としてソフトウェア部品を検索する処理を示すフローチャートである。 本発明の実施の形態2に係るソフトウェア部品登録部の概略構成を示すブロック図である。 本発明の実施の形態2に係る機能名称解析部の概略構成を示すブロック図である。 本発明の実施の形態2に係るソフトウェア部品−機能名称関連解析部の構成を示すブロック図である。 本発明の実施の形態2に係るソフトウェア部品−機能名称関連解析部で登録対象部品の機能名称を解析する処理を示すフローチャートである。
<A.実施の形態1>
以下、図1〜図24を用いて、本発明に係るソフトウェア部品管理装置の実施の形態1について説明する。
<A−1.ソフトウェア部品管理装置の概略>
図1は、本発明に係るソフトウェア部品管理装置1の概略構成を示すブロック図である。図1に示すように、ソフトウェア部品管理装置1は、ソフトウェア部品の登録を行う登録者およびソフトウェア部品の検索を行う開発者によって使用されるパーソナルコンピュータなどの情報処理端末装置(以下、端末装置と呼称)2にLAN(Local Area Network)などのようなネットワーク3を介して接続されている。
ソフトウェア部品管理装置1は、入力部11、出力部12、ソフトウェア部品登録部13、機能名称解析部14、ソフトウェア部品検索部15、成果物データベース16および関連情報データベース17を備えている。
入力部11は、ネットワーク3を介して端末装置2からの入力を受け付ける。出力部12は、ネットワーク3を介して端末装置2への出力を送出する。
ソフトウェア部品登録部13は、ソフトウェア部品管理装置1に入力された新規のソフトウェア部品を、成果物データベース16に登録する。
機能名称解析部14は、成果物データベース16に登録されているソフトウェア部品および登録対象部品を解析し、登録対象部品について登録済みのソフトウェア部品との類似関係に基づいて機能名称を関連付けし、機能名称とソフトウェア部品との対応関係の情報として関連情報データベース17に登録する。ここで、機能名称とはソフトウェア部品が有する機能を表したキーワードであり、例えば、折れ線グラフを表示する機能を有するグラフ部品であれば、「折れ線描画」や「線描画」と言った名称となる。
ソフトウェア部品検索部15は、ソフトウェア部品管理装置1に登録されているソフトウェア部品を検索する。
図2は、ソフトウェア部品管理装置1を、コンピュータシステムのハードウェアにより実現する場合の構成を示すブロック図である。
図2に示すコンピュータシステムは、キーボード101、マウス102、マイクロプロセッサ103、HDD(ハードディスク装置)104、RAM(Random Access Memory)105、ROM(Read Only Memory)106、グラフィックチップ107、フレームバッファ108およびディスプレイモニタ109を備えている。
このような構成において、ソフトウェア部品管理装置1の入力部11は、キーボード101およびマウス102で実現されている。ソフトウェア部品登録部13、機能名称解析部14、ソフトウェア部品検索部15、成果物データベース16および関連情報データベース17は、それぞれの機能に対応したプログラムが、HDD104またはRAM105、ROM106等の記憶領域に格納され、これらのプログラムをマイクロプロセッサ103が実行することで実現される。出力部12は、グラフィックチップ107、フレームバッファ108およびディスプレイモニタ109で実現される。
次に、このようなソフトウェア部品管理装置1を用いたソフトウェア部品登録の手順について説明する。
<A−2.ソフトウェア部品登録部の構成>
図3は、ソフトウェア部品登録部13の概略構成を示すブロック図である。ソフトウェア部品登録部13は、登録対象のソフトウェア部品(以下、登録対象部品と呼称)21の情報を入力とし、登録対象部品21に対し、ソフトウェア部品管理装置1において一意に特定できる部品IDを与える。
ここで部品IDとは、例えば、ソフトウェア部品管理装置1に登録の順に付与する連番数字や、アルファベット、あるいは数字とアルファベットの組み合わせなどが挙げられる。
また、ソフトウェア部品登録部13は、ソースコード格納部22を備え、ソースコード格納部22は、登録対象部品21の部品IDと登録対象部品21から抽出したソースコードの組み合せを成果物データベース16のソースコードデータベース24に登録する。ここでソフトウェア部品の情報とは、ソフトウェア部品名称とソフトウェア部品本体へのパスを少なくとも含む情報を指す。
<A−3.機能名称解析部の構成>
図4は、機能名称解析部14の概略構成を示すブロック図である。図4に示すように、機能名称解析部14は、ソフトウェア部品類似解析部31、ソフトウェア部品−機能名称関連解析部32および機能名称ソフトウェア部品対応表更新部33を備えている。
ソフトウェア部品類似解析部31は、登録対象部品と登録済みのソフトウェア部品(以下、既存部品と呼称)のソースコードを解析してソフトウェア部品の類似度を算出し、登録対象部品と類似度の高い既存部品を類似ソフトウェア部品一覧35(類似ソフトウェア部品情報)として出力する。
ソフトウェア部品−機能名称関連解析部32は、類似ソフトウェア部品一覧35に含まれる、既存ソフトウェア部品に関連付けられた機能名称を、登録対象部品の機能名称候補一覧43として登録者に提示し、登録対象部品の機能名称としての適否の判定結果を受け付け、適切と判定された機能名称を、機能名称一覧36(機能名称情報)として出力する。
機能名称ソフトウェア部品対応表更新部33は、ソフトウェア部品−機能名称関連解析部32から出力された機能名称一覧36と、ソフトウェア部品登録部13(図1)で付与された登録対象部品の部品ID34とを関連情報データベース17に出力し、両者を対応付けた機能名称−ソフトウェア部品対応表23(機能名称とソフトウェア部品との対応関係の情報)として記録する。
機能名称一覧36と登録対象部品の部品ID34とを対応付けた機能名称−ソフトウェア部品対応表23を得ることで、ソフトウェア部品の登録の際に登録済みのソフトウェア部品と共通した機能名称を付けることができる。
<A−4.機能名称解析部での処理>
図5は、機能名称解析部14でのソフトウェア部品の登録処理を示すフローチャートである。以下、このフローチャートを参照して、機能名称解析部14での登録処理を説明する。
機能名称解析部14は、ソフトウェア部品登録部13(図1)から登録対象部品の部品ID34を取得し、成果物データベース16のソースコードデータベース24から登録対象部品のソースコードを取得する(ステップS141)。
そして、取得した登録対象部品のソースコードと既存部品のソースコードとをソフトウェア部品類似解析部31で解析し、登録対象部品に類似する既存部品の有無を判定し、類似する既存部品の部品IDと類似度の値を記録した類似ソフトウェア部品一覧35を作成する(ステップS142)。
次に、類似ソフトウェア部品一覧35に含まれる既存部品の部品IDをキーとして、ソフトウェア部品−機能名称関連解析部32において、関連情報データベース17の機能名称−ソフトウェア対応表23から、キーとなる部品IDに対応する機能名称を取得することを、類似ソフトウェア部品一覧35に含まれる既存部品全てに対して行い、取得した機能名称群を機能名称候補一覧43とする。この機能名称候補一覧43を登録者に出力部12を介して提示し、機能名称候補一覧43に含まれる機能名称ごとに登録者が下した登録対象部品の機能名称としての適否の判定結果を入力部11より受け付ける。
そして、登録対象部品の機能名称として適切と判定された機能名称を機能名称一覧36として出力する(ステップS143)。この機能名称一覧36と登録対象部品の部品ID34の組を機能名称−ソフトウェア部品対応表更新部33で作成し、関連情報データベース17の機能名称−ソフトウェア部品対応表23に記録する(ステップS144)。これにより、登録対象部品は既存部品となり、その機能名称が部品IDと関連付けられる。
<A−5.機能名称解析部の構成および処理>
次に、機能名称解析部14の各構成要素のそれぞれについて、処理内容を説明する。
<A−5−1.ソフトウェア部品類似解析部の構成>
図6は、ソフトウェア部品類似解析部31の構成を示すブロック図である。ソフトウェア部品類似解析部31では、登録対象部品のソースコードと、既存部品の部品IDおよびソースコードを入力として、登録対象部品との類似度の高い既存部品の部品IDと、算出した類似度の値を類似ソフトウェア部品一覧35として出力する。
ソフトウェア部品類似解析部31は、登録対象部品のソースコードと、既存部品のソースコードとを解析して、解析結果を出力するソースコード解析部61と、この解析結果から登録対象部品と既存部品の類似度の値を算出する類似度算出部62と、算出した類似度に基づいて類似度を判定し、類似していると判定された既存部品を類似ソフトウェア部品一覧35に登録する類似度判定部63とを備えている。
また、ソースコード解析部61は、ソフトウェア部品のソースコード中で部品外に公開されている関数および変数を解析する公開関数変数解析部71、ソースコード中で呼び出している外部関数を解析する外部関数解析部72、ソースコード中で使用している外部変数を解析する外部変数解析部73を備えている。
そして、ソフトウェア部品類似解析部31内には、公開関数一覧74、外部関数一覧75、外部変数一覧76および公開変数一覧77を記憶する記憶部を有している。
<A−5−2.ソフトウェア部品類似解析部での解析処理>
次に、図7に示すフローチャートを用いて、ソフトウェア部品類似解析部31で登録対象部品に類似する既存部品を解析する解析処理について説明する。
ソフトウェア部品類似解析部31は、登録対象部品のソースコードをソースコード解析部61で解析し(ステップS311)、解析した結果を内部の記憶部(図示せず)に公開関数一覧74、外部関数一覧75、外部変数一覧76および公開変数一覧77として保持する。
次に、既存部品の部品IDを成果物データデータベース16(図6)のソースコードデータベース24から取り出し、内部の記憶部にID一覧として全てコピーしておく(ステップS312)。
コピーしたID一覧から部品IDを1つ取得し、これを部品xとする。そして、部品xの部品IDをID一覧から削除する(ステップS313)。
次に、部品xのソースコードをソースコード解析部61で解析し(ステップS314)、解析した結果を内部の記憶部に公開関数一覧74、外部関数一覧75、外部変数一覧76および公開変数一覧77として保持する。
次に、ステップS311とステップS314で保持した解析結果に基づいて、類似度算出部62で類似度を算出する(ステップS315)。
そして、算出した類似度に基づいて類似度判定部63で登録対象部品と既存部品との類似関係の有無を判定する(ステップS316)。この判定では、算出した類似度が予め定めた閾値以上である場合には類似関係があると判定し、閾値を越えない場合には類似関係がないと判定する。また、類似度の大きい方から順に10件を選択する。
ステップS316で類似関係がある判定された場合は、部品xの部品IDと、算出された部品xについての類似度の値の組を類似ソフトウェア部品一覧35に登録する(ステップS317)。
次に、ID一覧に部品IDがあるか否かを判定し(ステップS318)、部品IDが1つもなければ処理を終了し、部品IDがあればステップS313以下の処理を繰り返す。
<A−5−3.ソースコード解析部での解析処理>
ここで、ソースコード解析部61でのソースコードの解析処理について説明する。
図8は、公開関数変数解析部71で、ソフトウェア部品のソースコード中で部品外に公開されている関数および変数を解析する処理を示すフローチャートである。
公開関数変数解析部71は、まず、ソースコード中で定義されている関数および変数を全て抽出する(ステップS711)。
そして、抽出した関数および変数のうち、非公開関数と非公開変数を除外する(ステップS712)。
そして、残った関数の関数の名前と戻り値の型、引数の型および名前と、残った変数の変数名と変数の型を解析する(ステップS713)。
ここでの解析とは、関数の定義情報から関数の名前と戻り値の型、引数の型および名前を表す文字列を抽出する処理と、変数の定義情報から変数名と変数の型を表す文字列を抽出する処理を指す。
例えば、C言語で、「int strcmp(const char* a, const char* b);」と定義されている関数の場合、 関数の名前は「strcmp」となり、1つ目の引数の型は「const char*」、1つ目の引数の名前は「a」、2つ目の引数の型は「const char*」、2つ目の引数の名前は「b」、戻り値の型は「int」となる。
また、「int length;」と定義されている変数の場合、変数名は「length」となり、変数の型は「int」となる。
なお、C言語の「int」、「double」のような予め定義されている型だけでなく、プログラム中で新たに作成した型でも同様に解析可能である。
その後、残った定義関数の関数の名前と戻り値の型と引数の型と引数の名前を公開関数一覧74に、残った定義変数の変数名と型を公開変数一覧77に登録する(ステップS714)。
図9は、外部関数解析部72で、ソフトウェア部品のソースコード中で呼び出している外部関数を解析する処理を示すフローチャートである。
外部関数解析部72は、まず、ソースコード中で定義されている関数を全て抽出する(ステップS721)。
そして、抽出した定義関数の関数の名前、戻り値の型、引数の型および名前を抽出する(ステップS722)。
次に、ソースコード中で呼び出している関数(以下、呼出関数と呼称)を抽出する(ステップS723)。
そして、抽出した呼出関数の関数の名前、戻り値の型、引数の型および名前を静的解析する(ステップS724)。ここでの静的解析とは、関数の名前などの文字列を抽出する処理と言う点では先に説明した解析と同じであるが、文字列を抽出する前に、呼出関数が定義されているプログラムを特定し、そのプログラムに記述された定義情報を取得する処理が含まれる。
次に、呼出関数の中から、ステップS721で抽出した定義関数を除外する(ステップS725)。
最後に、呼出関数の関数の名前と戻り値の型と引数の型と引数の名前を外部関数一覧75に登録する(ステップS726)。
図10は、外部変数解析部73で、ソフトウェア部品のソースコード中で使用している外部変数を解析する処理を示すフローチャートである。
外部変数解析部73は、まず、ソースコード中で使用されている変数を全て抽出する(ステップS731)。
次に、ソースコード中で定義されている変数を抽出する(ステップS732)。
次に、ステップS731で抽出した変数のうち、ステップS732で抽出した定義変数を除外する(ステップS733)。
そして、残った外部変数の型、名前を静的解析により抽出する(ステップS734)。
最後に、外部変数の型と名前を外部変数一覧76に登録する(ステップS735)。
<A−5−4.類似度算出部の構成および動作>
図11は、類似度算出部62の概略構成を示すブロック図である。図11に示すように類似度算出部62は、関数類似度算出部81と変数類似度算出部82とを備えている。
関数類似度算出部81は、引数の型および戻り値の型が一致するか否かと、引数の名前および関数の名前の類似度から2つの関数の間の類似度を算出し、変数類似度算出部82は、型が一致する否かと、変数名の類似度から2つの変数の間の類似度を算出する。なお、類似度算出部62は、関数類似度算出部81および変数類似度算出部82の少なくとも一方を備えていれば良い。
類似度算出部62を有することで、類似するソフトウェア部品の機能名称を抽出できるので、ソフトウェア部品の機能名称を広く抽出することができる。
図12は、類似度算出部62での、登録対象部品と既存部品の間の類似度を算出する処理を示すフローチャートであり、図7に示したステップS315での処理を説明するものである。
類似度算出部62は、まず、公開関数一覧74(図6)から登録対象部品の公開関数一覧を取得し、その中から重複する関数を調べ、重複するものがあれば、一覧に格納されている順に1、2、3・・・・のように重複番号を振り当てる。重複する関数がない場合は、重複番号は1にする。そして、公開関数一覧の関数と重複番号とを組み合わせた拡張公開関数一覧を作成しソフトウェア部品類似解析部31内部の記憶部(図示せず)に保存する(ステップS621)。
登録対象部品の外部関数についても同様の処理を実行し、拡張外部関数一覧を作成しソフトウェア部品類似解析部31内部の記憶部(図示せず)に保存する(ステップS622)。
次に、成果物データベース16(図6)のソースコードデータベース24に登録された既存部品を全て取り出し、ソフトウェア部品類似解析部31内部の記憶部(図示せず)に既存部品群として全てコピーしておく。そして、既存部品群から1つの部品を取り出し、部品Pとし、部品Pを既存部品群から取り除く(ステップS623)。
次に、登録対象部品および部品Pにおける公開関数、公開変数、外部関数、外部変数を、公開関数一覧74、公開変数一覧77、外部関数一覧75および外部変数一覧76からそれぞれ読み出し、それぞれの類似度を算出する(ステップS624)。
次に、ステップ624で算出した類似度に基づいて登録対象部品と部品Pとの類似度を求める(ステップS625)。すなわち、ステップS624で算出した公開関数、公開変数、外部関数一覧および外部変数の類似度を加算することで、登録対象部品や部品Pの類似度を算出する。
次に、部品Pの部品IDと類似度の値をソフトウェア部品類似解析部31内の記憶部に登録し、類似度一覧を作成する(ステップS626)。この類似度一覧は、部品IDから類似度の値が特定できるように構成される。
次に、既存部品群に既存部品があるか否かを判定し(ステップS627)、既存部品があればステップ623以下の処理を繰り返し、既存部品が1つもなければステップS628に進み、作成した類似度一覧を出力する。
次に、ステップS624における公開関数、公開変数、外部関数、外部変数の類似度の算出方法を説明する。まず、公開関数、公開変数、外部関数および外部変数の類似度の算出処理のそれぞれの流れを説明する。
<A−5−4−1.公開関数の類似度の算出処理>
図13は、図12に示したステップS624における、登録対象部品の公開関数と既存部品Pの公開関数の類似度を算出する処理を示すフローチャートである。
類似度算出部62は、まず、図12に示したステップS621で作成した登録対象部品の拡張公開関数一覧を取得しコピーする(ステップS641)。
次に、コピーした拡張公開関数一覧より1つの関数を取り出し関数pxとし、関数pxを、コピーした拡張公開関数一覧から削除する(ステップS642)。
次に、類似度の最大値格納部maxの値を0で初期化する(ステップS643)。
次に、公開関数一覧74から部品Pの公開関数一覧を取得しコピーする(ステップ644)。
次に、コピーした公開関数一覧より1つ関数を取り出し関数pyとし、関数pyを、コピーした公開関数一覧から削除する(ステップS645)。
次に、関数類似度算出部81(図11)で関数pxと関数pyの類似度を算出し類似度格納部valueに格納する(ステップS646)。
そして、類似度格納部valueの値が最大値格納部maxに格納されている値よりも大きければ、最大値格納部maxの値を類似度格納部valueの値に更新する(ステップS647)。
次に、部品Pの公開関数一覧に関数があるか否かを判定し(ステップS648)、関数があれば、ステップS645以下の処理を繰り返し、関数がなければ次のステップS649に進む。
ステップS649では、関数pxの関数の名前と最大値格納部maxに格納された値を出力する。
そして、登録対象部品の拡張公開関数一覧に関数があるか否かを判定し(ステップS650)、関数があれば、ステップS642以下の処理を繰り返し、関数がなければ処理を終了する。
以上の処理により、登録対象部品の拡張公開関数の全てと、既存部品Pの公開関数の全てとの類似度の比較が行われ、類似度の最も高い関数の関数の名前と類似度とを取得することができる。
<A−5−4−2.公開変数の類似度の算出処理>
図14は、図12に示したステップS624における、登録対象部品の公開変数と既存部品Pの公開変数の類似度を算出する処理を示すフローチャートである。
類似度算出部62は、まず、公開変数一覧77から登録対象部品の公開変数一覧を取得しコピーする(ステップS671)。
次に、コピーした公開変数一覧より1つの変数を取り出し変数mxとし、変数mxを、コピーした公開変数一覧から削除する(ステップS672)。
次に、類似度の最大値格納部maxの値を0で初期化する(ステップS673)。
次に、公開変数一覧77から部品Pの公開変数一覧を取得しコピーする(ステップ674)。
次に、コピーした公開変数一覧より1つ変数を取り出し変数myとし、変数myを、コピーした公開変数一覧から削除する(ステップS675)。
次に、変数類似度算出部82(図11)で変数mxと変数myの類似度を算出し類似度格納部valueに格納する(ステップS676)。
そして、類似度格納部valueの値が最大値格納部maxに格納されている値よりも大きければ、最大値格納部maxの値を類似度格納部valueの値に更新する(ステップS677)。
次に、部品Pの公開変数一覧に変数があるか否かを判定し(ステップS678)、変数があれば、ステップS675以下の処理を繰り返し、変数がなければ次のステップS679に進む。
ステップS679では、変数mxの関数の名前と最大値格納部maxに格納された値を出力する。
そして、登録対象部品の公開変数一覧に変数があるか否かを判定し(ステップS680)、変数があれば、ステップS672以下の処理を繰り返し、変数がなければ処理を終了する。
以上の処理により、登録対象部品の公開変数の全てと、既存部品Pの公開変数の全てとの類似度の比較が行われ、類似度の最も高い変数の変数名と類似度とを取得することができる。
<A−5−4−3.外部関数の類似度の算出処理>
図15は、図12に示したステップS624における、登録対象部品の外部関数と既存部品Pの外部関数の類似度を算出する処理を示すフローチャートである。
類似度算出部62は、まず、図12に示したステップS622で作成した登録対象部品の拡張外部関数一覧を取得しコピーする(ステップS651)。
次に、コピーした拡張外部関数一覧より1つの関数を取り出し関数exとし、関数exを、コピーした拡張外部関数一覧から削除する(ステップS652)。
次に、類似度の最大値格納部maxの値を0で初期化する(ステップS653)。
次に、外部関数一覧75から部品Pの外部関数一覧を取得しコピーする(ステップ654)。
次に、コピーした外部関数一覧より1つ関数を取り出し関数eyとし、関数eyを、コピーした外部関数一覧から削除する(ステップS655)。
次に、関数類似度算出部81(図11)で関数exと関数eyの類似度を算出し類似度格納部valueに格納する(ステップS656)。
そして、類似度格納部valueの値が最大値格納部maxに格納されている値よりも大きければ、最大値格納部maxの値を類似度格納部valueの値に更新する(ステップS657)。
次に、部品Pの外部関数一覧に関数があるか否かを判定し(ステップS658)、関数があれば、ステップS655以下の処理を繰り返し、関数がなければ次のステップS659に進む。
ステップS659では、関数exの関数の名前と最大値格納部maxに格納された値を出力する。
そして、登録対象部品の拡張公開関数一覧に関数があるか否かを判定し(ステップS650)、関数があれば、ステップS652以下の処理を繰り返し、関数がなければ処理を終了する。
以上の処理により、登録対象部品の外部関数の全てと、既存部品Pの外部関数の全てとの類似度の比較が行われ、類似度の最も高い関数の関数の名前と類似度とを取得することができる。
<A−5−4−4.外部変数の類似度の算出処理>
図16は、図12に示したステップS624における、登録対象部品の外部変数と既存部品Pの外部変数の類似度を算出する処理を示すフローチャートである。
類似度算出部62は、まず、外部変数一覧76から登録対象部品の外部変数一覧を取得しコピーする(ステップS661)。
次に、コピーした外部変数一覧より1つの変数を取り出し変数vxとし、変数vxを、コピーした外部変数一覧から削除する(ステップS662)。
次に、類似度の最大値格納部maxの値を0で初期化する(ステップS663)。
次に、外部変数一覧76から部品Pの外部変数一覧を取得しコピーする(ステップ664)。
次に、コピーした外部変数一覧より1つ変数を取り出し変数vyとし、変数vyを、コピーした外部変数一覧から削除する(ステップS665)。
次に、変数類似度算出部82(図11)で変数vxと変数vyの類似度を算出し類似度格納部valueに格納する(ステップS666)。
そして、類似度格納部valueの値が最大値格納部maxに格納されている値よりも大きければ、最大値格納部maxの値を類似度格納部valueの値に更新する(ステップS667)。
次に、部品Pの外部変数一覧に変数があるか否かを判定し(ステップS668)、変数があれば、ステップS665以下の処理を繰り返し、変数がなければ次のステップS669に進む。
ステップS669では、変数vxの変数名と最大値格納部maxに格納された値を出力する。
そして、登録対象部品の外部変数一覧に変数があるか否かを判定し(ステップS670)、変数があれば、ステップS662以下の処理を繰り返し、変数がなければ処理を終了する。
以上の処理により、登録対象部品の外部変数の全てと、既存部品Pの外部変数の全てとの類似度の比較が行われ、類似度の最も高い変数の変数名と類似度とを取得することができる。
ここで、関数類似度算出部81は、ステップS646(図13)とステップS656(図15)で、2つの関数の間の類似度を算出し、変数類似度算出部82は、ステップS676(図14)とステップS666(図16)で、2つの変数の間の類似度を算出する。
以下に類似度の算出例を示すが、類似度は類似している場合に高い点が与えられ、類似していない場合に低い点が与えられるように構成すれば良い。
すなわち、関数類似度算出部81は、始めに10点を持ち、引数の型および戻り値の型が登録対象部品と既存部品Pとで一致するか否か、関数の名前および引数の名前の登録対象部品と既存部品Pとの間での類似度により減点法で採点を行う。例えば、引数の型、戻り値の型が異なれば、異なるごとに1点減点し、関数の名前および引数の名前の類似度が、予め定めた閾値よりも低ければ1点減点する。戻り値の型、関数の名前、引数の型、引数の名前の比較が終われば、その時点の点数を出力して終了する。
変数類似度算出部82は、始めに10点を持ち、変数の型が登録対象部品と既存部品Pとで一致するか否か、変数の名前の登録対象部品と既存部品Pとの間での類似度により減点法で採点を行う。例えば、変数の型が異なれば、異なるごとに1点減点し、変数の名前の類似度が、予め定めた第1の閾値よりも低ければ1点減点し、第1の閾値より小さな第2の閾値よりも低ければ5点減点する。変数の型、変数の名前の比較が終われば、その時点の点数を出力して終了する。
以上のような方法で類似度を算出することで、ソフトウェア部品間の類似度を求めることができる。
なお、図10に示したステップS734で、外部変数の値の書き換えの有無を解析してステップS735で外部変数リストに登録しておき、外部変数の類似度の算出に利用しても良い。
なお、関数の名前および引数の名前の類似度や、変数の名前の類似度を算出するには、例えば、レーベンシュタイン距離を利用して文字列の類似度を算出すれば良い。
レーベンシュタイン距離は編集距離とも称され、情報理論で、2つの文字列がどの程度異なっているかを示す数値であり、文字列を構成する文字の挿入や削除、入れ替えにより1つの文字列を他の文字列に変えるのに必要な手順の回数で定義される。
このレーベンシュタイン距離を利用して文字列の類似度を算出する方法としては、レーベンシュタイン距離を利用することで2つの文字列がどの程度異なるかが数値として求まるので、基準値を定め、基準値からレーベンシュタイン距離を引いた値を文字列の類似度とする方法が考えられる。
なお、以上の説明では、引数の型および戻り値の型、変数の型については、完全に一致していなければ減点の対象としたが、完全に一致でなくても型が互換性を有していれば類似していると見なし、減点する点数を小さくしても良い。
例えば、上記の方法によって求めた類似度に対して閾値を定めておき、閾値より得られた類似度が大きい場合は0.5点を減点する方法が考えられる。なお、減点する点数は、0〜1点の間の数値とする。
型が完全に一致していなくても類似に含めることができるため、型が継承関係にあり同様の機能を持つ場合を類似と判定することが可能になる。
なお、最も単純に、関数の名前、引数の名前、変数の名前、引数の型、戻り値の型および変数の型について完全一致でなければ減点の対象とする方法を採っても良い。
次に、以上説明したフローチャートで示した処理が完了した後の処理について説明する。まず、公開関数における類似度の算出について説明する。図13の処理が完了しているため、登録対象部品のi1番目の公開関数px(i1)に対して、部品Pのj1番目の公開関数py(j1)との類似度の値が全て得られている。ここで、登録対象部品の公開関数の個数がn1であった場合、i1は1からn1までの値をとる。同様に、部品Pの公開関数の個数がm1であった場合、j1は1からm1の値をとる。
ここで、px(i1)の関数ごとの類似度を類似度の大きい順にソートしておき、最も大きい類似度をpx(i1)が部品Pの公開関数との間で取りうる類似度の最大値として採用する。
この類似度をSimPF(i1,P)とする。登録対象部品をRとすると部品Pとの間の公開関数における類似度SimPF(R,P)は以下の数式(1)で求める。
Figure 0005323107
次に、外部関数における類似度の算出について説明する。図15の処理が完了しているため、登録対象部品のi1番目の外部関数ex(i2)に対して、部品Pのj2番目の外部関数ey(j2)との類似度の値が全て得られている。ここで、登録対象部品の外部関数の個数がn2であった場合、i2は1からn2までの値をとる。同様に、部品Pの外部関数の個数がm2であった場合、j2は1からm2の値をとる。
ここで、ex(i2)の関数ごとの類似度を類似度の大きい順にソートしておく。ex(i2)の重複番号がkであれば、類似度の大きい順からk番目の類似度の値を、関数ex(i2)が部品Pの外部関数との間で取りうる類似度の最大値として採用する。これにより、例えば、登録対象部品がprintAという外部関数をn箇所で呼び出しているとき、printAを1箇所だけで呼び出している既存部品Aよりも、nに近い回数呼び出している既存部品Bに高い類似度を与えることができる。なお、公開関数と同様に、重複番号を利用せずに最も大きい類似度をpx(i1)の類似度の最大値としてもよい。
この類似度をSimEF(i2,P)とする。登録対象部品Rと部品Pの外部関数における類似度は以下の数式(2)で求める。
Figure 0005323107
次に、公開変数における類似度の算出について説明する。図14の処理が完了しているため、登録対象部品のi3番目の公開変数vx(i3)に対して、部品Pのj3番目の公開変数vx(j3)との類似度の値が全て得られている。ここで、登録対象部品の公開変数の個数がn3(n3>0)であった場合、i3は1からn3までの値をとる。同様に、部品Pの公開変数の個数がm3(m3>0)であった場合、j3は1からm3の値をとる。
ここで、vx(i3)の類似度として、m3個の公開変数との類似度のうち、最大のものを、変数vx(i3)が部品Pの公開変数との間で取りうる類似度の最大値として採用する。この類似度をSimPV(i3, P)とする。このとき、登録対象部品Rと部品Pの公開変数における類似度は以下の数式(3)で求める。
Figure 0005323107
これと同様に、登録対象部品Rと既存部品Pの外部変数における類似度SimEV(R,P)も求める。
以上の説明を踏まえ、図12に示したステップS625における、登録対象部品と既存部品Pとの類似度の算出する方法を説明する。
登録対象部品Rと既存部品Pの類似度Sim(R,P)は以下の数式(4)で求める。
Figure 0005323107
数式(4)では、公開関数、公開変数、外部関数、外部変数の類似度の和によって、類似度を求めているので、それぞれの類似度の値が大きければSim(R,P)の値も大きくなる。
なお、各変数、各関数に重み付けを行うことによって、公開関数、公開変数、外部関数、外部変数の類似度の最終的な部品間の類似度に寄与する割合を変化させても良い。
<A−6.ソフトウェア部品−機能名称関連解析部の構成>
図17は、ソフトウェア部品−機能名称関連解析部32の構成を示すブロック図である。ソフトウェア部品−機能名称関連解析部32は、ソフトウェア部品機能名称抽出部41と、機能名称判定入力部42とを備えている。
ソフトウェア部品機能名称抽出部41は、ソフトウェア部品類似解析部31(図4)から出力される類似ソフトウェア部品一覧35に含まれる既存部品の部品IDに関連付けられている機能名称を抽出し、機能名称候補一覧43として出力する。
機能名称判定入力部42は、出力部12を介して機能名称候補一覧43を登録者に提示し、機能名称候補一覧43に含まれる全ての機能名称について、登録対象部品の機能名称としての適否を入力部11を介して受け付け、登録対象部品の機能名称として適切と判定された機能名称一覧を作成する。さらに、機能名称判定入力部42では、登録対象部品の機能名称候補として提示したものの他に、適切な機能名称があれば入力部11を介して機能名称の入力を受け付け、登録対象部品の機能名称一覧に追加することもできる。
<A−7.ソフトウェア部品−機能名称関連解析部での解析処理>
次に、図18に示すフローチャートを用いて、ソフトウェア部品−機能名称関連解析部32で登録対象部品の機能名称を解析する処理を説明する。
ソフトウェア部品−機能名称関連解析部32は、類似ソフトウェア部品一覧35(図17)に含まれる類似部品の類似部品IDに関連付けられている機能名称の機能名称IDをソフトウェア部品機能名称抽出部41より抽出し、機能名称IDリストを取得する(ステップS321)。
ここで、機能名称IDとは、機能名称がソフトウェア部品管理装置1に登録された順に付与する連番数字でも良いし、アルファベット、あるいは数字とアルファベットの組み合わせなどが挙げられる。また、機能名称をアルファベットで表現したものでも良い。例えば、選択機能であれば「SENTAKU1」などが考えられる。
次に、機能名称IDリストに含まれる機能名称IDに対応する機能名称を要素とする機能名称候補一覧43を作成する(ステップS322)。
この機能名称候補一覧43を登録者に出力部12を介して提示する(ステップS323)。
提示した機能名称候補一覧43に含まれる機能名称について、登録対象部品の機能名称としての適否を入力部11を介して受け付ける(ステップS324)。
また、機能名称候補一覧の他に、登録対象部品の機能名称として適切な機能名称があれば、入力部11より入力を受け付ける(ステップS325)。
次に、登録対象部品の機能名称として適切と判定された機能名称の機能名称IDの一覧を出力する(ステップS326)。
<A−8.機能名称−ソフトウェア部品対応表更新部の構成および動作>
次に、図19および図20を用いて機能名称−ソフトウェア部品対応表更新部33の構成および更新動作について説明する。
図19は、機能名称−ソフトウェア部品対応表更新部33の概略構成を示すブロック図である。
機能名称−ソフトウェア部品対応表更新部33では、ソフトウェア部品−機能名称関連解析部32から出力された機能名称一覧36と、ソフトウェア部品登録部13(図1)で付与された登録対象部品の部品ID34との組み合わせを、機能名称−ソフトウェア部品対応表23として出力する。
図20は、機能名称−ソフトウェア部品対応表更新部33の動作を説明するフローチャートである。
機能名称−ソフトウェア部品対応表更新部33は、登録対象部品の部品ID34を取得し(ステップS331)、また、機能名称一覧36を取得する(ステップS332)。
その後、登録対象部品の部品ID34と機能名称一覧36との組み合わせを、機能名称−ソフトウェア部品対応表23として関連情報データベース17に保存する。
<A−9.ソフトウェア部品検索の手順>
以上説明した、ソフトウェア部品管理装置1におけるソフトウェア部品検索の手順について説明する。
図21は、ソフトウェア部品検索部15の概略構成を示すブロック図である。ソフトウェア部品検索部15は、入力部11を介して機能名称111を受け付け、ソフトウェア部品管理装置1の関連情報データベース17に機能名称−ソフトウェア部品対応表23として登録されているソフトウェア部品のうち、入力された機能名称111に関連付けられている部品を抽出し、ソフトウェア部品一覧112として、出力部12を介して出力する。
図22は、ソフトウェア部品検索部15におけるソフトウェア部品の検索処理を示すフローチャートである。
ソフトウェア部品検索部15は、入力部11を介して検索キーとなる機能名称を取得する(ステップS151)。
次に、ソフトウェア部品管理装置1の関連情報データベース17に登録されている機能名称−ソフトウェア部品対応表23に問い合わせて、検索キーに対応するソフトウェア部品一覧112(図21)を取得する(ステップS152)。そして、取得したソフトウェア部品一覧112を出力部12を介して出力する。
ソフトウェア部品検索部は、機能名称−ソフトウェア部品対応表23の内容を参照して動作するため、ソフトウェア部品管理装置1に登録されているソフトウェア部品を入力として同じ機能名称を持つソフトウェア部品を検索しても良い。この場合のソフトウェア部品検索部15の概略構成を図23に示す。
図23において図21と異なるのは、既存のソフトウェア部品21を入力とする点である。
図24は、図22に示すソフトウェア部品検索部15での、ソフトウェア部品の検索処理を示すフローチャートである。
ソフトウェア部品検索部15は、入力部11を介して検索キーとなるソフトウェア部品を取得する(ステップS181)。
次に、ソフトウェア部品管理装置1の関連情報データベース17に登録されている機能名称−ソフトウェア部品対応表23に問い合わせて、検索キーに対応する機能名称一覧113を取得する(ステップS182)。そして、取得した機能名称一覧を出力部12を介して出力する。
そして、入力部11を介して、機能名称一覧の機能名称ごとに検索に用いる機能名称の選択を受け付け、検索に不要と判定された機能名称を一覧から削除する(ステップS183)。
次に、機能名称−ソフトウェア部品対応表23に問い合わせて、機能名称一覧に含まれる機能名称IDに関連付けのあるソフトウェア部品一覧112(図23)を取得し(ステップS184)、取得したソフトウェア部品一覧112を出力部12を介して出力する(ステップS185)。
以上説明した実施の形態1のソフトウェア部品管理装置1によれば、ソフトウェア部品を登録する場合に、登録済みのソフトウェア部品に共通した機能名称を付加することができる。その結果、ソフトウェア部品を検索した際の検出漏れを少なくできるという効果を奏する。
<B.実施の形態2>
実施の形態2に係るソフトウェア部品管理装置では、機能名称解析部14におけるソフトウェア部品−機能名称関連解析部32の入力となるデータの種類が増えているが、その他の構成は、実施の形態1のソフトウェア部品管理装置1と同じであるので、同一の構成については同一の符号を付し、重複する説明は省略する。
<B−1.ソフトウェア部品登録部の構成>
図25は、ソフトウェア部品登録部13の概略構成を示すブロック図である。ソフトウェア部品登録部13は、図3に示したソースコード格納部22の他に、ドキュメント格納部92と関連情報格納部93とを備えている。
ソフトウェア部品登録部13は、登録対象部品21の情報、ドキュメント39の情報、ドキュメント39に関連のある関連ドキュメント37の情報、ドキュメントから抽出した機能名称群38の情報を入力とし、登録対象部品21、ドキュメント39および機能名称群38のそれぞれに対して、ソフトウェア部品管理装置1において一意に特定できる部品ID、ドキュメントIDおよび機能名称IDを与える。
ソースコード格納部22は、成果物データベース16のソースコードデータベース24にソースコードを格納する。ドキュメント格納部92は、成果物データベース16のドキュメントデータベース25にドキュメント39を登録する。
また、関連情報格納部93は、登録対象部品21の部品IDとドキュメント39のドキュメントIDの組を、関連情報データベース17の部品IDドキュメント対応表26に登録し、ドキュメント39のドキュメントIDと関連ドキュメント37のドキュメントIDの組を関連情報データベース17のドキュメントID関連ドキュメントID対応表27に登録し、ドキュメント39のドキュメントIDと機能名称群38に含まれる機能名称の機能名称IDの関連情報を、関連情報データベース17のドキュメントID機能名称ID対応表28に登録する。
<B−2.機能名称解析部の構成>
図26は、機能名称解析部14の概略構成を示すブロック図である。図26に示すように、ソフトウェア部品−機能名称関連解析部32には、登録対象部品の部品ID34と、成果物データベース16のドキュメントデータベース25からの出力、関連情報データベース17の部品IDドキュメント対応表26、ドキュメントID関連ドキュメントID対応表27およびドキュメントID機能名称ID対応表28の出力が与えられる構成となっている点で、図4に示した機能名称解析部14とは異なっている。
<B−2−1.ソフトウェア部品−機能名称関連解析部の構成>
図27は、ソフトウェア部品−機能名称関連解析部32の構成を示すブロック図である。ソフトウェア部品−機能名称関連解析部32は、関連ドキュメント抽出部51、ドキュメント機能名称抽出部52および機能名称判定入力部53を備えている。
関連ドキュメント抽出部51は、登録対象部品の部品ID34、類似ソフトウェア部品一覧35、成果物データベース16のドキュメントデータベース25の出力、関連情報データベース17の部品IDドキュメント対応表26、ドキュメントID関連ドキュメントID対応表27およびドキュメントID機能名称ID対応表28の出力を受け、登録対象部品の部品ID34と類似ソフトウェア部品一覧35に含まれる既存部品の部品IDに関連付けたドキュメントを抽出し、ドキュメント一覧44を作成する。
ドキュメント機能名称抽出部52は、関連ドキュメント抽出部51が出力するドキュメント一覧44に含まれているドキュメントに関連付けられている機能名称を機能名称候補一覧43として出力する。
機能名称判定入力部53は、出力部12を介して機能名称候補一覧43を登録者に提示し、機能名称候補一覧43に含まれる全ての機能名称について、登録対象部品の機能名称としての適否を入力部11を介して受け付け、登録対象部品の機能名称として適切と判定された機能名称一覧36を出力する。
ここで、ドキュメントとは、ソフトウェア部品の機能に関して記述されている文書を指し、例えば、ソフトウェア部品の仕様を記述した、外部仕様書や詳細仕様書などの仕様書が挙げられる。実施の形態2では、機能に関して記述されているドキュメントから抽出した機能名称をソフトウェア部品を登録する際の機能名称に利用するものである。
ドキュメントから機能名称を抽出するには、ドキュメントの冒頭部に機能に関するキーワードが羅列されているなどの構造化された文書を使用することが前提となる。
また、関連ドキュメント抽出部51で抽出する既存部品の部品IDに関連付けられているドキュメントとは、例えば、既存部品Aを例に採れば、以下のようなドキュメントとなる。
(1)ソフトウェア部品登録部13で部品Aと同時に登録されたドキュメントB。実施の形態2では、部品の登録時に、ソフトウェア部品の機能について書かれたドキュメントを同時に登録するので、そのドキュメントが既存部品の部品IDに関連付けられているドキュメントとなる。
(2)ソフトウェア部品登録部13でドキュメントBと同時に登録されたドキュメントC。実施の形態2では、関連情報データベース17のドキュメントID関連ドキュメントID対応表27で、ドキュメントツリーを保持しており、部品Aと同時に登録されたドキュメントBだけでなく、ドキュメントBの上位文書(ドキュメントC)も部品Aに関連のあるドキュメントとして抽出する。従って、これらのドキュメントが既存部品の部品IDに関連付けられているドキュメントとなる。
<B−2−2.ソフトウェア部品−機能名称関連解析部での処理>
次に、図28に示すフローチャートを用いて、ソフトウェア部品−機能名称関連解析部32での登録対象部品の機能名称の解析処理について説明する。
ソフトウェア部品−機能名称関連解析部32は、関連ドキュメント抽出部51を利用して、部品IDドキュメント対応表26、関連情報データベース17のドキュメントID関連ドキュメントID対応表27などから取得し、登録対象部品の部品ID34にドキュメントを関連付けたドキュメント一覧44を取得する(ステップS341)。
次に、関連ドキュメント抽出部51をさらに利用して、ステップS341で取得したドキュメント一覧44に含まれる、ドキュメントに関連付けられたドキュメントを、成果物データベース16のドキュメントデータベース25から順次取得し、ドキュメントIDリストを作成する(ステップS342)。
次に、ドキュメント機能名称抽出部52を用いて、ドキュメントIDリストに含まれる全てのドキュメントに、関連情報データベース17のドキュメントID機能名称ID対応表28より取得した機能名称IDを関連付けて機能名称候補一覧43を作成する(ステップS343)。
機能名称判定入力部53は、出力部12を介して機能名称候補一覧43を登録者に提示する(ステップS344)。そして、提示した機能名称候補一覧43に含まれる機能名称について、登録対象部品の機能名称としての適否を入力部11を介して受け付ける(ステップS345)。そして、登録対象部品の機能名称として適切と判定された機能名称について機能名称一覧36を出力する(ステップS346)。
以上説明した実施の形態2のソフトウェア部品管理装置1によれば、ドキュメント体系を辿って機能名称を抽出することができ、関連ドキュメントも機能名称の抽出元に含めるため、さらに広い範囲から機能名称を抽出することが可能となる。
14 機能名称解析部、15 ソフトウェア部品検索部、21 登録対象部品、31 ソフトウェア部品類似解析部、32 ソフトウェア部品-機能名称関連解析部、37 関連ドキュメント、38 機能名称群、39 ドキュメント、62 類似度算出部、81 関数類似度算出部、82 変数類似度算出部。

Claims (8)

  1. ソフトウェア部品を登録するとともに、登録済みのソフトウェア部品から所望のソフトウェア部品を検索可能なソフトウェア部品管理装置であって、
    前記ソフトウェア部品の登録の際に、前記登録済みのソフトウェア部品および登録対象のソフトウェア部品を解析し、前記登録対象のソフトウェア部品について、類似する前記登録済みのソフトウェア部品の機能名称を外部から選択可能に提示し、当該外部から選択された機能名称と前記登録対象のソフトウェア部品とを対応させた機能名称とソフトウェア部品との対応関係情報としてデータベースに保存する機能名称解析部と、
    前記所望のソフトウェア部品を検索する際に、前記データベースに保存された前記機能名称とソフトウェア部品との対応関係情報から、前記所望のソフトウェア部品に関連したソフトウェア部品を抽出して出力するソフトウェア部品検索部と、を備える、ソフトウェア部品管理装置。
  2. 前記機能名称を外部から選択可能に提示する手段として、
    前記外部に対して前記機能名称をリストアップした機能名称候補一覧を提示する出力部と、
    前記機能名称候補一覧から、所望の機能名称を選択して入力する入力部と、を備える、請求項1記載のソフトウェア部品管理装置。
  3. 前記機能名称解析部は、
    前記登録対象のソフトウェア部品のソースコードと、前記登録済みのソフトウェア部品のソースコードとに基づいて、前記登録対象のソフトウェア部品ついての前記登録済みのソフトウェア部品との類似度を算出して、前記登録対象のソフトウェア部品に類似する類似ソフトウェア部品について類似ソフトウェア部品情報として出力するソフトウェア部品類似解析部と、
    前記類似ソフトウェア部品情報と、前記機能名称とソフトウェア部品との対応関係情報とに基づいて、前記類似ソフトウェア部品に関連付けられる機能名称を抽出して前記外部に選択可能に提示し、前記外部から選択された機能名称を機能名称情報として出力するソフトウェア部品-機能名称関連解析部と、を備える、請求項1記載のソフトウェア部品管理装置。
  4. 入力されたドキュメント、関連ドキュメント、機能名称群および前記登録対象のソフトウェア部品のそれぞれに対して識別番号を付与して、ソフトウェア部品とドキュメントの対応情報、ドキュメントと関連ドキュメントの対応情報、ドキュメントと機能名称の対応情報として保存し、
    前記機能名称解析部は、
    前記登録対象のソフトウェア部品のソースコードと、前記登録済みのソフトウェア部品のソースコードとに基づいて、前記登録対象のソフトウェア部品ついての前記登録済みのソフトウェア部品との類似度を算出して、前記登録対象のソフトウェア部品に類似する類似ソフトウェア部品について類似ソフトウェア部品情報として出力するソフトウェア部品類似解析部と、
    前記類似ソフトウェア部品情報、前記ソフトウェア部品とドキュメントの対応情報、前記ドキュメントと関連ドキュメントの対応情報および前記ドキュメントと機能名称の対応情報に基づいて、前記類似ソフトウェア部品に関連付けられるドキュメント群に対応する機能名称を抽出して前記外部に選択可能に提示し、前記外部から選択された機能名称を機能名称情報として出力するソフトウェア部品-機能名称関連解析部と、を備える、請求項1記載のソフトウェア部品管理装置。
  5. 前記ソフトウェア部品類似解析部は、
    前記登録対象のソフトウェア部品のソースコードおよび前記登録済みのソフトウェア部品のソースコードから、前記登録対象のソフトウェア部品および前記登録済みのソフトウェア部品が公開する関数および変数と、使用する外部関数および外部変数を解析し、そのそれぞれについて類似度を算出し、算出した類似度の加算値により、前記登録対象のソフトウェア部品ついての前記登録済みのソフトウェア部品との類似度を算出する類似度算出部を有する、請求項3または請求項4記載のソフトウェア部品管理装置。
  6. 前記類似度算出部は、
    引数の型および戻り値の型が一致するか否かと、引数の名前および関数の名前の類似度から2つの関数の間の類似度を算出する関数類似度算出部、および
    型が一致する否かと、変数名の類似度から2つの変数の間の類似度を算出する変数類似度算出部の少なくとも一方を有する、請求項5記載のソフトウェア部品管理装置。
  7. 前記類似度算出部は、
    引数の型および戻り値の型が互換性を有するか否かと、引数の名前および関数の名前の類似度から2つの関数の間の類似度を算出する関数類似度算出部、
    型が互換性を有するか否かと、変数名の類似度から2つの変数の間の類似度を算出する変数類似度算出部の少なくとも一方を有する、請求項5記載のソフトウェア部品管理装置。
  8. コンピュータにインストールされて、前記コンピュータにソフトウェア部品を登録するとともに、登録済みのソフトウェア部品から所望のソフトウェア部品を検索する処理を行わせることが可能なソフトウェア部品管理プログラムであって、
    前記ソフトウェア部品の登録の際には、
    前記登録済みのソフトウェア部品および登録対象のソフトウェア部品を解析し、前記登録対象のソフトウェア部品について、類似する前記登録済みのソフトウェア部品の機能名称を外部から選択可能に提示し、当該外部から選択された機能名称と前記登録対象のソフトウェア部品とを対応させた機能名称とソフトウェア部品との対応関係情報として取得し、
    前記所望のソフトウェア部品を検索する際には、
    前記機能名称とソフトウェア部品との対応関係情報から、前記所望のソフトウェア部品に関連したソフトウェア部品を抽出する、機能を前記コンピュータに実行させる、ソフトウェア部品管理プログラム。
JP2011026770A 2011-02-10 2011-02-10 ソフトウェア部品管理装置およびソフトウェア部品管理プログラム Expired - Fee Related JP5323107B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011026770A JP5323107B2 (ja) 2011-02-10 2011-02-10 ソフトウェア部品管理装置およびソフトウェア部品管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011026770A JP5323107B2 (ja) 2011-02-10 2011-02-10 ソフトウェア部品管理装置およびソフトウェア部品管理プログラム

Publications (2)

Publication Number Publication Date
JP2012168598A JP2012168598A (ja) 2012-09-06
JP5323107B2 true JP5323107B2 (ja) 2013-10-23

Family

ID=46972729

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011026770A Expired - Fee Related JP5323107B2 (ja) 2011-02-10 2011-02-10 ソフトウェア部品管理装置およびソフトウェア部品管理プログラム

Country Status (1)

Country Link
JP (1) JP5323107B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104142914A (zh) * 2013-05-10 2014-11-12 富士通株式会社 带反馈的功能模块组合方法和装置、数据处理方法和设备
JP7139576B2 (ja) * 2017-06-09 2022-09-21 横河電機株式会社 フィールド機器、設定装置、および設定プログラム
US11763035B2 (en) * 2018-11-01 2023-09-19 Hitachi Astemo, Ltd. Software management device
JP7456887B2 (ja) 2020-08-17 2024-03-27 シチズン時計株式会社 プログラム管理システム、管理プログラム、外部機器、及び、端末機器
JP7519927B2 (ja) 2021-01-25 2024-07-22 三菱電機株式会社 Dx実現用共通基盤システム
JP2022139088A (ja) * 2021-03-11 2022-09-26 オムロン株式会社 開発支援装置、開発支援方法、及び、開発支援プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01286020A (ja) * 1988-05-13 1989-11-17 Hitachi Ltd プログラム検索方式
JP2007025798A (ja) * 2005-07-12 2007-02-01 Hitachi Ltd 言語知識構築支援プログラム及び方法
WO2009069474A1 (ja) * 2007-11-26 2009-06-04 Nec Corporation 類似サービス検索システム、方法、及び、プログラム

Also Published As

Publication number Publication date
JP2012168598A (ja) 2012-09-06

Similar Documents

Publication Publication Date Title
JP5323107B2 (ja) ソフトウェア部品管理装置およびソフトウェア部品管理プログラム
CA2786445C (en) Matching metadata sources using rules for characterizing matches
Gomez-Jauregui et al. Information management and improvement of citation indices
Alrubaye et al. On the use of information retrieval to automate the detection of third-party java library migration at the method level
US20160041951A1 (en) Corpus generation device, corpus generation method and corpus generation program
JPH06309362A (ja) 情報検索方法
Li et al. Incremental clone detection and elimination for erlang programs
Rupp et al. Dealing with heterogeneous big data when geoparsing historical corpora
JP2007011604A (ja) 不具合診断システム及びプログラム
Leonandya et al. A semi-supervised algorithm for Indonesian named entity recognition
EP3553696A1 (en) Generating a structured document based on a machine readable document and artificial intelligence-generated annotations
Eisenberg et al. Using association metrics to help users navigate API documentation
Hu et al. The methods of big data fusion and semantic collision detection in Internet of Thing
JP2008015774A (ja) 模倣文書検出システム及びプログラム
JP2011060062A (ja) システム仕様変更の支援システム、支援方法及び支援プログラム
Li et al. A Deep Learning Based Approach to Detect Code Clones
JP2008210229A (ja) 知的財産情報検索装置、知的財産情報検索方法及び知的財産情報検索プログラム
Tukaram Design and development of software tool for code clone search, detection, and analysis
JP2007025798A (ja) 言語知識構築支援プログラム及び方法
US20090249197A1 (en) Document proofreading support method and document proofreading support apparatus
CN113836378A (zh) 一种数据处理方法及装置
JP5949034B2 (ja) 入力支援プログラム、入力支援装置、及び入力支援方法
JP2011070541A (ja) ネットマーケティング支援方法及びネットマーケティング支援装置
JP2021114120A (ja) 曖昧箇所訂正支援装置及び方法
KR20140016784A (ko) 패스웨이 확장을 위한 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121003

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130612

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130716

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees