JP2008242811A - ソフトウェア部品ソースコード生成システム - Google Patents
ソフトウェア部品ソースコード生成システム Download PDFInfo
- Publication number
- JP2008242811A JP2008242811A JP2007082379A JP2007082379A JP2008242811A JP 2008242811 A JP2008242811 A JP 2008242811A JP 2007082379 A JP2007082379 A JP 2007082379A JP 2007082379 A JP2007082379 A JP 2007082379A JP 2008242811 A JP2008242811 A JP 2008242811A
- Authority
- JP
- Japan
- Prior art keywords
- software component
- source code
- developer
- component
- software
- 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.)
- Pending
Links
- 230000005540 biological transmission Effects 0.000 claims abstract description 7
- 238000000605 extraction Methods 0.000 claims abstract description 6
- 239000000284 extract Substances 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 description 44
- 230000006870 function Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 12
- 230000001419 dependent effect Effects 0.000 description 8
- 230000000694 effects Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】ソフトウェア部品を入手する際に、開発者の要求を満たしたソフトウェア部品のソースコードのみを入手することを可能とするソフトウェア部品ソースコード生成システムを提供する。
【解決手段】部品支援装置12では、開発者端末11から送信されたカテゴリ情報とテストデータと結果一致率やカバレージ率の閾値の情報に基づいて、開発者からの要求を満足するソフトウェア部品を提案する。そして、部品支援装置12におけるソースコード抽出部21では、提案されたソフトウェア部品のソースコードのうち必要なソースコードを抽出する。抽出されたソースコードは、ソフトウェア部品送信部22によって部品支援装置12へと送信される。
【選択図】図1
【解決手段】部品支援装置12では、開発者端末11から送信されたカテゴリ情報とテストデータと結果一致率やカバレージ率の閾値の情報に基づいて、開発者からの要求を満足するソフトウェア部品を提案する。そして、部品支援装置12におけるソースコード抽出部21では、提案されたソフトウェア部品のソースコードのうち必要なソースコードを抽出する。抽出されたソースコードは、ソフトウェア部品送信部22によって部品支援装置12へと送信される。
【選択図】図1
Description
本発明は、開発者が要求するソフトウェア部品を、開発者によって作成されたテストデータを基にソフトウェア部品が蓄積されている構成管理リポジトリから探し出して提案する機能を有するとともに、開発者がソフトウェア部品のソースコードを入手する際に開発者によって利用されるソースコードのみを抽出する機能を有するソフトウェア部品ソースコード生成システムに関するものである。
ソフトウェア部品の検索サイトにおいて、検索して見つけたソフトウェア部品に開発者の要求を満たす機能があったとしても、ソフトウェア部品のソースコードの中で開発者が使用しない不要なソースコードが含まれる場合がある。また、開発者が必要とするソースコードを提供するために、ソースコード間の依存関係を把握する必要がある。特許文献1に記載された技術では、ソフトウェア部品の合成可能範囲の情報から、複数のソフトウェア部品を組み合わせ新たなソフトウェア部品を開発し、ここで組み合わせたソフトウェア部品に対して開発者が必要なソースコードを選択して、不要なソースコードを省くことができるようにすることで、開発者が要求するソフトウェア部品を生成する方法が開示されている。
特開2006−031424号公報
しかしながら、特許文献1に記載された技術の場合、組み合わせたソフトウェア部品のソースコードから開発者が不要なソースコードを選択して取り除くようにしているため、開発者がソースコード中の情報を把握しておく必要がある。取り除くことで要求を満たすソフトウェア部品が開発されるとしても、組み合わせたソフトウェア部品のソースコードを開発者が必要であるか判断して除去することは容易ではない。そのため、開発者はソフトウェア部品のソースコードの中で必要なソースコードがどれであるか判断することに相当の時間を要することになる。
本発明の目的は、こうした従来技術の問題点を解決するためになされた発明であり、該当するソフトウェア部品を提供する際に不要なソースコードを自動的に取り除いくことにより開発者がソフトウェア部品のソースコードの内容を理解する必要なく要求を満たしたソフトウェア部品の必要十分なソースコードを入手することを可能とするソフトウェア部品ソースコード生成システムを提供することである。
上記目的を達成するために、本発明のソフトウェア部品ソースコード生成システムは、開発者が画面上から要求するソフトウェア部品のカテゴリ情報を入力する機能及び該カテゴリ情報を送信する機能を有する開発者端末と、ソフトウェア部品を提案する機能及びソースコードの抽出を行う機能を有する部品支援装置と、ソフトウェア部品の利用状況及び格納情報を管理する部品情報データベース、及びソフトウェア部品のソースコードや仕様書を管理する部品構成管理リポジトリが登録されている記憶装置とを備えたソフトウェア部品ソースコード生成システムであって、前記部品支援装置は、前記開発者端末から送信された情報を受信するデータ受信部と、前記開発者端末から送信された情報に基づいて開発者が要求するソフトウェア部品を検索して提案するソフトウェア部品提案部とを備えており、前記ソフトウェア部品提案部は、前記開発者端末から送信されたカテゴリ情報と要求されるソフトウェア部品のテストデータと結果一致率やカバレージ率の閾値の情報とに基づいて、開発者の要求を満足するソフトウェア部品を検索するソフトウェア部品検索部と、検索されたソフトウェア部品のソースコード、仕様情報、関連ファイルを表示するソフトウェア部品情報表示部と、前記ソフトウェア部品情報表示部で表示されている情報のソフトウェア部品を前記開発者端末に送信するソフトウェア部品送信部と、表示されたソフトウェア部品を開発者が入手する際に開発者が要求するソフトウェア部品のソースコードのうち必要なソースコードを抽出するソースコード抽出部とを備えることを特徴とする。
本発明のソフトウェア部品ソースコード生成システムによれば、次のような効果がある。
・開発者によって要求されるソフトウェア部品のソースコードから、必要とされるソースコードのみが命令単位で抽出されるとともに、抽出されたソースコードが実行可能な状態で開発者へ提供される。
・開発者によって与えられたテストデータから、開発者の必要とするソースコードが自動で提供されることでソフトウェア部品の入手が容易になり、ソフトウェア開発作業の効率化が可能となる。
・開発者によって要求されるソフトウェア部品のソースコードから、必要とされるソースコードのみが命令単位で抽出されるとともに、抽出されたソースコードが実行可能な状態で開発者へ提供される。
・開発者によって与えられたテストデータから、開発者の必要とするソースコードが自動で提供されることでソフトウェア部品の入手が容易になり、ソフトウェア開発作業の効率化が可能となる。
以下、本発明を適用したソフトウェア部品ソースコード生成システムの一実施形態について説明する。
図1に示すように、本実施形態に係るソフトウェア部品ソースコード生成システムは、複数の開発者端末11と、部品支援装置12と、部品情報データベース13及び部品構成管理リポジトリ14が登録されている記憶装置15とを備えている。
開発者端末11は、ソフトウェア部品を検索するとともに、ソフトウェア部品のダウンロードを行うために開発者によって使用される装置である。
図1に示すように、本実施形態に係るソフトウェア部品ソースコード生成システムは、複数の開発者端末11と、部品支援装置12と、部品情報データベース13及び部品構成管理リポジトリ14が登録されている記憶装置15とを備えている。
開発者端末11は、ソフトウェア部品を検索するとともに、ソフトウェア部品のダウンロードを行うために開発者によって使用される装置である。
部品支援装置12は、開発者からの要求に対して要求機能のソフトウェア部品検索や、ソフトウェア部品の提案、ソフトウェア部品の必要部分のソースコード抽出を行う機能を有している装置である。部品情報データベース13には、ソフトウェア部品に関する情報が管理されている。部品構成管理リポジトリ14には、ソフトウェア部品やソフトウェア部品の仕様書に関する情報、及びテストドライバが格納されている。
そして、開発者端末11はネットワークとしてのインターネット16を介して部品支援装置12と通信可能に接続されている。
そして、開発者端末11はネットワークとしてのインターネット16を介して部品支援装置12と通信可能に接続されている。
部品支援装置12は、開発者から送信された要求に関する情報を受信するデータ受信部17と、開発者の要求を満足するソフトウェア部品を検索して開発者に提案するソフトウェア部品提案部18とを備えている。
ソフトウェア部品提案部18には、ソフトウェア部品検索部19、ソフトウェア部品情報表示部20、ソースコード抽出部21、ソフトウェア部品送信部22が備えられている。
ソフトウェア部品提案部18には、ソフトウェア部品検索部19、ソフトウェア部品情報表示部20、ソースコード抽出部21、ソフトウェア部品送信部22が備えられている。
ソフトウェア部品検索部19は、開発者が要求するソフトウェア部品を部品構成管理リポジトリ14から検索する機能を有する。ソフトウェア部品情報表示部20は、ソフトウェア部品検索部19で検索されたソフトウェア部品を提案ソフトウェア部品であるソースコードや仕様情報として開発者端末11の画面に表示する機能を有する。ソースコード抽出部21は、開発者が提案ソフトウェア部品をダウンロードする際に開発者が必要とするソースコードのみを抽出する機能を有する。そして、ソフトウェア部品送信部22は、開発者が提案したソフトウェア部品を取得したい場合に、ソフトウェア部品のソースコード、仕様書に関する情報を開発者に送信する機能を有する。
次に、開発者端末11の画面上に表示される開発者からのソフトウェア部品提案に関する情報を入力するソフトウェア部品検索依頼画面31について説明する。
図2に示すように、ソフトウェア部品検索依頼画面31には、テキストボックス32、チェックボックス33、検索ボタン34、キャンセルボタン35、結果一致率36、カバレージ率37が表示される。
図2に示すように、ソフトウェア部品検索依頼画面31には、テキストボックス32、チェックボックス33、検索ボタン34、キャンセルボタン35、結果一致率36、カバレージ率37が表示される。
テキストボックス32の欄には、開発者が要求するソフトウェア部品のテストデータの格納場所が記述される。チェックボックス33では、開発者が要求するソフトウェア部品の分類が指定される。検索ボタン34が押下されると、検索の実行依頼が要求される。キャンセルボタン35が押下されると、ソフトウェア部品検索がキャンセルされる。結果一致率36の欄には、開発者が用意するテストデータに対するテスト結果の閾値が表示される。
カバレージ率37の欄には、開発者によって用意されたテストデータに対してテスト実行時に得られるカバレージの閾値が表示される。
結果一致率36とカバレージ率37との閾値を超えるものがソフトウェア部品として提案される。また、検索カテゴリに表示される分野は部品情報データベースに格納されている分類の項目が表示される。
結果一致率36とカバレージ率37との閾値を超えるものがソフトウェア部品として提案される。また、検索カテゴリに表示される分野は部品情報データベースに格納されている分類の項目が表示される。
次に、開発者に提案されるソフトウェア部品のソースコードや仕様情報を表示する提案部品表示画面38について説明する。
図3に示すように、提案部品表示画面38には、ファイルリスト39、提案部品仕様情報40、ソースビュー41、検索結果42、カバレージ率43、結果一致率44、次へボタン45、前へボタン46、ダウンロードボタン47、キャンセルボタン48が表示される。
図3に示すように、提案部品表示画面38には、ファイルリスト39、提案部品仕様情報40、ソースビュー41、検索結果42、カバレージ率43、結果一致率44、次へボタン45、前へボタン46、ダウンロードボタン47、キャンセルボタン48が表示される。
ファイルリスト39の欄には、提案されるソフトウェア部品と依存関係のあるファイルが表示される。提案部品仕様情報40の欄には、部品構成管理リポジトリ14に格納されている提案するソフトウェア部品の仕様書の内容が表示される。ソースビュー41の欄には、提案するソフトウェア部品のソースコードが表示される。ソースビュー41の欄に表示されるソースコードは提案するソフトウェア部品の関数(またはメソッド)が表示される。検索結果42の欄には、提案ソフトウェア部品数が表示される。カバレージ率43の欄には、提案ソフトウェア部品のソースコードとテストデータを用いてテストしたときのカバレージの結果とが表示される。
結果一致率44の欄には、提案ソフトウェア部品のソースコードとテストデータを用いてテストしたときのテストデータ記載の期待値とどのくらいの割合で一致していたのかが表示され。次へボタン45が押下されると、ソフトウェア部品が検索された結果、複数件該当した場合、一つ後の候補のソフトウェア部品情報へと遷移する。前へボタン46が押下されると、一つ前の候補のソフトウェア部品情報へと遷移する。ダウンロードボタン47は、開発者が提案したソフトウェア部品を取得したい場合であって、ソフトウェア部品送信の要求を依頼する際に押下されるボタンである。キャンセルボタン48は、提案したソフトウェア部品の情報画面を閉じる場合であって、終了依頼をする際に押下されるボタンである。
次に、部品支援装置12における処理の概要について説明する。
図4に示すように、まず、開発者端末11から画面に入力されたカテゴリ情報やテストデータが送信されると、当該カテゴリ情報やテストデータは部品支援装置12のデータ受信部17によって受信される(ステップS401)。次に、部品支援装置12によって、受信されたデータを基に部品構成管理リポジトリ14に格納されているソフトウェア部品群から要求を満足するソフトウェア部品が検索される(ステップS402)。
図4に示すように、まず、開発者端末11から画面に入力されたカテゴリ情報やテストデータが送信されると、当該カテゴリ情報やテストデータは部品支援装置12のデータ受信部17によって受信される(ステップS401)。次に、部品支援装置12によって、受信されたデータを基に部品構成管理リポジトリ14に格納されているソフトウェア部品群から要求を満足するソフトウェア部品が検索される(ステップS402)。
次に、要求を満足したソフトウェア部品のソースコード及び仕様情報が提案部品表示画面38に表示されることで、開発者にソフトウェア部品が提案される(ステップS403)。次に、提案部品表示画面38で提案されたソフトウェア部品を開発者がダウンロードする際に、該当するソフトウェア部品のソースコードのうち開発者が必要とするソースコードが抽出される(ステップS404)。そして、抽出されたソフトウェア部品のソースコードが開発者端末11に送信される (ステップS405)。
次に、ソフトウェア部品検索部19の処理の流れについて説明する。
図5に示すように、まず、カテゴリ情報、テストデータ、及び結果一致率やカバレージ率の閾値情報がデータ受信部17によって受信される(ステップS501)。次に、カテゴリをキーとして、部品情報データベース13に登録されているソフトウェア部品のソフトウェア部品ID、ソースコード格納情報が取得される(ステップS502)。次に、ソースコード格納情報から部品構成管理リポジトリ14に格納されているソフトウェア部品のソースコードが取得される(ステップS503)。
図5に示すように、まず、カテゴリ情報、テストデータ、及び結果一致率やカバレージ率の閾値情報がデータ受信部17によって受信される(ステップS501)。次に、カテゴリをキーとして、部品情報データベース13に登録されているソフトウェア部品のソフトウェア部品ID、ソースコード格納情報が取得される(ステップS502)。次に、ソースコード格納情報から部品構成管理リポジトリ14に格納されているソフトウェア部品のソースコードが取得される(ステップS503)。
取得されたソースコード及びテストデータからテストドライバが作成される(ステップS505)。次に、作成されたテストドライバが実行されて、テストの実行結果が集計される(ステップS506)。ステップS506では、カバレージと実行結果とテストデータに記載の期待値通りのものが得られた割合(以下、結果一致率とする)が集計される。集計された結果、カバレージや結果一致率がカバレージに対する閾値と結果一致率に対する閾値を超えているか否かが判断される(ステップS507)。閾値を超えていると判断された場合には(ステップS507)、開発者に提案するソフトウェア部品としてリストに追加される(ステップS508)。また、ステップS507で取得されたカバレージの結果が部品情報データベース13に格納される(ステップS509)。
一方、ステップS507において、閾値を超えていないと判断された場合にはステップS508、S509の処理は実行されない。ステップS505からステップS509までの処理は、ソフトウェア部品構成格納リポジトリから取得したソフトウェア部品の関数(メソッド等)の数だけ繰り返し実行される(ステップS504)。そして、ステップS504で作成されたソフトウェア部品提案リストはソフトウェア部品情報表示部20に送信される(ステップ5610)。作成されたソフトウェア部品提案リストには、ソフトウェア部品ID、ファイル名、関数名、関数開始行、関数終了行、カバレージの結果、結果一致率が記述される。関数開始行や関数終了行はテストドライバ作成時に、ソースコードから抽出される。
次に、ソフトウェア部品情報表示部20の処理の流れについて説明する。
図6に示すように、ソフトウェア部品検索部19から提案ソフトウェア部品のリストが取得される(ステップS601)。次に、取得されたリストに記載されているソフトウェア部品IDをキーとして、部品情報データベース13から提案ソフトウェア部品が依存するファイルとソフトウェア部品の仕様格納情報とが取得される(ステップS602)。次に、仕様格納情報を基に、部品構成管理リポジトリ14からソフトウェア部品の仕様書が取得される(ステップS603)。
図6に示すように、ソフトウェア部品検索部19から提案ソフトウェア部品のリストが取得される(ステップS601)。次に、取得されたリストに記載されているソフトウェア部品IDをキーとして、部品情報データベース13から提案ソフトウェア部品が依存するファイルとソフトウェア部品の仕様格納情報とが取得される(ステップS602)。次に、仕様格納情報を基に、部品構成管理リポジトリ14からソフトウェア部品の仕様書が取得される(ステップS603)。
次に、提案ソフトウェア部品が依存するファイル名、仕様書の内容とソフトウェア部品のソースコードとが提案部品表示画面38のファイルリスト39、提案部品仕様情報40、ソースビュー41に出力される(ステップS604)。提案部品表示画面38に出力される際に、リストに記述された関数開始行から関数終了行のソースコードがソースビュー41に、また関数の仕様情報が提案部品仕様情報40に表示されるようにする。
次に、ソフトウェア部品送信部22の処理の流れについて説明する。
図7に示すように、開発者によってダウンロードボタン48が押下されたときに、画面上に表示されているソフトウェア部品のソフトウェア部品IDが取得される(ステップS701)。次に、取得されたソフトウェア部品IDをキーとして、部品情報データベース13から該当するソフトウェア部品のソフトウェア部品と依存関係のあるファイルが取得される(ステップS702)。
図7に示すように、開発者によってダウンロードボタン48が押下されたときに、画面上に表示されているソフトウェア部品のソフトウェア部品IDが取得される(ステップS701)。次に、取得されたソフトウェア部品IDをキーとして、部品情報データベース13から該当するソフトウェア部品のソフトウェア部品と依存関係のあるファイルが取得される(ステップS702)。
次に、取得された格納情報を基に、部品構成管理リポジトリ14からソフトウェア部品のソースコード及び仕様書が取得される(ステップS703)。次に、部品構成管理リポジトリ14から取得されたファイルに対して、開発者が必要とするソフトウェア部品のソースコードのみが抽出される(ステップS804)。そして、開発者が必要とするソフトウェア部品のファイル一式は開発者端末11へと送信される(ステップS705)。
次に、ソフトウェア部品検索時に取得したカバレージの情報から開発者が必要とするソースコードを抽出する流れについて説明する。
図8に示すように、ソフトウェア部品IDに基づいて、対象ソフトウェア部品のカバレージ情報が部品情報データベース13から取得される(ステップS801)。また、カバレージ情報に基づいて依存関係のあるクラスが把握される。次に、部品構成管理リポジトリ14から対象ソフトウェア部品のソースコードが取得される(ステップS802)。次に、ステップS802で取得されたソースコードからインポート文、パッケージ文、クラス名の宣言が抽出される(ステップS804)。
図8に示すように、ソフトウェア部品IDに基づいて、対象ソフトウェア部品のカバレージ情報が部品情報データベース13から取得される(ステップS801)。また、カバレージ情報に基づいて依存関係のあるクラスが把握される。次に、部品構成管理リポジトリ14から対象ソフトウェア部品のソースコードが取得される(ステップS802)。次に、ステップS802で取得されたソースコードからインポート文、パッケージ文、クラス名の宣言が抽出される(ステップS804)。
次に、ステップS804で宣言されたクラス内でカバレージが取得されたメソッドについて抽出される(ステップS806)。次に、ステップS806で追加されたメソッド内でカバレージを取得することができなかったソースコードの対象行番号、開始列番号から抽出処理を行う位置情報が取得される(ステップS808)。次に、ステップS808で取得された位置情報から、開始列番号から終了列番号の文字数分の命令処理が半角スペースに置き換えられる (ステップS809)。
抽出されたソースコードから、不要な処理が取り除かれる(ステップS810)。ステップS804からステップS809までの処理は、カバレージが取得されたクラス数の数だけ繰り返し実行される(ステップS803)。また、ステップS806からステップS809までの処理は、カバレージが取得されたメソッド数のだけ繰り返し実行される(ステップS805)。そして、ステップS808及びステップS809の処理は、追加されたメソッド内の除外対象の命令数の数だけ繰り返し実行される(ステップS807)。
次に、ソフトウェア部品のソースコードを抽出した中で不要な処理を取り除く作業の中でif文の命令除去処理の流れについて説明する。
図9に示すように、抽出されたソースコードの中でif文、else-if文、else節が宣言されている行番号がネストの深い順に抽出される。抽出されたif文もしくはelse-if文、else節の開始行番号、開始列番号、開始括弧、閉じ括弧の行番号、列番号が取得される。そして、if文もしくはelse-if文、else節の開始行番号、開始列番号が現在の処理行番号、列番号とされる(ステップS903)。次に、if文の括弧内で命令処理が記述されているか否かチェックされる(ステップS904)。
図9に示すように、抽出されたソースコードの中でif文、else-if文、else節が宣言されている行番号がネストの深い順に抽出される。抽出されたif文もしくはelse-if文、else節の開始行番号、開始列番号、開始括弧、閉じ括弧の行番号、列番号が取得される。そして、if文もしくはelse-if文、else節の開始行番号、開始列番号が現在の処理行番号、列番号とされる(ステップS903)。次に、if文の括弧内で命令処理が記述されているか否かチェックされる(ステップS904)。
ステップS904において、命令処理が記述されていた場合、if文の開始位置から閉じ括弧までの文字が半角スペースに置き換えられる(ステップS905)。次に、ステップS905において処理された内容は、if文の置換処理であったか否かがチェックされる(ステップS906)。if文の置換処理であった場合、このif文にelse-if文が含まれているか否かがチェックされる(ステップS907)。else-if文が含まれていた場合には、else-if文に書かれている文字列「else」が半角スペースに置き換えられ(ステップS908)。
ステップS908では、例えば文字列「else if {log("Error")}」となっていた場合、「 if {log("Error")}」というように文字列「else」が半角スペースに置き換えられる。ステップS907において、else-if文が含まれていなかった場合には、else節が含まれているか否かがチェックされる(ステップS909)。else節が含まれていた場合には、else節が半角スペースに置き換えられる(ステップS910)。ステップS910では、例えば文字列「else {k++;)}」となっていた場合、「 k++; 」というようにelse節が半角スペースに置き換えられる。ステップS903からステップS910までの処理は、if文の分岐の数だけ繰り返し実行される(ステップS902)。
if文のソースコードを整理するアルゴリズムに沿って抽出されたソースコードを整理をしたときの、ソースコード整理前とソースコード整理後との結果例を図10に示す。ソースコード整理前でelse節の中身が空であったときに、else節の開始括弧から終了括弧まで内容を除去する処理が実行される。図9、図10では条件分岐を例にしたが、他にもwhile文やfor文、switch文などの処理に対してもソースコードの整理が行われる。
次に、ソフトウェア部品情報が格納されるソフトウェア部品情報テーブル51の構造について説明する。
図11に示すように、ソフトウェア部品情報テーブル51は、部品ID列52、分類列53、概要列54、部品格納場所55、仕様書格納情報56で構成される。
部品ID列52には、ソフトウェア部品毎に一意のIDが記録される。当該部品ID列52は主キーであり、ソフトウェア部品を登録する際に、一意な値が自動的に発番される。分類列53は、ソフトウェア部品がどの分野のソフトウェア部品であるのかについての情報が記録される。
図11に示すように、ソフトウェア部品情報テーブル51は、部品ID列52、分類列53、概要列54、部品格納場所55、仕様書格納情報56で構成される。
部品ID列52には、ソフトウェア部品毎に一意のIDが記録される。当該部品ID列52は主キーであり、ソフトウェア部品を登録する際に、一意な値が自動的に発番される。分類列53は、ソフトウェア部品がどの分野のソフトウェア部品であるのかについての情報が記録される。
概要列54には、ソフトウェア部品の概要が記録される。部品格納場所55には、部品構成管理リポジトリ14内におけるソフトウェア部品のソースコードの格納先が記録される。仕様書格納情報56には、部品構成管理リポジトリ14におけるソフトウェア部品の仕様書の格納先が記録される。
次に、ソフトウェア部品検索時に取得されたソフトウェア部品のカバレージ情報を格納するカバレージ情報格納テーブル57のテーブル構造について説明する。
図12に示すように、カバレージ情報格納テーブル57は、ID列58、メソッド名59、依存部品ID60、依存クラス名61、依存メソッド名62、パッケージ名63、開始行番号64、そして終了行番号65で構成されている。
図12に示すように、カバレージ情報格納テーブル57は、ID列58、メソッド名59、依存部品ID60、依存クラス名61、依存メソッド名62、パッケージ名63、開始行番号64、そして終了行番号65で構成されている。
ID列58には、検索対象となるソフトウェア部品のID列が記録される。メソッド名59には、開発者の要求するソフトウェア部品のメソッド名が記録される。依存部品ID60には、メソッド名59と依存関係のあるソフトウェア部品のIDが記録される。依存クラス名61には、メソッド名59と依存関係のある名称が記録される。依存メソッド名62には、依存関係があるクラス内のどのメソッドと依存関係があるか表す名称が記録される。
パッケージ名63には、依存クラス名61のパッケージ構成を表す名称が記録される。開始行番号64には、依存メソッド名62のソースコード中の開始行が記録される。そして、終了行番号65には、依存メソッド名62のソースコード中の終了行が記録される。なお、ソフトウェア部品ID58、メソッド名59、依存クラス名61、依存メソッド名62、パッケージ名63で主キーを表す。
次に、ソフトウェア部品検索時にカバレージを取得しなかったソースコードの情報を格納するカバレージ未取得情報テーブル66のテーブル構造について説明する。
図14に示すように、カバレージ未取得情報テーブル66は、部品ID列67、メソッド名68、対象クラス名69、対象メソッド名70、パッケージ名71、対象行番号72、開始列番号73、終了列番号74で構成されている。
図14に示すように、カバレージ未取得情報テーブル66は、部品ID列67、メソッド名68、対象クラス名69、対象メソッド名70、パッケージ名71、対象行番号72、開始列番号73、終了列番号74で構成されている。
部品ID列67には、検索対象となるソフトウェア部品のIDが記録される。メソッド名68には、開発者の要求するソフトウェア部品のメソッド名が記録される。対象クラス名69には、カバレージ情報格納テーブル57で登録された対象メソッドの中でカバレージが未取得のソースコードが存在するクラス名が記録される。対象メソッド名70には、カバレージ情報格納テーブル57で登録された対象メソッドの中でカバレージが未取得のソースコードが存在するメソッドが記録される。
パッケージ名71には、対象クラス名69のパッケージ構成が記録される。対象行番号72には、対象メソッド名70の中でカバレージが未取得であるソースコードの行が記録される。開始列番号73には、対象メソッド名70の中でカバレージが未取得であるソースコードの開始列番号が記録される。そして、終了列番号74には、対象メソッド名70の中でカバレージが未取得のソースコードの終了列番号が記録される。なお、部品ID67、メソッド名68、対象クラス名69、対象メソッド名70、パッケージ名71、対象行番号72、開始列番号73で主キーを表す。
以上のように、本実施形態におけるソフトウェア部品ソースコード生成システムによれば、次のような効果がある。
・開発者が要求するソフトウェア部品のソースコードから必要とするソースコードのみを命令単位で抽出し、抽出したソースコードを実行可能な状態で開発者へ提供することができる。
・開発者がシステムにテストデータを与え、自動で開発者が必要とするソースコードを提供することでソフトウェア部品の入手が容易になる。
・開発者が要求するソフトウェア部品のソースコードから必要とするソースコードのみを命令単位で抽出し、抽出したソースコードを実行可能な状態で開発者へ提供することができる。
・開発者がシステムにテストデータを与え、自動で開発者が必要とするソースコードを提供することでソフトウェア部品の入手が容易になる。
11…開発者端末、12…部品支援装置、13…部品情報データベース、14…部品構成管理リポジトリ、15…記憶装置、17…データ受信部と18…ソフトウェア部品提案部、19…ソフトウェア部品検索部、20…ソフトウェア部品情報表示部、21…ソースコード抽出部、22…ソフトウェア部品送信部。
Claims (3)
- 開発者が画面上から要求するソフトウェア部品のカテゴリ情報を入力する機能及び該カテゴリ情報を送信する機能を有する開発者端末と、
ソフトウェア部品を提案する機能及びソースコードの抽出を行う機能を有する部品支援装置と、
ソフトウェア部品の利用状況及び格納情報を管理する部品情報データベース、及びソフトウェア部品のソースコードや仕様書を管理する部品構成管理リポジトリが登録されている記憶装置と
を備えたソフトウェア部品ソースコード生成システムであって、
前記部品支援装置は、
前記開発者端末から送信された情報を受信するデータ受信部と、
前記開発者端末から送信された情報に基づいて開発者が要求するソフトウェア部品を検索して提案するソフトウェア部品提案部と
を備えており、
前記ソフトウェア部品提案部は、
前記開発者端末から送信されたカテゴリ情報と要求されるソフトウェア部品のテストデータと結果一致率やカバレージ率の閾値の情報とに基づいて、開発者の要求を満足するソフトウェア部品を検索するソフトウェア部品検索部と、
検索されたソフトウェア部品のソースコード、仕様情報、関連ファイルを表示するソフトウェア部品情報表示部と、
前記ソフトウェア部品情報表示部で表示されている情報のソフトウェア部品を前記開発者端末に送信するソフトウェア部品送信部と、
表示されたソフトウェア部品を開発者が入手する際に開発者が要求するソフトウェア部品のソースコードのうち必要なソースコードを抽出するソースコード抽出部と
を備えることを特徴とするソフトウェア部品ソースコード生成システム。 - 前記部品支援装置は、前記開発者端末から送信されるソフトウェア部品のテストデータに基づいて前記部品構成管理リポジトリから開発者が要求するソフトウェア部品と類似しているソフトウェア部品を検索して提供する際に、登録されたソフトウェア部品のソースコードから開発者が必要とするソースコードを抽出して実行可能な状態でソースコードを提供する機能を有することを特徴とする請求項1に記載のソフトウェア部品ソースコード生成システム。
- 前期ソースコード抽出部は、開発者の必要とするソフトウェア部品のソースコードを抽出する際に、テストデータと前記部品構成管理リポジトリに格納されているソフトウェア部品のソースコードとを用いてテストを実行し、そのとき得られるカバレージの結果からテスト時に処理が行われたソースコードを開発者が必要なソースコードと決定し、開発者に提供するソースコードとして抽出することを特徴とする請求項1又は請求項2に記載のソフトウェア部品ソースコード生成システム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007082379A JP2008242811A (ja) | 2007-03-27 | 2007-03-27 | ソフトウェア部品ソースコード生成システム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007082379A JP2008242811A (ja) | 2007-03-27 | 2007-03-27 | ソフトウェア部品ソースコード生成システム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2008242811A true JP2008242811A (ja) | 2008-10-09 |
Family
ID=39914079
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007082379A Pending JP2008242811A (ja) | 2007-03-27 | 2007-03-27 | ソフトウェア部品ソースコード生成システム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2008242811A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090259987A1 (en) * | 2008-04-11 | 2009-10-15 | International Business Machines Corporation | Method, system and computer program product for recommending components based on common usage patterns |
| JP2017522639A (ja) * | 2014-06-02 | 2017-08-10 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 開発システムにおける意味論的なコンテンツアクセス |
| JP2019215621A (ja) * | 2018-06-11 | 2019-12-19 | 株式会社東芝 | コンポーネント管理装置、コンポーネント管理方法およびプログラム |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02236629A (ja) * | 1989-03-10 | 1990-09-19 | Hitachi Ltd | ソフトウエア管理システム |
| JPH07210424A (ja) * | 1994-01-14 | 1995-08-11 | Toshiba Corp | ソフトウェアテスト支援システム |
| JPH08234975A (ja) * | 1995-02-28 | 1996-09-13 | Fujitsu Ltd | プログラム生成装置および方法 |
| JP2000276338A (ja) * | 1999-03-19 | 2000-10-06 | Hitachi Tohoku Software Ltd | 視覚プログラミング方法およびシステムならびに視覚プログラミングのための記録媒体 |
| JP2006146669A (ja) * | 2004-11-22 | 2006-06-08 | Ntt Data Corp | カバレッジ測定システム及びカバレッジ測定方法並びにそのプログラム |
-
2007
- 2007-03-27 JP JP2007082379A patent/JP2008242811A/ja active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02236629A (ja) * | 1989-03-10 | 1990-09-19 | Hitachi Ltd | ソフトウエア管理システム |
| JPH07210424A (ja) * | 1994-01-14 | 1995-08-11 | Toshiba Corp | ソフトウェアテスト支援システム |
| JPH08234975A (ja) * | 1995-02-28 | 1996-09-13 | Fujitsu Ltd | プログラム生成装置および方法 |
| JP2000276338A (ja) * | 1999-03-19 | 2000-10-06 | Hitachi Tohoku Software Ltd | 視覚プログラミング方法およびシステムならびに視覚プログラミングのための記録媒体 |
| JP2006146669A (ja) * | 2004-11-22 | 2006-06-08 | Ntt Data Corp | カバレッジ測定システム及びカバレッジ測定方法並びにそのプログラム |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090259987A1 (en) * | 2008-04-11 | 2009-10-15 | International Business Machines Corporation | Method, system and computer program product for recommending components based on common usage patterns |
| JP2017522639A (ja) * | 2014-06-02 | 2017-08-10 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 開発システムにおける意味論的なコンテンツアクセス |
| JP2019215621A (ja) * | 2018-06-11 | 2019-12-19 | 株式会社東芝 | コンポーネント管理装置、コンポーネント管理方法およびプログラム |
| US11423088B2 (en) | 2018-06-11 | 2022-08-23 | Kabushiki Kaisha Toshiba | Component management device, component management method, and computer program product |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4381012B2 (ja) | 万物識別子を用いたデータ検索システムおよびデータ検索方法 | |
| US9645979B2 (en) | Device, method and program for generating accurate corpus data for presentation target for searching | |
| TWI459799B (zh) | 輔助電視搜尋之系統與方法 | |
| JP5769327B2 (ja) | データベース構築装置、商標侵害検知装置、データベース構築方法、およびプログラム | |
| US20170371969A1 (en) | Identifying equivalent links on a page | |
| JP2014521159A (ja) | 文書の圧縮、解凍及び照会のための方法及び装置 | |
| KR20170044408A (ko) | 프로젝트의 추천 시스템 및 방법 | |
| JP2008242811A (ja) | ソフトウェア部品ソースコード生成システム | |
| US9990444B2 (en) | Apparatus and method for supporting visualization of connection relationship | |
| CN112328780A (zh) | 自然语言转换处理方法、装置、电子设备及存储介质 | |
| JP4860416B2 (ja) | 文書検索装置、文書検索方法および文書検索プログラム | |
| JP5587744B2 (ja) | プログラムコンポーネント検索方法、プログラムコンポーネント検索システムおよびコンポーネント検索プログラム | |
| CN119621587A (zh) | 生成方法、测试方法、电子设备、存储介质及程序产品 | |
| JP5600826B1 (ja) | 非構造化データ処理システム、非構造化データ処理方法およびプログラム | |
| JPH11143885A (ja) | 情報検索方法及び装置及び情報検索プログラムを格納した記憶媒体及び情報発信方法及び装置及び情報発信プログラムを格納した記憶媒体 | |
| JP5380874B2 (ja) | 情報検索方法、プログラム及び装置 | |
| JP2008129692A (ja) | 回答支援装置、回答支援システム、回答支援方法および回答支援プログラム | |
| JP2009211599A (ja) | マッピング定義作成システムおよびマッピング定義作成プログラム | |
| JP6334803B1 (ja) | 臨床検査結果編集装置 | |
| KR101945234B1 (ko) | 마지막 알파벳 제거 알고리즘을 이용한 반도체 부품 검색 방법 | |
| JP4846483B2 (ja) | ソフトウェア部品再利用支援システム | |
| JP2005056223A (ja) | テキストデータ検索システム、その方法及びそのプログラム | |
| US7149758B2 (en) | Data processing apparatus, data processing method, and data processing program | |
| JP5652519B2 (ja) | 情報検索方法、プログラム及び装置 | |
| JP6083819B2 (ja) | 入力支援システム、入力支援方法および入力支援プログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090701 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111130 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120417 |