(57)【要約】【課題】コンポーネント指向開発において、製品を構成するコンポーネントの変更容易性を向上させることが可能な開発支援装置及びプログラムを提供する。【解決手段】製品に含まれるコンポーネントの構成や、そのコンポーネントを実体化したインスタンスのプロパティの設定内容を示すコンフィグレーションファイルに、ポート接続に関わるポート変数（図中ではテンプレート変数）や接続情報（図中では変数値仕様）を設定する領域を設け、これらポート変数や接続情報を用いて、ポート接続の対象となるインスタンスのソースコードの生成を制御する。これにより、接続先のコンポーネントの機能に依存することなく、また、コンフィグレーションファイル以外の管理情報を別途設けることなく、接続先のコンポーネントを介して取得可能な情報や、ポート接続に関する制約事項をソースコードに反映させることができる。【選択図】図５
2010282286.tif 000002
【特許請求の範囲】
【請求項１】
再利用されるプログラム部品の単位となるコンポーネント、前記コンポーネントが他のコンポーネントに情報を提供するための提供ポート、前記コンポーネントが他のコンポーネントから情報を取得するための使用ポートが少なくとも定義されたコンポーネントモデルに基づき、前記コンポーネントをインスタンス化したコンポーネントインスタンスを生成すると共に、前記提供ポートと前記使用ポートとを接続するポート接続によって連結された一群の前記コンポーネントインスタンスからなる構成品について、各コンポーネントインスタンスにて個別に設定可能な固有設定、及び前記ポート接続の内容を表す接続設定を少なくとも含んだコンフィグレーションファイルを設定するコンフィグ設定手段と、
前記コンフィグレーションファイル及び該コンフィグレーションファイルの設定内容を変数にして記述したコード生成用のテンプレートを用いて前記構成品のソースコードを生成するソース生成手段と、
を備え、
前記使用ポートの接続先に設定された提供ポートを接続先提供ポート、該接続先提供ポートが提供する情報を使用するに当たって必要となる付随的な情報を付随情報として、前記コンフィグレーションファイルに前記付随情報を設定する領域を設けたことを特徴とするソースファイル生成装置。
【請求項２】
前記コンフィグ設定手段によって前記ポート接続が設定又は変更されると、該ポート接続の対象である使用ポートを所有するコンポーネントインスタンスを自インスタンス、該ポート接続の対象である提供ポートを所有するコンポーネントインスタンスを他インスタンスとして、前記他インスタンスが有する情報を、前記自インスタンスが所有する提供ポートの前記付随情報として自動設定する自動設定手段を備えることを特徴とする請求項１に記載のソースファイル生成装置。
【請求項３】
前記自動設定手段を使用するか否かの設定が前記コンポーネントモデルで定義されていることを特徴とする請求項２に記載のソースファイル生成装置。
【請求項４】
前記使用ポートと前記提供ポートとは、それぞれに付与されたポートの型が一致する場合に接続可能であり、
前記付随情報は、前記ポートの型を表すインターフェースに対応付けて設定されることを特徴とする請求項１乃至請求項３のいずれかに記載のソースファイル生成装置。
【請求項５】
前記付随情報は、前記接続設定に対応付けて設定されることを特徴とする請求項１乃至請求項３のいずれかに記載のソースファイル生成装置。
【請求項６】
前記ソース生成手段は、前記付随情報をテンプレートファイルのパラメータとして用いることを特徴とする請求項１乃至請求項５のいずれかに記載のソースファイル生成装置。
【請求項７】
前記付随情報は、前記提供ポートの優先度であり、
前記コンフィグ設定手段により、前記使用ポートに対して複数の前記提供ポートを接続する設定がなされた場合、前記付随情報に従って、前記コンフィグレーションファイル内での記述順序を自動的に並べ替える自動変更手段を備え、
前記ソース生成手段は、前記コンフィグレーションファイル内での記述順序に従って、対応するソースコードを生成することを特徴とする請求項５に記載のソースファイル生成装置。
【請求項８】
コンピュータを、請求項１乃至請求項７のいずれかに記載のソースファイル生成装置を構成する各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンポーネント指向開発において使用され、互いにポート接続された一群のコンポーネントからなる構成品のソースコードを生成する開発支援装置及びプログラムに関する。
【背景技術】
【０００２】
プログラム開発の生産性や品質を向上させる手法として、ソフトウェアプロダクトラインエンジニアリング（以後、ＳＰＬＥと記載）が知られている。ＳＰＬＥでは、共通性を有する一連の製品シリーズに関するプログラム開発を、再利用可能な共通のコア資産であるコンポーネントを用いて行う。
【０００３】
このようなコンポーネントの再利用による製品開発は、コンポーネント指向開発と呼ばれており、そのコンポーネント指向開発を効率良く行うためには、コンポーネントを組み合わせて製品構成を決定し、その構成に応じたソースコード（更には、実行コード）を生成する開発支援装置が必要である（例えば、非特許文献１参照）。
【０００４】
なお、コンポーネントには、他のコンポーネントから情報を取得するための使用ポートや、他コンポーネントに情報を提供するための提供ポート（両ポートを総称して単にポートともいう）が設けられており、これらポートを接続することによって連結された一群のコンポーネントによって製品構成が表現される。
【０００５】
また、ソースファイルの自動生成には、コンポーネントの組合せ等によって生じる様々な制約を記述したコンフィグレーションファイルと、そのコンフィグレーションファイルの設定内容を変数にして記述したコード生成用のテンプレートファイルとが用いられる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】加藤、後藤、「組込みシステムのプロダクトラインにおけるＭＤＡ」，組込みシステムシンポジウム，２００７．１０．１９
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、組み込みシステムの開発においては、メモリの動的割り当ての使用ＲＡＭ容量などの制限があるため、製品構成の設定を実行時まで遅らせることは難しく、製品開発時に決定する必要がある。そのため、ポート同士を接続するポート接続は、製品構成を決定する段階で静的に設定しなければならず、製品への組込後（正確にはソースコードの生成後）にポートの接続関係を変更することができない。
【０００８】
このため、各コンポーネントは、自コンポーネントに必要な情報を保有する全てのコンポーネントとポート接続しておく必要がある。その結果、必要な情報が複数のコンポーネントに散在している場合、コンポーネント間の接続関係が複雑になるだけでなく、製品を構成するコンポーネントの一部だけを変更しようとしても、複数のコンポーネントがその変更の影響を受けるため、そのような変更に大きな手間を要する、即ち、製品構成の変更容易性が低いという問題があった。
【０００９】
例えば、図１１（ａ）に示すように、第１のコンポーネント（アプリ）Ｃ１１が第２のコンポーネント（マイコン）Ｃ１２から供給される周辺クロックによって決定される一定周期毎に、第３のコンポーネント（ＰＷＭ）Ｃ１３から、パルス信号を取得する必要がある場合、第１のコンポーネントＣ１１は、第２及び第３のコンポーネントＣ１２，Ｃ１３のいずれとも接続する必要がある。
【００１０】
ここで、取得する信号の方式をＰＷＭ（周辺クロックを使用）からＣＲＰＷＭ（ＣＲクロックを使用）に変更した場合、図１１（ｂ）に示すように、第３のコンポーネントＣ１３の置換だけでなく、その置換に連動して、第１のコンポーネントＣ１１と第２のコンポーネントＣ１２とのポート接続も変更する必要が生じてしまうのである。
【００１１】
また、従来装置では、ポート接続に付随してソースコードに反映させるべき何等かの制約（例えば、ポートへの複数接続における接続の優先順位や取得した信号のアクティブレベル等）が存在する場合に、その制約事項を別途管理しておき、製品構成を決定，変更する毎に、その制約事項を手動でコンフィグレーションファイル又はテンプレートファイルに反映させる必要があり、そのような制約事項の管理や反映に手間を要するという問題もあった。
【００１２】
本発明は、上記問題点を解決するために、コンポーネント指向開発において、製品を構成するコンポーネントの変更容易性を向上させることが可能な開発支援装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するためになされた発明である請求項１に記載の開発支援装置では、コンフィグ設定手段が、再利用されるプログラム部品の単位となるコンポーネント、コンポーネントが他のコンポーネントに情報を提供するための提供ポート、コンポーネントが他のコンポーネントから情報を取得するための使用ポートが少なくとも定義されたコンポーネントモデルに基づき、該コンポーネントモデルをインスタンス化したコンポーネントインスタンスを生成すると共に、提供ポートと使用ポートとを接続するポート接続によって連結された一群のコンポーネントインスタンスからなる構成品について、各コンポーネントインスタンスにて個別に設定可能な固有設定、及びポート接続の内容を表す接続設定を少なくとも含んだコンフィグレーションファイルを設定する。
【００１４】
また、ソース生成手段が、コンフィグレーションファイル及び該コンフィグレーションファイルの設定内容を変数にして記述したコード生成用のテンプレートを用いて構成品のソースコードを生成する。
【００１５】
なお、本発明では、使用ポートの接続先に設定された提供ポートを接続先提供ポート、該接続先提供ポートが提供する情報を使用するに当たって必要となる付随的な情報を付随情報として、コンフィグレーションファイルに付随情報を設定する領域が設けられている。
【００１６】
このように構成された本発明の開発支援装置では、ポート接続の対象となるコンポーネントインスタンスのソースコードを生成する際に、そのポート接続に関わる付随情報をソースコードの生成に使用することができる。その結果、接続先のコンポーネントの機能に依存することなく、また、コンフィグレーションファイル以外の管理情報を別途設けることなく、接続先のコンポーネントを介して取得可能な情報や、ポート接続に関する制約事項を、ソースコードに反映させることができる。
【００１７】
このように、本発明の開発支援装置によれば、付随情報を利用することによって、コンポーネント間の結合度や依存性を低下させることができるため、製品構成を変更する際の変更容易性を向上させることができる。
【００１８】
次に、請求項２に記載の開発支援装置では、コンフィグ設定手段によってポート接続が設定されると、そのポート接続の対象である使用ポートを所有するコンポーネントインスタンスを自インスタンス、そのポート接続の対象である提供ポートを所有するコンポーネントインスタンスを他インスタンスとして、自動設定手段が、他インスタンスが有する情報を、他インスタンスが所有するポートによって提供される情報の少なくとも一部を、自インスタンスが所有する提供ポートの付随情報として自動設定する。
【００１９】
このように構成された本発明の開発支援装置によれば、付随情報を手動で設定する必要がないため、ポート接続に付随して必要となる作業の手間を軽減することができる。
なお、請求項３に記載のように、自動設定手段を使用するか否かの設定がコンポーネントモデルで定義されていてもよい。
【００２０】
この場合、自動設定手段を使用するか否かを、コンポーネントモデル毎にユーザが任意に決めることができるため、付随情報の設定作業に柔軟性を持たせることができる。
また、請求項４に記載のように、使用ポートと提供ポートとは、それぞれに付与されたポートの型が一致する場合に接続可能である場合、付随情報は、ポートの型を表すインターフェースに対応付けて設定されていてもよい。このような設定は、付随情報がインターフェースに特有の情報である場合に好適である。
【００２１】
また、請求項５に記載のように、付随情報は、接続設定に対応付けて設定されていてもよい。このような設定は、付随情報が、個々のポート接続毎に異なる設定が必要な情報である場合に好適である。
【００２２】
なお、請求項６に記載のように、ソース生成手段は、付随情報をテンプレートファイルのパラメータとして用いてもよい。
また、請求項７に記載のように、付随情報が、提供ポートの優先度であり、また、ソース生成手段は、コンフィグレーションファイル内での記述順序に従って、対応するソースコードを生成することを前提として、コンフィグ設定手段により、使用ポートに対して複数の提供ポートを接続するポート接続が設定された場合に、自動変更手段が、付随情報に従って、コンフィグレーションファイル内での記述順序を自動的に並べ替えるように構成されていてもよい。
【００２３】
この場合、使用ポートに接続される複数の提供ポートの優先度を、簡単にソースコードに反映させることができる。
また、請求項８に記載のように、請求項１乃至請求項７のいずれかに記載の開発支援装置を、該装置を構成する各手段としてコンピュータを機能させるためのプログラムによって実現してもよい。
【００２４】
この場合、プログラムは、所定の記憶媒体に記憶された状態で提供されるものであってもよいし、通信ネットワークを介してダウンロードすることによって提供されるものであってもよい。
【図面の簡単な説明】
【００２５】
【図１】コンポーネント指向開発において実施する作業の概要を示す説明図。
【図２】テンプレートの内容を例示するリスト。
【図３】生成されるプロパティコードを例示するリスト。
【図４】開発支援装置の全体構成を示すブロック図。
【図５】コンポーネントモデルエディタの編集画面を例示する説明図。
【図６】構成モデルエディタの編集画面を例示する説明図。
【図７】ポート変数設定ツールの内容を示すフローチャート。
【図８】ポート変数の設定、使用例を示す説明図
【図９】優先度反映ツールの内容を示すフローチャート。
【図１０】接続情報の設定、使用例を示す説明図。
【図１１】従来装置の問題点を示す説明図。
【発明を実施するための形態】
【００２６】
以下に本発明の実施形態を図面と共に説明する。
［コンポーネント指向開発の概要］
まず、本発明の前提となるコンポーネント指向開発において実施される作業の概要を、図１に示す説明図に沿って説明する。
【００２７】
図１に示すように、コンポーネント指向開発における作業は、大きく分けて、再利用可能な共通のコア資産を開発するコア資産開発工程１００と、コア資産開発工程１００にて開発されたコア資産１５０を用いて製品のプログラム開発を行う製品開発工程２００とからなる。
【００２８】
＜コア資産開発工程＞
コア資産開発工程１００では、制御仕様書１３０に基づいてユースケースやクラス図等のＵＭＬ設計モデル１４０を作成する要求分析・設計工程１１０と、そのＵＭＬ設計モデル１４０に基づきコア資産１５０を生成する実装工程１２０とを実施する。
【００２９】
なお、コア資産１５０は、一連の製品シリーズにおいて再利用可能なプログラム部品をモデル化したコンポーネントモデル１５１と、その製品シリーズにおいて利用されるライブラリ関数を定義したライブラリソースコード１５２と、コンポーネントモデル１５１に対応したプログラム部品のプロパティソースコード（後述する）を生成するためのテンプレートファイル１５３とからなる。
【００３０】
<<コンポーネントモデル>>
コンポーネントモデル１５１は、製品開発に必要なリソースを定義したものであり、各リソースは、製品開発工程で必要となる各種情報を設定するためのプロパティを有する。なお、リソースの具体的なものとしては、再利用可能なプログラム部品であるコンポーネント、コンポーネント間の接続に用いるポート、ポート間でやり取りする情報（具体的には、プロパティソースコードの生成に必要となる情報）の種類を規定するインターフェース等がある。
【００３１】
このうち、ポートは、他コンポーネントから情報を取得するための使用ポートと、他コンポーネントに情報を提供するための提供ポートとからなる。
また、各ポートは、ポートの型としてインターフェースを有する。そして、提供ポートと使用ポートとは、ポートの型が一致する場合に限り接続可能となるように規定されている。
【００３２】
また、ポートを介した情報のやり取りは、具体的には、提供ポート側のコンポーネント
で定義された関数シンボル情報を、使用ポート側のコンポーネントが取得して、そのコンポーネントに対応するプログラムに関数シンボルを記述することにより実現される。
【００３３】
<<テンプレートファイル>>
テンプレートファイル１５３は、プロパティソースコードの生成に使用されるテンプレート群であり、コンポーネントモデル１５１において、コンポーネント毎に個別のテンプレートが関連付けられている。
【００３４】
そして、テンプレートは、プロパティソースコードの一部としてそのまま用いられる記述であるコード記述と、コンポーネントモデル１５１や後述するコンフィグレーションファイル２６０の設定内容を変数として、その設定内容に応じたコードが生成されるようにコード生成を制御するための記述である制御記述とからなる。
【００３５】
なお、本実施形態では、コード記述にはＣ言語、制御記述にはＪＡＶＡ（登録商標）言語が用いられている。また、制御記述は、ソースコードの生成を制御（例えば、コード記述の選択、繰り返し等）するための記述と、ソースコード中に数値や文字列を挿入するための記述とからなる。
【００３６】
図２は、テンプレート３００の一例であり、図中“＜％”，“％＞”で挟まれている部分が制御記述、他の部分がコード記述である。
＜製品開発工程＞
製品開発工程２００では、まず、製品仕様書２４０に基づき、コア資産１５０であるコンポーネントモデル１５１から、製品の構成に必要なコンポーネントを実体化したコンポーネントインスタンス（以下、単に「インスタンス」という）と、インスタンス毎にプロパティソースコードの生成に必要な情報群を設定するためのプロパティによって構成されたコンフィグレーションファイル２６０を生成する製品構成設定工程２１０を実施する。但し、製品構成設定工程２１０は、既存のコンフィグレーションファイル（ベースコンフィグレーションファイル）２５０に基づいて実施してもよい。
【００３７】
次に、製品構成設定工程２１０で生成されたコンフィグレーションファイル２６０、及びコア資産１５０であるコンポーネントモデル１５１，テンプレートファイル１５３に基づいて、プロパティソースコード２７０を生成するプロパティファイル生成工程２２０を実施する。
【００３８】
最後に、プロパティファイル生成工程２２０で生成されたプロパティソースコード２７０と、コア資産１５０であるコンポーネントモデル１５１，ライブラリソースコード１５２に基づいて、対象製品に実装する形式で表された実行ファイル２８０を生成するビルド工程２３０を実施する。
【００３９】
なお、コンフィグレーションファイル２６０を構成する各インスタンスのプロパティでは、インスタンスの名称，ポートの接続先，ポートの型等が設定される。
プロパティファイル生成工程２２０では、具体的には、各インスタンスのプロパティ（コンフィグレーションファイル２６０）、及び該インスタンスの生成元となったコンポーネントのプロパティ（コンポーネントモデル１５１）の設定内容に従って、テンプレートファイル１５３の制御記述を解釈してソースコードを生成する。
【００４０】
但し、ソースコードは、インスタンスの生成元であるコンポーネントモデル１５１に対応付けられたテンプレートを用いて、インスタンス毎に生成される。
ここで図３は、図２に示したテンプレート３００を用いて生成されるプロパティソースコード３５０の一例である。
【００４１】
［装置構成］
次に、本実施形態の開発支援装置１０について説明する。
図４は、開発支援装置１０の構成を表すブロック図である。なお、開発支援装置１０は、コア資産開発工程１００における各工程１１０，１２０、及び製品開発工程２００における各工程２１０，２２０，２３０の作業を支援する装置である。
【００４２】
図４に示すように、開発支援装置１０は、種々の情報を記憶するためのＨＤＤ１１と、マウスやキーボード等により構成され、開発者からの各種入力を受け付ける入力部１２と、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ等から構成され、当該装置１０の各部位を統括的に制御する制御部１３と、液晶ディスプレイ等を備え、開発者に対して視覚的に情報を伝達する表示部１４とを備えている。
【００４３】
ＨＤＤ１１には、コア資産開発工程１００によって既に生成されたコア資産１５０が記憶されていると共に、コア資産開発工程１００によって新たに生成されるコア資産１５０が記憶される。
【００４４】
また、制御部１３を構成するＲＯＭには、各工程１１０，１２０，２１０，２２０，２３０の実施を支援するための各種プログラム（以下では「開発支援ツール」ともいう）が記憶されている。
【００４５】
なお、このような開発支援装置１０は、コンポーネント指向開発のために製造された専用の装置であってもよいし、例えば、周知のパーソナルコンピュータに、上述の開発支援ツールをインストールすることで実現されるものであってもよい。その場合、上述のＲＯＭに記憶されている開発支援ツールは、上述のＨＤＤ１１やＲＡＭ、又はパーソナルコンピュータが読取可能な各種記憶媒体（図示せず）等に記憶されることになる。
【００４６】
以下、本発明に関わるコンポーネントモデル１５１、コンフィグレーションファイル２６０、製品構成設定工程２１０について詳述する。
［コンポーネントモデルの詳細］
コンポーネントモデル１５１は、コンポーネントのプロパティとして、自身の名称、プロパティファイル生成工程２２０で使用するテンプレート（テンプレートファイル１５３）、生成されたプロパティソースコード２７０に付与するファイル名、所有するポート、製品構成設定工程２１０において使用する外部ツール等の情報を有する。
【００４７】
また、コンポーネントモデル１５１は、ポートのプロパティとして、自身の名称、ポートの型、ポート接続の多重度、提供ポートが提供する情報（変数名，関数，変数や関数を使用するためのインクルードファイル等）、デフォルトの接続先（コネクタ仕様）等の情報を有する。特に、本実施形態では、ポート接続に付随して、接続先の他コンポーネントのプロパティソースコードの生成に必要となる接続情報の名称及びその型が、ポートのプロパティに含まれている。
【００４８】
更に、コンポーネントモデル１５１は、インターフェースのプロパティとして、自身の名称等の情報を有する。特に、本実施形態では、使用ポートの接続先のコンポーネントから取得して提供ポートの接続先のコンポーネントに提供する情報等、接続情報以外の情報の伝達に使用可能なポート変数の名称及びその型が、インターフェースのプロパティに含まれている。
【００４９】
なお、コンポーネントモデル１５１におけるリソースのプロパティでは、コンポーネントを実体化したインスタンスにおいて変更可能な情報については、未設定であってもよいし、デフォルト値が設定されていてもよい。
【００５０】
ところで、開発支援装置１０では、コンポーネントモデル１５１を、開発支援ツールの一つであるコンポーネントモデルエディタ（以下「ＣＭエディタ」という）を起動することで編集できるように構成されている。但し、ＣＭエディタは、通常、実装工程１２０で使用される。
【００５１】
ここで図５は、ＣＭエディタの編集画面の表示例である。
図５に示すように、ＣＭエディタの編集画面は、コンポーネントモデルを構成するリソース（コンポーネント，ポート，インターフェース等）の一覧をツリー状に表示するリソース表示ウィンドウ（図５（ａ）参照）と、リソース表示ウィンドウ上で選択されたリソースに対応するプロパティの内容を表示し、その内容を編集する操作を受け付けるモデルプロパティ（ＭＰ）設定ウィンドウ（図５（ｂ）参照）とからなる。
【００５２】
なお、リソース表示ウィンドウではプロパティの設定内容の一部（リソースや変数の名称等）も表示されるように構成されている。例えば、図５（ａ）において、点線で囲んだ部分の記述は、「TheSK Robo」型の「コンポーネント」が所有する「runnable」型の「使用ポート」が「変数値仕様」型の「接続情報（設定値：５）」を有することを表している。また、図５（ｃ）の記述は、「TheTouchSensor」型の「コンポーネント」が所有する「runnable」型の「提供ポート」の接続先が、「TheSK Robo」型の「コンポーネント」が所有する「runnable」型の「使用ポート」であり、「変数値仕様」型の「接続情報（設定値：５）」を有することを表している。
【００５３】
また、コンポーネントを実体化した時に、そのインスタンスにて外部ツール（外部プログラム）を使用する場合には、図５（ｂ）中の「外部ツール」の欄に、外部ツールの格納場所，ファイル名を設定する。
【００５４】
［コンフィグレーションファイルの詳細］
コンフィグレーションファイル２６０は、製品仕様書２４０に従って選択されたコンポーネントの構成や、そのコンポーネントを実体化したインスタンスのプロパティの設定内容を示すファイルである。
【００５５】
なお、開発支援装置１０では、コンフィグレーションファイル２６０を、開発支援ツールの一つである構成モデルエディタ（以下「ＳＭエディタ」という）を起動することで編集できるように構成されている。但し、ＳＭエディタは、通常、製品構成設定工程２１０で使用される。
【００５６】
ここで、図６は、ＳＭエディタの編集画面の表示例である。
ＳＭエディタの編集画面は、図６（ａ）に示すように、コンポーネントモデル１５１で定義されたコンポーネントの一覧を所定のカテゴリー毎に表示するコンポーネント表示ウィンドウと、コンポーネント表示ウィンドウ上で選択されることによってインスタンスが生成されたコンポーネントをアイコンで表示するインスタンス表示ウィンドウと、インスタンス表示ウィンドウ上で選択されたインスタンスに対応するプロパティの設定内容を表示し、その内容を編集する操作を受け付けるインスタンスプロパティ（ＩＰ）設定ウィンドウとからなる。
【００５７】
なお、ＩＰ設定ウィンドウには、コンポーネントモデルで定義されたプロパティが持つ情報のうち、インスタンス毎に変更可能な情報（インスタンスの名称，ポートの接続先，接続情報等）が表示される。
【００５８】
また、使用ポートの接続先については、複数の接続先（提供ポート）が存在する場合があるため、ＩＰ設定ウィンドウの使用ポートの欄を選択すると、図６（ｂ）に示すように、接続する提供ポートの追加や記載順序の並べ替え作業を支援するためのポート編集ウィンドウが表示されるように構成されている。
【００５９】
また、このポート編集ウィンドウでは、接続情報の一つである提供ポートの優先度（図中「接続されているポート」を表示する枠内のポート名の最後に括弧内に表示された数値）の設定，変更もできるように構成されている。
【００６０】
［製品構成設定工程］
次に、製品構成設定工程２１０について説明する。
製品構成設定工程２１０は、開発支援装置１０にて、ＳＭエディタを起動し、コンフィグレーションファイル２６０を、インスタンス毎に手動で設定する。
【００６１】
但し、インスタンスに対応するコンポーネントのプロパティ（コンポーネントモデル１５１）にて、外部ツールが設定されている場合は、その外部ツールを起動することにより、プロパティの一部を、外部ツールを用いて自動的に編集する。
【００６２】
なお、外部ツールは、通常、コンポーネントインスタンスを組み込んだ時、又は、インスタンスの設定内容が変化した時に起動する。
そして、開発支援装置１０では、外部ツールとして、自コンポーネントに設けられた使用ポートの接続先となるコンポーネントが有する情報を、自コンポーネントに設けられた提供ポートを介してその接続先となるコンポーネントに提供できるように、ポート変数を自動設定するポート変数設定ツール、及び、提供ポートの優先度を表す接続情報に基づいて、使用ポートの接続先となる提供ポートの記述順を自動的にソートする優先度反映ツールが用意されている。
【００６３】
＜ポート変数設定ツール＞
ここで、ポート変数設定ツールが実行する処理を、図７に示すフローチャートに沿って説明する。
【００６４】
但し、本ツールは、ポートの型としてポート変数を有するインターフェースが付与された提供ポート（以下「変数付提供ポート」という）、及びポート変数として設定される情報を有するインスタンスに接続される使用ポート（以下「取得対象使用ポート」という）を所有するインスタンスにおいて使用される。
【００６５】
また、取得対象使用ポートの接続先となるインスタンス（コンポーネント）には、ポート変数として使用するために予め用意された変数情報（ポート変数の型と一致する情報）を、プロパティに設定しておく必要がある。
【００６６】
本ツールは、自インスタンスのプロパティにおける使用ポートの接続先がＩＰエディタによって設定又は変更され、且つ、プロパティに本ツールが設定されている場合に起動する。
【００６７】
本ツールが起動すると、まず、Ｓ１１０では、接続先の設定／変更が行われた使用ポート（以下「対象ポート」という）が取得対象使用ポートであるか否かを判断する。具体的には、ポートの型が予め指定されたものであるか否かで判断すればよい。
【００６８】
Ｓ１１０にて、対象ポートが取得対象使用ポートではないと判断した場合は、そのまま本処理を終了し、対象ポートが取得対象使用ポートであると判断した場合は、Ｓ１２０に移行する。
【００６９】
Ｓ１２０では、対象ポートの接続先となった提供ポートを所有するインスタンスを特定し、Ｓ１３０では、その特定したインスタンスのプロパティから変数情報を取得する。
Ｓ１４０では、Ｓ１３０で取得した変数情報を、変数付提供ポートに付与されたインターフェースのプロパティにポート変数として設定して本処理を終了する。
【００７０】
つまり、図８（ａ）に示すように、ポートの型がインターフェースＡである提供ポートＳＰ２を所有するコンポーネントＣ２は、変数情報を持つように設定する。
また、ポートの型がインターフェースＡである使用ポートＵＰ１、及びポートの型がインターフェースＢである提供ポートＳＰ１を所有するコンポーネントＣ１に、ポート変数設定ツールを持たせると共に、インターフェースＢが変数情報と同じ型のポート変数を持つように設定する。
【００７１】
この場合、コンポーネントＣ１のインスタンスの使用ポートＵＰ１の設定変更をトリガにしてポート変数設定ツールが起動し、使用ポートＵＰ１の接続先である提供ポートＳＰ２を所有するコンポーネントＣ２のインスタンスが特定され、そのプロパティから変数情報を取得して、インターフェースＢのポート変数に変数情報が格納される。これにより、提供ポートＳＰ１はポート変数（＝変数情報）を持ち、提供ポートＳＰ１の接続先に対してポート変数（＝変数情報）を提供することが可能となる。
【００７２】
例えば、図８（ｂ）に示すように、第３のコンポーネント（アプリ）Ｃ３が第２のコンポーネント（マイコン）Ｃ２から供給される周辺クロックによって決定される一定周期毎に、第１のコンポーネント（ＰＷＭ）Ｃ１から、パルス信号を取得する必要がある場合、第２のコンポーネントの周辺クロックを変数情報とし、第１のコンポーネントＣ１は、使用ポートＵＰ１の接続先である第２のコンポーネントＣ２から取得した変数情報（周辺クロック）を、提供ポートＳＰ１の型となるインターフェースのポート変数に設定する。
【００７３】
ここで、第３のコンポーネントＣ３が取得する信号の方式をＰＷＭ（周辺クロックを使用）からＣＲＰＷＭ（ＣＲクロックを使用）に変更する場合、図８（ｃ）に示すように、第１のコンポーネントＣ１をＰＷＭからＣＲＰＷＭに置換し、第２のコンポーネントＣ２が提供する変数情報を周辺クロックからＣＲクロックに書き換えるだけで対応することができる。
【００７４】
＜優先度反映ツール＞
次に、優先度反映ツールが実行する処理を、図９に示すフローチャートに沿って説明する。
【００７５】
但し、本ツールは、複数の提供ポートが接続可能であり、かつ接続順の優先度を表す接続情報を定義している使用ポート（優先度付多接続使用ポート）を所有するインスタンスにおいて使用される。
【００７６】
また、多接続使用ポートの接続先となる提供ポートには、提供ポートの優先度を表す接続情報を設定しておく必要がある。
本ツールは、自インスタンスのプロパティにおける使用ポートの接続先がＩＰエディタによって設定又は変更され、且つ、プロパティに本ツールが設定されている場合に起動する。
【００７７】
本ツールが起動すると、まず、Ｓ２１０では、接続先の設定／変更が行われた使用ポート（以下「対象ポート」という）が優先度付多接続使用ポートであるか否かを判断する。具体的には、対象ポートに優先度を表す接続情報の定義があり、かつ対象ポートの接続先として設定されている提供ポートの数が複数であるか否かで判断すればよい。
【００７８】
Ｓ２１０にて、対象ポートが優先度付多接続使用ポートでないと判断した場合は、そのまま本処理を終了し、対象ポートが優先度付多接続使用ポートであると判断した場合は、Ｓ２２０に移行する。
【００７９】
Ｓ２２０では、優先度付多接続使用ポートの接続先として設定されている各提供ポートのから接続情報（即ち優先度）を取得し、Ｓ２３０では、その取得した接続情報が示す優先度が高い順に、プロパティにおける接続先の記述順を変更して、本処理を終了する。
【００８０】
例えば、図１０（ａ）に示すように、コンポーネントＣ１の使用ポートＵＰ１と、コンポーネントＣ２，Ｃ３の提供ポートＳＰ２，ＳＰ３とはポートの型が同じであり、コンポーネントＣ１は、コンポーネントＣ２が提供ポートＳＰ２を介して提供する関数ｆｕｎｃＢ、及びコンポーネントＣ３が提供ポートＳＰ３を介して提供する関数ｆｕｎｃＣを、使用ポートＵＰ１を介して使用するものとする。そして、各提供ポートＳＰ２，ＳＰ３には、それぞれの優先度（ここでは、ＳＰ２がHigh，ＳＰ３がＬow）を表す接続情報が設定されているものとする。
【００８１】
この場合、コンポーネントＣ１のインスタンスの使用ポートＵＰ１の設定変更をトリガにして優先度反映ツールが起動され、プロパティ上で使用ポートＵＰ１の接続先についての記述が、接続情報に示された優先度順に書き換わる。ここでは、提供ポートＳＰ２の後ろに提供ポートＳＰ３が記述されることになる。
【００８２】
このようなプロパティの記述を含むコンフィグレーションファイル２６０を用いてプロパティソースコードを生成するプロパティファイル生成工程２２０では、コンポーネントＣ１のインスタンスに対応するソースコードを生成する際に、関数ｆｕｎｃＢ，ｆｕｎｃＣをプロパティ上での記述順と一致するように生成する。その結果、ソースコード上では、関数ｆｕｎｃＢ，ｆｕｎｃＣが、対応する提供ポートの接続情報に示された優先度順に並ぶこと、即ち、優先度順に実行されることになる。
【００８３】
＜接続情報の他の使用例＞
なお、図１０（ｂ）に示すように、コンポーネントＣ１，Ｃ２の使用ポートＵＰ１，ＵＰ２と、コンポーネントＣ３の提供ポートＳＰ３とは、ポートの型が同じであり、コンポーネントＣ３は提供ポートＳＰ３を介して、何等かの入力信号の信号レベル（Ｈｉ／Ｌｏ）を、コンポーネントＣ１，Ｃ２の双方に提供するものとする。また、コンポーネントＣ１が入力信号のＨｉレベルをアクティブレベルとして処理を実行し、コンポーネントＣ２が入力信号のＬｏレベルをアクティブレベルとして処理を実行するものとする。
【００８４】
この場合、製品構成設定工程２１０において、使用ポートＵＰ１，提供ポートＳＰ３間のポート接続に対応付けられる接続情報として「Ｈｉレベル」、使用ポートＵＰ２，提供ポートＳＰ３間のポート接続に対応付けられる接続情報として「Ｌｏレベル」を設定する。
【００８５】
また、テンプレートファイル１５３では、この接続情報を変数として使用し、入力信号がＨｉレベルの時に肯定判断するソースコードと、入力信号がＬｏレベルの時に肯定判断するソースコードとのうちいずれかを選択する記述とする。
【００８６】
このような接続情報を含むコンフィグレーションファイル２６０を用いてプロパティソースコードを生成するプロパティファイル生成工程２２０では、接続情報に設定された所望の信号レベルで動作するソースコードを自動生成することになる。
【００８７】
［効果］
以上説明したように、開発支援装置１０では、コンフィグレーションファイル２６０に、ポート接続に関わるポート変数や接続情報を設定する領域を設け、ポート変数や接続情報を用いて、ポート接続の対象となるインスタンスのソースコードの生成を制御することができるように構成されている。
【００８８】
従って、開発支援装置１０によれば、接続先のコンポーネントの機能に依存することなく、また、コンフィグレーションファイル２６０以外の管理情報を別途設けることなく、接続先のコンポーネントを介して取得可能な情報をポート変数を介して、また、ポート接続に関する制約事項を接続情報を介して、ソースコードに反映させることができる。
【００８９】
その結果、開発支援装置１０によれば、ポート変数や接続情報を利用することによって、コンポーネント間の結合度や依存性を低下させることができるため、製品構成を変更する際の変更容易性を向上させることができる。
【００９０】
また、開発支援装置１０によれば、ＳＭエディタを介した操作によって、ポート接続の設定に変化が生じると、外部ツール（ポート変数設定ツール，優先度反映ツール）を起動して、ポート変数の自動設定や、接続情報を反映したソースコードが生成されるようにコンフィグレーションファイル２６０の自動書換を行うようにされている。
【００９１】
従って、開発支援装置１０によれば、ポート変数や接続情報を設けたことによって生じる関連作業の手間を軽減することができる。
また、開発支援装置１０によれば、外部ツールを使用するか否かを、コンポーネント毎に指定することができるため上述の関連作業に柔軟性を持たせることができる。
【００９２】
なお、開発支援装置１０において、ポート変数は、ポートの型を表すインターフェースに対応付けて設定されるため、個々のポート接続ではなく、インターフェースに特有の情報を伝達する場合に好適に使用することができる。
【００９３】
また、開発支援装置１０において、接続情報は、個々のポート接続に対応付けて設定されるため、個々のポート接続毎に異なる設定が必要な情報を伝達する場合に好適に使用することができる。
【００９４】
なお、以上では本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において様々な態様にて実施することが可能である。
【００９５】
上記実施形態では、ポート変数としてクロックに関する情報、接続情報として、優先度又は信号のアクティブレベルを設定する場合について説明したが、これらに限るものではなく、インターフェース毎に異なる情報（ポート変数の場合）、又はポート接続毎に異なる情報（接続情報の場合）であり、且つソースコードの生成に影響を及ぼす情報であればよい。
【００９６】
［本発明と実施形態との対応］
本実施形態において製品構成設定工程２１０で使用されるＳＭエディタがコンフィグ設定手段、プロパティファイル生成工程２２０の処理を実行するプログラムがソース生成手段、ポート変数及び接続情報が付随情報、ポート変数設定ツールが自動設定手段、優先度反映ツールが自動変更手段に相当する。
【符号の説明】
【００９７】
１０…開発支援装置  １１…ＨＤＤ  １２…入力部  １３…制御部  １４…表示部  １００…コア資産開発工程  １１０…要求分析・設計工程  １２０…実装工程  １３０…制御仕様書  １４０…ＵＭＬ設計モデル  １５０…コア資産  １５１…コンポーネントモデル  １５２…ライブラリソースコード  １５３…テンプレートファイル  ２００…製品開発工程  ２１０…製品構成設定工程  ２２０…プロパティファイル生成工程  ２３０…ビルド工程  ２４０…製品仕様書  ２５０…ベースコンフィグレーションファイル  ２６０…コンフィグレーションファイル  ２７０…プロパティソースコード  ２８０…実行ファイル
【図１】
2010282286.tif 000003
【図２】
2010282286.tif 000004
【図３】
2010282286.tif 000005
【図４】
2010282286.tif 000006
【図７】
2010282286.tif 000007
【図８】
2010282286.tif 000008
【図９】
2010282286.tif 000009
【図１０】
2010282286.tif 000010
【図１１】
2010282286.tif 000011
【図５】
2010282286.tif 000012
【図６】
2010282286.tif 000013