(57)【要約】【課題】動的に最適なソフトウェアを選定し、選定されたソフトウェアを用いて動作効率の良いソースコードを生成するソースコード生成装置等を提供する。【解決手段】本発明のソースコード生成装置２００は、複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、アプリケーションに含まれる複数の処理に関して、処理の数、種類、実行順位およびアプリケーションにおいて利用されている機能を解析する構造解析部１５と、構造解析部による解析結果と、複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、処理の各々に使用すべきソフトウェアを選択する構成分析部１７と、設計情報と、構成分析部による選択結果とを基に、処理の各々に対応する選択されたソフトウェアによって記述されたソースコード情報を生成するソース生成部１９とを備える。【選択図】      図２１
2016062300.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、前記アプリケーションに含まれる前記複数の処理に関して、処理の数、種類、実行順位および前記アプリケーションにおいて利用されている機能を解析する構造解析手段と、
前記構造解析手段による解析結果と、前記複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、前記アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、前記処理の各々に使用すべきソフトウェアを選択する構成分析手段と、
前記設計情報と、前記構成分析手段による選択結果とを基に、前記処理の各々に対応する前記選択されたソフトウェアによって記述されたソースコード情報を生成するソース生成手段
とを備えるソースコード生成装置。
【請求項２】
前記特性情報は、第一の処理を行う第一のソフトウェアと、その第一の処理後に第二の処理を行う第二のソフトウェアとの間の入出力の変換に必要な時間とが関連付けされた変換情報を含み、
前記構成分析手段は、前記処理の各々において、前記使用すべきソフトウェアによって処理を実行した場合の実行時間および前記変換情報から得る前記使用すべきソフトウェアに関する入出力の変換に必要な時間の合算値である第一の処理時間と、前記使用すべきソフトウェア以外のソフトウェアで処理を実行した場合の実行時間および前記変換情報から得る前記使用すべきソフトウェア以外のソフトウェアの入出力の変換に必要な時間の合算値である第二の処理時間とを比較して、前記使用すべきソフトウェアを、より短い処理時間を要する第一または第二のソフトウェアに、置き換える、
請求項１に記載のソースコード生成装置。
【請求項３】
前記特性情報は、物理量的に計測が可能な定量的な特性情報と、択一的に選択可能な定性的な特性情報を含み、
前記構成分析手段は、前記定性的な特性情報に対応しないソフトウェアについては、前記分析を行わない、
請求項１又は２に記載のソースコード生成装置。
【請求項４】
前記定量的な特性情報は、前記処理における処理可能件数およびメモリ使用容量を基に、複数作成される、
請求項１乃至３のいずれかに記載のソースコード生成装置。
【請求項５】
前記構成分析部は、前記非機能要件に含まれる要件を基に、前記要件を満たす前記定量的な特性情報を選択し、前記選択された定量的な特性情報を用いて前記使用すべきソフトウェアを選択する、
請求項１乃至４のいずれかに記載のソースコード生成装置。
【請求項６】
情報処理装置が、
複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、前記アプリケーションに含まれる前記複数の処理に関して、処理の数、種類、実行順位および前記アプリケーションにおいて利用されている機能を解析し、
前記解析による解析結果と、前記複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、前記アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、前記処理の各々に使用すべきソフトウェアを選択し、
前記設計情報と、前記選択結果とを基に、前記処理の各々に対応する前記選択されたソフトウェアによって記述されたソースコード情報を生成する、
ソースコード生成方法。
【請求項７】
複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、前記アプリケーションに含まれる前記複数の処理に関して、処理の数、種類、実行順位および前記アプリケーションにおいて利用されている機能を解析する機能と、
前記解析による解析結果と、前記複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、前記アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、前記処理の各々に使用すべきソフトウェアを選択する機能と、
前記設計情報と、前記選択結果とを基に、前記処理の各々に対応する前記選択されたソフトウェアによって記述されたソースコード情報を生成する機能
とをコンピュータに実行させるソースコード生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション生成において使用されるソースコード生成装置等に関する。
【背景技術】
【０００２】
データ量の増加に伴い、一纏まりの処理を実行するソフトウェア（以下、「アプリケーション」と記載）に要求される性能目標を達成することが難しくなってきている。データベース入出力、ファイル入出力、ソート、マージ等のバッチアプリケーションを構成する処理要素全てを一種類のソフトウェアで構成すると、その要求を満たすことが難しいことがある。このような場合、ソフトウェア全体の性能を上げるためには、一部の処理を、その処理が得意なソフトウェアで置き換えるといった対策が必要である。
【０００３】
一例として、特定の言語または特定のソフトウェアに対応したソースコードを生成するプログラム生成装置について説明する。このプログラム生成装置では、複数のソフトウェアを組み合わせる際、処理とソフトウェアとを一対一に関連づけて静的に出力するか、ユーザが処理を意識して手動で処理を記述するか、生成後のソースを編集して処理を変更している。特許文献１には、処理とソフトウェアとを一対一に関連づける手法を用いて、システム全体の性能予測を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４-２２０４５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術では、システム全体を処理の対象としており、アプリケーション内部のロジック単位でタスク処理とソフトウェアを紐づけて処理することはできない。また、各タスク処理が最適な性能を出すように、使用するソフトウェアを切り替えることはできない。
【０００６】
本発明は上記の課題を解決するべくなされた。本発明は、アプリケーション生成処理において、動的に最適なソフトウェアを選定し、選定されたソフトウェアを用いて動作効率の良いソースコードを生成するソースコード生成装置等を提供することを主たる目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明の第１の観点は、  複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、アプリケーションに含まれる複数の処理に関して、処理の数、種類、実行順位およびアプリケーションにおいて利用されている機能を解析する構造解析部と、構造解析部による解析結果と、複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、処理の各々に使用すべきソフトウェアを選択する構成分析部と、設計情報と、構成分析部による選択結果とを基に、処理の各々に対応する選択されたソフトウェアによって記述されたソースコード情報を生成するソース生成部とを備えるソースコード生成装置である。
【０００８】
本発明の第２の観点は、情報処理装置が、複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、アプリケーションに含まれる複数の処理に関して、処理の数、種類、実行順位およびアプリケーションにおいて利用されている機能を解析し、解析による解析結果と、複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、処理の各々に使用すべきソフトウェアを選択し、設計情報と、選択結果とを基に、処理の各々に対応する選択されたソフトウェアによって記述されたソースコード情報を生成する、ソースコード生成方法である。
【０００９】
本発明の第３の観点は、複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、アプリケーションに含まれる複数の処理に関して、処理の数、種類、実行順位およびアプリケーションにおいて利用されている機能を解析する機能と、解析による解析結果と、複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、処理の各々に使用すべきソフトウェアを選択する機能と、設計情報と、選択結果とを基に、処理の各々に対応する選択されたソフトウェアによって記述されたソースコード情報を生成する機能とをコンピュータに実行させるソースコード生成プログラムである。
【発明の効果】
【００１０】
本発明によれば、アプリケーション生成処理において、動的に最適なソフトウェアを選定し、選定されたソフトウェアを用いて動作効率の良いソースコードを生成することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第一の実施形態に係るソースコード生成装置の一構成例を示したブロック図である。
【図２】本発明の第一の実施形態に係る定量的な特性情報の表を示す図である。
【図３】本発明の第一の実施形態に係る定量的な特性情報の表を示す図である。
【図４】本発明の第一の実施形態に係る定量的な特性情報の表を示す図である。
【図５】本発明の第一の実施形態に係る定量的な特性情報の表を示す図である。
【図６】本発明の第一の実施形態に係る定量的な特性情報の表を示す図である。
【図７】本発明の第一の実施形態に係る定量的な特性情報（変換テーブル）の表を示す図である。
【図８】本発明の第一の実施形態に係る定性的な特性情報の表を示す図である。
【図９】本発明の第一の実施形態に係る非機能要件情報の表を示す図である。
【図１０】本発明の第一の実施形態に係るＡＰ解析結果の表を示す図である。
【図１１】本発明の第一の実施形態に係るＡＰ解析結果の表を示す図である。
【図１２】本発明の第一の実施形態に係るＳＷ分析結果の表を示す図である。
【図１３】本発明の第一の実施形態に係る出力するソースコードの一例を示す図である。
【図１４】本発明の第一の実施形態に係るソースコード生成装置の全体動作を示すフローチャートである。
【図１５】本発明の第一の実施形態に係るソースコード生成装置のＳＷ分析の動作を示すフローチャートである。
【図１６】本発明の第一の実施形態に係るソースコード生成装置のＳＷ分析の動作を示すフローチャートである。
【図１７】本発明の第一の実施形態に係るＳＷ分析において作成されるグラフ図である。
【図１８】本発明の第一の実施形態に係るＳＷ分析の動作を示すフローチャートである。
【図１９】本発明の第一の実施形態に係るソースコード生成装置のＳＷ分析の変更例の動作を示すフローチャートである。
【図２０】本発明の第一の実施形態に係るソースコード生成装置のソースコード生成の動作を示すフローチャートである。
【図２１】本発明の第二の実施形態に係るソースコード生成装置の一構成例を示したブロック図である。
【発明を実施するための形態】
【００１２】
次に図面を参照して、本発明の実施形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は本発明の実施形態における構成を模式的に表している。更に以下に記載される実施形態は一例であり、その本質を同一とする範囲において適宜変更可能である。
＜第一の実施形態＞
（ソースコード生成装置）
第一の実施形態に係るソースコード生成装置１００の備える構成を図１に示す。ソースコード生成装置１００は、入力部１、特性情報記憶部２、非機能要件記憶部３、設計情報記憶部４、ＡＰ構造解析部５、ＡＰ解析一時記憶部６、ＳＷ構成分析部７、ＳＷ分析一時記憶部８、ソース生成部９、ソース記憶部１０および出力部１１を備える。尚、ＡＰ構造解析部５およびＡＰ解析一時記憶部６のＡＰはアプリケーションの略であり、ＳＷ構成分析部７およびＳＷ分析一時記憶部８のＳＷはソフトウェアの略である。
【００１３】
入力部１は、アプリケーションの設計情報と非機能要件とを入力可能な通信インタフェースである。更に、入力部１は、設計情報と非機能要件を入力し、入力された設計情報および非機能要件の編集を操作可能とするキーボード、マウス、タッチパネル等も含む。
【００１４】
特性情報記憶部２は、特性情報を記憶する。特性情報は、アプリケーションを生成する際に、ソフトウェアの選択の指標となる「定量的な特性情報」と「定性的な特性情報」とを含む。
【００１５】
「定量的な特性情報」は、性能やメモリ容量等のように、量的な値としてディスプレイ等の出力部１１において表示可能な特性情報である。図２乃至７は、アプリケーションで利用される典型的なパターンの実行性能の定量値を例示した表（テーブル）である。図２乃至７においては、行項目に所定ソフトウェアの識別子、例えば「ＳＷ＿Ａ（ｓ）」「ＳＷ＿Ｂ（ｓ）」「ＳＷ＿Ｃ（ｓ）」「ＳＷ＿Ｄ（ｓ）」が記載されている。列項目にアプリケーションの種類、例えば「データベース読込」「ファイル読込」「データベース出力」「ソート」「マージ」「選択」等が記載されている。このような構成を有する各表において、表内には、上記のソフトウェア（行）が上記のアプリケーション（列）を、所定件数のデータ且つ所定のメモリ容量を使用しながら実行する場合の実行時間(秒)が表わされている。アプリケーション自体がないものは表中「−」で表している。実行時間は、その数値が小さいほど実行速度が高いく、性能が良いことを示している。
【００１６】
図２は、１万件のデータを１ＧＢ（ギガバイト）のメモリ容量で実行する場合の実行時間が示されている。図３は、１０万件のデータを１ＧＢのメモリ容量で実行する場合の実行時間が示されている。図４は、１００万件のデータを１ＧＢのメモリ容量で実行する場合の実行時間が示されている。図５は、１０万件のデータを５ＧＢのメモリ容量で実行する場合の実行時間が示されている。図６は、１０件のデータを１０ＧＢのメモリ容量で実行する場合の実行時間が示されている。
【００１７】
定量的な特性情報における条件が異なると、実行結果は異なる。図２乃至４の表は、係る条件として、処理件数を変えた場合の実行時間の違いを示す。図３、５、６の表は、メモリ容量を変更した場合の実行時間の違いを示す。これらは一例であり、この他にも、任意の条件や時間間隔等での測定が可能である。又、アプリケーションの種別によっても様々な条件が考えられる。
【００１８】
図７は、利用するソフトウェア間のデータ変換に要する時間をまとめた変換テーブルである。変換テーブルは定量的な特性情報の一つである。あるアプリケーションを実行する際に、あるソフトウェアから異なる種類のソフトウェアに処理を移行する場合、その処理の形式をソフトウェアが処理できる形式に変換する時間が必要な場合がある。例えば、図７の２列目のソフトウェアＢ（ＳＷ＿Ｂ）から、１行目のソフトウェアＡ（ＳＷ＿Ａ）に変換するには２秒必要である。尚、変換時間が必要ないものは０秒、変換時間量が多いものほど大きな数値が記されている。
【００１９】
「定性的な特性情報」は、図８に示すように、ソフトウェアの種類毎の所定言語対応および機能等の有無について表した情報である。図８では、言語および機能の対応状況について、対応しているものに「○」、未対応のものに「×」が記されている。
【００２０】
非機能要件記憶部３は、非機能要件情報を記憶する。非機能要件情報とは、各アプリケーションを実行するために必要とされる性能値やメモリ使用量等であり、例えば、図９に示すように、項目、値、優先度等から構成される。項目とは、あるアプリケーションに必要となるハードウェア容量やソフトウェア能力等であり、具体的には「性能」、「信頼性」、「メモリ使用量」、「データ量」等がある。値は、各項目の性能値である。優先度は、そのアプリケーションにおいて、その項目がどれほど重要であるかを示す。
【００２１】
設計情報記憶部４は、設計情報を記憶する。設計情報とは、作成するアプリケーションについての処理フローおよび利用するデータベースに格納されるデータファイルの設定項目等であり、実際に動作可能なアプリケーションを生成するのに必要な定義情報である。設計情報は、既存のプログラム生成技術（例えば特開２００５-２２８２３５号公報および特開２０１２-２１２２８６号公報参照）に開示されているものを使用してよい。
【００２２】
ＡＰ解析一時記憶部６は、ＡＰ構造解析部５のＡＰ解析結果を一時記憶する。ＡＰ解析結果とは、例えば図１０に示す、あるアプリケーションを構成する処理の種類とその実行順位を示す表である。また、ＡＰ解析結果とは、例えば図１１に示す、あるアプリケーションにおいて、利用されている機能の有無を示す表である。
【００２３】
ＳＷ分析一時記憶部８は、ＳＷ構成分析部７が出力する、図１２に例示するＳＷ分析結果を一時記憶する。ＳＷ分析結果は、図１０のＡＰ解析結果で出力された各処理に対し、最も適すると分析されたソフトウェアの種類が記された表である。
【００２４】
ソース記憶部１０は、ソース生成部９で生成されたソースコード、リソースファイルおよび設定ファイル等を記憶する。ソースコードとしては、例えば図１３に示すように、各処理のソースが記述される。
【００２５】
ＡＰ構造解析部５は、設計情報記憶部４から取得する設計情報から、アプリケーションを構成する処理の種類とその実行順位を解析する。また、アプリケーションにおいて、利用されている機能の有無を解析する。
【００２６】
設計情報には既存の技術（例えば特開２００５−２２８２３５号公報および特開２０１２−２１２２８６号公報）で開示されている、アプリケーションの処理フローや定義情報が含まれる。
【００２７】
ＳＷ構成分析部７は、ＡＰ解析一時記憶部６に格納されるＡＰ解析結果、特性情報記憶部２に格納される特性情報、および非機能要件記憶部３に格納される非機能要件を取得する。そしてＳＷ構成分析部７は、取得したＡＰ解析結果、特性情報および非機能要件を分析し、どの処理でどのソフトウェアを利用すべきかを示す分析結果を出力する。出力されたＳＷ分析結果は、ＳＷ分析一時記憶部８に格納される。
【００２８】
ソース生成部９は、設計情報記憶部４から取得する設計情報と、ＳＷ分析一時記憶部８から取得するＳＷ分析結果を基に、あるアプリケーションにおける、ソースコード、リソースファイルおよび設定ファイルを生成する。
【００２９】
出力部１１は、構成分析部６の分析結果を表示および出力するためのモニタおよびプリンタ等である。
【００３０】
尚、上述した構造解析部５、構成分析部６およびソース生成部７の各部は、機能ブロック単位のプログラムを表している。これらは実際には、図示しないコンピュータのＣＰＵ（Central Processing Unit）、図示しないＲＯＭ（Read Only Memory）や図示しないＲＡＭ(Random Access Memory)などに格納されている。図示しないＣＰＵがこれらのプログラムを適宜演算処理することでこれらの機能は実行される。尚、構造解析部５、構成分析部７およびソース生成部９の各々がＣＰＵであってもよい。
（ソースコード生成装置の動作）
ソースコード生成装置１００の全体動作について図１４のフローチャートを参照して説明する。
【００３１】
まずステップＳ１において、ＡＰ構造解析部５は、設計情報記憶部４から取得する設計情報から、アプリケーションを構成する処理の種類とその実行順位を解析する。また、アプリケーションにおいて、利用されている機能の有無を解析する。解析結果はＡＰ解析一時記憶部６に格納される。
【００３２】
ステップＳ２において、ＳＷ構成分析部７は、ＡＰ解析一時記憶部６に格納されるＡＰ解析結果、特性情報記憶部２に格納される特性情報、および非機能要件記憶部３に格納される非機能要件を取得して、取得したＡＰ解析結果、特性情報および非機能要件を分析する。分析は、定性的な特性情報、定量的な特性情報および非機能要件情報に対して行われる。これらの分析の結果、ＳＷ構成分析部７は、どの処理でどのソフトウェアを利用すべきかを示す分析結果を出力部１１に出力し、更にＳＷ分析一時記憶部８に格納する。ステップＳ２の詳細は後述する。
【００３３】
最後にステップＳ３において、ソース生成部９は、設計情報記憶部４から取得する設計情報と、ＳＷ分析一時記憶部８から取得するＳＷ分析結果を基に、あるアプリケーションにおける、ソースコード、リソースファイルおよび設定ファイルを生成する。ステップＳ３の詳細は後述する。
（ステップＳ２詳細）
次に、ステップＳ２のＳＷ構成分析部７の動作について図１５のフローチャートを用いて説明する。
【００３４】
まずステップＳ１０１において、ＳＷ構成分析部７は、特性情報記憶部２から定性的な特性情報を取得し、対応言語、対応機能、使用するソフトウェアの種類についての情報を得る。
【００３５】
ステップＳ１０２において、ＳＷ構成分析部７は、ＡＰ解析一時記憶部６からＡＰ解析結果（図１１）を取得し、アプリケーションが利用している特性を有していないソフトウェアを除外する。例えば、図１１においては、Ｃ言語は利用不可能であるので、ここで使用可能なソフトウェアから除外する。
【００３６】
ステップＳ１０３において、ＳＷ構成分析部７は、特性情報記憶部２から定量的な特性情報（図２〜６）を、非機能要件記憶部３から非機能要件（図９）を各々取得し、非機能要件と、最も条件が近い定量的な特性情報を選択する。この選択処理については後述する。
【００３７】
ステップＳ１０４において、選択された定量的な特性情報の分析を実施する。この分析処理については後述する。
（ステップＳ１０３詳細）
次に、ステップＳ１０３について図１６のフローチャートを用いて詳細に説明する。
【００３８】
まず、ステップＳ２０１において、ＳＷ構成分析部７は、非機能要件と一致する定量的な特性情報が存在するか確認する。ステップＳ２０２において、一致する定量的な特性情報がある場合はステップＳ２０３の処理へ進み、一致する定量的な特性情報がない場合はステップＳ２０４の処理へ進む。
【００３９】
ステップＳ２０３において、ＳＷ構成分析部７は、一致する定量的な特性情報を選択する。例えば、図９に示す非機能要件は、メモリ５ＧＢ以下で、１０万件のデータ処理を行う必要がある。更に、性能とメモリ使用量の優先度が高い。これに合致するのは図５に示されるメモリ５ＧＢ、データ処理数１０万件の定量的な特性情報である。よってこの定量的な特性情報を選択する。
【００４０】
ステップＳ２０４において、ＳＷ構成分析部７は、合致する定量的な特性情報が選択出来ない場合は、不一致な条件の内、優先度の高い非機能要件に合致する定量的な特性情報があるかを調べる。例えば、図９に示す非機能要件では、メモリ使用量の重要度が高いため、メモリ使用量に注目し、近似する定量的な特性情報を検索する。
【００４１】
ステップＳ２０５において、ＳＷ構成分析部７は、検索された近似するメモリ容量を有する定量的な特性情報を基に、シミュレーショングラフを作成する。例えば、メモリ使用量の重要度が高く、メモリ使用が１ＧＢであることが条件だとすると、図２乃至４に示す表に記載された定量的な特性情報を得る。これらの表は、メモリ容量が１ＧＢで、処理件数を１万件、１０万件、１００万件と変えた場合の実行時間の違いを示している。ここで仮に、ＳＷ＿Ｂに注目すると、１万件処理する場合（図２参照）は、ＤＢ読み込みは３秒、ファイル出力は５秒、ソートは１５秒必要である。１０万件処理する場合は（図３参照）、ＤＢ読み込みは６秒、ファイル出力は８秒、ソートは３０秒必要である。１００万件処理する場合（図４参照）は、ＤＢ読み込みは２０秒、ファイル出力は２０秒、ソートは５０秒必要である。これらのデータを基にシミュレーショングラフを作成すると図１７に示すようなグラフとなる。このグラフを基に、メモリ１ＧＢで、ある処理が、ある件数を実行するのに何秒必要かを計算し、近似値を推定する。
（ステップＳ１０４詳細）
次に、ステップＳ１０４の、ＳＷ構成分析部７における定量的な特性情報の分析処理の動作について図１８のフローチャートを用いて説明する。
【００４２】
まずステップＳ３０１において、ＳＷ構成分析部７は、ＡＰ解析一時記憶部６から取得するＡＰ分析結果（図１０参照）から得られる処理の各々に対し、特性情報記憶部２から取得する定量的な特性情報（図２乃至６）の値の計算で処理時間が最良な値（即ち小さな絶対値）を選択する。例えば、係る最良の値として、図１０のステップ１「ＤＢ読み込み」だと、図２の定量的な特性情報が示すＳＷ＿Ｂの「３秒」が最も小さい値である。同様に、ステップ２「ソート」だと、図２の定量的な特性情報が示すＳＷ＿Ｄの「７秒」が最も小さい値である。ステップ３「マージ」だと、図２の定量的な特性情報が示すＳＷ＿Ｄの「７秒」が最も小さい値である。ステップ４「ファイル出力」だと、図２の定量的な特性情報が示すＳＷ＿Ｃの「４秒」が最も小さい値である。
【００４３】
ステップＳ３０２において、ＳＷ構成分析部７は、選択されたソフトウェアの変換コストを図７の変換テーブルを参照して計算する。変換テーブルによると、ＳＷ＿Ｂ（列）からＳＷ＿Ｄ（行）に変換するには２秒を要し、ＳＷ＿Ｄ（列）からＳＷ＿Ｃ（行）に変換するには３秒を要する。
【００４４】
ステップＳ３０３において、ＳＷ構成分析部７は、ＳＷ＿ＢからＳＷ＿Ｄへの変換、およびＳＷ＿ＤからＳＷ＿Ｃへの変換で、他の最短変換候補がないかを変換コストの降順に、調査する。ＳＷ＿ＢからＳＷ＿Ｄへの変換コストは２秒、ＳＷ＿ＤからＳＷ＿Ｃへの変換コストは３秒であるので、ＳＷ＿ＤからＳＷ＿Ｃへの変換コストからまず検査する。
【００４５】
ＳＷ＿ＤからＳＷ＿Ｃへの変換の場合、ＳＷ＿ＤからＳＷ＿Ｂへの変換は２秒、ＳＷ＿ＤからＳＷ＿Ｄへの変換は０秒である。図２に示す表より、ＳＷ＿Ｂのファイル出力は５秒、ＳＷ＿Ｄのファイル出力は６秒である。つまり図１０に示すステップ３から４への変換コストと、ステップ４のファイル出力とを合わせた実行時間は、ＳＷ＿ＤからＳＷ＿Ｃへ変換し処理する場合、（変換）３秒＋（ファイル出力）４秒＝７秒となる。ＳＷ＿Ｄのみでの処理の場合、（変換）０秒＋（ファイル出力）６秒＝６秒となる。ＳＷ＿ＤからＳＷ＿Ｂへ変換して処理する場合、（変換）２秒＋（ファイル出力）５秒＝７秒となる。この結果より、ＳＷ＿Ｄのみで処理する方が実行速度は速くなる。
【００４６】
ステップＳ３０４において、ＳＷ構成分析部７は、変換コストがかかるソフトウェアを採用した方が、全体的な性能が向上するか判断する。変換コストがかかるソフトウェアを採用すると性能が向上する場合はステップＳ３０５へ、変換コストがかかるソフトウェアを採用せずとも性能が向上する場合、処理はステップＳ３０６へ進められる。
【００４７】
ステップＳ３０５において、ＳＷ構成分析部７は、全体的な性能が改善する、変換コストが小さいソフトウェアを、ＡＰ解析結果（図１０）で暫定的に決定されたソフトウェアに上書き（更新）する。上記の例では、ＳＷ＿Ｄのみで処理する方が実行速度は速くなるので、図１０のステップ４のファイル処理は、ＳＷ＿ＣからＳＷ＿Ｄへ変更される。
【００４８】
ステップＳ３０６において、ＳＷ構成分析部７は、他に変換コストがかかる（性能が悪い）ソフトウェアがあるか判断する。上記の例ではＳＷ＿ＢからＳＷ＿Ｄに変換する処理が残っているので、処理はステップＳ３０３へ戻される。
【００４９】
この場合、ＳＷ＿ＢからＳＷ＿Ｄに変換する処理には２秒かかる。ＳＷ＿ＢからＳＷ＿Ｂへの変換は０秒であるが、図２の表より、ＳＷ＿Ｂのソートおよびマージ処理は各々１５秒、ＳＷ＿Ｄのソートおよびマージ処理は各々７秒で、その差は８×２＝１６秒となる。よって、ステップＳ３０４では、ＳＷ＿ＢからＳＷ＿Ｄへの変換時間「２秒」より、このソフトウェア性能による遅延「１６秒」の方がはるかに大きいため、ＳＷ構成分析部７は、変換すべきでないと判断し、処理はステップＳ３０６へ進められる。ステップＳ３０６において、他に変換コストがかかる処理は存在しないので、本動作を終了する。本分析結果は、図１２に示すように出力部１１に出力され、ＳＷ分析一時記憶部８に格納される。
（ステップＳ１０４詳細の変更例）
上述したステップＳ１０４における定量的な特性情報の分析処理は、非機能要件（図９参照）から重視すべき項目（性能、信頼性、メモリ使用量等）を予め選択してから行ってもよい。以下、非機能要件を基に定量的な特性情報の分析を行う処理の動作について図１９のフローチャートを用いて説明する。
【００５０】
まず、Ｓ４００において、ＳＷ構成分析部７は、非機能要件記憶部３から重視すべき非機能要件情報（図９参照）を取得する。重視すべき非機能要件は非機能要件記憶部３に予め格納されたものを使用してもよいし、入力部１を介してユーザに入力された非機能要件を使用してもよい。
【００５１】
まずＳ４０１において、ＳＷ構成分析部７は、上記ステップＳ４００で取得した重視すべき非機能要件を基に、ＡＰ解析一時記憶部６から取得するＡＰ分析結果（図１０参照）から得られる処理の各々に対し、特性情報記憶部２から取得する定量的な特性情報（図２乃至６）の値の計算で処理時間が最短、即ち絶対値の小さなソフトウェアを選択する。例えば、図９の非機能要件では、性能とメモリ使用量の優先度が高いので、毎秒１０００件の処理が可能な性能と、５ＧＢ以下のメモリ容量を備えた定量的な特性情報の中から、処理時間が最短となるソフトウェアを選択する。
【００５２】
Ｓ４０２において、ＳＷ構成分析部７は、選択されたソフトウェアの変換コストを図７の変換テーブルを参照して計算する。
【００５３】
ステップＳ４０３において、ＳＷ構成分析部７は、他の最短変換候補の有無を変換コストの降順に、調査する。
【００５４】
ステップＳ４０４において、ＳＷ構成分析部７は、変換コストがかかるソフトウェアを採用した方が、全体的な性能が向上するか判断する。変換コストがかかるソフトウェアを採用すると性能が向上する場合はステップＳ４０５へ、変換コストがかかるソフトウェアを採用せずとも性能が向上する場合は、処理はステップＳ４０６へ進められる。
【００５５】
ステップＳ４０５において、ＳＷ構成分析部７は、全体的な性能が改善するソフトウェアを、ＡＰ解析結果（図１０）で暫定的に決定されたソフトウェアに上書き（更新）する。
【００５６】
ステップＳ４０６において、ＳＷ構成分析部７は、他に変換コスト計算処理を行っていないソフトウェアがあるか判断する。変換コスト計算処理を行っていないソフトウェアがない場合は、処理はステップＳ４０７へ進められ、変換コスト計算処理を行っていないソフトウェアがある場合は、処理はステップＳ４０３へ戻される。
【００５７】
ステップＳ４０７において、最終的に選択したソフトウェアとそれらの定量的な特性情報から、処理能力を算出し、目標とする非機能要件を満たすか判断する。非機能要件を満たさない場合、処理はステップＳ４０８へ進められ、非機能要件を満たす場合、ＳＷ構成分析部７は、本処理を終了する。
【００５８】
ステップＳ４０８では、ＳＷ構成分析部７は、設計情報記憶部４に格納される設計情報を取得し、処理順序を入れ替えても非機能要件を満たさないか否かを判定する。判定の結果、処理順序を入れ替えると非機能要件を満たす場合、ステップＳ４０９へ進み、処理順序を入れ替えても非機能要件を満たさない場合、ＳＷ構成分析部７は、本処理を終了する。
【００５９】
ステップＳ４０９において、ＳＷ構成分析部７は、処理順序を入れ替えて、ステップＳ４０２へ戻る。ステップＳ４０２では、ＳＷ構成分析部７は、再び変換コストの性能の悪い順に処理速度を算出する。この結果、ステップＳ４０３、Ｓ４０４、Ｓ４０６を経て、ステップＳ４０７で非機能要件を満たすようになれば、ＳＷ構成分析部７は、本処理を終了する。本分析結果は、図１２に示すように出力部１１に出力され、ＳＷ分析一時記憶部８に格納される。
（ステップＳ３詳細）
次に、ステップＳ３のソース生成部９の動作について図２０のフロー図を参照して説明する。
【００６０】
まずＳ５０１において、ソース生成部９は、設計情報記憶部４から設計情報を取得し、ＳＷ分析一時記憶部８からＳＷ分析結果（図１２参照）を取得する。次に、取得したＳＷ分析結果の各ステップで利用するソフトウェアの種類をアプリケーションの構成に合わせて動的に設定する。
【００６１】
ステップＳ５０２において、ソース生成部９は、設定されたソフトウェアを利用したソースコードを生成する。ソースコード出力処理には、既存の技術（例えば特開２００５-２２８２３５号公報、特開２０１２-２１２２８６号公報および特許文献１等）で開示されている手法を使用してよい。
【００６２】
ステップＳ５０３において、ソース生成部９は、前のステップ処理と次のステップ処理において、使用するソフトウェアの変更に伴う入出力の変換があるか否かを確認し、変換があれば変換用のコードをステップＳ５０４で生成する。
【００６３】
ステップＳ５０５において、ソース生成部９は、全ステップが終了したかを確認する。全ステップが終了していない場合、ステップＳ５０２へ戻り、上記のステップＳ５０２〜Ｓ５０５の処理を繰り返す。
【００６４】
全ステップについてのコードを生成すると、ステップＳ５０６において、利用するソフトウェア毎に応じた設定を生成する。図１２のＳＷ分析結果を用いたソースコード構造の一例を図１３に示す。図１３において、（ａ）はＳＷ＿Ｂを用いたＤＢ読み込み処理のソースコードである。（ｂ）はＳＷ＿Ｂの出力形式からＳＷ＿Ｄの入力形式へ変換する処理のコードである。（ｃ）、（ｄ）、（ｅ）はＳＷ＿Ｄを利用したソート処理、マージ処理およびファイル出力処理のソースコードである。これと共に、ＳＷ＿ＢおよびＳＷ＿Ｄの規定に沿ったＳＷ＿Ｂのリソースファイル、ＳＷ＿Ｄのリソースファイル、ＳＷ＿Ｂの設定ファイル、ＳＷ＿Ｄの設定ファイルが生成される。生成されたソースコード、リソースファイルおよび設定ファイルはソースコード記憶部１０に格納される。これにより、ソース生成部９によるソースコード生成処理は終了する。
【００６５】
以上説明したように、本発明の第一の実施形態によると、アプリケーションの生成処理において、処理毎に最適なソフトウェアを動的に選定し、選定されたソフトウェアを用いて動作効率の良いソースコードを生成することができる。
＜第二の実施形態＞
第二の実施形態に係るソースコード生成装置２００は、図２１に示すように、構造解析部１５、構成分析部１７およびソース生成部１９を備える。
【００６６】
構造解析部１５は、複数の処理によって構成されるアプリケーションの設計構造を示す設計情報を参照することにより、アプリケーションに含まれる複数の処理に関して、処理の数、種類、実行順位およびアプリケーションにおいて利用されている機能を解析する。
【００６７】
構成分析部１７は、構造解析部による解析結果と、複数の処理の実行に必要な、複数のソフトウェアの各々の特性の指標を示した特性情報と、アプリケーションの実行に必要な要件である非機能要件とを、取得して分析し、処理の各々に使用すべきソフトウェアを選択する。
【００６８】
ソース生成部１９は、設計情報と、構成分析部による選択結果とを基に、処理の各々に対応する選択されたソフトウェアによって記述されたソースコード情報を生成する。
【００６９】
本発明の第二の実施形態によると、アプリケーションの生成処理において、処理毎に最適なソフトウェアを動的に選定し、選定されたソフトウェアを用いて動作効率の良いソースコードを生成することができる。
【符号の説明】
【００７０】
１      入力部
２      特性情報記憶部
３      非機能要件記憶部
４      設計情報記憶部
５      ＡＰ構造解析部
６      ＡＰ解析一時記憶部
７      ＳＷ構成分析部
８      ＳＷ分析一時記憶部
９      ソース生成部
１０      ソース記憶部
１１      出力部
１５      構造解析部
１７      構成分析部
１９      ソース生成部
１００      ソースコード生成装置
２００      ソースコード生成装置
【図１】
2016062300.tif 000003
【図２】
2016062300.tif 000004
【図３】
2016062300.tif 000005
【図４】
2016062300.tif 000006
【図５】
2016062300.tif 000007
【図６】
2016062300.tif 000008
【図７】
2016062300.tif 000009
【図８】
2016062300.tif 000010
【図９】
2016062300.tif 000011
【図１０】
2016062300.tif 000012
【図１１】
2016062300.tif 000013
【図１２】
2016062300.tif 000014
【図１３】
2016062300.tif 000015
【図１４】
2016062300.tif 000016
【図１５】
2016062300.tif 000017
【図１６】
2016062300.tif 000018
【図１７】
2016062300.tif 000019
【図１８】
2016062300.tif 000020
【図１９】
2016062300.tif 000021
【図２０】
2016062300.tif 000022
【図２１】
2016062300.tif 000023