(57)【要約】【課題】モデルベース開発で、ソフトウェア要件を集約するためのリファクタリングを自動で行うソフトウェア設計支援装置、および方法を提供することを目的とするものである。【解決手段】モデルベース開発で設計したモデルを記録したモデルデータ記憶部１１と、ソフトウェア要件記憶部１２とから、モデルのどの部分に要件が割り当てられているかをトレース分析部１３で分析し、分析結果と、リファクタリングで着目する要件を指定する分析要件入力部１４からリファクタリング実行部１５でリファクタリングを実施する。リファクタリングの結果、およびモデルデータ記憶部１１にあるモデルと、シミュレーション入力記憶部１６に保持された入力データと、から、シミュレーション実行及び結果比較部１７で、シミュレーションを実施し、結果に差分がないことを確認した上で、結果表示部１８でリファクタリングによる変更部分を強調表示する。【選択図】図１
2016042317.tif 000002
【特許請求の範囲】
【請求項１】
モデルベース開発における、既存モデルをソフトウェア要件に従ってリファクタリングを行うソフトウェア設計支援装置であって、
前記モデルのサブシステムと前記ソフトウェア要件の紐付け情報から、どの前記サブシステムがどの前記ソフトウェア要件にかかわっているかを分析するトレース分析部と、
入力として指定された複数の前記ソフトウェア要件を元にリファクタリング対象の前記モデルの前記サブシステムを展開し、ブロック間の依存関係から指定された前記ソフトウェア要件が割り当てられた前記ブロックのサブセットを分析し、前記サブセットから前記モデルの前記サブシステムを変更するリファクタリング実行部と、
前記リファクタリングの前後における前記モデルのシミュレーションを実行し、実行結果を比較する、シミュレーション実行及び結果比較部と、
前記ソフトウェア要件が割り当てられた前記ブロックと、前記リファクタリングによって変更した前記サブシステムと、シミュレーション結果の差分と、を表示する結果表示部と、
を備えることを特徴とするソフトウェア設計支援装置。
【請求項２】
前記トレース分析部は、あらかじめ前記ソフトウェア要件と、前記モデルの前記ブロックおよび前記サブシステムとの前記紐付け情報を記録しており、前記紐付け情報に変更があった場合のみトレース分析を実行すること、を特徴とする請求項１に記載のソフトウェア設計支援装置。
【請求項３】
モデルベース開発における、既存モデルをソフトウェア要件に従ってリファクタリングを行うソフトウェア設計支援方法であって、
前記モデルのサブシステムと前記ソフトウェア要件の紐付け情報から、どの前記サブシステムがどの前記ソフトウェア要件にかかわっているかをトレース分析する過程と、
入力として指定された複数の前記ソフトウェア要件を元にリファクタリング対象の前記モデルの前記サブシステムを展開し、ブロック間の依存関係から指定された前記ソフトウェア要件が割り当てられた前記ブロックのサブセットを分析し、前記サブセットから前記モデルの前記サブシステムを変更することにより前記リファクタリングを実行する過程と、
前記リファクタリングの前後における前記モデルのシミュレーションを実行し、実行結果を比較する過程と、
前記ソフトウェア要件が割り当てられた前記ブロックと、前記リファクタリングによって変更した前記サブシステムと、シミュレーション結果の差分と、を表示する過程と、
を含むことを特徴とするソフトウェア設計支援方法。
【請求項４】
前記トレース分析する過程は、あらかじめ前記ソフトウェア要件と、前記モデルの前記ブロックおよび前記サブシステムとの前記紐付け情報を記録しており、前記紐付け情報に変更があった場合のみ前記トレース分析を実行する過程を含むことを特徴とする請求項３に記載のソフトウェア設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェアのモデルベース開発におけるソフトウェア要件を集約するためのリファクタリングに関するものである。
【背景技術】
【０００２】
ソフトウェアの複雑化、開発期間の短縮化に伴い、再利用性や保守性を考慮したソフトウェア設計を行うことはますます重要となっている。このソフトウェア設計で有用な手法として、シミュレーション可能なモデルで設計を行うモデルベース開発がある。モデルベース開発ではたとえばＳｉｍｕｌｉｎｋ（登録商標）を用いる。
【０００３】
Ｓｉｍｕｌｉｎｋ（登録商標）での設計では、処理が定められたブロックと、ブロック間をつなぐ信号線によりモデルを記述する。また一般に、モデルは階層構造で記述し、機能単位でブロック群をサブシステムとしてまとめていく。ソースコードで例えるならば、ブロックは１行のコード、サブシステムは関数に相当する。
【０００４】
モデルベース開発では、従来、シミュレーションにより不具合の可能性が高いところを強調表示するなどのモデル検証装置が特許文献１に提案されている。このようなモデル検証装置の動作を以下に示す。
【０００５】
図７はモデル検証装置の比較処理についてのフローチャートである。図７において、モデル検証装置は、比較モデルを読み込み（Ｓ４０５、Ｓ４１０）、基準モデルにおけるブロックと、比較モデルにおけるブロックを順次実行する（Ｓ４１５）。そして、同一のブロックにて得られた演算結果の差分を算出すると共に、基準モデル（或いは比較モデル）を構成する各ブロックを表示し、これらのブロックのうち、差分が許容範囲を超えたブロックの強調表示を行う（Ｓ４２５）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１９８８０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の技術におけるモデル検証装置は、差分が許容範囲を超えたブロックに対し強調表示を行うことで、不具合原因の特定を行っている。それ以外にも、従来の技術では一般に、コード、テストとの紐付けに焦点が当てられ、不具合のあるモデルのブロックを強調表示することで設計変更の支援が行われているのみである。従って、自動での設計変更、特にソフトウェア要件をベースにした自動設計変更については行われていない。
【０００８】
また、設計によっては、関連するソフトウェア要件が複数のサブシステムに分散して割り当てられている場合がある。関連するソフトウェア要件は１つのサブシステムに集約され、ソフトウェア要件に対する凝集度が高いことが望ましい。また、設計の見直しによって、サブシステムを修正する場合がある。例えば、機能安全規格ＩＳＯ２６２６２の対応などの場合で、この際も安全に対するソフトウェア要件を割り当てるサブシステムを集約させることが望ましい。
【０００９】
そこで本発明は、ソフトウェア要件を集約するためのリファクタリングを自動で行うソフトウェア設計支援装置、および方法を提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
上記目的を解決するために本発明は、モデルベース開発における、既存モデルをソフトウェア要件に従ってリファクタリングを行うソフトウェア設計支援装置であって、前記モデルのサブシステムと前記ソフトウェア要件の紐付け情報から、どの前記サブシステムがどの前記ソフトウェア要件にかかわっているかを分析するトレース分析部と、入力として指定された複数の前記ソフトウェア要件を元にリファクタリング対象の前記モデルの前記サブシステムを展開し、ブロック間の依存関係から指定された前記ソフトウェア要件が割り当てられた前記ブロックのサブセットを分析し、前記サブセットから前記モデルの前記サブシステムを変更するリファクタリング実行部と、前記リファクタリングの前後における前記モデルのシミュレーションを実行し、実行結果を比較する、シミュレーション実行及び結果比較部と、前記ソフトウェア要件が割り当てられた前記ブロックと、前記リファクタリングによって変更した前記サブシステムと、シミュレーション結果の差分と、を表示する結果表示部と、を備えるものである。
【００１１】
また、本発明は、モデルベース開発における、既存モデルをソフトウェア要件に従ってリファクタリングを行うソフトウェア設計支援方法であって、前記モデルのサブシステムと前記ソフトウェア要件の紐付け情報から、どの前記サブシステムがどの前記ソフトウェア要件にかかわっているかをトレース分析する過程と、入力として指定された複数の前記ソフトウェア要件を元にリファクタリング対象の前記モデルの前記サブシステムを展開し、ブロック間の依存関係から指定された前記ソフトウェア要件が割り当てられた前記ブロックのサブセットを分析し、前記サブセットから前記モデルの前記サブシステムを変更することにより前記リファクタリングを実行する過程と、前記リファクタリングの前後における前記モデルのシミュレーションを実行し、実行結果を比較する過程と、前記ソフトウェア要件が割り当てられた前記ブロックと、前記リファクタリングによって変更した前記サブシステムと、シミュレーション結果の差分と、を表示する過程と、を含むものである。
【発明の効果】
【００１２】
本発明のソフトウェア設計支援装置、および方法は、入力したソフトウェア要件に紐づくブロックのサブセットを分析することにより、自動でモデルのリファクタリングを行うことができる。従って、入力したソフトウェア要件が自動的に集約され、凝集度が高いモデル設計を得ることができるという効果を奏するものである。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１におけるソフトウェア設計支援装置の概略ブロック図
【図２】本発明の実施の形態１におけるソフトウェア設計支援装置の動作説明のためのフローチャート
【図３】本発明の実施の形態１におけるソフトウェア設計支援装置のリファクタリング動作前のモデル図
【図４】本発明の実施の形態１におけるソフトウェア設計支援装置の探索木による分析例を示す図
【図５】本発明の実施の形態１におけるソフトウェア設計支援装置の探索動作を示すフローチャート
【図６】本発明の実施の形態１におけるソフトウェア設計支援装置のリファクタリング動作後のモデル図
【図７】従来のモデル検証装置の比較処理についてのフローチャート
【発明を実施するための形態】
【００１４】
以下、本発明におけるソフトウェア設計支援装置、および方法について図面を参照しながら説明する。
【００１５】
（実施の形態１）
図１は本実施の形態１におけるソフトウェア設計支援装置の概略ブロック図である。図２は、本発明の実施の形態１におけるソフトウェア設計支援装置の動作説明のためのフローチャートである。図３は、本発明の実施の形態１におけるソフトウェア設計支援装置のリファクタリング動作前のモデル図である。図４は、本発明の実施の形態１におけるソフトウェア設計支援装置の探索木による分析例を示す図である。図５は、本発明の実施の形態１におけるソフトウェア設計支援装置の探索動作を示すフローチャートである。図６は、本発明の実施の形態１におけるソフトウェア設計支援装置のリファクタリング実行後のモデル図である。
【００１６】
図１において、ソフトウェア設計支援装置１は、モデルのサブシステムとソフトウェア要件の紐付け情報から、どの前記サブシステムがどの前記ソフトウェア要件にかかわっているかを分析するトレース分析部１３と、入力として指定された複数の前記ソフトウェア要件を元にリファクタリング対象の前記モデルの前記サブシステムを展開し、ブロック間の依存関係から指定された前記ソフトウェア要件が割り当てられた前記ブロックのサブセットを分析し、前記サブセットから前記モデルの前記サブシステムを変更するリファクタリング実行部１５と、前記リファクタリングの前後における前記モデルのシミュレーションを実行し、実行結果を比較する、シミュレーション実行及び結果比較部１７と、前記ソフトウェア要件が割り当てられた前記ブロックと、前記リファクタリングによって変更した前記サブシステムと、シミュレーション結果の差分と、を表示する結果表示部１８と、を備える。
【００１７】
これにより、入力したソフトウェア要件に紐づくブロックのサブセットを分析することで、自動的にモデルのリファクタリングを行うことができる。従って、入力したソフトウェア要件が自動的に集約され、凝集度が高いモデル設計を得ることができる。
【００１８】
以下、より具体的に本実施の形態１の構成、動作について説明する。
【００１９】
図１において、モデルベース開発で設計したモデルは、モデルデータ記憶部１１に記録されている。また、ソフトウェア要件記憶部１２には、ソフトウェア要件が記憶されている。従って、両者から、トレース分析部１３は、モデルのどの部分にソフトウェア要件が割り当てられているかを分析する。一方、リファクタリングで着目するソフトウェア要件については、分析要件入力部１４によりユーザが指定する。
【００２０】
こうして、入力されたソフトウェア要件と、トレース分析部１３による分析結果を用いて、リファクタリング実行部１５がリファクタリングを実施する。このリファクタリングの結果と、モデルデータ記憶部１１にあるモデルと、シミュレーション入力記憶部１６に保持される入力データと、から、シミュレーションを、シミュレーション実行及び結果比較部１７で実施する。そして、リファクタリング前後で、シミュレーション結果に差分がないことを確認した上で、結果表示部１８が、リファクタリングによる変更したサブシステムを強調表示する。また、結果表示部１８は、ソフトウェア要件が割り当てられたブロックと、シミュレーション結果の差分も表示する。
【００２１】
なお、図１におけるモデルデータ記憶部１１、ソフトウェア要件記憶部１２、およびシミュレーション入力記憶部１６は、たとえばハードディスクやメモリからなる記憶装置で構成される。分析要件入力部１４は、たとえばキーボードで構成される。結果表示部１８は、たとえばカラーディスプレイで構成される。そして、トレース分析部１３、リファクタリング実行部１５、および、シミュレーション実行及び結果比較部１７は、以下に説明する図２、図５のソフトウェアの一部で実現される。
【００２２】
図２は、ソフトウェア設計支援装置１の動作説明のためのフローチャートの一例である。なお、このフローチャートはソフトウェア設計支援装置１に含まれる図示しない演算部によって実行される。
【００２３】
図２のフローチャートが実行されると、前記演算部は、まず、ステップＳ１でリファクタリング対象とする現状のモデル（以下、ベースモデルという）のファイルを読み込む。次に、ステップＳ２では、前記演算部はソフトウェア要件とベースモデルとの紐付け情報を読み込む。そして、前記演算部はステップＳ３で、ステップＳ１、Ｓ２の入力から、ベースモデルの階層構造にあわせたソフトウェア要件の検索木を作成する。図３はリファクタリング動作前のベースモデルの例を示す図である。図４は図３のベースモデルから作成した検索木による分析例を示す図である。
【００２４】
まず、図３に示したモデルには５つのサブシステムＭ１〜Ｍ５が含まれる。またサブシステムＭ１の下にはさらにサブシステムＭ１１、Ｍ１２が含まれる階層構造となっている。同様にサブシステムＭ２〜Ｍ５の下位にもサブシステムがある。
【００２５】
次に、図４に示す検索木において、図３のサブシステムＭ１が図４のノードＤ１に相当し、サブシステムＭ１１がノードＤ１１、サブシステムＭ１２がノードＤ１２に相当する。サブシステムＭ２〜Ｍ５も同様にベースモデル中のサブシステムが、検索木のノードとして表される。下位のサブシステムには紐付け情報よりソフトウェア要件と紐付けられ、上位のサブシステムには下位のサブシステムがもつソフトウェア要件全てが紐付けられる。
【００２６】
上記したステップＳ１〜Ｓ３までの動作は、モデルのサブシステムとソフトウェア要件の紐付け情報から、どのサブシステムがどのソフトウェア要件にかかわっているかを分析するトレース分析部１３の動作に相当する。
【００２７】
ここで、図２に戻り、前記演算部は、ステップＳ４でリファクタリングにおいて着目するソフトウェア要件（以下、基準要件という）を分析要件入力部１４からの入力として受け取る。次に、前記演算部は、ステップＳ５で、ステップＳ３の結果である検索木から、ステップＳ４で入力された基準要件が割り当てられたサブシステムを分析し、依存関係を検索するリスト（以下、検索対象リストという）に追加する。
【００２８】
たとえばステップＳ４で、基準要件として要件Ｘ１３、Ｘ３２、Ｘ４１を指定したとすると、前記演算部は、図４に示した検索木からそれぞれサブシステムＡ２、Ｃ２、Ｄ１に割り当てられていると判断する。そして検索対象リストには、３つのサブシステムＡ２、Ｃ２、Ｄ１が追加される。
【００２９】
次に、前記演算部は、ステップＳ６、Ｓ７でサブシステムの依存関係をたどり、基準要件に関係するサブシステムのサブセットを分析する。ステップＳ６では検索対象リストに追加したサブシステムに対し出力（前）方向に依存関係をたどる。対して、ステップＳ７では検索対象リストに追加したサブシステムに対し入力（後）方向に依存関係をたどる。図４は、モデルの依存関係を辿るイメージも示している。
【００３０】
図５は、ステップＳ６のサブセット分析方法を説明するためのフローチャートである。
【００３１】
まず、ステップＳ６１で、前記演算部は、検索対象リストの中からサブシステム（以下、選択ブロックという）を１つ選択する。このとき、シミュレーションの実行順序を分析し、実行順序が最後のものを選択すると効率がよい。次に、ステップＳ６２で、前記演算部は、選択ブロックの入力に当たる信号線をたどり、選択ブロックの入力となるサブシステム（以下、入力ブロックという）を検出する。
【００３２】
次に、ステップＳ６３で、前記演算部は、入力ブロックからさらに辿るブロックがあるかどうかを判断する。選択ブロックの入力ブロックがない（モデルの外から入力を受け取る）場合、選択ブロックから入力を辿ることを終了する。このとき、シミュレーションの実行順序を分析し、入力ブロックの実行順序が、検索対象リストに追加したいずれのブロックよりも前に実行される場合、入力を辿ることを終了条件に変えると効率がよい。
【００３３】
ステップＳ６３で、入力を辿ることを継続すると判断した場合（Ｓ６３のＮｏ）、前記演算部は、ステップＳ６４で選択ブロックを入力方向から辿ったブロックのサブセット（以下、後方向サブセットという）に登録する。次に、前記演算部は、ステップＳ６５で、入力ブロックを新しい選択ブロックとして設定する。以降、前記演算部は、ステップＳ６２からＳ６５を繰り返す。
【００３４】
一方、ステップＳ６３で入力を辿ることを終了すると判断した場合（Ｓ６３のＹｅｓ）、前記演算部は、ステップＳ６６で後方向サブセットに含まれるサブシステムを、検索対象リストから除外する。そして、前記演算部は、ステップＳ６７で検索対象リストが空であるかを確認する。検索対象リストが空でない場合（Ｓ６７のＮｏ）、前記演算部は、Ｓ６１から処理を繰り返し、検索対象リストが空である場合（Ｓ６７のＹｅｓ）は、分析を終了する。
【００３５】
図２のステップＳ７でも、前記演算部は、ステップＳ６と同様に分析する。ステップＳ７の場合、前記演算部は、出力方向にサブシステムを辿りサブセット（以下、前方向サブセットという）を抽出する。また検索対象リストは、ステップＳ６とステップＳ７とで独立に保持する。そして、ステップＳ６６で除外されるサブシステムは、ステップＳ６で使用する検索対象リストに関係し、ステップＳ７の検索対象リストとは関係しない。
【００３６】
このような動作から、図３に示したモデルに対するステップＳ６の結果としては、サブシステムＡ１、Ａ２、Ｂ１、Ｂ２、Ｂ３、Ｃ１、Ｃ２、Ｃ３、Ｄ１が後方向サブセットとして抽出される。同様に、ステップＳ７の結果としては、サブシステムＡ２、Ｃ１、Ｃ２、Ｃ３、Ｄ１、Ｄ２、Ｄ３、Ｅ１が前方向サブセットとして抽出される。
【００３７】
ここで、図２に示した動作の説明に戻る。
【００３８】
ステップＳ８では、前記演算部は、ステップＳ６、Ｓ７の結果である後方向サブセットおよび前方向サブセットの両方に含まれるサブシステムを抽出する。次に、ステップＳ９で、前記演算部は、抽出したサブシステムが含まれる上位のサブシステムを展開し、抽出したサブシステム群を新しいサブシステムとしてまとめ直すことで、リファクタリングを実行したモデル（以下、リファクタリングモデルという）を作成する。また変更したサブシステムを記録する。
【００３９】
ここで、これらの動作の具体例を示す。図３に示したモデルに対する実行結果では後方向サブセットと後方向サブセットの両方に含まれるサブシステムとして、サブシステムＡ２、Ｃ１、Ｃ２、Ｃ３、Ｄ１が抽出される。図６は図３に示したモデルに対するリファクタリング後のモデルの例を示す図である。図３のサブシステムＭ１、Ｍ３、Ｍ４が展開され、ステップＳ８で得られたサブセットをまとめたものが図６のサブシステムＲ２である。サブシステムＲ２には基準要件が割り当てられたサブシステムＲ２１、Ｒ２２、Ｒ２３が含まれる。サブシステムＭ１で展開され、サブシステムＲ２に含まれないサブシステムＲ１は変更したサブシステムとして記録される。同様にサブシステムＭ４を展開し、サブシステムＲ２に含まれないサブシステムＲ３、Ｒ４も変更したサブシステムとして記録される。
【００４０】
以上に述べたステップＳ４〜Ｓ９は、入力として指定された複数のソフトウェア要件を元にリファクタリング対象のモデルのサブシステムを展開し、ブロック間の依存関係から指定されたソフトウェア要件が割り当てられたブロックのサブセットを分析し、サブセットからモデルのサブシステムを変更するリファクタリング実行部１５の動作に相当する。
【００４１】
ステップＳ１０で、前記演算部は、ベースモデルとリファクタリングモデルの両方に対し、同じ入力値を使ってのシミュレーションを実行する。詳細には、前記演算部は、リファクタリングの結果、およびモデルデータ記憶部１１にあるモデルと、シミュレーション入力記憶部１６に保持された入力データと、から、シミュレーションを実行する。そして、前記演算部は、各実行結果を比較し、出力値が異なる場合があれば、差分情報として記録する。
【００４２】
このステップＳ１０は、リファクタリングの前後におけるモデルのシミュレーションを実行し、実行結果を比較する、シミュレーション実行及び結果比較部１７の動作に相当する。
【００４３】
次に、前記演算部は、ステップＳ１１で、ステップＳ９でのリファクタリング結果とステップＳ１０でのシミュレーション結果を表示する。リファクタリング結果として、前記演算部はベースモデルから変更したサブシステムを強調表示し、基準要件が割り当てられているサブシステムも強調表示する。また、ソフトウェア要件が割り当てられたブロックも表示される。シミュレーション結果として、出力値が異ならない、すなわちシミュレーション結果に差分がない場合、前記演算部はリファクタリングによる不具合混入がないことを示す。出力値が異なる、すなわちシミュレーション結果に差分がある場合は、前記演算部は、その差分と入力値を示す。
【００４４】
強調表示の具体例としては、図６において、サブシステムＲ１、Ｒ２、Ｒ３、Ｒ４がリファクタリングによる変更として強調表示される対象である。またサブシステムＲ２１、Ｒ２２、Ｒ２３は基準要件が割り当てられたサブシステムとして、変更点とは異なる色を使うなどして区別して、強調表示される。
【００４５】
このステップＳ１１は、ソフトウェア要件が割り当てられたブロックと、リファクタリングによって変更したサブシステムと、シミュレーション結果の差分と、を表示する結果表示部１８の動作に相当する。
【００４６】
以上の構成、動作により、入力したソフトウェア要件に紐づくブロックのサブセットを分析することで、自動的にモデルのリファクタリングを行うことができるので、入力したソフトウェア要件が自動的に集約され、凝集度が高いモデル設計を得ることが可能なソフトウェア設計支援装置１が得られる。
【００４７】
なお、本実施の形態１では、ソフトウェア設計支援装置１として記載したが、これは、コンピュータが図２や図５のフローチャートを実行することによるソフトウェア設計支援方法であってもよい。
【００４８】
すなわち、モデルのサブシステムとソフトウェア要件の紐付け情報から、どの前記サブシステムがどの前記ソフトウェア要件にかかわっているかをトレース分析する過程と、入力として指定された複数の前記ソフトウェア要件を元にリファクタリング対象の前記モデルの前記サブシステムを展開し、ブロック間の依存関係から指定された前記ソフトウェア要件が割り当てられた前記ブロックのサブセットを分析し、前記サブセットから前記モデルの前記サブシステムを変更することにより前記リファクタリングを実行する過程と、前記リファクタリングの前後における前記モデルのシミュレーションを実行し、実行結果を比較する過程と、前記ソフトウェア要件が割り当てられた前記ブロックと、前記リファクタリングによって変更した前記サブシステムと、前記シミュレーション結果の差分と、を表示する過程と、を含むソフトウェア設計支援方法である。この場合も、本実施の形態１と同等の効果が得られる。
【００４９】
（実施の形態２）
以下、本発明の実施の形態２について説明する。なお、本実施の形態２において、実施の形態１と同じ構成については同一符号を付し、その詳細な説明を省略する。すなわち、本実施の形態２のソフトウェア設計支援装置１における特徴となる部分は、トレース分析部１３が、あらかじめソフトウェア要件と、モデルのブロックおよびサブシステムとの紐付け情報を記録しており、この紐付け情報に変更があった場合のみトレース分析を実行するようにした点である。
【００５０】
具体的には、前記演算部がトレース分析部１３での分析結果を外部ファイルとして記録しておき、以後、紐付け情報に変更がなければトレース分析をしない。これにより、モデルとソフトウェア要件の検索木の作成を省略することができる。
【００５１】
換言すると、リファクタリング実行部１５で得られるリファクタリング結果をトレース分析部１３で保存しておくことで、リファクタリングモデルに対し、新たな基準要件を指定して、リファクタリングを行う場合については、図２に示すフローチャートのステップＳ１〜Ｓ３を省略できる。
【００５２】
このように、本実施の形態２によれば、紐付け情報に変更があった場合のみトレース分析を実行するので、紐付け情報に変更がなければトレース分析を行わない。従って、検索木の作成を省略でき、効率向上が図れる。
【００５３】
なお、本実施の形態２では、ソフトウェア設計支援装置１として記載したが、これは、ソフトウェア設計支援方法であってもよい。
【００５４】
すなわち、実施の形態１で述べたソフトウェア設計支援方法において、トレース分析する過程が、あらかじめソフトウェア要件と、モデルのブロックおよびサブシステムとの紐付け情報を記録しており、この紐付け情報に変更があった場合のみ前記トレース分析を実行する過程を含むソフトウェア設計支援方法である。この場合も、本実施の形態２と同等の効果が得られる。
【産業上の利用可能性】
【００５５】
本発明にかかるソフトウェア設計支援装置、および方法は、自動的にモデルのリファクタリングを行うことができるので、特に、ソフトウェアのモデルベース開発を行うソフトウェア設計支援装置、および方法等として有用である。
【符号の説明】
【００５６】
１  ソフトウェア設計支援装置
１３  トレース分析部
１５  リファクタリング実行部
１７  シミュレーション実行及び結果比較部
１８  結果表示部
【図１】
2016042317.tif 000003
【図２】
2016042317.tif 000004
【図３】
2016042317.tif 000005
【図４】
2016042317.tif 000006
【図５】
2016042317.tif 000007
【図６】
2016042317.tif 000008
【図７】
2016042317.tif 000009