(57)【要約】      （修正有）【課題】モジュール識別条件に自由度を持たせ、入力信号と出力信号の間に接続されたブロック群以外のモジュールについても取得する。【解決手段】ソフトウェアを構成するモデルファイル２０２，２０３に属するブロック線図で表されたブロック群を含むモジュールを記憶するステップと、モジュール識別条件によって所定のブロック構成パターンに適合したモジュールを取得するステップとを備える。また、モジュール識別条件２１５を外部から入力する。また、モジュール識別条件に適合したモジュールをリスト化するステップ２１４を備える。【選択図】図２
2020140282.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアを構成するモデルファイルに属するブロック線図で表されたブロック群を含むモジュールを記憶するステップと、
モジュール識別条件によって所定のブロック構成パターンに適合した前記モジュールを取得するステップと、
を備えることを特徴とするモジュール取得方法。
【請求項２】
請求項１に記載のモジュール取得方法において、
前記モジュール識別条件を外部から入力することを特徴とするモジュール取得方法。
【請求項３】
請求項１又は２に記載のモジュール取得方法において、
前記モジュール識別条件に適合した前記モジュールをリスト化するステップを備える
ことを特徴とするモジュール取得方法。
【請求項４】
請求項１又は２に記載のモジュール取得方法において、
前記モジュール識別条件は、前記モデルファイル内のブロック種別指定、ブロック名称指定、及び前記ブロック名称指定で指定されたブロック内の構成ブロック数指定のいずれかを含む
ことを特徴とするモジュール取得方法。
【請求項５】
請求項１又は２に記載のモジュール取得方法において、
前記モジュール識別条件は、前記モデルファイル内のブロック結線ループ処理の指定、及び前記ブロック結線ループ処理の構成ブロック数指定を含む
ことを特徴とするモジュール取得方法。
【請求項６】
請求項１又は２に記載のモジュール取得方法において、
前記モジュール識別条件は、前記モデルファイル内のブロック名称指定、及び前記ブロック名称指定で指定された前記ブロックと結線された周辺ブロックのブロック数指定を含む
ことを特徴とするモジュール取得方法。
【請求項７】
ソフトウェアを構成するモデルファイルに属するブロック線図で表されたブロック群を含むモジュールを記憶した記憶部と、
モジュール識別条件によって所定のブロック構成パターンに適合した前記モジュールを取得するモジュール取得部と、
を備えることを特徴とするモジュール取得装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モジュール取得方法及びモジュール取得装置に関する。
【背景技術】
【０００２】
車両用など組込みソフトウェアにおいて、ブロック線図の図示で制御モデル（以下、モデル）を表現し、前記モデルを用いた制御およびソフトウェアの開発（以下、モデルベース開発）は開発手法の１つとして一般化してきた。前記モデルベース開発では、上流工程で前記モデルを用いて要求機能をシミュレーションし、上流工程にある間に制御モデルの妥当性確認を実施することで、従来手法において下流工程での不具合検出による手戻りを減らし、開発工数を低減、品質を向上させている。
【０００３】
モデルベース開発を含む一般的なソフトウェア開発において、既存資産の再利用による開発効率向上や品質向上のため、汎用性の高いモジュールはライブラリ化し開発プロジェクト内で再利用することが理想的である。
【０００４】
前記モデルは、四則演算や論理演算などの基本的機能を持つブロックの集合体であるが、複雑なモデルを分かり易くするために、関連ブロックをグループ化し階層構造にしている。
【０００５】
結果として、１つのモデルは、１ないし複数のソフトウェアユニットで構成され、１つのソフトウェアユニットは、１つないし複数のサブシステムで構成される。ソフトウェアユニットは、ソフトウェア実装において１つの関数となる構成単位である。サブシステムは、関連ブロックをグループ化し構成したものであり、例えば時間計測処理など小規模の機能単位毎にまとめたモジュールである。ただし、ブロック数が少なくそのままで分かり易い様な場合、ソフトウェアユニットの中にサブシステムを持たず直接的に、ブロック線図を配置することもある。
【０００６】
モデルベース開発では同一仕様に対し、ライブラリ化せずに前記ソフトウェアユニットか前記サブシステム単位でコピーアンドペーストにて対応した場合は、同一モジュール（クローン）が生成される。類似仕様に対し複数人で並行開発を行う場合などには、類似したモジュールが生成される場合がある。
【０００７】
この様な同一モジュール、類似モジュールを含むモデル群に関し、特許文献１、特許文献２では、入力信号と出力信号の間に接続されたブロック群を取得し、検索対象ファイルから同一または類似のモジュールを検出する方法が開示されている。また、特許文献２では、検出したクローンを共通関数化する方法も開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−３８０２２号公報
【特許文献２】特開２０１５−５６１４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
モデルベース開発において、１つのモデルは１ないし複数のソフトウェアユニットで構成し実現するが、前記した様なモデル作成方法により、同一または類似モジュールを生成する可能性があるため、ライブラリ化されていれば不要な再検証や、設計ごと流用すれば簡素化可能であった部分の再設計が発生し、開発効率低下や不具合作り込みの懸念がある。モデル設計の効率化と品質確保を図るためには、同一または類似モジュールをライブラリ化し、ライブラリの充足を進めることが必要である。
【００１０】
特許文献１、特許文献２では、入力信号と出力信号の間に接続されたブロック群を取得し、前記ブロック群と同一または類似のモジュール検索を行うため、入力信号と出力信号間のブロック群サイズ（制御仕様の粒度）に左右され、制御仕様によってはブロック群のサイズが大きくなり、類似と分類するための判定箇所が増加するので、類似と判定できるブロック群の数が減ることになる。結果として、十分なライブラリ候補が得られず、汎用性の高いライブラリ候補が得られない可能性がある。また、直接出力信号とならない中間演算処理においても類似したブロック群があり、これらのライブラリ化を図る手段が必要である。
【００１１】
そこで、本発明の目的は、モジュール識別条件に自由度を持たせ、入力信号と出力信号の間に接続されたブロック群以外のモジュールについても取得することである。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、一例としてモジュール取得方法は、ソフトウェアを構成するモデルファイルに属するブロック線図で表されたブロック群を含むモジュールを記憶するステップと、モジュール識別条件によって所定のブロック構成パターンに適合した前記モジュールを取得するステップと、を備える。
【発明の効果】
【００１３】
本発明によれば、モジュール識別条件に自由度を持たせ、入力信号と出力信号の間に接続されたブロック群以外のモジュールについても取得することができる。
【図面の簡単な説明】
【００１４】
【図１】ライブラリ化候補選出の全体構成図
【図２】所定のブロック構成パターンに適合したモジュールを取得する構成図
【図３】モデルファイル内部のブロック構成例
【図４】所定のブロック数で構成されたサブシステム（モジュール）の取得手順
【図５】所定のブロック数で構成された所定名称のサブシステム（モジュール）の取得手順
【図６】所定のブロック数で構成されたループ処理部分（モジュール）の取得手順
【図７】所定のブロック数で構成された指定ブロック周辺ブロック群（モジュール）の取得手順
【発明を実施するための形態】
【００１５】
以下、本発明の実施例について、図面を用いて説明する。
【実施例１】
【００１６】
図１はライブラリ化候補選出の全体構成図である。
【００１７】
図１において、検索元モジュール（検索キー）取得処理部１０１が本実施例の対象部であり、検索対象モデルファイルから検索元モジュール取得処理が完了したら１０２へ進む。
【００１８】
モジュール抽出処理部１０２では、検索元モジュール取得処理部１０１で取得した検索キーを用いて同一または類似モジュールの検索を行い、ライブラリ化候補選出処理部１０３にてライブラリ化候補を選出する構成とする。
【００１９】
なお、検索元モジュール取得処理部１０１とモジュール抽出処理部１０２を合せて、モジュール取得部と称する場合がある。
【００２０】
次に、図２はモデルファイルから所定のブロック構成パターンに適合したモジュール（検索キー）を取得する構成図である。
【００２１】
図２において、車両組込み用ソフトウェアを構成するモデルファイル記憶部２０１は、ソフトウェアユニットA２０４と、ソフトウェアユニットB２０５から構成されたモデルファイルA２０２と、別のモデルファイルB２０３を記録している。
【００２２】
モジュール検索実行部２１４は、モデルファイル記憶部２０１に記録されたモデルファイルA２０２、モデルファイルB２０３の構成要素であるモジュールA２０７、モジュールB２０８、モジュールC２０、モジュールD２１０、モジュールE２１１、モジュールG２１３の中から、モジュール識別条件入力部２１５にて外部から入力された条件に適合したモジュールを検索し取得する。
【００２３】
取得したモジュールは、所定のブロック構成パターンに適合したモジュール（検索キー）リスト記憶部２１６に記録する。なお、モジュール２０７〜２１３は、グループ化されたブロック群であるサブシステム２０７、２０８、２１０、２１２、２１３と、グループ化されていないブロック群２０９、２１１がある。
【００２４】
図２に記載したモジュール識別条件入力部２１５において、モジュール識別条件を（サブシステムであること）かつ（下限≦サブシステム構成ブロック数≦上限）とすることで、モジュールを取得する方法について説明する。
【００２５】
図３はモデルファイル内部のブロック構成例を記載したものである。制御ブロック３１０は複数存在するブロックの１つであり、これらのブロックを接続することでソフトウェアユニットを構成している。モジュール識別条件の１つであるサブシステムとは、図３に記載のソフトウェアユニット３０２、ソフトウェアユニット３０３、サブシステム_名称Ａ３０４、サブシステム_名称Ｂ３０５に示すグループ化されたブロック群を指す。
【００２６】
また、図３において、３０６はループ処理部分Ａ、３０７はループ処理部分Ｂ、３０８はユニットブロックＡ、３０９はユニットブロックＢ、３１０は制御ブロック、３１１は指定ブロック周辺ブロック群、３１２は指定ブロックである。
【００２７】
図４は所定のブロック数で構成されたサブシステム（モジュール）の取得手順である。
【００２８】
図４において、ステップ４０１では図２に記載したモデルファイルＡ２０２、モデルファイルＢ２０３の中からブロックの種別がサブシステムであるブロック群を検索し、ステップ４０２へ進む。
【００２９】
ステップ４０２では、ステップ４０１の結果に対しサブシステム検出判定した場合は、ステップ４０３へ進み該当サブシステム内の構成ブロック数をカウントし、ステップ４０４へ進む。
【００３０】
ステップ４０４では構成ブロック数カウント値が上限値と下限値の範囲内か否かの判定を実施する。
【００３１】
ステップ４０４の結果が上限値と下限値の範囲内である場合、モジュールとして取得し、ステップ４０５にて取得したモジュールを記憶部に記録し、ステップ４０６へ進む。
【００３２】
ステップ４０２、ステップ４０４にて条件不成立の場合も、ステップ４０６へ進む。
【００３３】
ステップ４０６では、検索対象モデルファイル内のサブシステム検索が完了していなければ、４０１へ戻りサブシステム検索を継続し、サブシステム検索が完了していれば、本モジュール取得処理を完了する。
【実施例２】
【００３４】
実施例１に対し、図２に記載したモジュール識別条件入力部２１５のモジュール識別条件を（（サブシステムであること）かつ（所定の名称））かつ（下限≦サブシステム構成ブロック数≦上限）に変更した場合のモジュールを取得する方法について説明する。
【００３５】
モジュール識別条件の中の所定の名称とは、図３に記載のサブシステム_名称Ａ３０４のことを指す。
【００３６】
図５は所定のブロック数で構成された所定名称のサブシステム（モジュール）の取得手順である。
【００３７】
図５において、ステップ５０１では図２に記載したモデルファイルA２０２、モデルファイルB２０３の中からブロックの種別がサブシステムであるブロック群を検索し、ステップ５０２へ進む。
【００３８】
ステップ５０２では、ステップ５０１の結果に対してサブシステム検出判定した場合は、ステップ５０３へ進み、指定されたブロック名称との整合判定を実施する。
【００３９】
ステップ５０３の結果が整合判定した場合、ステップ５０４へ進み該当サブシステム内の構成ブロック数をカウントし、ステップ５０５へ進む。
【００４０】
ステップ５０５では構成ブロック数カウント値が上限値と下限値の範囲内か否かの判定を実施する。
【００４１】
ステップ５０５の結果が上限値と下限値の範囲内である場合、モジュールとして取得し、ステップ５０６にて取得したモジュールを記憶部に記録し、ステップ５０７へ進む。
【００４２】
ステップ５０２、ステップ５０３、ステップ５０５にて条件不成立の場合は、ステップ５０７へ進む。
【００４３】
ステップ５０７では、検索対象モデルファイル内のサブシステム検索が完了していなければ、ステップ５０１へ戻りサブシステム検索を継続し、サブシステム検索が完了していれば、本モジュール取得処理を完了する。
【実施例３】
【００４４】
実施例１に対し、図２に記載したモジュール識別条件入力部２１５のモジュール識別条件を（ループ処理部分であること）かつ（下限≦ループ処理内の構成ブロック数≦上限）に変更した場合のモジュールを取得する方法について説明する。
【００４５】
ループ処理部分とは、図３に記載の入力信号を１サンプリング周期遅らせた出力をするユニットディレイブロック３０８、３０９の使用によりブロック結線がループしている部分３０６、３０７を指す。
【００４６】
図６は所定のブロック数で構成されたループ処理部分（モジュール）の取得手順である。
【００４７】
図６において、ステップ６０１では図２に記載したモデルファイル２０２、２０３の中からループ処理部分を検索し、６０２へ進む。
【００４８】
ステップ６０２では、ステップ６０１の結果に対しループ処理部分検出判定した場合は、ステップ６０３へ進み、該当ループ処理内の構成ブロック数をカウントし、ステップ６０４へ進む。
【００４９】
ステップ６０４では構成ブロック数カウント値が上限値と下限値の範囲内か否かの判定を実施する。
【００５０】
ステップ６０４の結果が上限値と下限値の範囲内である場合、モジュールとして取得し、ステップ６０５にて取得したモジュールを記憶部に記録し、ステップ６０６へ進む。
【００５１】
ステップ６０２、ステップ６０４にて条件不成立の場合は、ステップ６０６へ進む。
【００５２】
ステップ６０６では、検索対象モデルファイル内のループ処理部分検索が完了していなければ、６０１へ戻りループ処理部分検索を継続し、ループ処理部分検索が完了していれば、本モジュール取得処理を完了する。
【実施例４】
【００５３】
実施例１に対し、図２に記載したモジュール識別条件入力部２１５のモジュール識別条件を（指定した名称のブロックを使用していること）かつ（前記指定ブロックと結線された所定サイズのブロック群）に変更した場合のモジュールを取得する方法について説明する。
【００５４】
所定サイズのブロック群とは、図３に記載の３１２に示す指定ブロックと結線された前後方向に所定ブロック数（図３では前後１ブロックとして記載）までのブロック群３１１を指す。
【００５５】
図７は所定のブロック数で構成された指定ブロック周辺ブロック群（モジュール）の取得手順である。
【００５６】
図７において、ステップ７０１では図２に記載したモデルファイル２０２、２０３の中から指定した名称のブロックを検索し、ステップ７０２へ進む。
【００５７】
ステップ７０２では、ステップ７０１の結果に対し指定ブロック検出判定した場合は、ステップ７０３へ進み、該当ブロックと結線された前後方向に所定のブロック数までのブロック群（指定ブロック周辺ブロック群）をモジュールとして取得し記憶部に記録し、ステップ７０４へ進む。
【００５８】
ステップ７０２にて条件不成立の場合は、ステップ７０４へ進む。
【００５９】
ステップ７０４では、検索対象モデルファイル内の指定ブロック検出検索が完了していなければ、７０１へ戻り指定ブロック検出検索を継続し、指定ブロック検出検索が完了していれば、本モジュール取得処理を完了する。
【００６０】
以上の実施例によれば、下記のように表現することができる。
【００６１】
すなわち、検索対象モデルファイルから同一または類似モジュール検索時に用いる検索元モジュール（以下、検索キー）を取得する。
次に、取得した検索キーを用いて検索対象モデルファイルから同一または類似モジュールを抽出し、ライブラリ化候補モジュールを選出する。
本発明は前記検索キーの取得に関するもので、検索対象とするモデルファイルを記録した記憶部と、前記課題に対応したモジュールを検索するための条件入力部を備える。さらに、前記記憶部と前記条件入力部の情報を基にモジュールを検索するモジュール検索実行部を備え、前記モジュール検索実行部にて、同一または類似モジュール検索時の検索キーとなる所定のブロック構成パターンに適合したモジュールを取得し、取得したモジュールを全てリスト化して記憶部に記録することを備える。
【００６２】
これにより、所定の条件を与え、この条件に適合するモジュールを 入力信号と出力信号の間に接続されたブロック群以外も含め、検索対象のモデルファイルから総当たり検索することで、同一または類似モジュール検索時の検索キーとして使用可能なモジュール（所定のブロック構成パターンに適合したモジュール）を取得できる。
【００６３】
また、前記モジュール識別条件を外部から入力する。
【００６４】
また、前記モジュール識別条件に適合した前記モジュールをリスト化するステップを備える。
【００６５】
また、前記モジュール識別条件は、前記モデルファイル内のブロック種別指定、ブロック名称指定、及び前記ブロック名称指定で指定されたブロック内の構成ブロック数指定のいずれかを含む。
【００６６】
また、前記モジュール識別条件は、前記モデルファイル内のブロック結線ループ処理の指定、及び前記ブロック結線ループ処理の構成ブロック数指定を含む。
【００６７】
また、前記モジュール識別条件は、前記モデルファイル内のブロック名称指定、及び前記ブロック名称指定で指定された前記ブロックと結線された周辺ブロックのブロック数指定を含む。
【００６８】
また、モジュール取得装置は、ソフトウェアを構成するモデルファイルに属するブロック線図で表されたブロック群を含むモジュールを記憶した記憶部と、モジュール識別条件によって所定のブロック構成パターンに適合した前記モジュールを取得するモジュール取得部と、を備える。
【符号の説明】
【００６９】
１０１  検索元モジュール（検索キー）取得処理部、
１０２  モジュール抽出処理部
１０３  ライブラリ化候補選出処理部
２０１  モデルファイル記憶部
２０２  モデルファイルＡ
２０３  モデルファイルＢ
２０４  ソフトウェアユニットＡ
２０５  ソフトウェアユニットＢ
２０６  ソフトウェアユニットＣ
２０７  モジュールＡ
２０８  モジュールＢ
２０９  モジュールＣ
２１０  モジュールＤ
２１１  モジュールＥ
２１２  モジュールＦ
２１３  モジュールＧ
２１４  モジュール検索実行部
２１５  モジュール識別条件（ブロック構成パターン定義含む）入力部
２１６  所定のブロック構成パターンに適合したモジュールリスト記憶部
３０１  モデルファイル
３０２  ソフトウェアユニット
３０３  ソフトウェアユニット
３０４  サブシステム_名称Ａ
３０５  サブシステム_名称Ｂ
３０６  ループ処理部分Ａ
３０７  ループ処理部分Ｂ
３０８  ユニットブロックＡ
３０９  ユニットブロックＢ
３１０  制御ブロック
３１１  指定ブロック周辺ブロック群
３１２  指定ブロック
【図１】
2020140282.tif 000003
【図２】
2020140282.tif 000004
【図３】
2020140282.tif 000005
【図４】
2020140282.tif 000006
【図５】
2020140282.tif 000007
【図６】
2020140282.tif 000008
【図７】
2020140282.tif 000009