(57)【要約】  ブロック図からソースコードを自動生成する際に、ブロック図に対して、そこから変換されるソースコードの妥当性の確認を効率化し、新しいコード生成ツールを導入する場合でも、コード生成ツールの妥当性を効率よく確認できるかが重要となる。  上記課題を解決するため本発明のソフトウェアの設計支援装置では、複数のブロック要素と該複数のブロック要素間の接続関係により、制御対象機器を制御するための処理手順を記述したブロック図に基づいて、ソースコードを自動生成するソフトウェアの設計支援装置であって、前記複数のブロック要素と前記接続関係をノードとリンクを用いて表す第一のデータフローと、前記ソースコード中の変数または関数間の依存関係をノードとリンクを用いて表す第二のデータフローと、を作成し、前記第一のデータフローと前記第二のデータフローとの一致性を求め、出力することを特徴とする。
2013190644.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロック要素と該複数のブロック要素間の接続関係により、制御対象機器を制御するための処理手順を記述したブロック図に基づいて、ソースコードを自動生成するソフトウェアの設計支援装置であって、
前記複数のブロック要素と前記接続関係をノードとリンクを用いて表す第一のデータフローと、
前記ソースコード中の変数または関数間の依存関係をノードとリンクを用いて表す第二のデータフローと、を作成し、
前記第一のデータフローと前記第二のデータフローとの一致性を求め、出力することを特徴とするソフトウェアの設計支援装置。
【請求項２】
請求項１に記載のソフトウェアの設計支援装置において、ブロック図からソースコードを生成するための複数のコード生成ソフトウェアを有し、ソースコードの生成に用いたコード生成ソフトウェアを特定する情報と、生成したソースコードと、を対応付けて登録することを特徴とするソフトウェアの設計支援装置。
【請求項３】
請求項２に記載のソフトウェアの設計支援装置において蓄積されたブロック図の事例に対応するソースコードの一致性の指標から、前記複数のコード生成ソフトウェアの一つごとに、ブロック図事例の一致性を統計処理して出力する、ソフトウェアの設計支援装置。
【請求項４】
請求項２または３いずれかに記載のソフトウェアの設計支援装置において、蓄積されたブロック図の事例と、そこから各々変換されるソースコードの一致性に基づいて、コード生成ソフトウェアの評価結果を出力する、ソフトウェアの設計支援装置。
【請求項５】
請求項１から４いずれかに記載の制御ソフトウェアの設計支援装置において、ブロック図から変換される生成ソースコードの判断指標として、生成ソースコードを計算機に搭載する際に必要な、メモリ容量やステップ数などのソースコード効率を表示する、ソフトウェアの設計支援装置。
【請求項６】
請求項１に記載のソフトウェアの設計支援装置において、少なくとも相関係数、ハミング距離、中心化共鳴性分析のうちの一つを用いて、前記第一のデータフローと前記第二のデータフローとの一致性を求めることを特徴とするソフトウェアの設計支援装置。
【請求項７】
請求項３に記載のソフトウェアの設計支援装置において、前記統計処理は、前記一致度の平均、最小値、標準偏差の少なくとも一つであることを特徴とするソフトウェアの設計支援装置。
【請求項８】
請求項１に記載のソフトウェアの設計支援装置において、前記ブロック図は、既存のソースコードに基づいて作成されることを特徴とするソフトウェアの設計支援装置。
【請求項９】
複数のクラスと該クラス間の関係により、制御対象機器を制御するための処理手順を記述したクラス図に基づいて、ソースコードを自動生成するソフトウェアの設計支援装置であって、
前記複数のクラスと前記関係をノードとリンクを用いて表す第一のデータフローと、
前記ソースコード中の変数または関数間の依存関係をノードとリンクを用いて表す第二のデータフローと、を作成し、
前記第一のデータフローと前記第二のデータフローとの一致性を求め、出力することを特徴とするソフトウェアの設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの開発、検証、保守支援に好適なソフトウェア解析プログラムに関する。
【背景技術】
【０００２】
自動車、建設機械、エレベータ等の技術分野ではいわゆる組込みソフトウェアによって制御対象を制御する、組込み制御装置が用いられている。組込みソフトウェアは、従来の機械的機構や電気回路による方式に比べて柔軟かつ高度な制御が実現できること、ソフトウェアの部分的な変更によって多くの派生製品を開発できることが利点として挙げられる。【０００３】
近年、組込み制御装置に求められる制御処理が年々複雑化するとともに、制御変数間の依存関係が複雑化し、ソフトウェアの開発が困難となっている。その一方で、ソフトウェア開発サイクルは短期化を求められている。これに対して、複雑かつ大型のソフトウェアを短期間で開発するには、設計資料から齟齬がなくソフトウェアを開発できる事が重要となる。【０００４】
これを解決するため、一つ一つの処理内容が定義されているブロックを複数組み合わせたブロック図によりアルゴリズムを記述し、ブロック図から計算機言語によるソースコードを生成するモデルベース開発技術が提唱されている。【０００５】
しかしブロック図による、アルゴリズムの記述は制約を設けなければ、非常に柔軟な記述ができるため、一定の規則に基づいたブロック図からソースコードの生成では、設計者の意図どおりのソースコードとならないことが懸念される。そこでソースコードの生成を行う前に、生成されるソースコードの妥当性の観点から、作成中のブロック図を検証し、設計品質を高める技術が例えば特許文献１に記載されている。【０００６】
特許文献１記載の従来技術は、ブロック図から生成されるソースコードが、妥当な物かどうかの判定結果と共に記憶しておき、作成中のブロック図が過去に問題を生じたブロック図と一致した場合に、設計者に通知する技術である。このように過去の設計事例を蓄積する事により、作成されるブロック図を制約し、ブロック図から生成されるソースコードの品質を保つ事を実現している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−１３８８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記従来技術では、ブロック図に対して、そこから生成されたソースコードが設計者の意図に対して妥当なものかどうか、意図に反しているかどうかの判定を下した上で、過去の設計事例として蓄積する必要がある。【０００９】
しかし、このソースコードの判定には設計者自ら、ソースコードが設計時の意図どおりの動作をするかどうかを確認する必要があり、設計事例が膨大になるほど、この確認する作業に要する手間も膨大になる。【００１０】
また、ブロック図から生成されるソースコードは、その両者の変換を行うソフトウェアであるコード生成ツールの品質に依存する。例えばコード生成ツールのバージョンを変更する、またはコード生成ツールその物を別の種類に変更した場合などに、ブロック図から生成されるソースコードの内容も変化することがある。この場合、生成されたソースコードの妥当性が確認済みのブロック図の設計事例についても、生成されたソースコードの妥当性が未確認である事に等しいため、あらためて、過去のブロック図の事例について生成ソースコードの妥当性の確認作業を行う必要がある。一つ一つのブロック図からの生成ソースコードの妥当性確認作業を、過去の設計事例の数の分だけ行う必要があるため、設計事例が豊富であるほど、コード生成ツールの変更が行いづらい状態になってしまう。【００１１】
しかし、コード生成ツールの変更やバージョンアップには、プログラムコードの性能や効率が見込める場合もあるため、上記の妥当性確認の手間さえ削減できれば、可能な限り最新のコード生成ツールに変更する要求が存在する。【００１２】
従って、ブロック図に対して、そこから変換されるソースコードの妥当性の確認を効率化し、新しいコード生成ツールを導入する場合でも、コード生成ツールの妥当性を如何に効率よく確認できるかが重要となる。
【課題を解決するための手段】
【００１３】
上記課題を解決するため本発明のソフトウェアの設計支援装置では、複数のブロック要素と該複数のブロック要素間の接続関係により、制御対象機器を制御するための処理手順を記述したブロック図に基づいて、ソースコードを自動生成するソフトウェアの設計支援装置であって、前記複数のブロック要素と前記接続関係をノードとリンクを用いて表す第一のデータフローと、前記ソースコード中の変数または関数間の依存関係をノードとリンクを用いて表す第二のデータフローと、を作成し、前記第一のデータフローと前記第二のデータフローとの一致性を求め、出力することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、組込みシステムとして大規模、複雑化されたソフトウェア（コンピュータプログラム）であっても、ソースコードとその元となった設計情報であるブロック図の比較が容易に行えるため、開発環境の一部であるコード生成ツールの妥当性の評価が容易となる。【００１５】
これによりソフトェア開発に、ブロック図からソースコードへの自動生成技術および、コード生成ツールの導入が容易となり、ひいてはソフトウェアの開発効率全体を向上させる事ができる。
【図面の簡単な説明】
【００１６】
【図１】本発明による一実施の形態のソフトウェア設計支援装置の表示画面を示す図。
【図２】一実施の形態におけるコード生成ツールの評価結果の表示画面を示す図。
【図３】本発明による一実施の形態の全体構成を示す図。
【図４】一実施の形態におけるブロック図管理部を示す図。
【図５】一実施の形態のおけるブロック図データを示す図。
【図６】一実施の形態におけるブロック図管理部の処理を示すフローチャート。
【図７】一実施の形態におけるブロック図事例データを示す図。
【図８】一実施の形態におけるソースコード管理部を示す図。
【図９】一実施の形態におけるソースコード管理部の処理を示すフローチャート。
【図１０】一実施の形態におけるソースコード生成条件の設定画面を示す図。
【図１１】一実施の形態におけるソースコードデータを示す図。
【図１２】一実施の形態におけるソースコード事例データを示す図。
【図１３】一実施の形態におけるデータフロー管理部を示す図。
【図１４】一実施の形態におけるブロック図解析部の処理を示すフローチャート。
【図１５】一実施の形態におけるブロック図信号線データを示す図。
【図１６】一実施の形態におけるデータフローを示す図。
【図１７】一実施の形態におけるソースコード解析部の処理を示すフローチャート。
【図１８】一実施の形態におけるソースコード変数データを示す図。
【図１９】一実施の形態におけるデータフロー登録部の処理を示す図。
【図２０】一実施の形態におけるデータフロー事例データを示す図。
【図２１】一実施の形態における一致性解析部を示す図。
【図２２】一実施の形態におけるデータフロー選択部の処理を示すフローチャート。
【図２３】一実施の形態における一致度測定部の処理を示すフローチャート。
【図２４】一実施の形態における一致度データを示す図。
【図２５】一実施の形態における画像表示部を示す図。
【図２６】一実施の形態における解析結果出力部の処理を示すフローチャート。
【図２７】一実施の形態におけるコード生成ツール評価部の処理を示すフローチャート。
【図２８】一実施の形態における評価結果出力部の処理を示すフローチャート。
【発明を実施するための形態】
【００１７】
本発明は、家庭用機器、産業用機器、医療用機器等、電子制御を必要とする部品の特定の機能を実現するためにコンピュータシステムが組込まれている組込みシステムのソフトウェア部品の設計支援装置に関し、特に携帯電話やデジタル家電、さらには自動車、建設機械、エレベータ等の輸送機器など、必要とする機能が多岐にわたるシステム、複数のハードウェア、複数のソフトウェアを組み合わせた規模の大きなシステムの、ソフトウェア開発、検証、保守支援に好適である。本発明は、複数のブロック要素と該ブロック要素間の接続関係を表記したブロック図によって処理手順が示され、前記ブロック図に基づいて計算機言語によるソースコードに前記処理手順を自動変換するソフトウェアを搭載するソフトウェアの開発支援装置であって、前記ブロック図のブロック要素と接続関係を表すノードとリンクからなるブロック図グラフ構造と、前記ソースコード中の変数間の依存関係を表すノードとリンクからなる自動生成ソースコードグラフ構造を作成し、二種類のグラフ構造を比較する事により、ブロック図と自動生成ソースコードの処理手順の一致度合いを測定し、コンピュータ外部に出力する。
【実施例１】
【００１８】
以下、図面を参照して本発明による一実施の形態を説明する。  
図１は、本発明によるソフトウェア設計支援システムの出力画面の一例を示す図である。ブロック図を入力とし、そこから変換されるソースコードの生成結果を表示するだけでなく、ブロック図中のブロック要素間の結びつきと、ソースコード中の変数の依存関係をリンクのノードからなるグラフ構造（データフロー）と解釈し、グラフの一致度を指標として評価し、図１のような画面に表示する。【００１９】
図２は、それぞれのブロック図とそこから変換されるソースコードの一致性の評価結果を、蓄積したブロック図事例ごとに表示する例である。一つ一つのブロック図事例に対して、評価を行った際のコード生成ツールを特定するツール名称などの情報と、その一致度指標を一覧表示するとともに、コード生成ツールの種別ごとに、蓄積された事例全体における一致度の平均値や最小値などの統計情報を表示し、コード生成ツールが蓄積されたブロック図事例に対して妥当であるかどうかの評価をユーザに対して提示する画面を表示する。このように、ブロック図事例ごとの一致度指標だけでなく、コード生成ツールの種別ごとに統計情報を表示することで、より確度の高いソースコード生成ツールの妥当性に関する情報を得ることができる。さらに、グラフの一致度だけでなく、生成されたソースコードを実行する際に必要なメモリ容量やステップ数などのプログラム実行効率を表示してもよい。【００２０】
図３は、ソフトウェア設計支援システム１の全体像を示す図である。ソフトウェア設計支援システムは、ブロック図管理部１１と、ソースコード管理部１２と、データフロー管理部１３と、一致性解析部１４と、画像表示部１５とを含むプログラムと、このプログラムがコンピュータで処理されたときに、入出力されるデータを格納するための構成管理ＤＢ１６とを備える。この構成管理ＤＢは、例えばコンピュータ２内に設けられたＲＡＭやハードディスクなどの記憶媒体である。ブロック図管理部１１は構成管理ＤＢ１６に格納されたブロック図データ１６１を入力とし、ブロック図の作成事例の管理を行うブロック図事例データ１６２を出力する。ソースコード管理部１２は、ブロック図データ１６１と、ソースコード生成設定部１２２よりユーザ５が操作部３を用いて操作選択した情報を入力とし、プログラミング言語で記述されたソースコードデータ１６４を作成し、ソースコードを生成したときの条件であるソースコード生成条件と関連付けたソースコード事例データ１６５を出力する。データフロー管理部１３は、ブロック図データ１６１を入力とし、ブロック図に含まれる信号線の情報であるブロック図事例信号線データ１６３と、ブロック図に含まれる信号線の依存関係を示すデータフロー事例データ１６８を出力する。またデータフロー管理部１３は、ソースコードデータ１６４を入力とし、ソースコード中で使用される変数の情報であるソースコード事例変数データ１６６と、ソースコード中で使用される変数の依存関係を示すデータフロー事例データ１６８を出力する。一致性解析部１４は、ソースコード事例データ１６５とデータフロー事例データ１６８を入力とし、データフロー間の一致性の度合いを表す指標である一致度データ１６９を出力する。画像表示部１５は、ブロック図事例信号線データ１６３と、ソースコード事例変数データ１６６と、データフロー事例データ１６８と、一致度データ１６９を入力とし、入力情報を表示部４に画像表示する。なお、ソフトウェア設計支援システム１は、ユーザ５が端末として使用するコンピュータ２とネットワーク等で接続された別のコンピュータに実装されても良いし、コンピュータ２内に実装されても良い。【００２１】
図４はブロック図管理部１１の詳細な構成を示す図である。ブロック図管理部１１は、ブロック図データ１６１に新たに格納されたブロック図をブロック図事例データ１６２に登録するブロック図登録部１１１を備え、ブロック図データ１６１に格納されたブロック図を入力とし、入力されたブロック図データを事例ごとに対応付けて複数保存するデータベースであるブロック図事例データ１６２にブロック図データ１６１を登録する。事例ごとの対応付けは、ブロック図のファイル名等から判断できる。なお、ブロック図管理部１１への入力は、必ず構成管理ＤＢ１６に格納されたデータに限られず、ネットワークなどから入力されるブロック図データなどでも良い。【００２２】
図５はブロック図データ１６１の詳細を示す図である。ブロック図ファイル１６１１は、複数のブロックと、ブロック間の信号線により制御対象機器を制御するための処理手順を表している。ブロックには入力もしくは出力の端子があり、あるブロックの出力端子は、出力端子を持つブロックとは異なるブロックの入力端子に、信号線によって必ず接続される。また主力端子から出る信号線は、分岐して複数の入力端子に接続される事があるが、複数の出力端子から出る信号線が合流し、一つの入力端子に接続されることはない。【００２３】
なお、エレベータのような機器を制御対象とするリレーシーケンス型ソフトウェアの場合は、各信号線のデータは０か１の１ビットの情報が多い。一方、自動車を制御対象とするソフトウェアの場合は、各信号線のデータは物理量や制御量であることが多い。例えば、エンジンを制御するソフトウェアの場合は、入力値としてエンジンへの吸入空気量を検出するエアフローセンサや、アクセルの踏み込み量を検出するアクセルペダルセンサなどのデータを入力値とし、エンジンへの燃料噴射量出力値とする。この場合、燃料噴射量を演算するための処理手順がブロック図に表されることとなる。【００２４】
このように、ブロック図データ１６１には、制御対象機器ごとの物理的性質が反映される。【００２５】
図６は、ブロック図登録部１１１の詳細な実行フローを示す図である。ステップＳ１１１０から処理が始まる。ステップＳ１１１１ではブロック図データ１６１の入力を行う。ステップＳ１１１２では、入力されたブロック図データ１６１をブロック図事例データ１６２にブロック図の名称と対応付けて登録する。この対応付けは、例えばブロック図データ１６１に格納されたブロック図のファイル名等からブロック図の名称を取得し、実現できる。ステップＳ１１１３で処理を終了する。【００２６】
図７はブロック図事例データ１６２の詳細を示す図である。ブロック図ファイル１６２１とブロック図ファイル１６２２は共にブロック図事例データ１６２に登録されている異なるブロック図ファイルをそれぞれ示している。【００２７】
図８はソースコード管理部１２の詳細な構成を示す図である。ソースコード管理部１２は、ブロック図データ１６１に格納されたブロック図と、操作部３を通してユーザ５よりソースコード生成設定部１２２で選択されるソースコード生成条件を入力とし、ブロック図に表されている処理をプログラミング言語によるソースコードで実現するソースコードデータ１６４と、ソースコードを生成した時の条件であるソースコード生成条件データ１２４、を出力するソースコード生成部１２１と、ソースコードデータ１６４とソースコード生成条件データ１２４を対応付けてデータベースであるソースコード事例データ１６５に登録する、ソースコード登録部１２３を備える。【００２８】
図９はソースコード管理部１２の詳細な実行フローを示す図である。ステップＳ１２１０から処理が始まる。ステップＳ１２１１ではブロック図データ１６１の入力を行う。ステップＳ１２１２では、操作部３を通してユーザ５よりソースコード生成設定部１２２で選択されるソースコード生成条件の入力を行う。ステップＳ１２１３では、入力された生成条件に従い、ブロック図の処理をプログラミング言語に置き換えたソースコードを生成する。ステップＳ１２１４では、生成されたソースコードとステップＳ１２１３で生成する時の条件の対応付けを行う。ステップＳ１２１５では、ソースコードと対応付けられた生成条件を、ソースコードのデータベースであるソースコード事例データ１６５に登録する。ステップＳ１２１６で処理を終了する。【００２９】
図１０は、操作部３と通してユーザ５より選択されるソースコード生成設定部１２２の選択画面の一例を示す図である。ユーザ５は操作部３を通して、ブロック図からソースコードを生成する際に使用するソースコード生成ソフトウェアや、ソースコードを実行するマイコンなどのハードウェアの条件や、ソースコードの冗長な部分を省略し処理の簡略化を行う最適化の設定などの選択を行う。【００３０】
図１１はソースコードデータ１６４の詳細を示す図である。ソースコードファイル１６４１は、ブロック図データ１６１１に対応する関数block_ａの処理手順により構成されている。ソースコードファイル１６４１のファイル名は、例えばソースコードを生成した時刻の情報を付加するなどし、重複が無い名称が付けられる。【００３１】
図１２はソースコード事例データ１６５の詳細を示す図である。ソースコードファイル１６５１とソースコード生成条件１６５２は対応付けられてソースコード事例データ１６５に登録されていることを示している。ソースコード生成条件１６５２には、ソースコード生成設定部１２２で選択した条件の他、ソースコードの元となったブロック図データ１６１を特定する情報が含まれており、ソースコードとブロック図の対応付けを行うことができる。【００３２】
図１３はデータフロー管理部１３の詳細な構成を示す図である。データフロー管理部１３は、ブロック図を入力とし、入力されたブロック図から抽出された信号線の情報であるブロック図信号線データ１３６と、信号線の依存関係をグラフ構造で表したデータフローデータ１６７を出力する、ブロック図解析部１３１を備える。またデータフロー管理部１３は、ソースコードを入力とし、入力されたソースコードから抽出された変数の情報であるソースコード変数データ１３７と、変数の依存関係をグラフ構造で表したデータフローデータ１６７を出力する、ソースコード解析部１３２を備える。なお、ブロック図解析部１３１の出力と、ソースコード解析部の出力とは、必ずしも同じ場所に格納されなくてもよい。さらにデータフロー管理部１３は、ブロック図信号線データ１３６をブロック図事例信号線データ１６３に登録する、信号線データ登録部１３３と、ソースコード変数データ１３７をソースコード事例変数データ１６６に登録する、変数データ登録部１３４と、データフローデータ１６７をデータフロー事例データ１６８に登録する、データフロー登録部１３５を備える。【００３３】
図１４はブロック図解析部１３１の詳細な実行フローを示す図である。ステップＳ１３１０から処理が始まる。ステップＳ１３１１では、ブロック図データ１６１１の入力を行う。ステップＳ１３１２では、入力されたブロック図を解析し、ブロック図中の信号線を抽出する。ステップＳ１３１３では、抽出された信号線の情報をブロック図信号線データ１３６として出力する。ステップＳ１３１４では、ステップＳ１３１２で抽出された信号線の依存関係を解析し、データフローを作成する。ステップＳ１３１５では、ステップＳ１３１４で作成されたデータフローを、データフローデータ１６７として出力する。ステップＳ１３１６で処理を終了する。【００３４】
図１５は、ブロック図信号線データ１３６の詳細を示す図である。ブロック図信号線データファイル１３６１は、ブロック図ファイル１６１１に含まれている信号線に対して重複しないようにつけられた識別名称で構成されている。【００３５】
図１６は、データフローデータ１６７の詳細を示す図である。データフロー１６７１は、ブロック図ファイル１６１１に含まれている信号線を、ブロック図信号線データファイル１３６１に格納した識別名称で表し、依存関係をグラフ形式にて表した図である。マトリクス１６７２は、信号線の依存関係を表形式にて表した図である。本実施の形態においては、データフロー１６７１は、信号線をノード、ブロックの入力端子と出力端子の対応関係を矢印で表されたリンクとして信号線依存関係を表現する。例えば、ここでは信号線（１）と信号線（３）を入力とし、信号線（４）をブロックにより演算することを信号線（１）、（３）、（４）を表すノードとこれらノード間を結ぶリンクとで表現されている。【００３６】
図１７はソースコード解析部１３２の詳細な実行フローを示す図である。ステップＳ１３２０から処理が始まる。ステップＳ１３２１では、ソースコード１６５１の入力を行う。ステップＳ１３２２では、入力されたソースコードを解析し、ソースコード中の変数を抽出する。ステップＳ１３２３では、抽出された変数の情報をソースコード変数データ１３７として出力する。ステップＳ１３２４では、ステップＳ１３２２で抽出された変数の依存関係を解析し、データフローを作成する。ステップＳ１３２５では、ステップＳ１３２４で作成されたデータフローを、データフローデータ１６７として出力する。ステップＳ１３２６で処理を終了する。【００３７】
図１８は、ソースコード変数データ１３７の詳細を示す図である。ソースコード変数データファイル１３７１は、ソースコード中において変数として扱う箇所に対して重複しないようにつけられた識別名称で構成されている。【００３８】
図１９は、データフロー登録部１３５の詳細な実行フローを示す図である。ステップＳ１３５０から処理が始まる。ステップＳ１３５１では、データフロー１６７１が入力される。ステップＳ１３５２では、入力されたデータフローをデータベースである、データフロー事例データ１６８に登録する。ステップＳ１３５３で処理を終了する。【００３９】
図２０は、データフロー事例データ１６８の詳細を示す図である。データフロー１６８１およびマトリクス１６８２は、ブロック図ファイル１６１１に含まれる信号線の依存関係をそれぞれ表した図である。データフロー１６８３およびマトリクス１６８４は、ソースコードファイル１６５１に含まれる変数の依存関係をそれぞれ表した図である。このようにブロック図の信号線の依存関係と、ソースコードの変数の依存関係を同一の形式で表現することで、両者の比較が容易となる。【００４０】
図２１は、一致性解析部１４の詳細な構成を示す図である。一致性解析部１４は、ソースコード事例データ１６５を入力とし、ソースコード１６５１に対応するデータフローをデータフロー事例データ１６８から選択する、データフロー選択部１４１と、データフロー間の一致度を測定する一致度測定部１４２を備え、測定された一致度を一致度データ１６９に出力する。【００４１】
図２２は、データフロー選択部１４１の詳細な実行フローを示す図である。ステップＳ１４１０から処理が始まる。ステップＳ１４１１では、ソースコード事例データ１６５からソースコード１６５１とソースコード生成条件１６５２を入力する。ステップＳ１４１２では、入力されたソースコード生成条件１６５２からソースコードの元となるブロック図を特定する。ステップＳ１４１３では、ソースコード１６５１と、ステップＳ１４１２で特定したブロック図に対応するデータフローを、データフロー事例データ１６８から入力する。ステップＳ１４１４で処理を終了する。【００４２】
図２３は、一致度測定部１４２の詳細な実行フローを示す図である。ステップＳ１４２０から処理が始まる。ステップＳ１４２１では一致度を測定する対象となるデータフローを入力する。ステップＳ１４２２では、入力された比較対象のデータフローの一致度を測定する。ここで、データフローの一致度とは、相関係数、ハミング距離、中心化共鳴性分析などが考えられる。ステップＳ１４２３では、測定したデータフローの一致度を一致度データ１６９に登録する。ステップＳ１４２４で処理を終了する。【００４３】
図２４は、一致度データ１６９の詳細を示す図である。データフロー１６９１およびマトリクス１６９２と、データフロー１６９４およびマトリクス１６９５は、ノードに付与されている識別名称は異なる。本実施の形態においては、データフロー１６９１とデータフロー１６９４の一致度が最も高くなるよう、両者のデータフローに含まれるノード同士の対応付けを行い、データフローの一致度としている。【００４４】
図２５は画像表示部１５の詳細な構成を示す図である。画像表示部１５は、ブロック図事例信号線データ１６３とソースコード事例変数データ１６６とデータフロー事例データ１６８と一致度データ１６９を入力とし、表示部４に表示する解析結果である画面を出力する解析結果出力部１５１を備える。また画像表示部１５は、一致度データ１６９を入力としソースコード生成ツール評価データ１５４を出力するコード生成ツール評価部１５２と、ソースコード生成ツール評価データ１５４と一致度データ１６９を合わせて表示部４に出力する、評価結果出力部１５３を備える。ここで表示部４は、コンピュータ２に備え付けられたディスプレイであっても良いし、ネットワークと外部コンピュータを介した出力やプリント出力など、ユーザが視認できる出力手段であれば何であっても良い。【００４５】
図２６は、解析結果出力部１５１の詳細な実行フローを示す図である。ステップＳ１５１０から処理が始まる。ステップＳ１５１１では、ブロック図信号線事例データからブロック図の信号線の識別名称を入力する。ステップＳ１５１２では、ソースコード事例変数データ１６６から、ソースコード中の変数の識別名称を入力する。ステップＳ１５１３では、入力されたブロック図とソースコードに対応するデータフローを、データフロー事例データ１６８から入力する。ステップＳ１５１４では、入力されたブロック図とソースコードに対応するデータフロー間の一致度を、一致度データ１６９から入力する。ステップＳ１５１５では、ステップＳ１５１１、ステップＳ１５１２、ステップＳ１５１３、ステップＳ１５１４で入力された、ブロック図とソースコードとデータフローと一致度を表示部４に出力する。この出力の表示例として図１のブロック図・ソースコード比較結果４１がある。ステップＳ１５１６で処理を終了する。【００４６】
図２７は、コード生成ツール評価部１５２の詳細な実行フローを示す図である。ステップＳ１５２０から処理が始まる。ステップＳ１５２１では、一致度データ１６９に含まれている一致度の測定結果を入力する。ステップＳ１５２２では、ステップＳ１５２１で入力された一致度をソースコード生成条件に含まれるコード生成条件で分類し、分類ごとに一致度の統計情報を計算する。ここで統計情報とは、一致度の平均、最小値、標準偏差などがある。ステップＳ１５２３では、ステップＳ１５２２で求めた、コード生成条件に基づく分類ごとの一致度の統計情報に基づき、コード生成条件の評価を行う。ここで評価条件として、最小値や標準偏差がある範囲であることなどがある。ステップＳ１５２４では、ステップＳ１５２２およびステップＳ１５２３で求めた統計情報や評価結果を、ソースコード生成ツール評価データ１５４として出力する。ステップＳ１５２５で処理を終了する。【００４７】
図２８は、評価結果出力部１５３の詳細な実行フローを示す図である。ステップＳ１５３０から処理が始まる。ステップＳ１５３１では、コード生成ツール評価部１５２で計算したソースコード生成ツール評価データ１５４を入力する。ステップＳ１５３２では、一致度データ１６９に含まれている一致度の測定結果を入力する。ステップＳ１５３３では、ステップＳ１５３１とステップＳ１５３２で入力された、ソースコード生成条件の分類ごとの評価結果とデータフローごとの一致度の測定結果を、表示部４に出力する。この出力の表示例として図２のソースコード生成ツール評価結果４２がある。ステップＳ１５３４で処理を終了する。【００４８】
このように、本実施の形態によれば、ブロック図とソースコードのようなアルゴリズムの表記方法が異なる形態同士でも、データフローの一致度を測定することで、アルゴリズムが同一であることの指標を計算できる。データフローの一致度が著しく低い事例が存在する場合には、ブロック図からソースコードを生成する過程に不具合があったことが判明するため、ソースコード生成に使用するソフトウェアを変更した場合の影響を速やかに把握することができる。
【実施例２】
【００４９】
以下、本発明の他の実施の形態について実施例１との差異点を中心に説明する。【００５０】
本実施の形態では、ソースコード生成部１２１は、ブロック図データ１６１に含まれるブロックを関数とし、信号線で接続されているブロックの組において、入力端子側のブロックに相当する関数から、出力端子側のブロックに相当する関数を呼び出す、ソースコードデータ１６４を生成する。ブロック図解析部１３１は、構成管理ＤＢ１６に登録されるデータフローデータ１６７、データフロー事例データ１６８として、ブロック図データ１６１に含まれるブロックをノード、信号線をリンクとするデータフローを作成する。またソースコード解析部１３２は、ソースコードデータ１６４から関数をノード、関数間の呼び出し関係をリンクとしたデータフローを作成する。この場合、あるノードで表される関数が他のノードで表される関数を呼び出しているということが表現される。【００５１】
本実施の形態によれば、詳細な処理内容が規定されているブロックと信号線により記述されたブロック図そのものをブロックとして扱い、このようなブロックとして扱われるブロック図を複数用いて大規模なブロック図を作成するような、ブロック図が階層的な構造を持っている場合にも、ブロック図とソースコードの一致の度合いを容易に把握することが可能になる。
【実施例３】
【００５２】
以下、本発明の他の実施の形態についてこれまで説明した実施例との差異点を中心に説明する。【００５３】
本実施の形態では、建設機械、自動車、エレベータ等の制御対象を制御する組込み制御装置に実装されているソースコードを参考にしてブロック図を作成する場合に適用される。ソースコードをもとに作成されたブロック図はブロック図データ１６１として入力され、もとになったソースコードをソースコードデータ１６４としてソースコード登録部１２３へ入力する。このようにして入力されたブロック図とソースコードを解析し、データフローデータ１６７を作成する。ブロック図とソースコードに対応するデータフローの一致性を比較し、解析結果出力部１５１が表示部４に出力する。【００５４】
本実施の形態によれば、ソースコードにもとづいたブロック図の作成を容易とし、ソースコードと同様の処理を行うブロック図を誤りなく作成できる。これにより設計情報が保存されていない既存のソースコードに対しても、設計情報としてブロック図を用意することで、ソースコードの保守を容易にすることができる。
【実施例４】
【００５５】
以下、本発明の他の実施の形態についてこれまで説明した実施例との差異点を中心に説明する。【００５６】
本実施の形態によれば、ブロック図データ１６１として、建設機械、自動車、エレベータ等の制御対象機器を制御する組込み制御装置の制御アルゴリズムの記述でよく用いられるブロック線図以外の、ＵＭＬで規定されているクラス図などのソフトウェアの構造を表す図に適用される。ブロック図データ１６１としてクラス図を入力し、ブロック図解析部１３１は、構成管理ＤＢ１６に登録されるデータフローデータ１６７、データフロー事例データ１６８として、クラスをノード、クラス同士の関連をリンクとするデータフローを作成する。ソースコード生成部１２１は、ブロック図データ１６１として入力されたクラス図から、クラスの概念があるプログラミング言語によるソースコードデータ１６４を生成する。ソースコード解析部１３２は、ソースコードデータ１６４からクラスとして表記されている箇所を抽出し、クラスをノード、クラス同士の依存関係をリンクとするデータフローを作成する。【００５７】
本実施の形態によれば、ソフトウェアの構造を表すＵＭＬのクラス図とソースコードの構造をデータフローの一致度を比較することで、構造が同一である指標を計算できる。これにより設計どおりにソフトウェアが作成されているかどうかを容易に把握でき、設計に変更が生じた場合にソフトウェアが変更に追従しているかの確認を容易に行うことができる。【００５８】
以上、本発明の実施の形態について説明してきたが、これら実施の形態で示された発明は、それぞれを単独の発明と捉えるべきでなく適宜組み合わせて実施することができ、そのような組み合わせは当業者にとって試行錯誤を要することがないことは自明である。
【符号の説明】
【００５９】
１  ソフトウェア設計支援システム
２  コンピュータ
３  操作部
４  表示部
５  ユーザ
１１  ブロック図管理部
１２  ソースコード管理部
１３  データフロー管理部
１４  一致性解析部
１５  画像表示部
１６  構成管理ＤＢ
１１１  ブロック図登録部
１２１  ソースコード生成部
１２２  ソースコード生成設定部
１２３  ソースコード登録部
１３１  ブロック図解析部
１３２  ソースコード解析部
１３３  信号線データ登録部
１３４  変数データ登録部
１３５  データフロー登録部
１４１  データフロー選択部
１４２  一致度測定部
１５１  解析結果出力部
１５２  コード生成ツール評価部
１５３  評価結果出力部
１６１  ブロック図データ
１６２  ブロック図事例データ
１６３  ブロック図事例信号線データ
１６４  ソースコードデータ
１６５  ソースコード事例データ
１６６  ソースコード事例変数データ
１６７  データフローデータ
１６８  データフロー事例データ
１６９  一致度データ
【図１】
2013190644.tif 000003
【図２】
2013190644.tif 000004
【図３】
2013190644.tif 000005
【図４】
2013190644.tif 000006
【図５】
2013190644.tif 000007
【図６】
2013190644.tif 000008
【図７】
2013190644.tif 000009
【図８】
2013190644.tif 000010
【図９】
2013190644.tif 000011
【図１０】
2013190644.tif 000012
【図１１】
2013190644.tif 000013
【図１２】
2013190644.tif 000014
【図１３】
2013190644.tif 000015
【図１４】
2013190644.tif 000016
【図１５】
2013190644.tif 000017
【図１６】
2013190644.tif 000018
【図１７】
2013190644.tif 000019
【図１８】
2013190644.tif 000020
【図１９】
2013190644.tif 000021
【図２０】
2013190644.tif 000022
【図２１】
2013190644.tif 000023
【図２２】
2013190644.tif 000024
【図２３】
2013190644.tif 000025
【図２４】
2013190644.tif 000026
【図２５】
2013190644.tif 000027
【図２６】
2013190644.tif 000028
【図２７】
2013190644.tif 000029
【図２８】
2013190644.tif 000030
【国際調査報告】
2013190644.tif 000031
2013190644.tif 000032