以下に、本願の開示する開発支援プログラム、開発支援方法及び開発支援装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
実施例1に係る開発支援装置の一例について説明する。実施例1に係る開発支援装置は、例えば、コンポーネントベースのモデル駆動型開発(MDD:Model Driven Development)を実現する機能を有する。コンポーネントとは、ある機能を提供するための一群の構成要素を一つにまとめた、プログラムの部品に相当するものである。実施例1では、コンポーネントベースのMDDにおいて処理対象となるモデルが修正された際に、修正後のモデルにより生成される最終的なプログラムのサイズを出力する場合を説明する。
本実施例1に係る開発支援装置の構成の一例について説明する。図1は、実施例1に係る開発支援装置の構成の一例を示すブロック図である。図1に示すように、この開発支援装置100は、記憶部110と、制御部120とを有する。また、開発支援装置100は、入力装置101と出力装置102とに接続される。
入力装置101は、各種情報の入力を受け付ける。例えば、入力装置101は、ユーザからコンポーネントのデータやコンポーネントの修正指示などの入力を受け付ける。例えば、入力装置101は、キーボードやマウスなどに対応する。出力装置102は、各種情報を出力する。例えば、出力装置102は、コンポーネントの配置を示す図やポップアップウインドウなどを出力する。例えば、出力装置102は、ディスプレイやモニタなどに対応する。
記憶部110は、コンポーネントデータ111と、統計情報テーブル112と、分析結果テーブル113と、増減情報テーブル114とを有する。記憶部110は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、ハードディスクや光ディスクなどの記憶装置に対応する。なお、記憶部110は、対応情報記憶部の一例である。
コンポーネントデータ111は、モデルに含まれる各コンポーネントのデータである。例えば、コンポーネントデータ111は、処理対象となるモデルについて、コンポーネントを設計するためのデータやコンポーネントを配置するためのデータを含む。
図2は、コンポーネントを設計するためのデータの一例を示す図である。図2に示す例では、コンポーネントを設計するためのデータが出力装置102の画面に表示された場合を例として説明する。図2に示すように、例えば、表示画面2aには、コンポーネントを設計する構成要素として、データ2bと、データ2cと、データ2dと、データ2eとが表示される。データ2bは、他のコンポーネントとデータを送受信するためのポート2fを含む。データ2cは、データ2bがコンポーネントである旨を定義するためのメタ要素であり、データ2bからの汎化によりコンポーネントである旨を定義する。データ2dは、データ2eがインターフェイスである旨を定義するためのメタ要素であり、データ2eからの汎化によりインターフェイスである旨を定義する。データ2eは、データ2cのポート2fが送受信するデータのインターフェイスであり、ポート2fが送受信するデータを定義する。データ2bに記述された命令文2gは、変数が1つ存在することを表す。データ2bに記述された命令文2hは、ポートが1つ存在することを表す。データ2bに記述された命令文2iは、メソッドが1つ存在することを表す。コンポーネントを設計するためのデータは、例えば、XML(Extensible Markup Language)フォーマットにより記述される。図2では、光センサのコンポーネントを設計するためのデータを例示する。
図3は、コンポーネントを配置するためのデータの一例を示す図である。図3に示す例では、コンポーネントを配置するためのデータが画面に表示された場合を例として説明する。図3に示すように、表示画面3aには、複数のコンポーネント3bが表示される。コンポーネント3bは、図2に示したデータをインスタンス化したものに対応する。コンポーネント3b同士の関連は、各コンポーネント3bのポート3cを繋ぐことにより定義される。コンポーネントを配置するためのデータは、例えば、XML(Extensible Markup Language)フォーマットにより記述される。なお、図2に示したコンポーネントを設計するためのデータや、図3に示したコンポーネントを配置するためのデータが、処理対象となるモデルに対応する。また、コンポーネントは、部品とも称される。
統計情報テーブル112は、モデルに含まれる各コンポーネントのサイズと、各コンポーネントに含まれる各パラメータの個数とを対応付けて記憶する。図4は、統計情報テーブルが記憶するデータの一例を示す図である。図4に示すように、この統計情報テーブル112は、「コンポーネントID」と、「バイナリサイズ」と、「変数の数」と、「ポート数」と、「メソッド数」とを対応付けて記憶する。ここで、コンポーネントIDは、モデルに含まれる各コンポーネントを一意に識別する識別情報を示す。また、バイナリサイズは、処理対象となるモデルを基にソースコード自動生成とコンパイルとを実行した場合に、各コンポーネントから生成されるプログラムの実サイズを示す。このバイナリサイズは、後述する集計部121によりコンパイラなどの外部装置から別途取得され、統計情報テーブル112に格納される。また、変数の数は、各コンポーネントに含まれる変数の数を示す。また、ポート数は、各コンポーネントに含まれるポートの数を示す。また、メソッド数は、各コンポーネントに含まれるメソッドの数を示す。
例えば、統計情報テーブル112は、図4に示すように、処理対象となるモデルについて、コンポーネントID「コンポーネントA」と、バイナリサイズ「1707」と、変数の数「3」と、ポート数「1」と、メソッド数「1」とを対応付けて記憶する。つまり、統計情報テーブル112は、コンポーネントAのバイナリサイズが1707バイトであり、コンポーネントAが3つの変数と、1つのポートと、1つのメソッドとを含むことを記憶する。また、統計情報テーブル112は、他のコンポーネントについても同様に、「コンポーネントID」と、「バイナリサイズ」と、「変数の数」と、「ポート数」と、「メソッド数」とを対応付けて記憶する。
分析結果テーブル113は、モデルに含まれるパラメータと、各パラメータの増減に対するプログラムのサイズの増減値とを対応付けて記憶する。図5は、分析結果テーブルが記憶するデータの一例を示す図である。図5に示すように、分析結果テーブル113は、「パラメータ」と、「バイナリサイズ増減値」とを対応付けて記憶する。ここで、パラメータは、モデルに含まれるパラメータを示し、例えば、変数、ポート及びメソッドに対応する。また、分析結果テーブル113は、パラメータとは別に、切片の値を有する。この切片の値は、パラメータ以外の命令文などにより必要となるバイナリサイズに対応する。また、バイナリサイズ増減値は、各パラメータの増減に対する、コンパイル後のプログラムのサイズの増減値を示す。
例えば、分析結果テーブル113は、図5に示すように、パラメータ「変数」と、バイナリサイズ増減値「199.6」とを対応付けて記憶する。つまり、分析結果テーブル113は、モデルに含まれる変数が1つ増加するとバイナリサイズが199.6バイト増加することを記憶し、モデルに含まれる変数が1つ減少するとバイナリサイズが199.6バイト減少することを記憶する。また、分析結果テーブル113は、他のパラメータや切片についても同様に、「バイナリサイズ増減値」を記憶する。なお、分析結果テーブル113は、対応情報の一例である。
増減情報テーブル114は、モデルに含まれる各パラメータの増減数と、各パラメータの増減数に基づいて推定されるプログラムのサイズの増減値とを記憶する。図6は、増減情報テーブルが記憶するデータの一例を示す図である。図6に示すように、増減情報テーブル114は、「コンポーネントID」と、「バイナリサイズ予測増減値」と、「変数増減数」と、「ポート増減数」と、「メソッド増減数」とを対応付けて記憶する。ここで、バイナリサイズ予測増減値は、修正後のモデルの各コンポーネントに含まれるパラメータの個数に基づいて推定されるプログラムのサイズの増減値を示す。また、変数増減数は、修正後のモデルの各コンポーネントに含まれる変数の増減数を示す。ポート増減数は、修正後のモデルの各コンポーネントに含まれるポートの増減数を示す。メソッド増減数は、修正後のモデルの各コンポーネントに含まれるメソッドの増減数を示す。
例えば、増減情報テーブル114は、図6に示すように、コンポーネントID「コンポーネントA」と、バイナリサイズ予測増減値「+200」と、変数増減数「+1」と、ポート増減数「±0」と、メソッド増減数「±0」とを対応付けて記憶する。つまり、増減情報テーブル114は、モデルの修正によりコンポーネントAの変数が1つ増加し、バイナリサイズが約200バイト増加すると推定されることを記憶する。また、増減情報テーブル114は、他のコンポーネントについても同様に、「コンポーネントID」と、「バイナリサイズ予測増減値」と、「変数増減数」と、「ポート増減数」と、「メソッド増減数」とを対応付けて記憶する。
制御部120は、集計部121と、分析部122と、設計部123と、計算部124と、出力制御部125とを有する。制御部120は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路に対応する。または、制御部120は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積装置に対応する。
集計部121は、コンポーネントに含まれる各パラメータの個数を集計する。例えば、集計部121は、処理対象となるモデルについて、コンポーネントデータ111に含まれる変数の数、ポート数及びメソッド数をそれぞれ集計する。また、集計部121は、処理対象となるモデルを基にソースコード自動生成装置とコンパイラにより生成されたプログラムについて、図示しないコンパイラなどから各コンポーネントのバイナリサイズを別途取得する。そして、集計部121は、処理対象となるモデルに含まれる各コンポーネントのコンポーネントIDと、バイナリサイズと、変数の数と、ポート数と、メソッド数とを対応付けて統計情報テーブル112に格納する。
分析部122は、各コンポーネントのバイナリサイズを目的変数とし、かつ、コンポーネントに含まれる各パラメータの個数を説明変数とする回帰分析を実行する。例えば、分析部122は、図4に示した統計情報テーブル112から各コンポーネントのバイナリサイズと、変数の数と、ポート数と、メソッド数とを読み出す。そして、分析部122は、バイナリサイズを目的変数「Y」とし、変数の数を説明変数「X1」とし、ポート数を説明変数「X2」とし、メソッド数を説明変数「X3」とする回帰分析を実行する。この回帰分析には、例えば、最小二乗法が用いられる。つまり、分析部122は、例えば、目的変数を説明変数で表す回帰式を設定する。分析部122は、回帰式により求まる目的変数の推定値と、目的変数の測定値との差の2乗平均が最小になるように、回帰式の係数を算出する。分析部122は、回帰分析を実行することにより、例えば、下記の予測式(1)を導出する。
Y=199.6*X1+56.1*X2+109.4*X3+542.6・・・(1)
ここで、X1の係数「199.6」は、変数の増減に対するバイナリサイズ増減値に対応する。また、X2の係数「56.1」は、ポートの増減に対するバイナリサイズ増減値に対応する。また、X3の係数「109.4」は、メソッドの増減に対するバイナリサイズ増減値に対応する。また、切片「542.6」は、パラメータ以外の命令文などにより必要となるバイナリサイズに対応する。なお、上記の予測式(1)は、分析部122により導出される予測式の一例である。
また、分析部122は、回帰分析の結果から分析結果テーブル113を生成する。例えば、分析部122は、パラメータ「変数」と、変数の増減に対するバイナリサイズ増減値「199.6」とを対応付けて分析結果テーブル113に格納する。また、分析部122は、他のパラメータや切片についても同様に、パラメータ又は切片と、バイナリサイズ増減値とを対応付けて分析結果テーブル113に格納する。なお、分析部122は、格納部の一例である。
設計部123は、ユーザから入力装置101を介して入力を受け付けて、モデルを設計する。例えば、設計部123は、設計するコンポーネントを指定する旨の入力をユーザから受け付けて、モデルとしてコンポーネントデータ111を生成する。そして、設計部123は、生成したコンポーネントデータ111を記憶部110に格納する。
また、設計部123は、ユーザから入力装置101を介して入力を受け付けて、モデルを修正し、修正後のモデルに含まれる各パラメータの増減数を集計する。例えば、設計部123は、ユーザからモデルを修正する旨の命令を受け付けて、記憶部110に記憶されたコンポーネントデータ111を読み出し、読み出したコンポーネントデータ111を修正する。具体的には、例えば、設計部123は、ユーザにより指定されたコンポーネントごとに変数、ポート及びメソッドを追加する旨の命令や削減する旨の命令を受け付ける。また、設計部123は、コンポーネントを新規に追加する旨の命令や削除する旨の命令をユーザから受け付ける。設計部123は、受け付けた命令にしたがってコンポーネントデータ111を修正する。そして、設計部123は、修正後のモデルに含まれる各パラメータの増減数やコンポーネントの増減数を集計し、集計した各パラメータの増減数やコンポーネントの増減数を計算部124に出力する。
計算部124は、分析結果テーブル113を参照し、モデルに含まれる各パラメータの増減数に基づいて、モデルにより生成されるプログラムのサイズを計算する。例えば、計算部124は、修正後のモデルに含まれる各パラメータの増減数やコンポーネントの増減数を設計部123から受け付けた場合に、分析結果テーブル113を参照し、修正後のモデルにより生成されるプログラムのサイズを計算する。
例えば、計算部124は、コンポーネントAについて変数増減数「+1」を設計部123から受け付けた場合には、分析結果テーブル113を参照し、バイナリサイズが約200バイト増加するとバイナリサイズ予測増減値を計算する。そして、計算部124は、コンポーネントAのバイナリサイズ予測増減値「+200」と、変数増減数「+1」とを対応付けて増減情報テーブル114に格納する。また、例えば、計算部124は、新規に追加されたコンポーネントEの増減数「+1」を設計部123から受け付けた場合には、分析結果テーブル113を参照し、バイナリサイズが約543バイト増加するとバイナリサイズ予測増減値を計算する。そして、計算部124は、新規に追加されたコンポーネントEに対応付けてバイナリサイズ予測増減値「+543」を増減情報テーブル114に格納する。また、計算部124は、各パラメータの増減数やコンポーネントの増減数を設計部123から受け付けるごとに、バイナリサイズ予測増減値を計算し、増減情報テーブル114を更新する。なお、計算部124は、推定部の一例である。
出力制御部125は、計算部124により計算されたモデルにより生成されるプログラムのサイズを出力装置102から出力する。例えば、出力制御部125は、プログラムの設計仕様として要求されるサイズ仕様を予め保持する記憶部110からサイズ仕様を取得する。出力制御部125は、モデルが修正されるごとに、修正後のモデルのバイナリサイズ予測増減値を増減情報テーブル114から取得し、かつ、修正前のモデルにより生成されるプログラムのサイズを統計情報テーブル112から取得する。そして、出力制御部125は、修正後のモデルのバイナリサイズ予測増減値と修正前のサイズとを加算し、加算した値がサイズ仕様を満たすか否かを判定する。サイズ仕様を満たさないと判定した場合に、出力制御部125は、サイズ仕様を満たさない旨の情報を出力装置102から出力する。
図7は、出力制御部により出力される情報の一例を示す図である。図7に示すように、モデルの修正によりコンポーネント7aに命令文7bが追加されると、出力制御部125は、増減情報テーブル114と統計情報テーブル112とを参照する。出力制御部125は、命令文7bの追加により増加したバイナリサイズ予測増減値と修正前のサイズとを加算し、加算した値がサイズ仕様を満たすか否かを判定する。そして、出力制御部125は、サイズ仕様を満たさないと判定すると、メッセージボックス7cを出力装置102から出力する。なお、出力制御部125による出力方法は、上記の方法に限定されるものではない。例えば、出力制御部125は、モデルの修正により追加された命令文の付近に、修正によるバイナリサイズ予測増減値を出力するようにしても良い。また、出力制御部125は、出力部の一例である。
次に、本実施例1に係る分析結果テーブルを生成する処理手順について説明する。図8は、本実施例1に係る分析結果テーブルを生成する処理手順を示すフローチャートである。分析結果テーブルを生成する処理は、例えば、処理対象となるモデルのコンポーネントデータ111が記憶部110に格納されたことを契機として開始される。また、分析結果テーブルを生成する処理は、例えば、開発支援装置100を利用するユーザが指定した時点で開始される。
図8に示すように、集計部121は、処理タイミングになると(ステップS101Yes)、各コンポーネントのパラメータをコンポーネントデータ111から取得し、各コンポーネントのバイナリサイズをコンパイラなどから別途取得する。そして、集計部121は、取得した各コンポーネントのパラメータとバイナリサイズとを統計情報テーブル112に格納する(ステップS102)。
分析部122は、各コンポーネントのバイナリサイズを目的変数とし、かつ、コンポーネントに含まれる各パラメータの個数を説明変数とする回帰分析を実行する(ステップS103)。そして、分析部122は、回帰分析の結果から分析結果テーブル113を生成する(ステップS104)。
次に、本実施例1に係るサイズを推定する処理手順について説明する。図9は、本実施例1に係るサイズを推定する処理手順を示すフローチャートである。サイズを推定する処理は、例えば、設計部123がユーザからモデルを修正する旨の命令を受け付けたことを契機として開始される。
図9に示すように、設計部123は、ユーザからモデルを修正する旨の命令を受け付けると(ステップS201Yes)、修正後のモデルに含まれる各パラメータの増減数やコンポーネントの増減数を集計し、計算部124に出力する(ステップS202)。
計算部124は、分析結果テーブル113を参照し、修正後のモデルに含まれる各パラメータの増減数やコンポーネントの増減数に基づいて、修正後のモデルにより生成されるプログラムのサイズを計算する(ステップS203)。そして、出力制御部125は、計算部124により計算されたモデルにより生成されるプログラムのサイズを出力装置102から出力する(ステップS204)。
上述してきたように、本実施例1に係る開発支援装置100は、モデルに含まれるパラメータである変数、ポートおよびメソッドのうち一つまたは複数のパラメータと、パラメータの増減に対するプログラムのサイズの増減値とを対応付けた対応情報を記憶する。開発支援装置100は、対応情報を参照し、モデルに含まれる各パラメータの個数に基づいて、モデルにより生成されるプログラムのサイズを推定し、推定したサイズを出力する。このため、開発支援装置100を利用する開発者は、例えば、ソフトウェアのサイズ仕様を満たすか否かを考慮しながらモデルを設計することができる。特に、開発者は、モデルを修正するごとに、修正後のモデルにより生成されるプログラムのサイズを速やかに確認でき、ソフトウェアのサイズ仕様を満たすか否かを考慮しながらモデルを設計することができる。
また、開発支援装置100は、処理対象となるモデルについて回帰分析を実行し、回帰分析の結果から対応情報を生成する。開発支援装置100は、処理対象となるモデルが修正される度に、生成した対応情報を参照し、修正後のモデルに含まれる変数の個数、メソッド数及びポート数に基づいて、最終的なプログラムのサイズを推定し、プログラムのサイズを出力する。このため、開発支援装置100は、精度よく推定された最終的なプログラムのサイズを出力することができる。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例について説明する。
例えば、上述した実施例では、開発支援装置100,200は、モデルに含まれるパラメータとして、変数、ポート及びメソッドを利用すると説明したが、本発明はこれに限定されるものではない。例えば、開発支援装置100,200は、変数、ポート及びメソッドのうち、いずれか一つまたは複数のパラメータを利用しても良い。また、例えば、開発支援装置100,200は、上記のパラメータ以外にも、他のパラメータを利用しても良い。例えば、開発支援装置100,200は、変数のうち、整数で表される変数である整数型変数と、浮動小数点で表される変数である浮動小数点型変数とをそれぞれ異なるパラメータとして利用しても良い。また、例えば、開発支援装置100,200は、ポートのうち、定期的にデータを送受信する定期送受信ポートと、イベントごとにデータを送受信するイベント送受信ポートをそれぞれ異なるパラメータとして利用しても良い。
以下において、開発支援装置100が他のパラメータを利用する場合を説明する。この開発支援装置100は、図1に示した開発支援装置100と基本的には同様の構成であるが、統計情報テーブル112と、分析結果テーブル113と、増減情報テーブル114とが他のパラメータに関する情報を記憶する点が異なる。ここでは、開発支援装置100が他のパラメータとして整数型変数と浮動小数点型変数とを利用する場合を説明する。
図11は、統計情報テーブルが記憶するデータの一例を示す図である。図11に示すように、この統計情報テーブル112は、「コンポーネントID」と、「バイナリサイズ」と、「整数型変数の数」と、「浮動小数点型変数の数」と、「ポート数」と、「メソッド数」とを対応付けて記憶する。ここで、整数型変数の数は、各コンポーネントに含まれる整数型変数の数を示す。また、浮動小数点型変数の数は、各コンポーネントに含まれる浮動小数点型変数の数を示す。
図11に示すように、例えば、統計情報テーブル112は、コンポーネントID「コンポーネントA」と、バイナリサイズ「1707」と、整数型変数の数「2」と、浮動小数点型変数の数「1」と、ポート数「1」と、メソッド数「1」とを対応付けて記憶する。
つまり、統計情報テーブル112は、コンポーネントAのバイナリサイズが1707バイトであり、コンポーネントAが2つの整数型変数と、1つの浮動小数点型変数と、1つのポートと、1つのメソッドとを含むことを記憶する。また、統計情報テーブル112は、他のコンポーネントについても同様に、「コンポーネントID」と、「バイナリサイズ」と、「整数型変数の数」と、「浮動小数点型変数の数」と、「ポート数」と、「メソッド数」とを対応付けて記憶する。
図12は、分析結果テーブルが記憶するデータの一例を示す図である。図12に示すように、分析結果テーブル113が記憶する対応情報は、「パラメータ」と、「バイナリサイズ増減値」とを対応付けて記憶する。ここで、パラメータは、モデルに含まれるパラメータを示し、例えば、整数型変数、浮動小数点型変数、ポート及びメソッドに対応する。また、分析結果テーブル113は、パラメータとは別に、切片の値を有する。また、バイナリサイズ増減値は、各パラメータの増減に対する、コンパイル後のプログラムのサイズの増減値を示す。
図12に示すように、例えば、分析結果テーブル113は、「整数型変数」と、「50.2」とを対応付けて記憶する。つまり、分析結果テーブル113は、モデルに含まれる整数型変数が1つ増加するとバイナリサイズが50.2バイト増加することを記憶し、モデルに含まれる整数型変数が1つ減少するとバイナリサイズが50.2バイト減少することを記憶する。また、分析結果テーブル113は、他のパラメータや切片についても同様に、「バイナリサイズ増減値」を記憶する。
図13は、増減情報テーブルが記憶するデータの一例を示す図である。図13に示すように、増減情報テーブル114は、「コンポーネントID」と、「バイナリサイズ予測増減値」と、「整数型変数増減数」と、「浮動小数点型変数増減数」と、「ポート増減数」と、「メソッド増減数」とを対応付けて記憶する。ここで、整数型変数増減数は、修正後のモデルの各コンポーネントに含まれる整数型変数の増減数を示す。また、浮動小数点型変数増減数は、修正後のモデルの各コンポーネントに含まれる浮動小数点型変数の増減数を示す。
図13に示すように、例えば、増減情報テーブル114は、コンポーネントID「コンポーネントA」と、バイナリサイズ予測増減値「+50」とを対応付けて記憶する。また、増減情報テーブル114は、コンポーネントID「コンポーネントA」と、整数型変数増減数「+1」と、浮動小数点型変数増減数「±0」と、ポート増減数「±0」と、メソッド増減数「±0」とを対応付けて記憶する。つまり、増減情報テーブル114は、モデルの修正によりコンポーネントAの整数型変数増減数が1つ増加し、バイナリサイズが約50バイト増加すると推定されることを記憶する。また、増減情報テーブル114は、他のコンポーネントについても同様に「コンポーネントID」と、「バイナリサイズ予測増減値」と、「整数型変数増減数」と、「浮動小数点型変数増減数」と、「ポート増減数」と、「メソッド増減数」とを対応付けて記憶する。
すなわち、開発支援装置100が他のパラメータを利用する場合には、開発支援装置100が有する各処理部は、図11,12,13に示したテーブルを用いて、以下のように処理を実行する。集計部121は、処理対象となるモデルについて、コンポーネントデータ111に含まれる整数型変数の数、浮動小数点型変数の数、ポート数及びメソッド数をパラメータとしてそれぞれ集計し、集計した情報を図11に示した統計情報テーブル112に格納する。分析部122は、図11に示した統計情報テーブル112から各コンポーネントのバイナリサイズと、各パラメータとを読み出し、回帰分析を実行する。分析部122は、回帰分析の結果から図12に示した分析結果テーブル113を生成する。計算部124は、修正後のモデルに含まれる各パラメータの増減数やコンポーネントの増減数を設計部123から受け付けた場合に、図12に示した分析結果テーブル113を参照し、修正後のモデルにより生成されるプログラムのサイズを計算する。計算部124は、各パラメータの増減数やコンポーネントの増減数を設計部123から受け付けるごとに、バイナリサイズ予測増減値を計算し、図13に示した増減情報テーブル114を更新する。出力制御部125は、計算部124により計算されたモデルにより生成されるプログラムのサイズを出力装置102から出力する。
このように、開発支援装置100は、変数に含まれるパラメータである整数型変数および浮動小数点型変数と、各パラメータの増減に対する、前記モデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を記憶する。そして、開発支援装置100は、記憶した対応情報を参照し、モデルにより生成されるプログラムのサイズを推定する。このため、開発支援装置100は、処理対象となるモデルにより生成されるプログラムのサイズを高精度に推定することができる。
また、例えば、上述した実施例では、処理対象となるモデルのコンポーネントデータ111において、コンポーネント同士の関連がポートを繋ぐことにより定義される場合を説明したが、本発明はこれに限定されるものではない。例えば、コンポーネントデータ111は、コンポーネント同士の関連として、所定のコンポーネントの機能が他のコンポーネントに継承される継承関係を含んでも良い。
以下において、開発支援装置100の処理対象となるモデルのコンポーネントデータ111に、コンポーネントAの機能がコンポーネントCに継承される継承関係が含まれる場合を説明する。この開発支援装置100は、図1に示した開発支援装置100と基本的には同様の構成であるが、統計情報テーブル112と、分析結果テーブル113と、増減情報テーブル114とが継承関係についての情報を記憶する点が異なる。なお、上記の継承関係においては、コンポーネントAは「親」とも称され、コンポーネントCは「子」とも称される。
図14は、統計情報テーブルが記憶するデータの一例を示す図である。図14に示すように、この統計情報テーブル112は、「コンポーネントID」と、「バイナリサイズ」と、「変数の数」と、「ポート数」と、「メソッド数」と、「仮想関数」とを対応付けて記憶する。ここで、仮想関数は、該当するコンポーネントが他のコンポーネントに継承されるか否かを示す値であり、「0」又は「1」を有する。仮想関数「0」は、該当するコンポーネントが他のコンポーネントに継承されないことを示し、仮想関数「1」は、該当するコンポーネントが一つ又は複数の他のコンポーネントに継承されることを示す。つまり、「親」となるコンポーネントは、一つ又は複数の「子」となるコンポーネントに継承される場合に、仮想関数「1」を有する。なお、仮想関数により増減するバイナリサイズは、例えば、「親」となるコンポーネントが一つ又は複数の「子」となるコンポーネントを管理するためのテーブルのサイズに相当する。
図14に示すように、例えば、統計情報テーブル112は、コンポーネントID「コンポーネントA」と、バイナリサイズ「1707」と、変数の数「3」と、ポート数「1」と、メソッド数「1」と、仮想関数「1」とを対応付けて記憶する。つまり、統計情報テーブル112は、コンポーネントAのバイナリサイズが1707バイトであり、コンポーネントAが3つの変数と、1つのポートと、1つのメソッドとを含むことを記憶する。また、統計情報テーブル112は、他のコンポーネントに継承されることを記憶する。また、統計情報テーブル112は、他のコンポーネントについても同様に、「コンポーネントID」と、「バイナリサイズ」と、「変数の数」と、「ポート数」と、「メソッド数」と、「仮想関数」とを対応付けて記憶する。
図15は、分析結果テーブルが記憶するデータの一例を示す図である。図15に示すように、分析結果テーブル113が記憶する対応情報は、「パラメータ」と、「バイナリサイズ増減値」とを対応付けて記憶する。ここで、パラメータは、モデルに含まれるパラメータを示し、例えば、変数、ポート、メソッド及び仮想関数に対応する。また、分析結果テーブル113は、パラメータとは別に、切片の値を有する。また、バイナリサイズ増減値は、各パラメータの増減に対する、コンパイル後のプログラムのサイズの増減値を示す。
図15に示すように、例えば、分析結果テーブル113は、「仮想関数」と、「550.1」とを対応付けて記憶する。つまり、分析結果テーブル113は、モデルに含まれる仮想関数が1つ増加するとバイナリサイズが550.1バイト増加することを記憶し、モデルに含まれる仮想関数が1つ減少するとバイナリサイズが550.1バイト減少することを記憶する。また、分析結果テーブル113は、他のパラメータや切片についても同様に、「バイナリサイズ増減値」を記憶する。
図16は、増減情報テーブルが記憶するデータの一例を示す図である。図16では、コンポーネントBの機能が新規のコンポーネントEに継承された場合を説明する。図16に示すように、増減情報テーブル114は、「コンポーネントID」と、「バイナリサイズ予測増減値」と、「変数増減数」と、「ポート増減数」と、「メソッド増減数」と、「仮想関数増減数」とを対応付けて記憶する。ここで、仮想関数増減数は、修正後のモデルの各コンポーネントに含まれる仮想関数の増減数を示す。
図16に示すように、例えば、増減情報テーブル114は、「コンポーネントB」と、バイナリサイズ予測増減値「+550」と、変数増減数「±0」と、ポート増減数「±0」と、メソッド増減数「±0」と、仮想関数「+1」を対応付けて記憶する。つまり、増減情報テーブル114は、モデルの修正によりコンポーネントBの仮想関数増減数が1つ増加し、バイナリサイズが約550バイト増加すると推定されることを記憶する。また、増減情報テーブル114は、例えば、「コンポーネントE」と、バイナリサイズ予測増減値「+543」と、変数増減数「±0」と、ポート増減数「±0」と、メソッド増減数「±0」と、仮想関数「±0」を対応付けて記憶する。つまり、増減情報テーブル114は、モデルの修正によりコンポーネントEが追加され、バイナリサイズが約543バイト増加すると推定されることを記憶する。また、増減情報テーブル114は、他のコンポーネントについても同様に「コンポーネントID」と、「バイナリサイズ予測増減値」と、「変数増減数」と、「ポート増減数」と、「メソッド増減数」と、「仮想関数増減数」とを対応付けて記憶する。
すなわち、開発支援装置100の処理対象となるモデルにおいて所定のコンポーネントが他のコンポーネントに継承される場合には、開発支援装置100が有する各処理部は、図14,15,16に示したテーブルを用いて、以下のように処理を実行する。集計部121は、処理対象となるモデルについて、コンポーネントデータ111に含まれる変数の数、ポート数、メソッド数及び仮想関数をパラメータとしてそれぞれ集計し、集計した情報を図14に示した統計情報テーブル112に格納する。分析部122は、図14に示した統計情報テーブル112から各コンポーネントのバイナリサイズと、各パラメータとを読み出し、回帰分析を実行する。分析部122は、回帰分析の結果から図15に示した分析結果テーブル113を生成する。計算部124は、修正後のモデルに含まれる各パラメータの増減数やコンポーネントの増減数を設計部123から受け付けた場合に、図15に示した分析結果テーブル113を参照し、修正後のモデルにより生成されるプログラムのサイズを計算する。計算部124は、各パラメータの増減数やコンポーネントの増減数を設計部123から受け付けるごとに、バイナリサイズ予測増減値を計算し、図16に示した増減情報テーブル114を更新する。出力制御部125は、計算部124により計算されたモデルにより生成されるプログラムのサイズを出力装置102から出力する。
このように、開発支援装置100は、処理対象となるモデルにおいて所定のコンポーネントが他のコンポーネントに継承される場合には、仮想関数と、仮想関数の増減に対するプログラムのサイズの増減値とを対応付けた対応情報を記憶する。開発支援装置100は、記憶した対応情報を参照し、モデルにより生成されるプログラムのサイズを推定する。このため、開発支援装置100は、処理対象となるモデルにより生成されるプログラムのサイズを高精度に推定することができる。
また、例えば、上述した実施例では、開発支援装置100がコンポーネントベースのMDDに適用される場合を説明したが、本発明はこれに限定されるものではない。開発支援装置100がコンポーネントベースのMDDに適用されるのは、コンポーネントを利用することで、コンポーネント同士の関連をデータの送受信のみで表現でき、コンポーネントごとにバイナリサイズとパラメータの個数とを取得できるからである。このため、コンポーネントベースのMDDでは、回帰分析を実行することができ、対応情報を生成することができる。すなわち、開発支援装置100は、コンポーネントと同様に、回帰分析を実行することができる開発手法に適用されても良い。例えば、開発支援装置100は、SysML(OMG Systems Modeling Language)に適用されても良い。
また、本実施例1及び2において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。例えば、図9に示したサイズを推定する処理は、開発支援装置100を利用するユーザが指定した時点で開始されても良い。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、図6に示した増減情報テーブル114は、各コンポーネントのバイナリサイズ予測増減値を集計した値を記憶しても良い。
また、図1,10に示した開発支援装置100,200の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、開発支援装置100,200の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図10に示した記憶部210をサーバに持たせ、係るサーバと開発支援装置200とが協働することで、最終的なプログラムにサイズを推定しても良い。
また、開発支援装置100,200は、開発支援装置100,200の各機能を既知の情報処理装置に搭載することによって実現することもできる。既知の情報処理装置は、例えば、パーソナルコンピュータ、ワークステーション、携帯電話、Personal Handy-phone System(PHS)端末、移動体通信端末またはPersonal Digital Assistant(PDA)などの装置に対応する。
図17は、開発支援プログラムを実行するコンピュータの一例を示す図である。図17に示すように、コンピュータ300は、各種演算処理を実行するCentral Processing Unit(CPU)301と、ユーザからデータの入力を受け付ける入力装置302と、モニタ303とを有する。また、コンピュータ300は、記憶媒体からプログラム等を読み取る媒体読み取り装置304と、他の装置とデータの授受を行うインターフェイス装置305とを有する。また、コンピュータ300は、各種情報を一時記憶するRandom Access Memory(RAM)306と、ハードディスク装置307を有する。また、各装置301〜307は、バス308に接続される。
ハードディスク装置307は、図1、10に示した、集計部121、分析部122、設計部123、計算部124、出力制御部125、推定部220及び出力部230の各処理部と同様の機能を有する開発支援プログラム307aを記憶する。また、ハードディスク装置307は、開発支援プログラム307aを実現するための各種データ307bを記憶する。
CPU301が開発支援プログラム307aをハードディスク装置307から読み出してRAM306に展開して実行することにより、開発支援プログラム307aは、開発支援プロセス306aとして機能する。すなわち、開発支援プログラム307aは、集計部121、分析部122、設計部123、計算部124、出力制御部125、推定部220及び出力部230の各処理部と同様のプロセスとして機能する。
なお、上記の開発支援プログラム307aは、必ずしもハードディスク装置307に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ300が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、CD−ROMやDVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、Local Area Network(LAN)、Wide Area Network(WAN)等に接続された装置にこのプログラムを記憶させておき、コンピュータ300がこれらからプログラムを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)複数のコンポーネントを組み合わせて設計されるモデルにより生成されるプログラムのサイズを推定するための開発支援プログラムであって、コンピュータに、
第1のモデルに含まれるパラメータである変数、ポートおよびメソッドのうち一つまたは複数のパラメータと、前記パラメータの増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を記憶する対応情報記憶部を参照し、第2のモデルに含まれる各パラメータの個数に基づいて、前記第2のモデルにより生成されるプログラムのサイズを推定し、
前記サイズを推定する処理により推定されたサイズを出力する
処理を実行させることを特徴とする開発支援プログラム。
(付記2)前記コンポーネントごとのコンパイル後のサイズを目的変数とし、かつ、前記コンポーネントに含まれる各パラメータの個数を説明変数とする回帰分析を行い、当該回帰分析の結果から前記対応情報を生成し、生成した前記対応情報を前記対応情報記憶部に格納する処理を更にコンピュータに実行させ、
前記サイズを推定する処理は、修正後のモデルに含まれる各パラメータの個数の増減を受け付けた場合に、前記対応情報を格納する処理により格納された前記対応情報を参照し、前記修正後のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記1に記載の開発支援プログラム。
(付記3)前記サイズを推定する処理は、前記第2のモデルにおいて所定のコンポーネントが他のコンポーネントに継承される場合に、前記第1のモデルに含まれる、所定のコンポーネントが他のコンポーネントに継承されることを示すパラメータである仮想関数と、前記仮想関数の増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を更に参照し、前記第2のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記1又は2に記載の開発支援プログラム。
(付記4)前記サイズを推定する処理は、前記第1のモデルに含まれる、前記変数に含まれるパラメータである整数型変数および浮動小数点型変数と、各パラメータの増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を更に参照し、前記第2のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記1〜3のいずれか一つに記載の開発支援プログラム。
(付記5)複数のコンポーネントを組み合わせて設計されるモデルにより生成されるプログラムのサイズを推定するために、コンピュータによって実行される開発支援方法であって、
第1のモデルに含まれるパラメータである変数、ポートおよびメソッドのうち一つまたは複数のパラメータと、前記パラメータの増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を記憶する対応情報記憶部を参照し、第2のモデルに含まれる各パラメータの個数に基づいて、前記第2のモデルにより生成されるプログラムのサイズを推定し、
前記サイズを推定する処理により推定されたサイズを出力する
ことを特徴とする開発支援方法。
(付記6)前記コンポーネントごとのコンパイル後のサイズを目的変数とし、かつ、前記コンポーネントに含まれる各パラメータの個数を説明変数とする回帰分析を行い、当該回帰分析の結果から前記対応情報を生成し、生成した前記対応情報を前記対応情報記憶部に更に格納し、
前記サイズを推定する処理は、修正後のモデルに含まれる各パラメータの個数の増減を受け付けた場合に、前記対応情報を格納する処理により格納された前記対応情報を参照し、前記修正後のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記5に記載の開発支援方法。
(付記7)前記サイズを推定する処理は、前記第2のモデルにおいて所定のコンポーネントが他のコンポーネントに継承される場合に、前記第1のモデルに含まれる、所定のコンポーネントが他のコンポーネントに継承されることを示すパラメータである仮想関数と、前記仮想関数の増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を更に参照し、前記第2のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記5又は6に記載の開発支援方法。
(付記8)前記サイズを推定する処理は、前記第1のモデルに含まれる、前記変数に含まれるパラメータである整数型変数および浮動小数点型変数と、各パラメータの増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を更に参照し、前記第2のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記5〜7のいずれか一つに記載の開発支援方法。
(付記9)複数のコンポーネントを組み合わせて設計されるモデルにより生成されるプログラムのサイズを推定するための開発支援装置であって、
第1のモデルに含まれるパラメータである変数、ポートおよびメソッドのうち一つまたは複数のパラメータと、前記パラメータの増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を記憶する対応情報記憶部と、
前記対応情報記記憶部に記憶された前記対応情報を参照し、第2のモデルに含まれる各パラメータの個数に基づいて、前記第2のモデルにより生成されるプログラムのサイズを推定する推定部と、
前記推定部により推定されたサイズを出力する出力部と
を有することを特徴とする開発支援装置。
(付記10)前記コンポーネントごとのコンパイル後のサイズを目的変数とし、かつ、前記コンポーネントに含まれる各パラメータの個数を説明変数とする回帰分析を行い、当該回帰分析の結果から前記対応情報を生成し、生成した前記対応情報を前記対応情報記憶部に格納する格納部を更に有し、
前記推定部は、修正後のモデルに含まれる各パラメータの個数の増減を受け付けた場合に、前記格納部により格納された前記対応情報を参照し、前記修正後のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記9に記載の開発支援装置。
(付記11)前記推定部は、前記第2のモデルにおいて所定のコンポーネントが他のコンポーネントに継承される場合に、前記第1のモデルに含まれる、所定のコンポーネントが他のコンポーネントに継承されることを示すパラメータである仮想関数と、前記仮想関数の増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を更に参照し、前記第2のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記9又は10に記載の開発支援装置。
(付記12)前記推定部は、前記第1のモデルに含まれる、前記変数に含まれるパラメータである整数型変数および浮動小数点型変数と、各パラメータの増減に対する、前記第1のモデルにより生成されるプログラムのサイズの増減値とを対応付けた対応情報を更に参照し、前記第2のモデルにより生成されるプログラムのサイズを推定することを特徴とする付記9〜11のいずれか一つに記載の開発支援装置。