(57)【要約】【課題】プログラム作成者に対して、利用が推奨される機能を提示し、新しく提供される機能の利用確認を行う。【解決手段】フレームワーク機能抽出部３０１は、フレームワークのソースコード１０１において、デザインパターンを用いて提供される機能の提供場所を特定することにより、その機能を抽出する。呼出機能抽出部３０２は、フレームワークを利用する利用プログラムのソースコード２０１において、条件分岐命令を用いた機能の呼び出し箇所の特定することにより、その機能を抽出する。機能提示部３０３は、フレームワーク機能抽出部３０１によって抽出された機能と、呼出機能抽出部３０２によって抽出された機能とに基づいて、フレームワークによって提供される機能の利用プログラムでの利用状態を提示する。表示部４００は、機能提示部３０３によって提示された利用状態を表示する。【選択図】図１
2010211605.tif 000002
【特許請求の範囲】
【請求項１】
フレームワークのソースコードにおいて、デザインパターンを用いて提供される機能の提供場所を特定することにより、その機能を抽出する第１の機能抽出手段と、
前記フレームワークを利用する利用プログラムの条件分岐命令を用いた機能の呼び出し箇所を特定することにより、その機能を抽出する第２の機能抽出手段と、
前記第１の機能抽出手段によって抽出された機能と、前記第２の機能抽出手段によって抽出された機能とに基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する機能提示手段と、
前記機能提示手段によって提示された利用状態を表示する表示手段と、
を備えるプログラム機能提示装置。
【請求項２】
前記機能提示手段は、
前記第１の機能抽出手段によって抽出された機能と、前記第２の機能抽出手段によって抽出された機能との差分に基づいて、前記利用プログラムにおける前記フレームワークによって提供される機能の利用状態を提示することを特徴とする請求項１に記載のプログラム機能提示装置。
【請求項３】
前記機能提示手段は、
前記第１の機能抽出手段によって抽出された機能を基準として、前記第２の機能抽出手段によって抽出された機能が網羅されていることを確認することにより、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示することを特徴とする請求項１に記載のプログラム機能提示装置。
【請求項４】
フレームワークのソースコードにおいて、デザインパターンを用いて提供される機能の提供場所を特定することにより、その機能を抽出する第１の機能抽出工程と、
前記フレームワークを利用する利用プログラムの条件分岐命令を用いた機能の呼び出し箇所を特定することにより、その機能を抽出する第２の機能抽出工程と、
前記第１の機能抽出工程によって抽出された機能と、前記第２の機能抽出工程によって抽出された機能とに基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する機能提示工程と、
前記機能提示工程によって提示された利用状態を表示する表示工程と、
を含むプログラム機能提示方法。
【請求項５】
前記機能提示工程では、
前記第１の機能抽出工程によって抽出された機能と、前記第２の機能抽出工程によって抽出された機能とを差分し、その差分に基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示することを特徴とする請求項４に記載のプログラム機能提示方法。
【請求項６】
前記機能提示工程では、
前記第１の機能抽出工程によって抽出された機能を基準として、前記第２の機能抽出工程によって抽出された機能が網羅されていることを確認することにより、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示することを特徴とする請求項４に記載のプログラム機能提示方法。
【請求項７】
フレームワークのソースコードにおいて、デザインパターンを用いて提供される機能の提供場所を特定することにより、その機能を抽出する第１の機能抽出手順と、
前記フレームワークを利用する利用プログラムの条件分岐命令を用いた機能の呼び出し箇所を特定することにより、その機能を抽出する第２の機能抽出手順と、
前記第１の機能抽出手順によって抽出された機能と、前記第２の機能抽出手順によって抽出された機能とに基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する機能提示手順と、
前記機能提示手順によって提示された利用状態を表示する表示手順と、
をコンピュータに実行させるプログラム。
【請求項８】
前記機能提示手順では、
前記第１の機能抽出手順によって抽出された機能と、前記第２の機能抽出手順によって抽出された機能とを差分し、その差分に基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する手順を、コンピュータに実行させることを特徴とする請求項７に記載のプログラム。
【請求項９】
前記機能提示手順では、
前記第１の機能抽出手順によって抽出された機能を基準として、前記第２の機能抽出手順によって抽出された機能が網羅されていることを確認することにより、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する手順を、コンピュータに実行させることを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアプログラムの改版や移行において、アプリケーションフレームワーク（以下、単に「フレームワーク」と略述する）の新機能を利用するかどうかを確認するに際し、プログラム作成者に対して利用可能な機能を提示するプログラム機能提示装置、プログラム機能提示方法及びプログラムに関する。
【背景技術】
【０００２】
業務用システムのように多種多様な機能が要求されるソフトウェアは、その規模が大きくなる傾向がある。このような大規模なソフトウェアのシステム開発においては、その開発範囲を最小限に抑えるために、フレームワークが用いられるのが一般的である。
【０００３】
フレームワークとは、ソフトウェアのプログラミングにおいて、アプリケーションソフトウェア（以下、「アプリケーション」と略述する）の標準構造を実装するのに用いられるクラスやライブラリの集まりである。多くの再利用可能なコードをフレームワークにまとめることによって、プログラム作成者の手間を省き、新たなアプリケーションのために標準的なコードを改めて書かなくて済むようになる。フレームワークは、アプリケーションとは独立して別々の者によって作成される。フレームワークのインターフェイスは公開されており、プログラム作成者は、公開されたインターフェイス等の情報を参照しながら、アプリケーションを開発する。
【０００４】
一方、プログラムの作成を支援する支援システムが、幾つか提案されている（例えば、特許文献１、２参照）。
【０００５】
特許文献１には、ソフトウェアの新機能の開発時に、要求仕様書に基づいて、変更すべきソースを特定してプログラム作成者に対して提示するソフトウェア開発支援装置が開示されている。
【０００６】
また、特許文献２に記載のシステムは、概念図工エディタ、概略図詳細図変換部、詳細図工エディタ、プログラム変換部、部品関連データベース、設計知識データベースと、から構成されている。概念図工エディタは、利用者にプログラムの構成要素である概略部品の候補を提示する。利用者は、それを用いて概略図を完成させる。すると、概略図詳細図変換部は、部品関連データベースを用いて、概略図を詳細図に変換する。プログラム変換部は、詳細図の詳細部品をプログラムに変換する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２５０９４６号公報
【特許文献２】特開平０５−２３３２４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
フレームワークは、日々改版され、新しい機能の追加又は機能が変更される。したがって、追加又は変更された機能を利用するためには、プログラム作成者は、その情報を独自に入手して、自らのアプリケーションの開発に反映する必要がある。このような作業は、プログラム作成者にとって、非常に煩わしいものであり、提供された新機能の利用を忘れたり、修正ミスが生じたりするおそれもある。
【０００９】
また、フレームワークは改版される度に、その機能が充実し、利用頻度が高い機能が追加又は変更されている。しかしながら、提供される機能の存在を、プログラム作成者が把握しておらず、フレームワークによって提供される機能を利用した方が良いにもかかわらず、自らが作成した機能をそのまま利用し続けるおそれもある。
【００１０】
この点に関し、上記特許文献１の記載のソフトウェア開発支援装置では、要求仕様書と実際のソースコードとの間に齟齬がある場合には、プログラム作成者に対して、変更すべきソースを正確に提示するのが困難となる。
【００１１】
また、上記特許文献２に記載されたシステムを用いても、このような煩わしさは、解消されることがない。
【００１２】
本発明は、上記事情に鑑みてなされたものであり、アプリケーションフレームワーク等のプログラムによって提供される機能を利用するプログラムを作成する際に、プログラム作成者に対して、利用が推奨される機能を提示するプログラム機能提示装置、プログラム機能提示方法及びプログラムを提供することを目的とする。
また、本発明は、アプリケーションフレームワークを用いたプログラムの移行において、プログラム作成者が、新しく提供される機能の利用確認を行うことができるプログラム機能提示装置、プログラム機能提示方法及びプログラムを提供することを他の目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明の第１の観点に係るプログラム機能提示装置は、
フレームワークのソースコードにおいて、デザインパターンを用いて提供される機能の提供場所を特定することにより、その機能を抽出する第１の機能抽出手段と、
前記フレームワークを利用する利用プログラムの条件分岐命令を用いた機能の呼び出し箇所を特定することにより、その機能を抽出する第２の機能抽出手段と、
前記第１の機能抽出手段によって抽出された機能と、前記第２の機能抽出手段によって抽出された機能とに基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する機能提示手段と、
前記機能提示手段によって提示された利用状態を表示する表示手段と、
を備える。
【００１４】
本発明の第２の観点に係るプログラム機能提示方法は、
フレームワークのソースコードにおいて、デザインパターンを用いて提供される機能の提供場所を特定することにより、その機能を抽出する第１の機能抽出工程と、
前記フレームワークを利用する利用プログラムの条件分岐命令を用いた機能の呼び出し箇所を特定することにより、その機能を抽出する第２の機能抽出工程と、
前記第１の機能抽出工程によって抽出された機能と、前記第２の機能抽出工程によって抽出された機能とに基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する機能提示工程と、
前記機能提示工程によって提示された利用状態を表示する表示工程と、
を含む。
【００１５】
本発明の第３の観点に係るプログラムは、
フレームワークのソースコードにおいて、デザインパターンを用いて提供される機能の提供場所を特定することにより、その機能を抽出する第１の機能抽出手順と、
前記フレームワークを利用する利用プログラムの条件分岐命令を用いた機能の呼び出し箇所を特定することにより、その機能を抽出する第２の機能抽出手順と、
前記第１の機能抽出手順によって抽出された機能と、前記第２の機能抽出手順によって抽出された機能とに基づいて、前記フレームワークによって提供される機能の前記利用プログラムでの利用状態を提示する機能提示手順と、
前記機能提示手順によって提示された利用状態を表示する表示手順と、
をコンピュータに実行させる。
【発明の効果】
【００１６】
本発明によれば、アプリケーションフレームワーク等のプログラムによって提供される機能を利用するプログラムを作成する際に、プログラム作成者に対して、利用が推奨される機能を提示することができる。
また、本発明によれば、アプリケーションフレームワークを用いたプログラムの移行において、プログラム作成者が、新しく提供される機能の利用確認を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態に係るプログラム機能提示装置の概略的な構成を示すブロック図である。
【図２】図１のプログラム機能提示装置の動作を示すフローチャートである。
【図３】フレームワーク及び利用プログラムの一例（その１）を示す図である。
【図４】本発明の第２の実施形態に係るプログラム機能提示装置の概略的な構成を示すブロック図である。
【図５】図４のプログラム機能提示装置の動作を示すフローチャートである。
【図６】フレームワーク及び利用プログラムの一例（その２）を示す図である。
【発明を実施するための形態】
【００１８】
（第１の実施形態）
次に、本発明の第１の実施形態について説明する。
【００１９】
図１に示すように、本実施形態に係るプログラム機能提示装置１は、記憶部１００、２００と、フレームワーク機能抽出部３０１と、呼出機能抽出部３０２と、機能提示部３０３と、表示部４００と、を備えている。プログラム機能提示装置１として、例えば、ソフトウェア開発に用いられるコンピュータを用いることができる。この場合、フレームワーク機能抽出部３０１と、呼出機能抽出部３０２と、機能提示部３０３と、表示部４００とは、このコンピュータのＣＰＵがプログラムを実行することにより実現される。
【００２０】
記憶部１００には、フレームワークのソースコード１０１が格納されている。フレームワークとは、システムのアーキテクチャを再利用可能なプログラムとして提供されるものである。
【００２１】
記憶部２００には、フレームワークを利用するアプリケーションプログラム（以下、「利用プログラム」又は「オウンコーディングプログラム」と称する）のソースコード２０１が格納されている。オウンコーディングプログラムとは、ウェブアプリケーションフレームワークを利用し、システムの機能を実現するプログラムである。
【００２２】
フレームワーク機能抽出部３０１は、フレームワークのソースコード１０１からフレームワークによって提供される機能を抽出する。より具体的には、フレームワーク機能抽出部３０１は、フレームワークのソースコード１０１を、記憶部１００から読み込み、フレームワークによって提供される機能を抽出する。
【００２３】
呼出機能抽出部３０２は、利用プログラムのソースコード２０１において、フレームワークによって提供されている機能を呼び出している部分（機能の呼び出し箇所）を特定する。機能の呼び出し箇所とは、フレームワークによって提供されている機能を、利用プログラムで呼び出している処理のことを指す。呼出機能抽出部３０２は、利用プログラムのソースコード２０１を読み込み、フレームワークによって提供されている機能を呼び出している箇所を特定し、その部分を抽出する。
【００２４】
機能提示部３０３は、フレームワーク機能抽出部３０１によって抽出された機能と、呼出機能抽出部３０２によって抽出された機能との差分を抽出し、その差分結果に相当する機能の一覧（リスト）を作成する。
【００２５】
表示部４００は、任意の形式に従って、機能提示部３０３によって作成された機能一覧を表示する。
【００２６】
次に、本実施形態に係るプログラム機能提示装置１のさらなる詳細な動作について説明する。
【００２７】
図２に示すように、まず、フレームワーク機能抽出部３０１は、フレームワークのソースコード１０１を記憶部１００から読み込む（ステップＡ１）。次に、フレームワーク機能抽出部３０１は、読み込まれたフレームワークのソースコード１０１からデザインパターンを利用して機能を提供している箇所を特定する（ステップＡ２）。さらに、フレームワーク機能抽出部３０１は、特定された箇所から機能を抽出し、それらの機能の一覧を作成する（ステップＡ３）。
【００２８】
次に、呼出機能抽出部３０２は、利用プログラムのソースコード２０１を記憶部２００から読み込む（ステップＡ４）。続いて、呼出機能抽出部３０２は、条件分岐命令を用いた機能の呼び出し箇所を特定する（ステップＡ５）。さらに、呼出機能抽出部３０２は、特定された呼び出し箇所に基づいて、利用プログラムから呼び出されている機能の一覧を作成する（ステップＡ６）。
【００２９】
次に、機能提示部３０３は、フレームワーク機能抽出部３０１によって抽出された機能（デバイスパターンを用いた機能）と、呼出機能抽出部３０２によって抽出された機能（呼び出す機能）との差分を取得する（ステップＡ７）。続いて、機能提示部３０３は、取得された差分に対応する機能の一覧を作成し、表示部４００により、その機能の一覧が表示される（ステップＡ８）。利用プログラムの作成者は、この表示を見て、利用プログラムにおいて利用されていない機能のうち、利用すべき機能がその一覧の中にあるか否かを確認する。
【００３０】
次に、本実施形態に係るプログラム機能提示装置１を、Strutsフレームワークを用いたソフトウェアの開発に利用する場合について説明する。Strutsフレームワークとは、ウェブアプリケーションフレームワークの１つである。Strutsフレームワークは、ウェブシステムのアーキテクチャを再利用可能なJava（登録商標）プログラムとして提供されている。
【００３１】
記憶部１００には、Strutsフレームワークのソースコード１０１（例えば、図３のフレームワーククラスのクラスＡ）が格納されている。記憶部２００には、オウンコーディングプログラムのソースコード２０１（例えば、図３のオウンコーディングクラスのクラスＢ）が格納されている。
【００３２】
フレームワーク機能抽出部３０１は、Strutsフレームワークのソースコード１０１を記憶部１００から読み込み、デザインパターンを用いた機能を抽出する（ステップＡ１〜Ａ３）。例えば、フレームワーク機能抽出部３０１は、Strutsフレームワークのソースコード１０１からVisitorパターンを用いて実現されている機能を抽出する。図３の例であれば、クラスα（機能１）、クラスβ（機能２）、クラスθ（機能３）が抽出される。
【００３３】
呼出機能抽出部３０２は、オウンコーディングプログラム（利用プログラム）のソースコード２０１から、if〜else条件制御文で機能を呼び出している箇所を抽出する。if〜else条件制御文とは、プログラムの制御文の１つで、条件に応じて、適切な処理を振り分けることができる命令に対応するプログラムコードである。ここで、図３の例であれば、クラスＢのif〜else条件制御文では、クラスα、βが呼び出されている箇所が特定され、呼び出される機能としてクラスα、βが抽出される。
【００３４】
機能提示部３０３は、フレームワーク機能抽出部３０１によって抽出された機能が、if〜else条件制御文で呼び出されているかどうかを検査し、その差分（すなわち呼び出されていない機能）を抽出する。図３の例であれば、クラスθ（機能３）が差分として求められる。すなわち、クラスθ（機能３）が、オウンコーディングプログラムで呼び出されていない機能として提示される。
【００３５】
表示部４００は、この差分結果を、オウンコーディングプログラム（利用プログラム）の開発者に対し提示するために、表示する。図３の例であれば、クラスθ（機能３）が
表示される。利用プログラムの作成者は、この表示を見て、クラスθ（機能３）を呼び出すように、利用プログラムを修正する。
【００３６】
なお、Visitorパターン以外のデザインパターンで実現される機能を抽出する場合には、呼出機能抽出部３０２は、抽出アルゴリズムを変更して、機能の抽出を行う必要がある。
【００３７】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【００３８】
図４に示されるように、本実施形態に係るプログラム機能提示装置１’は、機能提示部３０３の代わりに、機能提示部３０３’を備えている点が、上記第１の実施形態と異なる。プログラム機能提示装置１’は、上記第１の実施形態に係るプログラム機能提示装置１を用いて、利用プログラムの追加変更を行った後、プログラムの移行時に用いられるものである。
【００３９】
機能提示部３０３’は、フレームワーク機能抽出部３０１によって抽出された機能を基準として、呼出機能抽出部３０２によって抽出された機能が網羅されていることを確認する。より具体的には、機能提示部３０３’は、フレームワークによって提供される機能が、利用プログラムで呼び出される機能にすべて含まれているか否かを調べる。
【００４０】
次に、本実施形態に係るプログラム機能提示装置１’の動作について説明する。図５に示すステップＢ１〜Ｂ６は、図３のステップＡ１〜Ａ６と同じであるため、詳細な説明を省略する。
【００４１】
ステップＢ６実行後、機能提示部３０３’は、フレームワーク機能抽出部３０１によって抽出された機能を基準として、呼出機能抽出部３０２によって抽出された機能が網羅されているか否かを判定する（ステップＢ７）。より具体的には、機能提示部３０３’は、ステップＢ３で抽出された機能が、ステップＢ６で抽出された機能にすべて含まれているか否かを調べる。
【００４２】
続いて、表示部４００は、その確認結果、すなわち、利用プログラムがフレームワークの移行対応済みであるか否かを表示する（ステップＢ８）。
【００４３】
例えば、図６の例であれば、フレームワーク機能抽出部３０１は、Strutsフレームワークのソースコード１０１からVisitorパターンを用いて実現されている機能として、クラスα（機能１）、クラスβ（機能２）、クラスθ（機能３）を抽出する。また、呼出機能抽出部３０２は、クラスＢのif〜else条件制御文では、クラスα、β、θが呼び出されている箇所を特定し、呼び出される機能としてクラスα、β、θが抽出される。機能提示部３０３’は、ステップＢ３で抽出された機能が、ステップＢ６で抽出された機能にすべて含まれていることを確認する。表示部４００は、機能がすべて網羅されている旨の表示を行う。
【００４４】
以上詳細に説明したように、上記第１の実施形態によれば、アプリケーションフレームワーク等のプログラムによって提供される機能を利用するプログラムを作成する際に、利用プログラムで利用されていないフレームワークの機能を表示することができるので、プログラム作成者が、利用が推奨される機能を容易に知ることができる。
【００４５】
また、上記第２の実施形態によれば、利用プログラムでフレームワークの機能を利用しているか否かを表示することができるので、アプリケーションフレームワークを用いたプログラムの移行において、プログラム作成者が、新しく提供される機能の利用確認を容易に行うことができる。
【００４６】
上記各実施形態に係るプログラム機能提示装置は、上述のように、ＣＰＵ、メモリ、ハードディスクなどの記憶ユニット、ネットワーク接続用インターフェイスを中心とするハードウェアと、プログラム等のソフトウェアとが、協働することによって実現されるものである。そして、その実現方法、装置には、いろいろな変形例が存在することは、当業者によって理解されるところである。
【産業上の利用可能性】
【００４７】
本発明は、ソフトウェアの開発者が利用していないアプリケーションフレームワークの機能を提示可能であるため、フレームワークを利用したプログラムの作成支援に適用することができる。また、アプリケーションフレームワークによっては、必ず利用しなければならない機能も存在するが、本発明は、その機能を呼び出し側のプログラムが利用しているかどうかの確認にも、適用可能である。
【符号の説明】
【００４８】
１、１’  プログラム機能提示装置
１００、２００  記憶部
１０１  フレームワークのソースコード
２０１  利用プログラム（オウンコーディングプログラム）のソースコード
３０１  フレームワーク機能抽出部
３０２  呼出機能抽出部
３０３、３０３’  機能提示部
４００  表示部
【図１】
2010211605.tif 000003
【図２】
2010211605.tif 000004
【図３】
2010211605.tif 000005
【図４】
2010211605.tif 000006
【図５】
2010211605.tif 000007
【図６】
2010211605.tif 000008