(57)【要約】  汎用のソフトウェアライブラリ２ａを構成するプログラム要素のうち、機能の実行の際に使用されたプログラム要素を抽出し、抽出されたプログラム要素のエラーを検証し、エラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、最適化が行われたプログラムのプログラム要素を用いて、実行された機能に特化したソフトウェアライブラリ２ｂを再構築する。
2011055417.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能に対応する汎用のソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能を実行する機能実行部と、
前記汎用のソフトウェアライブラリを構成するプログラム要素のうち、前記機能実行部による前記機能の実行で使用されたプログラム要素を抽出するプログラム抽出部と、
前記プログラム抽出部に抽出されたプログラム要素のエラーを検証するプログラム検証部と、
前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行うプログラム最適化部と、
前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記機能実行部に実行された前記機能に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えたソフトウェアライブラリ再構築装置。
【請求項２】
前記機能実行部は、前記機能に特化したソフトウェアライブラリを用いて、指示された実行条件で前記機能を実行し、
前記プログラム抽出部は、前記機能に特化したソフトウェアライブラリを構成するプログラム要素のうち、前記機能実行部による前記機能の実行で使用されたプログラム要素を抽出し、
前記プログラム検証部は、前記プログラム抽出部に抽出されたプログラム要素のエラーを検証し、
前記プログラム最適化部は、前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、
前記プログラム再構築部は、前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記実行条件で前記機能が限定されたソフトウェアライブラリを構築することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項３】
前記機能実行部が前記機能を実行する度に、利用者に指示された当該機能の実行条件を取得し、取得した前記実行条件を統計処理して当該利用者の利用特性に応じた当該機能の実行条件を求める利用特性判断部を備え、
前記プログラム最適化部は、前記利用特性判断部に求められた前記実行条件を用いて、前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、
前記プログラム再構築部は、前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記利用特性判断部に求められた前記実行条件で前記機能が限定されたソフトウェアライブラリを構築することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項４】
前記機能実行部、前記プログラム検証部、前記プログラム最適化部及び前記プログラム再構築部は、ウィザード形式で対話的に自身の処理に必要な情報を利用者に問い合わせ、前記利用者から入力された前記自身の処理に必要な情報を用いて、前記自身の処理を実行することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項５】
前記機能実行部、前記プログラム検証部、前記プログラム最適化部及び前記プログラム再構築部は、予め設定された自身の処理に必要な情報を用いて、前記自身の処理を自動的に実行することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項６】
機能実行部と、プログラム抽出部と、プログラム検証部と、プログラム最適化部と、プログラム再構築部とを備えたソフトウェアライブラリ再構築装置のソフトウェアライブラリ再構築方法において、
前記機能実行部が、複数の機能に対応する汎用のソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能を実行するステップと、
前記プログラム抽出部が、前記汎用のソフトウェアライブラリを構成するプログラム要素のうち、前記機能実行部による前記機能の実行で使用されたプログラム要素を抽出するステップと、
前記プログラム検証部が、前記プログラム抽出部に抽出されたプログラム要素のエラーを検証するステップと、
前記プログラム最適化部が、前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行うステップと、
前記プログラム再構築部が、前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記機能実行部に実行された前記機能に特化したソフトウェアライブラリを構築するステップとを備えたことを特徴とするソフトウェアライブラリ再構築方法。
【請求項７】
出発地点から目的地点までの経路の探索し誘導案内を行うナビゲーション機能を有したナビゲーション装置において、
前記ナビゲーション機能に関する複数の機能に対応する汎用のソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能を実行する機能実行部と、
前記汎用のソフトウェアライブラリを構成するプログラム要素のうち、前記機能実行部による前記機能の実行で使用されたプログラム要素を抽出するプログラム抽出部と、
前記プログラム抽出部に抽出されたプログラム要素のエラーを検証するプログラム検証部と、
前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行うプログラム最適化部と、
前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記機能実行部に実行された前記機能に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えたことを特徴とするナビゲーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、既存のソフトウェアライブラリからプログラム要素を抽出して所望の機能に特化したソフトウェアライブラリを再構築するソフトウェアライブラリ再構築装置及び方法並びにこれを用いたナビゲーション装置に関するものである。
【背景技術】
【０００２】
特許文献１には、階層状カプセル化の概念を利用して、開発者が作成したオブジェクト・コンテナの階層構造における外部依存性を自動的に分離することで、オブジェクト・コンテナ及びこれらが他のコンテナ環境に含むオブジェクト間の関連を疎にして再利用性を高めることができるシステムが開示されている。
また、特許文献２に記載されるシステムでは、複数のシステムの制御に利用される複数の制御バンドルから、共通して利用される機能部を抽出し、この共通して利用される機能部が重複しないように、複数の制御バンドルを１つの新たな制御バンドルに再構成する。【０００３】
特許文献１の技術を適用すれば、汎用のソフトウェアライブラリのプログラム要素間の関連を疎にしてプログラム要素を自由に組み合わせることができる。
しかしながら、開発者が、所望の機能を実現するプログラム要素を抽出して、これらを組み合わせる必要がある。
従って、ソフトウェアライブラリを再構築する操作が複雑である上、個々のプログラム要素に関する知識も必要であり、ソフトウェアライブラリを利用する様々な機器への適用が困難で汎用性がない。【０００４】
また、特許文献２の技術を用いれば、複数のソフトウェアライブラリから共通する機能のプログラム要素を自動的に抽出することは可能であるが、利用者が所望する機能のプログラム要素を抽出することはできない。
このため、例えば、実行速度やメモリ利用効率を考慮しながら、所望の機能に特化したソフトウェアライブラリを再構築できない。【０００５】
この発明は、上記の課題を解決するためになされたもので、汎用のソフトウェアライブラリからプログラム要素を自動的に抽出して所望の機能に特化したソフトウェアライブラリを再構築することができるソフトウェアライブラリ再構築装置及び方法並びにこれを用いたナビゲーション装置を得ることを目的とする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２０００−５０５９１９号公報
【特許文献２】特開２００４−２２７２４０号公報
【発明の概要】
【０００７】
この発明に係るソフトウェアライブラリ再構築装置は、複数の機能に対応する汎用のソフトウェアライブラリを用いて、複数の機能のうち、指示された機能を実行する機能実行部と、汎用のソフトウェアライブラリを構成するプログラム要素のうち、機能実行部による機能の実行で使用されたプログラム要素を抽出するプログラム抽出部と、プログラム抽出部に抽出されたプログラム要素のエラーを検証するプログラム検証部と、プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行うプログラム最適化部と、プログラム最適化部によって最適化が行われたプログラムのプログラム要素を用いて、機能実行部に実行された機能に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えるものである。
【０００８】
この発明によれば、機能実行部が、複数の機能に対応する汎用のソフトウェアライブラリを用いて、複数の機能のうち、指示された機能を実行し、プログラム抽出部が、汎用のソフトウェアライブラリを構成するプログラム要素のうち、上記機能の実行で使用されたプログラム要素を抽出し、プログラム検証部が、プログラム抽出部に抽出されたプログラム要素のエラーを検証し、プログラム最適化部が、プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、プログラム再構築部が、プログラム最適化部によって最適化が行われたプログラムのプログラム要素を用いて、機能実行部に実行された機能に特化したソフトウェアライブラリを構築する。
このように構成することにより、汎用のソフトウェアライブラリからプログラム要素を自動的に抽出して所望の機能に特化したソフトウェアライブラリを再構築することから、実行速度やメモリ利用効率の向上を図ることができる。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１によるソフトウェアライブラリ再構築装置の構成を示すブロック図である。
【図２】汎用ソフトウェアライブラリの一例を示す図である。
【図３】この発明によるソフトウェアライブラリ再構築装置が適用される情報処理装置のハードウェア構成を示すブロック図である。
【図４】実施の形態１のソフトウェアライブラリ再構築装置による動作の流れを示すフローチャートである。
【図５】図２の汎用ソフトウェアライブラリで使用されたプログラム要素を示す図である。
【図６】機能特化ソフトウェアライブラリの一例を示す図である。
【図７】ソフトウェア開発環境におけるソフトウェアライブラリ再構築処理の流れを示すフローチャートである。
【図８】機能選択用のウィザード画面の一例を示す図である。
【図９】実行条件設定用のウィザード画面の一例を示す図である。
【図１０】条件設定用のウィザード画面の一例を示す図である。
【図１１】実行結果確認用のウィザード画面の一例を示す図である。
【図１２】失敗原因提示用のウィザード画面の一例を示す図である。
【図１３】抽出したプログラム要素の表示画面（例１）を示す図である。
【図１４】抽出したプログラム要素の表示画面（例２）を示す図である。
【図１５】抽出したプログラム要素の表示画面（例３）を示す図である。
【図１６】ソースコードエラー確認用のウィザード画面（エラーが無い場合）を示す図である。
【図１７】ソースコードエラー確認用のウィザード画面（エラーがある場合）を示す図である。
【図１８】この発明の実施の形態２によるナビゲーション装置の構成を示すブロック図である。
【図１９】この発明の実施の形態３によるナビゲーション装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態１．
図１は、この発明の実施の形態１によるソフトウェアライブラリ再構築装置の構成を示すブロック図である。図１において、実施の形態１によるソフトウェアライブラリ再構築装置１は、汎用ソフトウェアライブラリ２ａから抽出したプログラム要素を用いて所望の機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する装置であり、機能実行部３及びソフトウェアライブラリ再構築機能部４を備える。なお、プログラム要素とは、そのプログラムで使用される関数及びその属性、これらを分類するクラス、パッケージ、メソッド等である。
【００１１】
汎用ソフトウェアライブラリ２ａには、所定の機能を利用する様々なアプリケーションソフトウェアに対応して、上記所定の機能を実現する様々なプログラム要素が登録されているソフトウェアライブラリ２ａである。
例えば、図２に示す汎用ソフトウェアライブラリ２ａは、ナビゲーション処理におけるルート探索機能を実現する汎用ソフトウェアライブラリである。図２のように、ルート探索用に関するオブジェクトは、ルート探索における様々な機能を実現する関連オブジェクト（プログラム要素）からなる階層構造を有している。
ここで、ある種類のナビゲーションソフトウェアでは、ルート探索機能を実行する際、例えば、関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−１，１−３，４−２が実行される。
一方、別の種類のナビゲーションソフトウェアでは、ルート探索機能を実行する際に、上記と別の関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−２，４−１，４−３が実行されるものとする。
このように、汎用ソフトウェアライブラリ２ａには、複数種類のアプリケーションソフトウェアに対する汎用性を持たせるために、ある種類のアプリケーションソフトウェアで実行されるプログラム要素群に加えて、他の種類のアプリケーションソフトウェアで実行されるプログラム要素についても登録されている。
【００１２】
また、汎用ソフトウェアライブラリ２ａでは、所定の機能を実現する関連オブジェクト（プログラム要素）を各階層で選び出して実行する必要がある。
例えば、図２に示すルート探索機能を実現するため、関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−１，１−３，４−２を実行する場合、汎用ソフトウェアライブラリ２ａの第１の階層で関連オブジェクト１，４を選び出し、第２の階層で関連オブジェクト１−２，４−１，４−３が選び出す処理が行われる。
このため、汎用ソフトウェアライブラリ２ａは、所定の機能を実現する様々なプログラム要素が格納される分、メモリの利用効率が悪く、さらに各階層で所望のプログラム要素を選び出す処理が必要であるため、実行速度の向上に限界がある。
【００１３】
機能特化ソフトウェアライブラリ２ｂは、所定の機能に特化したプログラム要素のみに再構築されたソフトウェアライブラリである。例えば、ソフトウェアライブラリ再構築装置１を適用したナビゲーション装置が、ルート探索において、図２に示した関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−１，１−３，４−２を実行する場合、機能特化ソフトウェアライブラリ２ｂは、関連オブジェクト１，４，１−１，１−３，４−２のみに再構築される。
【００１４】
機能実行部３は、ソフトウェアライブラリ再構築装置１を適用した情報処理装置にて、所定の機能を利用するアプリケーションソフトウェアが実行されると、汎用ソフトウェアライブラリ２ａに格納されたプログラム要素のうち、上記所定の機能を実現するプログラム要素を実行する、又は、ソフトウェアライブラリ再構築機能部４により再構築された機能特化ソフトウェアライブラリ２ｂのプログラム要素を実行する構成部である。例えば、ナビゲーションソフトウェアにおける各機能を実現するプログラムモジュールを上記情報処理装置が実行することにより具現化される。
【００１５】
ソフトウェアライブラリ再構築機能部４は、汎用ソフトウェアライブラリ２ａから取得したプログラム要素を用いて、所望の機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する構成部であって、プログラム抽出部５、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８を備える。
【００１６】
プログラム抽出部５は、機能実行部３が所定の機能を実行した際に、汎用ソフトウェアライブラリ２ａに格納されるプログラム要素のうち、機能実行部３が使用したプログラム要素を抽出する構成部である。例えば、プログラム抽出部５は、機能実行部３がある機能を実行した際に、機能実行部３により使用された汎用ソフトウェアライブラリ２ａの関連オブジェクト（プログラム要素）の階層中のパスをモニタして記憶しておき、このパス上にある関連オブジェクトを汎用ソフトウェアライブラリ２ａから抽出する。プログラム抽出部５における所定の機能を実行した時に使用した汎用ソフトウェアライブラリ２ａから機能実行部３で使用した関連オブジェクトの抽出は、所定の機能を実行した際に使用した処理データが格納されたプログラム要素又は前記処理データを元に処理実行に使用されたプログラム要素をモニタすることにより実施する。
【００１７】
プログラム検証部６は、プログラム抽出部５により抽出されたプログラム要素及びプログラム要素同士の関連性を検証する構成部である。例えば、抽出されたプログラム要素のソースコードにおけるエラーの有無を検証したり、プログラム要素同士を比較して同一のプログラムロジックを特定する。抽出したプログラム要素の検証は、前記抽出されたプログラム要素が、当プログラム要素の仕様を規定するプログラム言語仕様に適合しているかを元に判断する。例えば、不正コードが混入している場合は、エラーコードと判断する。また、下記プログラム最適化部７で実行するプログラム最適化に関して、推奨するプログラム記述方式について規定された仕様と前記プログラム要素とを照合し、例えばプログラム要素の二重定義や可読性の向上といったプログラム管理面からの検証を実施する。
【００１８】
プログラム最適化部７は、プログラム検証部６の検証結果に基づいて、実行速度の向上や処理の効率化などの観点から、プログラム抽出部５によって抽出されたプログラム要素の関連性や処理手続きを最適化する構成部である。この最適化処理は、プログラム要素の二重定義や可読性の向上といったプログラム要素管理面、実行速度やメモリ使用量などの性能面から実施する。プログラム要素管理面からの最適化は、上記プログラム検証部６で実施されたプログラム管理面からの検証結果を元に、プログラム要素の最適化を半自動的に実行することが可能である。一方性能面からの最適化は、人的判断に基づくため、人的要素を介して実施する、例えば、プログラムの重複記述を非推奨としているプログラム開発において、複数のプログラム要素に重複して存在する同一のプログラムロジックが特定されている場合、最適化処理部７は、これらのプログラム要素から引用されるプログラムロジックとして、当該プログラムロジックを一元化したプログラムに自動的に変更する。
【００１９】
プログラム再構築部８は、プログラム検証部６及びプログラム最適化部７による処理を経て得られた上記所定の機能に関するプログラム要素を用いて、当該所定の機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する構成部である。機能特化ソフトウェアライブラリ２ｂが構築されると、機能実行部３は、当該機能特化ソフトウェアライブラリ２ｂを使用して上記所定の機能を実行する。
【００２０】
図３は、この発明によるソフトウェアライブラリ再構築装置が適用される情報処理装置のハードウェア構成を示すブロック図である。この情報処理装置としては、例えば、カーナビゲーション装置や、携帯電話、ＰＤＡ（Personal Digital Assistant）などの移動体情報端末が挙げられる。
図３において、記憶装置２には、この発明の趣旨に合致したソフトウェアライブラリ再構築用の処理プログラム、この情報処理装置で実行されるカーナビゲーションなどの処理を実現するためのアプリケーションソフトウェア、汎用ソフトウェアライブラリ２ａ、機能特化ソフトウェアライブラリ２ｂ、上記アプリケーションソフトウェアによる処理で利用されるデータ（例えば、地図データ）が格納される。
なお、記憶装置２としては、ハードディスク装置（ＨＤＤ）、ＣＤやＤＶＤなどの記憶媒体及びそのドライブ装置、ＵＳＢ（Universal Serial Bus）メモリなどが挙げられる。
【００２１】
上記ソフトウェアライブラリ再構築用の処理プログラムや、上記アプリケーションソフトウェアのプログラム、ソフトウェアライブラリ２ａ，２ｂは、記憶装置２からメモリ１０上に展開され、ＣＰＵ９に実行される。ＣＰＵ９が、上記ソフトウェアライブラリ再構築用の処理プログラムを実行することにより、図１で示した機能実行部３、プログラム抽出部５、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８が、ハードウェアとソフトウェアが協働した具体的な手段として実現される。
【００２２】
ＣＰＵ９による演算結果は、バスを介して表示装置１１へ出力されて画面表示される。表示装置１１は、例えば、カーナビゲーションにおける地図表示などを実行する。この表示装置１１としては、液晶ディスプレイやプラズマディスプレイが挙げられる。
通信装置１２は、装置外部と通信を行う装置であり、ナビゲーション装置の場合には、ＧＰＳ電波やＦＭ電波を受信する。
入力装置１３は、装置外部から操作入力するための装置であり、キーボードや操作スイッチ、表示装置１１と組み合わされたタッチパネルなどにより実現される。ナビゲーション装置の場合、ルート探索の条件は、この入力装置１３を用いて入力される。
【００２３】
なお、図３では、上記ソフトウェアライブラリ再構築用の処理プログラム、アプリケーションソフトウェア、ソフトウェアライブラリ２ａ，２ｂ、上記アプリケーションソフトウェアによる処理で利用されるデータが、記憶装置２に全て格納される場合を示したが、これらソフトウェアのそれぞれ又はこれらの少なくとも１つが、ＣＰＵ９により記憶内容が読み取り可能な別個の記憶装置に記憶されても構わない。
【００２４】
次に動作について説明する。
図４は、実施の形態１のソフトウェアライブラリ再構築装置による動作の流れを示すフローチャートであり、この図に沿ってソフトウェアライブラリの再構築の詳細を述べる。
先ず、既存の汎用ソフトウェアライブラリ２ａから、実行したい機能を選択する（ステップＳＴ１）。例えば、表示装置１１に機能選択用画面を表示し、入力装置１３を用いて機能を対話的に選択させるＧＵＩ（Graphical User Interface）を提供してもよい。
【００２５】
機能の選択は、複数同時に行ってもよい。このとき、選択された複数の機能のそれぞれに特化した複数の機能特化ソフトウェアライブラリ２ｂを構築する場合と、選択された複数の機能の全てに特化された１つの機能特化ソフトウェアライブラリ２ｂを構築する場合を、上記機能選択画面で選択させる。
【００２６】
また、機能選択用画面で機能を選択するのではなく、機能実行部３によってある機能の汎用ソフトウェアライブラリ２ａが利用されるアプリケーションソフトウェアが起動した時点で当該機能が選択されたものとしてもよい。例えば、ナビゲーションソフトウェアを実行中にルート探索が指示されると、ルート探索機能が選択されたものとする。
【００２７】
次に、機能実行部３が、ステップＳＴ１において選択された機能を実行する（ステップＳＴ２）。なお、機能の実行条件は、記憶装置２に予め登録しておく。機能実行部３は、記憶装置２からメモリ１０に展開された上記実行条件に基づいて、当該機能を実行する。例えば、ルート探索機能であれば、ルート探索で使用されるデータベースや、ルート探索のアルゴリズムを実行条件として設定する。
【００２８】
機能実行部３が機能を実行する際、プログラム抽出部５は、汎用ソフトウェアライブラリ２ａから、機能実行部３に使用されたプログラム要素を順次抽出する（ステップＳＴ３）。例えば、クラス名など、プログラム要素を識別できる情報を用いて、プログラム要素を抽出する。
【００２９】
図５は、図２の汎用ソフトウェアライブラリ２ａのプログラム要素うち、機能実行部３に使用されたプログラム要素を特定した場合を示す図である。図５で太枠、太線を用いて示すように、プログラム抽出部５が、機能実行部３に使用された関連オブジェクト（プログラム要素）を抽出することにより、汎用ソフトウェアライブラリ２ａにおいて、機能実行部３に順次使用された関連オブジェクト（プログラム要素）のパスが特定される。プログラム抽出部５により実行順に抽出されたプログラム要素は、プログラム検証部６へ出力される。
【００３０】
続いて、プログラム検証部６は、抽出箇所のプログラム要素におけるプログラムのソースコードのエラーの有無を検証するとともに、プログラム要素同士を比較してプログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数を特定する（ステップＳＴ４）。
【００３１】
この後、プログラム最適化部７は、プログラム検証部６による検証の結果に基づいて、抽出箇所のプログラム要素の関連性や処理手続きを最適化する（ステップＳＴ５）。例えば、抽出箇所のプログラム要素からなるプログラムの冗長性を除くために、プログラム検証部６に特定された不使用の属性や関数を削除し、重複したプログラムロジックを一元化したプログラムに変更する。
【００３２】
プログラム再構築部８は、プログラム最適化部７により最適化されたプログラム要素を用いて、ステップＳＴ１にて選択された機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する（ステップＳＴ６）。
図６は、機能特化ソフトウェアライブラリの一例を示す図であり、図５においてルート探索機能に使用するものとして特定された関連オブジェクト（プログラム要素）を用いた機能特化ソフトウェアライブラリ２ｂを示している。図６に示すように、ルート探索機能に特化したソフトウェアライブラリに再構築することで、データサイズが小さくなり、メモリ効率を向上できる。さらに、使用すべきオブジェクト（プログラム要素）が限定されるので、処理速度の向上も可能である。
【００３３】
上述では、ソフトウェアライブラリ再構築装置が、予め設定された実行条件を用いて、選択された機能の実行から、この機能に特化したソフトウェアライブラリの構築までをバッチ処理する場合を示した。以降では、ソフトウェアライブラリ再構築装置がウィザード形式で対話的に処理を実行する場合について説明する。
【００３４】
図７は、ソフトウェア開発環境におけるソフトウェアライブラリ再構築処理の流れを示すフローチャートであり、ウィザード形式で処理を実行する場合について示している。ソフトウェア開発環境には、任意の機能をプラグインとしてアドオンする機能があり、当ウィザードは、このように既存ソフトウェア開発環境に対する付加機能として利用することも可能である。
先ず、機能実行部３が、例えば図８に示すような機能選択用のウィザード画面を表示装置１１に表示して開発者（利用者）に問い合わせ、入力装置１３を用いて機能を対話的に選択させる。機能選択用のウィザード画面は、図８のように、複数の機能を同時に選択できるように選択候補となる機能の一覧を表示する。
また、機能選択用のウィザード画面には、選択された複数の機能のそれぞれに特化した複数の機能特化ソフトウェアライブラリ２ｂを構築する場合（それぞれ出力）と、選択された複数の機能の全てに特化した１つの機能特化ソフトウェアライブラリ２ｂを構築する場合（まとめて出力）と、のいずれかを選択する設定欄を設ける。
【００３５】
機能選択用のウィザード画面を基に機能が選択されると（ステップＳＴ１ａ）、プログラム抽出部５は、例えば図９に示すような、選択された機能の実行条件を設定するための実行条件設定用のウィザード画面を表示装置１１に表示して開発者に問い合わせる。実行条件設定用のウィザード画面には、図９のように、選択された機能を確認し、実行条件をそれぞれ設定するように、選択された機能の一覧と各機能に対する条件の設定ボタンを設ける。
【００３６】
入力装置１３を用いて実行条件設定用のウィザード画面における設定ボタンが押下されると、機能実行部３は、例えば図１０に示すような、実行条件の詳細内容を設定するための条件設定用のウィザード画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて、実行条件内容を対話的に設定させる。図１０の例は、図９に示した機能Ａの設定ボタンが押下された場合を示しており、実行条件として、データベースとアルゴリズムが設定できる。開発者は、この条件設定用のウィザード画面を基に、入力装置１３を用いて実行条件を設定する。選択された機能に対して実行条件が設定されると、機能実行部３は、当該機能を当該実行条件で実行する。ここまでの処理が、ステップＳＴ２ａ及びステップＳＴ２ａ−１に相当する。
【００３７】
プログラム抽出部５は、機能実行部３が機能を実行する間、汎用ソフトウェアライブラリ２ａから、機能実行部３に使用されたプログラム要素を自動的に順次抽出する。
また、機能実行部３は、例えば、図１１に示すような機能の実行に成功したか否かを示す実行結果確認用のウィザード画面を、表示装置１１に表示する（ステップＳＴ３ａ）。この実行結果確認用のウィザード画面には、図１１のように、各機能ごとの実行の成否とその原因の詳細を示すための詳細ボタンを設ける。
【００３８】
図１１において、実行に失敗した機能Ｃの詳細ボタンが押下されると、機能実行部３は、例えば、図１２に示すような、失敗原因提示用のウィザード画面を表示装置１１に表示する。このウィザード画面でログ表示ボタンが押下されると、機能実行部３は、当該機能の実行ログを表示装置１１に表示する。
また、設定ボタンが押下されると、機能実行部３は、図１０に示したような実行条件の詳細内容を設定するための条件設定用のウィザード画面を表示装置１１に表示し、開発者に実行条件を再設定させる（ステップＳＴ３ａ−１）。
この後、再実行ボタンが押下されると、機能実行部３は、失敗した機能を再設定された実行条件で実行し、ステップＳＴ３ａの処理に戻る。
【００３９】
機能実行部３は、図１１において実行に成功した機能Ａの詳細ボタンが押下されると、プログラム抽出部５によって抽出された機能Ａのプログラム要素を、表示装置１１に表示する（ステップＳＴ３ａ−２）。例えば、プログラム要素は、図１３に示すように機能実行部３が実行した順序が分かるように表示してもよい。
また、図１４に示すように、実行順に示したプログラム要素を、プログラム記述言語であるＵＭＬ（Unfiled Modeling Language）で表現してもよい（例えば、クラス図）。
さらに、図１５に示すように、実行順にプログラム要素を表示する実行順序表示エリアと、プログラム要素のソースコードを表示するソースコード表示エリアを設けてもよい。機能実行部３は、入力装置１３を用いて実行順序表示エリアでプログラム要素が選択されると、選択されたプログラム要素に対応するソースコードをソースコード表示エリアに表示する。
【００４０】
機能実行部３は、選択された機能の実行が全て成功するまで、図１１に斜線で示すように、実行結果確認用のウィザード画面の「次へ」ボタンを選択不可の状態にする。「次へ」ボタンが押下されると、プログラム検証部６が起動して、プログラム抽出部５により抽出されたプログラム要素のソースコードのエラーチェックが実行され、プログラム要素同士を比較することにより、プログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数が特定される（ステップＳＴ３ａ−３）。
【００４１】
プログラム検証部６は、プログラム要素のソースコードを検証してエラーがなかった場合、例えば、図１６に示すようなソースコードエラー確認用のウィザード画面を表示装置１１に表示する。エラーがなかった場合におけるソースコードエラー確認用のウィザード画面には、図１６のように、ソースコードを修正するための修正ボタンを設ける。
【００４２】
入力装置１３を用いて修正ボタンが押下されると、プログラム最適化部７が起動して、ソースコードの修正画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて機能を対話的にソースコードを修正するための情報を入力させる。
このとき、プログラム最適化部７は、プログラム検証部６によって特定された重複するプログラムロジックや、使用されない属性、関数を上記修正画面に表示し、開発者が入力した修正内容に従って、ソースコードを修正する（ステップＳＴ４ａ−１）。ソースコードの修正が完了すると、プログラム検証部６が、再びエラーチェックを行う。
【００４３】
一方、プログラム要素のソースコードを検証してエラーがある場合、プログラム検証部６は、例えば、図１７に示すようなソースコードエラー確認用のウィザード画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて機能を対話的にソースコードの修正内容を入力させる（ステップＳＴ４ａ−２）。入力装置１３を用いて修正ボタンが押下された際の処理は、上述した図１６の処理と同様である。プログラム要素のソースコードにエラーがなくなるまで、プログラム検証部６及びプログラム最適化部７による上記処理が繰り返される。
【００４４】
プログラム要素のソースコードにエラーがなくなり、修正によりプログラムが最適化されると、プログラム再構築部８が起動して、ソフトウェアライブラリを再構築するか否かを問い合わせるウィザード画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて機能を対話的に再構築の可否を選択させる（ステップＳＴ５ａ）。ここで、再構築しない旨が選択されると、処理を終了する。
【００４５】
再構築する旨が選択されると、プログラム再構築部８は、再構築した後のソフトウェアライブラリを識別するためのライブラリ名設定用のウィザード画面を表示装置１１に表示する（ステップＳＴ６ａ）。図８において、選択された複数の機能のそれぞれに特化した複数の機能特化ソフトウェアライブラリ２ｂを構築（それぞれ出力）が選択されている場合には、それぞれに対応するライブラリ名を設定する。
【００４６】
プログラム再構築部８は、ライブラリ名が設定されると、プログラム最適化部７により最適化されたプログラム要素を用いて、選択された機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する。この後、プログラム再構築部８は、再構築した旨を開発者に確認させる確認用のウィザード画面を表示装置１１に表示して（ステップＳＴ７ａ）、ライブラリ名に対応付けて機能特化ソフトウェアライブラリ２ｂを記憶装置２に格納し、処理を終了する。
【００４７】
以上のように、この実施の形態１によれば、機能実行部３が、複数の機能に対応する汎用のソフトウェアライブラリ２ａを用いて、複数の機能のうち、指示された機能を実行し、プログラム抽出部５が、汎用のソフトウェアライブラリ２ａを構成するプログラム要素のうち、上記機能の実行で使用されたプログラム要素を抽出し、プログラム検証部６が、プログラム抽出部５に抽出されたプログラム要素のエラーを検証し、プログラム最適化部７が、プログラム検証部６にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、プログラム再構築部８が、プログラム最適化部７によって最適化が行われたプログラムのプログラム要素を用いて、機能実行部３に実行された機能に特化したソフトウェアライブラリ２ｂを構築する。このように構成することで、汎用のソフトウェアライブラリ２ａからプログラム要素を自動的に抽出して所望の機能に特化したソフトウェアライブラリ２ｂを再構築することができる。これにより、実行速度やメモリ利用効率の向上を図れるソフトウェアライブラリを提供することが可能である。
【００４８】
また、この実施の形態１によれば、機能実行部３、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８が、ウィザード形式で対話的に自身の処理に必要な情報を利用者（開発者）に問い合わせ、利用者から入力された自身の処理に必要な情報に従って、自身の処理を実行する。このようにすることで、特に、ソフトウェアの開発環境において、装置側からの誘導に従って、ソフトウェアライブラリの再構築処理を行うことができ、処理の利便性を向上させることができる。
【００４９】
さらに、この実施の形態１によれば、機能実行部３、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８が、予め設定された自身の処理に必要な情報に従って、自身の処理を自動的に実行する。このようにすることで、対話的な情報のやり取りが処理を煩雑にする可能性がある実機の搭載環境において、ソフトウェアライブラリ再構築装置の利便性を向上させることができる。
【００５０】
なお、上記実施の形態１では、汎用ソフトウェアライブラリ２ａから抽出したプログラム要素を用いて、機能特化ソフトウェアライブラリ２ｂを再構築する例を示したが、機能特化ソフトウェアライブラリ２ｂから抽出したプログラム要素を用いて、利用者に指示された実行条件で当該機能を実行することにより、利用者に指示された実行条件で、さらに当該機能が限定された機能特化ソフトウェアライブラリ２ｂを再構築しても構わない。
このようにすることで、さらに実行速度やメモリ利用効率の向上を図ることができる。
【００５１】
実施の形態２．
図１８は、この発明の実施の形態２によるナビゲーション装置の構成を示すブロック図であり、この発明のソフトウェアライブラリ再構築装置をカーナビゲーション装置に適用した構成を示している。図１８に示すナビ機能実行部３ａは、図１の機能実行部３に相当する構成部であり、カーナビゲーション機能を実行する。なお、図１８では、カーナビゲーション機能としてルート探索を例に挙げており、ルート探索実行部３ｂ以外の構成部の記載を省略している。
【００５２】
地図データベース（地図ＤＢ）１４は、地図データを格納する記憶部であり、例えば、図２中の記憶装置に構築される。位置検出部１５は、ナビゲーション装置を搭載した車両の位置を検出する構成部であり、例えば、ＧＰＳ信号や、車速センサ、ジャイロセンサ等のセンサ群の測定値とマップマッチングなどを用いて自車の現在位置を求める。図１８において、図１及び図２と同一の構成部には同一符号を付して説明を省略する。
【００５３】
次に動作について説明する。
ここでは、カーナビゲーション機能のうちのルート探索を実行して、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する場合を述べる。
先ず、ナビ機能実行部３ａに実行されるカーナビゲーションソフトウェアを起動して、入力装置１３を用いて目的地を入力し、ルート探索を指示する。
これにより、ルート探索実行部３ｂが、汎用ソフトウェアライブラリ２ａから取得したルート探索機能に必要なプログラム要素と、地図ＤＢ１４から取得したルート探索に必要な地図データと、位置検出部１５から取得した自車両の位置情報を用いて、目的地までのルート探索を実行する。
【００５４】
プログラム抽出部５は、ルート探索実行部３ｂがルート探索を実行すると、ルート探索機能が選択されたものとして、汎用ソフトウェアライブラリ２ａから、ルート探索実行部３ｂに使用されたプログラム要素を順次抽出する。プログラム抽出部５によって実行順に抽出されたプログラム要素は、プログラム検証部６へ出力される。
プログラム検証部６は、抽出箇所のプログラム要素におけるプログラムのソースコードのエラーの有無を検証するとともに、プログラム要素同士を比較してプログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数を特定する。
この後、プログラム最適化部７は、プログラム検証部６による検証の結果に基づいて、抽出箇所のプログラム要素の関連性や処理手続きを最適化する。
最後に、プログラム再構築部８は、プログラム最適化部７により最適化されたプログラム要素を用いて、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する。
【００５５】
ルート探索機能に特化したライブラリを再構築すると、プログラム再構築部８は、機能特化ソフトウェアライブラリ２ｂをライブラリ名に対応付けて記憶装置２に格納して処理を終了する。これにより、次回からのルート探索には、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂが利用される。
【００５６】
また、機能特化ソフトウェアライブラリ２ｂから抽出されたプログラム要素を用いて、新たに設定した実行条件でルート探索機能を実行し、このルート探索機能の実行の際に使用されたプログラム要素を用いて、上記新たに設定された実行条件でさらにルート探索機能を限定したソフトウェアライブラリ２ｂの構築を繰り返すことで、ルート探索機能の実行速度やソフトウェアライブラリ２ｂのメモリ利用効率の向上を図ることができる。
【００５７】
以上のように、この実施の形態２によれば、出発地点から目的地点までの経路の探索し誘導案内を行うナビゲーション機能を有したナビゲーション装置において、ナビゲーション機能に関する複数の機能に対応する汎用のソフトウェアライブラリ２ａを用いて、複数の機能のうち、指示された機能を実行するナビ機能実行部３ａと、汎用のソフトウェアライブラリを構成するプログラム要素のうち、ナビ機能実行部３ａによる機能の実行で使用されたプログラム要素を抽出するプログラム抽出部５と、プログラム抽出部５に抽出されたプログラム要素のエラーを検証するプログラム検証部６と、プログラム検証部６にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行うプログラム最適化部７と、プログラム最適化部７によって最適化が行われた前記プログラムのプログラム要素を用いて、ナビ機能実行部３ａに実行された機能に特化したソフトウェアライブラリ２ｂを構築するプログラム再構築部８とを備える。このように構成することにより、汎用のソフトウェアライブラリ２ａからプログラム要素を自動的に抽出して、利用者が指示した所望のカーナビゲーション機能に特化したソフトウェアライブラリ２ｂを構築することができる。これにより、カーナビゲーション処理における実行速度やメモリ利用効率の向上を図ることが可能である。
【００５８】
なお、上記実施の形態２では、車載用のナビゲーション装置を例に挙げたが、本発明のソフトウェアライブラリ再構築装置を携帯情報端末に搭載されたナビゲーション機能に適用しても、同様の効果が得られる。この場合、サーバ装置がナビゲーション処理を実行して携帯情報端末へ処理結果をダウンロードする構成では、当該サーバ装置に本発明を適用し、携帯情報端末自体がナビゲーション処理を実行する場合には、当該携帯情報端末に本発明を適用する。
【００５９】
実施の形態３．
図１９は、この発明の実施の形態３によるナビゲーション装置の構成を示すブロック図であり、この発明のソフトウェアライブラリ再構築装置をカーナビゲーション装置に適用した構成を示している。なお、図１９において、図１８と同一の構成部には、同一符号を付して説明を省略する。
ルート探索特性判断部（利用特性判断部）１６は、利用者に指定されたルート探索実行部３ｂの実行条件（探索パターン）を統計処理して、利用者のルート探索機能の利用特性に応じた実行条件を判断する構成部である。
ルータ探索機能の実行条件としては、探索パターンが挙げられる。この探索パターンには、例えば、目的地までの距離を優先してルート探索を行う距離優先パターンや、目的地までの予想経過時間を優先してルート探索を行う時間優先パターンなどがある。ルート探索実行部３ｂは、距離優先パターンが指定されると、目的地までの距離が短いルートを優先して探索し、時間優先パターンが指定されると目的地までの予想経過時間が短いルートを優先して探索する。
また、ルート探索利用統計データベース（ルート探索利用統計ＤＢ）１７は、ルート探索特性判断部１６によって利用者ごとに求められたルート探索機能の利用特性に応じた実行条件を示す情報を格納する記憶部であり、例えば、図２中の記憶装置に構築される。
【００６０】
次に動作について説明する。
ここでは、カーナビゲーション機能のうちのルート探索を実行して、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する場合を述べる。
先ず、ナビ機能実行部３ａに実行されるカーナビゲーションソフトウェアを起動して、入力装置１３を用いて目的地及び探索パターンを入力し、ルート探索を指示する。
これにより、ルート探索実行部３ｂが、汎用ソフトウェアライブラリ２ａから取得したルート探索機能に必要なプログラム要素と、地図ＤＢ１４から取得したルート探索に必要な地図データと、位置検出部１５から取得した自車両の位置情報を用いて、探索パターンに従った目的地までのルート探索を実行する。
【００６１】
プログラム抽出部５は、ルート探索実行部３ｂがルート探索を実行すると、ルート探索機能が選択されたものとして、汎用ソフトウェアライブラリ２ａから、ルート探索実行部３ｂに使用されたプログラム要素を順次抽出する。プログラム抽出部５によって実行順に抽出されたプログラム要素は、プログラム検証部６へ出力される。
【００６２】
プログラム検証部６は、抽出箇所のプログラム要素におけるプログラムのソースコードのエラーの有無を検証するとともに、プログラム要素同士を比較してプログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数を特定する。
【００６３】
ルート探索特性判断部１６は、利用者が指定した探索パターンを示す情報をルート探索実行部３ｂから取得してルート探索利用統計ＤＢ１７に格納するとともに、ルート探索利用統計ＤＢ１７から、当該利用者によって過去に指定された探索パターンを読み出して、これらを統計的に解析した結果に基づき、当該利用者のルート探索機能の利用特性を判断する。この利用特性を示す情報は、ルート探索特性判断部１６からプログラム最適化部７に出力される。例えば、下記ルート探索条件に基づき、収集、蓄積されたルート探索利用統計ＤＢ１７を元に、これら定性、定量データから利用者の探索パターンを統計的に評価する数量化理論解析などの統計解析手法を用いて行う。
【００６４】
ルート探索には、例えば距離優先、有料道路通行優先、一般道路通行優先、などの探索条件を設定できる。ルート探索特性判断部１６では、利用者がこうしたルート探索条件の中からどの探索条件を選択したか、またその選択した時の状況として時間帯、ＶＩＣＳ（登録商標）情報などから得られた交通情報、現在地の地域特性（都市部、地方部、観光地など）の情報を上記ルート探索利用統計ＤＢ１７に保管する。
このルート探索利用統計ＤＢ１７は、当該利用者がルート探索を実行するごとに格納される情報が増加していき、当情報をもとに、前記利用者特性を判断するための統計解析手法などを元に解析処理されたルート探索機能の利用特性から、頻繁に利用されるルート探索機能を特定し、プログラム最適化部７において、特定された当機能を実現するためのプログラム要素を抽出する。
ルート探索特性判断部１６は、上記プログラム抽出部５と同様にルート探索機能を構成するプログラム要素から、上記統計手法により導出された利用者特性を考慮したルート探索条件を実現するプログラム要素を抽出し、上記プログラム検証部６の機能を用いて前記抽出されたプログラム要素の検証を行い、プログラム最適化部７へ出力する。
【００６５】
プログラム最適化部７は、プログラム検証部６による検証結果及びルート探索特性判断部１６により判断されたルート探索の利用特性に応じた探索パターンに基づいて、抽出箇所のプログラム要素の関連性や処理手続きを最適化する。
プログラム再構築部８は、プログラム最適化部７により最適化されたプログラム要素を用いて、利用者の利用特性に応じてルート探索機能が限定された機能特化ソフトウェアライブラリ２ｂを構築する。
【００６６】
ルート探索機能に特化したライブラリを再構築すると、プログラム再構築部８は、機能特化ソフトウェアライブラリ２ｂを、ライブラリ名に対応付けて記憶装置２に格納して処理を終了する。これにより、次回からのルート探索には、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂが利用される。
【００６７】
また、機能特化ソフトウェアライブラリ２ｂから抽出されたプログラム要素を用いて、ルート探索の利用特性に応じた探索パターンでさらに機能を限定したソフトウェアライブラリ２ｂの再構築を繰り返すことで、利用者の利用特性に合致した機能を提供するソフトウェアライブラリを得ることができる。
【００６８】
なお、ソフトウェアライブラリ再構築機能部４の再構築処理は、ナビ機能実行部３ａのナビゲーション処理の空き時間に実行するようにしてもよい。これにより、ナビゲーション処理に処理負荷を与えることがなく、再構築処理を実行することができる。
【００６９】
以上のように、この実施の形態３によれば、ナビ機能実行部３ａにナビゲーション機能が実行される度に、利用者に指示された実行条件（例えば、ルート探索の探索パターン）を取得し、取得した実行条件を統計処理して、当該利用者の利用特性に応じた当該機能の実行条件を求めるルート探索特性判断部１６を備え、プログラム最適化部７が、ルート探索特性判断部１６に求められた実行条件を用いて、プログラム検証部６にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、プログラム再構築部８が、プログラム最適化部７によって最適化が行われたプログラムのプログラム要素を用いて、ルート探索特性判断部１６に求められた実行条件で機能が限定されたソフトウェアライブラリを構築する。このように構成することにより、上記実施の形態２と同様の効果が得られる。また、利用者の利用特性を考慮して、ソフトウェアライブラリを再構築するので、利用者の利便性を向上させることができる。
【００７０】
なお、上記実施の形態３では、ルート探索の利用特性に応じた探索パターンに基づき、ソフトウェアライブラリを再構築する場合を示したが、本発明は、これに限定されるものではなく、探索パターン以外に、ルート探索機能の実行条件として、利用者が設定したルート探索に関する他の実行条件を用いてもよい。また、ルート探索以外のナビゲーション機能である、誘導案内や各種の情報表示などに適用しても構わない。
つまり、機能実行部３に機能が実行する度に、利用者に指示された当該機能の実行条件を取得して、取得した実行条件を統計処理して当該利用者の利用特性に応じた当該機能の実行条件を求める利用特性判断部を備えることにより、ナビゲーション装置以外に本発明が適用された情報処理装置が実行する機能についても、利用者の利用特性に応じた実行条件で当該機能が限定されたソフトウェアライブラリを再構築できる。
【００７１】
また、上記実施の形態３において、ナビゲーション機能のソフトウェアライブラリ再構築処理では、利用者がソースコードの最適化まで行う状況はあまりない。
そこで、複数種類のルート探索条件に対応する機能にそれぞれ特化したソフトウェアライブラリを予め用意しておき、利用者のルート探索利用特性に応じて、対応するソフトウェアライブラリに切り替えるように構成してもよい。
【産業上の利用可能性】
【００７２】
この発明に係るソフトウェアライブラリ再構築装置は、汎用のソフトウェアライブラリのプログラム要素を自動的に抽出して、所望の機能に特化したソフトウェアライブラリを再構築することから、地図データサプライヤから提供された汎用のソフトウェアライブラリを用いて、当該地図データサプライヤが管理する地図データを利用するナビゲーション装置に好適である。
【図１】
2011055417.tif 000003
【図２】
2011055417.tif 000004
【図３】
2011055417.tif 000005
【図４】
2011055417.tif 000006
【図５】
2011055417.tif 000007
【図６】
2011055417.tif 000008
【図７】
2011055417.tif 000009
【図８】
2011055417.tif 000010
【図９】
2011055417.tif 000011
【図１０】
2011055417.tif 000012
【図１１】
2011055417.tif 000013
【図１２】
2011055417.tif 000014
【図１３】
2011055417.tif 000015
【図１４】
2011055417.tif 000016
【図１５】
2011055417.tif 000017
【図１６】
2011055417.tif 000018
【図１７】
2011055417.tif 000019
【図１８】
2011055417.tif 000020
【図１９】
2011055417.tif 000021
【手続補正書】
【提出日】平成23年11月15日(2011.11.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、既存のソフトウェアライブラリからプログラム要素を抽出して所望の機能に特化したソフトウェアライブラリを再構築するソフトウェアライブラリ再構築装置及び方法並びにこれを用いたナビゲーション装置に関するものである。
【背景技術】
【０００２】
特許文献１には、階層状カプセル化の概念を利用して、開発者が作成したオブジェクト・コンテナの階層構造における外部依存性を自動的に分離することで、オブジェクト・コンテナ及びこれらが他のコンテナ環境に含むオブジェクト間の関連を疎にして再利用性を高めることができるシステムが開示されている。
また、特許文献２に記載されるシステムでは、複数のシステムの制御に利用される複数の制御バンドルから、共通して利用される機能部を抽出し、この共通して利用される機能部が重複しないように、複数の制御バンドルを１つの新たな制御バンドルに再構成する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０００−５０５９１９号公報
【特許文献２】特開２００４−２２７２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術を適用すれば、汎用のソフトウェアライブラリのプログラム要素間の関連を疎にしてプログラム要素を自由に組み合わせることができる。
しかしながら、開発者が、所望の機能を実現するプログラム要素を抽出して、これらを組み合わせる必要がある。
従って、ソフトウェアライブラリを再構築する操作が複雑である上、個々のプログラム要素に関する知識も必要であり、ソフトウェアライブラリを利用する様々な機器への適用が困難で汎用性がない。
【０００５】
また、特許文献２の技術を用いれば、複数のソフトウェアライブラリから共通する機能のプログラム要素を自動的に抽出することは可能であるが、利用者が所望する機能のプログラム要素を抽出することはできない。
このため、例えば、実行速度やメモリ利用効率を考慮しながら、所望の機能に特化したソフトウェアライブラリを再構築できない。
【０００６】
この発明は、上記の課題を解決するためになされたもので、汎用のソフトウェアライブラリからプログラム要素を自動的に抽出して所望の機能に特化したソフトウェアライブラリを再構築することができるソフトウェアライブラリ再構築装置及び方法並びにこれを用いたナビゲーション装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係るソフトウェアライブラリ再構築装置は、複数の機能に対応するプログラム要素で構成された汎用のソフトウェアライブラリを用いて、複数の機能のうち、指示された機能に対応するプログラム要素を実行する機能実行部と、汎用のソフトウェアライブラリを構成する個々のプログラム要素のうち、機能実行部に実行されたプログラム要素を抽出するプログラム抽出部と、プログラム抽出部に抽出されたプログラム要素のエラーを検証するプログラム検証部と、プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムについては、不使用の属性および関数を削除し、重複したプログラムのロジックを一元化することにより、プログラムの最適化を行い、プログラム検証部にエラーありと検証されたプログラム要素からなるプログラムについては、プログラム検証部が受け付けた修正内容で修正を行い、プログラム要素にエラーがなくなるまで上記最適化を行うプログラム最適化部と、プログラム最適化部によって最適化が行われたプログラムのプログラム要素を用いて、機能実行部に実行された機能に対応するプログラム要素に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えるものである。
【発明の効果】
【０００８】
この発明によれば、機能実行部が、複数の機能に対応する汎用のソフトウェアライブラリを用いて、複数の機能のうち、指示された機能を実行し、プログラム抽出部が、汎用のソフトウェアライブラリを構成するプログラム要素のうち、上記機能の実行で使用されたプログラム要素を抽出し、プログラム検証部が、プログラム抽出部に抽出されたプログラム要素のエラーを検証し、プログラム最適化部が、プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、プログラム再構築部が、プログラム最適化部によって最適化が行われたプログラムのプログラム要素を用いて、機能実行部に実行された機能に特化したソフトウェアライブラリを構築する。
このように構成することにより、汎用のソフトウェアライブラリからプログラム要素を自動的に抽出して所望の機能に特化したソフトウェアライブラリを再構築することから、実行速度やメモリ利用効率の向上を図ることができる。
【図面の簡単な説明】
【０００９】
【図１】この発明の実施の形態１によるソフトウェアライブラリ再構築装置の構成を示すブロック図である。
【図２】汎用ソフトウェアライブラリの一例を示す図である。
【図３】この発明によるソフトウェアライブラリ再構築装置が適用される情報処理装置のハードウェア構成を示すブロック図である。
【図４】実施の形態１のソフトウェアライブラリ再構築装置による動作の流れを示すフローチャートである。
【図５】図２の汎用ソフトウェアライブラリで使用されたプログラム要素を示す図である。
【図６】機能特化ソフトウェアライブラリの一例を示す図である。
【図７】ソフトウェア開発環境におけるソフトウェアライブラリ再構築処理の流れを示すフローチャートである。
【図８】機能選択用のウィザード画面の一例を示す図である。
【図９】実行条件設定用のウィザード画面の一例を示す図である。
【図１０】条件設定用のウィザード画面の一例を示す図である。
【図１１】実行結果確認用のウィザード画面の一例を示す図である。
【図１２】失敗原因提示用のウィザード画面の一例を示す図である。
【図１３】抽出したプログラム要素の表示画面（例１）を示す図である。
【図１４】抽出したプログラム要素の表示画面（例２）を示す図である。
【図１５】抽出したプログラム要素の表示画面（例３）を示す図である。
【図１６】ソースコードエラー確認用のウィザード画面（エラーが無い場合）を示す図である。
【図１７】ソースコードエラー確認用のウィザード画面（エラーがある場合）を示す図である。
【図１８】この発明の実施の形態２によるナビゲーション装置の構成を示すブロック図である。
【図１９】この発明の実施の形態３によるナビゲーション装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態１．
図１は、この発明の実施の形態１によるソフトウェアライブラリ再構築装置の構成を示すブロック図である。図１において、実施の形態１によるソフトウェアライブラリ再構築装置１は、汎用ソフトウェアライブラリ２ａから抽出したプログラム要素を用いて所望の機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する装置であり、機能実行部３及びソフトウェアライブラリ再構築機能部４を備える。なお、プログラム要素とは、そのプログラムで使用される関数及びその属性、これらを分類するクラス、パッケージ、メソッド等である。
【００１１】
汎用ソフトウェアライブラリ２ａには、所定の機能を利用する様々なアプリケーションソフトウェアに対応して、上記所定の機能を実現する様々なプログラム要素が登録されているソフトウェアライブラリ２ａである。
例えば、図２に示す汎用ソフトウェアライブラリ２ａは、ナビゲーション処理におけるルート探索機能を実現する汎用ソフトウェアライブラリである。図２のように、ルート探索用に関するオブジェクトは、ルート探索における様々な機能を実現する関連オブジェクト（プログラム要素）からなる階層構造を有している。
ここで、ある種類のナビゲーションソフトウェアでは、ルート探索機能を実行する際、例えば、関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−１，１−３，４−２が実行される。
一方、別の種類のナビゲーションソフトウェアでは、ルート探索機能を実行する際に、上記と別の関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−２，４−１，４−３が実行されるものとする。
このように、汎用ソフトウェアライブラリ２ａには、複数種類のアプリケーションソフトウェアに対する汎用性を持たせるために、ある種類のアプリケーションソフトウェアで実行されるプログラム要素群に加えて、他の種類のアプリケーションソフトウェアで実行されるプログラム要素についても登録されている。
【００１２】
また、汎用ソフトウェアライブラリ２ａでは、所定の機能を実現する関連オブジェクト（プログラム要素）を各階層で選び出して実行する必要がある。
例えば、図２に示すルート探索機能を実現するため、関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−１，１−３，４−２を実行する場合、汎用ソフトウェアライブラリ２ａの第１の階層で関連オブジェクト１，４を選び出し、第２の階層で関連オブジェクト１−２，４−１，４−３が選び出す処理が行われる。
このため、汎用ソフトウェアライブラリ２ａは、所定の機能を実現する様々なプログラム要素が格納される分、メモリの利用効率が悪く、さらに各階層で所望のプログラム要素を選び出す処理が必要であるため、実行速度の向上に限界がある。
【００１３】
機能特化ソフトウェアライブラリ２ｂは、所定の機能に特化したプログラム要素のみに再構築されたソフトウェアライブラリである。例えば、ソフトウェアライブラリ再構築装置１を適用したナビゲーション装置が、ルート探索において、図２に示した関連オブジェクト１，４及びこれらに関連した機能を実現する関連オブジェクト１−１，１−３，４−２を実行する場合、機能特化ソフトウェアライブラリ２ｂは、関連オブジェクト１，４，１−１，１−３，４−２のみに再構築される。
【００１４】
機能実行部３は、ソフトウェアライブラリ再構築装置１を適用した情報処理装置にて、所定の機能を利用するアプリケーションソフトウェアが実行されると、汎用ソフトウェアライブラリ２ａに格納されたプログラム要素のうち、上記所定の機能を実現するプログラム要素を実行する、又は、ソフトウェアライブラリ再構築機能部４により再構築された機能特化ソフトウェアライブラリ２ｂのプログラム要素を実行する構成部である。例えば、ナビゲーションソフトウェアにおける各機能を実現するプログラムモジュールを上記情報処理装置が実行することにより具現化される。
【００１５】
ソフトウェアライブラリ再構築機能部４は、汎用ソフトウェアライブラリ２ａから取得したプログラム要素を用いて、所望の機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する構成部であって、プログラム抽出部５、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８を備える。
【００１６】
プログラム抽出部５は、機能実行部３が所定の機能を実行した際に、汎用ソフトウェアライブラリ２ａに格納されるプログラム要素のうち、機能実行部３が使用したプログラム要素を抽出する構成部である。例えば、プログラム抽出部５は、機能実行部３がある機能を実行した際に、機能実行部３により使用された汎用ソフトウェアライブラリ２ａの関連オブジェクト（プログラム要素）の階層中のパスをモニタして記憶しておき、このパス上にある関連オブジェクトを汎用ソフトウェアライブラリ２ａから抽出する。プログラム抽出部５における所定の機能を実行した時に使用した汎用ソフトウェアライブラリ２ａから機能実行部３で使用した関連オブジェクトの抽出は、所定の機能を実行した際に使用した処理データが格納されたプログラム要素又は前記処理データを元に処理実行に使用されたプログラム要素をモニタすることにより実施する。
【００１７】
プログラム検証部６は、プログラム抽出部５により抽出されたプログラム要素及びプログラム要素同士の関連性を検証する構成部である。例えば、抽出されたプログラム要素のソースコードにおけるエラーの有無を検証したり、プログラム要素同士を比較して同一のプログラムロジックを特定する。抽出したプログラム要素の検証は、前記抽出されたプログラム要素が、当プログラム要素の仕様を規定するプログラム言語仕様に適合しているかを元に判断する。例えば、不正コードが混入している場合は、エラーコードと判断する。また、下記プログラム最適化部７で実行するプログラム最適化に関して、推奨するプログラム記述方式について規定された仕様と前記プログラム要素とを照合し、例えばプログラム要素の二重定義や可読性の向上といったプログラム管理面からの検証を実施する。
【００１８】
プログラム最適化部７は、プログラム検証部６の検証結果に基づいて、実行速度の向上や処理の効率化などの観点から、プログラム抽出部５によって抽出されたプログラム要素の関連性や処理手続きを最適化する構成部である。この最適化処理は、プログラム要素の二重定義や可読性の向上といったプログラム要素管理面、実行速度やメモリ使用量などの性能面から実施する。プログラム要素管理面からの最適化は、上記プログラム検証部６で実施されたプログラム管理面からの検証結果を元に、プログラム要素の最適化を半自動的に実行することが可能である。一方性能面からの最適化は、人的判断に基づくため、人的要素を介して実施する、例えば、プログラムの重複記述を非推奨としているプログラム開発において、複数のプログラム要素に重複して存在する同一のプログラムロジックが特定されている場合、最適化処理部７は、これらのプログラム要素から引用されるプログラムロジックとして、当該プログラムロジックを一元化したプログラムに自動的に変更する。
【００１９】
プログラム再構築部８は、プログラム検証部６及びプログラム最適化部７による処理を経て得られた上記所定の機能に関するプログラム要素を用いて、当該所定の機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する構成部である。機能特化ソフトウェアライブラリ２ｂが構築されると、機能実行部３は、当該機能特化ソフトウェアライブラリ２ｂを使用して上記所定の機能を実行する。
【００２０】
図３は、この発明によるソフトウェアライブラリ再構築装置が適用される情報処理装置のハードウェア構成を示すブロック図である。この情報処理装置としては、例えば、カーナビゲーション装置や、携帯電話、ＰＤＡ（Personal Digital Assistant）などの移動体情報端末が挙げられる。
図３において、記憶装置２には、この発明の趣旨に合致したソフトウェアライブラリ再構築用の処理プログラム、この情報処理装置で実行されるカーナビゲーションなどの処理を実現するためのアプリケーションソフトウェア、汎用ソフトウェアライブラリ２ａ、機能特化ソフトウェアライブラリ２ｂ、上記アプリケーションソフトウェアによる処理で利用されるデータ（例えば、地図データ）が格納される。
なお、記憶装置２としては、ハードディスク装置（ＨＤＤ）、ＣＤやＤＶＤなどの記憶媒体及びそのドライブ装置、ＵＳＢ（Universal Serial Bus）メモリなどが挙げられる。
【００２１】
上記ソフトウェアライブラリ再構築用の処理プログラムや、上記アプリケーションソフトウェアのプログラム、ソフトウェアライブラリ２ａ，２ｂは、記憶装置２からメモリ１０上に展開され、ＣＰＵ９に実行される。ＣＰＵ９が、上記ソフトウェアライブラリ再構築用の処理プログラムを実行することにより、図１で示した機能実行部３、プログラム抽出部５、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８が、ハードウェアとソフトウェアが協働した具体的な手段として実現される。
【００２２】
ＣＰＵ９による演算結果は、バスを介して表示装置１１へ出力されて画面表示される。表示装置１１は、例えば、カーナビゲーションにおける地図表示などを実行する。この表示装置１１としては、液晶ディスプレイやプラズマディスプレイが挙げられる。
通信装置１２は、装置外部と通信を行う装置であり、ナビゲーション装置の場合には、ＧＰＳ電波やＦＭ電波を受信する。
入力装置１３は、装置外部から操作入力するための装置であり、キーボードや操作スイッチ、表示装置１１と組み合わされたタッチパネルなどにより実現される。ナビゲーション装置の場合、ルート探索の条件は、この入力装置１３を用いて入力される。
【００２３】
なお、図３では、上記ソフトウェアライブラリ再構築用の処理プログラム、アプリケーションソフトウェア、ソフトウェアライブラリ２ａ，２ｂ、上記アプリケーションソフトウェアによる処理で利用されるデータが、記憶装置２に全て格納される場合を示したが、これらソフトウェアのそれぞれ又はこれらの少なくとも１つが、ＣＰＵ９により記憶内容が読み取り可能な別個の記憶装置に記憶されても構わない。
【００２４】
次に動作について説明する。
図４は、実施の形態１のソフトウェアライブラリ再構築装置による動作の流れを示すフローチャートであり、この図に沿ってソフトウェアライブラリの再構築の詳細を述べる。
先ず、既存の汎用ソフトウェアライブラリ２ａから、実行したい機能を選択する（ステップＳＴ１）。例えば、表示装置１１に機能選択用画面を表示し、入力装置１３を用いて機能を対話的に選択させるＧＵＩ（Graphical User Interface）を提供してもよい。
【００２５】
機能の選択は、複数同時に行ってもよい。このとき、選択された複数の機能のそれぞれに特化した複数の機能特化ソフトウェアライブラリ２ｂを構築する場合と、選択された複数の機能の全てに特化された１つの機能特化ソフトウェアライブラリ２ｂを構築する場合を、上記機能選択画面で選択させる。
【００２６】
また、機能選択用画面で機能を選択するのではなく、機能実行部３によってある機能の汎用ソフトウェアライブラリ２ａが利用されるアプリケーションソフトウェアが起動した時点で当該機能が選択されたものとしてもよい。例えば、ナビゲーションソフトウェアを実行中にルート探索が指示されると、ルート探索機能が選択されたものとする。
【００２７】
次に、機能実行部３が、ステップＳＴ１において選択された機能を実行する（ステップＳＴ２）。なお、機能の実行条件は、記憶装置２に予め登録しておく。機能実行部３は、記憶装置２からメモリ１０に展開された上記実行条件に基づいて、当該機能を実行する。例えば、ルート探索機能であれば、ルート探索で使用されるデータベースや、ルート探索のアルゴリズムを実行条件として設定する。
【００２８】
機能実行部３が機能を実行する際、プログラム抽出部５は、汎用ソフトウェアライブラリ２ａから、機能実行部３に使用されたプログラム要素を順次抽出する（ステップＳＴ３）。例えば、クラス名など、プログラム要素を識別できる情報を用いて、プログラム要素を抽出する。
【００２９】
図５は、図２の汎用ソフトウェアライブラリ２ａのプログラム要素うち、機能実行部３に使用されたプログラム要素を特定した場合を示す図である。図５で太枠、太線を用いて示すように、プログラム抽出部５が、機能実行部３に使用された関連オブジェクト（プログラム要素）を抽出することにより、汎用ソフトウェアライブラリ２ａにおいて、機能実行部３に順次使用された関連オブジェクト（プログラム要素）のパスが特定される。プログラム抽出部５により実行順に抽出されたプログラム要素は、プログラム検証部６へ出力される。
【００３０】
続いて、プログラム検証部６は、抽出箇所のプログラム要素におけるプログラムのソースコードのエラーの有無を検証するとともに、プログラム要素同士を比較してプログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数を特定する（ステップＳＴ４）。
【００３１】
この後、プログラム最適化部７は、プログラム検証部６による検証の結果に基づいて、抽出箇所のプログラム要素の関連性や処理手続きを最適化する（ステップＳＴ５）。例えば、抽出箇所のプログラム要素からなるプログラムの冗長性を除くために、プログラム検証部６に特定された不使用の属性や関数を削除し、重複したプログラムロジックを一元化したプログラムに変更する。
【００３２】
プログラム再構築部８は、プログラム最適化部７により最適化されたプログラム要素を用いて、ステップＳＴ１にて選択された機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する（ステップＳＴ６）。
図６は、機能特化ソフトウェアライブラリの一例を示す図であり、図５においてルート探索機能に使用するものとして特定された関連オブジェクト（プログラム要素）を用いた機能特化ソフトウェアライブラリ２ｂを示している。図６に示すように、ルート探索機能に特化したソフトウェアライブラリに再構築することで、データサイズが小さくなり、メモリ効率を向上できる。さらに、使用すべきオブジェクト（プログラム要素）が限定されるので、処理速度の向上も可能である。
【００３３】
上述では、ソフトウェアライブラリ再構築装置が、予め設定された実行条件を用いて、選択された機能の実行から、この機能に特化したソフトウェアライブラリの構築までをバッチ処理する場合を示した。以降では、ソフトウェアライブラリ再構築装置がウィザード形式で対話的に処理を実行する場合について説明する。
【００３４】
図７は、ソフトウェア開発環境におけるソフトウェアライブラリ再構築処理の流れを示すフローチャートであり、ウィザード形式で処理を実行する場合について示している。ソフトウェア開発環境には、任意の機能をプラグインとしてアドオンする機能があり、当ウィザードは、このように既存ソフトウェア開発環境に対する付加機能として利用することも可能である。
先ず、機能実行部３が、例えば図８に示すような機能選択用のウィザード画面を表示装置１１に表示して開発者（利用者）に問い合わせ、入力装置１３を用いて機能を対話的に選択させる。機能選択用のウィザード画面は、図８のように、複数の機能を同時に選択できるように選択候補となる機能の一覧を表示する。
また、機能選択用のウィザード画面には、選択された複数の機能のそれぞれに特化した複数の機能特化ソフトウェアライブラリ２ｂを構築する場合（それぞれ出力）と、選択された複数の機能の全てに特化した１つの機能特化ソフトウェアライブラリ２ｂを構築する場合（まとめて出力）と、のいずれかを選択する設定欄を設ける。
【００３５】
機能選択用のウィザード画面を基に機能が選択されると（ステップＳＴ１ａ）、プログラム抽出部５は、例えば図９に示すような、選択された機能の実行条件を設定するための実行条件設定用のウィザード画面を表示装置１１に表示して開発者に問い合わせる。実行条件設定用のウィザード画面には、図９のように、選択された機能を確認し、実行条件をそれぞれ設定するように、選択された機能の一覧と各機能に対する条件の設定ボタンを設ける。
【００３６】
入力装置１３を用いて実行条件設定用のウィザード画面における設定ボタンが押下されると、機能実行部３は、例えば図１０に示すような、実行条件の詳細内容を設定するための条件設定用のウィザード画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて、実行条件内容を対話的に設定させる。図１０の例は、図９に示した機能Ａの設定ボタンが押下された場合を示しており、実行条件として、データベースとアルゴリズムが設定できる。開発者は、この条件設定用のウィザード画面を基に、入力装置１３を用いて実行条件を設定する。選択された機能に対して実行条件が設定されると、機能実行部３は、当該機能を当該実行条件で実行する。ここまでの処理が、ステップＳＴ２ａ及びステップＳＴ２ａ−１に相当する。
【００３７】
プログラム抽出部５は、機能実行部３が機能を実行する間、汎用ソフトウェアライブラリ２ａから、機能実行部３に使用されたプログラム要素を自動的に順次抽出する。
また、機能実行部３は、例えば、図１１に示すような機能の実行に成功したか否かを示す実行結果確認用のウィザード画面を、表示装置１１に表示する（ステップＳＴ３ａ）。この実行結果確認用のウィザード画面には、図１１のように、各機能ごとの実行の成否とその原因の詳細を示すための詳細ボタンを設ける。
【００３８】
図１１において、実行に失敗した機能Ｃの詳細ボタンが押下されると、機能実行部３は、例えば、図１２に示すような、失敗原因提示用のウィザード画面を表示装置１１に表示する。このウィザード画面でログ表示ボタンが押下されると、機能実行部３は、当該機能の実行ログを表示装置１１に表示する。
また、設定ボタンが押下されると、機能実行部３は、図１０に示したような実行条件の詳細内容を設定するための条件設定用のウィザード画面を表示装置１１に表示し、開発者に実行条件を再設定させる（ステップＳＴ３ａ−１）。
この後、再実行ボタンが押下されると、機能実行部３は、失敗した機能を再設定された実行条件で実行し、ステップＳＴ３ａの処理に戻る。
【００３９】
機能実行部３は、図１１において実行に成功した機能Ａの詳細ボタンが押下されると、プログラム抽出部５によって抽出された機能Ａのプログラム要素を、表示装置１１に表示する（ステップＳＴ３ａ−２）。例えば、プログラム要素は、図１３に示すように機能実行部３が実行した順序が分かるように表示してもよい。
また、図１４に示すように、実行順に示したプログラム要素を、プログラム記述言語であるＵＭＬ（Unfiled Modeling Language）で表現してもよい（例えば、クラス図）。
さらに、図１５に示すように、実行順にプログラム要素を表示する実行順序表示エリアと、プログラム要素のソースコードを表示するソースコード表示エリアを設けてもよい。機能実行部３は、入力装置１３を用いて実行順序表示エリアでプログラム要素が選択されると、選択されたプログラム要素に対応するソースコードをソースコード表示エリアに表示する。
【００４０】
機能実行部３は、選択された機能の実行が全て成功するまで、図１１に斜線で示すように、実行結果確認用のウィザード画面の「次へ」ボタンを選択不可の状態にする。「次へ」ボタンが押下されると、プログラム検証部６が起動して、プログラム抽出部５により抽出されたプログラム要素のソースコードのエラーチェックが実行され、プログラム要素同士を比較することにより、プログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数が特定される（ステップＳＴ３ａ−３）。
【００４１】
プログラム検証部６は、プログラム要素のソースコードを検証してエラーがなかった場合、例えば、図１６に示すようなソースコードエラー確認用のウィザード画面を表示装置１１に表示する。エラーがなかった場合におけるソースコードエラー確認用のウィザード画面には、図１６のように、ソースコードを修正するための修正ボタンを設ける。
【００４２】
入力装置１３を用いて修正ボタンが押下されると、プログラム最適化部７が起動して、ソースコードの修正画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて機能を対話的にソースコードを修正するための情報を入力させる。
このとき、プログラム最適化部７は、プログラム検証部６によって特定された重複するプログラムロジックや、使用されない属性、関数を上記修正画面に表示し、開発者が入力した修正内容に従って、ソースコードを修正する（ステップＳＴ４ａ−１）。ソースコードの修正が完了すると、プログラム検証部６が、再びエラーチェックを行う。
【００４３】
一方、プログラム要素のソースコードを検証してエラーがある場合、プログラム検証部６は、例えば、図１７に示すようなソースコードエラー確認用のウィザード画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて機能を対話的にソースコードの修正内容を入力させる（ステップＳＴ４ａ−２）。入力装置１３を用いて修正ボタンが押下された際の処理は、上述した図１６の処理と同様である。プログラム要素のソースコードにエラーがなくなるまで、プログラム検証部６及びプログラム最適化部７による上記処理が繰り返される。
【００４４】
プログラム要素のソースコードにエラーがなくなり、修正によりプログラムが最適化されると、プログラム再構築部８が起動して、ソフトウェアライブラリを再構築するか否かを問い合わせるウィザード画面を表示装置１１に表示して開発者に問い合わせ、入力装置１３を用いて機能を対話的に再構築の可否を選択させる（ステップＳＴ５ａ）。ここで、再構築しない旨が選択されると、処理を終了する。
【００４５】
再構築する旨が選択されると、プログラム再構築部８は、再構築した後のソフトウェアライブラリを識別するためのライブラリ名設定用のウィザード画面を表示装置１１に表示する（ステップＳＴ６ａ）。図８において、選択された複数の機能のそれぞれに特化した複数の機能特化ソフトウェアライブラリ２ｂを構築（それぞれ出力）が選択されている場合には、それぞれに対応するライブラリ名を設定する。
【００４６】
プログラム再構築部８は、ライブラリ名が設定されると、プログラム最適化部７により最適化されたプログラム要素を用いて、選択された機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する。この後、プログラム再構築部８は、再構築した旨を開発者に確認させる確認用のウィザード画面を表示装置１１に表示して（ステップＳＴ７ａ）、ライブラリ名に対応付けて機能特化ソフトウェアライブラリ２ｂを記憶装置２に格納し、処理を終了する。
【００４７】
以上のように、この実施の形態１によれば、機能実行部３が、複数の機能に対応する汎用のソフトウェアライブラリ２ａを用いて、複数の機能のうち、指示された機能を実行し、プログラム抽出部５が、汎用のソフトウェアライブラリ２ａを構成するプログラム要素のうち、上記機能の実行で使用されたプログラム要素を抽出し、プログラム検証部６が、プログラム抽出部５に抽出されたプログラム要素のエラーを検証し、プログラム最適化部７が、プログラム検証部６にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、プログラム再構築部８が、プログラム最適化部７によって最適化が行われたプログラムのプログラム要素を用いて、機能実行部３に実行された機能に特化したソフトウェアライブラリ２ｂを構築する。このように構成することで、汎用のソフトウェアライブラリ２ａからプログラム要素を自動的に抽出して所望の機能に特化したソフトウェアライブラリ２ｂを再構築することができる。これにより、実行速度やメモリ利用効率の向上を図れるソフトウェアライブラリを提供することが可能である。
【００４８】
また、この実施の形態１によれば、機能実行部３、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８が、ウィザード形式で対話的に自身の処理に必要な情報を利用者（開発者）に問い合わせ、利用者から入力された自身の処理に必要な情報に従って、自身の処理を実行する。このようにすることで、特に、ソフトウェアの開発環境において、装置側からの誘導に従って、ソフトウェアライブラリの再構築処理を行うことができ、処理の利便性を向上させることができる。
【００４９】
さらに、この実施の形態１によれば、機能実行部３、プログラム検証部６、プログラム最適化部７及びプログラム再構築部８が、予め設定された自身の処理に必要な情報に従って、自身の処理を自動的に実行する。このようにすることで、対話的な情報のやり取りが処理を煩雑にする可能性がある実機の搭載環境において、ソフトウェアライブラリ再構築装置の利便性を向上させることができる。
【００５０】
なお、上記実施の形態１では、汎用ソフトウェアライブラリ２ａから抽出したプログラム要素を用いて、機能特化ソフトウェアライブラリ２ｂを再構築する例を示したが、機能特化ソフトウェアライブラリ２ｂから抽出したプログラム要素を用いて、利用者に指示された実行条件で当該機能を実行することにより、利用者に指示された実行条件で、さらに当該機能が限定された機能特化ソフトウェアライブラリ２ｂを再構築しても構わない。
このようにすることで、さらに実行速度やメモリ利用効率の向上を図ることができる。
【００５１】
実施の形態２．
図１８は、この発明の実施の形態２によるナビゲーション装置の構成を示すブロック図であり、この発明のソフトウェアライブラリ再構築装置をカーナビゲーション装置に適用した構成を示している。図１８に示すナビ機能実行部３ａは、図１の機能実行部３に相当する構成部であり、カーナビゲーション機能を実行する。なお、図１８では、カーナビゲーション機能としてルート探索を例に挙げており、ルート探索実行部３ｂ以外の構成部の記載を省略している。
【００５２】
地図データベース（地図ＤＢ）１４は、地図データを格納する記憶部であり、例えば、図２中の記憶装置に構築される。位置検出部１５は、ナビゲーション装置を搭載した車両の位置を検出する構成部であり、例えば、ＧＰＳ信号や、車速センサ、ジャイロセンサ等のセンサ群の測定値とマップマッチングなどを用いて自車の現在位置を求める。図１８において、図１及び図２と同一の構成部には同一符号を付して説明を省略する。
【００５３】
次に動作について説明する。
ここでは、カーナビゲーション機能のうちのルート探索を実行して、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する場合を述べる。
先ず、ナビ機能実行部３ａに実行されるカーナビゲーションソフトウェアを起動して、入力装置１３を用いて目的地を入力し、ルート探索を指示する。
これにより、ルート探索実行部３ｂが、汎用ソフトウェアライブラリ２ａから取得したルート探索機能に必要なプログラム要素と、地図ＤＢ１４から取得したルート探索に必要な地図データと、位置検出部１５から取得した自車両の位置情報を用いて、目的地までのルート探索を実行する。
【００５４】
プログラム抽出部５は、ルート探索実行部３ｂがルート探索を実行すると、ルート探索機能が選択されたものとして、汎用ソフトウェアライブラリ２ａから、ルート探索実行部３ｂに使用されたプログラム要素を順次抽出する。プログラム抽出部５によって実行順に抽出されたプログラム要素は、プログラム検証部６へ出力される。
プログラム検証部６は、抽出箇所のプログラム要素におけるプログラムのソースコードのエラーの有無を検証するとともに、プログラム要素同士を比較してプログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数を特定する。
この後、プログラム最適化部７は、プログラム検証部６による検証の結果に基づいて、抽出箇所のプログラム要素の関連性や処理手続きを最適化する。
最後に、プログラム再構築部８は、プログラム最適化部７により最適化されたプログラム要素を用いて、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂを構築する。
【００５５】
ルート探索機能に特化したライブラリを再構築すると、プログラム再構築部８は、機能特化ソフトウェアライブラリ２ｂをライブラリ名に対応付けて記憶装置２に格納して処理を終了する。これにより、次回からのルート探索には、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂが利用される。
【００５６】
また、機能特化ソフトウェアライブラリ２ｂから抽出されたプログラム要素を用いて、新たに設定した実行条件でルート探索機能を実行し、このルート探索機能の実行の際に使用されたプログラム要素を用いて、上記新たに設定された実行条件でさらにルート探索機能を限定したソフトウェアライブラリ２ｂの構築を繰り返すことで、ルート探索機能の実行速度やソフトウェアライブラリ２ｂのメモリ利用効率の向上を図ることができる。
【００５７】
以上のように、この実施の形態２によれば、出発地点から目的地点までの経路の探索し誘導案内を行うナビゲーション機能を有したナビゲーション装置において、ナビゲーション機能に関する複数の機能に対応する汎用のソフトウェアライブラリ２ａを用いて、複数の機能のうち、指示された機能を実行するナビ機能実行部３ａと、汎用のソフトウェアライブラリを構成するプログラム要素のうち、ナビ機能実行部３ａによる機能の実行で使用されたプログラム要素を抽出するプログラム抽出部５と、プログラム抽出部５に抽出されたプログラム要素のエラーを検証するプログラム検証部６と、プログラム検証部６にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行うプログラム最適化部７と、プログラム最適化部７によって最適化が行われた前記プログラムのプログラム要素を用いて、ナビ機能実行部３ａに実行された機能に特化したソフトウェアライブラリ２ｂを構築するプログラム再構築部８とを備える。このように構成することにより、汎用のソフトウェアライブラリ２ａからプログラム要素を自動的に抽出して、利用者が指示した所望のカーナビゲーション機能に特化したソフトウェアライブラリ２ｂを構築することができる。これにより、カーナビゲーション処理における実行速度やメモリ利用効率の向上を図ることが可能である。
【００５８】
なお、上記実施の形態２では、車載用のナビゲーション装置を例に挙げたが、本発明のソフトウェアライブラリ再構築装置を携帯情報端末に搭載されたナビゲーション機能に適用しても、同様の効果が得られる。この場合、サーバ装置がナビゲーション処理を実行して携帯情報端末へ処理結果をダウンロードする構成では、当該サーバ装置に本発明を適用し、携帯情報端末自体がナビゲーション処理を実行する場合には、当該携帯情報端末に本発明を適用する。
【００５９】
実施の形態３．
図１９は、この発明の実施の形態３によるナビゲーション装置の構成を示すブロック図であり、この発明のソフトウェアライブラリ再構築装置をカーナビゲーション装置に適用した構成を示している。なお、図１９において、図１８と同一の構成部には、同一符号を付して説明を省略する。
ルート探索特性判断部（利用特性判断部）１６は、利用者に指定されたルート探索実行部３ｂの実行条件（探索パターン）を統計処理して、利用者のルート探索機能の利用特性に応じた実行条件を判断する構成部である。
ルータ探索機能の実行条件としては、探索パターンが挙げられる。この探索パターンには、例えば、目的地までの距離を優先してルート探索を行う距離優先パターンや、目的地までの予想経過時間を優先してルート探索を行う時間優先パターンなどがある。ルート探索実行部３ｂは、距離優先パターンが指定されると、目的地までの距離が短いルートを優先して探索し、時間優先パターンが指定されると目的地までの予想経過時間が短いルートを優先して探索する。
また、ルート探索利用統計データベース（ルート探索利用統計ＤＢ）１７は、ルート探索特性判断部１６によって利用者ごとに求められたルート探索機能の利用特性に応じた実行条件を示す情報を格納する記憶部であり、例えば、図２中の記憶装置に構築される。
【００６０】
次に動作について説明する。
ここでは、カーナビゲーション機能のうちのルート探索を実行して、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂを再構築する場合を述べる。
先ず、ナビ機能実行部３ａに実行されるカーナビゲーションソフトウェアを起動して、入力装置１３を用いて目的地及び探索パターンを入力し、ルート探索を指示する。
これにより、ルート探索実行部３ｂが、汎用ソフトウェアライブラリ２ａから取得したルート探索機能に必要なプログラム要素と、地図ＤＢ１４から取得したルート探索に必要な地図データと、位置検出部１５から取得した自車両の位置情報を用いて、探索パターンに従った目的地までのルート探索を実行する。
【００６１】
プログラム抽出部５は、ルート探索実行部３ｂがルート探索を実行すると、ルート探索機能が選択されたものとして、汎用ソフトウェアライブラリ２ａから、ルート探索実行部３ｂに使用されたプログラム要素を順次抽出する。プログラム抽出部５によって実行順に抽出されたプログラム要素は、プログラム検証部６へ出力される。
【００６２】
プログラム検証部６は、抽出箇所のプログラム要素におけるプログラムのソースコードのエラーの有無を検証するとともに、プログラム要素同士を比較してプログラム要素間に存在する同一のプログラムロジックや使用されない属性、関数を特定する。
【００６３】
ルート探索特性判断部１６は、利用者が指定した探索パターンを示す情報をルート探索実行部３ｂから取得してルート探索利用統計ＤＢ１７に格納するとともに、ルート探索利用統計ＤＢ１７から、当該利用者によって過去に指定された探索パターンを読み出して、これらを統計的に解析した結果に基づき、当該利用者のルート探索機能の利用特性を判断する。この利用特性を示す情報は、ルート探索特性判断部１６からプログラム最適化部７に出力される。例えば、下記ルート探索条件に基づき、収集、蓄積されたルート探索利用統計ＤＢ１７を元に、これら定性、定量データから利用者の探索パターンを統計的に評価する数量化理論解析などの統計解析手法を用いて行う。
【００６４】
ルート探索には、例えば距離優先、有料道路通行優先、一般道路通行優先、などの探索条件を設定できる。ルート探索特性判断部１６では、利用者がこうしたルート探索条件の中からどの探索条件を選択したか、またその選択した時の状況として時間帯、ＶＩＣＳ（登録商標）情報などから得られた交通情報、現在地の地域特性（都市部、地方部、観光地など）の情報を上記ルート探索利用統計ＤＢ１７に保管する。
このルート探索利用統計ＤＢ１７は、当該利用者がルート探索を実行するごとに格納される情報が増加していき、当情報をもとに、前記利用者特性を判断するための統計解析手法などを元に解析処理されたルート探索機能の利用特性から、頻繁に利用されるルート探索機能を特定し、プログラム最適化部７において、特定された当機能を実現するためのプログラム要素を抽出する。
ルート探索特性判断部１６は、上記プログラム抽出部５と同様にルート探索機能を構成するプログラム要素から、上記統計手法により導出された利用者特性を考慮したルート探索条件を実現するプログラム要素を抽出し、上記プログラム検証部６の機能を用いて前記抽出されたプログラム要素の検証を行い、プログラム最適化部７へ出力する。
【００６５】
プログラム最適化部７は、プログラム検証部６による検証結果及びルート探索特性判断部１６により判断されたルート探索の利用特性に応じた探索パターンに基づいて、抽出箇所のプログラム要素の関連性や処理手続きを最適化する。
プログラム再構築部８は、プログラム最適化部７により最適化されたプログラム要素を用いて、利用者の利用特性に応じてルート探索機能が限定された機能特化ソフトウェアライブラリ２ｂを構築する。
【００６６】
ルート探索機能に特化したライブラリを再構築すると、プログラム再構築部８は、機能特化ソフトウェアライブラリ２ｂを、ライブラリ名に対応付けて記憶装置２に格納して処理を終了する。これにより、次回からのルート探索には、ルート探索機能に特化した機能特化ソフトウェアライブラリ２ｂが利用される。
【００６７】
また、機能特化ソフトウェアライブラリ２ｂから抽出されたプログラム要素を用いて、ルート探索の利用特性に応じた探索パターンでさらに機能を限定したソフトウェアライブラリ２ｂの再構築を繰り返すことで、利用者の利用特性に合致した機能を提供するソフトウェアライブラリを得ることができる。
【００６８】
なお、ソフトウェアライブラリ再構築機能部４の再構築処理は、ナビ機能実行部３ａのナビゲーション処理の空き時間に実行するようにしてもよい。これにより、ナビゲーション処理に処理負荷を与えることがなく、再構築処理を実行することができる。
【００６９】
以上のように、この実施の形態３によれば、ナビ機能実行部３ａにナビゲーション機能が実行される度に、利用者に指示された実行条件（例えば、ルート探索の探索パターン）を取得し、取得した実行条件を統計処理して、当該利用者の利用特性に応じた当該機能の実行条件を求めるルート探索特性判断部１６を備え、プログラム最適化部７が、ルート探索特性判断部１６に求められた実行条件を用いて、プログラム検証部６にエラーなしと検証されたプログラム要素からなるプログラムの最適化を行い、プログラム再構築部８が、プログラム最適化部７によって最適化が行われたプログラムのプログラム要素を用いて、ルート探索特性判断部１６に求められた実行条件で機能が限定されたソフトウェアライブラリを構築する。このように構成することにより、上記実施の形態２と同様の効果が得られる。また、利用者の利用特性を考慮して、ソフトウェアライブラリを再構築するので、利用者の利便性を向上させることができる。
【００７０】
なお、上記実施の形態３では、ルート探索の利用特性に応じた探索パターンに基づき、ソフトウェアライブラリを再構築する場合を示したが、本発明は、これに限定されるものではなく、探索パターン以外に、ルート探索機能の実行条件として、利用者が設定したルート探索に関する他の実行条件を用いてもよい。また、ルート探索以外のナビゲーション機能である、誘導案内や各種の情報表示などに適用しても構わない。
つまり、機能実行部３に機能が実行する度に、利用者に指示された当該機能の実行条件を取得して、取得した実行条件を統計処理して当該利用者の利用特性に応じた当該機能の実行条件を求める利用特性判断部を備えることにより、ナビゲーション装置以外に本発明が適用された情報処理装置が実行する機能についても、利用者の利用特性に応じた実行条件で当該機能が限定されたソフトウェアライブラリを再構築できる。
【００７１】
また、上記実施の形態３において、ナビゲーション機能のソフトウェアライブラリ再構築処理では、利用者がソースコードの最適化まで行う状況はあまりない。
そこで、複数種類のルート探索条件に対応する機能にそれぞれ特化したソフトウェアライブラリを予め用意しておき、利用者のルート探索利用特性に応じて、対応するソフトウェアライブラリに切り替えるように構成してもよい。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の機能に対応するプログラム要素で構成された汎用のソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能に対応するプログラム要素を実行する機能実行部と、
前記汎用のソフトウェアライブラリを構成する個々のプログラム要素のうち、前記機能実行部に実行されたプログラム要素を抽出するプログラム抽出部と、
前記プログラム抽出部に抽出されたプログラム要素のエラーを検証するプログラム検証部と、
前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムについては、不使用の属性および関数を削除し、重複したプログラムのロジックを一元化することにより、プログラムの最適化を行い、前記プログラム検証部にエラーありと検証されたプログラム要素からなるプログラムについては、前記プログラム検証部が受け付けた修正内容で修正を行い、プログラム要素にエラーがなくなるまで上記最適化を行うプログラム最適化部と、
前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記機能実行部に実行された前記機能に対応するプログラム要素に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えたソフトウェアライブラリ再構築装置。
【請求項２】
前記機能実行部は、前記機能に特化したソフトウェアライブラリを構成するプログラム要素を、指示された実行条件で実行し、
前記プログラム抽出部は、前記機能に特化したソフトウェアライブラリを構成する個々のプログラム要素のうち、前記機能実行部に実行されたプログラム要素を抽出し、
前記プログラム検証部は、前記プログラム抽出部に抽出されたプログラム要素のエラーを検証し、
前記プログラム最適化部は、前記プログラム検証部にエラーなしと検証されたプログラム要素を含むプログラムについては、不使用の属性および関数を削除し、重複したプログラムのロジックを一元化することにより、プログラムの最適化を行い、前記プログラム検証部にエラーありと検証されたプログラム要素を含むプログラムについては、前記プログラム検証部が受け付けた修正内容で修正を行い、プログラム要素にエラーがなくなるまで上記最適化を行い、
前記プログラム再構築部は、前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記実行条件で前記機能に対応するプログラム要素が限定されたソフトウェアライブラリを構築することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項３】
前記機能実行部が前記プログラム要素を実行する度に、利用者に指示された当該プログラム要素の実行条件を取得し、取得した前記実行条件を統計処理して当該利用者の利用特性に応じた当該機能の実行条件を求める利用特性判断部を備え、
前記プログラム最適化部は、前記利用特性判断部に求められた前記実行条件を用いて、前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムについては、不使用の属性および関数を削除し、重複したプログラムのロジックを一元化することにより、プログラムの最適化を行い、前記プログラム検証部にエラーありと検証されたプログラム要素を含むプログラムについては、前記プログラム検証部が受け付けた修正内容で修正を行い、プログラム要素にエラーがなくなるまで上記最適化を行い、
前記プログラム再構築部は、前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記利用特性判断部に求められた前記実行条件で前記機能が限定されたソフトウェアライブラリを構築することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項４】
前記機能実行部、前記プログラム検証部、前記プログラム最適化部及び前記プログラム再構築部は、利用者から入力された自身の処理に必要な情報を用いて、前記自身の処理を実行することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項５】
前記機能実行部、前記プログラム検証部、前記プログラム最適化部及び前記プログラム再構築部は、予め設定された自身の処理に必要な情報を用いて、前記自身の処理を実行することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項６】
機能実行部と、プログラム抽出部と、プログラム検証部と、プログラム最適化部と、プログラム再構築部とを備えたソフトウェアライブラリ再構築装置のソフトウェアライブラリ再構築方法において、
前記機能実行部が、複数の機能に対応するプログラム要素で構成された汎用のソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能に対応するプログラム要素を実行するステップと、
前記プログラム抽出部が、前記汎用のソフトウェアライブラリを構成する個々のプログラム要素のうち、前記機能実行部に実行されたプログラム要素を抽出するステップと、
前記プログラム検証部が、前記プログラム抽出部に抽出されたプログラム要素のエラーを検証するステップと、
前記プログラム最適化部が、前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムについては、不使用の属性および関数を削除し、重複したプログラムのロジックを一元化することにより、プログラムの最適化を行い、前記プログラム検証部にエラーありと検証されたプログラム要素については、前記プログラム検証部が受け付けた修正内容で修正を行い、プログラム要素にエラーがなくなるまで上記最適化を行うステップと、
前記プログラム再構築部が、前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記機能実行部に実行された前記機能に対応するプログラム要素に特化したソフトウェアライブラリを構築するステップとを備えたことを特徴とするソフトウェアライブラリ再構築方法。
【請求項７】
出発地点から目的地点までの経路の探索し誘導案内を行うナビゲーション機能を有したナビゲーション装置において、
前記ナビゲーション機能に関する複数の機能に対応するプログラム要素で構成された汎用のソフトウェアライブラリを用いて、前記複数の機能に対応するプログラム要素のうち、指示された機能に対応するプログラム要素を実行する機能実行部と、
前記汎用のソフトウェアライブラリを構成する個々のプログラム要素のうち、前記機能実行部に実行されたプログラム要素を抽出するプログラム抽出部と、
前記プログラム抽出部に抽出されたプログラム要素のエラーを検証するプログラム検証部と、
前記プログラム検証部にエラーなしと検証されたプログラム要素からなるプログラムについては、不使用の属性および関数を削除し、重複したプログラムのロジックを一元化することにより、プログラムの最適化を行い、前記プログラム検証部にエラーありと検証されたプログラム要素については、前記プログラム検証部が受け付けた修正内容で修正を行い、プログラム要素にエラーがなくなるまで上記最適化を行うプログラム最適化部と、
前記プログラム最適化部によって最適化が行われた前記プログラムのプログラム要素を用いて、前記機能実行部に実行された前記機能に対応するプログラム要素に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えたことを特徴とするナビゲーション装置。
【手続補正書】
【提出日】平成24年2月2日(2012.2.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数種類のアプリケーションソフトウェアのそれぞれの処理で利用される複数の機能を実現する複数のプログラム要素が、関連するプログラム要素同士の階層に階層化されて登録された汎用ソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能に対応するプログラム要素を前記階層ごとに選び出して実行する機能実行部と、
前記汎用ソフトウェアライブラリに登録された複数のプログラム要素のうち、前記指示された機能を実現するために前記機能実行部によって前記階層ごとに選び出されて実行されたプログラム要素を抽出するプログラム抽出部と、
前記プログラム抽出部に抽出されたプログラム要素同士の関連性を検証するプログラム検証部と、
前記プログラム検証部による検証結果を提示して、プログラム要素間で重複するプログラムロジック及び利用されない不要な情報の修正内容を受け付け、入力された修正内容に基づいてプログラム要素同士の関連性の最適化処理を行うプログラム最適化部と、
前記プログラム最適化部によって最適化処理が行われたプログラム要素から、前記指示された機能に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えたソフトウェアライブラリ再構築装置。
【請求項２】
前記機能実行部は、前記機能に特化したソフトウェアライブラリを構成するプログラム要素を、指示された実行条件で実行し、
前記プログラム抽出部は、前記機能に特化したソフトウェアライブラリに登録された複数のプログラム要素のうち、前記指示された実行条件で前記機能実行部によって実行されたプログラム要素を抽出し、
前記プログラム検証部は、前記プログラム抽出部に抽出されたプログラム要素同士の関連性を検証し、
前記プログラム最適化部は、前記プログラム検証部による検証結果を提示して、プログラム要素間で重複するプログラムロジック及び利用されない不要な情報の修正内容を受け付け、入力された修正内容に基づいてプログラム要素同士の関連性の最適化処理を行い、
前記プログラム再構築部は、前記プログラム最適化部により最適化処理が行われたプログラム要素から、前記実行条件で前記機能に対応するプログラム要素に限定されたソフトウェアライブラリを構築することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項３】
前記機能実行部がプログラム要素を実行する度に、利用者に指示された当該プログラム要素の実行条件を取得し、取得した前記実行条件を統計処理して当該利用者の利用特性に応じた当該機能を求め、前記汎用ソフトウェアライブラリに登録された複数のプログラム要素のうち、当該機能に対応するプログラム要素を前記階層ごとに特定して抽出する利用特性判断部を備え、
前記プログラム検証部は、前記利用特性判断部に抽出されたプログラム要素同士の関連性を検証し、
前記プログラム最適化部は、前記プログラム検証部による検証結果を提示して、プログラム要素間で重複するプログラムロジック及び利用されない不要な情報の修正内容を受け付け、入力された修正内容に基づいてプログラム要素同士の関連性の最適化処理を行い、
前記プログラム再構築部は、前記プログラム最適化部により最適化処理が行われたプログラム要素から、前記利用者の利用特性に応じた機能に対応するプログラム要素に限定されたソフトウェアライブラリを構築することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項４】
前記機能実行部、前記プログラム検証部、前記プログラム最適化部及び前記プログラム再構築部は、利用者との間で対話的に自身の処理に必要な情報を問い合わせ、前記利用者から入力された自身の処理に必要な情報を用いて、前記自身の処理を実行することを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項５】
前記プログラム最適化部は、前記プログラム検証部によりプログラム要素間に重複するプログラムロジックまたは利用されない不要な情報が存在することが特定されると、プログラム要素間で重複するプログラムロジックを一元化し、または前記不要な情報を削除する旨の最適化の実行条件が予め設定されている場合、検証結果の提示及び修正内容を受け付けることなく、当該実行条件に基づいてプログラム要素間で当該プログラムロジックを一元化または前記不要な情報の削除を行うことを特徴とする請求項１記載のソフトウェアライブラリ再構築装置。
【請求項６】
機能実行部と、プログラム抽出部と、プログラム検証部と、プログラム最適化部と、プログラム再構築部とを備えたソフトウェアライブラリ再構築装置のソフトウェアライブラリ再構築方法において、
前記機能実行部が、複数種類のアプリケーションソフトウェアのそれぞれの処理で利用される複数の機能を実現する複数のプログラム要素が、関連するプログラム要素同士の階層に階層化されて登録された汎用ソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能に対応するプログラム要素を前記階層ごとに選び出して実行するステップと、
前記プログラム抽出部が、前記汎用ソフトウェアライブラリに登録された複数のプログラム要素のうち、前記指示された機能を実現するために前記機能実行部によって前記階層ごとに選び出されて実行されたプログラム要素を抽出するステップと、
前記プログラム検証部が、前記プログラム抽出部に抽出されたプログラム要素同士の関連性を検証するステップと、
前記プログラム最適化部が、前記プログラム検証部による検証結果を提示して、プログラム要素間で重複するプログラムロジック及び利用されない不要な情報の修正内容を受け付け、入力された修正内容に基づいてプログラム要素同士の関連性の最適化処理を行うステップと、
前記プログラム再構築部が、前記プログラム最適化部によって最適化処理が行われたプログラム要素から、前記指示された機能に特化したソフトウェアライブラリを構築するステップとを備えたことを特徴とするソフトウェアライブラリ再構築方法。
【請求項７】
出発地から目的地までの経路を探索して誘導案内するナビゲーション処理を行うナビゲーション装置において、
複数種類のナビゲーションソフトウェアのそれぞれのナビゲーション処理で利用される複数の機能を実現する複数のプログラム要素が、関連するプログラム要素同士の階層に階層化されて登録された汎用ソフトウェアライブラリを用いて、前記複数の機能のうち、指示された機能に対応するプログラム要素を前記階層ごとに選び出して実行する機能実行部と、
前記汎用ソフトウェアライブラリに登録された複数のプログラム要素のうち、前記指示された機能を実現するために前記機能実行部によって前記階層ごとに選び出されて実行されたプログラム要素を抽出するプログラム抽出部と、
前記プログラム抽出部に抽出されたプログラム要素同士の関連性を検証するプログラム検証部と、
前記プログラム検証部による検証結果を提示して、プログラム要素間で重複するプログラムロジック及び利用されない不要な情報の修正内容を受け付け、入力された修正内容に基づいてプログラム要素同士の関連性の最適化処理を行うプログラム最適化部と、
前記プログラム最適化部によって最適化処理が行われたプログラム要素から、前記指示された機能に特化したソフトウェアライブラリを構築するプログラム再構築部とを備えたことを特徴とするナビゲーション装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
この発明に係るソフトウェアライブラリ再構築装置は、複数種類のアプリケーションソフトウェアのそれぞれの処理で利用される複数の機能を実現する複数のプログラム要素が、関連するプログラム要素同士の階層に階層化されて登録された汎用ソフトウェアライブラリを用いて、複数の機能のうち、指示された機能に対応するプログラム要素を階層ごとに選び出して実行する機能実行部と、汎用ソフトウェアライブラリに登録された複数のプログラム要素のうち、指示された機能を実現するために機能実行部によって階層ごとに選び出されて実行されたプログラム要素を抽出するプログラム抽出部と、プログラム抽出部に抽出されたプログラム要素同士の関連性を検証するプログラム検証部と、プログラム検証部による検証結果を提示して、プログラム要素間で重複するプログラムロジック及び利用されない不要な情報の修正内容を受け付け、入力された修正内容に基づいてプログラム要素同士の関連性の最適化処理を行うプログラム最適化部と、プログラム最適化部によって最適化処理が行われたプログラム要素から、指示された機能に特化したソフトウェアライブラリを構築するプログラム再構築部とを備える。
【国際調査報告】
2011055417.tif 000022
2011055417.tif 000023