(57)【要約】      （修正有）【課題】コンパイラとリンカーとデバッガを必要とすることなく、設計書のすべての関数で使用している変数の一覧を表示する。【解決手段】変数一覧出力装置１の関数情報取得機能部３は、ソフトウェア開発支援システムを通じて作成された設計図に設定されている関数の情報をブロックＤＢ１１から取得する。設計図内部部品取得機能部４は、各設計図に配置されているすべてのプログラム部品をブロックＤＢ１１から取得する。部品内部変数取得機能部５は、設計図内部部品取得機能部４の取得したプログラム部品で使用するすべての変数をブロックＤＢ１１から取得する。変数情報取得機能部６は、部品内部変数取得機能部５の取得した変数の情報をブロックＤＢ１１から取得する。関数・使用変数一覧出力機能部９は、すべての前記関数の情報と、すべての変数の情報とを関数・使用変数一覧として出力する。【選択図】図１
2017041156.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア開発支援システムを通じて作成された設計図から関数毎の変数一覧を出力する装置であって、
前記各設計図に設定されている関数の情報をデータベースから取得する関数情報取得機能部と、
前記各設計図に配置されているすべてのプログラム部品を前記データベースから取得する設計図内部部品取得機能部と、
前記設計図内部部品取得機能部の取得したプログラム部品で使用するすべての変数を前記データベースから取得する部品内部変数取得機能部と、
前記部品内部変数取得機能部の取得した変数の情報を前記データベースから取得する変数情報取得機能部と、
前記関数情報取得機能部の取得したすべての関数の情報と、前記変数情報取得機能部の取得したすべての変数の情報とを関数・使用変数一覧として出力する関数・使用変数一覧出力機能部と、
を備えることを特徴とするソフトウェア開発支援システムの変数一覧出力装置。
【請求項２】
前記関数・使用変数一覧出力機能部は、すべての関数について各関数で使用されている変数の情報を前記関数・使用変数一覧として出力する
ことを特徴とする請求項１記載のソフトウェア開発支援システムの変数一覧出力装置。
【請求項３】
前記関数・使用変数一覧のおけるすべての変数について、
各変数が使用されている関数の情報を変数・使用関数一覧として出力する変数・使用関数一覧出力機能部をさらに備える
ことを特徴とする請求項１または２のいずれか１項に記載のソフトウェア開発支援システムの変数一覧出力装置。
【請求項４】
コンピュータにより、ソフトウェア開発支援システムを通じて作成された設計図から関数毎の変数一覧を出力する方法であって、
前記各設計図に設定されている関数の情報をデータベースから取得する関数情報取得ステップと、
前記各設計図に配置されているすべてのプログラム部品を前記データベースから取得する設計図内部部品取得ステップと、
前記設計図内部部品取得ステップで取得したプログラム部品で使用するすべての変数を前記データベースから取得する部品内部変数取得ステップと、
前記部品内部変数取得ステップで取得した変数の情報を前記データベースから取得する変数情報取得ステップと、
前記関数情報取得ステップで取得したすべての関数の情報と、前記変数情報取得ステップで取得したすべての変数の情報とを関数・使用変数一覧として出力する関数・使用変数一覧出力ステップと、
を有することを特徴とするソフトウェア開発支援システムの変数一覧出力方法。
【請求項５】
前記関数・使用変数一覧出力ステップは、すべての関数について各関数で使用されている変数の情報を前記関数・使用変数一覧として出力する
ことを特徴とする請求項４記載のソフトウェア開発支援システムの変数一覧出力方法。
【請求項６】
前記関数・使用変数一覧のおけるすべての変数について、
各変数が使用されている関数の情報を変数・使用関数一覧として出力する変数・使用関数一覧出力ステップをさらに有する
ことを特徴とする請求項４または５のいずれか１項に記載のソフトウェア開発支援システムの変数一覧出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援システムにおいて、設計図から関数毎の変数一覧を出力する技術に関する。
【背景技術】
【０００２】
周知のようにソフトウェア開発の実装フェーズでは、開発者がソースファイルを手作業で作成することが多い。このとき機能の追加や変更により元のソースファイルを編集して行くと、ソースファイル中に存在しない冗長な変数が残ってしまうことがある。
【０００３】
この点につき特許文献１では、ソースファイル中の冗長な変数の一覧表を得るためにコンパイラの処理途中で出力される内部情報と、リンカーが生成するデバッグ情報付きの実行可能ファイルと、デバッガによる最適化を行っている。
【０００４】
また、組み込みソフトウェアの開発の設計フェーズでは、ソースファイルを作成する前に設計図を作成し、その設計図を説明する設計書を作成する。この設計書には関数ごとに使用する変数一覧（特に入力変数，出力変数，内部変数）を記載することが多い。
【０００５】
このとき特許文献１，２に示す組み込みソフトウェアの開発支援システムでは、一つの関数を表現する設計図（例えばブロック図）を作成し、開発者が設計中やシミュレーション中に設計内容を確認するために該関数で使用する変数を表示することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２５１９２７
【特許文献２】特開２００９−１９３１８１
【特許文献３】特開２００９−１９３１８２
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１で関数ごとの変数一覧（冗長な変数を含む。）を得るには、ソースファイルの他にさらにコンパイラとリンカーとデバッガが必要となってしまう。
【０００８】
また、特許文献２，３は、個々の関数の使用変数は一覧表示できるものの、設計書作成に必要なすべての関数の使用変数は一覧表示できず、開発者が体系的に理解できないおそれがある。
【０００９】
特に開発者は、設計書に関数毎に使用する変数を手入力しなければならず、手間と時間がかかるだけでなく、誤入力によるヒューマンエラーが発生するおそれもある。
【００１０】
本発明は、このような従来の問題を解決するためになされ、コンパイラとリンカーとデバッガとがなくても、すべての設計図の関数で使用している変数の一覧を表示することを解決課題としている。
【課題を解決するための手段】
【００１１】
本発明の一態様は、ソフトウェア開発支援システムを通じて作成された設計図から関数毎の変数一覧を出力する装置であって、前記各設計図に設定されている関数の情報をデータベースから取得する関数情報取得機能部と、前記各設計図に配置されているすべてのプログラム部品を前記データベースから取得する設計図内部部品取得機能部と、前記設計図内部部品取得機能部の取得したプログラム部品で使用するすべての変数を前記データベースから取得する部品内部変数取得機能部と、前記部品内部変数取得機能部の取得した変数の情報を前記データベースから取得する変数情報取得機能部と、前記関数情報取得機能部の取得したすべての関数の情報と、前記変数情報取得機能部の取得したすべての変数の情報とを関数・使用変数一覧として出力する関数・使用変数一覧出力機能部と、を備える。
【００１２】
本発明の他の態様は、コンピュータにより、ソフトウェア開発支援システムを通じて作成された設計図から関数毎の変数一覧を出力する方法であって、前記各設計図に設定されている関数の情報をデータベースから取得する関数情報取得ステップと、前記各設計図に配置されているすべてのプログラム部品を前記データベースから取得する設計図内部部品取得ステップと、前記設計図内部部品取得ステップで取得したプログラム部品で使用するすべての変数を前記データベースから取得する部品内部変数取得ステップと、前記部品内部変数取得ステップで取得した変数の情報を前記データベースから取得する変数情報取得ステップと、前記関数情報取得ステップで取得したすべての関数の情報と、前記変数情報取得ステップで取得したすべての変数の情報とを関数・使用変数一覧として出力する関数・使用変数一覧出力ステップと、を有する。
【００１３】
前記関数・使用変数一覧には、すべての関数について各関数で使用されている変数の情報が記述される。ここで記述された各変数を使用している関数の情報を変数・使用関数一覧として出力することもできる。
【発明の効果】
【００１４】
本発明によれば、コンパイラとリンカーとデバッガとが無くても、すべての設計図の関数で使用している変数の一覧を表示することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るソフトウェア開発支援システムの変数一覧出力装置の機能構成図。
【図２】実施例１の設計図と関数・使用変数一覧とを示す説明図。
【図３】同  ＣＳＶファイル出力例（関数・使用変数一覧）を示す図。
【図４】実施例２の変数・使用関数一覧を示す説明図。
【図５】同  ＣＳＶファイル出力例（変数・使用関数一覧）を示す図。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態に係るソフトウェア開発支援システムの変数一覧出力装置を説明する。この変数一覧出力装置は、産業機器や家電製品などに内蔵されるシステムで動作する組み込みソフトウェアの開発支援システム（以下、ソフトウェア開発支援システムと略する。）に対して、すべての設計図から関数毎の変数一覧を出力する機能を追加する。
【００１７】
≪機能構成例≫
図１に基づき前記変数一覧出力装置の機能構成例を説明する。ここでは前記変数一覧出力装置１は、コンピュータにより構成され、通常のコンピュータのハードウェアリソース（例えばＣＰＵやＲＡＭ，ＲＯＭ，ＨＤＤ，ＳＳＤなど記憶装置）を備える。
【００１８】
このハードウェアリソースとソフトウェアリソース（ＯＳ，アプリケーション等）の協働の結果、前記変数一覧出力装置１は、設計図一覧取得機能部２，関数情報取得機能部３，設計図内部部品取得機能部４，部品内部変数取得機能部５，変数情報取得機能部６，関数・使用変数一覧出力機能部７，変数一覧取得機能部８，変数・使用関数一覧出力機能部９を実装する。この各機能部２〜９は、ソフトウェア開発支援システムと同じコンピュータに実装してもよく、あるいは異なるコンピュータに実装してもよい。
【００１９】
前記各機能部２〜９は、ブロックＤＢ１１の格納データに基づきすべての設計図から関数毎の変数一覧を出力する。このブロックＤＢ１１には、ソフトウェア開発支援システムが備える既存のデータベースを利用でき、組み込みソフトウェアの設計から生成までの過程で生じた各種の情報が格納されている。
【００２０】
例えば組み込みソフトウェアの設計図（例えばブロック図や状態遷移図など），設計図に設定されている関数の情報（例えば関数名など），設計図に配置されているすべてのプログラム部品（例えばコンポーネントなど），プログラム部品で使用するすべての変数の情報（例えば変数の名前や説明）などの各種情報が格納されている。なお、ブロックＤＢ１１としては、例えば特許文献２のブロック情報ＤＢなどを利用することができる。
【００２１】
そして、設計図一覧取得機能部２は、ブロックＤＢ１１に格納されているすべての設計図を取得する。このとき関数情報取得機能部３は、設計図一覧取得機能部２の取得した設計図を順に指定し、指定した設計図に設定されている関数の情報をブロックＤＢ１１から取得する。また、設計図内部部品取得機能部４は、前記指定した設計図に配置されているすべてのプログラム部品をブロックＤＢ１１から取得する。
【００２２】
部品内部変数取得機能部５は、設計図内部部品取得機能部４の取得したプログラム部品を順に指定し、指定したプログラム部品で使用されているすべての変数をブロックＤＢ１１から取得する。また、変数情報取得機能部６は、部品内部変数取得機能部５の取得した変数を順に指定し、指定した変数の情報をブロックＤＢ１１から取得する。
【００２３】
関数・使用変数一覧出力機能部７の処理は、設計図一覧取得機能部２で取得したすべての設計図に対する前記各機能部３〜６の処理の完了後に実行される。ここでは前記各機能部３〜６で取得したすべて関数の情報および変数の情報を記述した関数・使用変数一覧を作成する。
【００２４】
この関数・使用変数一覧には、関数の情報毎に該関数で使用される変数の情報が記述される。ここで作成された関数・使用変数一覧は、ディスプレイなどの外部出力装置１０に出力されて表示される。なお、関数・使用変数一覧は、例えばＣＳＶファイルなどのファイルＦに出力することも可能である。
【００２５】
変数一覧取得機能部８は、関数・使用変数一覧出力機能部７で出力した関数・使用変数一覧から変数の情報を取得する。また、変数・使用関数一覧出力機能部９は、変数一覧取得機能部８の取得した変数が使用されている関数の情報を関数・使用変数一覧から取得し、変数・使用関数一覧を作成する。
【００２６】
この変数・使用関数一覧表示には、変数の情報毎に該変数が使用されている関数の情報が記述される。作成された変数・使用関数一覧は、ディスプレイなどの外部出力装置１０に出力されて表示される。なお、変数・使用関数一覧表示は、関数・使用変数一覧と同様にＣＳＶファイルなどのファイルＦに出力することが可能である。
【００２７】
≪動作例≫
以下、前記変数一覧出力装置１の動作例を、実施例１，２に基づき説明する。この実施例１は、すべての関数について各関数が使用している変数の一覧を出力する事案の動作例を示している。一方、実施例２は、すべての変数について各変数が使用されている関数の一覧を出力する事案の動作例を示している。
【００２８】
（１）実施例１
まず、図２および図３に基づき実施例１の動作例を説明する。ここではソフトウェア開発支援システム（例えば特許文献２に示すソフトウェア開発支援システム）で図２中の設計図Ｚ、即ちブロック図Ａ，Ｂを作成したものとする。このブロック図Ａ，Ｂは、ブロックＤＢ１１に格納されているものとする。
【００２９】
この実施例では、開発者が設計図Ｚ（ブロック図Ａ，Ｂ）を説明する設計書を作成する場合を考える。この場合、処理が開始されると次の処理ステップ（Ａ）〜（Ｆ）が実行される。なお、処理の開始は、ユーザ操作などにより実行する設定や、設計図ＺのブロックＤＢ１１への格納を契機に実行する設定など仕様に応じて適宜に定めることができるものとする。
【００３０】
（Ａ）設計図一覧取得機能部２により、ブロックＤＢ１１に格納されたブロック図Ａ，Ｂが取得される。このブロック図Ａは、入力ブロック「Ｉ１」と入力ブロック「Ｉ２」とを加算し、加算結果の和を出力ブロック「Ｏ１」に代入する関数「ｆｎＡ（関数名）」を示している。また、ブロック図Ｂは、入力ブロック「ＩＮ」をＫ倍し、その結果を出力ブロック「ＯＵＴ」に代入する関数「ｆｎＢ（関数名）」を示している。
【００３１】
（Ｂ）関数情報取得機能部３により、ブロック図Ａ，Ｂが順に指定され、ブロックＤＢ１１からブロック図Ａ，Ｂに設定されている関数の情報が取得される。ここでは関数の情報として、「関数名」を取得するものとする。
【００３２】
したがって、ブロック図Ａについては関数名「ｆｎＡ」が取得され、ブロック図Ｂについては関数名「ｆｎＢ」が取得される。なお、前記指定は、ユーザ操作によるマニュアル指定でもよく、事前に定められたルール（名前順、更新順など）に従った指定でもよく、仕様に応じて適宜に定めることができるものとする（以下も同様とする。）
（Ｃ）設計図内部部品取得機能部４により、ブロック図Ａが指定されるとブロックＤＢ１１が参照され、ブロックＤＢ１１に格納されている「入力部品Ｉ１」と、「入力部品Ｉ２」と、「加算部品」と、「出力部品Ｏ１」と、「各部品間を結ぶ結線部品」とが取得される。
【００３３】
また、ブロック図Ｂが指定されると、同様にブロックＤＢ１１に格納されている「入力部品ＩＮ」と、「ゲイン部品Ｋ」と、「出力部品ＯＵＴ」と、「各部品間を結ぶ結線部品」とが取得される。
【００３４】
（Ｄ）部品内部変数取得機能部５により、ステップ（Ｃ）の取得部品が順に指定される。ここでは「入力部品Ｉ１」が最初に指定され、ブロックＤＢ１１に格納されている変数「Ｉ１」が取得されるものとする。その後に「入力部品Ｉ１」以外の前記取得部品が指定され、それぞれの部品に設定されている変数がブロックＤＢ１１から取得される。
【００３５】
その結果、ブロック図Ａの使用変数として「Ｉ１」，「Ｉ２」，［Ｏ１］が取得される一方、ブロック図Ｂの使用変数として「ＩＮ」，「Ｋ」，「ＯＵＴ」が取得される。
【００３６】
（Ｅ）変数情報取得機能部６により、ステップ（Ｄ）の取得変数が順に指定される。ここでは変数「Ｉ１」が最初に指定されるものとする。また、ブロックＤＢ１１から変数の情報として、「変数名」と「説明」とを取得するものとする。
【００３７】
したがって、変数「Ｉ１」については、変数の情報として変数名「Ｉ１」と説明「被加算数」とが取得される。その後に変数「Ｉ１」以外の変数が指定され、それぞれブロックＤＢ１１から変数の情報が取得される。
【００３８】
（Ｆ）関数・使用変数一覧出力機能部７により、ステップ（Ｂ）で取得した関数の情報と、ステップ（Ｅ）で取得した変数の情報とが関数・使用変数一覧Ｌ１として、例えばディスプレイなどの外部出力装置１０に出力されて表示される。
【００３９】
この関数・使用変数一覧Ｌ１には、関数名「ｆｎＡ」，「ｆｎＢ」のそれぞれについて「使用変数名」と「説明」とが記述されている。すなわち、関数名「ｆｎＡ」については、使用変数名「Ｉ１」および説明「被加算数」と、使用変数名「Ｉ２」および説明「加算数」と、使用変数名「Ｏ１」および説明「和」とが記述されている。
【００４０】
また、関数名「ｆｎＢ」については、使用変数名「ＩＮ」および説明「入力」と、使用変数名「Ｋ」および説明「ゲイン」と、使用変数名「ＯＵＴ」および説明「出力」とが記述されている。この各記述内容がディスプレイなどに表示される。
【００４１】
したがって、前記変数一覧出力装置１によれば、コンパイラとリンカーとデバッグが無くとも、関数で使用している変数の一覧を出力することができる。これによりソフトウェア開発支援システムで設計図を描き、その設計図からソースファイルを自動生成することで冗長な変数をソースファイルに埋め込むことが不要となる。
【００４２】
また、すべてのブロック図の使用変数の情報が関数情報毎に一覧表示され、開発者は設計書作成に必要な使用変数を体系的に理解することができる。このとき関数・使用変数一覧Ｌ１は、図３に示すように、ＣＳＶファイルＦ１としてカンマ区切りのテキストファイルに出力することができる。
【００４３】
このＣＳＶファイルＦ１には、関数・使用変数一覧Ｌ１の「関数名」毎に「使用変数名」と「説明」とが記述されている。したがって、開発者は、設計書作成にあたってＣＳＶファイルＦ１の記述内容をコピー＆ペーストするだけで設計書へ入力することができる。これにより設計書作成の手間や時間が削減され、またヒューマンエラーを減少させることができる。
【００４４】
（２）実施例２
つぎに実施例２の動作例を説明する。ここではソフトウェアの開発システムで図２中の設計図Ｚが作成され、また実施例１のステップ（Ａ）〜（Ｆ）までが完了しているものとし、さらに処理が開始されると次のステップ（Ｇ）〜（Ｉ）が実行される。なお、処理の開始は、ユーザ操作などにより実行する設定や、関数・使用変数一覧Ｌ１の出力などを契機に実行する設定など仕様に応じて適宜に定めることができる。
【００４５】
（Ｇ）処理が開始されると変数一覧取得機能部８により、関数・使用変数一覧Ｌ１からすべての変数の情報が取得される。ここでは変数名「Ｉ１」，「Ｉ２」，「Ｏ１」，「ＩＮ」，「Ｋ」，「ＯＵＴ」が取得される。
【００４６】
（Ｈ）変数・使用関数一覧出力機能部９により、関数・使用変数一覧Ｌ１から関数の情報が取得される。ここでは変数名「Ｉ１」が最初に指定され、その変数を使用しているすべての関数の情報が取得され、また関数の情報として関数名を取得するものとする。したがって、変数名「Ｉ１」については関数名「ｆｎＡ」が取得され、その後に変数名「Ｉ１」以外の変数についても順に使用関数の関数名が取得される。
【００４７】
（Ｉ）変数・使用関数一覧出力機能部９により、ステップ（Ｇ）で取得した変数の情報（変数名および説明）と、ステップ（Ｈ）で取得した関数の情報（関数名）とが変数・使用関数一覧Ｌ２（図４参照）として、例えばディスプレイなどの外部出力装置１０に出力されて表示される。
【００４８】
この変数・使用関数一覧Ｌ２には、「変数名」と「説明」とのペア毎に「使用関数名」とが記述されている。例えば図４の変数・使用関数一覧Ｌ２では、変数名「Ｉ１」および説明「被加算数」には使用関数「ｆｎＡ」が記述され、変数名「Ｉ２」および説明「加算数」には使用関数名「ｆｎＡ」が記述され、変数名「Ｏ１」および説明「和」には使用関数名「ｆｎＡ」が記述され、変数名「ＩＮ」および説明「入力」には使用関数名「ｆｎＢ」が記述され、変数名「Ｋ」および説明「ゲイン」には使用関数名「ｆｎＢ」が記述され、変数名「ＯＵＴ」および説明「出力」には使用関数名「ｆｎＢ」が記述されている。
【００４９】
したがって、前記変数一覧出力装置１によれば、関数で使用している変数一覧（関数・使用変数一覧Ｌ１）を逆引きすることにより、ある変数を使用しているすべての関数を特定することができる。この点でも開発者は設計書作成に必要な使用変数を体系的に理解することができる。
【００５０】
また、変数・使用関数一覧Ｌ２も、図５に示すように、ＣＳＶファイルＦ２としてカンマ区切りのテキストファイルに出力することができる。このＣＳＶファイルＦ２には、変数・使用関数一覧Ｌ２の変数名，説明，使用関数名の順で記述されている。
【００５１】
したがって、開発者は、設計書作成にあたってＣＳＶファイルＦ２の記述内容をコピー＆ペーストするだけで設計書へ入力することができる。この点でも設計書作成の手間や時間が削減され、またヒューマンエラーを減少させることができる。
【００５２】
なお、本発明は、上記実施形態に限定されるものではなく、各請求項に記載された範囲内で変形して実施することができる。例えば装置の機能構成として、変数一覧取得機能部８および変数・使用関数一覧出力機能部９は、必須ではなく、実装されていなくてもよいものとする。
【符号の説明】
【００５３】
１…変数一覧出力装置
２…設計図一覧取得機能部
３…関数情報取得機能部
４…設計図内部部品取得機能部
５…部品内部変数取得機能部
６…変数情報取得機能部
７…関数・使用変数一覧出力機能部
８…変数一覧取得機能部
９…変数・使用関数一覧出力機能部
１０…外部出力装置
【図１】
2017041156.tif 000003
【図２】
2017041156.tif 000004
【図３】
2017041156.tif 000005
【図４】
2017041156.tif 000006
【図５】
2017041156.tif 000007