プログラムコンポーネント検索方法、プログラムコンポーネント検索システムおよびコンポーネント検索プログラム
【課題】 あまりスキルの高くない技術者でも導入が容易で、使っているうちに、自分たちの技術に合せた検索が出来るような、ソフトウェア開発効率向上のためのコンポーネントの登録・検索技術を提供することを目的とする。
【解決手段】 これまでの機能名やあいまい検索を中心とした検索のほかに、コンポーネントに検索用のインデックス情報を付加し、検索に利用する。利用者による検索が行われたときには、キーワードと検索結果を履歴情報として登録しておく。履歴情報から抽出したキーワードを優先度を付けて検索インデックスに登録していく。これにより、利用者の利用状況やコンポーネントの実績情報を取り込みながら、利用者にとって有用な検索キーワードを増やしていくことで、使えば使うほど利用者のレベルや経験にそった検索が可能になる。
【解決手段】 これまでの機能名やあいまい検索を中心とした検索のほかに、コンポーネントに検索用のインデックス情報を付加し、検索に利用する。利用者による検索が行われたときには、キーワードと検索結果を履歴情報として登録しておく。履歴情報から抽出したキーワードを優先度を付けて検索インデックスに登録していく。これにより、利用者の利用状況やコンポーネントの実績情報を取り込みながら、利用者にとって有用な検索キーワードを増やしていくことで、使えば使うほど利用者のレベルや経験にそった検索が可能になる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションソフトウェアの部品である複数のコンポーネントを登録し、それらのコンポーネントの中から適切なコンポーネントを検索する技術に関するものである。
【背景技術】
【0002】
ソフトウェア開発においては、効率的な開発を行うために、既存ソフトウェア開発で作成されたソフトウェアコンポーネントを再利用することや、共通利用できるコンポーネントを再利用することが有効とされている。そのような再利用の方法については、従来から種々の検討がなされている。一般的に、自分たちが必要としているコンポーネントを見つけ出すためには、機能名による検索を行うことが多い。技術者がコンポーネント群の全体を把握している場合は、必要なコンポーネントを適宜探し出すことは可能であるが、そのような技術者は高スキルを持つ技術者に限られることがほとんどである。一般技術者は、一個人としての経験を頼りに、機能名で検索したり、これまでに利用したことのあるものの中から必要なコンポーネントを探し出しているのが実情である。
【0003】
結果として、同じチームやプロジェクト内でも他人が作成しているコンポーネントについて認識がないために類似コンポーネントを作り込んだり、適切なコンポーネントを選択できずに間違った実装をしたりするケースがあり、思うような再利用が行われていないのが現実である。
【0004】
下記特許文献1,2には、再利用性を促すためのツールであるコンポーネント検索ツールが開示されている。特許文献1に記載の技術は、コンポーネント毎に適用分野と利用形態に応じた適合度を求めて利用情報リポジトリに格納しておき、検索時には、指定された適用分野と適合度に応じたコンポーネントを提示できるようにしたものである。また、特許文献2に記載の技術は、分類するに至った根拠を示す分類子により複数の分類概念へ分類する際の分類化の観点が明示されるようにし、この分類子が付随される統一的な階層構造に従った登録・検索が行えるようにしたものである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−252512号公報
【特許文献2】特開2007−226375号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記特許文献1に記載の技術では、機能仕様を中心に適合性を見ているために、仕様書の間違いや実際に利用者の利用結果が反映されることがない。また、上記特許文献2に記載の技術では、標準化された階層構造にコンポーネントを分析する必要があり、慣れるまでに時間がかかる。また検索方法も階層構造を理解する必要があり、直感的ではない。何れの検索システムも、登録情報やプログラムに対する情報の設定が多くなり、システム運用負荷や検索システムを利用できるまでの情報登録に対する負荷が大きい。また、初心者や技術的に一定レベルを満たしていない技術者にとっては慣れるまでに時間を要し、標準化した効果があまり得られない。
【0007】
以上のように、従来のコンポーネント部品検索手法では、単純な名前などによる検索を行うか、あるいは事前に階層構造に分解した機能仕様やユーザの求める機能との適合度等を登録しておく必要があった。そのため、高度な分析スキルと機能仕様の理解が不可欠であり、スキルが千差万別な一般的な技術者への対応は難しかった。また、高度なスキルを有する人材で適用を開始して初期導入はうまく言っても、運用要員の入れ替えなどによりシステムの維持が困難になる場合もあった。
【0008】
また、一般的なスキルの技術者だけでは、コンポーネントのデータ登録や仕組みの理解で時間がかかり、効果的な再利用まで結びついていないのが現状である。そのため、コンポーネント検索システムは、導入容易性と個人頼みの技術者たちの検索ノウハウを集約することがなければ、より実践的な検索機能を実現できないのである。
【0009】
本発明の目的は、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって有益な検索が可能な技術を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明は、プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムを利用してコンポーネントの検索を行う場合に、ファイル抽出型検索インデックス登録部で、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録し、キーワード検索部で、利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示し、検索入力キーワード抽出/格納部で、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録し、利用ランク型検索インデックス登録部で、前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録するようにし、前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示することを特徴とする。
【0011】
さらに、コンポーネントインターフェイス情報登録部で、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルからインターフェイス情報を抽出して、コンポーネントリポジトリへコンポーネントインターフェイス情報として登録し、インターフェイス検索部で、利用者により入力された検索キーワードを前記コンポーネントリポジトリのコンポーネントインターフェイス情報から前方一致検索で検索し、検索結果のコンポーネントIDを提示し、検索入力キーワード抽出/格納部で、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録するようにしてもよい。
【0012】
また、前記利用ランク型検索インデックス登録部が、前記検索履歴情報から抽出した情報を優先度を付けて前記コンポーネントリポジトリへ検索インデックスとして登録する場合、当該コンポーネントの使用実績を取得し、より使用実績のあるものほど高くなるような優先度を付けるようにしてもよい。
【0013】
さらに、処理対象のソースファイルを特定する情報と実行日時を含む実行定義情報に基づいて、前記コンポーネントインターフェイス情報登録部によるコンポーネントインターフェイス情報の登録、前記ファイル抽出型検索インデックス登録部による検索インデックスの登録、および、前記利用ランク型検索インデックス登録部による検索インデックスの登録のうちの少なくとも1つを自動実行するようにしてもよい。
【発明の効果】
【0014】
本発明によれば、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって、有益な検索が可能になる。
【図面の簡単な説明】
【0015】
【図1】本発明の一実施形態であるコンポーネント検索システムの全体構成図である。
【図2】コンポーネントリポジトリの構成図である。
【図3】検索履歴情報の構成図である。
【図4】コンポーネント利用情報の構成図である。
【図5】コンポーネントインターフェイス情報等登録部の処理の概要を示すフローチャートである。
【図6】ファイル抽出型検索インデックス登録部の処理の概要を示すフローチャートである。
【図7】利用ランク型検索インデックス登録部の処理の概要を示すフローチャートである。
【図8】コンポーネント検索部による検索処理の概要を示すフローチャートである。
【図9】更新操作端末の画面例である。
【図10】検索操作端末の画面例である。
【図11】検索結果一覧の画面例である。
【図12】検索結果詳細の画面例である。
【発明を実施するための形態】
【0016】
以下、本発明に係るコンポーネント検索システムの実施の形態について、図面を参照して説明する。なお、本実施の形態では、Java(登録商標)言語(Sun Microsystems社が開発したプログラミング言語)によって記述されたソフトウェア部品の検索のシステムおよび方法について説明する。もちろん他の言語で記述されたコンポーネントを検索対象にしてもよい。
【0017】
図1は、本実施形態におけるコンポーネント検索システムの概略構成図である。コンポーネント検索システム100は、コンポーネント検索部101とコンポーネント情報登録部102とを備える。コンポーネント検索部101は、インターフェイス検索部103、キーワード検索部104、および検索入力キーワード抽出/格納部105を備える。コンポーネント検索部101は、検索操作端末110で選択された検索方法に基づき、インターフェイス検索部103またはキーワード検索部104による検索処理を実行する。その際の検索対象は、コンポーネントリポジトリ115である。また、検索入力キーワード抽出/格納部105は、検索が実行された際に、ユーザIDなどのユーザを特定できる情報とともに、検索用に入力されたキーワードと抽出結果を、検索履歴情報114に格納する。
【0018】
コンポーネント情報登録部102は、ファイル読込み部106、コンポーネントインターフェイス情報等登録部107、ファイル抽出型検索インデックス登録部108、および利用ランク型検索インデックス登録部109を備える。コンポーネント情報登録部102は、更新操作端末111からの利用者の指示により、または、実行定義情報116に基づく自動実行処理により、コンポーネントのコンポーネントリポジトリ115への登録処理を実行する。この登録処理では、ファイル読込み部106がソースファイル112およびコンパイルやテストの成否などのソースファイルの状態を保持するプロセス情報ファイル113を読み込み、各登録部107〜109により作成した登録情報をコンポーネントリポジトリ115へ登録する。
【0019】
コンポーネントインターフェイス情報等登録部107は、ファイル読込み部106により読込んだソースファイル112から、コンポーネント毎に、インターフェイス情報を抽出し、コンポーネントリポジトリ115に登録する処理などを行う。
【0020】
2つの検索インデックス登録部108および109は、それぞれの使い道が異なる。ファイル抽出型検索インデックス登録部108は、コンポーネントの初期登録時や更新時に、ソースファイルなどに含まれるjavadoc形式などの公知の書式に基づいた機能仕様情報から、検索用のインデックスを作成して登録する。一方、利用ランク型検索インデックス登録部109は、ユーザが検索操作端末110から検索した履歴を格納した検索履歴情報114やプロセス情報ファイル113を元に、ユーザが検索に利用したキーワードの中から、実績があってかつユーザに馴染みのあるキーワードを検索用のインデックスに追加登録していくものである。
【0021】
なお、コンポーネント検索部101、コンポーネント情報登録部102、およびこれらに含まれる各部は、ハードウェアとして構成しても良いし、ソフトウェアとして構成しても良い。ソフトウェアとして構成される場合には、ソフトウェアとしての各部はHDD等の記憶装置からメモリ等の主記憶装置に読み出され、CPU等の演算部により実行されることで実現される。後述する各図における処理動作も、これを前提としてハードウェアまたはソフトウェアとしての各部により実現されるものとする。
【0022】
図2は、コンポーネントリポジトリ115のデータ構成例を示す。コンポーネントID200は、コンポーネントを一意に識別するID(識別子)である。コンポーネントインターフェイス201は、コンポーネントの構成要素のうち、外部から利用する際に使用するインターフェイス等を記述したデータである。さらに、コンポーネントリポジトリ115は、各コンポーネントの付帯情報として、そのコンポーネントの開発状態を把握するための情報であるコンポーネント実績情報202と、検索キーワードを格納する検索インデックス203を備える。
【0023】
コンポーネント実績情報202により、コンポーネントID毎に、そのコンポーネントの現在の状態をVersion ID205やビルド日206やテスト完了日207で把握できる。ビルド日206は、未だビルドが行われていない状態ではNULLが設定されている。同様に、テスト完了日207は、未だテストが行われていない状態ではNULLが設定されている。これらの情報は、コンポーネントに変更が起きるたびに更新される。
【0024】
検索インデックス203には、検索インデックス登録部108,109で作成された検索用のキーワードを格納する。優先度210は、”テスト完了”、”ビルド完了”、”情報登録のみ”の順番で優先度が低くなるような値を設定する。”テスト完了”はテスト完了日207にテスト完了した日付データが設定されている状態、”ビルド完了”はビルド完了日206にビルド完了した日付データが設定されている状態、”情報登録のみ”はビルド日206およびテスト完了日207の何れもNULLの状態を示す。
【0025】
なお、図2ではコンポーネントID200のコンポーネントAから伸びた矢印が指すブロック中にコンポーネントリポジトリ115の全体構成を図示している。コンポーネントAのみについてのデータを図示したものではない。要するに、コンポーネント毎に、コンポーネントインターフェースとコンポーネント実績情報と検索インデックスが登録でき検索できるような構成であればよい。
【0026】
図3は、検索履歴情報114のデータ構成例を示す。検索利用者のユーザID301と、そのユーザの利用情報を格納するデータベースである。利用情報としては、検索を利用した際の検索キーワード302、詳細まで照会した際のコンポーネントID303、および検索日時304を格納する。
【0027】
図4は、実行定義情報116のデータ構成例を示す。このデータはコンポーネント情報登録部102の自動実行のためのものである。ジョブID401をキーにして、対象となるコンポーネントID402、ソースファイル名403、プロセス情報ファイル404、取り込み方法405、および実行日時406を事前に登録しておき、自動実行を行う。
【0028】
次に、本システムの動作の内容について説明する。
【0029】
まず、コンポーネント情報登録の詳細を以下で説明する。コンポーネント情報を登録したい利用者が更新操作端末111で所定の操作を行うことにより、図9の画面が表示される。
【0030】
図9は、更新操作端末111の画面例900である。プロジェクト名901は登録対象のプロジェクト名を入力する領域、プロジェクトID902は登録対象のプロジェクトIDを入力する領域、プログラム指定903はコンポーネントの利用情報を調査する対象のプログラム112やプロジェクト情報ファイル113を指定する領域である。検索開始ボタン904は、コンポーネント情報登録の更新の開始を指示するボタンである。
【0031】
利用者が、図9の画面において、プロジェクト名901、プロジェクトID902、およびプログラム指定903の各入力領域に登録対象のプロジェクト情報を入力し、更新開始ボタン904を押すと、コンポーネント情報登録部102はコンポーネント情報登録の処理を開始する。
【0032】
まず、ファイル読込み部106が、プログラム指定903で指定されたソースファイル112およびプロセス情報ファイル113を読み込む。ソースファイル112の形式はjavadoc形式のソースファイルにもとづいたモデル情報とするが、UMLなどの任意の形式を用いても良い。その後、コンポーネントインターフェイス情報等登録部107、ファイル抽出型検索インデックス登録部108、および利用ランク型検索インデックス登録部109を起動し、それぞれの登録処理を以下の図5〜図7に示す手順で実行する。
【0033】
図5は、コンポーネントインターフェイス情報等登録部107の登録処理の手順を示す。この処理は、ファイル読込み部106で読み込んだ情報を元に、コンポーネントリポジトリ115へ登録可能な形式に加工した情報を登録する処理である。
【0034】
コンポーネントインターフェイス情報等登録部107は、まずファイル読込み部106から、指定されたソースファイル112を解析用に取り込む(S501)。取り込んでからは、コンポーネントID毎(S502)に、インターフェイス情報をソースファイル112のコメントから抽出し(S503)、既にコンポーネントリポジトリ115に登録済みの既存コンポーネントかどうかを確認し(S504)、更新履歴が残るようにversion IDを付与して(S505)、コンポーネントリポジトリ115に登録する(S506)。S506では、S503で抽出したインターフェイス情報をコンポーネントインターフェイス201に登録し、S505で付与したversion IDをコンポーネント実績情報202に登録する。なお、ビルド日206とテスト完了日207には初期値としてNULLを設定する。S504で既存コンポーネントの場合はS505,S506の処理は行わない。以上のS502〜S507の動作をコンポーネントID毎に繰り返す。
【0035】
以上の処理により、ソースファイル112から抽出された各コンポーネントの情報が、図2のコンポーネントインターフェイス201とコンポーネント実績情報202に設定される。
【0036】
次に、検索インデックスの作成と登録を行う。図6は、ファイル抽出型検索インデックス登録部108の登録処理の手順を示す。この処理は、コンポーネントインターフェイス情報等登録部107と同様に、ファイル読込み部106からソースファイル112を読み込み、該ソースファイル112のコメント情報から検索用のキーワードを抽出し、コンポーネントリポジトリ115の検索インデックス203に登録する処理である。
【0037】
ファイル抽出型検索インデックス登録部108は、まずファイル読込み部106から、指定されたソースファイル112を解析用に取り込む(S601)。取り込んでからは、コンポーネントID毎(S602)に以下の処理を行う。まず、取り込んだソースファイルからコメントを抽出する(S603)。次に、コメントの書式や書かれている言語特性にあわせて、機能概要や入出力仕様などを解析する(S604)。日本語の場合、日本語の特徴に合せて、第一文もしくは末文を中心に文節毎に区切って、キーワードを抽出していく。その後、助詞や助動詞、IT用語などを分離し、特異性のあるキーワードのみを抽出する(S605)。そして、抽出したキーワードを検索インデックス203に登録する(S606)。優先度210には、初期値として”情報登録のみ”に対応する最低の優先度を示す値を設定する。以上のS602〜S607の動作をコンポーネントID毎に繰り返す。
【0038】
以上の処理により、ソースファイル112から抽出された各コンポーネントのキーワードが、全て図2の検索インデックス203に設定される。なお、S601で取り込んだソースファイルが既に解析済みのものであった場合は、S602以降の処理は行わないようになっている。
【0039】
次に、検索インデックスの追加または見直しの処理を行う。図7は、利用ランク型検索インデックス登録部109の登録処理の手順を示す。この処理は、検索履歴情報114とプロセス情報ファイル113を活用して行う。図3で説明した検索履歴情報114には、後述する検索処理が実行されたときに、その検索処理で指定された検索キーワードやその検索キーワードでヒットしたコンポーネントのIDなどが格納されている。プロセス情報ファイル113には、ソースファイル112を利用してビルドやテストを行った際の実績情報が格納されている。
【0040】
利用ランク型検索インデックス登録部109は、まずファイル読込み部106から、指定されたソースファイル112とプロセス情報ファイル113を取り込む(S701,S702)。データの取込み後は、検索履歴情報114からユーザ毎の過去の検索用に入力した検索キーワード(図3の302)とその検索でヒットしたコンポーネントID(図3の303)を抽出するとともに、コンポーネント毎のビルドやテスト成否などの実績情報をプロセス情報ファイル113から抽出する(S703)。コンポーネント自身もコンポーネントの組み合わせであるため、コンポーネント内で依存関係を抽出し、利用されたコンポーネントを抽出する。なお、ビルドやテストはビルド日やテスト完了日がプロセス情報ファイル113に存在すれば、ビルドやテストが成功したものとする。その後、コンポーネントID毎に検索キーワードを抽出する(S704)。S704の処理は、検索履歴情報114から抽出した情報を、コンポーネントID毎に集約し、各コンポーネントでどのような検索キーワードが使用されているかをまとめる処理である。
【0041】
次に、コンポーネントID毎に以下の処理を行う(S705)。まず、S703で抽出したコンポーネントの実績情報とS704で抽出した検索キーワードとをコンポーネントIDで結び付けて検索インデックスに登録するデータを作成していく(S706)。これにより、いま処理対象である1つのコンポーネントに対して、その検索に利用された検索キーワードとビルドやテストの実績情報とが結び付けられる。その後、助詞や助動詞、IT用語などを削除し、特異性のあるキーワードのみを登録用に抽出する(S707)。この処理は、検索履歴情報114から抽出した検索キーワードからキーワードとして適正な部分を取り出す処理であるが、もちろん検索履歴情報114から抽出した検索キーワードのままで良ければそれが登録用の検索キーワードになる。
【0042】
次に、S707で取り出した検索キーワードの優先度を決定する(S708)。優先度は、後述する検索処理で検索結果を表示する際に、使用実績や検索実績があり有効な情報と評価できるものがより上位の優先順位で表示されるようにするために用いる指標である。優先度は、コンポーネントIDと検索キーワードの組に対して付与される値である。優先度は、同じ検索キーワードで同じコンポーネントを検索した回数(検索履歴情報114からカウントできる)が多いほど大きくなるような値とし、その場合、より多くのユーザで検索に用いられているものほど大きくなるような値とする。さらに、S706で対応付けたコンポーネントの実績情報(図2の202)に基づき、「情報登録のみ」、「ビルド完了」、「テスト完了」の順に大きくなるような値とする。本実施形態では、検索履歴から何度も繰り返し利用されている検索キーワードは優先度の値を大きく増やし、実績情報から使用実績が上がったコンポーネントに対応する検索キーワードは優先度の値を小さく増やすようにしている。
【0043】
S708で優先度を決定した後、上記抽出した検索キーワードと、それに対応するコンポーネントIDおよび決定した優先度を、検索インデックス203に登録する(S709)。なお、既にそのコンポーネントIDと検索キーワードが登録済であった場合は、優先度210のみを書き替えるものとする。
【0044】
以上により、利用者が検索に利用した検索キーワードを検索インデックス203に追加することができ、さらにコンポーネントを検索する上で、より使用実績や検索実績があるものほど値が大きい優先度を設定することができる。例えば、検索インデックス203に同じコンポーネントID208で異なる複数の検索キーワード209が登録されている場合、それらの検索キーワードの中では、検索履歴情報114に基づいて、より検索の回数が多いものほど(さらにその中では、より多くのユーザに検索で用いられているものほど)優先度210の値が大きくなる。また、検索インデックス203に同じ検索キーワード209で異なる複数のコンポーネントID208が登録されている場合、それらのコンポーネントIDの中では、コンポーネント実績情報202に基づいて、より使用実績(ビルドやテスト等)のあるものの優先度210の値が大きくなる。
【0045】
なお、上記では図9の画面から更新開始ボタン904を押下することで、図5〜図7の処理を順に実行する例を説明したが、これらの各処理は続けて実行する必要はなく、それぞれ独立に実行してもよい。また、図4の実行定義情報116が設定されている場合は、実行日時406に至ったとき、ソースファイル名403とプロセス情報ファイル404で指定されたソースファイルとプロセス情報ファイルを対象として、自動で図5〜図7の処理が実行される。
【0046】
次に、コンポーネント検索システム100が実行する検索処理の概要について説明する。図8は、利用者が検索操作端末110により検索動作を指示したときのコンポーネント検索部101の処理手順を示す。利用者は、本システムを利用してコンポーネントの検索を行う際には、まず検索操作端末110において所定の操作を行って検索初期画面を表示する(S801)。
【0047】
図10は、検索操作端末110の検索初期画面例である。検索キーワード1001は、検索のためのコンポーネントIDや名称その他のキーワードを入力するテキストボックスである。検索方法1002は、検索方法を選択する選択肢である。検索開始ボタン1003は、コンポーネント検索の検索動作の開始を指示するボタンである。
【0048】
図8に戻って、検索処理の手順の説明を続ける。利用者が、S801で表示された図10の画面で検索方法1002とキーワード1001を指定し、検索開始ボタン1003を押すと、コンポーネント検索部101は、指定された検索方法1002を判別し(S802)、キーワード検索(S803)またはインターフェイス検索(S804)を実行する。
【0049】
S803のキーワード検索部104による検索処理では、予めキーワード検索用にコンポーネントリポジトリ115(図2)に登録されている検索インデックス203を活用して検索を行う。この検索では、検索インデックス203に登録されている検索キーワード209の中から、検索画面1000で入力された検索キーワード1001と一致するものを抽出する。抽出する際には、優先度210の値が大きいものが上位になるように順位付けを行う。図2や図7のS708で説明したが、優先度210は検索実績や使用実績のあるものほど大きい値であるので、より実績があるコンポーネントが上位の優先順位になるように検索結果が表示されることになる。
【0050】
S804のインターフェイス検索部103による検索処理では、検索キーワード1001に入力されたコンポーネントの名称またはコンポーネントID、機能仕様に関する用語などをコンポーネントリポジトリ115のコンポーネントインターフェイス201から検索する。その際の検索結果の優先順位は、検索キーワード1001に対して、コンポーネントIDやコンポーネント名称などを前方一致検索した場合の適合する文字の数が多いほど、上位の優先順位になるように決定するものとする。インターフェイス検索は、コンポーネントインターフェイス201に存在する情報であれば検索可能である。
【0051】
次に、S803,S804の検索の結果を表示する(S805)。まず、検索一覧表示として検索結果一覧画面を表示する。
【0052】
図11は、S805で表示する検索結果一覧画面の例である。検索条件1101の検索方法と入力情報には、それぞれ、利用者が図10の検索方法1002と検索キーワード1001で指定した検索方法とキーワードが表示される。1102は検索結果の一覧表示である。検索されたコンポーネントのコンポーネントID1104と日本語名称1105と機能概略1106が、優先順位1103の順に一覧表示される。優先順位1103は、S803,S804で説明した通りに決めたものである。特に、キーワード検索部104の検索では、優先度210に基づいて優先順位が付けられるので、検索実績や使用実績があるコンポーネントが上位に表示される。
【0053】
図11の画面において、コンポーネントID1104の表示にはリンクが埋め込まれており、該リンクを選択することにより、選択されたコンポーネントの詳細表示画面が表示されるようになっている。図12は、詳細表示画面の例である。検索条件1201の検索方法と入力情報は、図11の検索条件1101の表示と同じである。コンポーネントID1202はリンクが選択されたコンポーネントのID、日本語名称1203は当該コンポーネントの日本語名称である。機能仕様1204には、当該コンポーネントの機能仕様の詳細が表示される。
【0054】
なお、図11の1103〜1106に示した表示項目や図12の1202〜1204に示した表示項目は必要に応じて変更可能なものとする。また、各コンポーネントの日本語名称、機能概略、および機能仕様の詳細は、図2では図示していないが、コンポーネントリポジトリ115内に各コンポーネント毎に格納されているものとする。
【0055】
図8に戻って、S805で図11,12に示すような表示を行った後、検索入力キーワード抽出/格納部105により、図3で説明した検索履歴情報114に、検索キーワードや検索結果データを登録する(S807)。S807からS802に戻る点線の矢印は、図10の画面で別の検索キーワード1001や検索方法1002を入力して検索を繰り返すことが可能なことを示すものである。
【0056】
なお、利用者が行った検索の中には所望のコンポーネントを見つけることができないケースもあるので、そのような失敗した検索履歴を検索履歴情報114に格納すると、ノイズになってしまうことが考えられる。そのような場合は、図8の処理で検索履歴情報114に検索履歴を登録する際に利用者に確認を求め、利用者が所望のコンポーネントを見つけることができたと確認した場合のみ、そのコンポーネントとそれまでに入力した検索キーワードを検索履歴として登録すればよい。また、図8の処理で繰り返し検索を行う間に入力された検索キーワードを一時的に保持しておき、それらの一連の検索において中間的に得られた検索結果は捨て(引き続き検索を実行しているのは、利用者が所望の結果を得られていないからであるとみなす)、最後の検索結果で得られたコンポーネントが最終的に利用者が所望のものであるとみなして、前記一時的に保持しておいた検索キーワードとともに検索履歴として登録するようにしてもよい。
【0057】
なお、上記実施形態において、図10の検索画面の検索キーワード1001の欄には複数のキーワードを入力することもできる。その場合、複数の検索キーワードによるand検索を行い、各検索キーワードでそれぞれ検索されたコンポーネントのandを採って検索結果とする。優先順位は、例えば、andを取るときにそれぞれの優先度を加算するなどして求めた結合優先度に基づいて決めればよい。
【0058】
以上のように、本発明の実施形態によれば、利用者が検索を行うたびに、検索キーワードとその検索でヒットしたコンポーネントIDを履歴情報として登録しておき、何回も使われるキーワードについては優先度が高くなるようにしているので、より利用者が想像し易いキーワードの優先度が高くなり、検索結果として上位に提示されるようになる。そのため、より利用者が想像し易いキーワードがコンポーネントリポジトリに登録されることになる。結果として、登録されるコンポーネントの増加や利用者の増加によるキーワードの集積によって、初級者から上級者まで利用できる幅広い検索インデックスが作成でき、運用者のスキルに依存しないコンポーネント再利用のナビゲートが可能になる。これらにより、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって、有益な検索が可能になる。
【符号の説明】
【0059】
100…コンポーネント検索システム、101…コンポーネント検索部、102…コンポーネント情報登録部、103…インターフェイス検索部、104…キーワード検索部、105…検索入力キーワード抽出/格納部、106…ファイル読込み部、107…コンポーネントインターフェイス情報等登録部、108…ファイル抽出型検索インデックス登録部、109…利用ランク型検索インデックス登録部、110…検索操作端末、111…更新操作端末、112…ソースファイル、113…プロセス情報ファイル、114…検索履歴情報、115…コンポーネントリポジトリ、116…実行定義情報。
【技術分野】
【0001】
本発明は、アプリケーションソフトウェアの部品である複数のコンポーネントを登録し、それらのコンポーネントの中から適切なコンポーネントを検索する技術に関するものである。
【背景技術】
【0002】
ソフトウェア開発においては、効率的な開発を行うために、既存ソフトウェア開発で作成されたソフトウェアコンポーネントを再利用することや、共通利用できるコンポーネントを再利用することが有効とされている。そのような再利用の方法については、従来から種々の検討がなされている。一般的に、自分たちが必要としているコンポーネントを見つけ出すためには、機能名による検索を行うことが多い。技術者がコンポーネント群の全体を把握している場合は、必要なコンポーネントを適宜探し出すことは可能であるが、そのような技術者は高スキルを持つ技術者に限られることがほとんどである。一般技術者は、一個人としての経験を頼りに、機能名で検索したり、これまでに利用したことのあるものの中から必要なコンポーネントを探し出しているのが実情である。
【0003】
結果として、同じチームやプロジェクト内でも他人が作成しているコンポーネントについて認識がないために類似コンポーネントを作り込んだり、適切なコンポーネントを選択できずに間違った実装をしたりするケースがあり、思うような再利用が行われていないのが現実である。
【0004】
下記特許文献1,2には、再利用性を促すためのツールであるコンポーネント検索ツールが開示されている。特許文献1に記載の技術は、コンポーネント毎に適用分野と利用形態に応じた適合度を求めて利用情報リポジトリに格納しておき、検索時には、指定された適用分野と適合度に応じたコンポーネントを提示できるようにしたものである。また、特許文献2に記載の技術は、分類するに至った根拠を示す分類子により複数の分類概念へ分類する際の分類化の観点が明示されるようにし、この分類子が付随される統一的な階層構造に従った登録・検索が行えるようにしたものである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−252512号公報
【特許文献2】特開2007−226375号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記特許文献1に記載の技術では、機能仕様を中心に適合性を見ているために、仕様書の間違いや実際に利用者の利用結果が反映されることがない。また、上記特許文献2に記載の技術では、標準化された階層構造にコンポーネントを分析する必要があり、慣れるまでに時間がかかる。また検索方法も階層構造を理解する必要があり、直感的ではない。何れの検索システムも、登録情報やプログラムに対する情報の設定が多くなり、システム運用負荷や検索システムを利用できるまでの情報登録に対する負荷が大きい。また、初心者や技術的に一定レベルを満たしていない技術者にとっては慣れるまでに時間を要し、標準化した効果があまり得られない。
【0007】
以上のように、従来のコンポーネント部品検索手法では、単純な名前などによる検索を行うか、あるいは事前に階層構造に分解した機能仕様やユーザの求める機能との適合度等を登録しておく必要があった。そのため、高度な分析スキルと機能仕様の理解が不可欠であり、スキルが千差万別な一般的な技術者への対応は難しかった。また、高度なスキルを有する人材で適用を開始して初期導入はうまく言っても、運用要員の入れ替えなどによりシステムの維持が困難になる場合もあった。
【0008】
また、一般的なスキルの技術者だけでは、コンポーネントのデータ登録や仕組みの理解で時間がかかり、効果的な再利用まで結びついていないのが現状である。そのため、コンポーネント検索システムは、導入容易性と個人頼みの技術者たちの検索ノウハウを集約することがなければ、より実践的な検索機能を実現できないのである。
【0009】
本発明の目的は、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって有益な検索が可能な技術を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明は、プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムを利用してコンポーネントの検索を行う場合に、ファイル抽出型検索インデックス登録部で、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録し、キーワード検索部で、利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示し、検索入力キーワード抽出/格納部で、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録し、利用ランク型検索インデックス登録部で、前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録するようにし、前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示することを特徴とする。
【0011】
さらに、コンポーネントインターフェイス情報登録部で、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルからインターフェイス情報を抽出して、コンポーネントリポジトリへコンポーネントインターフェイス情報として登録し、インターフェイス検索部で、利用者により入力された検索キーワードを前記コンポーネントリポジトリのコンポーネントインターフェイス情報から前方一致検索で検索し、検索結果のコンポーネントIDを提示し、検索入力キーワード抽出/格納部で、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録するようにしてもよい。
【0012】
また、前記利用ランク型検索インデックス登録部が、前記検索履歴情報から抽出した情報を優先度を付けて前記コンポーネントリポジトリへ検索インデックスとして登録する場合、当該コンポーネントの使用実績を取得し、より使用実績のあるものほど高くなるような優先度を付けるようにしてもよい。
【0013】
さらに、処理対象のソースファイルを特定する情報と実行日時を含む実行定義情報に基づいて、前記コンポーネントインターフェイス情報登録部によるコンポーネントインターフェイス情報の登録、前記ファイル抽出型検索インデックス登録部による検索インデックスの登録、および、前記利用ランク型検索インデックス登録部による検索インデックスの登録のうちの少なくとも1つを自動実行するようにしてもよい。
【発明の効果】
【0014】
本発明によれば、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって、有益な検索が可能になる。
【図面の簡単な説明】
【0015】
【図1】本発明の一実施形態であるコンポーネント検索システムの全体構成図である。
【図2】コンポーネントリポジトリの構成図である。
【図3】検索履歴情報の構成図である。
【図4】コンポーネント利用情報の構成図である。
【図5】コンポーネントインターフェイス情報等登録部の処理の概要を示すフローチャートである。
【図6】ファイル抽出型検索インデックス登録部の処理の概要を示すフローチャートである。
【図7】利用ランク型検索インデックス登録部の処理の概要を示すフローチャートである。
【図8】コンポーネント検索部による検索処理の概要を示すフローチャートである。
【図9】更新操作端末の画面例である。
【図10】検索操作端末の画面例である。
【図11】検索結果一覧の画面例である。
【図12】検索結果詳細の画面例である。
【発明を実施するための形態】
【0016】
以下、本発明に係るコンポーネント検索システムの実施の形態について、図面を参照して説明する。なお、本実施の形態では、Java(登録商標)言語(Sun Microsystems社が開発したプログラミング言語)によって記述されたソフトウェア部品の検索のシステムおよび方法について説明する。もちろん他の言語で記述されたコンポーネントを検索対象にしてもよい。
【0017】
図1は、本実施形態におけるコンポーネント検索システムの概略構成図である。コンポーネント検索システム100は、コンポーネント検索部101とコンポーネント情報登録部102とを備える。コンポーネント検索部101は、インターフェイス検索部103、キーワード検索部104、および検索入力キーワード抽出/格納部105を備える。コンポーネント検索部101は、検索操作端末110で選択された検索方法に基づき、インターフェイス検索部103またはキーワード検索部104による検索処理を実行する。その際の検索対象は、コンポーネントリポジトリ115である。また、検索入力キーワード抽出/格納部105は、検索が実行された際に、ユーザIDなどのユーザを特定できる情報とともに、検索用に入力されたキーワードと抽出結果を、検索履歴情報114に格納する。
【0018】
コンポーネント情報登録部102は、ファイル読込み部106、コンポーネントインターフェイス情報等登録部107、ファイル抽出型検索インデックス登録部108、および利用ランク型検索インデックス登録部109を備える。コンポーネント情報登録部102は、更新操作端末111からの利用者の指示により、または、実行定義情報116に基づく自動実行処理により、コンポーネントのコンポーネントリポジトリ115への登録処理を実行する。この登録処理では、ファイル読込み部106がソースファイル112およびコンパイルやテストの成否などのソースファイルの状態を保持するプロセス情報ファイル113を読み込み、各登録部107〜109により作成した登録情報をコンポーネントリポジトリ115へ登録する。
【0019】
コンポーネントインターフェイス情報等登録部107は、ファイル読込み部106により読込んだソースファイル112から、コンポーネント毎に、インターフェイス情報を抽出し、コンポーネントリポジトリ115に登録する処理などを行う。
【0020】
2つの検索インデックス登録部108および109は、それぞれの使い道が異なる。ファイル抽出型検索インデックス登録部108は、コンポーネントの初期登録時や更新時に、ソースファイルなどに含まれるjavadoc形式などの公知の書式に基づいた機能仕様情報から、検索用のインデックスを作成して登録する。一方、利用ランク型検索インデックス登録部109は、ユーザが検索操作端末110から検索した履歴を格納した検索履歴情報114やプロセス情報ファイル113を元に、ユーザが検索に利用したキーワードの中から、実績があってかつユーザに馴染みのあるキーワードを検索用のインデックスに追加登録していくものである。
【0021】
なお、コンポーネント検索部101、コンポーネント情報登録部102、およびこれらに含まれる各部は、ハードウェアとして構成しても良いし、ソフトウェアとして構成しても良い。ソフトウェアとして構成される場合には、ソフトウェアとしての各部はHDD等の記憶装置からメモリ等の主記憶装置に読み出され、CPU等の演算部により実行されることで実現される。後述する各図における処理動作も、これを前提としてハードウェアまたはソフトウェアとしての各部により実現されるものとする。
【0022】
図2は、コンポーネントリポジトリ115のデータ構成例を示す。コンポーネントID200は、コンポーネントを一意に識別するID(識別子)である。コンポーネントインターフェイス201は、コンポーネントの構成要素のうち、外部から利用する際に使用するインターフェイス等を記述したデータである。さらに、コンポーネントリポジトリ115は、各コンポーネントの付帯情報として、そのコンポーネントの開発状態を把握するための情報であるコンポーネント実績情報202と、検索キーワードを格納する検索インデックス203を備える。
【0023】
コンポーネント実績情報202により、コンポーネントID毎に、そのコンポーネントの現在の状態をVersion ID205やビルド日206やテスト完了日207で把握できる。ビルド日206は、未だビルドが行われていない状態ではNULLが設定されている。同様に、テスト完了日207は、未だテストが行われていない状態ではNULLが設定されている。これらの情報は、コンポーネントに変更が起きるたびに更新される。
【0024】
検索インデックス203には、検索インデックス登録部108,109で作成された検索用のキーワードを格納する。優先度210は、”テスト完了”、”ビルド完了”、”情報登録のみ”の順番で優先度が低くなるような値を設定する。”テスト完了”はテスト完了日207にテスト完了した日付データが設定されている状態、”ビルド完了”はビルド完了日206にビルド完了した日付データが設定されている状態、”情報登録のみ”はビルド日206およびテスト完了日207の何れもNULLの状態を示す。
【0025】
なお、図2ではコンポーネントID200のコンポーネントAから伸びた矢印が指すブロック中にコンポーネントリポジトリ115の全体構成を図示している。コンポーネントAのみについてのデータを図示したものではない。要するに、コンポーネント毎に、コンポーネントインターフェースとコンポーネント実績情報と検索インデックスが登録でき検索できるような構成であればよい。
【0026】
図3は、検索履歴情報114のデータ構成例を示す。検索利用者のユーザID301と、そのユーザの利用情報を格納するデータベースである。利用情報としては、検索を利用した際の検索キーワード302、詳細まで照会した際のコンポーネントID303、および検索日時304を格納する。
【0027】
図4は、実行定義情報116のデータ構成例を示す。このデータはコンポーネント情報登録部102の自動実行のためのものである。ジョブID401をキーにして、対象となるコンポーネントID402、ソースファイル名403、プロセス情報ファイル404、取り込み方法405、および実行日時406を事前に登録しておき、自動実行を行う。
【0028】
次に、本システムの動作の内容について説明する。
【0029】
まず、コンポーネント情報登録の詳細を以下で説明する。コンポーネント情報を登録したい利用者が更新操作端末111で所定の操作を行うことにより、図9の画面が表示される。
【0030】
図9は、更新操作端末111の画面例900である。プロジェクト名901は登録対象のプロジェクト名を入力する領域、プロジェクトID902は登録対象のプロジェクトIDを入力する領域、プログラム指定903はコンポーネントの利用情報を調査する対象のプログラム112やプロジェクト情報ファイル113を指定する領域である。検索開始ボタン904は、コンポーネント情報登録の更新の開始を指示するボタンである。
【0031】
利用者が、図9の画面において、プロジェクト名901、プロジェクトID902、およびプログラム指定903の各入力領域に登録対象のプロジェクト情報を入力し、更新開始ボタン904を押すと、コンポーネント情報登録部102はコンポーネント情報登録の処理を開始する。
【0032】
まず、ファイル読込み部106が、プログラム指定903で指定されたソースファイル112およびプロセス情報ファイル113を読み込む。ソースファイル112の形式はjavadoc形式のソースファイルにもとづいたモデル情報とするが、UMLなどの任意の形式を用いても良い。その後、コンポーネントインターフェイス情報等登録部107、ファイル抽出型検索インデックス登録部108、および利用ランク型検索インデックス登録部109を起動し、それぞれの登録処理を以下の図5〜図7に示す手順で実行する。
【0033】
図5は、コンポーネントインターフェイス情報等登録部107の登録処理の手順を示す。この処理は、ファイル読込み部106で読み込んだ情報を元に、コンポーネントリポジトリ115へ登録可能な形式に加工した情報を登録する処理である。
【0034】
コンポーネントインターフェイス情報等登録部107は、まずファイル読込み部106から、指定されたソースファイル112を解析用に取り込む(S501)。取り込んでからは、コンポーネントID毎(S502)に、インターフェイス情報をソースファイル112のコメントから抽出し(S503)、既にコンポーネントリポジトリ115に登録済みの既存コンポーネントかどうかを確認し(S504)、更新履歴が残るようにversion IDを付与して(S505)、コンポーネントリポジトリ115に登録する(S506)。S506では、S503で抽出したインターフェイス情報をコンポーネントインターフェイス201に登録し、S505で付与したversion IDをコンポーネント実績情報202に登録する。なお、ビルド日206とテスト完了日207には初期値としてNULLを設定する。S504で既存コンポーネントの場合はS505,S506の処理は行わない。以上のS502〜S507の動作をコンポーネントID毎に繰り返す。
【0035】
以上の処理により、ソースファイル112から抽出された各コンポーネントの情報が、図2のコンポーネントインターフェイス201とコンポーネント実績情報202に設定される。
【0036】
次に、検索インデックスの作成と登録を行う。図6は、ファイル抽出型検索インデックス登録部108の登録処理の手順を示す。この処理は、コンポーネントインターフェイス情報等登録部107と同様に、ファイル読込み部106からソースファイル112を読み込み、該ソースファイル112のコメント情報から検索用のキーワードを抽出し、コンポーネントリポジトリ115の検索インデックス203に登録する処理である。
【0037】
ファイル抽出型検索インデックス登録部108は、まずファイル読込み部106から、指定されたソースファイル112を解析用に取り込む(S601)。取り込んでからは、コンポーネントID毎(S602)に以下の処理を行う。まず、取り込んだソースファイルからコメントを抽出する(S603)。次に、コメントの書式や書かれている言語特性にあわせて、機能概要や入出力仕様などを解析する(S604)。日本語の場合、日本語の特徴に合せて、第一文もしくは末文を中心に文節毎に区切って、キーワードを抽出していく。その後、助詞や助動詞、IT用語などを分離し、特異性のあるキーワードのみを抽出する(S605)。そして、抽出したキーワードを検索インデックス203に登録する(S606)。優先度210には、初期値として”情報登録のみ”に対応する最低の優先度を示す値を設定する。以上のS602〜S607の動作をコンポーネントID毎に繰り返す。
【0038】
以上の処理により、ソースファイル112から抽出された各コンポーネントのキーワードが、全て図2の検索インデックス203に設定される。なお、S601で取り込んだソースファイルが既に解析済みのものであった場合は、S602以降の処理は行わないようになっている。
【0039】
次に、検索インデックスの追加または見直しの処理を行う。図7は、利用ランク型検索インデックス登録部109の登録処理の手順を示す。この処理は、検索履歴情報114とプロセス情報ファイル113を活用して行う。図3で説明した検索履歴情報114には、後述する検索処理が実行されたときに、その検索処理で指定された検索キーワードやその検索キーワードでヒットしたコンポーネントのIDなどが格納されている。プロセス情報ファイル113には、ソースファイル112を利用してビルドやテストを行った際の実績情報が格納されている。
【0040】
利用ランク型検索インデックス登録部109は、まずファイル読込み部106から、指定されたソースファイル112とプロセス情報ファイル113を取り込む(S701,S702)。データの取込み後は、検索履歴情報114からユーザ毎の過去の検索用に入力した検索キーワード(図3の302)とその検索でヒットしたコンポーネントID(図3の303)を抽出するとともに、コンポーネント毎のビルドやテスト成否などの実績情報をプロセス情報ファイル113から抽出する(S703)。コンポーネント自身もコンポーネントの組み合わせであるため、コンポーネント内で依存関係を抽出し、利用されたコンポーネントを抽出する。なお、ビルドやテストはビルド日やテスト完了日がプロセス情報ファイル113に存在すれば、ビルドやテストが成功したものとする。その後、コンポーネントID毎に検索キーワードを抽出する(S704)。S704の処理は、検索履歴情報114から抽出した情報を、コンポーネントID毎に集約し、各コンポーネントでどのような検索キーワードが使用されているかをまとめる処理である。
【0041】
次に、コンポーネントID毎に以下の処理を行う(S705)。まず、S703で抽出したコンポーネントの実績情報とS704で抽出した検索キーワードとをコンポーネントIDで結び付けて検索インデックスに登録するデータを作成していく(S706)。これにより、いま処理対象である1つのコンポーネントに対して、その検索に利用された検索キーワードとビルドやテストの実績情報とが結び付けられる。その後、助詞や助動詞、IT用語などを削除し、特異性のあるキーワードのみを登録用に抽出する(S707)。この処理は、検索履歴情報114から抽出した検索キーワードからキーワードとして適正な部分を取り出す処理であるが、もちろん検索履歴情報114から抽出した検索キーワードのままで良ければそれが登録用の検索キーワードになる。
【0042】
次に、S707で取り出した検索キーワードの優先度を決定する(S708)。優先度は、後述する検索処理で検索結果を表示する際に、使用実績や検索実績があり有効な情報と評価できるものがより上位の優先順位で表示されるようにするために用いる指標である。優先度は、コンポーネントIDと検索キーワードの組に対して付与される値である。優先度は、同じ検索キーワードで同じコンポーネントを検索した回数(検索履歴情報114からカウントできる)が多いほど大きくなるような値とし、その場合、より多くのユーザで検索に用いられているものほど大きくなるような値とする。さらに、S706で対応付けたコンポーネントの実績情報(図2の202)に基づき、「情報登録のみ」、「ビルド完了」、「テスト完了」の順に大きくなるような値とする。本実施形態では、検索履歴から何度も繰り返し利用されている検索キーワードは優先度の値を大きく増やし、実績情報から使用実績が上がったコンポーネントに対応する検索キーワードは優先度の値を小さく増やすようにしている。
【0043】
S708で優先度を決定した後、上記抽出した検索キーワードと、それに対応するコンポーネントIDおよび決定した優先度を、検索インデックス203に登録する(S709)。なお、既にそのコンポーネントIDと検索キーワードが登録済であった場合は、優先度210のみを書き替えるものとする。
【0044】
以上により、利用者が検索に利用した検索キーワードを検索インデックス203に追加することができ、さらにコンポーネントを検索する上で、より使用実績や検索実績があるものほど値が大きい優先度を設定することができる。例えば、検索インデックス203に同じコンポーネントID208で異なる複数の検索キーワード209が登録されている場合、それらの検索キーワードの中では、検索履歴情報114に基づいて、より検索の回数が多いものほど(さらにその中では、より多くのユーザに検索で用いられているものほど)優先度210の値が大きくなる。また、検索インデックス203に同じ検索キーワード209で異なる複数のコンポーネントID208が登録されている場合、それらのコンポーネントIDの中では、コンポーネント実績情報202に基づいて、より使用実績(ビルドやテスト等)のあるものの優先度210の値が大きくなる。
【0045】
なお、上記では図9の画面から更新開始ボタン904を押下することで、図5〜図7の処理を順に実行する例を説明したが、これらの各処理は続けて実行する必要はなく、それぞれ独立に実行してもよい。また、図4の実行定義情報116が設定されている場合は、実行日時406に至ったとき、ソースファイル名403とプロセス情報ファイル404で指定されたソースファイルとプロセス情報ファイルを対象として、自動で図5〜図7の処理が実行される。
【0046】
次に、コンポーネント検索システム100が実行する検索処理の概要について説明する。図8は、利用者が検索操作端末110により検索動作を指示したときのコンポーネント検索部101の処理手順を示す。利用者は、本システムを利用してコンポーネントの検索を行う際には、まず検索操作端末110において所定の操作を行って検索初期画面を表示する(S801)。
【0047】
図10は、検索操作端末110の検索初期画面例である。検索キーワード1001は、検索のためのコンポーネントIDや名称その他のキーワードを入力するテキストボックスである。検索方法1002は、検索方法を選択する選択肢である。検索開始ボタン1003は、コンポーネント検索の検索動作の開始を指示するボタンである。
【0048】
図8に戻って、検索処理の手順の説明を続ける。利用者が、S801で表示された図10の画面で検索方法1002とキーワード1001を指定し、検索開始ボタン1003を押すと、コンポーネント検索部101は、指定された検索方法1002を判別し(S802)、キーワード検索(S803)またはインターフェイス検索(S804)を実行する。
【0049】
S803のキーワード検索部104による検索処理では、予めキーワード検索用にコンポーネントリポジトリ115(図2)に登録されている検索インデックス203を活用して検索を行う。この検索では、検索インデックス203に登録されている検索キーワード209の中から、検索画面1000で入力された検索キーワード1001と一致するものを抽出する。抽出する際には、優先度210の値が大きいものが上位になるように順位付けを行う。図2や図7のS708で説明したが、優先度210は検索実績や使用実績のあるものほど大きい値であるので、より実績があるコンポーネントが上位の優先順位になるように検索結果が表示されることになる。
【0050】
S804のインターフェイス検索部103による検索処理では、検索キーワード1001に入力されたコンポーネントの名称またはコンポーネントID、機能仕様に関する用語などをコンポーネントリポジトリ115のコンポーネントインターフェイス201から検索する。その際の検索結果の優先順位は、検索キーワード1001に対して、コンポーネントIDやコンポーネント名称などを前方一致検索した場合の適合する文字の数が多いほど、上位の優先順位になるように決定するものとする。インターフェイス検索は、コンポーネントインターフェイス201に存在する情報であれば検索可能である。
【0051】
次に、S803,S804の検索の結果を表示する(S805)。まず、検索一覧表示として検索結果一覧画面を表示する。
【0052】
図11は、S805で表示する検索結果一覧画面の例である。検索条件1101の検索方法と入力情報には、それぞれ、利用者が図10の検索方法1002と検索キーワード1001で指定した検索方法とキーワードが表示される。1102は検索結果の一覧表示である。検索されたコンポーネントのコンポーネントID1104と日本語名称1105と機能概略1106が、優先順位1103の順に一覧表示される。優先順位1103は、S803,S804で説明した通りに決めたものである。特に、キーワード検索部104の検索では、優先度210に基づいて優先順位が付けられるので、検索実績や使用実績があるコンポーネントが上位に表示される。
【0053】
図11の画面において、コンポーネントID1104の表示にはリンクが埋め込まれており、該リンクを選択することにより、選択されたコンポーネントの詳細表示画面が表示されるようになっている。図12は、詳細表示画面の例である。検索条件1201の検索方法と入力情報は、図11の検索条件1101の表示と同じである。コンポーネントID1202はリンクが選択されたコンポーネントのID、日本語名称1203は当該コンポーネントの日本語名称である。機能仕様1204には、当該コンポーネントの機能仕様の詳細が表示される。
【0054】
なお、図11の1103〜1106に示した表示項目や図12の1202〜1204に示した表示項目は必要に応じて変更可能なものとする。また、各コンポーネントの日本語名称、機能概略、および機能仕様の詳細は、図2では図示していないが、コンポーネントリポジトリ115内に各コンポーネント毎に格納されているものとする。
【0055】
図8に戻って、S805で図11,12に示すような表示を行った後、検索入力キーワード抽出/格納部105により、図3で説明した検索履歴情報114に、検索キーワードや検索結果データを登録する(S807)。S807からS802に戻る点線の矢印は、図10の画面で別の検索キーワード1001や検索方法1002を入力して検索を繰り返すことが可能なことを示すものである。
【0056】
なお、利用者が行った検索の中には所望のコンポーネントを見つけることができないケースもあるので、そのような失敗した検索履歴を検索履歴情報114に格納すると、ノイズになってしまうことが考えられる。そのような場合は、図8の処理で検索履歴情報114に検索履歴を登録する際に利用者に確認を求め、利用者が所望のコンポーネントを見つけることができたと確認した場合のみ、そのコンポーネントとそれまでに入力した検索キーワードを検索履歴として登録すればよい。また、図8の処理で繰り返し検索を行う間に入力された検索キーワードを一時的に保持しておき、それらの一連の検索において中間的に得られた検索結果は捨て(引き続き検索を実行しているのは、利用者が所望の結果を得られていないからであるとみなす)、最後の検索結果で得られたコンポーネントが最終的に利用者が所望のものであるとみなして、前記一時的に保持しておいた検索キーワードとともに検索履歴として登録するようにしてもよい。
【0057】
なお、上記実施形態において、図10の検索画面の検索キーワード1001の欄には複数のキーワードを入力することもできる。その場合、複数の検索キーワードによるand検索を行い、各検索キーワードでそれぞれ検索されたコンポーネントのandを採って検索結果とする。優先順位は、例えば、andを取るときにそれぞれの優先度を加算するなどして求めた結合優先度に基づいて決めればよい。
【0058】
以上のように、本発明の実施形態によれば、利用者が検索を行うたびに、検索キーワードとその検索でヒットしたコンポーネントIDを履歴情報として登録しておき、何回も使われるキーワードについては優先度が高くなるようにしているので、より利用者が想像し易いキーワードの優先度が高くなり、検索結果として上位に提示されるようになる。そのため、より利用者が想像し易いキーワードがコンポーネントリポジトリに登録されることになる。結果として、登録されるコンポーネントの増加や利用者の増加によるキーワードの集積によって、初級者から上級者まで利用できる幅広い検索インデックスが作成でき、運用者のスキルに依存しないコンポーネント再利用のナビゲートが可能になる。これらにより、導入のための準備作業の時間や手間の軽減が図れ、継続的な利用を行うことで利用者にとって、有益な検索が可能になる。
【符号の説明】
【0059】
100…コンポーネント検索システム、101…コンポーネント検索部、102…コンポーネント情報登録部、103…インターフェイス検索部、104…キーワード検索部、105…検索入力キーワード抽出/格納部、106…ファイル読込み部、107…コンポーネントインターフェイス情報等登録部、108…ファイル抽出型検索インデックス登録部、109…利用ランク型検索インデックス登録部、110…検索操作端末、111…更新操作端末、112…ソースファイル、113…プロセス情報ファイル、114…検索履歴情報、115…コンポーネントリポジトリ、116…実行定義情報。
【特許請求の範囲】
【請求項1】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムを利用してコンポーネントの検索を行うプログラムコンポーネント検索方法であって、
前記コンポーネント検索システムが備えるファイル抽出型検索インデックス登録部が、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録するステップと、
前記コンポーネント検索システムが備えるキーワード検索部が、利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示するステップと、
前記コンポーネント検索システムが備える検索入力キーワード抽出/格納部が、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録するステップと、
前記コンポーネント検索システムが備える利用ランク型検索インデックス登録部が、前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録するステップとを備え、
前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示することを特徴とするプログラムコンポーネント検索方法。
【請求項2】
請求項1に記載のプログラムコンポーネント検索方法において、
前記コンポーネント検索システムが備えるコンポーネントインターフェイス情報登録部が、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルからインターフェイス情報を抽出して、コンポーネントリポジトリへコンポーネントインターフェイス情報として登録するステップと、
前記コンポーネント検索システムが備えるインターフェイス検索部が、利用者により入力された検索キーワードを前記コンポーネントリポジトリのコンポーネントインターフェイス情報から前方一致検索で検索し、検索結果のコンポーネントIDを提示するステップと、
前記コンポーネント検索システムが備える検索入力キーワード抽出/格納部が、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録するステップと
を、さらに備えることを特徴とするプログラムコンポーネント検索方法。
【請求項3】
請求項1または2に記載のプログラムコンポーネント検索方法において、
前記利用ランク型検索インデックス登録部が、前記検索履歴情報から抽出した情報を優先度を付けて前記コンポーネントリポジトリへ検索インデックスとして登録する場合、当該コンポーネントの使用実績を取得し、より使用実績のあるものほど高くなるような優先度を付けることを特徴とするプログラムコンポーネント検索方法。
【請求項4】
請求項1から3の何れか1つに記載のプログラムコンポーネント検索方法において、
処理対象のソースファイルを特定する情報と実行日時を含む実行定義情報に基づいて、前記コンポーネントインターフェイス情報登録部によるコンポーネントインターフェイス情報の登録、前記ファイル抽出型検索インデックス登録部による検索インデックスの登録、および、前記利用ランク型検索インデックス登録部による検索インデックスの登録のうちの少なくとも1つを自動実行することを特徴とするプログラムコンポーネント検索方法。
【請求項5】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムであって、
処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録する、ファイル抽出型検索インデックス登録部と、
利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示する、キーワード検索部と、
前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録する、検索入力キーワード抽出/格納部と、
前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録する、利用ランク型検索インデックス登録部とを備え、
前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示することを特徴とするプログラムコンポーネント検索システム。
【請求項6】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えたコンピュータをコンポーネント検索システムとして機能させるコンポーネント検索プログラムであって、
前記コンピュータを、
処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録する、ファイル抽出型検索インデックス登録部と、
利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示する、キーワード検索部と、
前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録する、検索入力キーワード抽出/格納部と、
前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録する、利用ランク型検索インデックス登録部とを備え、
前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示するプログラムコンポーネント検索システムとして、機能させるコンポーネント検索プログラム。
【請求項1】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムを利用してコンポーネントの検索を行うプログラムコンポーネント検索方法であって、
前記コンポーネント検索システムが備えるファイル抽出型検索インデックス登録部が、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録するステップと、
前記コンポーネント検索システムが備えるキーワード検索部が、利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示するステップと、
前記コンポーネント検索システムが備える検索入力キーワード抽出/格納部が、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録するステップと、
前記コンポーネント検索システムが備える利用ランク型検索インデックス登録部が、前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録するステップとを備え、
前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示することを特徴とするプログラムコンポーネント検索方法。
【請求項2】
請求項1に記載のプログラムコンポーネント検索方法において、
前記コンポーネント検索システムが備えるコンポーネントインターフェイス情報登録部が、処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルからインターフェイス情報を抽出して、コンポーネントリポジトリへコンポーネントインターフェイス情報として登録するステップと、
前記コンポーネント検索システムが備えるインターフェイス検索部が、利用者により入力された検索キーワードを前記コンポーネントリポジトリのコンポーネントインターフェイス情報から前方一致検索で検索し、検索結果のコンポーネントIDを提示するステップと、
前記コンポーネント検索システムが備える検索入力キーワード抽出/格納部が、前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録するステップと
を、さらに備えることを特徴とするプログラムコンポーネント検索方法。
【請求項3】
請求項1または2に記載のプログラムコンポーネント検索方法において、
前記利用ランク型検索インデックス登録部が、前記検索履歴情報から抽出した情報を優先度を付けて前記コンポーネントリポジトリへ検索インデックスとして登録する場合、当該コンポーネントの使用実績を取得し、より使用実績のあるものほど高くなるような優先度を付けることを特徴とするプログラムコンポーネント検索方法。
【請求項4】
請求項1から3の何れか1つに記載のプログラムコンポーネント検索方法において、
処理対象のソースファイルを特定する情報と実行日時を含む実行定義情報に基づいて、前記コンポーネントインターフェイス情報登録部によるコンポーネントインターフェイス情報の登録、前記ファイル抽出型検索インデックス登録部による検索インデックスの登録、および、前記利用ランク型検索インデックス登録部による検索インデックスの登録のうちの少なくとも1つを自動実行することを特徴とするプログラムコンポーネント検索方法。
【請求項5】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えるコンポーネント検索システムであって、
処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録する、ファイル抽出型検索インデックス登録部と、
利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示する、キーワード検索部と、
前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録する、検索入力キーワード抽出/格納部と、
前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録する、利用ランク型検索インデックス登録部とを備え、
前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示することを特徴とするプログラムコンポーネント検索システム。
【請求項6】
プログラムの部品であるコンポーネントに関する情報を記憶するコンポーネントリポジトリを備えたコンピュータをコンポーネント検索システムとして機能させるコンポーネント検索プログラムであって、
前記コンピュータを、
処理対象のソースファイルを読み込み、コンポーネント毎に、該ソースファイルから検索キーワードを抽出し、該検索キーワードと該コンポーネントのIDとを対応させて前記コンポーネントリポジトリへ検索インデックスとして登録する、ファイル抽出型検索インデックス登録部と、
利用者により入力された検索キーワードを前記コンポーネントリポジトリの検索インデックスから検索し、検索結果のコンポーネントIDを提示する、キーワード検索部と、
前記利用者により入力された検索キーワードと該検索結果のコンポーネントIDとを、検索履歴情報に登録する、検索入力キーワード抽出/格納部と、
前記検索履歴情報から検索キーワードと検索結果のコンポーネントIDとを抽出し、前記検索履歴情報に当該検索キーワードとコンポーネントIDの検索履歴が多くあるほど高くなる優先度を付けて、前記コンポーネントリポジトリへ検索インデックスとして登録する、利用ランク型検索インデックス登録部とを備え、
前記キーワード検索部による検索で検索結果のコンポーネントIDを提示する際には、前記優先度が高い順に検索結果のコンポーネントIDを提示するプログラムコンポーネント検索システムとして、機能させるコンポーネント検索プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2012−108710(P2012−108710A)
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願番号】特願2010−256802(P2010−256802)
【出願日】平成22年11月17日(2010.11.17)
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
【Fターム(参考)】
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願日】平成22年11月17日(2010.11.17)
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
【Fターム(参考)】
[ Back to top ]